b36125fa67
ci: one workflow graph, so nothing publishes on red; add govulncheck and npm audit (M462 #4984)
bvandeusenandClaude Opus 5.52026-10-06 09:51:37 -04:00
3217e10168
fix(deps): clear known vulnerabilities in what ships; build on the Go line CI tests (M462 #4984)
bvandeusenandClaude Opus 5.52026-10-06 09:51:37 -04:00
2f3fbccab6
feat(auth): first account on a new server needs the setup token from the server log (M462 #4982)
bvandeusenandClaude Opus 5.52026-10-06 09:35:52 -04:00
46194a609d
fix(auth): build password-reset links from an operator-set public address, never the Host header (M462 #4981)
bvandeusenandClaude Opus 5.52026-10-06 09:32:10 -04:00
24b767c23b
feat(server): cap request bodies, bound body reads, private cache headers, JSON-only cookie writes (M462 #4979)
bvandeusenandClaude Opus 5.52026-10-06 08:34:26 -04:00
755f997b0d
feat(auth): sessions expire server-side; password change and reset end other sessions (M462 #4978)
bvandeusenandClaude Opus 5.52026-10-06 08:32:39 -04:00
3638d1d822
Merge pull request 'M400: acoustic duplicate detection, history-preserving merge, and fingerprinting settings' (#134) from dev into main
bvandeusen2026-09-11 20:56:55 -04:00
516413f4ca
fix(admin): re-acquisition settings take effect without a restart, and say why a save was refused (#3936, #3937)
bvandeusenandClaude Opus 52026-09-11 20:15:35 -04:00
37d4906033
test(api): pass fingerprint settings to Mount in the route-registration test (M400 #3913)
bvandeusenandClaude Opus 52026-09-11 17:58:05 -04:00
077ae61235
feat(admin): fingerprinting settings — on/off, length, match threshold, concurrency, sweep interval (M400 #3913)
bvandeusenandClaude Opus 52026-09-11 17:53:55 -04:00
c8bf9dc929
refactor(library): move detection matches on the audio hash, not size and duration (M400 #3914)
bvandeusenandClaude Opus 52026-09-11 17:31:42 -04:00
6379b6c31d
feat(library): the duplicate sweep — propose duplicate groups from fingerprints (M400 #3910)
bvandeusenandClaude Opus 52026-09-11 17:00:07 -04:00
d2985f3841
Acoustic fingerprints at ingest, a delete that can't lose history, and a reproducible candidate draw (#132)
bvandeusen2026-09-11 14:43:00 -04:00
71d4335584
docs(readme): the music mount is writable — Minstrel deletes when asked
bvandeusenandClaude Opus 52026-09-11 14:34:28 -04:00
702b48ce36
fix(lidarrquarantine): pass dataDir at the four stub-client test constructors
bvandeusenandClaude Opus 52026-09-11 14:34:28 -04:00
8d1f2674fd
feat(web): admin page for files the library has lost — #2527bvandeusen2026-08-16 12:03:59 -04:00
845f45fb0b
refactor(web): one relativeTime for the triage surfaces — #2527bvandeusen2026-08-16 12:01:13 -04:00
aab90a7a39
feat(android): name the missing file behind a greyed playlist row — #2527bvandeusen2026-08-16 11:57:55 -04:00
4c49ee2cc6
feat(web): a playlist entry whose file is missing greys out and is skipped — #2527bvandeusen2026-08-16 11:55:36 -04:00
4dd0a58d63
feat(api): admin surface for files the library has lost — #2527bvandeusen2026-08-16 11:48:45 -04:00
c3f3a17c6d
feat(library): a missing file stays in the playlist, greyed and unplayable — #2527bvandeusen2026-08-16 11:43:05 -04:00
20bd7bfaf8
fix(android): let list content reach the MiniPlayer — #2681bvandeusen2026-08-16 10:40:05 -04:00
aa9f534f3c
Merge pull request 'Genre index: sort A–Z, and repair casing damage at scan time' (#124) from dev into main
v2026.08.08
bvandeusen2026-08-07 21:40:33 -04:00
8e1d25a772
fix(scanner): repair acronym and apostrophe casing on genre tags — #2468bvandeusen2026-08-07 14:43:36 -04:00
4509f740f8
feat(web): sort the genre index A–Z as well as by count — #2468bvandeusen2026-08-07 13:11:10 -04:00
011b4d9a9c
Merge pull request 'ci(release): verify a tag release actually shipped its artifacts' (#123) from dev into main
v2026.08.07
bvandeusen2026-08-07 08:32:48 -04:00
a254cb2273
ci(release): close the verify blind spot, check preconditions before the build
bvandeusen2026-08-07 08:27:09 -04:00
e368b82f0a
ci(release): fail loudly when a tag release ends up without its APK
bvandeusen2026-08-07 08:23:11 -04:00
d5aa081157
Merge pull request 'Recommendation metrics: publish the margin of error on every delta' (#122) from dev into main
bvandeusen2026-08-06 21:50:41 -04:00
304de88c50
test(tuning): assert headers by exact accessible name — #2495bvandeusen2026-08-06 21:27:22 -04:00