siftlode/frontend/src/components
npeter83 f255728f75 feat(stats): per-user API quota attribution + admin usage page
Track who burned how much YouTube API quota. A QuotaEvent audit log (migration
0009) records every spend with the triggering user (NULL = background/system) and
an action label, set via a request/job-scoped contextvar (quota.attribute) so no
call signatures change. User-initiated work (sync subscriptions, unsubscribe,
opt-in recent backfill, manual enrich) attributes to the user; scheduler work to
System, split by action.

- backend: QuotaEvent model + migration 0009; quota.attribute() contextvar;
  record_usage logs events; entry points wrapped (routes/sync, routes/channels,
  scheduler); GET /api/quota/my-usage + GET /api/quota/admin
- frontend: admin-only Stats page (header nav, page=stats) with daily bars +
  per-user breakdown by action and range picker; 'Your API usage' in Settings ->
  Sync for every user

Verified: attribution + endpoints compute correctly; events are per-user vs System.
2026-06-12 02:47:55 +02:00
..
Channels.tsx fix(channels): reflect shared deep-queue state in the full-history chip 2026-06-12 02:29:10 +02:00
ErrorBoundary.tsx feat(ui): notification center with leveled toasts and error capture 2026-06-11 19:26:34 +02:00
Feed.tsx fix(ui): notification UX — outside-click close, toast countdown, hide entry actions 2026-06-11 19:46:58 +02:00
Header.tsx feat(stats): per-user API quota attribution + admin usage page 2026-06-12 02:47:55 +02:00
Login.tsx feat(m5c): onboarding — DB invites, request-access, admin approval, email 2026-06-12 01:43:07 +02:00
NotificationCenter.tsx feat(ui): liquid-glass design system, settings polish, hints, notif fixes 2026-06-11 21:08:35 +02:00
SettingsPanel.tsx feat(stats): per-user API quota attribution + admin usage page 2026-06-12 02:47:55 +02:00
Sidebar.tsx fix(ui): portal tooltips, opaque glass, settings rail+stable height, notif test, channel help 2026-06-11 21:30:25 +02:00
Stats.tsx feat(stats): per-user API quota attribution + admin usage page 2026-06-12 02:47:55 +02:00
SyncStatus.tsx feat: sync status indicator, admin pause/resume, filtered video count 2026-06-11 04:15:25 +02:00
Toaster.tsx feat(ui): liquid-glass design system, settings polish, hints, notif fixes 2026-06-11 21:08:35 +02:00
Tooltip.tsx fix(ui): portal tooltips, opaque glass, settings rail+stable height, notif test, channel help 2026-06-11 21:30:25 +02:00
VideoCard.tsx feat(ui): liquid-glass design system, settings polish, hints, notif fixes 2026-06-11 21:08:35 +02:00