The early return added in 13cb672 did not account for the reSort flag,
causing the sort button to have no effect when already viewing the
discography tab. Also extend the early-return guard to cover the
groupedReleases case for consistency.
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces 7 separate workflow files with ci.yml (lint + all platform builds
on push to main and PRs) and release.yml (same builds + draft GitHub release
creation triggered by v* tags). Also fixes Ubuntu artifact name collision and
gives all output files descriptive names.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Instead of play → pause → sleep → seek when restoring a paused session,
introduce loadTrackPaused which sets internal state and fires UI/OS
callbacks (song change, paused) without touching MPV. On Continue(),
detect pendingLoadPaused and start MPV playback from the saved position.
Also triggers waveform pre-generation for the paused track via the
onBeforeSongChange hook.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Shuffle moves to the far left of the transport buttons and repeat to the far right, flanking prev/play/next. Both use a new IconButtonSizeSmallest (10% smaller than IconButtonSizeSmaller) with 2dp spacing separating them from the adjacent transport buttons. Wiring updated in bottompanel.go accordingly.
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix#304: normalize server URLs before connecting
Prepend http:// when no scheme is present and strip trailing slashes
for all server types. For Jellyfin, additionally strip /web/index.html
and /web path suffixes that users copy from the browser URL bar.
Normalization is applied in ServerManager.connect() on the by-value
parameter, so stored config is never mutated.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* move url normalize funcs
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add -reload-theme CLI flag to re-apply theme via IPC
Sends a reload-theme IPC message to a running instance, causing it to
call fyne.CurrentApp().Settings().SetTheme(m.theme). Follows the same
callback pattern as -show (OnReactivate) and quit (OnExit).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* actually re-read theme file
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>