BillTracker/client/components/admin
null 1f57b22ff8 feat(settings): configurable reminder send-time (plan Tier 5)
The daily reminder job ran at a hardcoded 6 AM. Make the hour configurable:
- dailyWorker: resolveReminderHour() reads the global 'reminder_hour' setting
  (clamp 0–23, default 6) as the single source for both the cron expression and
  the next-run display; the task is stored so rescheduleDailyWorker() can restart
  it live (defensively wrapped so a bad value can't take the worker down).
- notifications admin GET/PUT expose reminder_hour; PUT clamps, persists, and
  live-reschedules the worker.
- Admin Email Notifications card: a "Reminder send time" select (account-wide).

It's a global setting by design — there's one shared daily job, so a per-user
hour would require an hourly-worker refactor (out of scope) and would otherwise
be a dead setting.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 16:10:25 -05:00
..
AddUserCard.tsx refactor(ts): convert admin shared helpers + AddUserCard; drop dead PrivacyAdminCard (B16) 2026-07-04 20:44:40 -05:00
AuthMethodsCard.tsx refactor(ts): convert admin/ cards to TypeScript (AuthMethods, BankSync, Backup, ...) 2026-07-04 21:26:22 -05:00
BackupManagementCard.tsx refactor(ts): convert admin/ cards to TypeScript (AuthMethods, BankSync, Backup, ...) 2026-07-04 21:26:22 -05:00
BankSyncAdminCard.tsx refactor(client): de-duplicate parseUtc + settingEnabled to lib/utils (plan A2/A3) 2026-07-05 14:38:12 -05:00
CleanupPanel.tsx refactor(ts): convert CleanupPanel + UsersTable admin cards to TSX (B17) 2026-07-04 21:17:16 -05:00
EmailNotifCard.tsx feat(settings): configurable reminder send-time (plan Tier 5) 2026-07-05 16:10:25 -05:00
LoginModeCard.tsx refactor(ts): convert LoginModeCard + EmailNotifCard admin cards to TSX (B18) 2026-07-04 21:19:39 -05:00
OnboardingWizard.tsx refactor(ts): convert OnboardingWizard to TSX (B16b) 2026-07-04 20:45:53 -05:00
UsersTable.tsx refactor(ts): convert CleanupPanel + UsersTable admin cards to TSX (B17) 2026-07-04 21:17:16 -05:00
adminShared.tsx refactor(ts): convert admin shared helpers + AddUserCard; drop dead PrivacyAdminCard (B16) 2026-07-04 20:44:40 -05:00