- GET /api/paychecks returns virtual data (id: null) without writing to
DB when no records exist for the month
- First interaction (bill toggle, OTE add, actual add) lazily calls
POST /api/paychecks/generate to persist the paycheck
- New PATCH /api/paychecks/:id to update gross and net
- Regenerate/refresh button syncs gross/net from current Settings
- Inline pencil edit for gross/net on each paycheck column header
- 'preview' badge and info banner shown for unsaved months
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>