Task board: Round 19 section; versioning convention in CLAUDE.md

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-03 11:30:37 -04:00
parent 502a6106f4
commit 1bf346229c
2 changed files with 47 additions and 1 deletions

View File

@ -117,6 +117,15 @@ persistence) → GUI (Qt widgets that read the manager and connect to its signal
root are never moved; the new path syncs cross-machine via the `location`
newest-wins merge in `conflict_resolver`). Nothing else may move or rewrite
music files. The library JSON is the source of truth for everything else.
- **Versioning & self-update:** `__version__` in `lintunes/__init__.py` is
the single source of truth (`setup.py` regex-reads it, never imports the
package). Claude bumps minor for feature rounds and patch for fix-only
rounds as part of each round's final commit; trav decides major bumps. The
status-bar version button (`gui/version_button.py` + `lintunes/updater.py`)
checks `origin` shortly after launch and every 4 h, and a click runs
`git pull --ff-only` then re-execs the app — pushing `master` is
effectively releasing to the other machines (a new pip dependency still
needs a manual `pip install -e .` there).
- `scripts/` holds one-off maintenance tools (`audit_artwork.py`,
`recover_artwork.py`, `clear_computed_ratings.py`) run manually against a data
dir; most default to dry-run and need `--write` to mutate files.

View File

@ -3,7 +3,44 @@
Legend: `[ ]` todo · `[~]` in progress · `[x]` done.
When a round closes, move its finished items to `tasks-done.md`.
## Round 18 (current) — the 2026-07-02 backlog batch
## Round 19 (current) — version display, git self-update, BPM fix
Plan reference: `~/.claude/plans/some-fixes-features-for-lintues-merry-journal.md`.
Tests land in `tests/test_round19.py`. First versioned release: **0.1.0**.
- [x] Version number bottom-left in the status bar: `__version__` in
`lintunes/__init__.py` is the single source of truth (setup.py
regex-reads it); shown by the new `gui/version_button.py`; tooltip
carries the git short hash so two machines on the same version but
different commits are distinguishable.
- [x] Git self-update: new `lintunes/updater.py` fetches upstream ~10 s
after launch and every 4 h (daemon threads, lastfm.py pattern). Commits
behind → a `*` on the version button; click → confirm dialog →
`git pull --ff-only` → clean quit (flush + player shutdown) →
`os.execv` relaunch on the new code (positional file args stripped so
they don't re-import). Pull failures (offline / conflicting local
edits) surface in the status bar and leave the running app untouched.
Not a git checkout / no upstream → button is just a static label.
Limitation: a round that adds a pip dependency still needs a manual
`pip install -e .` per machine. Pushing `master` is now effectively
"releasing" to the other machines.
- [x] Status-bar bug found while verifying: the totals label was added with
`addPermanentWidget(…, stretch=1)`, which squeezed the transient
message area to zero width — every `showMessage` (scrobbles, tag-write
errors, import status, sync notices) has been invisible since the
label landed in Round 5. Both readouts are now non-permanent widgets:
a transient message temporarily replaces them, then they return.
- [x] BPM tap button: whole-session averaging — removed the 8-tap rolling
window in `tap_tempo.py` (trav's "no rhythm" suspicion was the window,
not him). All taps since the session started are averaged; a >2.5 s
gap still begins a new session. Verified live under Xvfb: 8 fast +
8 slow taps read the blended overall average, not just the recent 8.
- [ ] **verify by eye in the running app**: version reads bottom-left;
after the next `git push`, machine 2 shows the `*` within ~10 s of
launch and click-to-update pulls + restarts; tap out a real song's
BPM and sanity-check the number.
## Round 18 — the 2026-07-02 backlog batch
Plan reference: `~/.claude/plans/can-you-knock-out-synthetic-horizon.md`.
Tests land in `tests/test_round18.py`. (The equalizer backlog item moved to