benjamin b59c3deee4 Channel numbers on the remote pad, EPG column redesign, calmer overlay
- Number keys type the stable channel number (position in Alle Sender,
  shown identically in every view) with a live feedback badge; commits
  after a short pause or as soon as no longer number can match.
- EPG cell is a left-aligned column with a fixed leading edge: title +
  time range, progress under the title, next line only when it differs;
  placeholder programmes (kein Programm / no information) count as no
  EPG data. Star hidden in the favorites view.
- Player overlay: no LIVE dot (reads as recording) and no status word
  while playing; state text only for paused/buffering/error.
- Settings pill gets a resting surface so it reads as a target.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-26 00:27:55 +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%