diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 1dba94d..9c1ae98 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -74,6 +74,13 @@ Three deliberate properties in that chain: - **Cloned.** `useSyncExternalStore` detects change by reference identity; mutating in place makes the UI silently stop re-rendering. +The two whole-dataset writes take the same queue and the same rules: +`store.replace()` behind JSON import, and `store.reset()` behind Settings' +"Reset everything". `reset()` calls the same `createSeedDataset` that `load()` +uses on a first run, so "reset" and "a brand-new browser" cannot drift apart. +Both are preceded in the UI by a JSON backup download that must succeed before +the destructive write is attempted. + ## Money A float, deliberately, with two rules that make it safe: diff --git a/TODO.md b/TODO.md index 9a5873a..abdc56e 100644 --- a/TODO.md +++ b/TODO.md @@ -3,9 +3,9 @@ Work queued for whoever picks this up next, human or agent. Ordered. Each item says enough to act on without re-deriving the reasoning. -**Current state:** merged to `main`. 419 tests passing, `bunx tsc --noEmit` +**Current state:** merged to `main`. 443 tests passing, `bunx tsc --noEmit` clean, `bun run build` succeeds on both the live-fetch and offline paths. -Sections 2 and 4 are DONE. Section 3 (redesign) is 1 of 4 sub-projects in. +Sections 2, 4 and 7 are DONE. Section 3 (redesign) is 2 of 4 sub-projects in. Section 6 (currencies) is DONE. Every screen has now actually been looked at — see section 5. @@ -61,7 +61,7 @@ The reasoning below is kept because it is the reasoning, not a plan. **argument**; the env read lives in a new `src/store/bakedRates.ts`, in the store layer, using the `try/catch` accessor pattern (see CLAUDE.md gotchas). -## 3. Visual redesign — sub-project 1 of 4 DONE +## 3. Visual redesign — sub-projects 1 and 2 of 4 DONE The owner's words: *"right now it looks a bit boring, simple and ugly. We want sleek, modern, and nice to use."* Then, on scoping: both themes with a toggle, @@ -79,10 +79,34 @@ foundation last is how that happened; do not repeat it. | # | Sub-project | State | |---|---|---| | 1 | Design foundation — two-theme tokens, theme toggle, self-hosted Inter + JetBrains Mono, one Section/Stat card, table furniture | DONE (`bb3c661`) | -| 2 | Month view | date-grouped purchases DONE (`a159189`); income/totals block and the carry meter's presentation still open | +| 2 | Month view | DONE. Date-grouped purchases (`a159189`), then the header, the post rows and the carry meter | | 3 | Year, Summary, Post detail | on the new foundation but not rethought. The 12-month matrix only fits by scrolling — decide whether compact number formatting replaces that | | 4 | Dialogs and fast entry | untouched. Native `