BillTracker/client/pages
null 5182754e0f feat(tracker): price-change drift detection with amber insight panel
Detects when a bill's recent payments have diverged from its configured
expected amount for 2+ consecutive months and surfaces it in a new
collapsible amber panel on the Tracker page.

- Migration v0.71: adds `drift_snoozed_until` to bills and
  `notify_amount_change` to users
- New `driftService.getDriftReport()`: computes per-bill payment median
  over last 3 months, flags drift above a user-configurable threshold
  (default 5%, minimum $1 delta)
- New `GET /api/bills/drift-report` and `POST /api/bills/:id/snooze-drift`
  routes (registered before `/:id` to avoid routing conflict)
- `runDriftNotifications()` added to daily worker — sends amber digest
  email per user listing all changed bills with old → new amounts
- `notify_amount_change` wired through profile and notifications routes
- `DriftInsightPanel`: collapsible amber panel with per-bill
  strikethrough old → new amount, ±% badge, TrendingUp/TrendingDown
  icons, "Update to $X.XX" (with undo toast) and "Dismiss" (30 days)
  actions; teal palette for price decreases
- `drift_threshold_pct` setting added to SettingsPage Billing Behavior
- "Notify on price changes" toggle added to ProfilePage notifications

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 14:33:55 -05:00
..
AboutPage.jsx v0.28.0 2026-05-16 11:56:38 -05:00
AdminPage.jsx feat: configurable sync interval, auto-match, encryption note, admin link, SimpleFIN hyperlink 2026-05-29 00:28:50 -05:00
AnalyticsPage.jsx style: global readability/theme pass 2026-05-28 23:18:14 -05:00
BillsPage.jsx feat: subscription badges + status improvements + dailyWorker fix (batch 0.33.8.3) 2026-05-29 19:21:46 -05:00
CalendarPage.jsx style: stronger late/missed payment visibility 2026-05-28 23:42:46 -05:00
CategoriesPage.jsx style: global readability/theme pass 2026-05-28 23:18:14 -05:00
DataPage.jsx feat: account monitoring, expanded sync UI, match filtering, error toasts 2026-05-29 01:06:20 -05:00
DataPage.jsx.backup push 2026-05-09 13:03:36 -05:00
HealthPage.jsx style: global readability/theme pass 2026-05-28 23:18:14 -05:00
LoginPage.jsx v0.28.0 2026-05-16 11:56:38 -05:00
PrivacyPage.jsx v0.28.0 2026-05-15 22:45:38 -05:00
ProfilePage.jsx feat(tracker): price-change drift detection with amber insight panel 2026-05-30 14:33:55 -05:00
ReleaseNotesPage.jsx v0.28.0 2026-05-15 22:45:38 -05:00
RoadmapPage.jsx feat(roadmap): size grid from populated lanes + db cleanup fixes 2026-05-30 13:04:27 -05:00
SettingsPage.jsx feat(tracker): price-change drift detection with amber insight panel 2026-05-30 14:33:55 -05:00
SnowballPage.jsx style: global readability/theme pass 2026-05-28 23:18:14 -05:00
StatusPage.jsx feat: 90-day backfill + auto-seed + status page redesign (batch 0.33.8.4) 2026-05-29 19:58:52 -05:00
SubscriptionsPage.jsx feat: subscription badges + status improvements + dailyWorker fix (batch 0.33.8.3) 2026-05-29 19:21:46 -05:00
SummaryPage.jsx style: global readability/theme pass 2026-05-28 23:18:14 -05:00
TrackerPage-bk.jsx push 2026-05-09 13:03:36 -05:00
TrackerPage.jsx feat(tracker): price-change drift detection with amber insight panel 2026-05-30 14:33:55 -05:00