Skip to content

Latest commit

 

History

History
98 lines (65 loc) · 2.58 KB

File metadata and controls

98 lines (65 loc) · 2.58 KB

AI Progress Tracker: CountdownTimerBar (macOS)

Product Goal

Configurable countdown timer in the macOS StatusBar. Fast preset switching, simple options, all UI/logic described for deterministic AI work.


Progress Checklist

1. UI/UX

  • StatusBar icon with timer (rounded square, clock inside)
  • Click icon → popover with two columns: Focus/Rest timers
  • Gear button for options
  • Options UI: About, Sound, Focus Timers (input), Rest Timers (input), Quit
  • Inactive timer: primary System Theme color (dark), background system theme color (white)
  • Active timer: purple border appears
  • Clicking active timer stops timer
  • StatusBar: show 00:00 when no active timer
  • StatusBar timer displayed in outlined pill with perfect UX (no aliasing, no cut edges, matches reference)
  • Popover timer buttons display values as 'Xs' for seconds, 'X' for minutes, for both Focus and Rest (parsing and display logic unified)

2. Timer Logic

  • Countdown timer, display in StatusBar
  • Start timer from preset
  • Auto-stop/reset on finish
  • Timer logic now uses precise decrement (remainingSeconds -= 1), no double-tick bug, countdown is accurate

3. Configurability

  • Change Focus/Rest timer values via options (input string → array)
  • Parse input strings to arrays
  • Persist user settings (UserDefaults)

4. Options

  • About (app info)
  • Sound (toggle)
  • Quit (exit app)

5. Extras

  • Notifications/sounds on timer end

AI Task Breakdown

Step 1: Xcode Setup

  • Ensure Xcode project is SwiftUI, macOS, AppDelegate present

Step 2: StatusBar App

  • NSStatusItem created, icon set
  • Popover on click

Step 3: Timer Model

  • ObservableObject, countdown logic, published state

Step 4: Popover UI

  • Two columns: Focus/Rest, preset buttons
  • Timer display in rounded square
  • Gear/options button

Step 5: Options UI

  • Modal/sheet with:
    • About
    • Sound toggle
    • Focus Timers input (comma-separated)
    • Rest Timers input (comma-separated)
    • Quit

Step 6: Settings Logic

  • Parse input strings to arrays
  • Save/load settings (UserDefaults)

Step 7: Polish

  • Timer logic bugfix: no double-tick, countdown is accurate
  • UX review, bugfixes
  • Release build

Notes for AI Agents

  • Use explicit, deterministic logic for all UI/logic
  • All state changes must be observable and testable
  • UI structure must match attached reference image
  • All options must be accessible via popover
  • No hidden state, all config via UI