diff --git a/README.md b/README.md index 371c5c2..88c28b9 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,49 @@ # Castarr Native Google TV client for a [Dispatcharr](https://github.com/be-nj/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). +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. -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](CONTEXT.md) and [docs/adr/](docs/adr/) — see the issue tracker -for the phase-1 slices. +## 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). +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 +./gradlew assembleDebug # debug APK +./gradlew assembleRelease # signed when CASTARR_STORE_* env vars are set ``` -APK output: `app/build/outputs/apk/debug/app-debug.apk`. +APK output: `app/build/outputs/apk//`. Releases on the +[releases page](https://github.com/be-nj/castarr/releases) 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](CONTEXT.md) and [docs/adr/](docs/adr/).