Skip to content
This repository has been archived by the owner on Sep 9, 2022. It is now read-only.

Latest commit

 

History

History
50 lines (44 loc) · 2.97 KB

TODO.md

File metadata and controls

50 lines (44 loc) · 2.97 KB

TODO List

Client and Server

  • Make sure server has the same DB migration version as client via the ping and/or auth endpoints.
  • Report assets played to server, probably using UIDs to allow accidental dupes
  • Logging and reporting on client actions.

Server

  • If an empty project is detected, create an install button on admin login/landing, providing option to create initial data. Bonus: Station ID says 55.5 FM, KMUR Made Up Radio or something silly.
  • Sample generation stop set block server side testing, with optional date override.
  • Use expose nginx + gunicorn container, rather than Django so uploads are performant and one can deploy to prod using Docker.
  • Implement STRIP_UPLOADED_AUDIO.

Client

  • Minimum window dimensions and full screen on all three platforms.
  • Save window position on all three platforms and whether maximized / fullscreen
  • Prevent hibernation, ie using caffeinate cmd on macOS and on Windows, SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED)
  • Write unit tests.
  • Client standalone mode, ie run Django in a separate process. (Will need to include compiled sox with mp3 libs on macOS/Window and build an additional Django executable with PyInstaller, however will need to work around PyInstaller:MERGE(...) being broken.)
  • Build Windows with high res manifest file: link
  • Build macOS with a high DPI plist file NSPrincipalClass = NSApplication, example here.
  • For linux PyInstaller example, need to move files to dist/cefpython3 folder or configure cefpython.Initialize(...) to use appropriate path settings. Can comment on bug here.
  • Create Linux .deb that depends on package libgtk2.0.
  • Allow output device selection, ie via navigator.mediaDevices.enumerateDevices(), and wavesurfer.setSinkId(). Note: there's a bug in cef where the deviceId (aka sinkId) of a device changes every start, so I'll have to persist the output device via label matching.
  • Long tracks render using NES.css's progress bar, rather than Wavesurfer.
  • Error checking, see Wavesurfer's error event
  • Refactor / clean up JS. Currently it's pretty prototype-y.
  • Animation when wait time is up
  • Clean cache button (cache size estimate based on files not backed by Asset rows)
  • Left/right keyboard controls iff CLICKABLE_WAVEFORM = True
  • Total stopset time, as well as MM:SS / MM:SS total left in current Stop Set.