docs(changelog): record the data layer
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -29,3 +29,23 @@ Tag sections feed the release notes — see [`docs/RELEASING.md`](docs/RELEASING
|
||||
re-emits it.
|
||||
- floret-kit's `core-di` supplies the `@IoDispatcher` the preference store runs
|
||||
on, so Clockula no longer declares its own dispatcher qualifier.
|
||||
- Clockula's own storage, headless: a Room database with `alarms`, `timers`,
|
||||
`world_clocks` and `stopwatch_laps`, its version-1 schema exported and
|
||||
committed so every future migration is reviewable and testable.
|
||||
- Plain-Kotlin alarms, timers, world clocks and stopwatch runs behind four
|
||||
repository interfaces exposing Flows — nothing above the data layer knows Room
|
||||
exists, and a test fails the build if anyone reaches through. A corrupt row
|
||||
degrades on read (a clamped time, an unknown ringtone, a rotted zone id)
|
||||
rather than crashing the list it appears in.
|
||||
- Alarm and timer settings are inherited, not copied: a per-alarm ringtone,
|
||||
snooze, vibrate, volume ramp or dismiss challenge is an *override*, so
|
||||
changing an app default later reaches every alarm the user never customised.
|
||||
- The clock defaults and the stopwatch's running state now live in DataStore
|
||||
alongside the appearance preferences, clamped on read as well as on write, so
|
||||
a hand-edited or restored file cannot produce a setting the user could never
|
||||
have chosen.
|
||||
- The wall-clock / elapsed-realtime split, made explicit: alarm records follow
|
||||
the system clock, while running timers and the stopwatch are anchored to time
|
||||
since boot. Changing the device's time — forwards or backwards — cannot warp
|
||||
either, and a timer that survives a reboot falls back to its wall-clock
|
||||
estimate and says so instead of vanishing.
|
||||
|
||||
Reference in New Issue
Block a user