Releases: rollecode/dough
Releases · rollecode/dough
Release list
v3.11.0
- Stop fabricating the opposite leg of a transfer when the counterpart account is bank-fed: the real leg always arrives from the bank on its own schedule, so a fabricated one doubled the transfer and permanently drifted the counterpart balance; fabrication now only happens for accounts Synci does not feed
- Let transfer pairing reclaim an inflow the fallback filed as income: the opposite leg often arrives days later, and without re-pairing the money stayed income on one account while the other side became a transfer with no counterpart, inflating income and mismatching balances (pattern-matched paychecks stay protected)
- Attach late-arriving transfer legs of either direction to an existing single-leg transfer, not just incoming ones
- Categorise an unmatched inflow from a payee the household only spends at as a refund to that payee's usual category instead of income, so a courier or shop refund no longer shows up as money to budget
- Never offer income categories to the AI expense categoriser
v3.10.2
- Scope the Synci import duplicate check to the same account: matching on amount alone across all accounts made a common round amount (a 50 euro card payment) count as a duplicate of a same-size transfer on another account days earlier, permanently dropping the real purchase and leaving the account balance above the bank's
v3.10.1
- Walk every page of the Synci transactions feed instead of only the newest one: the API ignores its per-account filter and plain page parameter (pagination is
page[number]/page[size]), so the sync only ever saw the latest 25 transactions and a quiet account's purchases were pushed out of the window by busier accounts and silently lost; the full walk also backfills anything missed earlier
v3.10.0
- Open a finger-sized calculator sheet when editing an assigned amount on a touch device: the native number keypad has no operator keys, so expressions like 50+10 could not be typed on mobile; the first digit replaces the prefilled amount and operators build on it, matching the keyboard behaviour
- Show the activity (spent) column in the budget on phones with a compact four-column layout instead of dropping the column
v3.9.0
- Make everything that read YNAB-only tables work in local mode, so households that started on YNAB and moved off it (or never used it) see correct data everywhere
- Dashboard: build the current month's category spending from the local ledger instead of the frozen
ynab_categoriesrows, which are empty for months added since the cutover - AI summary and chat: fix the local category-activity sign (spending was stored positive, so the "spending by category" breakdown filtered itself out to empty) and derive the previous-months comparison from the transactions ledger instead of the stale
monthly_snapshotstable - Debts: read debt accounts from the live accounts table (not the frozen
ynab_cachesnapshot) and resolve category-linked monthly targets from the local budget when YNAB is disconnected - Category list endpoint now serves the local categories table in local mode
v3.8.0
- Make the monthly cash flow chart work without YNAB: in local mode the income and expenses for both the current and past months now come from the actual transactions ledger (internal transfers excluded) instead of the frozen YNAB-era
ynab_month_budgetandmonthly_snapshotstables, which were never updated after the cutover and showed stale or zero figures - Add shared local cash-flow helpers (
cashFlowForMonth,topExpenseCategories,recentTransactionMonths) so every consumer derives money-in/money-out the same way
v3.6.1
- Document the write-scoped v1 budget endpoints (
budget/assign,budget/auto-assign) indocs/public-api.md
v3.6.0
- Reconcile the current month's Ready to Assign against real account balances in local mode (on-budget balance = Ready to Assign + category available), so money accumulated before the YNAB cutover is counted as assignable instead of being lost to the income-only carry-forward
v3.5.0
- Add write-scoped v1 endpoints for budgeting:
POST /api/v1/budget/assignsets one category's amount andGET/POST /api/v1/budget/auto-assignpreviews and applies target funding, so an authorized client can do the monthly budget - Extract the auto-assign planning into
lib/auto-assign.tsshared by the internal route and the v1 API
v3.4.1
- Let the
/api/v1public API bypass the session-cookie middleware so key-authenticated requests reach the routes instead of being redirected to the login page