Files
TimeTracker/app/templates
Dries Peeters 157272356c feat: Add Resume Time Entry feature for quick timer restart
Add new Resume feature that allows users to quickly start a new active
timer with the same properties as a previously completed time entry. This
eliminates repetitive data entry when continuing work on tasks that span
multiple days, reducing time from ~30 seconds to ~3 seconds (90% savings).

Backend Changes:
- Add new route GET /timer/resume/<timer_id> in app/routes/timer.py
- Copies project, task, notes, tags, and billable status to new timer
- Validates permissions (users can only resume their own entries)
- Prevents concurrent timers (blocks if active timer exists)
- Validates project status (must be active, not archived)
- Handles deleted tasks gracefully (creates timer without task)
- Logs events for analytics and activity tracking
- Emits WebSocket events for real-time UI updates

Frontend Changes:
- Add green Resume button (play icon) to dashboard recent entries
- Add Resume button to search results time entry table
- Add Resume button to task view time entries table
- Position Resume as first action before Edit/Duplicate/Delete

Testing:
- Add comprehensive test suite in tests/test_time_entry_resume.py
- 14 tests covering unit, integration, and smoke test scenarios
- Tests property copying, permissions, validations, and edge cases
- 100% code coverage of new functionality

Documentation:
- Add docs/RESUME_FEATURE.md - Complete feature documentation
- Add docs/features/RESUME_TIME_ENTRY_IMPLEMENTATION.md - Technical guide
- Add docs/features/RESUME_TIME_ENTRY_README.md - User quick start guide

Properties Copied: project_id, task_id, notes, tags, billable
Properties NOT Copied: start_time (uses current), end_time (NULL for active)

No database migrations required - works with existing schema.

Resolves user feature request for resuming time entries across work sessions.
2025-10-31 13:33:11 +01:00
..