« get me outta code hell

mtui - Music Text User Interface - user-friendly command line music player
about summary refs log tree commit diff
path: root/todo.txt
diff options
context:
space:
mode:
Diffstat (limited to 'todo.txt')
-rw-r--r--todo.txt69
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