Skip to content

Release 0.10.0: ISRC matching for linked event tracks and duplicate reconciliation - #69

Merged
Adridot merged 3 commits into
masterfrom
claude/release-0.10.0
Oct 9, 2026
Merged

Adridot merged 3 commits into
masterfrom
claude/release-0.10.0

Conversation

@Adridot

@Adridot Adridot commented Oct 9, 2026

Copy link
Copy Markdown
Owner

Summary

Release 0.10.0. Since 0.9.0, a track added to an event from a Deezer link was only recognised as already in the Rekordbox collection when Syncbox held a download record for that exact Deezer item. That record rarely exists, so tracks plainly in the collection were downloaded again and duplicated in Rekordbox.

  • ISRC matching for exact-source rows. A Deezer, YouTube or SoundCloud event track with no download record is matched to an active collection content carrying the same ISRC, under the existing duration guard. Title/artist similarity and staged-file scoring stay forbidden, so a remix never lands on its original. Apply re-verifies the ISRC before any Rekordbox write.
  • Reconciliation in Health > Backups. A previewed, trash-first repair of the duplicates 0.9.0 already produced:
    • a ready download duplicating one collection content: the download is trashed first, then the row is matched (no Rekordbox write);
    • an applied duplicate: inside one guarded mutate(), the event tag moves to the original and the duplicate is soft-deleted, then the download is trashed;
    • a refused trash goes through the existing 428 consent loop; after a commit it is reported and offered again as a cleanup item.
    • The preview reports ISRC coverage (rows with/without ISRC, candidates, Deezer downloads in Rekordbox without an ISRC tag).
  • Release preparation. Version 0.10.0 everywhere (ui/package.json, sidecar, shell, both components, lockfiles, release-build.json dated 2026-10-09, README install links, reproducibility expectations), license inventories regenerated, component manifests from the hosted Release Pin run.

OpenSpec change: openspec/changes/reconcile-deezer-event-tracks-by-isrc. Read-only preview on the owner's production data: 27 linked tracks all with ISRC, 16 proposed relinks (all checked by hand as the same recordings), 0 Deezer downloads without ISRC.

Test plan

  • Sidecar suite (uv run --locked --exact --managed-python pytest -q)
  • UI typecheck and tests
  • generate_release_licenses.py --check, uv lock --check x3, cargo metadata --locked, git diff --check
  • CI, CodeQL and Release Pin / component manifest green on this PR
  • release.yml build-only preflight (both roots, ZIP comparison)
  • Owner runs the reconciliation from Health > Backups on the released build (task 5.2)

🤖 Generated with Claude Code

Adridot and others added 3 commits October 9, 2026 15:45
A Deezer, YouTube or SoundCloud event track with no recorded provenance
is now matched to an active collection content carrying the same ISRC,
under the existing duration guard. Fuzzy title/artist matching and
staged-file scoring stay forbidden for these rows, so a remix never lands
on its original. Apply re-verifies the ISRC before any Rekordbox write.

Health > Backups gains a previewed, trash-first reconciliation of the
downloads 0.9.0 already produced: a ready download that duplicates a
collection content is matched to it, an applied duplicate is replaced by
the original inside one guarded mutation, and a refused trash is retried
through the consent loop. The preview reports ISRC coverage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Version, release date (2026-10-09) and lockfiles aligned; release license
inventories regenerated. optional_component.json and
web_audio_component.json stay at the published 0.9.0 pins until
release-pin.yml produces the hosted 0.10.0 manifests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From Release Pin run 37939332081 on this branch; only version, archive
name, download URL, size and SHA-256 change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Adridot
Adridot merged commit 35aeb74 into master Oct 9, 2026
11 checks passed
@Adridot
Adridot deleted the claude/release-0.10.0 branch October 9, 2026 14:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant