What's Changed
- fix: hand DiamWall 513 challenges to the bypasser by @vansh-nagar in #1400
- perf(docker): stop shipping build-only content in the runtime image by @splitsec2 in #1404
- fix: keep https:// for qBittorrent and hide release sources from non-admins by @calibrain in #1422
- fix(download): do not cancel a queued torrent as stalled by @splitsec2 in #1420
- fix(download): remove a cancelled torrent that never started by @splitsec2 in #1421
- feat(download): add Remove & Delete Files torrent completion action by @classicluna in #1401
- fix(downloads): reconcile downloads a restart interrupted by @splitsec2 in #1409
- fix(sabnzbd): prefetch NZBs served from the indexer's own domain by @HeihoffJ in #1416
- fix(downloads): reconcile downloads a restart interrupted by @calibrain in #1423
- build(deps): bump the gh-actions group with 3 updates by @dependabot[bot] in #1415
- build(deps): bump the npm-deps group in /src/frontend with 8 updates by @dependabot[bot] in #1414
- build(deps): bump astral-sh/uv from 0.12.19 to 0.12.22 in the docker-base-image-digests group by @dependabot[bot] in #1413
- build(deps): bump the python-deps group across 1 directory with 3 updates by @dependabot[bot] in #1412
- feat(naming): {Narrator} placeholder and MyAnonamouse series fallback by @adman234 in #1407
- feat(api): add a read-only API key and a /api/stats endpoint by @splitsec2 in #1419
- fix(sabnzbd): strip Prowlarr API key on cross-host NZB redirects by @calibrain in #1424
- feat(clients): add Debrid-Link as a torrent client by @splitsec2 in #1380
- fix(clients): correct Debrid-Link file listing and rate-limit handling by @calibrain in #1425
- feat(QoL): implement top-level settings button by @joshft91 in #1427
- feat(download): make the torrent stall window a setting by @splitsec2 in #1426
- fix(library): back off after a failed index instead of retrying for every result by @splitsec2 in #1430
- fix(debridlink): reuse the file list from the status check by @splitsec2 in #1431
- fix(debug): keep SHELFMARK_API_KEY_READONLY out of the debug bundle by @splitsec2 in #1432
- fix(release-search): report a ValueError from a source as that source's error by @splitsec2 in #1433
- fix(queue): first terminal status wins, so a late COMPLETE cannot overwrite a cancel by @splitsec2 in #1429
- fix(googlebooks): report more pages when limit is above the 40 result maximum by @splitsec2 in #1434
- ci: a cache export error should not fail the image publish by @splitsec2 in #1435
- fix(activity): Clear Completed leaves out requests that are still pending by @splitsec2 in #1438
- fix(hardcover): defensive rate limiting and 429 backoff by @splitsec2 in #1439
- fix(metadata): show the translation a search matched on Open Library and Hardcover by @HeihoffJ in #1451
- fix(direct-download): clarify required search mirror by @SomSamantray in #1454
- fix(irc): pin the TLS context to TLS 1.2 or newer by @splitsec2 in #1455
- fix(direct_download): Anna's Archive search 404 on ISBN queries by @mvanhorn in #1456
- improve hints/docs regarding http proxy user/pass auth by @FarawayMagnet in #1462
- fix(clients): wait for qBittorrent-compatible clients to finish before post-processing by @ultraviolet150 in #1465
- fix(download): extract RAR archives in place, not in the IO threadpool by @splitsec2 in #1459
- fix: wait for synced files before processing completed downloads by @sean0407 in #1464
- fix: search settings popup and positioning refinement by @alexhb1 in #1476
- feat(metadata): add Databáze knih metadata provider by @misko903 in #1479
- feat(naming): add {AuthorSort} template variable by @AmalkrishnaAS in #1484
- build(deps): bump apprise from 1.13.1 to 2.0.0 by @dependabot[bot] in #1437
- build(deps): bump astral-sh/uv from 0.12.22 to 0.12.24 in the docker-base-image-digests group by @dependabot[bot] in #1449
- build(deps): bump python from 3.14.7-slim to 3.14.8-slim by @dependabot[bot] in #1470
- build(deps-dev): bump the npm-deps group across 1 directory with 8 updates by @dependabot[bot] in #1471
- build(deps): bump the gh-actions group with 5 updates by @dependabot[bot] in #1472
- feat(slskd): add Soulseek (slskd) release source, building on #1335 by @splitsec2 in #1428
- fix(docker): bump Chromium pin to 155.0.8059.79 by @wlm1993 in #1477
- fix/redact log secrets by @calibrain in #1488
- feat(packs): let users choose which files, books and formats to download by @amura11 in #1480
- feat(direct_download): add OceanofPDF as a standalone search and download provider by @ast0ne1 in #1485
- build(deps): bump the python-deps group across 1 directory with 10 updates by @dependabot[bot] in #1487
- fix(download): send every file of a multi-file download to the browser by @calibrain in #1489
- fix(ui): the browser tab follows the search page title by @splitsec2 in #1492
- feat(download): a concurrency limit per source by @splitsec2 in #1495
- fix(activity): a reused release follows the new request, and stale rows of a delivered request are closed by @splitsec2 in #1496
- feat(requests): let an admin reopen a rejected request by @splitsec2 in #1491
- fix(requests): an older failed attempt no longer undoes a later delivery by @splitsec2 in #1493
- feat(clients): give up on a torrent with no seeders by @splitsec2 in #1494
- refactor(clients): read the stall window with a type check instead of a pyright ignore by @splitsec2 in #1498
- fix(metadata): only an admin may use the provider's own account, its lists and shelves by @splitsec2 in #1501
- feat(audiobookbay): seed time and ratio settings by @splitsec2 in #1503
- feat(prowlarr): hide ebook results above a maximum size by @splitsec2 in #1504
- fix(covers): key the cover cache by the image URL, not the caller-supplied id by @splitsec2 in #1505
- fix(releases): apply the request policy to release listing, not only to download by @splitsec2 in #1506
- fix(activity): answer another user's item like a missing one, and skip foreign history rows by @splitsec2 in #1507
- fix(activity): Clear Completed leaves out an item that is no longer finished instead of failing the batch by @splitsec2 in #1508
- fix(download): stop deleting user data and losing completed downloads by @calibrain in #1511
- fix(slskd): refuse unsafe peer paths, keep queued downloads alive, report search outages by @calibrain in #1512
- fix: review regressions in metadata, notifications, activity redaction, search options and genDebug by @calibrain in #1510
- build(deps): bump publicsuffixlist from 1.1.0.20261010 to 1.1.0.20261017 by @dependabot[bot] in #1509
- fix(activity): put dismiss-many back together after the #1507 and #1508 merges by @splitsec2 in #1513
- chore: drop three unused imports that fail Python Quality by @splitsec2 in #1514
- feat(clients): separate audiobook download directory for torrent clients by @amura11 in #1500
- fix(tor): survive container restarts and run Tor as debian-tor by @calibrain in #1517
- fix(prowlarr): hide results whose title extension is not a supported format by @humanityBG in #1490
- Fix [BUG] Search "Options" move out of the way when you try to click them by @DBVamsi in #1468
- fix(download): trust a pinned AA mirror and repair the full e2e profile by @calibrain in #1518
New Contributors
- @vansh-nagar made their first contribution in #1400
- @classicluna made their first contribution in #1401
- @HeihoffJ made their first contribution in #1416
- @joshft91 made their first contribution in #1427
- @SomSamantray made their first contribution in #1454
- @FarawayMagnet made their first contribution in #1462
- @ultraviolet150 made their first contribution in #1465
- @sean0407 made their first contribution in #1464
- @misko903 made their first contribution in #1479
- @AmalkrishnaAS made their first contribution in #1484
- @wlm1993 made their first contribution in #1477
- @amura11 made their first contribution in #1480
- @ast0ne1 made their first contribution in #1485
- @humanityBG made their first contribution in #1490
- @DBVamsi made their first contribution in #1468
Full Changelog: v1.4.0...v1.5.0