benjamin fb7803e6fb Fix startup crash: listener methods collided with Activity lifecycle
ControlServer.Listener declared onPause()/onResume(); implementing them in
MainActivity overrode Activity.onPause/onResume without super calls, so the
first resume died with SuperNotCalledException. Renamed to onPauseCast/
onResumeCast (matching onStopCast). Also drop R8 optimize variant.
Verified on a Sony Bravia (Android TV 14). Version 0.1.1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 00:48:39 +02:00

Castarr

Native Google TV client for a Dispatcharr backend: live IPTV with a full D-pad UI, login via OIDC device flow (Authentik), per-user favorites, and an optional phone remote paired by QR code (served by the TV itself, no phone app install).

Status: bootstrap. The code base was imported from the NodeCast prototype (phone-remote-first, M3U standalone) and is being reshaped per the decisions in CONTEXT.md and docs/adr/ — see the issue tracker for the phase-1 slices.

Building

Requires JDK 17+ and the Android SDK (platform 35).

./gradlew assembleDebug

APK output: app/build/outputs/apk/debug/app-debug.apk.

Description
Native Google TV IPTV client for Dispatcharr — phone-first onboarding, QR remote, OIDC device flow
Readme 88 MiB
0.11.5 Latest
2026-08-26 12:07:24 +02:00
Languages
Kotlin 83.3%
HTML 9.3%
Shell 4.9%
Python 2.5%