Commit Graph

  • 10430037fe fix(worker): cap slskd ETA + rollback on progress-write failure (stop txn-abort job churn) main worktree-fix-eta-overflow Jonathan 2026-07-21 20:42:13 +02:00
  • 01657d4e1b fix(web): order Recently Pressed by press time + cap at 10 Jonathan 2026-07-20 23:17:54 +02:00
  • 0ad1fd4cd5 fix(worker): trust the requested artist when it's in the file path (stop MP3-over-FLAC) Jonathan 2026-07-20 23:05:38 +02:00
  • 7ed8ca2848 fix(worker): prefer the original release-group over same-titled reissues Jonathan 2026-07-20 22:32:25 +02:00
  • 5f59283bf0 fix(worker): resolve MB to the original edition + loosen duration gate Jonathan 2026-07-20 22:27:44 +02:00
  • d2a86932e0 fix(worker): rank Soulseek peers by estimated transfer time, not raw speed Jonathan 2026-07-20 22:17:44 +02:00
  • 73f1ae6e2f feat(web): order the In-queue tab next-up-first with a "Next up" marker Jonathan 2026-07-20 20:56:42 +02:00
  • c49cee9a20 feat: download ETA on the press bar from measured Soulseek throughput Jonathan 2026-07-20 20:16:58 +02:00
  • db8b43b0e8 feat(web): tabbed On-the-Press view + kebab menu for press actions Jonathan 2026-07-20 19:41:11 +02:00
  • 434cd2b22c feat(worker): recover blocklisted Soulseek searches via album/artist-only fallback Jonathan 2026-07-20 19:06:07 +02:00
  • d7ea29a97a fix(worker): requeue jobs that fail on an unhandled pipeline exception Jonathan 2026-07-20 18:40:41 +02:00
  • e8483ee22b fix(worker): match library ownership by rgMbid + retire stale failed attempts Jonathan 2026-07-20 17:04:31 +02:00
  • ca5bbfa9da fix(worker): retry transient MusicBrainz failures with backoff Jonathan 2026-07-20 16:45:37 +02:00
  • 675d964bbe fix(worker): smarter Soulseek peer selection + stall/progress-aware transfers Jonathan 2026-07-15 19:54:14 +02:00
  • 57f97e9838 feat(worker): defer Qobuz upgrades when it's gated instead of re-grabbing same quality Jonathan 2026-07-15 19:15:43 +02:00
  • 1fc61a0f5a fix(worker): cancel abandoned slskd transfers + cap download fall-through Jonathan 2026-07-15 19:03:05 +02:00
  • 67f374c470 feat: Qobuz pacing budget gate (human-like volume + cadence) Jonathan 2026-07-15 18:45:56 +02:00
  • d47ed12e8e feat(worker): fall through to the next source on an incomplete download Jonathan 2026-07-15 13:41:04 +02:00
  • b0eec41823 fix(worker): judge download completeness by the source's edition, not MB's Jonathan 2026-07-15 13:22:01 +02:00
  • 108114ffa3 fix(web): replace stray null byte with space in Recently-Pressed dedupe key Jonathan 2026-07-15 12:44:22 +02:00
  • 6451cf3a3c feat(web): Floor press + per-item controls (pause/resume/clear/stop/remove) Jonathan 2026-07-15 12:33:44 +02:00
  • 927266d042 fix(mb): rank release groups by credited artist, not title alone Jonathan 2026-07-15 12:32:12 +02:00
  • c6945bd89e feat(web): inter-job download delay setting (Settings → Monitor) Jonathan 2026-07-15 12:24:42 +02:00
  • 3f624c3395 feat(web): DELETE /api/requests/[id] to remove a queued item Jonathan 2026-07-15 12:20:16 +02:00
  • ecec0b6073 test(pause-api): harden "reject in-flight" test with durability assertion Jonathan 2026-07-15 12:18:03 +02:00
  • b78867435a feat(web): per-item pause route for queued jobs Jonathan 2026-07-15 12:14:45 +02:00
  • 3d30e7dc8b feat(web): /api/floor pause/resume/clear/stop controls Jonathan 2026-07-15 12:09:45 +02:00
  • 8c95ff735b feat(worker): pause gate, inter-job delay, and force-stop watcher in main loop Jonathan 2026-07-15 12:06:40 +02:00
  • bff590a00f feat(worker): claim_next skips per-item paused jobs Jonathan 2026-07-15 12:01:38 +02:00
  • 20869bdc13 feat(worker): floor pause/delay/kill-switch helpers Jonathan 2026-07-15 11:57:34 +02:00
  • 9c2495825f feat(db): add Job.paused column for per-item press pause Jonathan 2026-07-15 11:54:19 +02:00
  • 878eac066e docs: implementation plan for Press controls + inter-job delay Jonathan 2026-07-15 11:50:54 +02:00
  • 603c62ef87 docs: design spec for Press controls + inter-job delay Jonathan 2026-07-15 11:43:09 +02:00
  • 06e7f91897 fix(mb): resolve same-named albums to the Album, not the Single Jonathan 2026-07-15 10:49:26 +02:00
  • 0443f10a3b feat(lastfm): disambiguation picker for same-named MB artists Jonathan 2026-07-15 03:43:54 +02:00
  • a8ea3441fc feat(floor): show "preparing…" bar during the pre-download window Jonathan 2026-07-15 03:43:54 +02:00
  • ccaaa41fec docs: slim README for self-hosting, move advanced topics to docs/DEPLOYMENT.md Jonathan 2026-07-15 02:57:45 +02:00
  • b1f6408da6 feat(lastfm): inline Follow / Want buttons on the browse rows Jonathan 2026-07-15 02:39:13 +02:00
  • 55cf88f66e fix(worker): canonicalize bonus-track filenames past the MB tracklist Jonathan 2026-07-15 02:37:08 +02:00
  • 0c5e73eb17 fix(worker): parallelize per-source searches in the match phase Jonathan 2026-07-15 02:37:08 +02:00
  • 0325467aba fix(worker): smooth Qobuz download progress via streamrip byte hook Jonathan 2026-07-15 02:37:08 +02:00
  • c7bab8e997 docs: handoff plan for 3 post-deploy UX fixes Jonathan 2026-07-15 02:24:56 +02:00
  • 53e7f0b7f2 build: script to publish web/worker images to the Gitea registry Jonathan 2026-07-15 01:06:46 +02:00
  • f72d193ef7 chore(discover): raise_for_status on Last.fm fetches Jonathan 2026-07-15 00:50:35 +02:00
  • 4a768b7122 fix(discover): drop suggestions for non-artists (no core discography) Jonathan 2026-07-15 00:38:56 +02:00
  • 9915bfbda2 feat(discover): full reset — clear + rebuild suggestions Jonathan 2026-07-15 00:20:17 +02:00
  • 7e27654b5a chore: remove accidentally-committed screenshot Jonathan 2026-07-15 00:12:36 +02:00
  • 288d55269d fix(discover): hide stale singles + replace album set on re-derive Jonathan 2026-07-15 00:10:10 +02:00
  • 48d5f287b2 style(discover): compact stacked album items in each row Jonathan 2026-07-15 00:00:37 +02:00
  • 947c86bc8f feat(discover): unified artist rows with inline album thumbnails Jonathan 2026-07-14 23:46:14 +02:00
  • a8c1600111 fix(discover): dismissing an artist also dismisses its albums Jonathan 2026-07-14 23:43:30 +02:00
  • 202fc0db3c feat(discover): group suggestions into artist rows Jonathan 2026-07-14 23:41:56 +02:00
  • e8fd4bb0a9 feat(discover): supply Last.fm popularity to the sweep Jonathan 2026-07-14 23:40:33 +02:00
  • 194b4911c7 feat(discover): derive newest + most-popular album per artist Jonathan 2026-07-14 23:39:18 +02:00
  • efdd592761 feat(discover): Last.fm album-popularity helper Jonathan 2026-07-14 23:36:41 +02:00
  • a09093f798 feat(discover): add DiscoverySuggestion.albumReason Jonathan 2026-07-14 23:34:58 +02:00
  • e74d1d9c7b docs: implementation plan for Discover unified rows Jonathan 2026-07-14 23:33:04 +02:00
  • 9dd235c2bc docs: spec for Discover unified rows + newest/most-popular albums Jonathan 2026-07-14 23:29:23 +02:00
  • e04c1c9795 feat(discover): also seed discovery from owned-album artists Jonathan 2026-07-14 22:39:52 +02:00
  • a47d37a787 feat(discover): show why each item is suggested Jonathan 2026-07-14 22:07:05 +02:00
  • 18a22db7fb feat(library): match own-state on artist MBID, not just name Jonathan 2026-07-14 21:55:24 +02:00
  • 1c1b98967a feat(pipeline): reject downloads far shorter than the MB total duration Jonathan 2026-07-14 21:49:15 +02:00
  • 1943fe2bdf feat(discover): max-normalize similarity scores across sources Jonathan 2026-07-14 21:43:02 +02:00
  • 0f64e3c83a feat(library): bulk operations (delete / ignore) Jonathan 2026-07-14 21:37:01 +02:00
  • 8c8a34e320 feat(library): replace/upgrade an owned album on demand Jonathan 2026-07-14 21:28:54 +02:00
  • 7719b2a0d8 feat(library): on-demand integrity check Jonathan 2026-07-14 21:20:39 +02:00
  • 6453cfd27b feat(library): surface possible duplicate albums Jonathan 2026-07-14 21:16:03 +02:00
  • f78c88df3f feat(library): edit/fix album metadata Jonathan 2026-07-14 21:12:02 +02:00
  • 855a0f15fe feat(library): ignore a release (do-not-monitor) Jonathan 2026-07-14 21:03:54 +02:00
  • 6ca39859fa feat(library): surface albums the scan couldn't match Jonathan 2026-07-14 20:56:31 +02:00
  • 9e5d5d3af4 feat(library): sort control on the pressings grid Jonathan 2026-07-14 20:49:43 +02:00
  • 2c3d6e77d5 feat(artists): sort control on the roster Jonathan 2026-07-14 20:46:24 +02:00
  • 72e9c2d47d feat(discover): Artists|Albums tabs on /discover Jonathan 2026-07-14 20:42:33 +02:00
  • c9905937cc feat(discover): suggest full albums only (filter singles/EPs) Jonathan 2026-07-14 20:37:28 +02:00
  • 7957c621cf docs: how to run Lyra behind a Gluetun VPN container Jonathan 2026-07-14 20:29:39 +02:00
  • 0147975b14 feat(web): MB-resolve manual imports for instant cover art Jonathan 2026-07-14 20:05:59 +02:00
  • d52517ef39 feat(web): cache cover art + dedupe Recently Pressed Jonathan 2026-07-14 20:03:36 +02:00
  • 36a34181c9 fix(web): exclude large-upload route from auth middleware (10MB body cap) Jonathan 2026-07-14 14:41:06 +02:00
  • ce628ca245 fix(web): stream large album uploads to disk (busboy) instead of buffering Jonathan 2026-07-14 14:37:25 +02:00
  • a94ba97eee fix(web): make album-folder import robust + add a folder picker Jonathan 2026-07-14 14:26:53 +02:00
  • 0a2a5cbdc4 feat(web): drop a whole album folder into manual import Jonathan 2026-07-14 14:15:39 +02:00
  • 93ba9c7e16 feat(web): Library Management — manual album import (drag-and-drop) Jonathan 2026-07-14 14:00:35 +02:00
  • 0d3fe8d907 feat(web): Library Management — delete an album (files + record) Jonathan 2026-07-14 13:45:57 +02:00
  • 426b36775f fix(worker): reject a download with 0-byte/missing tracks (#16 partial) Jonathan 2026-07-14 13:36:11 +02:00
  • eb51489ba9 feat(ops): web + worker container healthchecks (#20) Jonathan 2026-07-14 13:28:26 +02:00
  • 7e5c083cef fix(web): surface a toast on failed mutations (#14) Jonathan 2026-07-14 13:25:31 +02:00
  • bc42e546f0 fix(worker): raise http.client header limit so Qobuz tracks stop failing Jonathan 2026-07-14 13:17:20 +02:00
  • 9a95c33b7e fix(worker): a corrupt/unreadable album no longer aborts the whole scan Jonathan 2026-07-14 13:00:02 +02:00
  • dcf0bb0696 feat: show real on-disk tracklist in the Library album modal (#9) Jonathan 2026-07-14 12:55:54 +02:00
  • 746d61b264 feat(worker): reclaim in-flight jobs on startup (crash-resume) Jonathan 2026-07-14 12:37:16 +02:00
  • 4144188a28 feat(web): "In library, not followed" section on the Artists page Jonathan 2026-07-14 12:28:29 +02:00
  • 1a612f1808 feat(web): settings helptext behind a "?" popup instead of inline paragraphs Jonathan 2026-07-14 12:21:17 +02:00
  • 24d4ba6098 feat(web): AlbumModal follow everywhere + Settings polish (#10) Jonathan 2026-07-14 12:09:52 +02:00
  • 17bed331a9 feat(web): Follow button + clickable artist in album modals Jonathan 2026-07-14 11:58:01 +02:00
  • 938b8f32f9 feat(web): surface Discover freshness ("last discovered N ago") + true in-progress Jonathan 2026-07-14 11:47:58 +02:00
  • b1757b631c feat(worker): smooth download % from adapter byte-level progress Jonathan 2026-07-14 11:41:51 +02:00
  • c63f765c1f feat(web): cache Last.fm browse data + Refresh button (rides ApiCache) Jonathan 2026-07-14 11:31:27 +02:00
  • 034ae40084 feat(worker): share the MusicBrainz cache from scans/discovery Jonathan 2026-07-14 11:17:51 +02:00
  • bdbf9d237e feat(web): shared Postgres read-through cache for MusicBrainz (ApiCache) Jonathan 2026-07-14 11:17:51 +02:00
  • d275a0ddd6 fix(web): resolve edition-qualified album titles against MusicBrainz Jonathan 2026-07-14 10:54:31 +02:00