feat: add Station List screen with playlists, starring, and import

Made-with: Cursor
This commit is contained in:
cottongin
2026-03-10 02:42:25 -04:00
parent cacbb0d98d
commit 30b4bc9814
8 changed files with 842 additions and 7 deletions

View File

@@ -0,0 +1,29 @@
# Brainstorm & Implementation Plan — Android 24/7 Radio
**Date:** 2026-03-09
## Task Description
Brainstormed and designed a personal-use Android radio streaming app from an IDEA.md spec. Produced a full design document and a 15-task implementation plan.
## Key Decisions
- **Custom raw audio pipeline** (Approach B) over ExoPlayer, for absolute minimum latency (~26ms per MP3 frame vs ExoPlayer's ~1-2s floor)
- **Pipeline:** OkHttp → IcyParser → Mp3FrameSync → MediaCodec → AudioTrack, single-threaded
- **Kotlin + Jetpack Compose + Material 3**, targeting API 28 (Android 9) minimum
- **Room DB** with future-proofed schema (MetadataSnapshot, ListeningSession, ConnectionSpan tables for future recording/clips)
- **PLS/M3U import/export** with `#EXTIMG` support for station default artwork
- **Album art fallback chain:** MusicBrainz → ICY StreamUrl → EXTIMG → Station favicon → Placeholder
- **Dual timers** on Now Playing: session time (never resets) + connection time (resets on reconnect)
- **Latency indicator** estimated from ring buffer + AudioTrack write/play head delta
## Changes Made
- `docs/plans/2026-03-09-android-247-radio-design.md` — Full design document (6 sections)
- `docs/plans/2026-03-09-android-247-radio-implementation.md` — 15-task implementation plan with TDD steps
- Initialized git repository with 2 commits
## Follow-Up Items
- Execute the implementation plan (15 tasks, starting with project scaffolding)
- Execution options: subagent-driven (this session) or parallel session with executing-plans skill