Dentolize · Update-Button & Conversation Tags Fix Walkthrough

Glossary

Lead — A prospective patient tracked through a sales/intake pipeline before they become a full Patient record. A lead can optionally be linked to a Patient and to an OnlineConversation.

Patient Tags (PatientTag) — Labels a clinic defines and applies to patients (and, by extension, leads and WhatsApp conversations) for filtering, automation, or organization — e.g. "VIP", "Insurance Pending".

OnlineConversation — The database record backing one WhatsApp thread in Dentolize's official WhatsApp integration. Stores its own copy of patientTags (packages/server/src/types.graphql:3043), separate from the linked Patient's or Lead's tags, so WhatsApp-side automation and filtering don't need to join out to the patient on every message.

isFieldsTouched() — An Ant Design Form API that reports whether any registered form field has been edited since load. It does not know about component state that lives outside the form (like this PR's breaks array), which is exactly what made the calendar Update button bug possible.

User Calendar Settings — The per-user tab (Settings → Users → a user) controlling that user's working days, hours, rooms, online-booking types, and break times, distinct from a branch's own operating hours.

Break (calendar) — A time range within a working day (e.g. a lunch break) during which a user is not bookable. Tracked per day, and — as of this PR's fix — correctly triggers the Update button when changed on its own.

Tag sync — This document's shorthand for keeping a Patient's or Lead's patientTags and their linked OnlineConversation's patientTags copy consistent with each other. See WhatsApp Conversation Tag Sync.