Files
sync_replay_project/docs/ROADMAP.md
T
foxyzandClaude Opus 5.5 8effa573a0 Protocol 10 presence gate, drop/paste anywhere, quick UI fixes
Ready gate: whoever is in the server while it is not playing counts (joining
while playing does not pause anyone); a swap counts everyone present and
keeps ready flags; the quorum rule is gone. Optional 'Unready when the
video changes'. No 'Skip 1:30' guess when the media has chapters.

Drag & drop and Ctrl+V anywhere (fox_utils): files, folders and links get a
small card asking how to open them. Files series start collapsed.

UI: Tab never moves focus and Space is always ready outside text fields;
chat focuses its field; unread badge on uosc and a chip in fullscreen;
people-only chat with an Activity toggle; skip pills show 5 s then with
the controls; volume up to 150%; own avatar same size as the party.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 07:06:48 +03:00

4.1 KiB

Roadmap

Backlog and epics, in order. Done work lives in git history. Check an item off by deleting it in the same commit as the code. Wire changes also edit PROTOCOL.md.

Backlog

  1. Auto-skip OP/ED (undecided): who decides and how (shared for the server, personal, per show) is open. Constraint: a skip is a seek and seeks are shared, and only real ranges (segments, OP/ED chapters) should ever be skipped.

  2. Files: next episode from Files (by parsed episode, with the countdown). Later: tracking for file series.

  3. yt-dlp (epic): players that open links themselves use mpv's ytdl hook (bundled on Windows); then relay of single-file formats; then a resolver for the Link preview (title, thumbnail, duration).

  4. AniList account: sign in (OAuth via a localhost callback), "My list" filter on the Schedule; today's "Following" (AnimeFlow's monitored shows) becomes "On the server".

  5. Ops: watch-together-server --upgrade (a VPS has no GTK for the app's updater); check shaders on Windows; the relay e2e "source drops uncleanly and resumes" fails about half the time under the full suite.

  6. Windows: first real use. CI builds and publishes watch-together-<ver>-windows-x64.zip (libmpv bundled) and runs the updater tests on NTFS; a friend has joined from it. Still unchecked: fullscreen controls, hosting (firewall prompt), in-app update from one release to the next. The rest of the desktop tests are not in CI.

  7. Relay follow-ups (see ARCHITECTURE "Relay"). First real use: owner's PC -> VPS -> friend, Jellyfin and a file. Then:

    • Source takeover: when the source leaves, another member with an account on that Jellyfin (or the same file: name, size, hash) takes over instead of the buffer running dry.
    • "Bob can't open this link — relay it?": offer the relay to whoever put a direct link up when a viewer's player fails to open it.
    • Show who is relaying and how fast in the member list; warn the source when its upload is below the media's bitrate.
  8. Jellyfin (epic, below).

  9. Smaller items

    • Video output robustness: if media_kit's hardware path regresses to software (see ARCHITECTURE, Media: render mode), vendor a media_kit_video fix that builds the EGL display from GDK's native display. The video freeze after GPU idle is not explained by this; next suspect is media_kit's context switching on the raster thread with NVIDIA.
    • Link conveniences: a link swap in session updates the remembered media; show the open link with an open-in-browser button.
    • Time UI: remaining time, scrubber preview.
    • mpv / mpv.net shortcut parity.
    • Chaos suite: host drop 5 s / 30 s, viewer stall, 20-seek storm, long outage with cache exhaustion (tool/shaper.dart --kill-after); assert no OOM, no stuck session, drift recovers.
    • Chat history pane (today: activity log only).
    • Images in chat (paste a screenshot; server memory only): possible, not wanted yet.
    • HTTP: move the app's clients (Jellyfin, AniList, AnimeFlow, updater) to dio from fox_utils when touching them, for retries/interceptors.
    • The state broadcast carries the full media URL, which can include an api_key (recognised Jellyfin links become refs; other links do not).
    • TLS: document a reverse proxy in front of the server.
    • Playlist: queue-add, queue-skip, auto-advance like a swap.
    • Sidecar subtitles.

Epic: Jellyfin

What is left (the rest is in ARCHITECTURE.md, "Jellyfin in a session"):

  • Queue: put several library items (a season, a pick list) up as a playlist that advances like a swap (shares queue-add / queue-skip with the backlog's Playlist item).
  • Auto-advance cancel for everyone: today Cancel is per screen (the designated swapper's Cancel stops the swap; a seek stops all). A shared cancel needs a wire message.
  • Sidecar (external) subtitle streams of Jellyfin items: only embedded tracks are mapped to mpv today.

Deferred

P2P, Android. Never: transcoding, web clients.