feat: the redesigned Event Clock

The new reader app replaces the old UI: Checklist with a rail (focus
pills, Next to expire, today's dailies, pinned routines), Timeline in a
new and a classic look, Routines, Archive and a Settings area, in a
Structured (default) and a Relaxed interface. It follows the approved
Round 6 B and Round 7 mockups, corrected screen by screen with the owner.

Reader data moves to a v2 store (gacha-tracker:v2:*). Existing v1 data
is migrated on first load, a recovery copy is written first, and the v1
keys are never removed, so a rollback finds them unchanged. Redeem codes
for Genshin arrive as their own feed.

Also: live's urgency ramp, editable per theme; completion and
section-complete fireworks; a returning-user tour; the design mockups,
specs, plans, reviews and handoff record.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Lucas WintherandClaude Opus 5.5 committed 2026-10-18 01:55:16 +02:00
1 parent ddd9673f86
commit 50c6e91b00
284 files changed
+45100 -1628

No files matched your search

+34 -3
View File
@@ -10,9 +10,12 @@ note only says where to start.
([spec](docs/superpowers/specs/2026-10-14-built-in-routines-design.md)), every-N-days cycles for
tasks and built-ins ([spec](docs/superpowers/specs/2026-10-16-cycle-routines-design.md)), and
battle pass windows as feed events ([spec](docs/superpowers/specs/2026-10-16-pass-windows-design.md),
see its § Outcome). Plans are beside them in `docs/superpowers/plans/`. Nothing is in flight: no
open branches or worktrees.
- **No next task has been chosen.** The open items below are the candidates; the owner decides.
see its § Outcome). Plans are beside them in `docs/superpowers/plans/`. The redesign attempt is uncommitted and was rejected for substantial markup divergence.
**Start with [the replacement-agent handoff](docs/handoffs/2026-10-16-redesign-fidelity-handoff.md).**
The existing plan/ledger contain superseded completion claims; no extra branch/worktree.
- **Redesign rejected for markup divergence; presentation correction pending.** See docs/design-reviews/2026-10-16-redesign-implementation.md.
The assigned follow-up is to faithfully port the approved markup and finish the redesign.
Unrelated open items below remain separate.
The ones that need the owner in the game first are marked as checks.
- **How the owner works** (their standing instructions, also in their personal Claude settings):
once they approve a design, carry it through spec → plan → execution with no extra review stops,
@@ -30,6 +33,17 @@ note only says where to start.
## Open items
- [ ] **Redesign Settings → Your own events and games** (owner, 2026-10-17: “the split-up from
the mockup is nice, but I guess it needs a bigger design”). Deferred on purpose: it works as well
as it does today, which is enough for now. Direction from the owner: a heading per game you
created, with that game's events listed under it, taking inspiration from the Routines tab —
possibly reusing the routine editor (`components/redesign/RoutineDrawer.tsx`, the right-docked
create/edit shelf) as the base for an event editor. Not in the Round 6/7 mockups, so it needs its
own short design (brainstorm → spec → plan; owner approves once, then carry it through). Keep the
current behaviour (`components/YourOwn.tsx`) working until the replacement is accepted.
- Owner, same day, an alternative to weigh in that design: drop the separate settings page and
put an **Add** button on the Settings sidebar's “Your games” list, opening an event editor
there (a new game, or a new event under a game).
- [ ] Make it clear which game each *This week & month* chip belongs to (owner, 2026-10-16: "it can
become a bit unclear"). With built-ins for seven games, that row now holds many chips whose
titles do not name their game — "Weekly Routine", "Weekly Challenge", "City Stamina",
@@ -235,3 +249,20 @@ note only says where to start.
`EventForm`, `src/client/components/TaskForm.tsx`). Review them as a reader would — field
order, defaults, copy, validation messages, how a cadence and a measure are chosen, phone
width — against `docs/DESIGN.md` and `docs/PRODUCT.md`.
- [ ] Follow up the 2026-10-18 pre-ship review of the v1→v2 reader migration. A schema-guardian review
found nothing blocking: event IDs, day keys and the feed contract are unchanged, and v1 keys are
never removed, so a rollback finds them byte-identical. These gaps remain, all low severity:
- Orphaned v1 entries (marks or amounts for a deleted `myevent:`/`mytask:`, or any entry whose game
can't be resolved) are not carried into v2 account data (`state/reader/migration.ts`,
`gameOf`). They survive in `legacyRaw`, `gacha-tracker:v2:migration-recovery` and the untouched v1
keys. Consider a catch-all bucket so a restored custom item finds them.
- Importing a v1 file whose region differs from the reader's account lands its marks in a new
`account:import-N`, not the visible account (`state/reader/import.ts`, `export.ts`). Kept, but
out of sight.
- `initializeReader` reconciles and writes back outside `withReaderLock`, with no compare-and-set
(`state/reader/store.ts`). A second tab's write in that window can be overwritten.
- Storage pressure: every save carries `legacyRaw`, and every automatic backup embeds the state,
`legacyRaw` and the v1 keys again, with no size cap (only manual backups are capped). Heavy
readers could reach the ~5 MB quota. Failures are reported, not silent.
- After a rollback, anything done in the new build lives only in v2 and isn't shown by the old app.
It's stranded, not lost.