Skip to content

0.12.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 20:42
· 66 commits to main since this release
Immutable release. Only release title and notes can be modified.

add to up next, proper session expiration handling & more

combined

add to up next

Sometimes you want to take a detour and interrupt the album or playlist you are listening to with a few additions.
You can do that with play next and add to queue, but what about when you want to play something after the thing you just lined up next, but before the rest of the items queued up?

add to up next does exactly that. It's a special queue at the top of your queue that lets you keep lining things up before the main queue. Each item you add to up next gets inserted at the end of the up next queue, meaning the album or playlist you were listening to will resume again, right where you left off before the detour.

session expiration modal

Session expiration is now gracefully handled in the app (before it just silently failed requests).
It the server returns a response saying your token is no longer valid, you will get a modal prompting you to sign in again.
You can remain offline and keep the full offline functionality working, and if you try to toggle back to online mode later you be shown the modal again.

request cancellation

I've been making some contributions in Valdi (the framework used to build the app), one of those was needed to work on some functionality for the upcoming CLI, so I've moved the version the app is built against from the beta release to my branch with those changes (which has now been merged, so I'll re-point it at the Valdi main branch soon)

As a bonus I now have access to some of the request cancellation fixes (Snapchat/Valdi#117 & Snapchat/Valdi#142), so the handling here has been updated to ensure cancellation and timeouts are being handled gracefully in app.

auth header consistency handling (for Jellyfin v12)

Jellyfin v12 is out 🎉

It deprecates some previously used auth headers, so I've taken the opportunity to review and update the auth header handling as per https://gist.github.com/nielsvanvelzen/ea047d9028f676185832e51ffaf12a6f and make sure we're using the MediaBrowser header with token consistently so everything should remain functional on Jellyfin 12.

more CLI stuff

The CLI is making good progress. I've been testing out the full functional version locally, and will be making a start on the app integration side of things required to actually release. More on that when it's ready.

commit log

features

  • cli: wire up jellyfin transport in CLI for proper playback
  • cli: add auth to gstreamer sources
  • app: add to up next for better queue insertion
  • app: thread new auth header config through native
  • app: split out device id and device name in settings
  • jellyfin: use new single location header helper in live transport and auth service
  • jellyfin: add single location to create auth header
  • cli: hook up media server flow
  • cli: add /media-server route handler
  • sync: add /media-server endpoint to server
  • app: trigger session expired flow from native requests as well
  • app: unauthorized errors from server prompt re-auth modal
  • cli: wire up selected audio device to playback
  • cli: add command to list audio device outputs
  • cli: actual audio playback triggered by the server
  • cli: hook up zig audio player into cli app
  • cli: wire up initial audio player
  • cli: add initial gstreamer load skeleton

fixes

  • cli: restarted daemon keeps its track queue
  • cli: make header using consistent and add some more test setup
  • core: proper request cancellation and timeout handling now fixes are merged in valdi
  • app: ensure tap in queue is attributed to actually tapped track not a duplicate
  • app: fresh auth flow broken by 401 handler
  • app: hook up connectivity toggle to re-auth modal when session expired
  • build: fix android build following moving of valdi pin
  • ensure default device ids that get generated are unique
  • build: fix issues following moving of valdi pin
  • build: install gstreamer deps in CI
  • cli: better daemon log output and test stability fix

other

  • app: move quick connect pannel into own component so it can be used in reauth modal
  • deps: bump the github-actions group with 4 updates (#38)
  • build: point at my valdi fork to start working with cli httprequestmanager
  • cli: add http file to test player controls directly via server
  • app: move NativeAudioPlaybackEventSync into player module so it can be used in CLI as well