docs: README reflects the actual feature set
This commit is contained in:
48
README.md
48
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/<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