docs: mark M1 done
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
translations, release (F-Droid repo + Codeberg release + Google Play) and
|
||||||
Renovate, with the F-Droid reproducibility rules intact.
|
Renovate, with the F-Droid reproducibility rules intact.
|
||||||
- The locked specification: `docs/PLAN.md` and `docs/ROADMAP.md`.
|
- 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
@@ -10,10 +10,10 @@ Status legend: ✅ done · 🚧 in progress · ⬜ not started
|
|||||||
|
|
||||||
## Current state (one line)
|
## Current state (one line)
|
||||||
|
|
||||||
✅ **M0 done.** The project builds, installs and shows a themed placeholder;
|
✅ **M1 done.** floret-kit 0.4.0 ships `core-prefs` and `core-di`, and Clockula's
|
||||||
floret-kit is wired in as a composite build, the identity is seeded, and the
|
theme now follows its own stored preference over a typed DataStore. **M2** (the
|
||||||
full Codeberg-canonical release pipeline is in place. **M1** (the `core-prefs` +
|
whole storage stack — Room, domain models, repositories, and the first
|
||||||
`core-di` extraction into floret-kit) is next.
|
`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
|
unwritten by design — M2 writes it, once there is an architecture to
|
||||||
describe.
|
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.
|
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,
|
- In the kit: `core-prefs` (`ThemeMode`, `dynamicColor`, typed DataStore wrapper,
|
||||||
`toEnum()`) and `core-di` (`@IoDispatcher` + provider), each with tests, module
|
`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,
|
- **Done when:** the kit's tests pass, Clockula builds against the new modules,
|
||||||
and both repos are committed (submodule first, then the pointer bump).
|
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
|
### ⬜ M2 — Data layer
|
||||||
The whole storage stack, headless. No UI.
|
The whole storage stack, headless. No UI.
|
||||||
- Room: `alarms`, `timers`, `world_clocks`, `stopwatch_laps` (`PLAN.md` §5),
|
- Room: `alarms`, `timers`, `world_clocks`, `stopwatch_laps` (`PLAN.md` §5),
|
||||||
|
|||||||
Reference in New Issue
Block a user