Safer schedule dates and numeric editing
Public schedules now use the venue's IANA timezone for calendar-day and week boundaries across the main schedule, Sites, embeds, the public location page, and the public API. Every upper bound is exclusive, so a midnight class belongs to exactly one local day even through Copenhagen's 23- and 25-hour DST days.
Public schedules now use the venue's IANA timezone for calendar-day and week boundaries across the main schedule, Sites, embeds, the public location page, and the public API. Every upper bound is exclusive, so a midnight class belongs to exactly one local day even through Copenhagen's 23- and 25-hour DST days. High-risk business forms now keep numeric text as a draft until blur/Enter. Operators can temporarily clear a field, type a minus sign, use a decimal comma, enter zero, or leave a trailing decimal without the form rewriting the value mid-keystroke. An ESLint rule and exact inventory ratchet prevent new eager coercion while the bounded legacy inventory is migrated deliberately. Mobile parity classification: **Business Mobile — follow-up required** for the numeric draft behavior on equivalent service/pass/invoice editors. Consumer and Branded apps are read/booking surfaces for these changes and require no UI change. The public schedule boundary fix applies to their shared API data without a native contract change. No new public material is required; this is correctness and operator-input hardening rather than a new customer-facing capability. The primary recurring-series editor's companion atomicity and DST behavior is documented in `2026-09-04-atomic-schedule-series-and-dst.md`.
Automatic no-shows now use the protected history path
The nightly class close-out now continues to mark eligible unattended bookings after a class becomes a past record. It uses the same venue-configured no-show consequence, fee, audit, webhook and notification behavior as before, through the database's protected lifecycle path.