Round 17: task batch + cruft sweep (ratings, art download, MPRIS/exit/BT fixes)
Features:
- Rating hover dots: hovering a rating cell shows 5 clickable slots
(RatingDelegate); click slot k sets k stars, clicking the current count
clears. Undoable, library-only (ratings never rewrite music files).
- Search bar moved into the Library header strip, right of the Library
button, so the tracklist top aligns with the playlist tree.
- Right-click "Download Album Art…": iTunes Search API (no key), off-thread
fetch, preview/confirm dialog with Next Result, embeds via write_artwork
+ size refresh, invalidates the MPRIS art cache.
Fixes:
- MPRIS media keys: PropertiesChanged sent invalidated_properties as "av"
instead of "as", so gsd-media-keys dropped it and never MRU-bumped
lintunes (why the play/pause key kept waking stale players). Now an
explicit QDBusArgument string array; loopback-verified sa{sv}as.
- Exit segfault: ordered Player.shutdown() (stop, clear source, detach
buffer/audio outputs) from closeEvent/aboutToQuit; scripted run exits 0.
- BT zero-volume after pause/resume: volume re-applied on resume, device
swap, and BufferedMedia (needs verify on the affected machine).
Cruft sweep:
- Tag writes filtered to EDITABLE_FIELDS; failures logged + surfaced in
the status bar (was a swallowed print).
- O(n²) import fixed (location index + cached max track id); O(1)
refresh/reveal via TrackTableModel row index.
- lastfm: scrobble-queue thread lock, login prefs write marshalled to the
GUI thread, JSON/raise_for_status order fixed.
- Shared read_json/write_json; TableSettingsMixin dedupes view settings.
TASKS.md rewritten as a resumable board; tests in tests/test_round17.py
(251 total pass).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@ -1,5 +1,23 @@
|
||||
## Done
|
||||
|
||||
### Misc (recorded 2026-07-02, moved from TASKS.md during the Round 17 rewrite)
|
||||
|
||||
- [x] Confirm Last.fm scrobbling works
|
||||
- [x] Volume slider between the visualizer and the timeline
|
||||
- [x] Preferences: per-area color adjustments (background, button
|
||||
round-rects, now-playing text + its backing, tracklist stripe gray), each
|
||||
with a live black↔white slider
|
||||
- [x] Visualizer: discrete light-gray-on-light-gray mode
|
||||
- [x] Cut/copy/paste tracks (Ctrl+X/C/V); paste inserts above the selected
|
||||
track, not at the end
|
||||
- [x] Auto-scroll the track list when dragging a track above/below the
|
||||
visible area
|
||||
- [x] Move data dir to `/run/media/trav/tummult/music/lintunes/` +
|
||||
relative track paths (see Round 15)
|
||||
- [x] Real library import: 21,382 tracks, 462 playlists + 21 folders,
|
||||
18 smart playlists (3 kept as snapshot), 5 missing files, 1,324
|
||||
case/unicode path fixes (see Round 15)
|
||||
|
||||
### Round 16 (2026-07-02) — Live multi-machine sync + conflict alerts
|
||||
|
||||
Both machines now reflect each other's changes within a couple seconds, with
|
||||
|
||||
Reference in New Issue
Block a user