Skip to content
ehr-ctrlehr-ctrl
← Back to downloads

v1.4.3 Release Notes

Changes since v1.4.1, covering 27 Aug 2026 to 9 Sep 2026. Frontend, plus one CI/release-workflow change. No server-side or backend behaviour changes.

Connections & CDR Compatibility

  • Each saved connection now has a CDR Type that selects the REST path prefix sitting between the server origin and the openEHR resource path. Three options are available:
    • EHRbase — uses EHRbase's non-standard /ehrbase/rest/openehr/v1 context (and /ehrbase/rest/admin for the Admin API).
    • ferroEHR — uses the spec-style /rest/openehr/v1 layout (and /rest/openehr/v1/admin).
    • Custom — the openEHR API base path and an optional Admin API base path are entered by hand; leaving the Admin path blank marks the connection as having no Admin API.
  • The CDR URL field is now the server origin only (e.g. http://localhost:8080); the REST path is appended automatically from the CDR type. For preset types the Settings screen shows the resolved request base URL beneath the selector so it is clear where calls will go.
  • Existing stored connections are migrated automatically: they are assigned the EHRbase type, and any legacy /ehrbase/rest/openehr/v1 or /rest/openehr/v1 suffix that was previously typed into the CDR URL (following older documentation) is stripped back to the origin.
  • Switching to a preset CDR type fills the base-path fields with that preset's values, so they form a sensible starting point if the user later switches to Custom; switching to Custom keeps whatever paths are already present.
  • Admin-only actions (currently: deleting a stored query) now check whether the active connection exposes an Admin API. If it does not, the screen shows a form error explaining that the connection's CDR type has no Admin API instead of issuing a request that would fail.

Composition Format

  • How a chosen composition representation (JSON, XML, FLAT, STRUCTURED) is carried on the wire is now driven by the active connection's CDR type:
    • EHRbase keeps its non-standard ?format= query parameter alongside a plain application/json / application/xml media type.
    • ferroEHR and Custom connections follow the openEHR spec and carry the representation entirely in the Accept / Content-Type header (application/openehr.wt.flat+json, application/openehr.wt.structured+json), with no format query parameter.
  • This applies across the composition screens (create, update, get, and the example/skeleton view).

cURL Command

  • Every screen that makes a CDR request now shows a cURL button on its response panel, and each entry in the Request History list shows one too.
  • The button opens a popup containing the request that was just made, rendered as a copy-pasteable, multi-line cURL command with syntax highlighting that matches the app's other code blocks in both light and dark mode.
  • JSON request bodies are pretty-printed in the rendered command for readability; other bodies are shown as sent.
  • The Authorization header stays redacted in the cURL output, exactly as the Request Diagnostics panel already displays it — the reader substitutes real credentials before running the command.

Build / Release

  • The desktop release workflow now also builds macOS. A macos-latest matrix entry installs the aarch64 and x86_64 Rust targets and builds with --target universal-apple-darwin, producing a single universal .dmg attached to each tagged release alongside the existing Windows and Linux packages.

Versioning

  • ehr-ctrl version bumped from 1.4.1 to 1.4.3 (1.4.2: multi-CDR connection types and media-type-driven composition format; 1.4.3: cURL command popup).