diff options
Diffstat (limited to 'todo.txt')
-rw-r--r-- | todo.txt | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/todo.txt b/todo.txt index bfb6e98..ac4807b 100644 --- a/todo.txt +++ b/todo.txt @@ -577,6 +577,43 @@ TODO: "BAM #45.3 - no" displays as "BAM #45.no" in the queue? Seems wrong! TODO: "Challenge 1 (Tricks)" etc in FP World 3 are "Challenge (Tricks)"! Bad. (Done!) +TODO: Tabber tab list should be accessible via tab (key). + +TODO: Show current index and number of tabs beside tabber tab list. + +TODO: The checks for "grouplike"/"track" have been super arbitrary for a long + time. It'd be nice to just store that info in a plain "type" property, + and tweak updateGroupFormat/etc to generate that! (Probably also the + crawlers themselves, but they aren't as big of a priority, and we should + support opening older playlist formats too.) + +TODO: Synchronize items that have been shared with the party upon a new client + joining. Should be next to (or part of) the initialize-backend command. + (Done!) + +TODO: We currently use a hack to access the original item in the context menu + for items in the party sources listing. This doesn't make, for example, + queuing by pressing enter on a track work. We should instead have a way + to specifically refer to the item "represented" by a line, rather than + the literal object it's associated with (i.e. the pseudo-track/group + shared in the sources array). + +TODO: Broadcast when a socket disconnects; show a log message and remove their + shared sources from the UI of other clients. + +TODO: Ditto for the server! Not (exclusively) as a broadcast message, though - + detect if the connection to the server is lost for any reason. + +TODO: The validation code for share-with-party sucks! It should be made into a + separate function which runs recursively, and should be used to validate + initialize-party too. + +TODO: Show debug log messages when validating a command fails! On both server + and client end. + +TODO: Naming a shared sources list should definitely happen in a function. + (Done!) + TODO: Pressing next track (N) on the last track should start the first track, if the queue is being looped. (Done!) @@ -697,6 +734,38 @@ TODO: Pressing escape while you've got items selected should deselect those Alternative: clear the selection (without stopping playback) only if the cursor is currently on a selected item. +TODO: GHOST BACKEND for socket server... the main thing is syncing duration + data. It sucks to have the player, like, actually be tied to a specific + instance of MPV or whatever, so we'd use a ~ghost player~ which supports + all the usual interfaces and lies about its current playback time. Yay! + (Partway: The ghost player exists now, and the backend and UI handle it! + Just need to hook up a "dummy" backend for the server, with ghost player + and duration metadata received from socket clients.) + +TODO: There should be a way for the server to handle disputes between two + clients disagreeing on the duration of a track. Options could include, + for example, "longest": always wait for everyone to be done playing; + "shortest": don't wait for anyone to be done (past a 1 second threshold + or whatever), just skip to the next track almost right away; and "first", + where duration just depends on whoever shared the track. This can all be + done without everyone sharing their own playback duration, which is kinda + wasteful; it would be controlled totally by the server deciding when to + send out events to start the next track, and in reaction only to the + clients' own "done playing" events (or the GHOST PLAYER reaching the + playback time provided when the track was first shared). + +TODO: Implement a waaaay better socat system, particularly one which waits for + feedback when a command is sent and returns that. This has to be special- + coded for mpv since there isn't a generalized standard, so it should make + use of the existing Socat class, not replace it outright. + +TODO: Use above socat system to keep "pinging" the socket until a response is + received - mpv doesn't make the socket immediately available. I think if + we wait for a pong response before allowing any actual commands to go + through, we can avoid weirdness with commands being dropped beacuse they + were sent too early. For now we just use a time-based delay on the base + Socat class, which is a hack. + TODO: When you're navigating down (or up) a menu, if that menu's got a scrollbar *and* is divided into sections, passing a divider line should try to scroll the whole newly active section into view! This way you get |