Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
SwiftUI evaluates the Picker binding getter during target switches when releases is briefly empty; releases[0] trapped (EXC_BREAKPOINT). Use .first?.id ?? "". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>