Commit Graph
589 Commits
Author SHA1 Message Date
Drew Weymouth e23dfb8554 Fix #875: ensure shuffle button on album/playlist/etc pages works regardless of queue shuffle 2026-03-13 07:59:09 -07:00
Drew Weymouth 03fd760589 use JSON instead of XML in Subsonic API 2026-03-11 07:38:58 -07:00
Drew Weymouth 02e12b3cbe handle switch players while in pendingLoadPaused state 2026-03-05 06:59:28 -08:00
Drew Weymouth cfcd7a52e4 delete accidental committed file 2026-03-05 06:54:51 -08:00
Drew Weymouth c3b9763724 handle stop properly when pendingLoadPaused 2026-03-05 06:42:22 -08:00
Drew Weymouth 47668bcec9 stop waveform from refreshing when unpausing the initial track 2026-02-27 08:29:57 -08:00
Drew Weymouth 6782e8d470 make sure waveform shows up for track loaded paused when starting app 2026-02-21 10:17:20 -08:00
Drew WeymouthandClaude Sonnet 4.6 dba540861f fix: defer MPV playback start until user unpauses on session restore
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>
2026-02-21 09:40:59 -08:00
Drew Weymouth c462720424 fix bug where unshuffling while playing last track in linear queue order crashes at end of track 2026-02-20 18:11:17 -08:00
Drew Weymouth 68268c323b fix order of operations when toggling shuffle 2026-02-20 17:46:37 -08:00
Siiiiinth 294be9a0a3 fix track restarting on shuffle 2026-02-20 16:16:52 +01:00
Siiiiinth 91701902e6 fixed playTrackAt when double clicking track 2026-02-20 15:57:54 +01:00
Siiiiinth 194e15cff6 Merge branch 'main' into feature/shuffle 2026-02-20 15:18:22 +01:00
Drew Weymouth 6b382c6293 Fix #857: Clear in-memory cache as well as on disk 2026-02-19 08:27:32 -08:00
Drew WeymouthandClaude Sonnet 4.6 9dd606ce73 Normalize server URLs before connecting (#861)
* 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>
2026-02-17 19:34:47 -08:00
Drew WeymouthandClaude Sonnet 4.6 e21908cd24 Add -reload-theme CLI flag to re-apply the current theme file (#860)
* 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>
2026-02-17 16:56:51 -08:00
Siiiiinth 279bc997aa removed unnecessary guard 2026-02-15 21:14:30 +01:00
Siiiiinth dccd2d8f1a clarify loadItems functionality 2026-02-15 20:54:14 +01:00
Siiiiinth a9b3a3d9f4 typo 2026-02-15 19:26:02 +01:00
Siiiiinth bf2cb25a7a move err handling 2026-02-15 19:24:56 +01:00
Siiiiinth 9919f59b47 changed comment 2026-02-15 18:53:44 +01:00
Siiiiinth cc35b54898 fixed typo 2026-02-15 18:44:41 +01:00
Siiiiinth cba4d9bd27 fixed track removal 2026-02-15 10:16:04 +01:00
Siiiiinth 3b22a1b261 Merge branch 'main' into feature/shuffle 2026-02-15 10:02:44 +01:00
Drew Weymouth 497c61e724 Fix #854: bounds-check for setNextTrack during handleTimePosUpdate 2026-02-13 07:47:19 -08:00
Siiiiinth d463971ce8 fixed bug in SetShuffle 2026-02-09 19:12:19 +01:00
Siiiiinth d077bfb953 load full queue state on start 2026-02-09 18:48:50 +01:00
Siiiiinth 1e1e3f7106 fixed various bugs with inserting and adding tracks 2026-02-09 13:43:36 +01:00
Siiiiinth a54d81ccca merge conflicts 2026-02-09 08:11:05 +01:00
Siiiiinth 48226d5461 wip restore queues on start 2026-02-09 08:09:01 +01:00
Drew Weymouth ead7364632 Merge pull request #835 from M0Rf30/feat/equalizer-improvements
Add equalizer preset management and AutoEQ integration
2026-02-08 17:50:07 -08:00
Drew Weymouth f2440d9d15 some log cleanup 2026-02-08 17:46:20 -08:00
Drew Weymouth 6c84910553 renaming 2026-02-08 17:15:38 -08:00
Drew Weymouth b52aa5b36f rate-current CLI option (#847) 2026-02-07 10:18:51 -08:00
Gianluca Boiano f302612d53 chore: remove dead code 2026-02-06 18:06:59 +01:00
Drew Weymouth 7956174c0e fix fC of 10-band eq 2026-02-06 08:48:30 -08:00
Drew Weymouth daf0440fbc extend searchdialog / SearchResult to properly support headphone profiles 2026-02-06 08:27:52 -08:00
Gianluca Boiano b0b2dc46f9 Update player to support both 10-band and 15-band equalizers 2026-02-06 02:50:40 +01:00
Gianluca Boiano 0097b0a052 Add 10-band equalizer support and AutoEQ integration 2026-02-06 02:50:39 +01:00
Drew Weymouth 3c46889014 Extract and display radio ICY metadata (#845)
* extract and display radio ICY metadata

* fix crash when casting radio station
2026-02-05 07:51:15 -08:00
Gianluca Boiano 2e33b81914 Improve code quality and thread safety (#844)
- Format Go files (gofmt) for backend/windows/notify*.go
- Add thread safety to Stopwatch with sync.Mutex
- Add comprehensive unit tests for Stopwatch with race detection
- Add godoc comments to ImageCache public APIs
- Improve IPC documentation with platform-specific socket path details
- Document portable mode TODO for future enhancement
2026-02-03 11:39:47 -08:00
Gianluca Boiano ada1564be7 Fix WidgetPool goroutine and ticker leak
- Add context cancellation to WidgetPool cleanup goroutine
- Properly stop ticker when context is canceled
- Add BackgroundContext() getter method to App for context access
- Pass application context to NewWidgetPool for lifecycle management

This fixes a resource leak where the cleanup goroutine would run
indefinitely without any way to stop it, preventing proper cleanup
on application shutdown.
2026-02-02 16:31:56 +01:00
Gianluca Boiano 43e8d0a453 Optimize resource usage in waveform generation and image cache
- Replace sleep-based polling in waveform generation with channel-based
  synchronization to reduce CPU usage and improve responsiveness
- Add sync.Pool for audio buffers in waveform analysis to reduce memory
  allocations
- Fix critical bug in ImageCache where struct field updates were not
  being persisted to the map, causing LRU tracking to fail
- Optimize ImageCache evictOne() to use single pass instead of two
  separate iterations through all cache items
- Upgrade read locks to write locks in ImageCache Get methods to ensure
  struct updates are properly saved
2026-02-01 22:29:28 +01:00
Gianluca Boiano 53b91f5d43 Disable waveform seekbar by default 2026-02-01 22:18:18 +01:00
Siiiiinth 2d29b7f271 lint 2026-02-01 18:49:52 +01:00
Siiiiinth 46c3fb15c4 fixed TODOs, first checkpoint saving queue on server 2026-02-01 18:46:49 +01:00
Siiiiinth e05542844a save shuffle state in config 2026-02-01 14:21:57 +01:00
Siiiiinth 7302e4ebbd move current track to front on shuffle 2026-02-01 13:08:27 +01:00
Siiiiinth 8853989e85 code clean up - remove tracks 2026-02-01 12:34:50 +01:00
Siiiiinth ac05e8207f fix lint 2026-02-01 12:07:42 +01:00