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.