Adds the admin Suspect sources report (#5410). It lists present tracks whose file name reads like a video title rather than an album track: "(Official Video)", "[Audio]", "Visualizer", "MV", reaction videos. They are grouped by folder, like Missing files.
GET /api/admin/library/suspect-sources. One marker list in Go builds both the Postgres ~* filter and the labels on each row. Matching is on the file's basename only, and missing files are left out.
I calibrated the markers against the live library:
"live in/at" is dropped, because it matches real live albums.
"reaction" only fires on reaction-video phrasing, because a bare match caught "Chain Reaction".
New admin tab after Duplicates. Read-only, loads as you scroll.
Commits: 3f0540cb, 2205b292. dev run 8841 is green on every validation lane.
Adds the admin **Suspect sources** report (#5410). It lists present tracks whose file name reads like a video title rather than an album track: "(Official Video)", "[Audio]", "Visualizer", "MV", reaction videos. They are grouped by folder, like Missing files.
- `GET /api/admin/library/suspect-sources`. One marker list in Go builds both the Postgres `~*` filter and the labels on each row. Matching is on the file's basename only, and missing files are left out.
- I calibrated the markers against the live library:
- "live in/at" is dropped, because it matches real live albums.
- "reaction" only fires on reaction-video phrasing, because a bare match caught "Chain Reaction".
- New admin tab after Duplicates. Read-only, loads as you scroll.
Commits: 3f0540cb, 2205b292. dev run 8841 is green on every validation lane.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Humanz turned out to be YouTube rips: "(Official Video)", "Visualizer", a
reaction video filed as a song, junk disc numbers (#5401). The library holds
about 200 more files named the same way. This report lists them, grouped by
folder like Missing files, with the markers each file name carries.
- GET /api/admin/library/suspect-sources: one marker list in Go builds both
the Postgres ~* filter and each row's labels, so they cannot drift.
Basename only; missing files are left out.
- Markers calibrated on the live library: "live in/at" dropped (real live
albums), "reaction" narrowed (it caught "Chain Reaction").
- Admin tab "Suspect sources", read-only, loads as you scroll; a folder split
across pages is joined back into one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- staticcheck QF1001: the nil-vs-empty check in TestSourceMarkersFor is
now an early continue instead of a negated conjunction.
- The page test mocks #lib/api/admin.js whole, so suspectSourcesNextOffset
was undefined there. Its test moves to admin.suspect-sources.test.ts,
beside admin.scan.test.ts, against the real module.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Adds the admin Suspect sources report (#5410). It lists present tracks whose file name reads like a video title rather than an album track: "(Official Video)", "[Audio]", "Visualizer", "MV", reaction videos. They are grouped by folder, like Missing files.
GET /api/admin/library/suspect-sources. One marker list in Go builds both the Postgres~*filter and the labels on each row. Matching is on the file's basename only, and missing files are left out.Commits:
3f0540cb,2205b292. dev run 8841 is green on every validation lane.🤖 Generated with Claude Code