Roadmap: wishlist placed (ready gate, quick UI, drop/paste, Files, yt-dlp, AniList, ops)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
foxyzandClaude Opus 5.5 committed 2026-10-09 06:54:08 +03:00
1 parent 740273745b
commit 5f22be6c20
1 file changed
+51 -4
+51 -4
View File
@@ -6,13 +6,56 @@ off by deleting it in the same commit as the code. Wire changes also edit
## Backlog ## Backlog
1. **Windows: first real use.** CI builds and publishes 1. **Ready gate and swap (protocol bump).** Bug: three in a server, a file
relayed from one; two readied and it played, the third (not ready) was
dragged along frame by frame. Members present at a swap must all count
for the gate (a joiner after the swap still counts only once ready);
a swap keeps everyone's ready flag, with a per-user "Unready when the
video changes" setting. Shared auto-skip lives here too (below).
2. **Quick UI**
- Tab no longer moves focus (Tab toggles chat, then Space pressed a
random button); Space is always ready outside text fields.
- Opening chat focuses its field; Esc/Tab hands focus back.
- Unread badge on uosc's chat button; an unread hint in fullscreen.
- Your avatar in the strip the same size as the party's.
- Chat panel: people's messages only, a toggle shows activity.
- Skip OP/ED: no "Skip 1:30" guess when the file has chapters (a
missing OP chapter is on purpose); the pill shows for the first 5 s
of the range and again when the mouse moves (like the controls).
- Auto-skip OP/ED: a server-wide setting in `state` (anyone toggles it,
the feed says who); exactly one client seeks (the media's `swapBy`,
else the lowest fresh member id), only for real ranges (segments or
OP/ED chapters), as a normal user seek.
- Volume above 100% like mpv.
3. **Drag & drop and paste** (`fox_utils`): drop or Ctrl+V anywhere; a
small card asks how to open it (file: put up / add its folder to Files;
link: put up with the link modes; image: the avatar editor when open).
4. **Files**: detected series groups start collapsed (big libraries);
next episode from Files (by parsed episode, with the countdown). Later:
tracking for file series.
5. **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).
6. **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".
7. **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.
8. **Windows: first real use.** CI builds and publishes
`watch-together-<ver>-windows-x64.zip` (libmpv bundled) and runs the `watch-together-<ver>-windows-x64.zip` (libmpv bundled) and runs the
updater tests on NTFS; a friend has joined from it. Still unchecked: updater tests on NTFS; a friend has joined from it. Still unchecked:
fullscreen controls, hosting (firewall prompt), in-app update from one fullscreen controls, hosting (firewall prompt), in-app update from one
release to the next. The rest of the desktop tests are not in CI. release to the next. The rest of the desktop tests are not in CI.
2. **Relay follow-ups** (see ARCHITECTURE "Relay"). First real use: owner's 9. **Relay follow-ups** (see ARCHITECTURE "Relay"). First real use: owner's
PC -> VPS -> friend, Jellyfin and a file. Then: PC -> VPS -> friend, Jellyfin and a file. Then:
- Source takeover: when the source leaves, another member with an - Source takeover: when the source leaves, another member with an
account on that Jellyfin (or the same file: name, size, hash) takes account on that Jellyfin (or the same file: name, size, hash) takes
@@ -22,9 +65,9 @@ off by deleting it in the same commit as the code. Wire changes also edit
- Show who is relaying and how fast in the member list; warn the source - Show who is relaying and how fast in the member list; warn the source
when its upload is below the media's bitrate. when its upload is below the media's bitrate.
3. **Jellyfin** (epic, below). 10. **Jellyfin** (epic, below).
4. **Smaller items** 11. **Smaller items**
- Video output robustness: if media_kit's hardware path regresses to - Video output robustness: if media_kit's hardware path regresses to
software (see ARCHITECTURE, Media: render mode), vendor a software (see ARCHITECTURE, Media: render mode), vendor a
media_kit_video fix that builds the EGL display from GDK's native media_kit_video fix that builds the EGL display from GDK's native
@@ -39,6 +82,10 @@ off by deleting it in the same commit as the code. Wire changes also edit
outage with cache exhaustion (`tool/shaper.dart --kill-after`); assert no outage with cache exhaustion (`tool/shaper.dart --kill-after`); assert no
OOM, no stuck session, drift recovers. OOM, no stuck session, drift recovers.
- Chat history pane (today: activity log only). - 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 - The `state` broadcast carries the full media URL, which can include an
`api_key` (recognised Jellyfin links become refs; other links do not). `api_key` (recognised Jellyfin links become refs; other links do not).
- TLS: document a reverse proxy in front of the server. - TLS: document a reverse proxy in front of the server.