Both the TV and parent dashboard progress bars now calculate % complete
based on total scheduled block time vs. remaining block + break time,
so the bar only advances while blocks are actively being worked.
TV bar labels changed to "🟢 Start" and "Finish 🏁".
Parent dashboard shows first block's scheduled start time on the left
and a live estimated finish time (now + remaining block/break time) on
the right.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Rewrote Daily Sessions feature to describe the select/start/pause/resume/reset
workflow instead of the old auto-start-on-click behavior
- Added Dashboard Controls table documenting each button's condition and action
- Updated Activity Log to include reset events
- Added utils/timer.py to project structure
- Expanded WebSocket Events table with select, reset, prev_block_* fields
- Removed stale description of single-click auto-start block switching
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Morning Routine, strike event logging, block timer remaining,
and single-click block switching to features
- Remove /schedules as a separate route (schedule management is in /admin)
- Remove docker-compose.override.yml and alembic/ references (neither exists)
- Replace Database Migrations section with accurate description of
the create_all + idempotent ALTER TABLE startup approach
- Update project structure to show new model/router files
- Update setup steps and URL table to match current routes
- Add block_elapsed_seconds to WebSocket events table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add `timezone` column to User model (VARCHAR 64, default UTC) with
idempotent startup migration
- Expose and persist timezone via PATCH /api/users/me
- Fix TimerEvent.occurred_at serialization to include UTC offset marker
(+00:00) so JavaScript correctly parses timestamps as UTC
- Add frontend utility (src/utils/time.js) with timezone-aware
formatTime, getHHMM, getDateInTZ, tzDateTimeToUTC helpers and a
curated IANA timezone list
- Add Settings section to Admin page with timezone dropdown; saves to
both the API and localStorage for the unauthenticated TV view
- Update Activity Log to display and edit times in the user's timezone
- Update TV dashboard clock to respect the saved timezone
- Update README: features, setup steps, usage table, WebSocket events
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>