- PlayerHost port (MediaKitHost): players by role, pins, hwdec policy,
render probe, log routing, disposal order; the only media_kit user.
- MediaPipeline: plan (one pure switch over state, origin, caps,
presence) -> resolve -> open (prepared player promoted, else fresh)
-> ready; commands queued during a switch apply once (P15); viewers
play the buffer and wait for a dropped source without seek loops (D6).
- Every web page resolved by our yt-dlp into an EDL with headers and
cookies (danmaku excluded); mpv's ytdl_hook no longer used (ytdl=no).
- D11: sign-in errors say which cookies were used and whether they hold
any for the site.
- Relay: 256 KiB slices read as they fill, superseded pulls released
(seek-to-play ~4.2 s -> ~2.8 s, P29); own Jellyfin relay channel only
when someone needs it (P28).
- STARSYNC_SMOKE run and a Windows CI smoke step after the build.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- One server per app run (loopback, no password); Invite attaches an
all-interfaces listener to the same server and Stop sharing detaches
it (guests told with 4016); members, media and Up next never reset.
No solo mode: you're home on your own server unless in a friend's.
- Navigation: none / yours / friend; a join passes a version gate on
/health first (clear "they/you need to update", update offer).
- Invite as a value (host, port, name, password flag, version, fp
reserved); addresses filtered (loopback, link-local, 198.18/15,
bridges) and ranked; Sharing chip, Copy invite, Stop sharing.
- Alone looks like a plain player (alone replaces solo).
- AppGraph builds and disposes systems; widgets use AppScope;
SessionState deleted; a test caps the remaining singletons.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PlayerControlsModel holds the controls' state and actions once; the
Standard skin (our own, no more media_kit controls or private-state
reach-ins) and Minimal (the former uosc design, made the app's own and
credited) only draw it. One layout spec for both: play first, then
previous/next, volume, time; subtitles, audio, settings, chat,
fullscreen last; everything else in the settings menu. Settings ->
Player -> Controls: time display, size, hide delay, optional buttons.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every app streams its redacted diagnostic lines (server time, batched
every 10 s, gzip, buffered while offline) to POST /l/; the server merges
them with its own into session-YYYY-MM-DD.log in time order, tagged by
who. Opt-out in Settings > About; Mark a problem (Ctrl+Shift+B, the
player menus, About) writes a marker with an optional note. Copy
diagnostics can include the server's session log. Chat text never
reaches any log.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Overlay: one layout for both designs (top bar with Up next as one of
its buttons; one action band above the controls for the status pill,
skips, next episode and end cards), one glass recipe (AppGlass) and
one pill (FloatingPill); hovering any of them, or the open queue,
holds the controls up.
- Up next: the first item (or the first continuation episode) is kept
resolved on the app that puts it up, refreshed before it expires;
Schedule and drop/paste can queue too.
- Jellyfin: WatchSession (core) counts real watched coverage; an
episode is watched at 80 % or at its ending after half; a played one
is re-marked after Playing (10.11 unmarks on open) and never gets a
position; a peek leaves the old resume point; part-way resume points
stay under 85 %.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- AppSelect / AppMenuButton (widgets/app_menu.dart): glass menu anchored
to its button, check on the current item, keyboard and Esc; replaces
the Material dropdowns in Settings, player settings, Jellyfin and the
member menu. Material menus elsewhere get the same surface by theme.
- Link page: Through me is the main choice (you can't know which sites
need cookies); Everyone / Server fetches it sit under "Other ways".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Library: source switch, selectable cards with a details panel, one merged
Continue row, Latest grouped per series without re-releases, Link page with
previews and recent links, Files embedded. Player: gear popover in both
designs, progress line while controls hide, live hwdec. Settings rebuilt as
cards. State marks the host member (proto stays 9, unreleased); hosting
shows LAN invite addresses; window buttons in fullscreen. fadeThrough keeps
the outgoing view's state.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>