Appointment setup: consistent settings and readiness
This source candidate gives web and Business clients a shared appointment-policy API and a read-only check of current setup readiness. It is not deployed; the Business companion is still required.
This source candidate gives web and Business clients a shared appointment-policy API and a read-only check of current setup readiness. It is not deployed; the Business companion is still required. Admins with business-settings permission can set appointment start-time intervals, payment timing, client self-service cutoffs and combined-visit terms. Managing staff hours and service-specific rules still requires booking-management permission. Changing one setting preserves unrelated settings; an uncertain save requires reload and review, while a known save with a refresh problem is shown as saved rather than inviting a duplicate retry. Switching venues gives each settings form its own draft and save state. A slow save in one venue cannot keep another venue's completed save locked. An ordinary refresh in the same venue does not discard unsaved edits. No client notification, payment, hosted setting or service is changed by this source handoff. Consumer and branded apps continue using server-authorized booking rules; their admin controls are not exposed to clients. Full native parity, per-person named booking choice, custom native terminology and operational acceptance are separate remaining work. [Exact API and recovery contract](../api/APPOINTMENT_SETTINGS_CONTRACT.md).
Paid appointment recovery
When a client pays online for an appointment on the Web or embedded booking page, the page now keeps an encrypted record of that exact payment attempt before it starts. Refreshing the page, a lost connection or a bank approval redirect offers "Finish payment" for the same attempt instead of starting a second one. Choosing another time after an unclear result first checks with the server that nothi