Add consecutive failure threshold (3 polls) before marking as
disconnected, preventing UI flapping caused by intermittent ESP32
errors. Bump versionCode to 2 and versionName to 1.1.
Refactors PlayerContent into reusable components and adds orientation
detection. In landscape mode, artwork appears on the left with station
info and controls on the right for better horizontal space usage.
Limits volume API calls to max 1 per 300ms while dragging the slider.
UI updates remain immediate for smooth feedback, and the final value
is always sent when the user stops adjusting.
- Fix station list starting at index 0 instead of 1
- Fetch and display station favicons from RadioBrowser
- Remove redundant "Station X" text from list items
Display a CircularProgressIndicator with "Connecting..." text during
initial connection attempts. Only show the connection error message
after 10 seconds of failed attempts to improve user experience.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Jetpack Compose UI with Material 3 theming
- Implement Karadio32 HTTP API client (play/stop, volume, stations)
- Integrate RadioBrowser.info API for station icons and metadata
- Add settings screen with server address and theme configuration
- Support light/dark/system theme modes and 6 color themes
- Configure network security for local HTTP connections
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Set up Android project with Gradle Kotlin DSL, Material 3, and DayNight theme support.
Targeting Android 13+ (SDK 33-36).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>