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>
55 lines
3.0 KiB
Markdown
55 lines
3.0 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to floret-kit are documented here. The format follows
|
|
[Keep a Changelog](https://keepachangelog.com/).
|
|
|
|
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 over `kotlin.time.Instant`.
|
|
- `TimeBridge` — `Long` epoch-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 a `CrashConfig` supplied at `install()`; each app keeps its
|
|
own thin themed `CrashReportActivity`.
|
|
- **`identity`** (Android library) — the family's Material 3 Expressive theme
|
|
factory `FloretExpressiveTheme(lightScheme, darkScheme, …)` (dynamic colour on
|
|
API 31+, system light/dark fallback, the standard motion scheme) plus
|
|
`rememberNavSlideSpec()`. 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 `foojay` toolchain resolver** anywhere — it can fetch a JDK at build time,
|
|
which reproducible / official F-Droid builds reject. Modules set `jvmTarget`
|
|
directly. See [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).
|
|
- AGP 9.x provides built-in Kotlin compilation, so Android modules apply only the
|
|
Android library + Compose plugins (no separate `kotlin.android`).
|