Bring floret-kit up to the family's repo conventions: - CHANGELOG.md (Keep a Changelog) — what each module added. - README.md — full module table (core-time/core-crash/identity/components) + consumption notes and a docs index. - docs/README.md (index), docs/ARCHITECTURE.md (module layering, the submodule + composite-build consumption model, JVM vs android-library, the reproducibility rules, the share-mechanics-not-look contract), docs/ROADMAP.md (extracted vs deferred vs deliberately-not-shared, from the cross-app survey). - CONTRIBUTING.md — the no-app-coupling rules, how to add a module, how an app adopts the kit. - LICENSE (MIT, matching the apps). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.0 KiB
Changelog
All notable changes to floret-kit are documented here. The format follows Keep a Changelog.
floret-kit is consumed from source — each app embeds it as a git submodule
and builds it through a Gradle composite build, pinning a specific commit. There
are no binary releases; "version" tracks the shared version in the root build
(currently 0.1.0). Entries are grouped by module.
[Unreleased]
Added
-
core-time(JVM library) — pure-Kotlin date/time helpers, no Android and no third-party dependencies:DayWindow.today()— local-day boundaries for smart-list logic.Instant.formatDate()/formatTime()/formatDateTime()— locale- and zone-aware display formatting overkotlin.time.Instant.TimeBridge—Longepoch-millis ↔Instant, for content-provider I/O.
-
core-crash(Android library) — privacy-respecting, on-device crash capture and reporting. Writes an allowlist-only report (app/Android/device version, locale, time, stack trace — nothing else) to private storage and chains to the platform handler; uploads nothing. Includes startup crash-loop detection, a report dialog that shows the full text before it leaves the device, and an issue-tracker hand-off. Per-app specifics (display name, issue URLs) come from aCrashConfigsupplied atinstall(); each app keeps its own thin themedCrashReportActivity. -
identity(Android library) — the family's Material 3 Expressive theme factoryFloretExpressiveTheme(lightScheme, darkScheme, …)(dynamic colour on API 31+, system light/dark fallback, the standard motion scheme) plusrememberNavSlideSpec(). Each app passes its own seed-derived colour schemes and typography — the mechanics are shared, the look is not. -
components(Android library) — the shared Compose component vocabulary:GroupedSurface/GroupedRow+Position/positionOf— the canonical press-morphing tonal grouped-row primitive (the Android-15 settings pattern).InlineTextField— the borderless tonal text input (capitalization is a parameter).OptionCard— the sanctioned selection-dialog pick.CollapsingScaffold— the collapsing settings/sub-screen scaffold.FullScreenPicker/OptionPicker— the full-screen single-select picker.pastelize()— softens a raw provider colour to a theme-fitting pastel.
App-agnostic by design: apps compose their own screens and keep their own identity chips/icons. String resources here (e.g.
back) are fallbacks an app can override.
Conventions
- No
foojaytoolchain resolver anywhere — it can fetch a JDK at build time, which reproducible / official F-Droid builds reject. Modules setjvmTargetdirectly. Seedocs/ARCHITECTURE.md. - AGP 9.x provides built-in Kotlin compilation, so Android modules apply only the
Android library + Compose plugins (no separate
kotlin.android).