Commit graph

7 commits

Author SHA1 Message Date
4fa725e4ed fix(US-06): fix preset buttons wrapping on 3-digit BPM values
Set fixed button size and zero content padding so numbers
like 130, 140, 160 fit on a single line.
2026-03-09 08:10:30 +00:00
3f38737a30 feat(US-06, US-07): implement retro UI with pulse animation
Dark-themed Compose screen with:
- Large monospace BPM counter and pace slider (40-200 BPM)
- Six preset buttons (80/100/120/130/140/160 BPM)
- Volume slider with percentage readout
- Circular start/stop button with green pulse ring that
  animates on each beat via a coroutine-driven LaunchedEffect
- PacerViewModel owns AudioEngine lifecycle so audio survives
  configuration changes
2026-03-09 08:07:10 +00:00
def69f1a46 feat(US-04, US-05): implement BpmCalculator and AudioEngine
BpmCalculator provides interval math (60000 / bpm) and volume
clamping (0.0-1.0). AudioEngine drives AudioTrack on a dedicated
HandlerThread, scheduling beeps via postDelayed for battery-
efficient background playback.

Audio focus is intentionally never requested so beeps play
alongside other apps without ducking (US-05).
2026-03-09 07:50:28 +00:00
8e08a53d30 test(US-04): add failing tests for BPM interval calculation and volume clamping 2026-03-09 07:49:59 +00:00
4d72536d78 feat(US-03): generate 880 Hz sine wave with BeepGenerator 2026-03-09 07:46:08 +00:00
5897d2b77b test(US-03): add failing tests for 880 Hz beep generation 2026-03-09 07:46:08 +00:00
a5b3f46eae Set up Android project with Kotlin and Jetpack Compose
Initial project structure with manifest configured for foreground
audio service, AudioTrack-based playback, and background operation.
Includes Gradle wrapper, dependency catalog, placeholder icons,
and build instructions for Arch Linux.
2026-03-09 06:51:42 +00:00