-
5ffe2db85a
test(qa): export→import round-trip preserves money (B9 data integrity)
dev
null
2026-07-02 22:26:49 -0500
-
c31d8cbe9e
fix(qa): escape bill name in reminder email HTML — XSS via bill name (B14-04)
null
2026-07-02 22:18:05 -0500
-
2050e13407
fix(qa): notification _push export was clobbered → "Send test push" 500'd (B10-01)
null
2026-07-02 22:11:34 -0500
-
972daa9b07
docs(qa): mark B-UI batch probed (primitive behavior spec added)
null
2026-07-02 22:04:14 -0500
-
5fe1f6499b
test(qa): B-UI primitive behavior spec (dialog/select/disabled)
null
2026-07-02 22:03:52 -0500
-
18c7025f3a
docs(qa): record Cycle 1 sign-off — 12 findings fixed, automated re-run clean
null
2026-07-02 21:57:50 -0500
-
ccf89e6df1
test(qa): summary skip-exclusion + per-month override regression (B2/B5)
null
2026-07-02 21:56:46 -0500
-
ad474f1ac1
test(qa): admin/status authorization probe + B10/B11/B12 coverage notes
null
2026-07-02 21:48:05 -0500
-
3c1d000bab
test(qa): production-build smoke (B15) — validates split chunks at runtime
null
2026-07-02 21:45:25 -0500
-
819cfdfa9f
fix(qa): bank-tracking unpaid_this_month gates by occurrence (QA-B5-02)
null
2026-07-02 21:41:33 -0500
-
1bd282f47b
fix(qa): Analytics "expected" gates by occurrence (matches Tracker/Summary)
null
2026-07-02 21:23:37 -0500
-
a15ff056b3
fix(qa): Summary excludes bills not due in the month (reconciles with Tracker)
null
2026-07-02 21:19:35 -0500
-
72d06aa2d8
fix(qa): cent-exact toCents rounding + money.js test coverage
null
2026-07-02 21:11:12 -0500
-
98c8fab176
fix(qa): resolve a11y nested-interactive on Categories & Snowball rows
null
2026-07-02 21:02:15 -0500
-
127b69ffc2
chore(qa): vendor chunk splitting, remove unused markdown deps, remove dead totalInterestPaid (batch 0.41.0 QA cleanup)
null
2026-07-02 20:47:50 -0500
-
029c227685
fix(qa): seed demo data amounts, bill amount validation, negative USD format, a11y aria-labels, Playwright E2E setup (batch 0.41.0 QA)
null
2026-07-02 20:36:09 -0500
-
bdbf231538
docs: add v0.41.0 changelog entry
null
2026-06-16 04:15:16 -0500
-
35e5d185de
feat(spending): category groups, YNAB-style spending page overhaul, 3-month averages, cover overspending (batch 0.41.0)
null
2026-06-14 19:21:34 -0500
-
81ddcb5fc1
feat(banking): bank transactions page with merchant/store matching, transaction matching refactor, bank sync improvements (batch 0.40.0)
null
2026-06-14 15:15:31 -0500
-
dc951ab59c
chore: extract mobile app to Mobile-BillTracker repo
null
2026-06-13 20:00:24 -0500
-
ee7026872c
feat(banking): bank transactions ledger page with route, sidebar link, and API endpoint
null
2026-06-12 03:59:42 -0500
-
d9a441dff6
feat(settings): auto-save preferences with live save status (batch 0.39.0)
null
2026-06-12 02:08:42 -0500
-
8ef794a94a
feat(settings): safe-to-spend toggle, move notifications from Profile to Settings, fix dark-mode readability
null
2026-06-12 01:52:48 -0500
-
dc49eb9633
feat(cashflow): safe-to-spend projection with timeline, vitest setup, package upgrades
null
2026-06-12 01:32:28 -0500
-
d0835b86ab
chore(cleanup): remove legacy/public HTML files, retire /legacy route, update docs and About page
null
2026-06-11 23:50:27 -0500
-
c6708982a9
fix(utils): extract localDateString to shared lib, replace .toISOString().slice() pattern across client
null
2026-06-11 23:40:22 -0500
-
4b74a456d9
chore(release): bump to v0.38.4, update HISTORY, remove Stage 2 from FUTURE
null
2026-06-11 20:14:02 -0500
-
d6639f1385
feat(money): cents migration stage 2 — schema flip to integer cents (batch 0.38.4)
null
2026-06-11 20:12:31 -0500
-
bf66ab1ee6
feat(money): migrate services to cent-exact money.js helpers (batch 0.38.3)
null
2026-06-10 20:14:13 -0500
-
19d0e653a3
feat(utils): add money.js with integer-cents arithmetic helpers (batch 0.38.2)
null
2026-06-10 20:09:25 -0500
-
947fa3bdf8
feat(auth): add per-username rate limiter, migrate dates to local-time utils (batch 0.38.1)
null
2026-06-10 19:42:51 -0500
-
38c8bbd472
feat(server): add trust proxy, CSRF HTTPS detection, error formatting, dates util (batch 0.38.0)
null
2026-06-10 19:28:54 -0500
-
57e4d8039b
chore(client): update PageTransition spacing
null
2026-06-09 20:51:32 -0500
-
5b0c50809c
fix(ui): clean up excess CSS in index.css (batch 0.37.6)
null
2026-06-08 21:27:55 -0500
-
f3bcf6cdec
fix(api): transaction matching logic improvements (batch 0.37.5)
null
2026-06-08 21:07:42 -0500
-
ca514e5f26
fix(tracker): BillModal save/close race and pending badge logic
null
2026-06-08 16:33:48 -0500
-
fab4945d50
fix(tracker): bank pending counts, overdue center cleanup, and payment source labels
null
2026-06-08 16:05:31 -0500
-
626459322f
fix(tracker): live sync label truncation and due_day fallback on partial update
null
2026-06-08 12:24:51 -0500
-
80ef1208ae
fix(tracker): update payment progress and bills service (batch 0.37.1)
null
2026-06-08 11:54:47 -0500
-
ce596c6dc2
feat(mobile): add Capacitor mobile app (batch 0.35.1)
null
2026-06-08 11:35:33 -0500
-
426b0fd932
fix(admin): admin/profile routes and services
null
2026-06-07 21:18:02 -0500
-
79b51b1c9a
fix(bank-sync): transaction matching, services, and worker updates
null
2026-06-07 20:07:27 -0500
-
31be51e77f
fix(bank-sync): admin config, matching, and worker updates
null
2026-06-07 19:41:17 -0500
-
68aa5eff31
fix(snowball): plan history and bill modal updates
null
2026-06-07 19:13:16 -0500
-
3f93a7dca2
fix(tracker): page update
null
2026-06-07 18:38:05 -0500
-
12bcd1d8f3
fix(auth): oidc service updates
null
2026-06-07 18:05:09 -0500
-
9354af8cb8
fix(tracker): tracker page adjustments
null
2026-06-07 17:50:17 -0500
-
f2f9ad83ac
fix(tracker): search filter and bucket improvements
null
2026-06-07 17:33:31 -0500
-
f7ad1c1ebb
fix(tracker): table columns and settings improvements
null
2026-06-07 17:23:14 -0500
-
955fb96aec
fix(tracker): budget display and payment progress fixes
null
2026-06-07 17:03:29 -0500
-
71e783a799
fix(ui): calendar settings improvements
null
2026-06-07 16:52:50 -0500
-
34fcbb0d92
fix(tracker): payment progress tracking fixes
null
2026-06-07 16:44:40 -0500
-
13e41aec74
feat: iCal feed for bills (Apple/Google calendar export)
null
2026-06-07 15:53:46 -0500
-
ec7869abbc
feat: framer-motion page transitions and UI polish
null
2026-06-07 15:14:09 -0500
-
72d95065d0
fix: mobile tracker row and bucket rendering polish
null
2026-06-07 14:58:37 -0500
-
e1082145ab
feat: tracker payment flow and mobile row improvements
null
2026-06-07 14:49:39 -0500
-
3b555e4d8e
chore: shadcn/ui component updates (batch)
null
2026-06-07 14:29:09 -0500
-
6d60eebe1a
chore: dependency updates and UI fixes (batch)
null
2026-06-07 14:23:19 -0500
-
3b0f267ab3
fix: SubscriptionsPage polish
null
2026-06-07 02:06:31 -0500
-
4f5a3d0cff
feat: bank sync section, data sources route, subscription page updates, package updates
null
2026-06-07 02:03:00 -0500
-
d9cf499dba
feat: search filter panel component, search preference persistence, page integration
null
2026-06-07 01:28:35 -0500
-
ab5e3fbf1f
feat: profile settings UI, auth service refactor, schema migration, route tests
null
2026-06-07 01:17:49 -0500
-
6811eb8be5
feat: payment accounting service, SQL schema + migration, backend route refactor, test updates
null
2026-06-07 01:05:48 -0500
-
1ebb2da50a
feat: tracker bucket rollover logic, utils cleanup, HISTORY update
null
2026-06-07 00:41:07 -0500
-
f1817a520b
fix: status service edge case handling
null
2026-06-07 00:24:43 -0500
-
8c2ecdb313
fix: subscription service error handling, SubscriptionsPage cleanup
null
2026-06-07 00:11:00 -0500
-
be95910ac2
feat: admin UX cleanup, bills page reordering, subscriptions page cadence sort + in-place edits, summary polish
null
2026-06-06 23:53:53 -0500
-
88cb9d5340
feat: summary overdue highlighting, tracker row visual polish, bill table cleanup
null
2026-06-06 23:29:34 -0500
-
bb04966bbc
fix: historical import loading state, remove stray catalog export
null
2026-06-06 23:17:08 -0500
-
4dd01c13c4
feat: live transaction search in merchant rules, link-import preference toggle, tracker row tweaks
null
2026-06-06 23:04:53 -0500
-
12d869d400
feat(subscriptions): cadence sort toggle, in-place bill edits after save
null
2026-06-06 22:25:58 -0500
-
83e6afa9e6
feat(subscriptions): simplified SubscriptionsPage, inline actions, improved matching card, Service Catalog route
null
2026-06-06 22:07:55 -0500
-
a1e6a308cf
feat: existing bill matching in recommendations, feedback tracking, broad-merchant rejection, annual price detection
null
2026-06-06 21:15:08 -0500
-
422d8550bb
feat: recommendation detail dialog with evidence, ambiguity badges, transaction list
null
2026-06-06 21:05:01 -0500
-
b2f8f5ef66
feat: dedicated subscription catalog page, evidence badges, price display in recommendations
null
2026-06-06 20:44:54 -0500
-
3a034ddeb7
feat: subscription catalog with bank descriptors, custom per-user descriptors, catalog→bill linking
null
2026-06-06 20:02:13 -0500
-
17478ebd9c
1
null
2026-06-06 19:47:05 -0500
-
fc3709337c
feat: bulk unmatch — review similar payees, batch-undo with optional rule removal
null
2026-06-06 19:15:06 -0500
-
f69f778821
fix: use express-rate-limit ipKeyGenerator for sync limiter fallback
null
2026-06-06 18:38:40 -0500
-
7455dff5b8
feat: v0.37.0 — auto-learn merchant rules, ambiguous match protection, session hashing, geolocation opt-in
null
2026-06-06 18:30:21 -0500
-
b4779c9eda
feat: auto-match review panel with undo — last 7d provider_sync payments
null
2026-06-06 17:34:09 -0500
-
6e211c8366
fix: v0.94 migration signature — run(db) → run()
null
2026-06-06 17:17:10 -0500
-
04f5f922b7
chore: remove stale tracked backup/DB files; add /bills.db to gitignore
null
2026-06-06 17:01:06 -0500
-
9a2a7ecdee
feat: v0.94 — session token hashing, geolocation opt-in privacy setting
null
2026-06-06 17:00:22 -0500
-
840620efe2
feat: v0.93 — stable provider keys, per-payment interest tracking with once-per-month gating
null
2026-06-06 16:34:20 -0500
-
a2ac241cd3
refactor(sync): centralize sync constants in bankSyncConfigService, wire through config/UI
null
2026-06-06 15:51:56 -0500
-
a73d0afe07
feat(encryption): support TOKEN_ENCRYPTION_KEY env var with startup migration
null
2026-06-06 15:27:45 -0500
-
9e38a6b252
feat(tracker): show last_updated age on balance cards and summary pill
null
2026-06-06 15:17:27 -0500
-
80b5d56010
feat(sync): rate limit sync/backfill endpoints to 10 per 15 minutes
null
2026-06-06 15:08:33 -0500
-
7d42d119c0
fix(simplefin): retry transient fetch failures (3 attempts, 1s/2s backoff)
null
2026-06-06 15:06:12 -0500
-
a66fe13bc6
fix(simplefin): add 30s AbortSignal timeout to fetch calls
null
2026-06-06 14:54:00 -0500
-
6168a71d8f
fix(sync): move auto-match into syncDataSource after merchant rules
null
2026-06-06 14:41:27 -0500
-
a97d656e92
fix(match-suggestions): use rejection timestamps and share late attribution helper
null
2026-06-06 14:06:28 -0500
-
99abca9868
security: WebAuthn / FIDO2 hardware security key 2FA
null
2026-06-05 22:05:23 -0500
-
2c9cc37593
feat: copy last month budgets, monthly income section on summary page
null
2026-06-04 21:57:42 -0500
-
3a19303d4d
fix: SQLite timestamp timezone ambiguity — convert to proper UTC ISO strings
null
2026-06-04 21:42:34 -0500
-
df9d6fbf6d
fix: backup enabled setting key mismatch
null
2026-06-04 21:35:02 -0500
-
a2266635f4
perf: worker N+1 batching, status runtime DB persistence, 'use strict'
null
2026-06-04 21:32:28 -0500
-
81ae41325a
feat: move income modal to tracker page, clickable bank card
null
2026-06-04 21:22:20 -0500
-
3623cadcf6
feat: income breakdown modal with ignore/restore, summary chart click, includeIgnored query param
null
2026-06-04 21:19:25 -0500