601 Commits
Author SHA1 Message Date
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
Siiiiinth 9f0727fd0f implement remove track for shuffle 2026-02-01 12:01:55 +01:00
Siiiiinth 1c693f00da Merge branch 'main' into feature/shuffle 2026-01-29 18:16:34 +01:00
Drew Weymouth 9aeb7d0bd2 Fix #798: Migrate SkipSSLVerify setting to per-server 2026-01-29 08:35:21 -08:00
Siiiiinth 149cf7f717 Merge branch 'main' into feature/shuffle 2026-01-29 14:27:56 +01:00
Drew Weymouth 7b09418017 Fix #614: Update go-upnpcast for device discovery fix 2026-01-28 19:34:38 -08:00
Gianluca BoianoandDrew Weymouth 6c038df537 Fix equalizer audio filter string construction (#834)
* Fix equalizer audio filter string construction

* some code style cleanup

* import strings

---------

Co-authored-by: Drew Weymouth <dweymouth@users.noreply.github.com>
2026-01-28 19:32:16 -08:00
Siiiiinth 8442a3377a Merge branch 'main' into feature/shuffle 2026-01-27 14:01:27 +01:00
Siiiiinth e60e7c2861 todo comments 2026-01-27 14:00:29 +01:00
Gianluca Boiano c692fbf1ee Update tooling and fix build issues
- Migrate golangci-lint config to v2 format
- Update GitHub Actions: checkout v3→v4, Go 1.24→1.25
- Update golangci-lint-action v6→v9 with golangci-lint v2.8
- Fix dlnaplayer.go: use RequestHandler interface for go-upnpcast
- Fix go.mod replace directive version mismatch for fyne fork
2026-01-26 22:30:12 +01:00
Siiiiinth 138c2ba162 Merge branch 'main' into feature/shuffle 2026-01-25 18:48:23 +01:00
Siiiiinth e210e7e9c3 checkpoint 3: base shuffle works, but very bad code 2026-01-25 18:47:35 +01:00
Siiiiinth 3da08f78de use new play queue len func in playbackmanager 2026-01-25 18:22:42 +01:00
Siiiiinth 294fba2384 shuffle func checkpoint 2 2026-01-25 18:20:35 +01:00
Drew Weymouth d681d87b31 Discussion #485: use SortName when sorting artist's albums by name 2026-01-25 09:00:28 -08:00
Siiiiinth 6bd37fd053 checkpoint shuffle impl 2026-01-25 17:00:15 +01:00
Siiiiinth e7199b3e97 insertItemsIntoPlayQueueAt func 2026-01-25 10:21:57 +01:00
Siiiiinth 902e6e3dc8 getPlayQueue func 2026-01-24 23:32:02 +01:00
Siiiiinth 42d3ee4973 getPlayQueueItemAt func 2026-01-24 22:46:58 +01:00
Siiiiinth 8f65e62fba reordered playqueue func 2026-01-24 22:01:24 +01:00
Siiiiinth aa246c810b setPlayQueue func 2026-01-24 21:47:33 +01:00
Siiiiinth 54844a0e2b clearPlayQueue func 2026-01-24 21:43:29 +01:00
Siiiiinth ba62f028b0 getPlayQueueLength func 2026-01-24 21:39:46 +01:00
Siiiiinth 6e812d7c77 Merge branch 'main' into feature/shuffle 2026-01-24 21:18:52 +01:00
Siiiiinth a01dc31c8a wip 2026-01-24 21:18:21 +01:00
Drew Weymouth e6127ccc11 #782 for Jellyfin: treat usernames as case-insensitive 2026-01-24 11:05:12 -08:00
Drew Weymouth 8e2e4c6d89 Fix #810: only enqueue autoplay tracks when 10 sec from end of play queue 2026-01-24 10:23:35 -08:00
Siiiiinth be490203d6 Merge branch 'main' into feature/shuffle 2026-01-17 19:12:18 +01:00
Siiiiinth 383466935b rem callback 2026-01-17 19:11:02 +01:00
Siiiiinth 3d156ebb51 Merge branch 'main' into feature/shuffle 2026-01-17 19:04:01 +01:00
Siiiiinth 71a5df9d51 added shuffle button to UI + base data flow 2026-01-17 19:03:33 +01:00
zacaj 7c9b4074cb setting to disable fade out on pause 2026-01-17 05:08:12 +00:00
Drew Weymouth 6be5e2d4cb Fix #809 - check last instead of first lyric timestamp to check if synced 2026-01-16 09:06:58 -08:00
Siiiiinth 0fb1e5fa17 wip ui 2026-01-14 22:47:31 +01:00
Siiiiinth 79024784ec cycle the playQueue from lastTrack -> firstTrack when clicking Next on lastTrack 2026-01-09 09:35:26 +01:00
Siiiiinth 2c19f9f926 cycle album when loopAll is checked 2026-01-08 23:02:06 +01:00
Siiiiinth 62332551ed fixed ForceRestartPlayback 2026-01-05 00:29:37 +01:00
Siiiiinth 81c935fdd0 moved logic to playbackengine, forceRestart preserves pause state 2026-01-05 00:25:33 +01:00
Siiiiinth 0bdc991dc8 renamed stopAfterCurrent -> pauseAfterCurrent 2026-01-03 19:21:47 +01:00