Tags: b0bbywan/go-odio-api
Tags
v0.17.4 — Admin app proxy and service open modes * An admin web app on a Unix socket (api.ui.adminSocket) is proxied at /ui/admin/ and opens in the same tab, X-Forwarded-Prefix included. * A configured service's url carries an open mode: tab (default), panel over the dashboard, or self for an app that links back to odio.
docs: point MPRIS player setup at the guides that cover it The systemd reference says nothing about it; each player's setup lives in its own guide. The sentence moves to the MPRIS feature it is about. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
docs: point MPRIS player setup at the guides that cover it The systemd reference says nothing about it; each player's setup lives in its own guide. The sentence moves to the MPRIS feature it is about. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Framebuffer Browser UI Fixes - UI: the button reset is restated without :where() (chromium 88), which invalidated the whole rule on the QtWebEngine 5.15 browser the pi setups run: every button fell back to native chrome, a white box swallowing the icon drawn in currentColor. - UI: the cover art and tracklist cap carries a vh fallback ahead of the cqw value (container queries, chromium 105), so the art keeps its aspect and the tracklist scrolls inside its card instead of pushing the page off the 480px tall screens.
D-Bus Call Deadlines - MPRIS: D-Bus calls now carry a real deadline (mpris.timeout). The old wrapper never timed out, so a player that ignores calls on interfaces it does not implement (Kodi, on the TrackList probe) froze the listener until it left the bus and never showed up in /players. - MPRIS: shutdown waits for the listener and heartbeat goroutines before closing the event channel, fixing a "send on closed channel" panic when a player appeared right before stop. - Login1, Bluetooth: same deadline fix; Device1.Connect keeps the pairing timeout since a first connect bonds the device.
fix(mpris): bound D-Bus calls with a real deadline and wait for gorou…
…tines on Close
callWithTimeout read call.Err after obj.Call had already returned, so the
configured timeout never applied. Kodi never replies to the optional
TrackList probe, which froze the listener (and Start) until the player
left the bus; the player never reached the cache. Every call now goes
through CallWithContext with mpris.timeout.
Close used to close the events channel while the listener could still be
inside a handler, panicking on notify ("send on closed channel"). Listener
and heartbeat Stop now wait for their goroutine; Close closes the D-Bus
connection first so in-flight calls fail fast, then closes events last.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F9qZzw2ePsBw6ZeUPnzTDz
PulseAudio Client Rewrite & Admin Link - PulseAudio: backend migrated from the unmaintained the-jonsey/pulseaudio client to jfreymuth/pulse. Subscription events are routed per facility so sink and stream changes refresh only their own cache; client and output caches are lock-free snapshots; volume writes carry one value per channel as the native protocol requires. - Config: new api.ui.admin setting links an admin web app from the dashboard header, accepting the same forms as service URLs. - Systemd: malformed _XX escapes in unit names are kept verbatim instead of decoding to a NUL byte. - UI: muted corked clients stay visible so they can be unmuted (#102).
PreviousNext