feat: add month breakdown and session backups
Continuous Integration / lint-and-test (push) Successful in 17s
Continuous Integration / docker-build-and-push (push) Successful in 35s

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:
Lucas Winther committed 2026-10-01 04:01:49 +02:00
1 parent 019517e6e9
commit 7cccd7a41a
32 files changed
+640 -41

No files matched your search

+8 -2
View File
@@ -74,11 +74,17 @@ Confirmed and in place:
- Multi-currency (DKK/USD/EUR) against a user-maintained exchange-rate table,
with an optional on-demand fetch that fails soft and is never required.
- JSON export/import and ODS (spreadsheet) export, both generated in the
browser.
browser. On each app start, a separate browser-stored session backup is made
before editing is available; recent daily, weekly and monthly checkpoints can
be downloaded or restored from Settings. These checkpoints share the browser
origin with the live data, so JSON export is still needed for protection
against losing browser storage.
- Offline-capable installable PWA. Currently deploys as one static artifact to
both GitHub Pages (under a subpath) and a self-hosted Docker image.
- Recurring costs — a bill that repeats every N months, every N days, or
every N weeks on a weekday, split across posts like any purchase. A cost is
every N weeks on a weekday, optionally split across posts like any purchase.
A cost may have no post: it remains expected without moving an envelope's
projected balance, and confirming it records unassigned spending. A cost is
anchored one of two ways: `calendar` holds a fixed grid of due dates, so
paying two months at once still leaves nothing due until the one after; a
cost anchored to its **last charge** has no grid at all and can be charged