v2.150.1
wholebudget.io
Improved
- The website now lives at wholebudget.io, and support mail goes to support@wholebudget.io. Old wholebudget.vercel.app links forward to the new address.
Every user-visible change in WholeBudget, newest first.
wholebudget.io
Codes on the website
Jev waits for its go-ahead
Every category, its own pill
Categories come from the items
French pages get their own address
Terra at its real price
Clearer legal pages
Codes for the team
Codes and a normal month
Terms, notices and a safer PDF reader
Pick a card, then its ending
The Mac reads your iCloud pictures
Jev's pick, pinned
Pictures and changes arrive in seconds
Hard receipts climb the ladder
Phone receipts reach the Mac anywhere
How it was read, on every phone
Is Jev ready?
Categories, everywhere
Crash reports, only when you say yes
See the receipt, fix the card
Household receipts are everyone's
Change a card's number from your iPhone
Events on receipts
Bills where they belong
Cards, read right
Who paid, after two folds
Exchange or deposit, your call
Jev, tidied
Bad scans say why
Your own colours, one household view
Foreign cash, printed rates, tidy follow-ups
Same card, new number
Allowance or top-up, call by call
Jev on a budget
Who paid, after a fold
Categories follow the items
Know what to export, overlaps handled
Whose phone paid
AI usage export, as your allowance
WholeBudget AI, as your allowance
Spending by what you bought
Windfalls kept out of your averages
A home for every bill, and 2025 tidied up
Share the pairing link
Your cards, and every PDF
Who's signed in, and where it all lives
PDFs work again
Several charges, seen at import
Keep your import work, statements that fit, credits that make sense
Whole PDFs for your iPhone
One purchase, several charges
Household gift cards counted right
Jev, measured
A car loan, paid down in plain sight
Statements you can finish, links you can refuse
Plans that end, lumps left out, every bill counted
Where pictures live
Purchases that hold, money that's counted right
Cash from a withdrawal, counted once
Tidier tools, kept card wording
Safer statement imports
Room for the baby and the car
See a statement before you import it
Ask first, and an up-to-date privacy policy
Statement library, links at import, Account for everyone
Safer connection, money that adds up, update banner
Export everything
Bank slips are bank records
Small fixes, sharper split view
Your household's name, and PDF pictures again
Linked purchases, editable anywhere
Analyzed means analyzed, the right payer
WholeBudget AI verifies iPhones
Phone receipts without a category arrive
Settings, reorganized
Plus from the WholeBudget team
Split view, wider and on Ad-hoc
WholeBudget AI on the Mac
Settings that stick, darker polish
Your phone sees the bank line
Edit anywhere
Dark mode on the Mac
Split view on Receipts
Small fixes, foreign money edge cases
Plus, ready for everyone
Currency that syncs, checks on your phone
Privacy policy: Plus and AI top-ups
Privacy policy: WholeBudget AI
Privacy policy: household pictures in iCloud
Trips abroad, counted right
Privacy policy: pictures in your iCloud
Recurring and events, fixed
Pictures, where you want them
Settings and Import, restyled
Planning pages, redesigned
Your Mac in cloud sync (Labs)
Income and tool pages, redesigned
Dashboard, Insights and Trends, redesigned
Recurring, redesigned
Readable item lines in Detailed
Transactions, redesigned
Ad-hoc expenses, redesigned
Invite your household (Labs)
Paste to add, and a better category picker
Accounts, in Labs
A calmer receipt window
A calmer receipts list
Tidier receipts, honest counts
Privacy and support, in the app
Cheaper AI reads
Polish and a welcome
Recently deleted, and a tidier review
Privacy and support
Faces and fixes
Two-way sync
Merge the copies
Copies, pictures and your contact photo
A purchase that reads like a receipt
Links you can judge
Honest sync
A bill and its tipped slip
Your keys on your phone
Faces and your Mac
A preview you can read
Review, in order
Edit the payments
Holds, deposits and tips
One view per purchase
Scan together
Refunds, linked
Smarter refund reading
Jev on your phone
A second opinion
Apple Pay, sorted
Cards on your phone
Which card paid
One name per store
Every AI call, counted
A scan you can watch
Brand logos
Review Vendors, clearer
A phone of its own
Linked purchases, counted once
Receipt photos on your phone
Your household, on your phone
Bills and their slips
Who scanned it
New vendors, added for you
A second look when the math is off
When the tax is already in the price
Dates and notes that read true
Refunds stay refunds, and items stop doubling
Your phone keeps what it scanned
Pairing that survives a new address
Receipts that add up, and a photo you can straighten
One name per brand
Receipts that add up wrong, and the ones that only look right
A deleted line no longer freezes re-analysis
Charges after the subtotal, detected
Category search, receipt source, and safer re-analysis
After-subtotal charges, tax-inclusive receipts & the future-date guard
Math checks, printed quantities & voided lines
Repeated receipt lines stay separate
Clean guard run
Cross-device duplicate marks
Smarter duplicate matching
Duplicate receipts + printed time
Easier iPhone pairing
iPhone companion link
Accounts that know their own balance
Category descriptions catch up with the rename
Occasion becomes a tag, categories become reusable
Website build fix
Receipt dates read from the file itself + cloud-mirror groundwork
The website goes live + Balance charts and drill-downs
Safe re-imports, auto-link suggestions + a guard against dead features
Review fixes: honest dashboard math, live receipt truth, date sanity
Dashboard chart overhaul + update-panel fixes
Fix wave: audit bugs, transfer chains + income review
The classifier learns out loud
Income wiring, duplicate defense + awaiting-bank receipts
Paystubs + in-app updates
Receipts finishing + PDF statements
The app learns from you
Income roles
Receipts overhaul
Multi-stage AI classify
In-app updates fixed
Resume previous uploads
Inline merge editing
Privacy hardening
The installable era
Bugfix bundle — greedy-match de-dup + tighter sub-$5 amount scoring + Skipped income-leg L1-L3 visibility + per-page Settings UI
Phase F.1 + F.2 + F.3 (preview) — rename auto-skip → linked + inline visibility + grey/blue tint + merge-preview retained
Phase E.3 bulk-action toolbar + Phase E.4 Force-link surface (subsumed) + Phase E.5 vitest coverage — closes Track 1.V Phase E
Phase E.3 UI polish — per-row red "Not this template" button + header counts + Undo chip on /transactions verdict-filter view
Phase E.3 foundation — schema persistence + commit-pass stamping + URL-bound verdict filter on /transactions
Phase E.1 + E.2 — review-band "Not this template" button + audit log + scorer feedback (import-preview surface)
HOTFIX — source-label double masked-ending suffix bug from v1.92.30 ship
Phase D.1 + D.2 — Account-type-aware source labels + Settings.importPreviewRowsPerPage (50/100/200/all)
Phase D.3 polish #2 — Outgoing/Incoming labels in Skipped section + per-leg categorization + Auto-handled bucket includes v1.90 transfer-pair legs
Phase D.3 polish #1 — Selected count + Total drop when items are auto-handled + breakdown shows Auto-handled bucket
Phase D.3 — Skipped (auto-handled) preview section + Settings.commitNullifyingMarkedRows plumbing
Phase D.0 — bridge-bypass detection + cross-source money-flow priority sort (the duplicate-amount CC-payment fix)
Phase C — transitive-nullify verification + unmark restores account labels (rescued-prefix strip) + illusory-pair audit footer
EMERGENCY — CC payment direction rules (AMEX parity with Mastercard) + same-source same-vendor pair handling + leg-reuse de-dup
AMEX .xlsx upload fix (SheetJS externalisation + headerRowHint translation) + 4-account list on the built-in RBC parser card + skip-category button key warning
React key-warning fix + features/bugFixes data backfill + full v1.92.x close-out regression
Per-leg incomplete redesign — fully unlink at commit, two sub-dropdowns, each leg gets its own expectedPartnerType
Rescued-pairs state guarantees Unmark→Suggested + incomplete-transfer sub-type dropdown + Track 1.AA multi-button-classify plan integrated into ROADMAP
Track 1.V Phase A — Marked Pairs expand panel + incomplete-transfer linkType (9th member) + unmark restores v1.90 transfer-pair fields
4 critical auto-mark fixes — no double-use, Unmark sticks, temporal-order preference, account labels on Marked Pairs
LinkTypeChip redesign (4 inline color-coded chips with refund sub-dropdown) + auto-mark pre-classifies chequing-side leg
BUG-A TRUE ROOT CAUSE FIX — CSV parser pre-classified at upload time + unified Link-Type dropdown chip
BUG-A REAL FIX — migration moved to readDB() + defensive AI override for canonical CC-payment vendor patterns
Track 1.V Phase K (foundation) — BUG-A settings migration + BUG-B auto-mark threshold fix + chip plausibility + Settings.linkChipVisibility
Track 1.V Phase I full integration + Force-link KIND subtype labels + HOTFIX Phase G TDZ error
Track 1.V Phase H + I (foundation) — cc-payment-corrections.jsonl audit log + reusable CcPaymentChip component
Track 1.V Phase G — cross-import partner-confirm UI for CC payments that span import sessions
Track 1.V Phase C + D + E + F — sequencing flip invariant + auto-flag on import + auto-mark CC-payment pairs + aggregate nullify wiring
Track 1.V Phase A + B — CC Payment classifier foundation (schema additions + 3-way AI prompt rev + source-kind context)
Lapse 3 fix — linkTwo() co-stamps refundOfExpenseId when linkType is refund (v1.87.0 partial-refund net-display path now fires for manual-link refunds)
BUG-1 hotfix — /api/transactions/link VALID_LINK_TYPES expanded to all 8 ManualLinkType members (silent dropped-link regression from v1.92.4)
Manual Find-pair affordance + reversed auto-uncheck (rows commit with manualLinkType for dashboard counting) + AI Classify skip + soft commit warning
Hotfix — hook-order bug in ImportSuggestionBanner crashed /transactions/import
Marked pairs persist + smart left/right ordering + account labels + per-row link chip + link-skipped section separation
Smart-suggest type-override dropdown + same-source-disqualifies-transfer + CC-metadata steers to credit-card-payment + banner copy fix
Smart-suggest expansion — new link types (associated, CC payment, couple-transfer), nullify-on-mark + auto-uncheck + click-to-expand confidence
Sidebar IA reshape (Income → Earnings + Money back) + import auto-flag for reimbursement rows
Income foundation API fix + 3-way income split (Earnings / Rebates / Reimbursements)
Smart-suggest pair-linker on /transactions + import preview banner + aggregate nullify for fee-reversal/rebate links
Manual transaction-link UI — force-pair escape hatch for refund/rebate→fee + cross-bank rebates
Imports tab UX overhaul — collapse Add Profile + sort+inline Bank Keys + bidirectional links + parser edit/delete
Custom bank-keys + aliases + cascading rename + Re-tag + Set bank-key on parsers
Custom-parser bank-key + edit pencil for Known file sources (closes UAT gaps from v1.91.5)
User-configurable parsers — Phases D+E+F (runtime interpreter · CSV upload wizard · parse diagnostics)
Parsing Logic visualizer + ParserConfig schema foundation (v1.91.4 = Phases A+B+C of the parser-architecture roadmap)
Import-profile UX completion — Phase E Bank Key dropdown in Add Profile form · Phase B edit-profile-inline on matched-profile banner
Phase 8A pulled forward — fair dedupe scorer + Link-to-template CTA on review-band recurring matches
Alias learn-loop completion — §12.9 Case 3 full-clobber fix · Yes-click auto-fills L1/L2/L3 · 3-way skip rescue · borderline banner shows proposed categories
Phase 7A + 7B — TxType `'unclassified'` extension · template-matcher lift · §12.9 destination-clobber bugfix
Import-correctness surgical bundle — RC-4 classificationSource stamp · Save-profile-now button · regex extension auto-strip · quick-set-owner inline buttons
Pair-type fixes — refund classifier tightened · NEW Associated 4th type for passthrough flows · diagnostics panel for near-miss pairs · skip-reason drill-down with quick override
Recurring detection — per-row Mark-as-recurring modal + batch-level candidate banner · auto-alias-match other batch rows after template create
Unified pair architecture — Transfer / CC Payment / Refund types with paymentMethod direction rules · closes the store-charge ↔ e-transfer false positive · same-source refund-pair codepath
Import quick wins — sortable column headers · skip-reason visibility · auto-link template + banner sync fix · pre-commit Save-as-profile toggle on account override
Per-file detection summary strip on Transaction Import — every file in a multi-file batch now shows its filename · format · owner · profile match · row count
Parser counter-leg fix — AMEX / RBC / Scotia legacy / TD no longer drop transfer counter-legs at parse time · owner-undetected warning banner on import · unblocks chequing↔card + cross-account transfer-pair detection
Import review table paginates at 100 rows per page · AI Stage 5 (semantic refund detection) deferred to v1.90.3 with its own clarifying round
Cross-batch transfer-pair detection — drawer now pairs new imports against previously-imported DB rows · Settings-tunable date window · three new server endpoints (candidates / nullify / unnullify)
Transfer Pairs review drawer — right-side slide-in with dual-view cards · parse-time pair detection · Unlink reverts both legs · reopen chip in toolbar
Import Stage 0 → deterministic transfer-pair matcher (no more AI pair hallucinations) · manual template pick auto-fills category + learns vendor alias · selection breakdown shows per-destination totals + exclusion reasons
Import UX polish — Amount color-coded by money direction · Scotia deposit vendor surfaces Interac E-Transfer · Detail column for income reverts to read-only "—"
Income row UX — Scotia deposits pre-classify as Transfers & Refunds / Internal Account Transfer · Detail column is now an editable moneyInType dropdown · stale paycheck values cleared on reclassify
Import hardening — auto-linked rows inherit template category/sub/detail · exact-alias bypasses amount gate for seasonal templates · AI Stage 0 amount-match validation · locked rows route to correct AI branch
AI Classify lock refined — fill-if-empty for L1/L2/L3 on locked rows · Stage 0 transfer detection always applies · per-row lock/unlock icon · row unlock flag
Import UX hardening — parser-hint honored at row-init · mortgage CSV rows auto-link to recurring template (no more silent skip) · AI Classify lock on deterministic matches · manual account override picker · Account.lastFour field
Scotiabank "Ultimate Package" CSV import — new parser variant · Scotia chequing + shared mortgage accounts seeded · ParsedRow destination hints + transfer-candidate counter-party hint · filename last-four regex fix
Phase 12 Refund & Reimbursement Tracking — NEW /money-back hub (3 tabs) · refund matcher + picker · tiered auto-link/prompt gate · dashboard RefundsCard · /reimbursements retired (307) · refund-aware rollup toggle · refunds.jsonl audit · 17 new guard-types · 42 new vitest
Phase 11 polish — 11I reimbursement carve-out + 11J enhanced active-event dashboard card + 11G event filter chips on ad-hoc & income
Phase 11 Events Extended — EventPicker component · GET /api/events/[id] eager-load · enhanced /events list + detail · side-gig profit math · budget-ceiling warnings · timeline strip · CSV export · status auto-advance · type-color palette
Subscription Renewals 4-state (Charged / Expected / Confirmed / Projected) + resolveNextDueDate fixes stale anchor drift (two annual templates) + data refresh + Category (L1/L2/L3) editing parity between Settings and Templates view + Tax-exempt flag for GST/HST-exempt financial services (both card annual fees)
Recurring Expenses + Subscription Renewals fidelity — Settings edits propagate to dashboard · HistoryForecastChart respects nextDueDate + discounts · "Configure in Settings" deep-links with auto-expand from /expenses/recurring
Dashboard Deficiency Patch — Theme-aware Cash Flow + Balance Timeline · Subscription Renewals status trichotomy (Confirmed / Expected / Projected) · Held templates filtered from Upcoming Bills + Show held toggle · projectRenewalDate respects future nextDueDate (trial + prepaid suppression) · SuperGrok Mar 14 bundle modeled (discount + ExpenseEntry)
AI Natural-Language Installment Adder — Describe-mode free-text → structured template with confidence scoring + preset suggestion + multi-line + AI usage logged
Annual Merge — paymentSchedule installment tracking + UpcomingInstallmentsCard + 5 Canadian presets + mark-paid creates ExpenseEntry + year carryover + AnnualObligation retirement
Seasonal Enhancements 2.0 — opt-in flag + frequency-aware greying + triage accordion + inline docs + icon badge + adaptive drift detection
Seasonal Merge — /seasonal-profiles retired into Settings > Recurring 8th expand-panel + diff preview + sparkline + copy-from + source tracking + orphan detector
Insights UX Polish — contrast fix + sticky header + chromeless refactor + per-tab sticky controls + subgroup collapsibility
Phase 10 Insights Hub — /insights tabbed observability page + sidebar reorg + FX card + Trends smart-callouts + deficiency cleanup
Prompts & Cache Polish — Sub-Group Labels + Active-Variant Badges + Retro-Classify Cross-Link
Borderline Alias Yes/No Learn Loop — Auto-Link Chip + Banner + Undo Toast + Keyboard Shortcuts + Safety Warnings
9N Merge-Semantics EXPANDED — Receipt Precedence + Legacy Upgrade + rawMemos + updatedBy Gate + Vendor Cache from Imports
Template Smartness at Import — Last-Seen + Auto-Unhold + Retro-Classify + Alias Match Thresholds
AI Classify for Recurring Templates + Income Two-Step (opt-in) + Vendor-Cache Hierarchy Gate
9J Receipt Auto-Populate + 9K Missing-Charge / Missing-Receipt Indicators + expectsReceipt
Bundle Children Editor + Combined-View Visibility (retro-tagged ad-hoc rows)
Schedule Anchors + Drift Detection — "Next Expected Charge" + Business-Day Tolerance
Template Economics — Pre-Tax / Discounts / Self-Calibrating USD Rate / Scan from Ad-hoc
Template UX — Sort by Category + Sticky Header + Vendor Aliases + Expand-Row
Phase 9 Part 2 — Recurring-Pattern Detector + Scan UI + Merge-Semantics Schema Prereq
Phase 9 Part 1 — Editable Recurring Templates + Own Settings Tab + Hold Schema
Sticky Table Header Root-Cause Fix — Removed overflow-x-auto Scrollport
Sticky Table Header Fix — Per-Cell Sticky
Import Page UX — Narrower Destination + Auto-Collapse Upload + Sticky Headers
Template UX + Merge Preview + Ripple Link
Recurring Category Dropdown Fix + Dupe Breakdown Expansion
AI Classify State-Timing Fix + React Key Warning Fix
AI-Classify Diagnostics + Dupe-to-Recurring Reclassify + Manual Nullify + Pending Refund
Phase 8 Part 3 — PDF Scaffold + Enhance Parity + Merge-Helper Tests
Phase 8 Part 3 — Transfer-Pair Persistence (Auto + Scan)
Phase 8 Part 2 — Transaction Inbox Lifecycle + Pending Inbox Card
Phase 8 Part 1 — Upload Drop Zone Fix + Multi-File Cross-Batch Dedupe
Phase 8 Foundations — Schema Fields, Merge Helpers, Shared Hook & Component
Missing File Indicator + Mismatch Filter + Re-analyze Mismatches
Editable Receipt Totals + Smart Total Logic + Describe Monetary Corrections
Receipt Extraction Quality — Prompt Rewrites, Confidence Scoring, Auto-Fix (Phase 7.5)
PDF Preview in Dedupe Modal + Match Rate Denominator Fix
Enhanced Dedupe Modal, Auto-Dedupe After Analysis, Quantity Extraction (Phase 7 Part 6)
Receipt Dedupe + receiptNumber Extraction + Backfill (Phase 7 Part 5)
List View Column Overflow + Sticky Header Overlap Fixes
Item ID Chip Width Fix
Receipt Unlink / Relink / Jump Navigation (Phase 7 Part 4)
Receipt UX Polish — Sticky Headers + Accuracy Alerts (Phase 7 Part 3)
Receipt Overall Category Editor + Classify Guard (Phase 7 Part 2)
Receipts Visual Fix Bundle (Phase 7 Part 1)
Duplicate Enhancement + Foreign Currency Display (Phase 6 Part 3)
Transaction File Archive + AMEX .xls Parser (Phase 6 Part 2)
CSV Source Auto-Detection v2 — Filename Hints, Import Profiles, Card Stamping (Phase 6)
In-App Dedupe Correction Log Viewer
Settings → Dedupe Card (Preset Picker, Thresholds, Weight Readout)
Repeat Detection v2 + Unified Transaction Import (Phase 5)
Per-Row + Bulk Classification Triggers — Click-to-Classify + All / Unclassified / Legacy
Ad-hoc UI Polish — Quick Filters, Sort, Color Dots, Brand Icons, Card Column
Payment Method Schema Foundation — paymentMethods[] Allocations
Receipt In-Line Itemization v2 — Three-Mode Analyze + AI Describer
Settings Page — Sub-Page Tab Navigation
Sticky Page Headers & Release Version-Bump Filter
Release Notes Header — Cumulative Totals
Release Note Count Pills in Collapsed Header
Fix Recurring Hydration Mismatch After Version Bumps
Category Description Staleness Tracking
Bug fix — AI Expense Entry crashing with "Unexpected end of JSON input"
Feedback Learning Loop — Problem Vendors, Overrides & Review Gate
A/B Test Historical Mode + Per-Arm Filter Strategy
Semantic Pre-Filter — Zero-AI-Cost L1 Narrowing
Observability & Evaluation — Accuracy Dashboard + A/B Mode
L1 Candidate Filter Layer (Flat Mode)
L1 Candidate Filter Layer (Multi-Phase)
Per-Prompt Category Description Injection
AI-Assisted Ad-hoc Expense Entry
Category Descriptions & Dual-Mode Classification
Fix Canvas Module for Receipt PDF Rendering
Stale Receipt Index Recovery
Receipt Search & Feature Tracker Fix
Expense↔Receipt Interop & Polish — Phases 8+9
Smart Match Engine & Expandable Receipt Modal
Receipt Linking & Orphan Fix — Phase 5
Multi-Phase AI Extraction for Large Receipts & New Item Tax Calculation
Editable Receipt Line Items & Analyzed Tab Categorized View
Receipt Line Items — Two-Line Descriptions, Discount Editing & Tax Column
Receipt Page UI Polish — Sticky Headers, Compact Layout & List Default
Manual Line Item Overrides & Item ID Display
Line Item Editing, Filtering & Verification
Discount Line Item Detection & Merging
List View Sorting, Tip Display, $0 Line Item Filter
Water & Sewer — Ledger Entry, Forecast Chart, Balance Accuracy
Water & Sewer Utility — Tri-Annual Recurring Expense + Balance Column
Receipt Enrichment — Dual Descriptions, Overall Classification, Tax Distribution
Backend Logs — Deep AI + Data Visibility
Backend Activity Logs — Full Observability Dashboard
List View Analyze Button + AI Prompt Visibility Confirmation
Payment Card Extraction, Category Colors Across All Views
Fix Hydration Mismatch from Stale Build Cache
Mortgage Extra Payments — One-Time Lump Sums Reduce Amortization
Smart Classification — L3 Categories, Product Identification, Category Colors
Extraction Method Indicator — See How Each Receipt Was Analyzed
Mortgage Accuracy Overhaul — Canadian Compounding, Payment Charts, Date Fix
Receipt List View — Category Grouping, Text Tables, Editable Classifications
PDF Error Reporting + Analyzed Filename Display
Receipt System Hardening — Security, Error Handling, Settings
Mortgage Dashboard Overhaul — Weekly Payments, Deal Summary, Term Tracking
PDF Thumbnail Previews + Bug Fix Hash Backfill
Feature Name Fix + Receipt File Type Badge
Receipt System Polish — Delete, Re-analyze, Error Display, Bug Fixes
Receipt System Round 2 Fixes
Receipt System Overhaul — PDF Support, Multi-Vendor, Bug Fixes
Legacy Category Fix in Edit Form
UI Polish — Vendor Cache, Coverage & Orphan Indicators
UI Polish — Inline Editing, Badges & Nullification
Batch Reclassification Pipeline
importSource Consistency Fix
Receipt Management System + Cross-Matching
Pre-Phase Fixes — 8 Quality & Feature Readiness Fixes
Consolidation Fix Pass — 11 Bug Fixes
AI Receipt Scanning & Extraction
AI-Powered CSV Classification Pipeline
AI Prompt Template Management
Vendor Classification Cache
Multi-Category Line Items
Property Tax Schedule, Editable Frequency & Ledger UX
Balance Page Bug Fixes & Frequency Overview
Recurring Ledger — Inline Editing & Add New Template
Recurring Ledger — Category View, Current Month Indicator, Frequency Types
Recurring Ledger — All View with Year/Month Grouping & Duo Palette Fix
Recurring Expenses — Dual View with Month Navigation & Category Rollup
Ad-hoc Expenses — 3-Column Categories & Form Fixes
Bug Fixes Table — Sorting & Filtering
Features Table — Sorting, Filtering & New Statuses
L1 Category Colors — theme-aware palette, auto-assign, color picker
Editable Categories — L3 editing, reusable CategoryEditor, all 3 sections editable
Bug Fix — Features table v1.19.0 entry ordering
Bug Fixes — Features display + L3 category visibility
Category Infrastructure Overhaul (Phase 1) — Three independent hierarchies, L3 detail support, recurring bill categories
Gap Closure — fundingSource, Trends, Annualized, Tab-paste, Quarterly, Notes — 6 features shipped as v1.18.1–v1.18.6
Analytics, Waterfall, Weekly Pace, YoY — 8 features shipped as v1.17.1–v1.17.8
Search, Receipts, What-if, Alerts, Pre-tax Parity — 6 features shipped as v1.16.1–v1.16.6
Depth — Accounts, Amortization, Annual Obligations, Seasonal, Money In, Reimbursements — 6 features shipped as v1.15.1–v1.15.6
Events & Special Expenses — 7 features shipped as v1.14.1–v1.14.7
Comprehension — Top Vendors, Risers/Fallers, Category Drill, Vendor Detail
Truthful Balance + Pacing — Ad-hoc in /balance, Pacing Card, Callouts
Entry Speed & Import — Quick-Add Bar, Vendor Memory, CSV Import
Ad-hoc Foundations — Sheet Taxonomy, Vendor, Payment Dropdown
Dashboard Polish: Sticky Header, Timeline Y-Axis, Paid-By, Income Stream
Balance Timeline — Daily Scrollable Trend Chart
Subscription Renewals Rework, Owner Icons, Trend Polish
Dashboard Time Travel & Upcoming Bills Controls
AI Subscriptions, Archive State & Renewal Tracker
Dashboard & Balance Fixes, Household Owner
Expenses Restructure & Committed Dashboard
Recurring Expenses Page
Committed Expenses Foundation
Release Notes & Polish
Income Categories & Fixes
Income Management Suite
Collapsible Income View
Income & Tracking Enhancements
AI Configuration
Theme-Aware Charts
Initial Release