Commits at ba48c64adedec96c7c457b4d42436d32a3505c89
9b107f4agtk-adwaita: Workaround for Roon API returns "[[id|text]]" labels
Shota FUJI
authored at
Shota FUJI
comitted at
e54e5874core: Label parsing function
Roon API returns "[[id|text]]" format strings for title and subtitles on
some browse paths. For example, in my environment, "Explore > Qobuz >
New Releases > Qobuz grand selection" returns items with subtitle in
this format, like "[[969850|Wes Montgomery]]". I don't think we'll get a
fix for this--Roon API is abandoned. Each client has to parse and throw
IDs and brackets away.
Shota FUJI
authored at
Shota FUJI
comitted at
63589eaagtk-adwaita: Remove useless function call
Also Vala compiler has been emitting a warning that the variable is
unused.
Shota FUJI
authored at
Shota FUJI
comitted at
cf275126gtk-adwaita: Fix space between rows react to clicks
<https://codeberg.org/pocka/plac/issues/5>
The bug was inside GTK4, and there seems no way to workaround from
application developer side. I was not happy about aesthetic of the
previous cards list, I simply changed the custom rows to regular one.
Shota FUJI
authored at
Shota FUJI
comitted at
26b2df71core: Fix segfault on opening "Track" page with release builds
The "node" inside while loop is a reference to the other thread's stack
variable, and there is no mechanism to block a creator function from
exiting. Since blocking a creator function could lead to unpleasing UX
(images at beginnings load slowly compared to later images,) I simply
changed the code to allocate nodes on heap and added RC.
Shota FUJI
authored at
Shota FUJI
comitted at
8a05c1ceInstall code formatter for Nix
Amount of Nix code is no longer little.
Shota FUJI
authored at
Shota FUJI
comitted at
5949d43cgtk-adwaita: Fix browse error locks browse UI into disabled state
Shota FUJI
authored at
Shota FUJI
comitted at
90a7baf9gtk-adwaita: Don't render non-actionable item as actionable
Shota FUJI
authored at
Shota FUJI
comitted at
d497c6aagtk-adwaita: Don't scroll after selecting/closing action menu popover
It's annoying.
Shota FUJI
authored at
Shota FUJI
comitted at
1683e5fdgtk-adwaita: Render action list as menu button
It was hard-to-grasp albeit not usable.
Shota FUJI
authored at
Shota FUJI
comitted at
70c1f75ecore: Cache downloaded images
Navigating through library pages (e.g. albums, artists) fetches same
images over and over. In order to reduce load to Roon Server, I added
stupid simple caching in front of image downloader. This significantly
reduces HTTP GET calls on my library, especially "Tracks" page.
The caching does almost nothing on Qobuz pages, though. In my testing,
Qobuz images takes more time to load and only playlists have lot of
duplicated images. Because of those, the existing "reuse ongoing GET
request" mechanism eliminates duplicated GETs thus almost all of
requests are unique. I don't believe this can be improved—nobody but
Qobuz (perhaps Roon too?) can control, optimize, and estimate data
appearance pattern on Qobuz pages.
This cache implementation does not look great, but it works well.
Shota FUJI
authored at
Shota FUJI
comitted at
bcf2497dcore: 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
a6d963afcore: Relax timeouts
It was too short. Especially browse APIs frequently timed-out on Qobuz
pages.
Shota FUJI
authored at
Shota FUJI
comitted at
9fc84020core: 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
7f2d5aebgtk-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
c5b9431dgtk-adwaita: Automatic reconnection on server close
*Not tested*
Testing against Roon Server is really frustrating task.
Shota FUJI
authored at
Shota FUJI
comitted at
1a88a96ccore: 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
8116f858core: 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