diff --git a/HISTORY.md b/HISTORY.md index ac0cf69..3b21440 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,4 +1,20 @@ # Bill Tracker — Changelog +## v0.41.0 + +### ✨ Spending + +- **Category groups** — Organize spending categories into named groups (e.g. "Bills", "Everyday", "Subscriptions"). New `category_groups` table with CRUD endpoints. Categories can be assigned to a group via the Spending page or API. Groups appear as collapsible headers in the category breakdown. +- **YNAB-style spending page** — Complete overhaul: all spending-enabled categories are always visible (even with $0 activity), budget/spent/remaining overview strip, Ready to Assign card, 3-month spending averages per category, progress bars with color-coded levels (ok/warn/over), available/overspent labels. +- **Cover overspending** — When a category is over budget, a "Cover from…" dropdown shows other categories with available budget. Clicking one reallocates budget between the two categories. +- **Spending page settings** — Toggle Ready to Assign, 3-month averages, Cover overspending, and Category groups via a dropdown menu. Settings persist per user. +- **"Other categories" bundle** — Outflows assigned to non-spending-enabled categories are bundled into a single read-only row so totals stay accurate without polluting the spending-enabled list. +- **Error states** — Summary, transactions, and categories each have their own error state with retry button. Skeleton loading for all sections. + +### 🧪 Tests + +- `tests/categoryGroups.test.js` — 4 tests: create/list/rename/delete, duplicate name rejection, group ownership validation, category assignment +- `tests/spendingSummary.test.js` — 4 tests: budgeted category with no activity, non-spending category bundling, 3-month average calculation, category groups in response + ## v0.38.4 ### ✨ Money