tv-anarchy/README.md
Natalie 4a2ceb9781 feat(offline): inline star-to-keep and trash-to-cull on cache rows
Surface the existing pin (keep-from-cull) and per-file delete actions as
visible inline buttons on each offline cache row instead of context-menu-only:
a star toggles protection from auto-cull (and restore-if-missing), a trash
culls that file early. Aligns wording/icons to the star metaphor.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 00:12:41 -04:00

74 lines
2.9 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 & dev loop
The easiest way is the `./run` wrapper (see its `usage` and comments for all targets):
```sh
./run # (or ./run dev) — stamp + xcodegen + Debug build + install + relaunch
./run test
./run clean
./run governor fleet status
./run mcp
./run bridge
./run typecheck
./run test:all
./run deploy
...
```
For manual / Xcode:
```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
```
See [docs/operations.md](docs/operations.md) for full build/install/deploy flows, release cuts, and per-platform update.
`TVAnarchy.xcodeproj` is generated and git-ignored — `project.yml` is the source of truth.
## Pillars (v2)
**Watch · Download · Net** — product organization and full repo correlation:
[`v2/README.md`](v2/README.md).
## 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.