Commit Graph

  • 8075b4e1e1 docs: close QA-B0-04 (@ts-nocheck 38->8) in QA plan + CODE_STANDARDS dev null 2026-07-11 07:20:13 -0500
  • 7ce5fb66f5 refactor(types): type-check server.cts + document the 8 intentional @ts-nocheck files null 2026-07-11 07:17:55 -0500
  • 1f6073823b test(e2e): harden control census against count-driven label churn null 2026-07-11 07:14:05 -0500
  • e0bc82b229 refactor(types): type-check batch 4 — transactions.cts (the 116-error monster) null 2026-07-11 07:08:36 -0500
  • 197fdd1733 refactor(types): type-check batch 3 — 4 large routes (bills/snowball/aboutAdmin/summary) null 2026-07-11 07:03:23 -0500
  • 6c915a62c8 refactor(types): type-check batch 2 — 7 medium routes + 2 real fixes null 2026-07-11 06:57:41 -0500
  • 345a159288 refactor(types): type-check batch 1 — 8 tail routes (spending/auth/dataSources/status/profile/import/notifications/categories) null 2026-07-11 06:53:27 -0500
  • 25404ec4ed docs(qa): record /code-review outcome — 8 fixes + 5 backlog refactors (IMP-CODE-08..11, IMP-UX-03) null 2026-07-10 22:58:41 -0500
  • a17ce13f07 fix(integrity): transaction-wrap three multi-statement writes + review cleanups null 2026-07-10 22:57:10 -0500
  • 2a07e762a2 fix: four review-confirmed regressions in auth + OIDC flows null 2026-07-10 22:57:07 -0500
  • a00013d778 fix(ui): restore row-status tints lost in the tailwind 4 codemod null 2026-07-10 22:49:35 -0500
  • 044bdbe1f1 docs(qa): archive the 2026-07-10 recon+fix cycle; release v0.42.0 null 2026-07-10 22:31:18 -0500
  • 787d3cf694 chore(ops): deploy checklist + standing dependency guards (Phase 8) null 2026-07-10 22:24:42 -0500
  • 64ab37ae39 test(e2e): census gets its own project, ordered before the mutating probes null 2026-07-10 22:23:35 -0500
  • e7974cf4c0 Polish brand presentation null 2026-07-10 19:49:20 -0500
  • 562da73a76 Polish product artwork and branding null 2026-07-10 19:10:42 -0500
  • 92439e74e6 test(e2e): automated per-page control census (Phase 7, IMP-CODE-07) null 2026-07-10 18:21:46 -0500
  • db539545e3 refactor(types): drop @ts-nocheck from the 9 smallest routes (Phase 6 starter) null 2026-07-10 18:17:13 -0500
  • a31a774f95 chore: dead-code sweep — knip now clean and blocking in CI (Phase 5) null 2026-07-10 18:15:04 -0500
  • 10eaf73e90 chore(deps): pin typescript at 6.x (4k deferred) + oidc header comment v5 -> v6 null 2026-07-10 18:08:06 -0500
  • 1627e75b29 chore(deps)!: openid-client 5 -> 6 (4j) null 2026-07-10 18:05:57 -0500
  • 522eaaf101 chore(deps)!: tailwind 3 -> 4 via @tailwindcss/vite (4i) null 2026-07-10 18:03:15 -0500
  • d8365d0e22 chore(deps)!: vite 8 (rolldown) + @vitejs/plugin-react 6 (4h) null 2026-07-10 17:53:27 -0500
  • a1b7011149 fix(standards): make the error-shape ratchet see require(); convert the 4 files it exposed null 2026-07-10 17:53:24 -0500
  • bdff5ad932 refactor(routes/calendar): replace errorFormatter with ValidationError throws null 2026-07-10 17:52:47 -0500
  • e9f52b7472 refactor(routes/user): replace errorFormatter with ApiError/ValidationError throws null 2026-07-10 17:52:32 -0500
  • a325c94dd4 chore(brand): refresh SVG lockup + regenerate all PNG assets null 2026-07-10 17:52:14 -0500
  • 4e3523b2e7 chore(eslint): replace no-restricted-imports with no-restricted-syntax for require() compat null 2026-07-10 17:51:59 -0500
  • b76772b8eb chore(deps): eslint 10 stack — @eslint/js 10, react-hooks 7, react-refresh 0.5 (4f) null 2026-07-10 17:36:50 -0500
  • 8248575b1e chore(deps): low-risk majors — bcryptjs 3, sonner 2, lucide-react 1.x, concurrently 10 (4e) null 2026-07-10 17:35:39 -0500
  • af20d8de07 fix(deps)!: clear both high-severity vulns; CI audit gate raised to high null 2026-07-10 17:34:51 -0500
  • 94ed0b63f3 chore(deps): semver-safe update sweep (4a) null 2026-07-10 17:33:34 -0500
  • 55b2baee5f release: v0.41.1 — passkeys shipped + QA blind-spot fixes + standards unification null 2026-07-10 17:31:27 -0500
  • 88a32a983f feat(auth): passkey / security-key UI — WebAuthn ships end to end null 2026-07-10 17:30:14 -0500
  • 68ca7cbb43 feat(standards): enforcement ratchets — error-shape + no-console; client toApiError null 2026-07-10 17:20:42 -0500
  • c481a5bdbf refactor(routes): throw-pattern for profile, transactions, admin, aboutAdmin null 2026-07-10 17:18:28 -0500
  • d0ab375f9a refactor(auth): throw-pattern for auth.cts (login, TOTP, WebAuthn flows) null 2026-07-10 17:06:08 -0500
  • c0c3c2f347 refactor(routes): throw-pattern for bills.cts (largest route, 43+ sites) null 2026-07-10 17:00:01 -0500
  • 543e94288e refactor(routes): throw-pattern for payments + subscriptions null 2026-07-10 16:53:20 -0500
  • c4219b6020 refactor(routes): throw-pattern for summary, matches, snowball, dataSources null 2026-07-10 16:44:19 -0500
  • a8f8446743 fix(routes): stop leaking raw err.message on 5xx responses null 2026-07-10 16:36:27 -0500
  • 9efa74e12b fix(client): redirect to login when the session expires mid-use null 2026-07-10 16:33:01 -0500
  • e73f51e91b fix(version): sync package.json to v0.41.0 + guard against future drift null 2026-07-10 16:30:41 -0500
  • 73915d38ce refactor(auth): remove dead duplicate admin routes from auth.cts null 2026-07-10 16:30:04 -0500
  • 3c82c30f3c fix(auth): handle requires_webauthn in POST /login — was a 500 self-lockout null 2026-07-10 16:29:08 -0500
  • d9545d6fd5 refactor(categories): adopt Kysely for the /groups query (real production use) null 2026-07-06 16:25:30 -0500
  • 35a0e4262e feat(db): Kysely typed-SQL POC — sync builder, proven parity (Pillar E) null 2026-07-06 16:23:50 -0500
  • 0cad1626b1 test(money): property-based proof of cent-exact invariants (fast-check, Pillar F) null 2026-07-06 16:08:50 -0500
  • b4634a8080 feat(logging): redacted, level-gated logger; migrate all server console.* (Pillar D) null 2026-07-06 16:05:18 -0500
  • a75ff1a466 refactor(routes): monthly-starting-amounts → throw pattern; doc exemplar null 2026-07-06 15:03:52 -0500
  • 3b016d4876 refactor(routes): version → throw pattern; keep graceful update-status fallback null 2026-07-06 15:01:35 -0500
  • 59c2917e1d refactor(routes): analytics + tracker → throw pattern (batch 1) null 2026-07-06 14:59:29 -0500
  • 26d976e272 feat(config): boot-time env validation — fail-fast + prod key warning (Pillar D) null 2026-07-06 14:51:04 -0500
  • 7390c458ed refactor(routes): categories → uniform Express-5 throw pattern (Pillar B template) null 2026-07-06 14:46:32 -0500
  • aee23d6025 feat(security): CI secret-scan + dep-audit, SECURITY.md, auth-coverage test (Pillar C) null 2026-07-06 14:40:17 -0500
  • e7196abbdf fix(security): patch react-router open-redirect (non-breaking audit fix) null 2026-07-06 14:36:18 -0500
  • 5ad3c4e18e refactor(errors): one canonical error handler + process resilience (Pillar B) null 2026-07-06 14:33:38 -0500
  • 88674fa2f5 docs(standards): add CODE_STANDARDS.md + CONTRIBUTING.md null 2026-07-06 14:28:05 -0500
  • 5aaf292b2e ci(enforce): run the full gate in CI + add lefthook pre-commit + Knip null 2026-07-06 14:27:03 -0500
  • f587d09d4a style: apply Prettier across client + server (no behavior change) null 2026-07-06 14:23:53 -0500
  • f65138a114 chore(tooling): add Prettier + editorconfig, extend ESLint to the server null 2026-07-06 14:23:53 -0500
  • c41f1a8a7b feat(tracker): status row border-left indicators, refined metric cards, search filter, and CSS polish null 2026-07-06 13:47:34 -0500
  • df1f61d6cc feat(brand): render the real product glyph SVGs (not inline approximations) null 2026-07-06 13:32:37 -0500
  • 1238ac5b14 feat(demo): full "take it for a ride" seed + surgical, correct removal null 2026-07-06 13:06:47 -0500
  • b25be070ed Add complete brand asset pack null 2026-07-06 12:54:29 -0500
  • 40dfd6e3c1 Polish tracker command header null 2026-07-06 12:54:11 -0500
  • 23f79c31e0 feat(ui): layout refinements — sidebar, nav pill, command palette, brand block null 2026-07-06 12:28:25 -0500
  • f71b433323 feat(ui): refine OnboardingWizard, LoginPage, and SettingsPage null 2026-07-06 12:22:47 -0500
  • 3a14c50e08 chore(brand): update PWA icons, release notes, and About page null 2026-07-06 12:13:01 -0500
  • abb9f7d443 fix(migration): repair server.js/.cts launch + require refs missed in the JS→TS migration null 2026-07-06 12:05:24 -0500
  • 20d2e8965b refactor(server): migrate app entry point to TypeScript (.cts) — server migration 100% null 2026-07-06 11:41:56 -0500
  • 135bd98c6a refactor(server): migrate middleware, workers, and db layer to TypeScript (.cts) null 2026-07-06 11:34:08 -0500
  • 866ba52890 refactor(server): migrate all 29 route controllers to TypeScript (.cts) null 2026-07-06 11:26:50 -0500
  • 409b8a5618 refactor(server): finish services layer — subscription/spreadsheet/oidc/userDbImport → .cts null 2026-07-06 11:22:44 -0500
  • 99e4927640 refactor(server): migrate csvTransactionImportService to TypeScript (.cts) null 2026-07-06 11:20:29 -0500
  • 310eb07b9b refactor(server): migrate trackerService to TypeScript (.cts) null 2026-07-06 11:16:14 -0500
  • 0db5a77adc refactor(server): migrate billsService + notificationService to TypeScript (.cts) null 2026-07-06 11:12:06 -0500
  • 6746d42380 refactor(server): migrate 5 more services to TypeScript (.cts) null 2026-07-06 11:06:05 -0500
  • 5fbc793bcb refactor(server): migrate 6 more services to TypeScript (.cts) null 2026-07-06 11:00:01 -0500
  • 3f891602f9 refactor(server): migrate 6 mid-tier services to TypeScript (.cts) null 2026-07-06 10:54:10 -0500
  • a6c9b6cb1c refactor(server): migrate 8 leaf services + apiError to TypeScript (.cts) null 2026-07-06 10:47:16 -0500
  • 005b0b7b64 refactor(server): migrate 10 services to TypeScript (.cts) null 2026-07-06 10:35:29 -0500
  • 343cc3a36f feat(tracker): persist Overdue/Drift panel collapse + inline hide null 2026-07-06 10:34:39 -0500
  • 384748feeb chore(gitignore): ignore QA_DB_SETUP.md (sensitive info) null 2026-07-06 09:31:25 -0500
  • f909e8f587 fix(docker): regenerate lockfile with npm 10 so `npm ci` works in build null 2026-07-05 19:44:23 -0500
  • 1457de487f feat(security): show a key fingerprint (not the key) in the encryption status null 2026-07-05 19:15:32 -0500
  • f3f46a73f0 chore(deploy): harden Docker/compose from the deployment audit null 2026-07-05 18:54:50 -0500
  • a03216ee55 perf(simplefin): batch sync writes in a transaction + align dedup key null 2026-07-05 18:54:34 -0500
  • 4638d24a1d fix(payoff): correctness, data-integrity & clarity of the payoff simulator null 2026-07-05 18:09:12 -0500
  • c9d90a125f docs(brand): add BRAND.md guidelines null 2026-07-05 17:50:18 -0500
  • 68e57cf45b chore(brand): favicon + PWA manifest follow the new SVG lockup null 2026-07-05 17:50:11 -0500
  • 1c04dfdf8c feat(brand): BrandMark/Wordmark/Lockup consume the new SVGs null 2026-07-05 17:50:04 -0500
  • 720d31b56e feat(brand): SVG lockups + mark + social preview assets null 2026-07-05 17:49:55 -0500
  • 4b81600afe fix(brand): finish the "BillTracker" → "Bill Tracker" rename (display copy) null 2026-07-05 17:31:14 -0500
  • ecd907e508 refactor: remove orphan StatusBadge.tsx (dead-code audit follow-up) null 2026-07-05 17:22:49 -0500
  • 86733d457a refactor: remove verified dead code — orphan file, dead HOC, unused api wrappers null 2026-07-05 17:21:31 -0500
  • 3de91af13d docs: HISTORY + README track the v0.42.0 brand refresh null 2026-07-05 17:19:17 -0500
  • 8ceea06659 chore(lib): trackerUtils + version track the brand refresh null 2026-07-05 17:19:10 -0500
  • 1807456da7 refactor(brand): adopt new primitives in admin + data + dialogs null 2026-07-05 17:19:03 -0500
  • 0eb024de74 refactor(brand): adopt new primitives in pages null 2026-07-05 17:18:56 -0500