Commit Graph

  • b714715ddb refactor(brand): adopt new primitives in tracker cards null 2026-07-05 17:18:49 -0500
  • c2b6a7d1b4 refactor(brand): adopt new primitives in ui/{button,card,badge} null 2026-07-05 17:18:38 -0500
  • 36834e6625 refactor(brand): wire brand + new primitives through layout chrome null 2026-07-05 17:18:31 -0500
  • 4898987a18 feat(brand): shared app-primitives UI kit null 2026-07-05 17:18:23 -0500
  • dfee7f9401 feat(brand): new brand module + logo assets null 2026-07-05 17:18:04 -0500
  • 1f57b22ff8 feat(settings): configurable reminder send-time (plan Tier 5) null 2026-07-05 16:10:25 -0500
  • 0e6f04c7bc feat(settings): sign out of other devices (plan Tier 7) null 2026-07-05 16:05:59 -0500
  • 7e5e012434 feat(settings): default landing page (plan Tier 6) null 2026-07-05 16:03:01 -0500
  • 01030fe7d0 feat(settings): configurable "Due soon" window (plan Tier 4) null 2026-07-05 16:00:32 -0500
  • 0f24016bcf feat(settings): first day of week (plan Tier 3) null 2026-07-05 15:57:35 -0500
  • 0fa80a77ef feat(settings): make Currency + Date-format real (plan Tier 2) null 2026-07-05 15:54:19 -0500
  • e2d4a9f703 feat(settings): theme "System" + reduce-motion (plan Tier 1) null 2026-07-05 15:50:37 -0500
  • 1d73c8f13e fix(settings): invalidate ['settings'] cache on save so tracker toggles apply null 2026-07-05 15:06:57 -0500
  • 21651b3f67 feat(tracker): a11y live regions + keyboard-shortcut hint (plan D/C5) null 2026-07-05 15:00:16 -0500
  • 0abe861928 feat(tracker): multi-select bulk pay/skip (plan C3) null 2026-07-05 14:56:34 -0500
  • 88874f3f3d feat(tracker): export/print the month + calendar link (plan C1/C2) null 2026-07-05 14:49:09 -0500
  • 313aafcb79 refactor(tracker): move settings/simplefin onto React Query + defer search (plan B) null 2026-07-05 14:43:13 -0500
  • 03009e2a83 refactor(client): de-duplicate parseUtc + settingEnabled to lib/utils (plan A2/A3) null 2026-07-05 14:38:12 -0500
  • 3973560e92 refactor(tracker): remove dead code and unreferenced files (plan A1) null 2026-07-05 14:35:13 -0500
  • db1be4b0bd fix(tracker): pin-Due sort uses reconciled status; add filtered-empty state null 2026-07-05 14:35:03 -0500
  • ef566b12f0 feat(server-ts): paymentValidation → .cts, proving the CJS-module path (Phase 2) null 2026-07-05 13:51:37 -0500
  • 3f9a6cf23e feat(server-ts): utils/dates → TypeScript (.mts); utils/ dir now TS (Phase 2) null 2026-07-05 13:48:44 -0500
  • 200c6373f5 feat(server-ts): migrate the money boundary to TypeScript on Node's native runtime (Phase 2) null 2026-07-05 13:44:04 -0500
  • 1d3b7435a0 feat(server): upgrade Express 4.18 → 5.2 (Phase 2) null 2026-07-05 13:25:00 -0500
  • a6bc85b18c perf(ui): useDeferredValue on the Bills + Subscriptions search filters (Phase 2 stack leverage) null 2026-07-05 13:16:21 -0500
  • 57e7ede670 refactor(ts): close the 4 client any's + document a best-effort catch (Phase 1b) null 2026-07-05 13:13:32 -0500
  • 398caec29d fix(resilience): client fetch timeout + global-handler headersSent guard (Phase 1b) null 2026-07-05 13:10:00 -0500
  • 896dfd8230 test(security): cover totpService 2FA + document Phase 1 milestone null 2026-07-05 13:05:34 -0500
  • 637ad85512 test(money): cover the bank-sync payment creator + spending budgets (Phase 1) null 2026-07-05 13:03:32 -0500
  • 3c2f6ca3b5 test(money): lock in paymentValidation — the gate for every payment (Phase 1) null 2026-07-05 12:59:57 -0500
  • b3ce334987 test(security): lock in authService — password verify, hashed sessions, rotation (Phase 1) null 2026-07-05 12:57:53 -0500
  • b95f771d18 test(security): lock in encryptionService — the secret-at-rest crown jewel (Phase 1) null 2026-07-05 12:55:51 -0500
  • 03d15bd061 docs(reference): document v0.41.0 Track A/B/C/D in engineering manual null 2026-07-05 12:32:02 -0500
  • 1df4b1bf87 refactor(ts): move User to @/types + type auth endpoints; add code to 500 (Track C/D) null 2026-07-05 12:26:11 -0500
  • 65a477cab1 refactor(ts): type snowball projection + settings responses (Track C) null 2026-07-05 12:16:03 -0500
  • 6bb8c63d39 refactor(ts): type the subscriptions API responses (Track C) null 2026-07-05 12:11:36 -0500
  • 8265b4a97f refactor(ts): type the spending API responses (Track C) null 2026-07-05 12:06:40 -0500
  • b267599ba5 refactor(ts): type the bank-ledger API responses (Track C) null 2026-07-05 12:02:28 -0500
  • c223f62408 test(money): cross-surface reconciliation harness (Track B) null 2026-07-05 11:55:52 -0500
  • dd5bf92fc1 fix(money): manual payment path flags suspected dupes (409) w/o losing legit ones (Track A) null 2026-07-05 11:51:06 -0500
  • 60848964b6 fix(money): make every payment balance-mutation atomic (Track A) null 2026-07-05 11:44:45 -0500
  • 6a2db3780f docs(reference): refresh engineering manual for v0.40.0 / TS+React 19 null 2026-07-05 11:19:14 -0500
  • 3ac0509e96 docs(qa): retarget QA_PLAN recon/census to .tsx after the TS migration null 2026-07-05 11:06:15 -0500
  • 47a9ba98cb docs(ts): mark Phase B complete — every client .jsx converted to .tsx null 2026-07-04 23:49:43 -0500
  • 8229d21ab8 refactor(ts): SubscriptionsPage → TypeScript (final .jsx page) null 2026-07-04 23:48:06 -0500
  • aa9c357fdf refactor(ts): BillsPage → TypeScript null 2026-07-04 23:35:48 -0500
  • 3b1e7e4da9 refactor(ts): SpendingPage → TypeScript null 2026-07-04 23:29:39 -0500
  • d49a2ae4dc refactor(ts): BankTransactionsPage → TypeScript null 2026-07-04 23:20:47 -0500
  • 18eaec04e2 refactor(ts): SnowballPage → TypeScript (debt attack order + projections + plans) null 2026-07-04 23:12:57 -0500
  • d559f4b00b refactor(ts): TrackerPage → TypeScript (the home page) null 2026-07-04 23:06:46 -0500
  • dbf3c42d62 refactor(ts): CalendarPage → TypeScript (money map + grid + cashflow + snowball glance) null 2026-07-04 22:58:34 -0500
  • 82bd13036a refactor(ts): ProfilePage → TypeScript; widen AuthContext setUser to accept updaters null 2026-07-04 22:53:51 -0500
  • 818df6d410 refactor(ts): AnalyticsPage → TypeScript (SVG charts + forecast); drop unused Skeleton import null 2026-07-04 22:48:28 -0500
  • f15046bce3 refactor(ts): CategoriesPage → TypeScript (category list + drag-reorder + expand) null 2026-07-04 22:44:39 -0500
  • 8c9702adbe refactor(ts): SummaryPage → TypeScript (React Query summary + drag-reorder expenses) null 2026-07-04 22:41:25 -0500
  • c5d2aeda29 refactor(ts): PayoffPage → TypeScript (debt payoff simulator) null 2026-07-04 22:36:24 -0500
  • 7a33bd1d56 refactor(ts): StatusPage → TypeScript (server-health dashboard, loose response shape) null 2026-07-04 22:33:15 -0500
  • 18d0c0bdb9 refactor(ts): SettingsPage → TypeScript (auto-save settings + tracker layout toggles) null 2026-07-04 22:29:16 -0500
  • b912fd74be refactor(ts): RoadmapPage → TypeScript (issues board + dev activity log) null 2026-07-04 22:25:35 -0500
  • 14f1fedfd0 refactor(ts): LoginPage → TypeScript (auth-mode/TOTP/change-pw/privacy flows) null 2026-07-04 22:23:31 -0500
  • 42e67dfdeb refactor(ts): DataPage → TypeScript (section routing + data-section orchestration) null 2026-07-04 22:21:48 -0500
  • 2f4f76db83 refactor(ts): HealthPage → TypeScript + export makeBillDraft's SourceBill return null 2026-07-04 22:19:39 -0500
  • 57cac30029 refactor(ts): useAutoSave test → .test.ts; completes components/hooks conversion null 2026-07-04 22:14:09 -0500
  • b48a34ee33 refactor(ts): SubscriptionCatalogSection → TypeScript null 2026-07-04 22:12:49 -0500
  • 2f62d6383a refactor(ts): CommandPalette → TypeScript (typed Command + Bill results) null 2026-07-04 22:09:36 -0500
  • d4eb48de92 refactor(ts): BillMerchantRules → TypeScript null 2026-07-04 22:08:05 -0500
  • 4d380c8da0 refactor(ts): BillHistoricalImportDialog + BillsTableInner → TypeScript null 2026-07-04 22:04:55 -0500
  • 41e847a33d refactor(ts): MobileBillRow, IncomeBreakdownModal, CalendarFeedManager → TS null 2026-07-04 22:01:49 -0500
  • af1a28c00b docs(ts): record admin/ + data/ dir completion and the CountPill find in HISTORY null 2026-07-04 21:57:10 -0500
  • 80fb0043b6 refactor(ts): convert ImportSpreadsheetSection to TypeScript — data/ dir complete null 2026-07-04 21:56:04 -0500
  • 0cc5cbd957 refactor(ts): convert BankSyncSection to TypeScript null 2026-07-04 21:46:55 -0500
  • 5a2e37fd61 refactor(ts): convert data/ import + matching sections to TypeScript null 2026-07-04 21:42:18 -0500
  • dfedb75e6d refactor(ts): convert data/ shared + small sections to TypeScript null 2026-07-04 21:33:25 -0500
  • a8496a9c64 refactor(ts): convert admin/ cards to TypeScript (AuthMethods, BankSync, Backup, ...) null 2026-07-04 21:26:22 -0500
  • c9b5f93569 refactor(ts): convert LoginModeCard + EmailNotifCard admin cards to TSX (B18) null 2026-07-04 21:19:39 -0500
  • a9a58d8aa2 refactor(ts): convert CleanupPanel + UsersTable admin cards to TSX (B17) null 2026-07-04 21:17:16 -0500
  • bb3e9f551c docs(history): TS migration Phase A/B + 'what TypeScript caught' achievements null 2026-07-04 21:13:37 -0500
  • ea531f06c7 refactor(ts): convert OnboardingWizard to TSX (B16b) null 2026-07-04 20:45:53 -0500
  • 7f4ef20b7c refactor(ts): convert admin shared helpers + AddUserCard; drop dead PrivacyAdminCard (B16) null 2026-07-04 20:44:40 -0500
  • 9ad8cc7e8a refactor(ts): convert SearchFilterPanel, RecentlyDeletedBillsDialog, BillRulesManager to TSX (B15) null 2026-07-04 20:42:24 -0500
  • 6a9b8b3cb8 refactor(ts): convert transactions/ + snowball/ dirs to TSX (B14) null 2026-07-04 20:39:30 -0500
  • f34f03af51 refactor(ts): convert content pages to TSX (B13) null 2026-07-04 20:32:06 -0500
  • 5e803f4547 refactor(ts): convert AdminPage + SubscriptionCatalogPage to TSX (B12) null 2026-07-04 20:14:30 -0500
  • 73be95d12d refactor(ts): convert BillModal to TSX (B11) — bill-modal feature done null 2026-07-04 20:10:48 -0500
  • 31ff6adbd9 refactor(ts): convert bill-modal sub-components to TSX (B10) null 2026-07-04 20:03:09 -0500
  • 8a4b51915f refactor(ts): convert SummaryCard + ReleaseNotesDialog to TSX (B9) null 2026-07-04 19:54:40 -0500
  • 8937dc5e25 refactor(ts): convert app-wide common components to TSX (B8) null 2026-07-04 19:52:47 -0500
  • 609de2a946 refactor(ts): convert the app shell to TSX (B7) null 2026-07-04 19:49:57 -0500
  • c2097efc49 refactor(ts): convert TrackerRow + TrackerBucket to TSX (B6) — tracker/ dir done null 2026-07-04 19:42:26 -0500
  • f4f1dadaab refactor(ts): convert MobileTrackerRow to TSX (B5) null 2026-07-04 19:36:01 -0500
  • ee31513dc9 refactor(ts): convert Drift + Overdue panels to TSX (B4) null 2026-07-04 19:32:39 -0500
  • c1ec0a4f2e refactor(ts): convert tracker dialogs + cards to TSX (B3) null 2026-07-04 19:29:42 -0500
  • 2cac46fda2 fix(ts): scan .ts/.tsx in Tailwind content globs (B2 follow-up) null 2026-07-03 23:11:36 -0500
  • 1f18a720c4 refactor(ts): convert all UI primitives + ThemeContext to TSX (B2) null 2026-07-03 22:57:22 -0500
  • dc675fbecd refactor(ts): convert tracker leaf components to TSX (B1) null 2026-07-03 22:31:35 -0500
  • 4af738f947 feat(ts): type the shared Category API response (A4) null 2026-07-03 22:27:08 -0500
  • 337ad95a3e feat(ts): type Bill + Payment API responses with branded Dollars (A2-A3) null 2026-07-03 22:24:35 -0500
  • 3c7a55c3a1 feat(ts): type the Tracker API response with branded Dollars (A1) null 2026-07-03 22:21:45 -0500
  • d02d3c9c72 refactor(ts): convert React Query hooks to TypeScript (TS10) null 2026-07-03 22:13:05 -0500
  • 9b805e60b2 refactor(ts): convert the API client to TypeScript (TS9) null 2026-07-03 22:09:04 -0500