Add the step-by-step fixer and library types

Each pair is a Music (Artist/Album/01 Title) or Soundtracks (Album/01 Title)
library. The new Fixer tab takes the master, then the slave, through four
reviewed steps: folder structure, album tags (optional MusicBrainz lookup;
the slave reuses the fixed master's tags), folder names and file names,
then links the two libraries. Every fix is an undoable operation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
cdnutterandClaude Opus 5.5 committed 2026-09-30 09:10:48 -07:00
1 parent b11d0806c1
commit 428935dc58
19 files changed
+3503 -23

No files matched your search

+26
View File
@@ -7,6 +7,32 @@ up disk space only once, while both libraries keep looking exactly the same to P
It ships as a single Go binary with an embedded React web UI and SQLite state, packaged as a small Docker image, in the style of
[qui](https://github.com/autobrr/qui).
## Workflow: fix, organize, then link
Each library pair has a **type**: **Music** (recommended layout `Artist/Album/01 Title.flac`) or **Soundtracks** for video game and film
soundtracks (`Album/01 Title.flac`, named by game or film). The type sets the default naming; the *Organize* tab can change it.
The **Fixer** tab takes each library through the same steps, the **master first, then the slave**, and then links the two:
1. **Folder structure.** Every album in its own folder at the right depth. Songs outside an album folder move into one named from their
tags; extra folders around an album (a composer folder around a soundtrack, `Metal/Artist/Album`, a `FLAC` folder inside an album) are
removed; songs in disc folders (`CD2`, `Disc 2`) get their disc number; missing titles, track numbers, albums and artists are filled in
from the folder and file names (`Album (2010) [FLAC]` → `Album`). When several albums sit in the same extra folder it may be a category
you want to keep (`Video Games/…`), so those moves are listed but not selected, with a hint to give that folder its own naming.
2. **Album tags** (optional). Each album is looked up on MusicBrainz: the best few releases are compared with your songs' titles (so a promo
single never beats the album it is named after), songs are matched to tracks by number or title, and the corrected titles, track and
disc numbers, album artist and date are shown per album for review, with a confidence rating. You can pick another release or edit the
album by hand. In the slave, albums that are also in the (fixed) master take the master's tags instead, so both libraries match.
MusicBrainz allows about one request a second, so large libraries take a while; limit it to a folder or skip albums whose tags are already
complete.
3. **Folder names.** Artist and album folders are renamed from the tags. Whole album folders move, so covers and booklets stay with them.
4. **File names.** Songs are renamed from the tags; multi-disc albums get `Disc 01`, `Disc 02` folders.
5. **Link the libraries.** Scan, fix any folders still named differently, link the identical songs, then open **Review** for the rest.
Every step is a check first: nothing changes until you apply the fixes you selected, each fix is an operation in History that can be undone,
and dry run applies. Problems that need a person (a song without an album tag, a folder with songs from several albums) are listed with an
**Edit album** button. A step is marked done when everything in it was fixed; you can also mark it done or skip it yourself.
## What it does
Files are matched by their **path relative to each library root**. Any folder layout works (`Artist/Album/Title.ext`,