Changelog

Every release. With the why.

We ship weekly and write the notes ourselves. No marketing-flavored bullet points — just what changed, why we shipped it, and what to watch for.

Change2026.08.262026-08-26

Jurisdiction and admin email are required at clinic creation

A clinic's jurisdiction drives its insurance rail, HIE routing, date and currency formats and compliance surfaces, so it can no longer fall back to a default. Both it and an admin contact are now mandatory when an account is created.

  • No implicit default jurisdiction.
  • Rail and HIE routing resolve from the clinic's own jurisdiction.
  • PR #686.
Change2026.08.252026-08-25

One name field for patients and insurance

Patient and insurance names were stored as split variants that could disagree with each other. They are now a single canonical field, so search, PDFs, claims and messaging all render the same spelling.

  • Search, exports, claims and messaging agree.
  • Migration targets the canonical table.
  • PRs #683, #684.
Feature2026.08.242026-08-24

Push notifications as a fifth channel

Notifications now deliver over push alongside in-app, email, SMS and WhatsApp, through Firebase Cloud Messaging with OAuth2 service-account auth. An unconfigured adapter reports itself rather than pretending to send.

  • Device-token registry with dead-token pruning on UNREGISTERED.
  • Quiet hours apply to push like every other channel.
  • PR #682.
Improvement2026.08.232026-08-23

WhatsApp identity survives a whole conversation

WhatsApp privacy-LID digits were being read as the patient's phone number, which could attach a reply to the wrong contact. Conversation state is now keyed per JID, so identity holds for the length of the thread.

  • Privacy-LID digits are never treated as a phone number.
  • Per-JID conversation store.
  • PR #670.
Feature2026.08.23b2026-08-23

Archive and delete conversations

The staff inbox can be cleared down. Threads archive or delete without taking the patient record with them.

  • Archiving keeps the history and removes the thread from the active list.
  • PR #675.
Feature2026.08.222026-08-22

AI receptionist on SMS, WhatsApp and email

Inbound patient messages can be answered automatically and turned into a booked appointment, with an independent on/off switch per channel. With no configuration row every channel is off and messages reach only the staff inbox.

  • Replies in the language of the patient's most recent message.
  • Samples candidate slots across the whole day, not just the morning.
  • Books the appointment length the patient actually agreed to.
  • PRs #658, #660, #661, #663, #664.
Feature2026.08.202026-08-20

Installable iOS and Android apps

A store-ready mobile shell with committed native projects, push registration, deep links, and an opt-in biometric app-lock that triggers after five minutes of inactivity and fails open when biometrics are unavailable.

  • Patient self-service account deletion.
  • Safe-area handling and hardware back-button behaviour.
  • PRs #626, #630, #631, #632.
Improvement2026.08.192026-08-19

Red-flag safety engine rebuilt around meaning

Clinical red flags are matched structurally in both English and Arabic, with negation handling and a full audit trail, so a flag is raised on what a note means rather than on a substring appearing inside it.

  • Negation-aware matching in EN and AR.
  • Every match is auditable.
  • PR #619.