Commit graph

  • 09d4bbc530 Security UI: confirm-password field for admin password + recovery reset BoulderBadgeDad 2026-06-10 22:41:23 -0700
  • 2bb9bc1357 Settings: reorganize Security into clear groups with visible prerequisites BoulderBadgeDad 2026-06-10 22:38:10 -0700
  • 5c80ee1010 Login recovery (UI): Settings setup + "Forgot password?" on the login screen BoulderBadgeDad 2026-06-10 22:28:07 -0700
  • 613688a9ad Login recovery (DB + backend): security question to reset a forgotten password BoulderBadgeDad 2026-06-10 22:24:54 -0700
  • 9e40f5c12d tests: pin/login mode isolation — PIN gate unaffected when login off; both-off = unguarded BoulderBadgeDad 2026-06-10 22:19:29 -0700
  • 21dfbb39b0 Native login (increment 3/3): login screen, set-password, Settings toggle, logout BoulderBadgeDad 2026-06-10 22:10:33 -0700
  • 92cbef90f9 Native login (increment 2/3): login/logout endpoints + require_login gate BoulderBadgeDad 2026-06-10 22:01:53 -0700
  • 8e1b678d6f Native login (increment 1/3): per-profile password DB layer BoulderBadgeDad 2026-06-10 21:57:44 -0700
  • fb8c8a71c6 Security UI: Settings toggles for reverse-proxy mode + auth-proxy header BoulderBadgeDad 2026-06-10 21:17:26 -0700
  • 86d0a0dd62 Security: trust a forward-auth proxy user header (Tier 3) BoulderBadgeDad 2026-06-10 20:57:48 -0700
  • 5e5bc12e45 Security: add gated security headers in reverse-proxy mode (Tier 2) BoulderBadgeDad 2026-06-10 20:48:51 -0700
  • 0d1e949798 Security: brute-force limiter on the launch-PIN unlock (Tier 2) BoulderBadgeDad 2026-06-10 20:47:46 -0700
  • aa3aae695d Security: opt-in reverse-proxy mode (ProxyFix + Secure cookie) + nginx guide BoulderBadgeDad 2026-06-10 20:36:49 -0700
  • d82d02b921 Artist Sync: unify with deep scan — server-diff stale removal, scoped to one artist BoulderBadgeDad 2026-06-10 19:43:25 -0700
  • 4d1b9a5639 Artist Sync: guard stale-removal against an unreachable mount + gate it admin-only BoulderBadgeDad 2026-06-10 19:33:44 -0700
  • 5bc27e6268 #843 follow-up: key the no-state cache save by the FIRST artist BoulderBadgeDad 2026-06-10 18:57:43 -0700
  • 0afa3c9705 Fix: "Discovery state not found" when fixing a match after restart/import (#843) BoulderBadgeDad 2026-06-10 18:49:32 -0700
  • a15fe15842 Fix: auto-sync capped public Spotify playlists at 100 tracks (#838) BoulderBadgeDad 2026-06-10 18:31:43 -0700
  • 56bdcee434 Fix: rejected slskd download hung the task at 'downloading' forever (#836) BoulderBadgeDad 2026-06-10 18:16:22 -0700
  • 27d738e7b1 Fix: Find & Add library search buried exact matches (case-sensitive ordering) BoulderBadgeDad 2026-06-10 17:23:13 -0700
  • 1517794e23 Fix: manual Find & Add recreated the Jellyfin/Emby playlist (#837) BoulderBadgeDad 2026-06-10 16:55:08 -0700
  • e7bc77cb04 Use app confirm modal for verification review actions dev 2026-06-11 01:53:05 +0200
  • b36392c62b Fix: a '/' in a song title was treated as a path separator (#835) BoulderBadgeDad 2026-06-10 16:29:09 -0700
  • 37ea6604c7 Fix import artist override and verification review dev 2026-06-11 01:24:22 +0200
  • 5896f2dcc6 fix: eager config load + check acoustid.enabled for verification pill dev 2026-06-11 01:09:05 +0200
  • 97b40cbd43 feat(verification): review queue — listen/compare/approve/delete unverified downloads dev 2026-06-10 19:40:07 +0200
  • 41536384c3 fix(verification): persist status on ALL pipeline success exits + history backfill dev 2026-06-10 19:25:07 +0200
  • 8dcad2be4e feat(downloads): Unverified review filter + visible retry progress dev 2026-06-10 19:12:40 +0200
  • 2a11dc961a feat(verification): persist status into library_history, badge on Downloads completed list dev 2026-06-10 19:03:55 +0200
  • 9d1d09a571 feat(verification): persist status (db+tag), surface on Downloads, scan-aware force-imports dev 2026-06-10 18:36:23 +0200
  • 8e6820dbdf feat(verification): status vocabulary, DB column, SOULSYNC_VERIFICATION tag dev 2026-06-10 18:30:49 +0200
  • b981230d07 refactor(scanner): use shared verification core; stop false-flagging cross-script dev 2026-06-10 15:13:43 +0200
  • 967ad2a026 refactor(verification): import path delegates to shared core dev 2026-06-10 14:56:45 +0200
  • d989f25220 feat(verification): shared evaluate() PASS/SKIP/FAIL decision core dev 2026-06-10 14:46:32 +0200
  • cf0a17c14a feat(verification): shared normalize() core for import + scan dev 2026-06-10 14:43:57 +0200
  • c10412b5ae
    Merge 060d7c2b1c into cc18ec266e dlynas 2026-06-11 01:25:57 +0200
  • cc18ec266e Profiles: visual revamp of the Manage Profiles modal BoulderBadgeDad 2026-06-10 16:17:04 -0700
  • c3ff333934 tests: make the spotify source-adapter test order-independent BoulderBadgeDad 2026-06-10 15:55:41 -0700
  • 783839349c Automations: per-profile playlist source reads in auto-sync (part 2) BoulderBadgeDad 2026-06-10 15:45:45 -0700
  • 6980253a96 Automations: run each as its OWNER profile in the background (part 1 of per-profile sync) BoulderBadgeDad 2026-06-10 15:37:56 -0700
  • 35ffc9f5e2 tests: use soulsync-testdb- prefix in the web_server endpoint tests BoulderBadgeDad 2026-06-10 14:27:35 -0700
  • e5b30d6e63 Profiles: restore hand cursor on the clickable Service Status section BoulderBadgeDad 2026-06-10 14:10:58 -0700
  • 186cbf0fcc Profiles: Tidal logo on a light disc (dark logo) in My Accounts BoulderBadgeDad 2026-06-10 13:49:25 -0700
  • af1a35385c Profiles: ListenBrainz in My Accounts; Personal Settings now just server library BoulderBadgeDad 2026-06-10 13:32:29 -0700
  • 60b9fe10e9 Profiles: per-profile Tidal self-auth (playlists) — with a safe token-save redirect BoulderBadgeDad 2026-06-10 13:11:59 -0700
  • 7eaed1d533 Profiles: per-profile Spotify builds for own-app creds OR a token cache BoulderBadgeDad 2026-06-10 12:28:03 -0700
  • e8bd9c8018 Profiles: per-profile Spotify self-auth (shared app) + My Accounts modal + read wiring BoulderBadgeDad 2026-06-10 12:21:17 -0700
  • c154aa5442 Profiles: remove the admin Connected Accounts manager (pivot to pure self-auth) BoulderBadgeDad 2026-06-10 11:48:31 -0700
  • 91eaaa4828 Profiles: revert Service Status modal to admin-only BoulderBadgeDad 2026-06-10 11:43:22 -0700
  • 355b39e3b5 Fix: launch PIN re-triggered the first-run setup wizard every visit (#842) BoulderBadgeDad 2026-06-10 11:40:47 -0700
  • 7856433c6f Profiles: dark disc for white-wordmark logos (Plex/SoulSync) in the modal BoulderBadgeDad 2026-06-10 11:00:56 -0700
  • d018c19cb7 Profiles: fix server logos in the quick-switch modal (+ Settings Jellyfin) BoulderBadgeDad 2026-06-10 10:55:29 -0700
  • 22947794e0 Profiles: label the no-auth Spotify composite everywhere it's shown BoulderBadgeDad 2026-06-10 10:41:09 -0700
  • 6c05ec3670 Profiles: fix modal showing wrong active source + hero header / panel depth BoulderBadgeDad 2026-06-10 10:26:29 -0700
  • cd59d75531 Profiles: richer Service Status modal + surface configured-vs-effective source BoulderBadgeDad 2026-06-10 09:58:47 -0700
  • 22202104ef Profiles: redesign the Service Status modal — active source/server/download switcher BoulderBadgeDad 2026-06-10 09:45:32 -0700
  • 156c890de7 Profiles Phase 1+2 (UI): admin Connected Accounts manager + quick-switch modal BoulderBadgeDad 2026-06-10 08:58:43 -0700
  • 5cbef438e4 Discogs: fix master/release ID collision fetching the wrong album rollingbase 2026-06-10 15:01:31 +0200
  • d2a167ff5f Profiles: review fixes — close two gating gaps + reject whitespace secrets BoulderBadgeDad 2026-06-10 00:48:03 -0700
  • bb0f68a8bf Profiles Phase 2 (drag): make the hybrid-source reorder actually draggable BoulderBadgeDad 2026-06-10 00:43:04 -0700
  • 4ef12d7ddf Profiles Phase 2 (backend): per-profile credential selection endpoints BoulderBadgeDad 2026-06-10 00:40:26 -0700
  • af24a08cc7 Profiles Phase 3: gate shared-destructive endpoints to admin server-side BoulderBadgeDad 2026-06-10 00:37:56 -0700
  • d1dd6ed714 Profiles Phase 1: admin endpoints to manage service-credential sets BoulderBadgeDad 2026-06-10 00:33:13 -0700
  • daee96f814 Profiles Phase 0: service-credential-sets foundation (data + resolver, dormant) BoulderBadgeDad 2026-06-10 00:27:48 -0700
  • 222653036b
    Merge pull request #834 from Nezreka/dev 2.6.9 BoulderBadgeDad 2026-06-09 23:32:10 -0700
  • e16216fc2d Tests: register watchlist-history.js in script-split integrity (#831 follow-up) BoulderBadgeDad 2026-06-09 23:17:19 -0700
  • 931167f197 Release 2.6.9: version bump + docker-publish default + What's New changelog BoulderBadgeDad 2026-06-09 23:03:49 -0700
  • 8983299130 Security: stop GET /api/settings from shipping decrypted secrets to the browser BoulderBadgeDad 2026-06-09 22:50:18 -0700
  • 0c1dd6c2a9 Delete: resolve the real on-disk file when DB metadata uses curly quotes (#833) BoulderBadgeDad 2026-06-09 22:28:53 -0700
  • 66724186b1 Security: enforce the launch PIN server-side, not just a client overlay (#832) BoulderBadgeDad 2026-06-09 21:58:44 -0700
  • 111af5150e Watchlist page: hued action chips, meta chips, Global Settings reskin (#831 round 3) BoulderBadgeDad 2026-06-09 21:22:02 -0700
  • 34e0503fad Watchlist scan deck v2: portrait-anchored hero, zero layout shift (#831 polish) BoulderBadgeDad 2026-06-09 20:57:27 -0700
  • 9f12bdfef6 Watchlist: bespoke live scan deck + persistent per-run Scan History (#831 round 2) BoulderBadgeDad 2026-06-09 20:35:16 -0700
  • e8cde40d22 Watchlist: show WHICH tracks a scan found/added + group Download Origins (#831) BoulderBadgeDad 2026-06-09 20:14:02 -0700
  • bcd69c8baa Multi-artist tags: Search → Download Now finally knows its metadata source (Netti93) BoulderBadgeDad 2026-06-09 17:10:03 -0700
  • e32e2e5e14 Sync: append mode actually dedupes — stop re-adding the whole playlist (#823) BoulderBadgeDad 2026-06-09 16:31:05 -0700
  • 0939585620 Matcher: bracketed subtitles no longer read as different songs (#825) BoulderBadgeDad 2026-06-09 15:38:49 -0700
  • ca040d2c10 Discography UI: show WHY tracks were skipped, not a flat "No new tracks" (#830) BoulderBadgeDad 2026-06-09 14:53:30 -0700
  • db65e783c7 Discography: keep collab tracks credited as one combined string (#830) BoulderBadgeDad 2026-06-09 14:35:54 -0700
  • 1d16ac7978 Downloads: reuse an album's existing folder so batches don't split it (#829) BoulderBadgeDad 2026-06-09 13:47:25 -0700
  • 26368a80ab Dead File Cleaner: don't flag a whole library when paths just aren't reachable (#828) BoulderBadgeDad 2026-06-09 13:08:41 -0700
  • 90174de4b2 Spotify: rename "Spotify Free" → "Spotify (no auth)", default enrichment to it BoulderBadgeDad 2026-06-09 12:55:19 -0700
  • fd3ce8ba6e Settings: add "Use Spotify Free for background enrichment" toggle BoulderBadgeDad 2026-06-09 12:27:44 -0700
  • 38461295c2 Spotify: enrichment can prefer Free, and the budget→Free bridge actually diverts BoulderBadgeDad 2026-06-09 12:24:57 -0700
  • 4a6d6fc17b Spotify Free: close the album-search gap via the artist's discography BoulderBadgeDad 2026-06-09 12:05:40 -0700
  • 2bc86e3022 Settings: don't auto-save while on the Logs tab (#827) BoulderBadgeDad 2026-06-09 11:26:26 -0700
  • 8633386f00 Wishlist: manual "add to wishlist" now skips already-owned tracks (#825) BoulderBadgeDad 2026-06-09 10:55:45 -0700
  • 8d133ecd60 Wishlist: serialize album-bundle downloads so they stop flooding the search pool (Sokhi #740) BoulderBadgeDad 2026-06-09 10:06:53 -0700
  • 6fa956d63a Sync: automated syncs honor the configured playlist sync mode instead of hardcoding 'replace' (#823) BoulderBadgeDad 2026-06-09 08:49:46 -0700
  • a79816ad69 Full release dates: store + write yyyy-mm-dd end to end (#824 part 2) BoulderBadgeDad 2026-06-08 23:32:42 -0700
  • 319e90dead Tag writer: stop downgrading full release dates to just the year (#824) BoulderBadgeDad 2026-06-08 23:15:31 -0700
  • e6bf7c26de Watchlist: stop treating different decimal-volume albums as duplicates (Sokhi — the real bug) BoulderBadgeDad 2026-06-08 20:46:40 -0700
  • 13dca2dea6 Cover Art Filler: write cover.jpg to the RESOLVED folder, not the raw DB path (Sokhi — the actual bug) BoulderBadgeDad 2026-06-08 18:25:50 -0700
  • 2f3ade8acb Cover Art Filler: scan falls back to the raw file path when mapping fails (Sokhi #fix) BoulderBadgeDad 2026-06-08 17:32:38 -0700
  • d9a1fdb81f Cover Art Filler: log WHY albums are skipped (Sokhi — stop guessing the cover.jpg cause) BoulderBadgeDad 2026-06-08 17:21:07 -0700
  • a4a2135c19
    Merge pull request #820 from failshell/fix/tidal-version-matching-and-rate-limit BoulderBadgeDad 2026-06-08 16:25:51 -0700
  • 5352db0a22 Cover Art Filler: write cover.jpg sidecars, even when files already have embedded art (Sokhi #813) BoulderBadgeDad 2026-06-08 15:35:55 -0700
  • c654deac17 Manual search link paste: clean error on unresolvable link, don't search the raw URL (#813 lock-in) BoulderBadgeDad 2026-06-08 15:14:47 -0700
  • cea0e9d63c Manual download search: paste a Tidal/Qobuz track link to grab the exact version (#813) BoulderBadgeDad 2026-06-08 15:03:54 -0700
  • b2de64e87d Search: extend pasted-link resolution to Discogs (#813) BoulderBadgeDad 2026-06-08 14:37:48 -0700