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:
1 parent
740273745b
commit
5f22be6c20
1 file changed
+51
-4
+51
-4
@@ -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.
|
||||||
|
|||||||
Reference in new issue
Block a user