docs: correct stale build, forge and layer facts

BUILDING.md never mentioned the floret-kit submodule, so its instructions
could not produce a working build — a plain clone fails to configure. It
also understated the SDK requirement: compileSdk is 37, not the "36+" it
claimed. Both matter now that the Codeberg move is meant to make an
outside clone viable.

The docs map advertised superpowers/specs/ and superpowers/plans/, neither
of which exists any more, while omitting BUILDING.md and RELEASING.md.
Dropped the dead rows and listed what is actually there. Purged the
remaining superpowers references in .planning/ and ARCHITECTURE.md's
dangling "see plan 03" the same way — a pointer to a deleted file is worse
than no pointer.

ARCHITECTURE.md still called OptionCard "the app's only sanctioned
selection-dialog style", which the 2026-07-07 flip to full-screen pickers
reversed, and described no layer for floret-kit despite it being a
compiled-from-source composite build. Its CI note credited Gitea Actions;
contributor CI runs on Codeberg now.

PROJECT.md's Source section described the old world outright ("hosted on
self-hosted Gitea") and now records the split: Codeberg canonical, Gitea
build infrastructure.
This commit is contained in:
2026-07-30 10:13:48 +02:00
parent fbb14f9334
commit 048de67350
7 changed files with 92 additions and 26 deletions

View File

@@ -62,9 +62,15 @@ flowchart TD
- **`data/prefs/`** — DataStore-backed settings (theme, week start, form
field defaults, reminders toggle) and small state (last-used calendar).
- **`ui/`** — one package per screen, each with Screen + ViewModel +
UiState. Shared pieces in `ui/common/` (OptionCard — the app's only
sanctioned selection-dialog style —, recurrence humanizer, FAB column,
drawer, transitions).
UiState. Shared pieces in `ui/common/` (recurrence humanizer, FAB column,
drawer, transitions). Selection pickers are full-screen and come from
floret-kit (`FullScreenPicker` / `OptionPicker`); `AlertDialog` is reserved
for plain confirmations and the compact recurring-scope choosers.
- **`floret-kit/`** — the shared Material 3 Expressive kit for the Floret app
family, wired in as a git submodule *and* a Gradle composite build
(`includeBuild`), so it is compiled from source rather than resolved as a
dependency. Pickers, crash plumbing, and locale/time helpers live there;
changing them is a pull request against that repository plus a submodule bump.
## Navigation
@@ -81,7 +87,7 @@ exactly like an event tap.
## Recurring writes
The provider's invariants drive the design (learned the hard way, verified
on-device — see plan 03):
on-device):
- Recurring rows carry `RRULE` + `DURATION` (no `DTEND`); one-off rows
carry `DTEND`.
@@ -167,6 +173,7 @@ JUnit 5 + Truth + Turbine on the JVM. The seams that make it work:
`CalendarDataSource` is faked (`FakeCalendarDataSource` records writes),
mappers parse `ColumnReader`/plain maps instead of cursors, domain logic
(recurrence, validation, snapshots, write-value building) is pure. CI
(Gitea Actions) runs `lint test assembleDebug` once per pull request; merging a
(Forgejo Actions on Codeberg) runs `lint test assembleDebug` once per pull
request; merging a
bumped `versionName` to `main` builds, signs, and publishes to the self-hosted
F-Droid repo and then mints the `vX.Y.Z` tag + release. See docs/RELEASING.md.