BillTracker/client/components
null 343cc3a36f feat(tracker): persist Overdue/Drift panel collapse + inline hide
The Overdue Command Center and Price-Change (drift) panels reset to
expanded on every load — their collapse arrows used local useState. Now
the collapsed state is remembered per-user via two new settings
(tracker_overdue_collapsed / tracker_drift_collapsed), mirroring the
search panel's useSearchPanelPreference pattern. Each panel header also
gains an inline "Hide" control (EyeOff, like the search panel) that writes
the existing tracker_show_* setting and fires an Undo toast; hidden
sections come back from Settings → Tracker Layout.

- services/userSettings.js: allowlist + defaults for the two collapse keys
- TrackerPage: read collapse state, hide handlers with Undo, wire props
- OverdueCommandCenter/DriftInsightPanel: controlled collapse + header hide

Verified: typecheck 0, lint 0 errors, build, and a live settings round-trip
(collapse persists, hide writes, Undo restores, allowlist rejects junk keys).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 10:34:39 -05:00
..
admin feat(security): show a key fingerprint (not the key) in the encryption status 2026-07-05 19:15:32 -05:00
bill-modal refactor(ts): BillMerchantRules → TypeScript 2026-07-04 22:08:05 -05:00
brand feat(brand): BrandMark/Wordmark/Lockup consume the new SVGs 2026-07-05 17:50:04 -05:00
data refactor(brand): adopt new primitives in admin + data + dialogs 2026-07-05 17:19:03 -05:00
layout refactor(brand): wire brand + new primitives through layout chrome 2026-07-05 17:18:31 -05:00
snowball fix(payoff): correctness, data-integrity & clarity of the payoff simulator 2026-07-05 18:09:12 -05:00
tracker feat(tracker): persist Overdue/Drift panel collapse + inline hide 2026-07-06 10:34:39 -05:00
transactions refactor(ts): convert transactions/ + snowball/ dirs to TSX (B14) 2026-07-04 20:39:30 -05:00
ui refactor(brand): adopt new primitives in ui/{button,card,badge} 2026-07-05 17:18:38 -05:00
BillHistoricalImportDialog.tsx refactor(ts): BillMerchantRules → TypeScript 2026-07-04 22:08:05 -05:00
BillMerchantRules.tsx refactor(ts): BillMerchantRules → TypeScript 2026-07-04 22:08:05 -05:00
BillModal.tsx fix(payoff): correctness, data-integrity & clarity of the payoff simulator 2026-07-05 18:09:12 -05:00
BillRulesManager.tsx refactor(ts): convert SearchFilterPanel, RecentlyDeletedBillsDialog, BillRulesManager to TSX (B15) 2026-07-04 20:42:24 -05:00
BillsTableInner.tsx refactor(ts): BillHistoricalImportDialog + BillsTableInner → TypeScript 2026-07-04 22:04:55 -05:00
CalendarFeedManager.tsx refactor(ts): MobileBillRow, IncomeBreakdownModal, CalendarFeedManager → TS 2026-07-04 22:01:49 -05:00
CommandPalette.tsx refactor(ts): CommandPalette → TypeScript (typed Command + Bill results) 2026-07-04 22:09:36 -05:00
ErrorBoundary.tsx refactor: remove verified dead code — orphan file, dead HOC, unused api wrappers 2026-07-05 17:21:31 -05:00
FormatSync.tsx feat(settings): make Currency + Date-format real (plan Tier 2) 2026-07-05 15:54:19 -05:00
IncomeBreakdownModal.tsx refactor(ts): MobileBillRow, IncomeBreakdownModal, CalendarFeedManager → TS 2026-07-04 22:01:49 -05:00
MarkdownText.tsx refactor(ts): convert app-wide common components to TSX (B8) 2026-07-04 19:52:47 -05:00
MobileBillRow.tsx refactor(ts): MobileBillRow, IncomeBreakdownModal, CalendarFeedManager → TS 2026-07-04 22:01:49 -05:00
PageLoader.tsx refactor(ts): convert app-wide common components to TSX (B8) 2026-07-04 19:52:47 -05:00
PageTransition.tsx refactor(ts): convert app-wide common components to TSX (B8) 2026-07-04 19:52:47 -05:00
RecentlyDeletedBillsDialog.tsx refactor(ts): convert SearchFilterPanel, RecentlyDeletedBillsDialog, BillRulesManager to TSX (B15) 2026-07-04 20:42:24 -05:00
ReleaseNotesDialog.tsx refactor(brand): adopt new primitives in admin + data + dialogs 2026-07-05 17:19:03 -05:00
SearchFilterPanel.tsx refactor(brand): adopt new primitives in admin + data + dialogs 2026-07-05 17:19:03 -05:00
SubscriptionCatalogSection.tsx refactor(ts): SubscriptionCatalogSection → TypeScript 2026-07-04 22:12:49 -05:00