Skip to content

Zen Dark theme, revised cards, unified sheets, speed dial, colour and category settings - #109

Merged
mapgie merged 5 commits into
mainfrom
claude/new-session-demhke
Sep 2, 2026
Merged

Zen Dark theme, revised cards, unified sheets, speed dial, colour and category settings#109
mapgie merged 5 commits into
mainfrom
claude/new-session-demhke

Conversation

@mapgie

@mapgie mapgie commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Summary

Implements the consolidated "Cozy Cream + Zen Dark" design handoff (turns 5a to 8a). The handoff package itself is checked in under docs/design/cozy-cream.

  • Zen Dark theme. The Cream palette's dark scheme now carries the handoff's token column (warm charcoal-green ground, one-step-lighter cards, sage/rose/amber/lavender lifted for dark). Non-Material tokens (nav ground and inactive ink, faint ink, sort-pill outline, NFC button, scrim, sheet blocks) live in a DashTokens CompositionLocal; other palettes derive them from their own scheme. Dark ships as the default brightness per 8a.
  • Palette model. Seven swatches with per-brightness spine/text/tint tones (Swatch.kt), severity colours resolved through LocalSeverityColors, and a JVM test that pins every text/tint, text/card and text/ground pair at 4.5:1 in both themes.
  • Lucide icons parsed from SVG path data (LucideIcons.kt), one glyph per category with keyword defaults; the Chores tab is the house-with-check glyph.
  • Revised cards (5a): 16dp radius, 5dp spine, 38dp icon chip, meta line under the title, avatar left of the due badge, no progress bar. The done toggle keeps a 44dp touch target around the 38dp visual.
  • Chores and Tasks lists: identical header row (search, owner, zen, group/flat); NFC scan button beside the Chores title replacing the in-list hint card; a sort pill that names key and direction in words with a picker sheet (persisted per list); category grouping in catalog order with section counts; the summary bar ("7 chores · 1 hidden", "Archived ›" / "Done ›").
  • Unified Log/Done sheets (6a): header, DONE control (Just now / Earlier today / Pick…), Cancel + sage action, utility row (Calendar · Pin · Remind · Tag · Edit), history block with an inline Undo chip on the latest log and an "All ›" link; tasks get Remind (opens the reminder sheet linked to the task) and a Notes block.
  • Unified Edit sheets (7a): the title is the field, one grouped settings card with compact controls (category value chip with picker, owner avatar row, repeat stepper with direct entry, priority segments, due and remind value chips, NFC tag row), notes block for tasks, tertiary Add to calendar · Share · Archive/Delete. The New chore sheet is the same component (replaces AddChoreSheet). Chore category can now be edited. Dirty guard retained on every dismiss vector.
  • Speed dial over the whole screen including the bar; the active tab's item sits closest to the thumb, the rest follow the Quick add order setting.
  • Settings › Colours and Settings › Categories (new screens), backed by new settings keys and a per-device category catalog (order, icon, colour) in DataStore; rename and delete update every chore and task in Supabase (delete moves them to General).

Dropped / needs decision

Nothing functional was removed silently. Items that could not be built exactly as drawn, or where the handoff left a decision open:

  1. Sheet primary-action colour (8a open question). Built with sage in both themes (matches the FAB and "Log it"); Cozy Cream mock-ups show purple. One-line change in SheetPrimaryRow if you prefer purple in light.
  2. Zen Dark as default brightness. Users who never chose a brightness will now get dark (the stored preference, if any, is respected). Say the word and I'll keep SYSTEM as the fallback instead.
  3. Due-countdown header toggle. The chore badge now always shows the countdown ("35d over", "1d left") and the sort part of that toggle is the sort pill's "pressure · worst first". The toggle and its showDueCountdown preference were removed; the absolute last-done date moved into the card meta line and the sheet header.
  4. Remind row on the chore edit sheet. Chores have no reminder column; reminders for a chore stay reachable from the Log sheet's Remind action (creates a linked reminder), so the row is omitted on chores rather than faked.
  5. Notes on chores. The tags table has no notes column, so the notes block exists on the task sheet only.
  6. Tag label. There is no separate label field for a tag; the sheet shows the tag ID in the tag-label slot ("no label" when blank).
  7. Tasks All/Active chips in the 5a Tasks mock-up were not reinstated; 0.26.0 deliberately removed them in favour of the collapsible Done section, which the summary bar's "Done ›" now jumps to.
  8. Reminders/Memos list and the 4a settings screens (Appearance, Display, Reminders & alerts, About) only pick up the theme, card and icon changes; they were not redesigned in this handoff.
  9. Category-mode colours for unstyled categories fall back to a stable per-name swatch (so groups still differ) until the user picks one.

