No description
Find a file
Natalie eb0d75a126 feat(adult): ⏱ show clip length in collection detail list
Each clip row in the adult collection detail view now shows its runtime, and
the header shows total runtime of the queued set (for planning a session of a
given length). Durations are probed in one background SSH batch via ffprobe on
black (NUL-delimited paths over stdin, so the eporner filenames with spaces/
quotes/brackets pass verbatim), debounced on filter and capped at 400 per batch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 00:56:59 -04:00
.project feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
docs feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
fleet feat(@applications/tv-anarchy): add roku device support 2026-06-09 21:37:34 -07:00
governor feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
mcp feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
packages feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
recommender feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
search feat(search): vendor torrent-search MCP fork (TPB/Nyaa/1337x wrappers, FastAPI+MCP servers) 2026-06-09 05:50:01 -07:00
site feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
Sources feat(adult): ⏱ show clip length in collection detail list 2026-06-30 00:56:59 -04:00
Tests feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
tools feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
v2 feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
.gitignore feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
build-install.sh feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
deploy.sh feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
package.json feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
project.yml feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
README.md feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00
run feat(offline): inline star-to-keep and trash-to-cull on cache rows 2026-06-30 00:12:41 -04:00

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, 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.