applySnapshot was always setting isPaused = false and blockStartedAt =
Date.now() regardless of the actual timer state, causing a paused block
to appear running whenever the dashboard was reloaded.
- Add is_paused field to DashboardSnapshot schema
- Dashboard endpoint derives is_paused by checking whether the last
start/resume/pause event for the current block is a pause
- applySnapshot now reads is_paused from the snapshot instead of
resetting to false, and only sets blockStartedAt when the block is
actually running (not paused)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>