docs: README reflects the actual feature set
This commit is contained in:
48
README.md
48
README.md
@@ -1,21 +1,49 @@
|
|||||||
# Castarr
|
# Castarr
|
||||||
|
|
||||||
Native Google TV client for a [Dispatcharr](https://github.com/be-nj/Dispatcharr)
|
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
|
backend: live IPTV with a full D-pad UI (Compose for TV), login via the OIDC
|
||||||
(Authentik), per-user favorites, and an optional phone remote paired by QR
|
device flow (Authentik), per-user favorites, per-stream output profiles, and
|
||||||
code (served by the TV itself, no phone app install).
|
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
|
## Features
|
||||||
(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
|
- **Live TV** channel list with Now/Next EPG and progress, zapping via
|
||||||
for the phase-1 slices.
|
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
|
## 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/<variant>/`. 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/).
|
||||||
|
|||||||
Reference in New Issue
Block a user