mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-06 11:48:24 +00:00
firstDayOfWeek() returned a hardcoded ISO Monday on iOS. It now reads NSCalendar.currentCalendar.firstWeekday, converting Foundation's 1-based Sunday index to this API's 0-based one, so a reader in the Americas, East Asia or the Middle East gets the column order their region actually uses. Read per call, so a settings change lands without a restart. The rest of the day arithmetic moves to ZoneMath in commonMain, behind a ZoneOffsets fun interface, leaving the iOS actual holding only Foundation lookups. The reason is that an Apple source set compiles off a Mac but never runs off one, so anything expressed in platform calls is unexercised until someone opens Xcode. Moving it also fixed a bug the old two-pass had. Resolving local midnight is a fixed point, not a subtraction, and the two probes oscillate when midnight does not exist at all — a zone that springs forward *at* midnight, which Santiago, Havana and Tehran have all done. The old code took the earlier probe, an hour before the day starts; it now detects the non-convergence and takes the later one, the first instant of the day that exists. The repeated-midnight case already converged on the earlier of the two, matching java.time's atStartOfDay, and still does. ZoneMathTest covers a fixed-offset zone, a 23-hour spring-forward day, a 25-hour fall-back day, both midnight edges, dayAt either side of local midnight, and a full-year sweep asserting every day starts exactly where the one before it ended. Verified: 7/7 ZoneMathTest, 12/12 SearchCalendarTest, and both compileKotlinIosArm64 and compileKotlinIosSimulatorArm64 build clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017yKjw2WqwZpSzsqcYZMnkV