🎉 Groundwork 1.0 is here — free to download and use. Get the latest version.
What's changed

Changelog

Every release, shipped honest and dated. Download the latest to get all of the below.

20260730-d23 July 30, 2026

Check-in streak, and groundwork for habit-aware insights

Added
  • Dashboard check-in streak — how many days running you've opened Groundwork, shown once you're two days in
Improved
  • The Historian now records app opens, budget reviews, and deliberate budget edits — all kept in your own local database, never sent anywhere — so future habit-aware features have real history to learn from instead of guessing
20260725-d21 July 25, 2026

Groundwork is now on macOS and Linux, plus a serious import fix

Fixed
  • Importing the same account once via CSV and again via QFX/OFX no longer creates duplicate transactions. Banks format the same transaction differently between file formats (a generic "Withdrawal" prefix in CSV, and QFX/OFX truncating long transaction descriptions) — the duplicate checker now recognizes these as the same transaction instead of silently doubling your spending totals.
  • A transaction added manually and then immediately edited or linked to a debt in the same session now behaves correctly — previously it could reference the wrong internal record until the page was reloaded.
  • Editing a debt's balance, APR, or payment on the Debt Payoff page now properly records that month's numbers, so the "your minimum payment is dropping" indicator can actually track your progress over time. It previously only recorded this from a secondary editing screen most people never use.
Added
  • Groundwork is now available for macOS (Apple Silicon and Intel) and Linux (x86_64) — no Python required for either, just download and run.
  • The Ledger's transaction rows now have a real button to attach a payment to a debt account, in both the collapsed row and the edit view — previously it only existed as a small icon that was easy to miss.
20260724-v1 July 24, 2026

Groundwork 1.0 — debt reconciliation, adaptive learning

Added
  • Debt reconciliation: manual charge/payment entries directly on a debt card, with semantic Charged/Payment/Interest verbs and a running total
  • Recurring debt payments — save a payment pattern once, confirm/edit/skip a draft each month instead of re-entering it
  • Link a checking-account payment to a debt entry from either the debt ledger or the main Ledger — no double-entry, and unlinking keeps both records intact
  • Debt ledger activity now actually moves the account balance, so the avalanche/snowball payoff projection reflects what you've really paid
  • Distance Traveled report shows payment compliance (on-time vs. under/over plan) and a payoff confidence score, from your real payment history
  • Category suggestions when entering a debt charge, from your own merchant history
  • Budget variance learning — see which categories run volatile vs. stable, with a suggested buffer
  • Trip spending forecast — past trips to a region adjust a new trip's estimate
  • Recurring-transaction detection in the Ledger — spots subscription-shaped patterns (consistent merchant + amount) and offers to add them to your budget
  • AI narrative gate health panel in Settings — see what the validation gate has caught before it ever reached your screen
Improved
  • Historian: a structured, queryable record of what happened vs. what was expected, underneath the debt reconciliation and adaptive-learning features above
20260712-d20 July 12, 2026

Bug fixes and more accurate numbers

Fixed
  • Paying a debt down to exactly $0.00 now saves. Before, a zero balance would snap back to the old amount — so a card you'd paid off wouldn't stay at zero.
  • The dashboard no longer shows a debt-free date when your budget doesn't cover your minimum payments. It now tells you plainly that the budget falls short, instead of showing a date that couldn't happen.
  • Retirement projections are corrected: required minimum distributions (RMD) for ages 70–71, plus a few Social Security timing and Roth/Traditional cases, now match the current IRS and SSA figures.
  • Trying to record a sale of more investment shares than you own is now caught and explained, instead of quietly saving a transaction that doesn't add up.
  • The Trip Planner's dining estimate now reads your spending history correctly.
  • A debt card's balance now updates reliably everywhere it's shown — the balance you enter is the balance you see.
20260706-d19 July 6, 2026

Fixes intermittent 500 on data load

Fixed
  • Random 500 errors on transactions, net worth, and other endpoints — root cause was a SQLite connection pool that shared one connection across all threads. Some requests would collide and fail (bad parameter or other API misuse). Fixed by giving each request its own connection.
20260706-d18 July 6, 2026

Beta re-invitation build

Fixed
  • Record-transaction Account dropdown now populates and buys/sells save correctly (was silently failing on every submit)
  • Net Worth trend chart appears again — it had been invisible after a redesign dropped its container
  • Refresh Prices now says honestly that this beta doesn't include price lookups instead of blaming your internet
  • Sub-category creation from Settings works on desktop (was a silent no-op)
  • Recurring bills now appear in the dashboard's Upcoming card
  • Categorization no longer creates ghost buckets — unknown names land in Other where the budget can find them
Added
  • Downloads folder auto-import — bank exports downloaded from your browser land in Groundwork automatically
  • In-app update banner when a new version is available
  • Recurring-bill offer when you categorize a monthly merchant, alongside the import-rule offer
  • Full-text search inside the built-in help
  • Debt cards can link to an imported account for a bank-basis cross-check on balances
Improved
  • Every silent error path in the app now writes to a log the ⚑ Report button attaches
  • Ledger stays snappy on large histories (row cap with 'show all', debounced search)
  • Database gained performance indexes; imports and re-imports are noticeably faster
  • The deploy pipeline gates every release through 23 automated checks — no more version-string drift or silent regressions