Files
lintunes/TASKS.md
Trav 1dd128b7f4 Add per-area color preference sliders
Five grayscale (black->white) sliders in Preferences that update live:
outer-chrome background (QPalette.Window), the rounded transport button
boxes, the now-playing panel, the now-playing text, and the row stripes
(QPalette.AlternateBase). Defaults are None ("inherit current") so nothing
changes until the user drags. Decouples the button boxes from the stripe
color (they used to share palette alternate-base). Live preview via
Preferences.set_live (no disk write); persisted ~0.4s after the drag.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 21:41:49 -04:00

60 lines
4.3 KiB
Markdown

# LinTunes — master task list
## Open / future
- [x] confirm last fm works
- [x] do do a volume slider, this can some space between the visualizer and the timeline.
- [x] I'd like in the preferences to have a colors adjustment for each area setting: background, round-rec of buttons, the (currently white) behind the track/artist/album text, the color of that text itself, and the color of the gray of the stripes in the tracklisting. Each of those should have a slider from black to white that appears immediately so the user can tweak it to their liking.
- [x] visualizer should have more discrete mode that's a light gray on light gray
- [ ] we need to be able to make smart playlists. They should also be properly imported from itunes. We need all the fields that itunes 12 is able to work with when creating a smart playlist. This is a complicated feature! We also need to be able to edit the criteria of a smart playlist once it is created. Smart playlists should have a little Rotated Floral Heart Bullet (❧) to the left of their title in the playlist list on the left.
- [ ] the ability to not just copy/paste a song but also to ctrl-x cut a song from one space and ctrl-v paste it somewhere else. AND when pasting a song(s) it should paste above the currently selected track. That's where it pastes to, not to the end of the playlist.
- [ ] if the user is dragging a track around and they drag above the top of the track list, the track list should scroll up. Same if they hover the track below the track list at the bottom it scrolls down. The track list should scroll in the direction the user is hovering the track. This helps the user move a track to a place in a playlist that isn't currently seen.
- [ ] the app should be a little more agressive about comandeering the play/pause button from other media playing on the system. If I was playing a youtube video and that was associated with play/pause, but it's been hours since I played it, and I started playing music in lintunes, I would expect the play/pause button to pause the lintunes music when I hit it— not also start playing a youtube video, you know what I mean?
## when we're ready to go live
- [ ] (`tagging.read_embedded_artwork`); it is NOT stored in library.json.
<!-- Context added by Claude (Opus 4.8), 2026-06-19 — the "migrate 100% of my
artwork" question is now ANSWERED & TOOLED, only the grid-view feature remains:
- lintunes shows art from embedded tags only; the importer never touched art.
- Audited the live library vs iTunes' XML "Artwork Count" + the on-disk
`Album Artwork/` cache (scripts/audit_artwork.py, read-only). Result:
13,571 tracks already have embedded art; 790 more are recoverable by
copying an album-mate's embedded art; 0 cache-only and 0 hard residue;
7,015 genuinely have no art; 6 files missing on disk.
=> after recovery, 100% of art-bearing tracks (14,361/14,361) are covered.
- iTunes' `.itc` cache holds NO art that we can't already recover: `Cache/` is
keyed by track persistent_id but only mirrors already-embedded art (0 extra);
`Download/Store` art uses an opaque id, but every track it would cover already
has art via embed or album-propagation, so residue is 0. No `.itl` parsing or
online refetch needed.
- TO FINISH MIGRATION (before/after the live import): run
python3 scripts/recover_artwork.py --data-dir <data> --write
(defaults to --dry-run; embeds the 790 album-propagated covers into the files
via tagging.write_artwork). scripts/audit_artwork.py re-checks coverage.
- `.itc` decoder lives in lintunes/itc.py (tests/test_round9.py). -->
- [ ] **Move data dir** to `/run/media/trav/tummult/music/lintunes/` once trav
confirms the real import looks right (re-run import or copy `./data`, update
config with `--save-config`). Where the data dir is should be a setting in the preferences of
- [ ] Run the real import on trav's library and eyeball the result (fixture in
`./itunes-test-library/`).
1. `python3 scripts/audit_artwork.py --data-dir <data> --xml "<iTunes XML>"`
(read-only) to re-confirm the counts on the freshly-imported library.
2. `python3 scripts/recover_artwork.py --data-dir <data> --dry-run`, review,
then re-run with `--write` to embed the covers into the files.