Tests

ChoreUiStateTest, TaskUiStateTest and ChoreModelTest cover the sort pill orders in both directions, category grouping order, summary labels, overdue count and the new due badge. SwatchContrastTest and CategoryCatalogTest are new. The container has no Android toolchain, so CI is the build check for this PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_018PnE5N3U2YmNYY3FQy3zfY


Generated by Claude Code

Implements the "Cozy Cream + Zen Dark" handoff (turns 5a to 8a):

- Zen Dark: the Cream palette's dark scheme now uses the handoff's warm
  charcoal-green tokens; dark ships as the default brightness. Non-M3
  tokens (nav ground/inactive ink, faint ink, sort pill outline, NFC
  button, scrim, sheet blocks) live in a DashTokens CompositionLocal.
- Palette: a seven-swatch model with per-brightness spine/text/tint
  tones, severity colours resolved through LocalSeverityColors, and a
  JVM contrast test pinning every text pair at 4.5:1.
- Lucide icons parsed from SVG path data; one glyph per category with
  keyword defaults, house-with-check for the Chores tab.
- Cards: 16dp radius, 5dp spine, 38dp icon chip, meta line under the
  title, avatar left of the due badge, no progress bar. The done toggle
  keeps a 44dp touch target.
- Chores/Tasks: identical header row (search, owner, zen, group/flat),
  NFC scan button beside the Chores title replacing the hint card, a
  sort pill that names key and direction in words with a picker sheet
  (persisted), category grouping in catalog order, and a summary bar.
- Sheets: shared parts (header, DONE control, primary row, utility row,
  tertiary links, settings rows), unified Log/Done sheets with history
  and inline Undo, unified Edit sheets with the title as the field, a
  grouped settings card and category editing for chores.
- Speed dial over the whole screen, active tab's item nearest the thumb.
- Persistence for sort orders, colour-by mode, severity swatches and a
  per-device category catalog (order, icon, colour).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018PnE5N3U2YmNYY3FQy3zfY
Colours: segmented "Colour chores by" (severity or category), one row
per severity with the six-swatch palette (selected swatch wears an ink
ring), and a live preview card that follows the choice.

Categories: every category in use plus any created here, long-press
drag to reorder (with Move up / Move down chips in the editor for
TalkBack and keyboards), "+" in the header to add, and an inline editor
per row for rename, Lucide icon and colour. Delete says where the items
go and moves them to General on Supabase; General itself is pinned
last and cannot be renamed, deleted or reordered.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018PnE5N3U2YmNYY3FQy3zfY
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018PnE5N3U2YmNYY3FQy3zfY
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018PnE5N3U2YmNYY3FQy3zfY
The default chore sort is now pressure, worst first, so the status-chip
tests expect never-done and stale chores ahead of aging and fresh ones.
The hours-left badge test uses a mid-hour offset so truncation cannot
flip it. Sage's light text tone darkens slightly so it clears 4.5:1 on
its own tint, which the contrast guard test enforces.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018PnE5N3U2YmNYY3FQy3zfY
@mapgie
mapgie marked this pull request as ready for review September 2, 2026 18:47
@mapgie
mapgie merged commit 7baa263 into main Sep 2, 2026
5 checks passed
@mapgie
mapgie deleted the claude/new-session-demhke branch September 2, 2026 18:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants