Skip to content

1.4.0

Compare
Choose a tag to compare
@Tastyep Tastyep released this 18 Oct 12:09
· 549 commits to master since this release
63c4434

Database, Playlists, and WebSockets

While the release contains nice backend features, as I don't have the skills nor time to update the interface, no integration of these has been done.
This is a problem that I can't address alone, but hopefully, help should come soon.

Features

  • WebSockets
    • Player and Video events can be listened to by subscribing to the dedicated WebSocket (/player/events and /videos/events)
      This will allow changing the front end strategy from pulling at regular interval to listening to server updates.
  • Database
    • Switch from the in-memory database to a JSON database thanks to TinyDB.
    • Use marshmallow and dacite to validate serialize and deserialize dataclasses to dict objects.
    • Make UUIDs deterministic between restarts.
    • Rework library loading to only purge videos from the database if non-existant on disk.
  • Playlist model
    • Define the playlist model.
    • Expose CRUD operations through /playlists.
    • Expose /playlists/id/videos.

Improvements

  • State change representation in events
    • Related to the WebSocket addition, events now consistently carry the state change applied to models.
  • API content validation
    • Make use of marshmallow schemas to validate user input to return validation errors to the user.
  • Expose deps sub command
    • Allow the user to locally update the project dependencies by running ./OpenCast.sh deps update.
  • Code coverage
    • Coverage is now up to 92%, some tests are still missing for few infrastructural components, but applicative and domain logic is fully covered.
  • Update dependencies
    • Replace unmaintained speccy linter with spectral.

Bug fixes

  • Fix media parsing errors (Media parse skipped) preventing some videos to be played.
  • Fix remaining CORS issues.
  • Fix inconsistent queueing order when requesting to stream a playlist.