Commit Graph

  • 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