Commit graph

9 commits

Author SHA1 Message Date
650d39d598 feat(US-08, US-09, US-10): implement foreground service with notification
PacerService owns AudioEngine and a PARTIAL_WAKE_LOCK so audio
survives screen lock and Doze during long walks. Foreground
notification shows current BPM and a Stop action button.

PacerViewModel becomes AndroidViewModel and communicates with
the service via intents, keeping AudioEngine off the UI process.
Service uses START_NOT_STICKY so it does not restart if killed.
2026-03-09 10:53:40 +00:00
a9bde4ffc7 fix(US-06): match preset buttons to web version
Four presets: 100 (slow), 120 (brisk), 130 (jog), 140 (push),
each showing the BPM and label to match jeena.net/pacer/.
2026-03-09 08:12:39 +00:00
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