Commit graph

  • ffb9249ded Fix: mirrored playlist action buttons dead when name has an apostrophe BoulderBadgeDad 2026-06-01 09:02:25 -0700
  • 22f30d3f40 tests: isolate the database so the suite can never touch the real DB BoulderBadgeDad 2026-05-31 23:36:57 -0700
  • efe3895d5d Fix: metadata cache tables silently missing after DB recovery (stale migration marker) BoulderBadgeDad 2026-05-31 23:26:49 -0700
  • 482d5fbc79 Fix: Spotify sync crash 'unexpected keyword argument candidate_pool' BoulderBadgeDad 2026-05-31 23:00:24 -0700
  • 227c9373fe Batches panel: redesign expanded track rows + fix scrollbar clipping BoulderBadgeDad 2026-05-31 22:44:58 -0700
  • f50e67ac9b Batches panel: Phase A visual upgrade (summary, segmented progress, ETA, live track) BoulderBadgeDad 2026-05-31 22:28:43 -0700
  • e072b49138 Track-detail modal: fix stray cover-art placeholder (hidden overridden by display:flex) BoulderBadgeDad 2026-05-31 21:22:05 -0700
  • 134d306511 Track-detail modal: click any download row for a rich, status-aware view BoulderBadgeDad 2026-05-31 20:24:37 -0700
  • e4bbcfda1b Downloads: add per-track detail endpoint for the track-detail modal BoulderBadgeDad 2026-05-31 20:18:35 -0700
  • ba6c39bae3 AcoustID: report errors honestly instead of masking them as 'Skipped' BoulderBadgeDad 2026-05-31 20:10:31 -0700
  • a703c5fdc2 Quarantine: inline 'Approve' button also marks the row Completed BoulderBadgeDad 2026-05-31 18:44:00 -0700
  • bad3eb1fab Quarantine: flip the modal row to Completed after Accept & Import BoulderBadgeDad 2026-05-31 18:28:44 -0700
  • 3060678f29 Quarantine: manage a quarantined file from the download modal (Listen / Accept / Search) BoulderBadgeDad 2026-05-31 15:41:04 -0700
  • ec8c8d939c Quarantine: propagate quarantine_entry_id through the verification wrapper BoulderBadgeDad 2026-05-31 15:40:49 -0700
  • d6f37f9667 Integrity check: don't quarantine valid streamed FLAC as 'zero-length' (#756) BoulderBadgeDad 2026-05-31 11:28:40 -0700
  • 2824c25ec6 Album bundle: let Soulseek staging-misses fall through to per-track/cross-source fallback (#743) BoulderBadgeDad 2026-05-31 11:13:08 -0700
  • 163de6c146 MusicBrainz manual search: field-scope the artist in non-strict mode (#754) BoulderBadgeDad 2026-05-31 09:49:15 -0700
  • ce9ec3f6f4 Manual library match: accept non-numeric library track ids (#754) BoulderBadgeDad 2026-05-31 09:11:46 -0700
  • 3b5a5518a6 Cache cap test: exercise the REAL _run_maintenance_write, not a stub BoulderBadgeDad 2026-05-30 23:31:35 -0700
  • bb2241498f Metadata cache: hard LRU row cap to stop unbounded growth (7.6GB incident) BoulderBadgeDad 2026-05-30 23:22:05 -0700
  • 9231cbd506 Merge branch 'main' into dev BoulderBadgeDad 2026-05-30 22:03:13 -0700
  • ca2f4da9f4 DB backups: verify integrity + never evict the last good backup BoulderBadgeDad 2026-05-30 21:13:04 -0700
  • cc433fad37 Album picker #730: add word-boundary full-phrase bonus (from PR #731 review) BoulderBadgeDad 2026-05-30 19:40:37 -0700
  • 1c2efbb15c Album picker #730: drop the unused artist_name param (review cleanup) BoulderBadgeDad 2026-05-30 19:10:51 -0700
  • 78c6f09e13 Album picker #730: don't reject the right album over an edition suffix BoulderBadgeDad 2026-05-30 19:08:03 -0700
  • 95f4f41c50 Album bundle: gate Prowlarr release picker by album-title relevance (#730) BoulderBadgeDad 2026-05-30 18:56:07 -0700
  • c3f7cf795a Image cache: reject truncated downloads instead of caching broken covers (#750) BoulderBadgeDad 2026-05-30 17:45:01 -0700
  • fa750b6e89 Search: bump live-search debounce 300ms -> 600ms (#751) BoulderBadgeDad 2026-05-30 15:34:34 -0700
  • 401b3ed327 revamp_plan: reconcile checkboxes with what actually shipped BoulderBadgeDad 2026-05-30 15:16:21 -0700
  • 112ecbb24f Player: seek hover tooltip on the Now Playing progress bar BoulderBadgeDad 2026-05-30 15:15:58 -0700
  • bf2a2ca928 Player: log SoulSync web-player plays (recently-played + smart-radio recency) BoulderBadgeDad 2026-05-30 15:11:46 -0700
  • f9bc96bd90 Player: 'Playing from' context header (Radio / <Artist> Radio) BoulderBadgeDad 2026-05-30 15:07:31 -0700
  • ab2b5c64f4 Player: shuffle + repeat on the mini-player (parity with modal) BoulderBadgeDad 2026-05-30 14:57:04 -0700
  • 1e514693f1 Player: 'Play next' action + accent-correct queue buttons BoulderBadgeDad 2026-05-30 14:54:14 -0700
  • 65f49ccecd Player: N/P next-prev keys + global mute + persist volume across reloads BoulderBadgeDad 2026-05-30 14:52:16 -0700
  • 3c123958ca Fix: Artist Radio never populated the queue BoulderBadgeDad 2026-05-30 14:45:39 -0700
  • 592b68c16c Player revamp: harden crossfade race conditions + global decl (audit fixes) BoulderBadgeDad 2026-05-30 14:38:28 -0700
  • a2fe3da839 revamp_plan: mark Phase 3b (per-listener sessions) done BoulderBadgeDad 2026-05-30 14:29:40 -0700
  • f617458962 Phase 3b: per-listener stream sessions (no more shared-playback collision) BoulderBadgeDad 2026-05-30 14:29:19 -0700
  • 866f2e4a23 Now Playing: complete Media Session lock-screen controls BoulderBadgeDad 2026-05-30 14:23:29 -0700
  • 843f4081cf Now Playing: click-to-seek synced lyrics BoulderBadgeDad 2026-05-30 14:17:51 -0700
  • a8985b317f Now Playing: fix squashed stop button + queue persistence + crafted entrance BoulderBadgeDad 2026-05-30 14:17:07 -0700
  • ccfb3fb042 Now Playing: real crossfade for library tracks (experimental) BoulderBadgeDad 2026-05-30 11:48:56 -0700
  • ffbe669c67 Now Playing: vibrant album-art color extraction + drag-to-reorder queue BoulderBadgeDad 2026-05-30 11:46:31 -0700
  • 3461d9235b Now Playing modal: full visual redesign + click-art visualizer, sleep timer, up-next BoulderBadgeDad 2026-05-30 11:43:45 -0700
  • ca90c6ae6f Player revamp Phase 3a: extract stream state into testable per-session store BoulderBadgeDad 2026-05-30 08:59:15 -0700
  • c3aea58b03 Player revamp Phase 2: smart radio ranking (play-count + popularity) BoulderBadgeDad 2026-05-30 08:47:18 -0700
  • cbc001e283 Player revamp Phase 0a: extract radio selection into testable core/radio/ BoulderBadgeDad 2026-05-30 08:34:27 -0700
  • 472ec7ea01 Bump version to 2.6.5 (dev — prep for next cycle) BoulderBadgeDad 2026-05-30 00:48:58 -0700
  • eea0f5ead0
    Merge pull request #749 from Nezreka/dev 2.6.4 BoulderBadgeDad 2026-05-30 00:40:07 -0700
  • 443257915c Path builder: validate $year, never blind-slice release_date (#745) BoulderBadgeDad 2026-05-30 00:31:14 -0700
  • 56c58c3afc
    Merge pull request #748 from Nezreka/fix/reorganize-skip-deleted-quarantine-746 BoulderBadgeDad 2026-05-30 00:19:53 -0700
  • 20cd12e66b Reorganize: skip files in the duplicate-cleaner /deleted quarantine (#746) BoulderBadgeDad 2026-05-30 00:15:06 -0700
  • 0e1f07433a
    Merge pull request #747 from Nezreka/fix/soulseek-album-poll-stall BoulderBadgeDad 2026-05-29 22:52:58 -0700
  • e94523f3e9 Album bundle: fall back to per-track when the chosen folder yields nothing BoulderBadgeDad 2026-05-29 19:46:52 -0700
  • a60eae9315 Soulseek album poll: treat 'Aborted'/'Cancelled' transfers as failed BoulderBadgeDad 2026-05-29 19:29:55 -0700
  • aa2806180e Fix: Soulseek album poll hangs on a stalled peer; failed batches never cleared BoulderBadgeDad 2026-05-29 19:19:28 -0700
  • 8ec6d2ae83
    Merge pull request #744 from Nezreka/refactor/wishlist-orchestration-unify BoulderBadgeDad 2026-05-29 18:41:24 -0700
  • cea897cbd1 Wishlist: import Optional (fix ruff F821 in processing.py) BoulderBadgeDad 2026-05-29 18:31:45 -0700
  • d3c897fb9d Wishlist: route the manual flow through the shared engine (manual == auto) BoulderBadgeDad 2026-05-29 17:43:40 -0700
  • db1e51109c Wishlist: extract shared _run_wishlist_cycle engine; auto delegates to it BoulderBadgeDad 2026-05-29 17:22:00 -0700
  • e4b5cbbe60 Wishlist: unify batch-row construction into make_wishlist_batch_row BoulderBadgeDad 2026-05-29 16:55:31 -0700
  • 1801bfc8f8
    Merge pull request #742 from Nezreka/fix/wishlist-batch-jam-740 BoulderBadgeDad 2026-05-29 15:32:17 -0700
  • 0898014364 Fix #740: run wishlist album-bundle downloads on a dedicated pool BoulderBadgeDad 2026-05-29 14:31:10 -0700
  • 2d68843343
    Merge pull request #741 from Nezreka/refactor/db-schema-hardening BoulderBadgeDad 2026-05-29 13:57:24 -0700
  • 4fcc461616 Source IDs: add canonical registry, adopt at the highest-value sites BoulderBadgeDad 2026-05-29 12:19:59 -0700
  • b55faff54b DB: add schema_migrations ledger + PRAGMA user_version backstop BoulderBadgeDad 2026-05-29 12:14:20 -0700
  • c5b02c0026 DB: normalize legacy comma-separated genres to canonical JSON BoulderBadgeDad 2026-05-29 12:11:09 -0700
  • 2bb935b9d7 DB: stop watchlist_artists rebuilds from dropping amazon_artist_id BoulderBadgeDad 2026-05-29 12:04:11 -0700
  • 9b34d06b6d UI: migrate remaining compact button families to the .btn--sm tier BoulderBadgeDad 2026-05-29 11:40:31 -0700
  • 169c30fd5b UI: add .btn--sm/.btn--block/.btn--warning tier; migrate sync-history buttons BoulderBadgeDad 2026-05-29 11:30:13 -0700
  • ae0968e1b0 UI: migrate watchlist/wishlist action buttons to the shared .btn primitive BoulderBadgeDad 2026-05-29 11:18:19 -0700
  • a42f8ecc10 UI: move Downloads above Automations in the sidebar BoulderBadgeDad 2026-05-29 11:07:09 -0700
  • 21426af7fe Tools: add Deep Scan option to the Database Updater BoulderBadgeDad 2026-05-29 10:47:02 -0700
  • 54d0fed345
    Merge pull request #728 from IamGroot60/fix/usenet-album-progress-sab-fetch BoulderBadgeDad 2026-05-29 10:29:21 -0700
  • d9a24d48c6 Fix: search results disappear when interacting with the media player (#732) BoulderBadgeDad 2026-05-29 10:18:38 -0700
  • a4ab70a42c
    Merge pull request #739 from Nezreka/fix/album-artist-unknown BoulderBadgeDad 2026-05-29 09:52:15 -0700
  • 560156abee Fix: import overwrites album-artist tag to "Unknown Artist" (#735) BoulderBadgeDad 2026-05-29 09:30:38 -0700
  • 191668867b
    Merge pull request #738 from Nezreka/fix/spotify-playlist-truncation BoulderBadgeDad 2026-05-29 09:20:40 -0700
  • 779d729a08 Fix: Spotify playlist sync shows only 100 tracks (#736) BoulderBadgeDad 2026-05-29 09:16:47 -0700
  • 70249cade4
    Merge pull request #737 from Nezreka/refactor/ui-page-shell BoulderBadgeDad 2026-05-29 08:56:26 -0700
  • 6129ea8508 UI consistency: normalize exception-page outer gutter to .page (40px) BoulderBadgeDad 2026-05-29 08:53:03 -0700
  • f57fc640b2 UI consistency (page shell 6/N): sync page adopts .page-shell card BoulderBadgeDad 2026-05-29 08:41:38 -0700
  • 079c169f8d UI consistency (tabs/cards): add .tab and .card primitives (no migration) BoulderBadgeDad 2026-05-29 08:28:18 -0700
  • 34a113142f
    Merge 063c1db697 into 4bbb0913fa IamGroot60 2026-05-29 03:06:55 -0400
  • 063c1db697 Fix album-bundle release picker grabbing the wrong album — gate by title relevance (#730) Tyler Richardson-LaPlume 2026-05-29 03:03:04 -0400
  • dd5fe844d4 UI consistency (buttons 2/N): wishlist modal buttons -> .btn BoulderBadgeDad 2026-05-28 23:48:23 -0700
  • eebc58d3ff UI consistency (buttons 1/N): add shared .btn primitive; migrate config-modal BoulderBadgeDad 2026-05-28 23:40:10 -0700
  • 44faf44fca UI consistency (page shell 5/N): settings adopts .page-shell card BoulderBadgeDad 2026-05-28 23:23:16 -0700
  • 0b325da3e9 Usenet bundle: writable staging dir + client→local path resolution (#721) Tyler Richardson-LaPlume 2026-05-29 02:04:47 -0400
  • 45bbc99d94 UI consistency (page shell 3/N): playlist-explorer adopts .page-shell card BoulderBadgeDad 2026-05-28 22:57:09 -0700
  • def58a9907 UI consistency (page shell 2/N): automations adopts .page-shell card BoulderBadgeDad 2026-05-28 22:54:31 -0700
  • d2a730a6aa UI consistency (page shell 1/2): extract shared .page-shell primitive BoulderBadgeDad 2026-05-28 22:38:55 -0700
  • b8384beef9 Fix: Usenet bundle stuck at 99%/100% — SAB reports post-processing in History as non-terminal (#721) Tyler Richardson-LaPlume 2026-05-29 00:49:02 -0400
  • 4bbb0913fa
    Merge pull request #727 from Nezreka/refactor/discovery-endpoints-lift BoulderBadgeDad 2026-05-28 19:53:30 -0700
  • d5f6a14ba1 Discovery lift (10/N): save_*_bubble_snapshot -> shared helper BoulderBadgeDad 2026-05-28 18:17:36 -0700
  • 4caf36deb1 Discovery lift (9/N): update_*_playlist_phase -> shared helper BoulderBadgeDad 2026-05-28 18:07:16 -0700
  • 50ebfbd82f Discovery lift (8/N): update_*_discovery_match -> shared helper BoulderBadgeDad 2026-05-28 17:58:02 -0700
  • 17c9e9b7b9 Discovery lift (7/N): start_*_sync -> shared helper BoulderBadgeDad 2026-05-28 17:45:09 -0700
  • 7b6615b65a Discovery lift (6/N): get_*_playlist_states -> shared helper BoulderBadgeDad 2026-05-28 17:31:33 -0700