feat: add month breakdown and session backups
Allow recurring costs and confirmations to remain unassigned when created from a purchase without a post. Add browser backup retention and restore controls, with coverage and documentation updates.
This commit is contained in:
1 parent
019517e6e9
commit
7cccd7a41a
32 files changed
+640
-41
No files matched your search
@@ -20,6 +20,10 @@ record.
|
||||
ordered migration functions applied on load, because IndexedDB holds the
|
||||
user's only copy of their financial data. Now at version 11.
|
||||
→ [`specs/2026-09-01-budget-app-design.md`](specs/2026-09-01-budget-app-design.md)
|
||||
- **Session backups live in browser storage.** Each app start saves a checkpoint
|
||||
before editing is available; 7 daily, 8 weekly and 12 monthly checkpoints
|
||||
are retained. Chosen for automatic operation, with manual JSON export still
|
||||
needed for browser-storage loss. → [`ARCHITECTURE.md`](ARCHITECTURE.md)
|
||||
- **A destructive write downloads a backup first.** Import and reset both export
|
||||
before replacing, and abort if the export fails. → commit `ac3d18a`
|
||||
- **Reset restores first-run state, not an empty dataset.** The seed posts, the
|
||||
@@ -85,6 +89,10 @@ record.
|
||||
|
||||
## Recurring costs
|
||||
|
||||
- **A recurring cost may have no post.** It still appears as due, while no
|
||||
envelope projection moves; confirming it records an unassigned purchase.
|
||||
This lets the purchase dialog turn an unassigned charge into a bill without
|
||||
inventing a destination. → [`ARCHITECTURE.md`](ARCHITECTURE.md)
|
||||
- **Two-stage confirmation, over projection-only or generation-only.** A
|
||||
recurring cost projects expected occurrences that stay expected until the
|
||||
owner confirms one into an ordinary `Purchase`. Projection-only would charge
|
||||
|
||||
Reference in new issue
Block a user