tv-anarchy/project.yml
Natalie e2977041aa feat: PlumTV — native macOS player with config-driven hosts
Phase 0/1: SwiftUI app (XcodeGen), PlumTVCore framework, player MVP.
- PlayerTarget protocol + VLCTarget (HTTP) and BlackTVTarget (ssh black-tv)
- config-driven hosts (~/.config/plumtv/hosts.json), seeded plum-vlc + black
- reliability: SSH ControlMaster (5s->~1s/poll), endpoint pinning (LAN->overlay),
  single-flight polling, keep-last-known on transient failure, debounced volume
- Hosts pane shows live connection state; Player has target picker + transport
- unit tests for status decoding

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 20:24:55 -07:00

50 lines
1.5 KiB
YAML

name: PlumTV
options:
bundleIdPrefix: local.lilith
createIntermediateGroups: true
deploymentTarget:
macOS: "14.0"
settings:
base:
SWIFT_VERSION: "5.0" # Swift 6.2 compiler, language mode 5 (relaxed concurrency)
MACOSX_DEPLOYMENT_TARGET: "14.0"
CODE_SIGNING_ALLOWED: "NO" # local dev, unsigned
CODE_SIGNING_REQUIRED: "NO"
ENABLE_HARDENED_RUNTIME: "NO" # needs Process/ssh + localhost+overlay network, no sandbox
targets:
PlumTVCore:
type: framework
platform: macOS
sources: [Sources/PlumTVCore]
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.PlumTVCore
GENERATE_INFOPLIST_FILE: "YES"
PlumTV:
type: application
platform: macOS
sources: [Sources/PlumTV]
dependencies:
- target: PlumTVCore
info:
path: Sources/PlumTV/Info.plist
properties:
CFBundleDisplayName: PlumTV
LSMinimumSystemVersion: "14.0"
LSApplicationCategoryType: public.app-category.video
NSAppTransportSecurity:
NSAllowsLocalNetworking: true # talk to VLC on 127.0.0.1 over http
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.PlumTV
GENERATE_INFOPLIST_FILE: "NO"
PlumTVCoreTests:
type: bundle.unit-test
platform: macOS
sources: [Tests/PlumTVCoreTests]
dependencies:
- target: PlumTVCore
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.PlumTVCoreTests
GENERATE_INFOPLIST_FILE: "YES"