A new Watch Party feature lets you schedule, share, and host synchronized playback sessions with friends. Create a party from any playlist, share an invite code, and watch together across devices.
New tabbed navigation makes it faster to switch between Library, Channels, Search, Discover, and Guide.
Poster images now appear throughout the app — search results, playlists, channels, history, and more — replacing the old screen caps lists.
A new Import Issues view helps you find and fix unmatched media in your library, and movie title parsing has been significantly improved for tricky directory names and edition suffixes.
Admin library maintenance moves into Client Settings — kick off scans and cleanups, watch progress, and confirm results without needing access to the Server UI.
Music libraries are now properly scanned, with type-aware audio routing and full orphan cleanup for songs, albums, and artists.
Multi-file movies now support edition selection (Theatrical, Director's Cut, etc.) directly from the detail view.
The streaming pipeline has been split into independent decode and encode stages for better reliability, fixing BDMV deadlocks, audio sync issues, and an AAC encoder crash on certain files.
Remote Access Invites let you onboard devices outside your local network with a simple invite code.
A redesigned "By Feel" mood-based discovery feature uses multi-select preference rounds and SIMD-accelerated similarity for smarter recommendations.
On tvOS, the server list has been redesigned with a cinematic hero layout, and grid items now feature a custom green focus glow.
Dozens of UI refinements and bug fixes round out the release.
Tabbed Navigation
Paged tab navigation replaces the vertically stacked root sections with a swipeable tab strip. Video, Audio, and Photos are consolidated into a single Channels tab. Channel Guide, Discover, and Search each get their own tab for quick access. The tab strip sits at the bottom of the screen on iOS and visionOS, and at the top on macOS
Focus-based tab navigation on tvOS adapts the tab strip for Siri Remote interaction with debounced focus changes, proper focus recovery after content rebuilds, and native TabView integration
Library tab opens by default on launch, with identity-based tab tracking that preserves your position
Watch Party
Schedule a watch party from any playlist using the party.popper toolbar button. Pick a name, a start time, and optional pre-party / post-party messages, and the server generates a synchronized playback schedule for everyone who joins
Share with an invite code — every party has an 8-character code that other devices can enter to join. The Server UI lets you click the code to copy a shareable invite message containing the party date, code, and join URL
Lobby with content lineup lets members see who else is connected and preview the playlist for the upcoming party. The lineup uses TMDB poster art for each item rather than screencap thumbnails for a polished, recognizable look
Edit existing parties from the same toolbar button used to create them — change the name, start time, or pre/post-party text. Live parties allow name-only edits; ended and cancelled parties are read-only
Cancel or delete parties from the host UI with a confirmation step. Cancellation cleans up cleanly and notifies connected members
Auto-start playback when a party transitions to live — participants don't need to tap anything; the lobby switches directly into synchronized playback
Real-time push notifications replace the previous polling loop, so the lobby refreshes instantly when the host edits the party, and shows an alert if the party is deleted while you're waiting in it
Member display names use the alias from the host's Devices list (e.g. "Living Room Apple TV") rather than the raw client name, and refresh in real time when devices are renamed
Server "Watch Parties" section in the Channels tab lists all parties — scheduled, in lobby, live, ended, and cancelled — sorted by lifecycle priority. Each row shows the party name, lifecycle badge, timeline context, member count, and clickable invite code
Server-side editor sheet for each party lets you edit the name and start time, jump-start a scheduled party with a Start Now button, delete it (with confirmation), and view the underlying playlist with each item's title and formatted duration
Optional intro/outro bumpers can be configured in server settings — a 10-second pre-roll/post-roll asset that's automatically appended to every watch party schedule
Auto-recovery on server restart rebuilds the schedules of any pending live parties (including bumper-aware regeneration), or marks them ended if the content has already finished
tvOS start-time picker uses a focusable preset selector with options ranging from 5 minutes to 24 hours from now, since DatePicker isn't available on tvOS, with the computed absolute start time displayed for confirmation
Discovery & Browsing
Discovery Wizard redesigns the Discovery Hub with step-stack navigation for a more guided recommendation experience
"By Feel" mood-based discovery redesigned with multi-select preference rounds that dynamically terminate when enough signal has been gathered. The recommendation engine now uses tally-based vote propagation with SIMD-accelerated similarity scoring, replacing the previous binary-choice approach. Candidate selection is biased toward metadata-rich movies for better propagation reach across the library
Recently Added discovery feature lets you browse newly imported content filtered by category
Spotify-style genre cards replace the previous pill buttons with a tabbed layout for richer genre browsing
Random/alphabetical sort toggle in genre browse view for flexible content exploration
Poster Images & Visual Polish
Poster images throughout the app now appear in library search results, playlists, favorites, channels, history, actor browse, genre browse, and discovery recommendations. The previous text-only lists have been replaced with rich thumbnail grids
Server-side thumbnail proxy routes all client poster images through the server, improving load times and reducing external network requests from clients
Tap-to-expand poster viewer across all detail views lets you view full-screen poster art with a single tap
Adaptive shadow on poster images in movie, show, and album detail views for added depth
Branded poster placeholder eliminates layout jumps on detail views while images load
Alphabetical search results sorted with leading articles ("The", "A", "An") dropped for natural ordering
Pill-shaped Recent Searches with an increased history limit from 10 to 25
Library Import & Metadata
Import Issues view surfaces unmatched media in the Library tab, letting you see which files failed to match, delete them with full cleanup, or submit them for review. Absolute file paths are shown for easy identification
Improved movie title parsing handles dot-separated directory names, extracts IMDB IDs from NFO sidecar files, falls back to grandparent directories and base titles for edition suffixes, matches mid-string years, and tries both "and" and "&" variants when searching
Metadata re-match with visual progress shows a progress indicator during library re-scans when backfilling metadata for previously unmatched content
Duplicate TMDB match consolidation during re-match prevents the same movie from appearing multiple times
Mini-series support for Part-numbered files in show locations (e.g., "Part 1", "Part 2" recognized as episodes)
Media naming guide added as a reference for library import best practices
Music location scanning is now enabled — adding or restoring music files in a music location is properly detected by library scans (previously music locations were skipped entirely)
Type-aware audio routing during scans prevents misclassification: audio files in movie or show directories are now skipped instead of being indexed as songs, and music files in catch-all "general" locations are routed correctly
Music cleanup cascade — deleting a song's last file now cascades through to remove the song, then its album (if no other songs remain), then its artist (if no other albums remain). Library cleanup also performs an orphan sweep that removes any song/album/artist/movie/show/episode records left stranded by older deletions
Cleanup affected summary now includes artist counts alongside movies and shows, with sample lists showing affected artist names
Per-provider configurable rate limits in the metadata provider edit sheet — TMDB now defaults to 4 req/sec (matching their actual quota); other providers default to 1 req/sec, and any provider can be tuned individually. Custom rates appear in orange on the provider row
Verify API key button in the provider edit sheet to validate a key without saving the form
Edit support for keyless providers like MusicBrainz and LRCLib so you can adjust their rate limits even though they have no API key
Fix same-name TV shows merging into a single record during import when they are actually different series
Fix TV show metadata matching when the directory name includes a year suffix
Fix franchise-numbered movies matching the wrong TMDB result (e.g., "Rocky 3" no longer matching "Rocky")
Fix movie file misassignment caused by year-insensitive metadata matching
Database integrity migration to FK CASCADE and triggers for referential integrity
Library Maintenance
Admin Library Scanning controls in Client Settings let admin devices kick off a server library scan, watch the discovery and scanning phases update every five seconds, see file counts update live, and cancel a running scan — all from the client without needing access to the Server UI
Admin Library Cleanup controls let admin devices start a cleanup scan, review the affected media list when results come back, and either confirm or cancel the cleanup. Empty cleanup results auto-acknowledge and return to idle
Admin gating is enforced on every maintenance endpoint server-side; the entire maintenance UI is hidden for non-admin sessions
Database version safety check — if a Server build with an older schema tries to open a database that's already been migrated by a newer Server build, it now refuses to start and shows a clear "Database Incompatible" alert with both version numbers and a Quit button, preventing data corruption from schema mismatches
Multi-File Movies
Multi-file movie edition selection on the movie detail view lets you choose between different editions (e.g., Theatrical, Director's Cut) when multiple files are associated with a single movie
Smart part labels in the multi-file picker automatically detect and display meaningful labels from filenames
Bulk management of multi-file movies in the View Issues popup with section grouping and delete support
Streaming Pipeline
Split decode/encode pipeline architecture separates the GStreamer transcoding pipeline into independent decode and encode actors, improving modularity and enabling future per-component scaling. BDMV playback has been migrated to the new architecture
Fix BDMV playback resolving an actor deadlock during pipeline preroll and DTS-HD MA audio corruption
Fix SEGV crash in videoconvertscale caused by an unbounded post-decode queue
Fix audio/video sync regression introduced during the pipeline split, with real-time pacing added to the decode distribution loop
Fix AAC encoder failures on certain source files where the decode-side high-pass DC blocker was producing non-finite PCM samples that crashed the encoder. The DC blocker is now bypassed for AAC, and the encode pipeline includes a sanitizer that normalizes any NaN/Inf values and clamps over-range samples before pushing buffers to the encoder, so encoder stability is preserved even with malformed source audio
Remote Access
Remote Access Invite system for onboarding devices that are not on the local network. Create invite codes on the server, optionally pre-assign device aliases, and have remote clients join via the invite flow without needing local discovery
Remote Access toggle in Settings > Options for easily enabling or disabling remote connectivity
Fix tailnet reconnection and ping timeout issues for remote invite connections
Increased firewall diagnostic frequency from 1 hour to 1 minute for faster troubleshooting
tvOS
Cinematic server list redesigned with a hero image and shelf layout for a more immersive tvOS experience
Redesigned server management with compact grid items and gradient cards
Custom focus glow for poster images, actor grid items, and cast member cards using a green highlight effect
Library tab grid restyled to match the server list shelf cards — folder and file items now use the same green focus glow as poster grids, with a tap glow pulse animation when selected. The text label sits outside the card so it's no longer trapped inside the focus platter, and folder/thumbnail fills are bumped to a higher opacity so the focus shadow renders correctly
Smaller grid item labels reduced from title3 to callout font for a cleaner grid appearance
Disconnect confirmation alert prevents accidentally exiting a server connection
Redesigned Add to Playlist popup with improved focus behavior and spacing
Fix Downloads navigation showing a warning triangle instead of the downloads view
Fix remote connect failing with a mkdir permission error on tvOS
Various focus navigation fixes including tab focus syncing, focus recovery after content rebuilds, and preventing the Channel Guide from stealing focus on tab appearance
Client UI
Redesigned DownloadsView with Form layout and corrected show title grouping
Redesigned MediaDetailView with Form layout matching the video playback view for visual consistency
Screencap thumbnail added to episode detail view for a quick visual preview
Per-episode watch progress indicator in ShowDetailView shows a small pie chart on each episode row indicating how much of that episode has been watched on the current device. Episodes with no play history show no indicator
Consistent toolbar button ordering across movie detail, episode detail, and video playback views so transitions between screens feel natural
Favorites moved into Playlists tab with the root toolbar button removed for a cleaner top-level layout
Settings tab added to the client tab bar with cache clearing functionality
Polished Settings layout with idle-state dividers separating the action buttons from status content in the Library Scanning, Library Cleanup, and Caches sections
Top-aligned grid items so mixed-height media rows display consistently
Green glow pulse animation provides tactile feedback when tapping grid items
Extended subtitle delay range from ±3 seconds to ±7 seconds for finer subtitle timing control
Version string links to release notes in the About view
Prevent accidental server deletion on iOS and macOS with a confirmation step
Disconnect option added to the server list alongside Edit and Delete
Improved download status popup with better layout and UX
Server
Per-client watch history stats tracked and displayed for each connected device
Admin role enforcement for library-mutating operations, preventing non-admin devices from modifying content
Network interfaces section added to the server StatusView showing active network adapters
Client app identification with app identifier and version included in login requests for better diagnostics
Device sorting within each recency section by most recent first
Channel storage migrated to SQLite from UserDefaults with FK CASCADE for improved reliability
Metadata cache clearing when deleting movies or shows to prevent stale data
Channel filter summaries use proper singular/plural forms ("1 movie" vs "5 movies") instead of "(s)" suffixes across all video, music, and photo channel types
Sparkle update download URLs now use immutable version-specific filenames instead of the -latest.zip symlink, eliminating signature/length mismatches that could occur if a newer build was uploaded between when a user saw the update prompt and when they actually installed it
Bug Fixes
Fix SIGPIPE crashes on both client and server caused by broken pipe signals, resolved by ignoring the signal at startup and preventing Sentry from overriding the signal handler
Fix channel playback incorrectly showing a resume prompt when replaying a channel
Fix album auto-advance stopping after track transitions in music playback
Fix download audio failure and favorites episode navigation
Fix thumbnail sizing and centering for non-16:9 aspect ratios
Fix index-out-of-range crash in MediaGridView on reconnection
Fix encode pipeline video negotiation failure and parallelize bookmark loading
Fix Swift 6.2 data race errors in GStreamer pull loops
Fix missing back button on views pushed from the discovery wizard (movie detail, Similar Titles)
Fix show thumbnail columns in search results — show thumbnails were reading the wrong row indices after a column addition shifted offsets, causing missing or incorrect poster art in search results
Fix LibraryValidator path resolution that was passing a relative path directly to the absolute-path resolver instead of first constructing the proper virtual path
Fix RecommendationEngine genre thumbnails that were using raw relative paths instead of resolved virtual paths