null
5ffe2db85a
test(qa): export→import round-trip preserves money (B9 data integrity)
...
- extract buildUserDbExportFile() from routes/export.js so the SQLite user-DB
export is testable (route behavior unchanged)
- tests/exportImportRoundTrip.test.js: export user A (bill/payment/override) →
import into fresh user B → assert all money survives exactly in cents. Confirms
the export(fromCents)/import(toCents) conversion is symmetric — no 100x drift —
and guards it from regressing.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 22:26:49 -05:00
null
819cfdfa9f
fix(qa): bank-tracking unpaid_this_month gates by occurrence (QA-B5-02)
...
- routes/summary buildBankTracking: fetch unpaid candidates and filter by
resolveDueDate in JS so annual / off-month quarterly bills don't inflate the
SimpleFIN "unpaid this month" metric (completes the occurrence-gating family)
- add tests/summaryBankTracking.test.js (isolated route test)
- docs: archive QA-B5-02; Active Findings Log now empty (0 open)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 21:41:33 -05:00
null
a15ff056b3
fix(qa): Summary excludes bills not due in the month (reconciles with Tracker)
...
- routes/summary: filter the expense list by resolveDueDate so annual and
off-month quarterly bills no longer inflate the monthly total / "monthly
result" — the Summary now agrees with the Tracker for the same month (QA-B5-01)
- add a Tracker<->Summary reconciliation guard in e2e/api.probe.spec.js
- docs: archive QA-B5-01; track QA-B5-02 (SimpleFIN unpaid_this_month residual)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 21:19:35 -05:00
null
35e5d185de
feat(spending): category groups, YNAB-style spending page overhaul, 3-month averages, cover overspending (batch 0.41.0)
2026-06-14 19:21:34 -05:00
null
81ddcb5fc1
feat(banking): bank transactions page with merchant/store matching, transaction matching refactor, bank sync improvements (batch 0.40.0)
2026-06-14 15:15:31 -05:00
null
ee7026872c
feat(banking): bank transactions ledger page with route, sidebar link, and API endpoint
2026-06-12 03:59:42 -05:00
null
d6639f1385
feat(money): cents migration stage 2 — schema flip to integer cents (batch 0.38.4)
2026-06-11 20:12:31 -05:00
null
bf66ab1ee6
feat(money): migrate services to cent-exact money.js helpers (batch 0.38.3)
2026-06-10 20:14:13 -05:00
null
947fa3bdf8
feat(auth): add per-username rate limiter, migrate dates to local-time utils (batch 0.38.1)
2026-06-10 19:42:51 -05:00
null
38c8bbd472
feat(server): add trust proxy, CSRF HTTPS detection, error formatting, dates util (batch 0.38.0)
2026-06-10 19:37:19 -05:00
null
f3bcf6cdec
fix(api): transaction matching logic improvements (batch 0.37.5)
2026-06-08 21:07:42 -05:00
null
426b0fd932
fix(admin): admin/profile routes and services
2026-06-07 21:18:02 -05:00
null
79b51b1c9a
fix(bank-sync): transaction matching, services, and worker updates
2026-06-07 20:07:27 -05:00
null
31be51e77f
fix(bank-sync): admin config, matching, and worker updates
2026-06-07 19:41:17 -05:00
null
13e41aec74
feat: iCal feed for bills (Apple/Google calendar export)
2026-06-07 15:53:46 -05:00
null
e1082145ab
feat: tracker payment flow and mobile row improvements
2026-06-07 14:49:39 -05:00
null
4f5a3d0cff
feat: bank sync section, data sources route, subscription page updates, package updates
2026-06-07 02:03:00 -05:00
null
ab5e3fbf1f
feat: profile settings UI, auth service refactor, schema migration, route tests
2026-06-07 01:17:49 -05:00
null
6811eb8be5
feat: payment accounting service, SQL schema + migration, backend route refactor, test updates
2026-06-07 01:05:48 -05:00
null
88cb9d5340
feat: summary overdue highlighting, tracker row visual polish, bill table cleanup
2026-06-06 23:29:34 -05:00
null
4dd01c13c4
feat: live transaction search in merchant rules, link-import preference toggle, tracker row tweaks
2026-06-06 23:04:53 -05:00
null
a1e6a308cf
feat: existing bill matching in recommendations, feedback tracking, broad-merchant rejection, annual price detection
2026-06-06 21:15:08 -05:00
null
3a034ddeb7
feat: subscription catalog with bank descriptors, custom per-user descriptors, catalog→bill linking
2026-06-06 20:02:13 -05:00
null
fc3709337c
feat: bulk unmatch — review similar payees, batch-undo with optional rule removal
2026-06-06 19:15:06 -05:00
null
7455dff5b8
feat: v0.37.0 — auto-learn merchant rules, ambiguous match protection, session hashing, geolocation opt-in
2026-06-06 18:30:21 -05:00
null
b4779c9eda
feat: auto-match review panel with undo — last 7d provider_sync payments
2026-06-06 17:34:09 -05:00
null
9a2a7ecdee
feat: v0.94 — session token hashing, geolocation opt-in privacy setting
2026-06-06 17:00:22 -05:00
null
840620efe2
feat: v0.93 — stable provider keys, per-payment interest tracking with once-per-month gating
2026-06-06 16:34:20 -05:00
null
a2ac241cd3
refactor(sync): centralize sync constants in bankSyncConfigService, wire through config/UI
2026-06-06 15:51:56 -05:00
null
a73d0afe07
feat(encryption): support TOKEN_ENCRYPTION_KEY env var with startup migration
2026-06-06 15:27:45 -05:00
null
80b5d56010
feat(sync): rate limit sync/backfill endpoints to 10 per 15 minutes
2026-06-06 15:08:33 -05:00
null
99abca9868
security: WebAuthn / FIDO2 hardware security key 2FA
2026-06-05 22:05:23 -05:00
null
2c9cc37593
feat: copy last month budgets, monthly income section on summary page
2026-06-04 21:57:42 -05:00
null
3a19303d4d
fix: SQLite timestamp timezone ambiguity — convert to proper UTC ISO strings
2026-06-04 21:42:34 -05:00
null
df9d6fbf6d
fix: backup enabled setting key mismatch
2026-06-04 21:35:02 -05:00
null
3623cadcf6
feat: income breakdown modal with ignore/restore, summary chart click, includeIgnored query param
2026-06-04 21:19:25 -05:00
null
910febae63
feat: bill rules manager page, merchant re-normalization, match suggestion scoring fix, cleanup pruning
2026-06-04 20:45:11 -05:00
null
743379fc94
feat: spending toggle per category, empty state, income query, auto-enable on rule creation
2026-06-04 20:01:51 -05:00
null
3f0078b930
feat: spending income section, rules manager, error handling improvements
2026-06-04 19:53:38 -05:00
null
ac5d6c6625
feat: spending tracking page with category breakdowns
2026-06-04 04:31:25 -05:00
null
653dd72e12
feat: TOTP 2FA for login & profile setup flow
2026-06-04 04:10:14 -05:00
null
a6b2e8bb87
fix: login mode card update, OIDC service improvements, auth middleware refinements
2026-06-04 03:53:38 -05:00
null
26b6fb13e5
feat: login history with geolocation, encryption, new device alerts, session detection
2026-06-04 03:38:32 -05:00
null
3745ef79b7
docs: update HISTORY.md with bank tracking, merchant rules, and UI changes
2026-06-04 02:48:32 -05:00
null
5689fc95c2
feat: historical import batch selection UI, backend endpoint, DB migration v0.83
2026-06-04 02:36:36 -05:00
null
19421c06fc
fix: historical import backend routes and service adjustments
2026-06-04 02:20:30 -05:00
null
d2d3045afe
feat: historical payment import dialog for bank merchant rules
2026-06-04 02:05:15 -05:00
null
ccdd16a626
fix: summary route and trackerService refinements
2026-06-04 01:27:00 -05:00
null
da4642dbd0
feat: late-attribution prompt for bank payments that crossed month boundary
2026-06-04 00:06:16 -05:00
null
278521a612
fix: bank matching returns bill names, reactive Sync button in BillModal, error handling in merchant rule service
2026-06-03 23:29:30 -05:00