plac-for-apple-platform

Unofficial Roon client for Apple devices

Commits at d85027493fbf578475c7ce0fca8fb7794a19fa96

  1. bcf2497d core: Download image using normal HTTP instead of WebSocket Downloading large number of images through WebSocket easily clogs connection and affects sending of other actions (e.g. playback control) and receiving of events. By using normal HTTP via separate connection, this no longer happens. This patch finally enables me to open "Explore > Library Tracks" page. Shota FUJI authored at Shota FUJI comitted at
  2. a6d963af core: Relax timeouts It was too short. Especially browse APIs frequently timed-out on Qobuz pages. Shota FUJI authored at Shota FUJI comitted at
  3. 9fc84020 core: Limit number of concurrent image downloads To prevent server from choked. Unfortunately, due to high duplication, "Library > Tracks" still timeouts and renders app unresponsive. Shota FUJI authored at Shota FUJI comitted at
  4. b269cbba gtk-adwaita: Browse category sidebar Shota FUJI authored at Shota FUJI comitted at
  5. 7f2d5aeb gtk-adwaita: Seek feature GTK4's slider/range widget is shitty, thus this feature works shitty as well. There are no "drag ended" equivalent signal and drag start emits JUMP scroll type value change signal. Also, setting `false` to `sensitive` resets focus so long jump using keyboard is impossible too. Debouncing or throttling would help a little bit, but won't solve the problem fundamentally. Seek change events sent by server would resets drag operation. Valadoc shows no result for "throttle/debounce" and GTK4 seems to have no function and widget for that. Implementing debounce/throttle function by hand, testing that, and adding additional delay to seek triggered by seek is not acceptable given those won't work when a track is playing. The only way to solve this is implementing custom widget, which means re-implementing slider UI from scratch or carefully patching and workarounding GtkRange's internal implementation. Both are time-consuming, exhausting, negatively effects maintainability, and stupid. GTK4's rendered widget is great. Its API and abstraction are dogshit. Shota FUJI authored at Shota FUJI comitted at
  6. 5c3de821 core: Seek function Shota FUJI authored at Shota FUJI comitted at
  7. 1be9ec56 core: Fix race condition on reconnect Shota FUJI authored at Shota FUJI comitted at
  8. c5b9431d gtk-adwaita: Automatic reconnection on server close *Not tested* Testing against Roon Server is really frustrating task. Shota FUJI authored at Shota FUJI comitted at
  9. 9ed2fe6d core: Reduce chance of timeout for request reuses Shota FUJI authored at Shota FUJI comitted at
  10. 1a88a96c core: Refactor to use constant defined in std Did not notice the constant at the time of writing the logic. Shota FUJI authored at Shota FUJI comitted at
  11. 71e09e36 core: Set timeout for requests Shota FUJI authored at Shota FUJI comitted at
  12. c491d8b6 core: Return result for control request This is required to implement timeout. Shota FUJI authored at Shota FUJI comitted at
  13. f5b7f026 gtk-adwaita: Display browse list subtitle Shota FUJI authored at Shota FUJI comitted at
  14. 8116f858 core: Do not send duplicated request for image downloads Previously there were multiple requests made to the same image_key and options pair. This is problematic on opening "Library > Tracks", because the page has a lot of same images. Shota FUJI authored at Shota FUJI comitted at
  15. 11f43c3c gtk-adwaita: Add a11y label to browse back button Shota FUJI authored at Shota FUJI comitted at
  16. 65f4d25e gtk-adwaita: Add a11y label for seekbar Shota FUJI authored at Shota FUJI comitted at
  17. 00ba47fb gtk-adwaita: Display current seek position as a tooltip Shota FUJI authored at Shota FUJI comitted at
  18. 94edd150 gtk-adwaita: Remove browse items' angle icon from AT It's just for presentation. To be honest, I have no idea what to label it. "Arrow indicating next navigation"? Shota FUJI authored at Shota FUJI comitted at
  19. 659b1c11 gtk-adwaita: Remove artwork from accessibility tree I have no control over the image. Announcing it as "artwork of <track>" does not bring new information. Shota FUJI authored at Shota FUJI comitted at
  20. dad9c096 core: Rename service modules Names are not best (they are CamelCase instead of snake_case) but one level less nesting is good enough for now. Shota FUJI authored at Shota FUJI comitted at
  21. e23a985c core: Upgrade libmoo (u64 request_id migration) libmoo previously used i64 for request_id. While Roon server accepts requests with i64 request_id, having negative number IDs looks weird. Also, the current implementation starts from 0 thus half of the space has been remaining unused. Using u64 for request_id just has pros. Shota FUJI authored at Shota FUJI comitted at
  22. ca23543a gtk-adwaita: Scroll to top on browser navigation Although not ideal, better than restoring to nonsensical position. Shota FUJI authored at Shota FUJI comitted at
  23. 714b10e5 gtk-adwaita: Display artwork on browse item Shota FUJI authored at Shota FUJI comitted at
  24. 13eb02e0 gtk-adwaita: Remove AppImage build Built AppImage won't launch. Shota FUJI authored at Shota FUJI comitted at
  25. 5f1a9e50 gtk-adwaita: build step for AppImage (broken) While the step produces `Plac.AppImage`, built file does not run with this error: ``` ./zig-out/Plac.AppImage: error while loading shared libraries: libharfbuzz.so.0: cannot open shared object file: No such file or directory ``` harfbuzz is installed but AppImage can't load the non-bundled library. I have no idea where is the problem: it could be Zig compiler, Nix, linuxdeploy, or my environment. AppImage docs is pretty shallow and scattered, recommended tools are questionable quality, but most importantly, the whole concept seems not to work well with Nix. Even if the underlying problem will be solved, this won't be in the repository. Given many errors and quirks I've seen at this point, I don't think it'll work in others' environments. Although it's not user friendly, running `nix develop && zig build run` is way better than CMake or Bazel or `configure` or whatever. I'm going to put this commit in trunk as build scripts and newly added files are useful for non-AppImage builds. Shota FUJI authored at Shota FUJI comitted at
  26. d49fc523 gtk-adwaita: Add app icon Required for generating an AppImage file. Shota FUJI authored at Shota FUJI comitted at
  27. 9cde9caf gtk-adwaita: Suppress deprecation warnings from Vala compiler See code comment for rationale. Shota FUJI authored at Shota FUJI comitted at
  28. b6090f98 gtk-adwaita: Remove unhelpful debug log These lines were added to debug a particular problem, which has been solved. As "what was changed" is unclear from log text, these are not useful and are simply noise. Shota FUJI authored at Shota FUJI comitted at
  29. 2eaaa39f gtk-adwaita: Display artwork on playback toolbar Shota FUJI authored at Shota FUJI comitted at
  30. 52fba235 core: Fix Image.GetOptions.make not retaning Shota FUJI authored at Shota FUJI comitted at