| /admin/appearance | NO_CHANGE | Public notes don’t mention appearance/branding changes. | — |
| /admin/appointment-setup | MAJOR_REWRITE | New Settings card. Toggles: 12h/24h time format, click-to-book, default duration (30 min default), drag-snap (15/30 min), hover indicator. | Set the five front-desk defaults — clock format, default booking length, click-to-book, drag-snap, hover preview — in one place so the calendar behaves the way your reception team actually works. |
| /admin/audit-logs | NO_CHANGE | Not mentioned in public notes. | — |
| /admin/billing | MAJOR_REWRITE | Tile restored, Invoices/Receipts tabs, canonical PDFs, trial labels, bank QR on every invoice, portal seats + storage visible, addons requestable inline. | See unpaid and paid OdontoX invoices side by side, scan the bank QR to pay without typing IBANs, and request more portal seats or storage without leaving the page. |
| /admin/bridge-devices | MAJOR_REWRITE | Auto-starts with Windows, minimised to tray, fixed icon, WebP support, TIFF retry, instant inbox (no 15s polling). | Bridge sits in the tray from boot, picks up WebP/JPEG/PNG/TIFF the moment the X-ray machine drops them, and files land in OdontoX instantly with no manual upload step. |
| /admin/clinic-settings | NO_CHANGE | Not specifically mentioned. | — |
| /admin/discount-policies | MINOR_UPDATE | Discount policies now flow into the treatment-plan builder, discounted total on the PDF. | Discount policies now flow straight into treatment plans — pick a policy in the plan builder and the discounted total prints on the patient’s quote. |
| /admin/finance-letterhead | MINOR_UPDATE | Default safe-zone margins 60mm top / 32mm bottom; allowed range 5–120mm top / 5–100mm bottom. Signatures print opaque black. | Dial in the margins so prescriptions and invoices land cleanly in your pre-printed letterhead’s writable zone, with signatures that come out crisp black instead of grey ghosts. |
| /admin/inventory | MINOR_UPDATE | Add/edit double-submit guard. Low-stock + expiring alerts feed Ruby’s morning brief + the Reception AI action items. | Stock alerts now reach the people who can act on them — they show up in Ruby’s morning brief for owners and on the reception dashboard as action items. |
| /admin/laboratories | NO_CHANGE | Labs-management settings article itself not mentioned. | — |
| /admin/medicine-library | NO_CHANGE | Not mentioned. | — |
| /admin/monthly-active-patients | MAJOR_REWRITE | MAP concept replaced. Records (unlimited) and portal seats (100 Pro / 250 Pro+) are separate. “Provide portal access” per-patient checkbox. MAU stat sits below seats. | Adding a patient record is free and unlimited — only patients you actively give portal logins to count against your seat limit, so growing the chart never costs more. |
| /admin/notifications | MAJOR_REWRITE | Five flat toggles replaced by per-event × per-audience matrix. Defaults retuned to cut noise. Bulk silence-column / reset-row. Mobile card view. Old opt-outs preserved. | Decide event-by-event who hears about an appointment, an invoice, or a treatment-plan acceptance — patient, doctor, admins, wider staff — so the inbox carries the things that matter and stops being noise. |
| /admin/operatories | NO_CHANGE | Not mentioned. | — |
| /admin/patient-portal-access | MAJOR_REWRITE | Portal access per-patient checkbox at create/edit, separate from chart. Invited patients fill medical history on first login. Confirm/cancel links work without login. | A patient becomes a portal user only when you tick the box — separate from adding their chart — and the first time they log in they fill in the medical history that used to land on a clipboard. |
| /admin/permission-templates | MAJOR_REWRITE | Pro+ correct defaults from day one. Admins now have full permission tree. Doctor permission floor protects core clinical permissions. | Staff land in OdontoX with the right access for your plan on their first sign-in, and a misconfigured template can no longer lock a doctor out of writing a prescription. |
| /admin/prescription-template | MINOR_UPDATE | Physical-letterhead no longer duplicates clinic header/footer. Margin range 5–120mm top / 5–100mm bottom. “Dr.” prefix consistent. | Choose between digital letterhead and physical pre-printed paper and the prescription PDF respects the choice — no overlapping headers, signatures print crisp black, the doctor’s name carries “Dr.” automatically. |
| /admin/referral-program | NO_CHANGE | Not mentioned. | — |
| /admin/security | MINOR_UPDATE | Sessions roughly 3 months end-to-end. Multi-tab session race fixed. Cross-tab refresh lock. | Staff stay signed in for about three months, including across deploys, and switching between tabs no longer signs anyone out. |
| /admin/service-catalog | MINOR_UPDATE | Treatment plans pull procedures + costs from Service Catalog. | The Service Catalog is now the source of truth for treatment-plan pricing — every procedure your doctors quote starts from a price you set here. |
| /admin/settings | MAJOR_REWRITE | Landing replaced with 8 grouped sections. Sections collapse when empty. Card descriptions no longer truncate. | Find the toggle you need in seconds — Settings is now eight labelled sections instead of a 22-card wall, with empty sections folded away and full descriptions visible on every card. |
| /admin/signatures | MAJOR_REWRITE | Doctors + receptionists self-manage signatures. “Receptionist” sub-line; “Dr.” reserved for doctors. Opaque black on print. | Every doctor and receptionist manages their own signature — admins don’t get pulled into a daily intake task, and the printed signature is always sharp black on every PDF. |
| /admin/staff-management | MINOR_UPDATE | Cross-clinic invite for existing OdontoX accounts. Plan-based defaults on first sign-in. | Bring in a doctor who already works at another OdontoX clinic without the “email already exists” wall, and they show up with the right Pro or Pro+ permissions for your clinic on day one. |
| /admin/website-leads | MAJOR_REWRITE (brand-new feature) | New inbox. Clinic-website forms post to OdontoX with per-form token. Name/email/phone/DOB/message + Convert to Patient. Pipeline: new → contacted → converted → archived → spam. Origin lock + rate limit. Optional auto-reply. | Inquiries from your clinic website land in one place instead of getting buried in a personal inbox — convert a lead to a patient record in one click and track who still needs a callback. |
| /admin/whatsapp | MAJOR_REWRITE | Lifecycle automation on confirm/cancel/no-show/reschedule/booking/completed. Auto-bound templates. Inbound media (photo/GIF/voice/sticker/PDF). Real ✓/✓✓/blue ticks. Markdown. Reschedule via WhatsApp (even after no-show). Daily Meta reconcile. Per-tab toggles. | WhatsApp now runs the appointment lifecycle for you — confirmations, reminders, reschedule requests, completed-visit reviews — and patients can pick a new slot themselves over the chat, including after a no-show. |
| /ai/overview | MAJOR_REWRITE | Ruby’s Daily Brief: lab cases, inventory alerts, appointment status, financial + patient-flow context. Revenue forecasts return “needs more data” under 5 invoices. CSV imports not flagged suspicious. Churn risk skips zero-appointment patients. | Ruby’s morning brief now covers the things that actually slow a clinic down — lab cases coming due, stock running out, appointments by status — and stops guessing on data it doesn’t have. |
| /clinical/appointments | MAJOR_REWRITE | Calendar overhaul (canvas, sidebar, click-to-book default off, 30-min default, drag-snap, 12h/24h, cancelled+no-show reschedule, day view 96px, week auto-agenda, month density tints, cancellation reason dialog, Web/WhatsApp timeline split, duplicate-block, out-of-hours messages). | The calendar reads like a calendar — wider canvas, half-hour grid, an unmissable “Now” pill, a Web vs WhatsApp event split, and reschedule that works even after a no-show. |
| /clinical/bridge | MAJOR_REWRITE | Auto-start, tray-resident, WebP, TIFF retry, instant inbox. TIFF/DICOM auto-convert to PNG for Ruby. | Bridge runs in the background from the moment the X-ray machine PC boots, captures every common image format the radiograph produces, and the files surface in OdontoX the second they’re saved. |
| /clinical/clinical-notes | MINOR_UPDATE | Per-tooth panel in dental chart has full AI tooling (dictate, rewrite/grammar/shorter/detailed, SOAP). | Clinical notes inside the dental chart are the same AI-assisted notes you use elsewhere — dictate, tidy up, then drop into a SOAP structure. |
| /clinical/dental-charting | MAJOR_REWRITE | Always on every plan. Auto-saves 1.5s after last edit. Per-tooth memoization. AI notes inside tooth panel. Hidden from receptionist end-to-end. | The dental chart is on for every clinic, saves automatically as you work, and feels instant on iPad even when you’re flicking between teeth. |
| /clinical/dicom-imaging | MAJOR_REWRITE | DICOM viewer → “Radiology Workstation”. Files → “X-Ray & Radiology Files”. DICOM/TIFF auto-convert. Multi-page TIFF pagination. Self-healing thumbnails. Ruby reads TIFF + DICOM. Bridge inbox shows “Processing…” amber badge. | One Radiology Workstation for DICOM, X-Ray, TIFF and standard image files — Ruby reads them all, and they’re ready to open the moment they finish converting. |
| /clinical/ipd | NO_CHANGE | Only mentioned as Pro+ default. | — |
| /clinical/lab-cases | MAJOR_REWRITE | Appointment right rail shows real cases (status, lab name, due date, tooth). Files-from-Lab card actually shows lab uploads. Auto-refresh on shared-link updates. JPEG/PNG 25MB multi-file. Full-page create. Toast on lab upload. Lab images in Radiology Workstation. | See every lab case on the appointment, get a toast the moment the lab uploads new files, and watch status changes flow in without a manual refresh. |
| /clinical/patient-files | MINOR_UPDATE | Module → “X-Ray & Radiology Files”. Find patients before they have files (for first upload). | Files are now grouped into Radiology and Documents tabs, and you can find a patient before they have a single file to attach the first one to. |
| /clinical/patients | MAJOR_REWRITE | Smart typeahead picker everywhere. Persisted sort (Date/Name/MRN) + Status filter per role. ORDER BY fix (edited patients no longer jump pages). Pagination 25/50/100 + total count. N/A for missing DOB. DOB optional. Medical history at intake (two-tab form). Oral habits as colour tags. Editable MRN with “Next: MRN-…” hint. Single-query aggregation for 5,000+ clinics. Phone fixed to +92 with 10-digit cap. Gender Male/Female only. | The patient list is fast on 50,000 records, the typeahead picker lets you find someone in two keystrokes, and editing a chart no longer throws the row to a different page. |
| /clinical/prescriptions | MAJOR_REWRITE | Physical-letterhead fix. Margin range 5–120mm top / 5–100mm bottom; defaults 60/32. Crisp-black signatures. Save guard on double-click. “Dr.” prefix consistent. | Print prescriptions on your pre-printed letterhead with margins that actually fit your paper, and the signature on every copy comes out sharp black instead of a grey ghost. |
| /clinical/ruby-reports | MAJOR_REWRITE | History → Reports. Expandable cards with full Ruby analysis (impression, findings with severity + CDT codes, recommended views). Export Report PDF with branded letterhead + embedded radiograph. Saved-to-patient. Ruby reads TIFF + DICOM. | Open Ruby’s full read for any radiograph in one tap and print or send a branded PDF with the image embedded, so referring doctors and insurers get the same view your doctor saw. |
| /clinical/treatment-plans | MAJOR_REWRITE | Procedures from Service Catalog (auto-cost). Before/after photos visible in PDF + share link. Required-field validation. Navigate to new plan on save. 15-procedure cap. One-tap detail. Cached revisit. Discount policy in builder. | Build a treatment plan from your service catalog, attach before/after photos, apply a discount policy, and hand the patient a polished PDF without leaving the page. |
| /finance/daily-close | MINOR_UPDATE | ”Today’s revenue” + “today’s appointments” on Pakistan calendar day. EOD report flows through the matrix. | Daily close runs on the Pakistan calendar day — today’s revenue and today’s appointments line up with the work you actually did between 9 AM and 9 PM PKT. |
| /finance/document-numbering | NO_CHANGE | Not in public notes (MRN is patient-side). | — |
| /finance/expenses | NO_CHANGE | Not mentioned. | — |
| /finance/financial-hub | RETIRE / MERGE | Removed from admin overview. Recommend 301 → /finance/reports and one-line note on /admin/settings. | — |
| /finance/installment-plans | NO_CHANGE | Not mentioned. | — |
| /finance/insurance-claims | MINOR_UPDATE | Smart typeahead picker on Save. Double-submit guard. | Pick the patient on a claim with two keystrokes and the form refuses to file the same claim twice on a misclick. |
| /finance/invoices | MAJOR_REWRITE | Per-clinic safety caps on totals. Overflow typos no longer leak SQL. Inline payment validation (overpayment blocked, Confirm disabled until corrected). Receipts + payment history immediate. Bill To omits patient phone on documents + share links. “Generated from Quotation #X” on PDF. Double-submit guard. | Issue invoices that are guaranteed to be in range, blocked from typo-overpayments, and never print the patient’s phone on a document a third party will read. |
| /finance/quotations | MINOR_UPDATE | Per-clinic safety cap. Patient phone removed from Bill To. Portal shows ”→ Invoice #ODX-…” once accepted. | Quotations carry a clinic-set safety cap, drop the patient’s phone from the printed copy, and tell the patient on their portal exactly which invoice came out of which quote. |
| /finance/receipts | MINOR_UPDATE | Subscription receipts include Bank Details block. Customer receipts omit patient phone. Double-submit on payment confirm. | Receipts show the clinic’s bank details for future reference, leave the patient’s phone off the printed copy, and can’t be issued twice from a fast double-click. |
| /finance/reports | MINOR_UPDATE | PKT calendar day. Reception AI aging buckets (1-7, 8-14, 15-21, 22+) with names + PKR totals. | Reports run on the Pakistan calendar day, and the reception dashboard nudges you with aging buckets so the 22+ day debts get the strongest follow-up. |
| /guides/appointments | MAJOR_REWRITE | Mirrors calendar overhaul. Save & Book on patient form. Doctor-schedule enforcement at booking. Time grid shrinks to doctor’s shift. | The new appointments flow — bigger canvas, half-hour grid, doctor schedules enforced at booking, a structured reason dialog when you cancel, and one screen for the WhatsApp side of the conversation. |
| /guides/clinical-notes | MINOR_UPDATE | Per-tooth dental-chart notes use full AI tooling. | Dictate a clinical note inside the per-tooth panel, tidy it with the toolbar chips, and let the AI structure it as SOAP — same notes experience as everywhere else in the chart. |
| /guides/dental-chart | MAJOR_REWRITE | Universal availability + auto-save + memoization + AI notes in tooth panel + receptionist hidden. | The dental chart is on for every clinic, saves the moment you stop typing, and stays snappy on the iPad your hygienist is using chairside. |
| /guides/insurance-claims | NO_CHANGE | Beyond typeahead picker. | — |
| /guides/invite-staff | MAJOR_REWRITE | Plan-based defaults. Full admin permission tree. Per-clinic role on multi-clinic accounts. Cross-clinic invite for existing accounts. Doctor permission floor. | Inviting a staff member is now a two-minute job — they sign in with the right permissions for your plan, multi-clinic doctors get the right role at each clinic, and existing OdontoX accounts are picked up automatically. |
| /guides/invoices | MINOR_UPDATE | Mirrors /finance/invoices. | An end-to-end invoice walkthrough that uses the new safety caps, payment-validation, and quote-to-invoice link instead of the old freehand flow. |
| /guides/ipd | NO_CHANGE | Only as Pro+ default. | — |
| /guides/lab-tracking | MAJOR_REWRITE | Mirrors lab-cases improvements end-to-end. | Send a case, share the link, and watch the lab’s updates arrive in OdontoX without a single refresh — files included. |
| /guides/mobile-app | NO_CHANGE | Only behind-the-scenes telemetry. | — |
| /guides/prescriptions | MINOR_UPDATE | Mirrors /clinical/prescriptions. | Print on either OdontoX’s digital letterhead or your own pre-printed paper, dial in your margins once, and the signature comes out clean every time. |
| /guides/pro-overview | MINOR_UPDATE | Pro+ defaults automatic. Portal-seat caps (100 vs 250). Unlimited records both tiers. | What you get when you move from Basic to Pro to Pro+, restated against the new portal-seat and storage model — records are unlimited at every paid tier. |
| /guides/pro-roadmap | NO_CHANGE | Not specifically called out. | — |
| /guides/ruby-reports | MAJOR_REWRITE | Mirrors /clinical/ruby-reports. | Open Ruby’s full read for any radiograph, print a branded PDF with the image on it, and the report saves to the patient chart in the same click. |
| /guides/scale-tips | MINOR_UPDATE | Patient list freeze resolved on 5,000+ clinics. Typeahead picker holds at 50,000. 90s SWR cache. Dashboard cold-load 320KB (down from 3.5MB). | If you’re past 5,000 patients, the app now stays out of your way — the patient list opens fast, the typeahead picker works at any size, and modules feel instant after the first open. |
| /guides/welcome | MAJOR_REWRITE | Welcome → Settings now 8-section regroup. Trial countdown banner visible day one. Marketplace card on welcome path. | A first-day tour of where things live — Settings in eight labelled groups, the trial countdown on the top bar, and the Marketplace as a way to add only the modules you need. |
| /guides/whatsapp-setup | MAJOR_REWRITE | Mirrors /admin/whatsapp end-to-end. | Setting up WhatsApp once means appointments confirm, reminders fire, and patients can reschedule themselves — all without your receptionist copy-pasting into the chat. |
| /docs/blog/ | NO_CHANGE | Container. | — |
| /docs/blog/introducing-odontox | NO_CHANGE | Historical post. | — |
| /docs/blog/the-recall-effect | NO_CHANGE | Recall framing unchanged. | — |
| /privacy | MAJOR_REWRITE | 2026-05-06 privacy policy rewrite shipped per RELEASES.md. | Updated privacy notice reflecting current data flows, third-party processors, and patient data handling — replaces the pre-May text. |
| /terms | NO_CHANGE | No public-notes mention of a terms rewrite. | — |