83 Commits

Author SHA1 Message Date
cottongin
9b3e943eea feat: add preflight checks and version extraction
Made-with: Cursor
2026-03-11 04:15:37 -04:00
cottongin
2cb901b77c feat: add build.sh scaffold with menu
Made-with: Cursor
2026-03-11 04:15:31 -04:00
cottongin
ba7282ec13 chore: gitignore dist/ and keystore/ directories
Made-with: Cursor
2026-03-11 04:15:29 -04:00
cottongin
f9bc92e766 docs: add build script implementation plan
7 tasks covering gitignore updates, script scaffold, helpers,
keystore management, release/debug builds, clean, and e2e testing.

Made-with: Cursor
2026-03-11 04:12:50 -04:00
cottongin
327c5fffab docs: add build script design document
Captures the design for an interactive bash build script that
handles release signing, keystore management, and APK output.

Made-with: Cursor
2026-03-11 04:10:53 -04:00
cottongin
d381e80828 fix: polish pass — dark mode, notifications, icons, edge-to-edge
- Wrap SettingsScreen in Scaffold to fix invisible text in dark mode
- Fix notification showing raw ICY metadata instead of parsed track info
- Add proper white-on-transparent notification icon
- Create branded adaptive launcher icon (amber tower on BlueGray900)
- Add edge-to-edge support with proper window inset handling
- Add About section to Settings with version and app info
- Enable BuildConfig generation for version display

Made-with: Cursor
2026-03-10 21:18:48 -04:00
cottongin
5a59b3a86b chore: gitignore .cursor directory
Made-with: Cursor
2026-03-10 20:48:53 -04:00
cottongin
c9b1673e95 chore: gitignore chat-summaries and remove from tracking
Made-with: Cursor
2026-03-10 20:45:20 -04:00
cottongin
fdecf053db docs: add chat summaries and plan documents
Made-with: Cursor
2026-03-10 20:17:03 -04:00
cottongin
c0ba23b208 feat: now playing UX overhaul with stream quality and audio improvements
Redesign Now Playing screen with blurred album art background, dominant
color extraction, bounce marquee for long text, cross-fade artwork
transitions, icon-labeled timers, and stream quality badge (bitrate,
codec, SSL). Add StreamInfo propagation from connection through to UI.
Fix MediaCodec PTS spam by providing incrementing presentation timestamps.

Made-with: Cursor
2026-03-10 20:16:43 -04:00
cottongin
6481d74d95 feat: tabbed station libraries, SomaFM integration, and settings panel
Add tabbed playlist UI with SomaFM as a built-in library including live
listener counts, station hiding, and stream quality selection. Implement
settings panel with quality preferences, listening history, and playlist
import/export improvements. Includes DB migrations 1-4, SomaFM seed
data, stream resolver, and now-playing history logging.

Made-with: Cursor
2026-03-10 20:16:09 -04:00
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
6144de6b08 docs: add README
Made-with: Cursor
2026-03-10 03:11:24 -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
cottongin
806ce23254 docs: add implementation plan (15 tasks, TDD, bite-sized steps)
Covers project scaffolding, Room data layer, PLS/M3U import/export,
audio engine stages (IcyParser, Mp3FrameSync, StreamConnection),
engine integration, foreground service with Stay Connected,
Compose UI (station list, now playing, settings), album art
resolution with MusicBrainz fallback chain, and final integration.

Made-with: Cursor
2026-03-10 00:23:39 -04:00
cottongin
c98f0f32fc Add project idea and design document
Design doc covers: custom raw audio pipeline (OkHttp → IcyParser →
Mp3FrameSync → MediaCodec → AudioTrack), foreground service with
aggressive reconnection, Room DB with future-proofed schema, Compose UI,
and ICY metadata with album art fallback chain.

Made-with: Cursor
2026-03-10 00:18:05 -04:00