The timer system is the core functionality of Pomo Vibes, providing users with a visual and functional countdown timer for Pomodoro sessions.
- Issue #2: 20 Minute Countdown Timer with Circular Progress Bar
- Issue #9: Add Play/Pause and Reset Buttons to Timer
- Issue #10: Add Settings Cog Icon and Adjustable Timer Dialog
Visual Requirements:
- Round/circular timer display prominently centered
- Large, readable numbers showing time in MM:SS format
- High contrast text for accessibility
- Responsive sizing across devices
Functional Requirements:
- Default duration: 20 minutes (20:00)
- Counts down to 00:00
- Updates every second with smooth transitions
- Maintains accuracy during pause/resume cycles
Visual Requirements:
- Surrounds the timer display
- Animated progress indication
- Smooth visual transition as time decreases
- Color coordination with selected emotional state
Functional Requirements:
- Represents percentage of time remaining
- Updates in real-time with timer countdown
- Resets appropriately when timer is reset
- Maintains visual consistency during pause states
Play/Pause Button:
- Functionality:
- Start timer from stopped/paused state
- Pause timer when currently running
- Toggle between play
▶️ and pause ⏸️ icons
- Visual Design:
- Clearly distinguishable icons
- Accessible button sizing
- Visual feedback on interaction
Reset Button:
- Functionality:
- Immediately reset timer to default duration (20:00 or custom setting)
- Works regardless of current timer state
- Resets progress bar to full
- Visual Design:
- Reset/reload icon 🔄
- Distinct from play/pause button
- Confirmation not required for immediate reset
Settings Access:
- Cog wheel icon ⚙️ for settings access
- Non-intrusive placement that doesn't interfere with timer
- Accessible but secondary to main timer controls
Duration Adjustment Dialog:
- Interface Elements:
- Modal dialog overlay
- Clear title and instructions
- Increment/decrement controls for minutes
- Direct input field with validation
- Apply and Cancel buttons
- Validation Rules:
- Minimum duration: 5 minutes
- Maximum duration: 60 minutes
- Input validation with user-friendly error messages
- Default value restoration on invalid input
Settings Persistence:
- Custom duration settings persist across app sessions
- Changes apply to future timer sessions
- Current running timer not affected unless user confirms reset
- User sees default 20:00 timer (or custom duration if set)
- User optionally selects emotional state via emotoji
- User clicks play button to start countdown
- Timer begins countdown with progress bar animation
- User can pause/resume timer as needed
- User can reset timer to restart session
- Visual progress feedback via progress bar and countdown
- Background adapts to selected emotional state
- Timer reaches 00:00
- Session completion indication (visual/audio feedback)
- Timer ready for next session
- User clicks settings cog
- Duration adjustment dialog appears
- User modifies timer duration within valid range
- Settings apply to subsequent sessions
- Smooth animation at 60fps for progress bar
- Accurate timing with minimal drift
- Responsive interface interactions
- Efficient state management
- Keyboard navigation support
- Screen reader compatibility
- High contrast mode support
- Touch-friendly interactive elements
- Coordinates with emotional state system for visual theming
- Integrates with background image system
- Maintains state consistency across all app features
- Timer accurately counts down from set duration to zero
- Visual feedback is smooth and engaging
- Controls are intuitive and responsive
- Settings persist appropriately across sessions
- User can easily customize and control their focus sessions