-
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