plac-for-apple-platform

Unofficial Roon client for Apple devices

Commits at master

  1. 84d0916a macos: Disconnect on window close Shota FUJI authored at Shota FUJI comitted at
  2. 19572656 macos: Playback controls Shota FUJI authored at Shota FUJI comitted at
  3. 619caed7 macos: Start message loop earlier Shota FUJI authored at Shota FUJI comitted at
  4. a4dd6513 macos: Save IP/port for quick connection Shota FUJI authored at Shota FUJI comitted at
  5. fc8a826e macos: Save and restore authorization token Shota FUJI authored at Shota FUJI comitted at
  6. 4570e084 macos: Disconnect menu items In GTK-Adwaita, it's easy thanks to "gsettings" CLI application. In macOS, however, there seems to no way to clear an application's "@AppStorage" data. Shota FUJI authored at Shota FUJI comitted at
  7. 3b0a3dc9 core: Expose disconnect function Shota FUJI authored at Shota FUJI comitted at
  8. cf516079 macos: Accept Xcode project settings recommendation It has been showing a warning and it was annoying. Shota FUJI authored at Shota FUJI comitted at
  9. 1dd7aab4 macos: Change non-modified variable to immutable Addressed a Xcode warning. Shota FUJI authored at Shota FUJI comitted at
  10. afb2d6b4 macos: Merge server discovery and main window The former is (most of the case) shown once. The reason I changed the payload of ".found" case is, without that, the only reference will be "ConnectedView" and every updates to the View would release then re-create a connection. Shota FUJI authored at Shota FUJI comitted at
  11. d53ccec3 macos: Save connected server ID and reconnect on launch The current UX is not complete, as there is no way to disconnect. Considering the usecase of connecting to more than one Roon server is rare, the discovery window should be integrated into the main window. Then it can conditionally render server discovery or connected view without going to discovery view first. Shota FUJI authored at Shota FUJI comitted at
  12. 37c16ed0 core: Allow clients to set custom extension ID/name/version It has been pain to manage authorization tokens in Roon settings page. Shota FUJI authored at Shota FUJI comitted at
  13. dfc4cec0 macos: Display loading UI during extension authorization It has been unclear what it's doing and what a user should do. Shota FUJI authored at Shota FUJI comitted at
  14. 2bb754a9 macos: Polish PlaybackBar It was bit odd. Shota FUJI authored at Shota FUJI comitted at
  15. 8b8802c2 macos: Display now playing texts (title and artist, mostly) Shota FUJI authored at Shota FUJI comitted at
  16. 9e6bf7bf macos: Fix more than one element in array crashes application I don't know how I got to that iteration code, but the `UnsafePointer<T>.successor` is NOT a method to iterate over an array. <https://codeberg.org/pocka/plac/issues/17> Shota FUJI authored at Shota FUJI comitted at
  17. c972d09c macos: Fix app crash when server scan found nothing Shota FUJI authored at Shota FUJI comitted at
  18. 065d06d6 core: Print debug log on macOS build Ideally, integrating OSLog is the best. However, it's time-consuming and a lot of work needs to be done. This is good for now. Shota FUJI authored at Shota FUJI comitted at
  19. 790bc7fc macos: Fix crash on network error at server discovery Shota FUJI authored at Shota FUJI comitted at
  20. 8fdfb08d gtk-adwaita: Remove "develop build" style from window Even though there is some missing features (search and disconnect menu option,) it's usable for my day-to-day usage. Now all concurrency and memory bugs are fixed, this is the best timing to remove WIP label. Shota FUJI authored at Shota FUJI comitted at
  21. 5ed1b013 core: Give WS read and event handlers dedicated threads <https://codeberg.org/pocka/plac/issues/16> Parsing and handling incoming message in the same thread that reads WebSocket message from socket sometime drops WebSocket message, due to the thread being busy. This redesign solves that by separating reading and parsing/handling using dedicated threads. Although volume change operation now feels little bit sluggish, no more dropped response. Every operation is working correctly. Shota FUJI authored at Shota FUJI comitted at
  22. 12dfcdb9 core: Fix potential race condition Extremely rare, though (I saw only once.) Shota FUJI authored at Shota FUJI comitted at
  23. 03235177 core: Output request ID on control request send log "/control" endpoint suffers response loss as well as "/change_volume" endpoint. Request ID helps debugging this, because it's visible on data payload in Wireshark. Shota FUJI authored at Shota FUJI comitted at
  24. 05a6f716 gtk-adwaita: Volume controls While "it works," user experience is not great. For some reason, response for "/change_volume" got lost even though my machine sees a TCP packet. I also see this at "/control" endpoint too. However, "/seek" endpoint, which is called more frequently, does not encounter this. Most likely application problem given my experience on low-level programming, but it could be packet issue (Roon Server) or transport layer issue (websocket.zig or Linux?) I don't know, really. Shota FUJI authored at Shota FUJI comitted at
  25. 0a075ca6 core: Volume change functions Shota FUJI authored at Shota FUJI comitted at
  26. ba20af71 gtk-adwaita: Connect to server directly via IP address and port UDP multicast/broadcast is unreliable, especially in my environment where Roon server (or the machine hosting it) randomly stops responding to discovery query. Direct connection is really instant and I believe this would improve normal UX too. Shota FUJI authored at Shota FUJI comitted at
  27. 4b536649 core: Function to discovery server by IP address Roon Server or my server machine reject replying to UDP multicast/broadcast after several attempts. This functionality can be a good way to avoid UDP multicast and broadcast issues. Shota FUJI authored at Shota FUJI comitted at
  28. 0765fbd8 gtk-adwaita: Display zone outputs Shota FUJI authored at Shota FUJI comitted at
  29. d3f5d542 core: Expose zone outputs through C API Shota FUJI authored at Shota FUJI comitted at
  30. c69b6d06 core: Parse outputs in zone Shota FUJI authored at Shota FUJI comitted at