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>
2.9 KiB
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/ for the full picture and
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):
./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:
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 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.
Layout
Sources/TVAnarchyCore/— framework: models,PlayerTargetprotocol + 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.jsonor$VLC_HTTP_PASSWORD). - Black (mpv) — mpv JSON-IPC over SSH, endpoints LAN
10.0.0.11→ WG overlay10.9.0.4fallback (the LAN address flaps). Launch/library/stats are delegated to per-device command templates wrapping/usr/local/bin/black-tv(the legacyblacktvkind 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.