docs(todo): what the anchored-model merge left unfinished
Continuous Integration / lint-and-test (push) Successful in 14s
Continuous Integration / docker-build-and-push (push) Successful in 31s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Lucas WintherandClaude Opus 5.5 committed 2026-09-30 16:53:22 +02:00
1 parent 933027cb1b
commit 019517e6e9
1 file changed
+56 -4
+56 -4
View File
@@ -148,7 +148,59 @@ slots stay put whether they were ever settled or not. The two anchorings differ
here on purpose (AGENTS.md §1's schedule invariant), and unifying them would
reintroduce the bug the anchored model exists to fix.
## 4. Visual redesign, sub-project 3 — Year, Summary, Post detail
## 4. Anchored-model follow-ups left after the merge with main
The anchored model was merged on 2026-09-30, after main had gained budget
folders, placement and nested bills. Everything below is known and unfinished.
### "+ New recurring cost…" is offered for a purchase with no post
`newCostOptionIsSelectable` in `src/ui/recurringForm.ts` checks only the date.
A bill needs at least one destination post (`requireRecurringSplitDestinations`
in `src/store/actions.ts`), so a purchase left unassigned (no splits) can pick
the option, and Save is then refused with "A bill needs a destination post".
The error surfaces and the dialog stays open, so nothing is lost — but it is a
doomed save the dialog could have prevented. Disable the option, with the
reason, while the draft has no splits, the same way a month-only date disables
the day-granular units.
### A bill created from the purchase dialog has no folder choice
Settings' new-bill form picks a folder; the dialog's "+ New recurring cost…"
does not. The new bill nests under its post when it has exactly one split
(the same default Settings applies), otherwise it lands in Unfiled and has to
be moved from Budget folders. Decide whether the dialog needs the picker or
whether moving it afterwards is fine for an occasional action.
### "Unlink from bill" was replaced by the Recurring cost select
Main had an "Unlink from bill" checkbox on an edited purchase; the merge
dropped it because choosing "None" in the anchored model's "Recurring cost"
select does the same thing (and `updatePurchase` now honours an explicit
`source: undefined`). Its copy said "the occurrence will show as expected
again", which is true for a `calendar` bill and meaningless for a
`lastCharge` one, whose next due date simply re-derives from the remaining
charges. Confirm the owner does not miss the checkbox; nothing tests its
absence.
### Not yet driven in a browser
The merge was checked by the full suite, `tsc`, a build, and screenshots of
the month page and Settings with demo data (both render, no console errors,
Car insurance shows "Next 2026-10-19" after charges on 3 and 19 September).
Not yet clicked through by anyone:
- tagging a new purchase to an existing anchored bill and seeing its next due
date move in the Budget tree and in Expected;
- "+ New recurring cost…" end to end, including where the new bill appears in
Budget folders;
- untagging an edited purchase via "None";
- the Settings anchoring control switching a never-charged monthly bill to
"the last charge" (its month-only start should expand to the 1st and the
Month/Date precision control should disappear), and being locked once the
bill has a charge.
## 5. Visual redesign, sub-project 3 — Year, Summary, Post detail
The owner's brief for the whole redesign: *"right now it looks a bit boring,
simple and ugly. We want sleek, modern, and nice to use."* On scoping: both
@@ -188,7 +240,7 @@ than re-decide** (spec: `2026-09-02-month-view-design.md`):
phone. `formatMoney` is still right wherever an amount can be in some other
currency — every purchase row, for one.
## 5. Visual redesign, sub-project 4 — dialogs and fast entry
## 6. Visual redesign, sub-project 4 — dialogs and fast entry
Untouched. Native `<select>` elements are still browser-default, and
`up` / `down` / `archive` in Settings are bare text buttons. Covers the purchase
@@ -198,7 +250,7 @@ There is already a spec for fast-entry *behaviour* —
`2026-09-02-fast-entry-refinements-design.md`. Read it before restyling, so the
visual work does not fight it.
## 6. Currency work deliberately left undone
## 7. Currency work deliberately left undone
All three were decided against at the time, not forgotten. Reopen only with a
reason.
@@ -214,7 +266,7 @@ reason.
Fine for one "$" currency; if the owner adds two, typing the code
disambiguates and nothing warns them. Tested, documented, not solved.
## 7. Still needs a human
## 8. Still needs a human
`scripts/screenshot.ts` drives headless Chrome, so this list is much shorter
than it was. Already seen and confirmed working: the carry meter (including red