Commit graph

5 commits

Author SHA1 Message Date
2b3feb4e9a chore: License the project under GPL-3.0-or-later
In preparation for publishing the source publicly: without a license
file the code would default to all-rights-reserved, so nobody could
legally use or modify it. Add the GPL v3 text, a license section in
the README, and REUSE-style SPDX headers in every Kotlin source and
Gradle build script so per-file licensing is machine-readable.

The bundled JetBrains Mono font stays under its own SIL Open Font
License 1.1, whose text must accompany redistribution. OFL.txt lives
at the repo root rather than next to the fonts because aapt rejects
non-font files in res/font.
2026-06-10 15:29:51 +00:00
22fc569874 feat(US-16): configure release signing and minification
Signing config reads from keystore.properties (gitignored).
Release build has minification enabled. The keystore and
properties file are excluded from version control.

To build a signed release APK:
  ./gradlew assembleRelease
Output: app/build/outputs/apk/release/app-release.apk
2026-03-09 12:24:44 +00:00
c646709438 test(US-11): add failing tests for settings persistence 2026-03-09 12:04:14 +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
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