cottongin
5dd7a411ed
fix: refactor player state machine to eliminate race conditions
...
Introduce a Connecting state so the UI reflects user intent immediately,
centralize navigation in MainActivity via state transitions, and replace
the pauseRequested volatile flag with controller state as single source
of truth.
Made-with: Cursor
2026-03-10 05:15:31 -04:00
cottongin
49bbb54bb9
fix: star visibility, station switching, skip-ahead, and latency optimizations
...
- Star icons now use distinct tint colors (primary vs faded) for clear state
- Station switching no longer races — old playback job is cancelled before new
- Skip-ahead drops ~1s of buffered audio per tap via atomic counter
- Custom SocketFactory with SO_RCVBUF=16KB and TCP_NODELAY for minimal TCP buffering
- Catch-up drain: discards pre-buffered frames until network reads block (live edge)
- AudioTrack PERFORMANCE_MODE_LOW_LATENCY for smallest hardware buffer
Made-with: Cursor
2026-03-10 04:41:40 -04:00
cottongin
c143483f33
feat: wire album art to UI and handle Android 13+ notification permission
...
Made-with: Cursor
2026-03-10 03:11:09 -04:00
cottongin
89b58477c9
feat: add album art resolution with MusicBrainz and fallback chain
...
Made-with: Cursor
2026-03-10 03:07:32 -04:00
cottongin
20daa86b52
feat: add Settings screen with export, history, and track search
...
Made-with: Cursor
2026-03-10 02:49:38 -04:00
cottongin
7678b2b12a
feat: add Now Playing screen with dual timers and latency indicator
...
Made-with: Cursor
2026-03-10 02:48:26 -04:00
cottongin
30b4bc9814
feat: add Station List screen with playlists, starring, and import
...
Made-with: Cursor
2026-03-10 02:42:25 -04:00
cottongin
cacbb0d98d
feat: add Material 3 theme and screen navigation
...
Made-with: Cursor
2026-03-10 02:37:26 -04:00
cottongin
ca7b757812
feat: add foreground playback service with Stay Connected reconnection
...
Made-with: Cursor
2026-03-10 02:30:48 -04:00
cottongin
cfb04d3200
feat: integrate audio engine pipeline with MediaCodec and AudioTrack
...
Made-with: Cursor
2026-03-10 02:18:36 -04:00
cottongin
7814d682f6
feat: add HTTP stream connection with ICY header support
...
Made-with: Cursor
2026-03-10 02:14:46 -04:00
cottongin
fd73caf181
fix: correct MP3 frame header values in tests
...
Made-with: Cursor
2026-03-10 02:01:46 -04:00
cottongin
3d4d163508
feat: add MP3 frame synchronizer with re-sync and validation
...
Made-with: Cursor
2026-03-10 01:51:24 -04:00
cottongin
1a3a58b8f0
fix: add metaint validation and mid-metadata truncation test
...
Made-with: Cursor
2026-03-10 01:22:31 -04:00
cottongin
45a946f829
feat: add ICY metadata parser with artist/title extraction
...
Made-with: Cursor
2026-03-10 01:18:51 -04:00
cottongin
bb14a6af53
fix: sanitize station names and validate URLs in parsers
...
Made-with: Cursor
2026-03-10 01:12:46 -04:00
cottongin
fcf02c2595
feat: add M3U/PLS import and export with EXTIMG support
...
Made-with: Cursor
2026-03-10 01:10:07 -04:00
cottongin
b3d22650c7
feat: add Room entities, DAOs, database, and DataStore preferences
...
Made-with: Cursor
2026-03-10 01:04:55 -04:00
cottongin
2a9b21b67f
feat: scaffold Android project with dependencies
...
Made-with: Cursor
2026-03-10 00:49:16 -04:00