docs: mark M1 done

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-11 12:47:46 +02:00
co-authored by Claude Opus 5
parent 52f3296dc7
commit 29b213efc6
2 changed files with 24 additions and 5 deletions
+8
View File
@@ -21,3 +21,11 @@ Tag sections feed the release notes — see [`docs/RELEASING.md`](docs/RELEASING
translations, release (F-Droid repo + Codeberg release + Google Play) and
Renovate, with the F-Droid reproducibility rules intact.
- The locked specification: `docs/PLAN.md` and `docs/ROADMAP.md`.
- Preferences over floret-kit's new `core-prefs`: `SettingsPrefs` holds the
appearance slice (theme mode, dynamic colour) in a DataStore of Clockula's own,
under the family's key names. The theme now follows the stored preference —
light/dark override and dynamic colour persist across launches instead of
always following the system — and an unrelated preference write no longer
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.
+16 -5
View File
@@ -10,10 +10,10 @@ Status legend: ✅ done · 🚧 in progress · ⬜ not started
## Current state (one line)
✅ **M0 done.** The project builds, installs and shows a themed placeholder;
floret-kit is wired in as a composite build, the identity is seeded, and the
full Codeberg-canonical release pipeline is in place. **M1** (the `core-prefs` +
`core-di` extraction into floret-kit) is next.
✅ **M1 done.** floret-kit 0.4.0 ships `core-prefs` and `core-di`, and Clockula's
theme now follows its own stored preference over a typed DataStore. **M2** (the
whole storage stack — Room, domain models, repositories, and the first
`ARCHITECTURE.md`) is next.
---
@@ -69,7 +69,7 @@ The project exists, builds, is themed, and ships itself.
unwritten by design — M2 writes it, once there is an architecture to
describe.
### ⬜ M1 — floret-kit: `core-prefs` + `core-di`
### ✅ M1 — floret-kit: `core-prefs` + `core-di`
Pay the extraction the kit's roadmap has been waiting for a third app to trigger.
- In the kit: `core-prefs` (`ThemeMode`, `dynamicColor`, typed DataStore wrapper,
`toEnum()`) and `core-di` (`@IoDispatcher` + provider), each with tests, module
@@ -79,6 +79,17 @@ Pay the extraction the kit's roadmap has been waiting for a third app to trigger
- **Done when:** the kit's tests pass, Clockula builds against the new modules,
and both repos are committed (submodule first, then the pointer bump).
✅ floret-kit 0.4.0. `core-prefs` (56 kit tests) gives the family a typed
`Pref<T>`/`PrefStore` over DataStore; reads degrade to the default instead of
throwing, and `flow()` is distinct-until-changed. The appearance key names are
frozen at what Calendula and Agendula already write, so the sibling migration —
a follow-up in the kit's roadmap, not here — needs no data migration.
`core-di` carries `hilt-compiler` itself, since an `@InstallIn` module only
reaches a consumer's component if its own library was processed; Clockula's
`assembleDebug` is the integration test for that binding. Clockula's theme now
reads the stored preference, with the DataStore built on a corruption handler
so an unreadable prefs file cannot brick startup.
### ⬜ M2 — Data layer
The whole storage stack, headless. No UI.
- Room: `alarms`, `timers`, `world_clocks`, `stopwatch_laps` (`PLAN.md` §5),