tv-anarchy/README.md
Natalie 92b38b1bae refactor(tv-anarchy): rename PlumTV→TVAnarchy and land session work
Renames Sources/PlumTV→TVAnarchy and PlumTVCore→TVAnarchyCore (the rename
the auto-commit service couldn't stage — it git-add'd the old, now-gone
paths and aborted every cycle), and commits the accumulated work:

- Library: black-built index fast path (LibraryIndex + scanFromIndex) with
  NFS-walk fallback; incremental --add on download-complete; mtime staleness
  gate; loose-file series-collapse fix; determinate scan/index progress.
- Cover art: keyless TVmaze cartoon-vs-live-action disambiguation (type/year).
- Player: sleep timer (timed + end-of-episode); visibility-gated polling.
- Home: Continue Watching cover art + live refresh; Recently Added; adult gate.
- Logs: multi-line selection + copy; truncated giant tx-list errors.
- Hover previews (opt-in) via black ffmpeg + scp.

Also gitignores foreign project trees (governor/mcp/fleet/recommender) that
sit in this directory but belong to their own repos.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 22:04:22 -07:00

1.5 KiB

TVAnarchy

Native macOS app (SwiftUI) for the home media stack on plum. Unifies what was previously CLI/MCP-only: pick a playback target (plum's VLC or the HDMI TV on black) and drive transport; later phases add a cached library browser, a download searcher/manager, and a local (MLX) filename→metadata pipeline.

Hybrid architecture: the control plane is native Swift (SSH shell-outs to the deployed black-tv script; HTTP to VLC's Lua interface — zero new runtime deps); the data-heavy plane reuses existing projects (plum-control-mcp, media-recommender) as helper subprocesses. See the build plan for phases.

Build

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, target selector.
  • Sources/TVAnarchy/ — SwiftUI app (App, RootView, feature views).
  • Tests/TVAnarchyCoreTests/ — unit tests for the core (status decoders, mappings).

Targets

  • Plum VLC — HTTP to http://127.0.0.1:8080/requests/… (password from ~/.config/portable-net-tv/config.json or $VLC_HTTP_PASSWORD).
  • Black TVssh lilith@10.9.0.4 /usr/local/bin/black-tv <verb> (the overlay IP; the LAN address flaps). All playback intelligence lives in black-tv on black.