Skip to main content
All updates
Bug fixScheduleForms·Fri Sep 04·

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`.
Next update

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.