- 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.
- 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
- 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