- Add @custom-variant dark in globals.css for class-based dark mode
- Add ThemeToggle component with localStorage persistence and system preference fallback
- Inject blocking inline script in layout to prevent flash on load
- Apply dark: variants across all components (layout, site-nav, home-dashboard, expense-workspace, paycheck-workspace, recurring-expense-manager) and page headers
- Create openspec/changes/theming-dark-mode with proposal, design, and tasks artifacts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Wrap getDashboardSnapshot in try/catch; return JSON 500 instead of crashing
- Add prisma/seed.ts with realistic Feb + Mar 2026 data: biweekly $2,850 pay
schedule, $2,430 rent, expenses across all 8 categories
- Update Dockerfile and backup route for host Ollama runtime
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>