be-nj 487ad1254d
Some checks failed
Build TV app / build (push) Failing after 2s
0.2.2 + 0.3.0: remote threading fix, phone-first onboarding, ten-foot settings, self-healing errors, in-app updater, group filter
Squashed history rewrite: earlier revisions of the docs carried private
hostnames; placeholders throughout history now.

- Fix phone remote threading (welcome/get_state/broadcast) — remote connects
  and mirrors channels, Now/Next, favorites
- Phone-first onboarding (ADR-0007): one QR, server URL + IdP login on the
  phone (closes #11)
- Ten-foot settings + Erweitert sub-screen (closes #14), TvTextField D-pad
  focus fix (closes #9)
- EPG grid envelope parsing, Now/Next live (closes #10)
- Self-healing error states (closes #13), in-app updater (closes #12)
- Channel group filter chips fed by Dispatcharr groups

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

Castarr

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

Features

  • Live TV channel list with Now/Next EPG and progress, zapping via channel/D-pad keys, fullscreen playback (ExoPlayer, HLS + MPEG-TS) with a minimal auto-hiding overlay
  • Login without typing: the TV shows a QR code and a user code; confirm on your phone at your identity provider (OIDC device authorization grant). The only thing entered on the TV is the Dispatcharr URL.
  • Dispatcharr source: channels, groups and EPG via the fork's Bearer-authenticated API; favorites are stored per user on the backend (long-press a channel to star it, filter chip in the list)
  • Stream profiles: pick Standard / Passthrough / audiofix / 720p (list comes from the backend) — applied per stream request
  • Generic source fallback: any M3U (+ optional XMLTV) URL works without a login — ErsatzTV, Threadfin, Tunarr, plain playlists
  • Phone remote (optional): scan the QR under Einstellungen; play/pause, zapping, volume, channel list with Now/Next and favorite toggling in the browser — no app install, rate-limited pairing code as fallback
  • Physical remote keys and Google Assistant keep working (Media3 MediaSession, TV app quality guidelines TV-PC/TV-PP/TV-VC)

Building

Requires JDK 17+ and the Android SDK (platform 35). A JDK toolchain is resolved automatically (foojay) if the host only has a JRE.

./gradlew assembleDebug     # debug APK
./gradlew assembleRelease   # signed when CASTARR_STORE_* env vars are set

APK output: app/build/outputs/apk/<variant>/. Releases on the releases page are signed; install over an existing debug build requires uninstalling first (signature change).

Backend

The full feature set needs the Dispatcharr fork with OIDC support (be-nj/Dispatcharr): its /api/accounts/oidc/status/ endpoint hands the app the issuer and public device-flow client id. Configuration lives in CONTEXT.md and docs/adr/.

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%