feat: add Station List screen with playlists, starring, and import
Made-with: Cursor
This commit is contained in:
29
chat-summaries/2026-03-09_brainstorm-and-plan-summary.md
Normal file
29
chat-summaries/2026-03-09_brainstorm-and-plan-summary.md
Normal 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
|
||||
Reference in New Issue
Block a user