50 lines
2.4 KiB
Markdown
50 lines
2.4 KiB
Markdown
# TVAnarchy
|
|
|
|
Native macOS app (SwiftUI) for the home media stack on **plum**, plus an iOS
|
|
companion. Unifies what was previously CLI/MCP-only: pick a **playback device**
|
|
(plum's VLC/QuickTime or the HDMI TV on **black**) and drive transport, browse a
|
|
cached library, search and manage downloads, enrich metadata, and manage the
|
|
device registry — all from one app.
|
|
|
|
**Hybrid architecture:** the control plane is native Swift (HTTP to VLC's Lua
|
|
interface; mpv JSON-IPC over SSH to black — zero new runtime deps); the
|
|
data-heavy plane reuses the vendored helper projects (`mcp/`, `recommender/`,
|
|
`search/`) as subprocesses. See [docs/](docs/README.md) for the full picture and
|
|
[docs/roadmap.md](docs/roadmap.md) for built-vs-designed status.
|
|
|
|
## Build
|
|
|
|
```sh
|
|
brew install xcodegen # if not already present
|
|
xcodegen generate # project.yml -> TVAnarchy.xcodeproj
|
|
xcodebuild -scheme TVAnarchy -destination 'platform=macOS' build
|
|
# or open TVAnarchy.xcodeproj in Xcode and Run
|
|
```
|
|
|
|
`TVAnarchy.xcodeproj` is generated and git-ignored — `project.yml` is the source of truth.
|
|
|
|
## Layout
|
|
|
|
- `Sources/TVAnarchyCore/` — framework: models, `PlayerTarget` protocol + impls,
|
|
library/metadata/torrents/VPN subsystems, device registry.
|
|
- `Sources/TVAnarchy/` — SwiftUI macOS app (App, RootView, feature views:
|
|
Home/Player/Library/Search/Downloads/Metadata/Adult/Devices/Logs/Settings).
|
|
- `Sources/TVAnarchyiOS/` — iOS companion (VLCKit player, library, downloads,
|
|
remote control over an HTTP bridge).
|
|
- `Tests/TVAnarchyCoreTests/`, `Tests/TVAnarchyiOSUITests/` — unit + UI tests.
|
|
- `governor/`, `mcp/`, `recommender/`, `search/` — helper subsystems (own READMEs).
|
|
- `fleet/` — designed-only mesh layer; `tools/` — release/update/stamping scripts;
|
|
`docs/` — cross-cutting documentation.
|
|
|
|
## Playback devices
|
|
|
|
- **Plum VLC** — HTTP to `http://127.0.0.1:8080/requests/…` (password from
|
|
`~/.config/portable-net-tv/config.json` or `$VLC_HTTP_PASSWORD`).
|
|
- **Black (mpv)** — mpv JSON-IPC over SSH, endpoints LAN `10.0.0.11` →
|
|
WG overlay `10.9.0.4` fallback (the LAN address flaps). Launch/library/stats
|
|
are delegated to per-device command templates wrapping `/usr/local/bin/black-tv`
|
|
(the legacy `blacktv` kind auto-migrates to this).
|
|
- **QuickTime** — local, zero-install, AppleScript-driven.
|
|
|
|
Devices live in `~/.config/tv-anarchy/devices.json` and are editable in the
|
|
Devices tab.
|