Task board: Round 19 section; versioning convention in CLAUDE.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@ -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.
|
||||
|
||||
39
TASKS.md
39
TASKS.md
@ -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
|
||||
|
||||
Reference in New Issue
Block a user