What changed, newest first. Where a fix corrected something we had claimed, it says so.
2026-08-24
Fixed
HL7v2 to v2 conversion produced unparseable output
The converter emitted the field separator twice in MSH, which shifted every field after it. Any message converted between v2 versions came out malformed. Converting again will produce a correct message; anything converted before this needs redoing.
Fixed
A refused vaccination converted to FHIR as an administered one
RXA-20 completion status was read against the wrong code set, so a refusal (RE) or a not-administered (NA) became Immunization.status "completed". If you have converted immunization messages, re-check anything that recorded a refusal.
Fixed
Coding systems and display names were dropped in FHIR conversion
Coded fields kept only the code, so "08^HepB^CVX" lost both the display name and the CVX system URI. Codings now carry all three, with well-known HL7 systems mapped to their FHIR URIs.
Changed
Timestamps without a UTC offset now convert to a date
Previously an offset-less HL7 timestamp was stamped as UTC, which moved the instant by however far the sender was from it. FHIR will not accept a time without an offset, so rather than assert a wrong one the conversion keeps the date and notes that the time of day was dropped. Timestamps that do carry an offset keep it exactly.
Fixed
The Inspector showed unparseable input as passing
A message that failed to parse produced an empty issue list, which rendered as the green all-clear. It now says the parse failed and shows why.
Changed
Moving a message between tools no longer puts it in the URL
The links between tools carried the whole message in the query string, which meant it reached our server and the browser history. They now hand the message over inside your browser instead. Share buttons copy the message rather than a link, because a link that carried it would have the same problem.
Fixed
The Bridge agent dropped oversized messages silently
A message above the frame limit was discarded with no reject and no log entry, so the sender retried forever with nothing to go on. Oversized frames are now rejected with an explanation and logged, and the limit is 16 MB so reports with embedded attachments pass.
Fixed
Version-pinned Bridge listeners broke when a spec was published
A listener pinned to a spec version only held the production copy, so publishing a new version made that port refuse everything. Pinned versions now sync alongside production.
Fixed
Retried usage reports could be billed twice
If a usage report reached us but the response was lost, the agent resent it and the messages were counted again. Reports are now idempotent, so a retry counts once.
Changed
Corrected what we were claiming
Several claims had drifted from the product. Solo and Team were advertised as unlimited saved specs when they are 5 and 25. Structured pricing data still listed an audit log, which does not exist. The agent docs described messages being sent to us for validation, which stopped being true when validation moved on-device. The API rate limit was documented as one flat number instead of the per-plan rates. All corrected.
Added
A security page for vendor reviews
Architecture, the controls behind our data-handling claims, dependency policy and vulnerability disclosure, in one place at /security.