Skip to content

All versions since 1.1.01.x

1.1.0

Features

  • ci: add rolling dev release with archives to Refresh :dev workflow (#945) (c30aa25)
  • db: limit metrics database growth on high-throughput hosts (#932) (0167bb2)
  • indexers: Prowlarr-managed indexers (pull) (#944) (de7fb55)
  • queue: automatically recover queue items that stop making progress (#934) (2989216)
  • queue: bulk pause, retry, category, and clear actions on queue and history (#939) (de09c02)
  • queue: normalize obfuscated video filenames so Radarr/Sonarr can import them (#937) (e5e4ee4)
  • sab: show remaining time and speed for Sonarr/Radarr downloads (#981) (ff725b1)
  • sab: support server_stats and warnings so mobile SAB clients can connect (#935) (63bcf6f)
  • ui: play media in-app from Files with auto-resume and playback diagnostics (#947) (c82bcfb)
  • webdav: allow clearing completed-symlinks via WebDAV delete and a new maintenance task (#930) (b6211eb)

Bug Fixes

  • api: let request-abort cancellation escape play handler and pre-verify (f63fd03)
  • api: resolve CodeQL path-injection and user-controlled-bypass findings (#917) (0a469d6)
  • arr: reliably trigger Sonarr/Radarr replacement searches after repairing unplayable files (#925) (4631184)
  • ci: attach only stable-named archives to the rolling dev release (#959) (a24f78b)
  • db: all-time bandwidth totals no longer shrink when old metrics are pruned (#928) (3b9d271)
  • db: corrupt database now gets clear recovery guidance instead of endless stack traces (#943) (87cd91b)
  • db: log a clear ownership error instead of crash-looping with exit 134 when config files are unreadable (#958) (f9f2ca6)
  • deps: Bump daisyui in /frontend in the npm-minor-and-patch group (#904) (7d20c7d)
  • deps: Bump github/codeql-action in the github-actions group (#962) (ae4bbea)
  • deps: Bump the npm-minor-and-patch group (#960) (90903c7)
  • dispose HttpRequestMessage instances in Arr and Rclone clients (2b9fea5)
  • explore: deleting files from Explore now keeps history, caches, and symlinks consistent (#940) (afdfc35)
  • guard nullable dereferences flagged by code quality analysis (fee498a)
  • let shutdown cancellation escape per-item service loops (855d842)
  • par2: propagate cancellation instead of returning partial parse (8e42832)
  • prevent integer overflow before double conversion in sampling math (dcb95b2)
  • prevent Path.Combine from silently dropping base directories (4490098)
  • queue: mount every episode from season packs of split video files (#977) (7f7f0ad)
  • queue: queue items no longer stall and cancel at 50% on obfuscated releases (#974) (4c2657f)
  • queue: season packs with per-episode par2 files now get correct episode filenames (#941) (4c1a605)
  • rclone: mounts no longer show stale files after a temporary rclone outage (#923) (ecd06ab)
  • resolve code-quality findings — resource leaks, null safety, and cancellation handling (32ba80e)
  • sab: queue and history no longer return empty when clients send limit=0 (#924) (d4b90cc)
  • sab: return 400 for malformed nzo_ids in history requests (#921) (21df339)
  • sharpcompress: resolve CodeQL findings in zstd unsafe code and buffer pool tests (#920) (2ad35b6)
  • sharpcompress: stop 7z archives with empty files crashing processing (#952) (4c4a3d9), closes #948
  • simplify constant conditions and redundant LINQ in queue and Arr clients (91f4b6f)
  • support: support pack fields now use consistent camelCase names (#903) (4a39e11)
  • ui: accept empty-string dropdown values and normalize empty categories (#972) (9d187ee), closes #970
  • ui: plain HTTP requests to /ws now get a clean 426 and a proxy hint instead of a stack trace (#957) (cab5f4c)
  • ui: player checks the source before reporting a file as unplayable; missing payloads no longer 500 or trigger repair (#963) (1102737)
  • ui: player now says which codec your browser is missing instead of blaming the file type (#955) (3f7a0f2)
  • ui: show the real error instead of looping “Connecting to InfiniDysk” when a page fails to load (#975) (663b6f1)
  • usenet: providers stop flapping at 60-second cooldowns when health checks run (#885) (e779551), closes #881
  • usenet: stop 502 connection-limit retry loops by learning the provider’s real connection cap (#916) (e0c8a1b)
  • usenet: stop prefetch batch size from flapping during bursty reads (#933) (c353999)
  • watchtower: propagate caller cancellation in episode enumeration (24f2d07)
  • webdav: directory listings no longer appear empty in rclone v1.74+ (#927) (e2e744e)
  • webdav: return valid HTTP-date timestamps for virtual .ids directories (#967) (e9014aa), closes #965
  • webdav: Sonarr/Radarr imports no longer fail with “Permission denied” on default settings (#961) (f2ab8f0)
  • webdav: stop duplicate missing-article warnings for filenames with accented characters (#926) (6c4d998)
  • webdav: streams that end early no longer trigger unhandled Kestrel errors (#968) (d76189a)
  • webdav: write-stall watchdog timeouts no longer mislabeled as backend read deadlines in logs (#951) (49e2a8a)

1.1.1

Bug Fixes

  • default NZB retrieve User-Agent to SABnzbd/5.1.0 (#986) (c932811)
  • deps: Bump the npm-minor-and-patch group (#993) (22c5d46)
  • deps: Bump zensical from 0.0.52 to 0.0.53 in the docs-python group (#992) (8680e6f)
  • health: orphan cleanup no longer treats imported files as missing when Library Directory is the mount (#991) (49b58e1)
  • queue: stalled downloads now fail so Sonarr can re-grab them (#989) (a10a45f)
  • ui: maintenance task status no longer bleeds between Remove Orphaned Files and Prune Completed History (#983) (e89d6ca)
  • webdav: /ready no longer returns 4XX instead of the readiness status (#982) (3650c60)

1.1.2

Bug Fixes

  • auth: reset admin password via RESET_ADMIN_PASSWORD environment variable (#998) (d39d7e2)
  • deps: Bump the npm-minor-and-patch group (#994) (589e6bf)
  • repair: streaming failure repair now shows when Background Repairs must be enabled (#999) (394d85d)
  • ui: delete Explore items whose names contain percent sequences (#995) (ac7af97)

1.2.0

Features

  • api: add opt-in interactive admin API reference (#1010) (1925e8c)
  • api: admin errors return ProblemDetails operators can match to logs (#1067) (e252f12)
  • api: versioned admin API contract keeps the UI in sync with backend routes (#1069) (abc4c0c)
  • arr: show Sonarr/Radarr import health on the Overview dashboard (#1054) (3e7cb83)
  • db: optional PostgreSQL support for the main database (#1013) (5099666)
  • health: add on-demand GC memory diagnostics (#1005) (5f52db8)
  • health: expose Prometheus metrics for streaming and providers (#1009) (d38b04f)
  • health: health checks skip non-media files (images, subtitles, NFOs) (#1001) (039eab9)
  • health: keep known degraded gaps off Usenet providers (#1055) (be76ffc)
  • health: keep slightly damaged videos playable instead of replacing the whole release (#1035) (914a5d8)
  • health: re-check library health after changing Usenet providers (#1015) (11d14dc)
  • health: repair missing articles in the background using PAR2 recovery data (#1032) (a125fe2)
  • health: replace releases with unplayable corrupt data instead of serving silent gaps (#1050) (45d8a9f)
  • health: show deleted and repaired NZBs in the health UI (#1004) (c7606de)
  • queue: audio-only NZBs now import instead of being rejected (#1002) (4449bb2)
  • queue: keep NZB uploads accessible while queue is active (#1008) (6daf2d7)
  • queue: recover missing articles using equivalent segments from other copies of the same release (#1039) (4b36207)
  • queue: reorder waiting jobs with up/down controls (#1007) (f3359ba)
  • ui: choose the category when uploading NZBs from the queue page (#1049) (5430cd1)
  • ui: search, filter, and sort queue and history (#1006) (6683b9f)
  • usenet: concurrent readers of the same file share one Usenet stream (#1046) (df945d9)
  • usenet: preserve confirmed article misses across restarts (#1028) (5689c90)
  • usenet: separate queue pipelining from streaming playback controls and add a configurable batch width (#1030) (c1bf58c)

Bug Fixes

  • api: HTTP clients time out and the process shuts down within 5 seconds (#1066) (c02c689)
  • arr: parse string event types in history responses (#1056) (49a4e7a)
  • db: repair lowercase GUIDs so cleanup and file lookup stop missing rows (#1076) (f70d191)
  • deps: Bump github/codeql-action in the github-actions group (#1079) (a62a9e8)
  • deps: Bump the npm-minor-and-patch group (#1078) (e840ae6)
  • deps: Bump the nuget-minor-and-patch group with 6 updates (#1080) (52a2272)
  • deps: Bump zensical from 0.0.53 to 0.0.54 in the docs-python group (#1077) (1f9f45b)
  • docker: fail startup when the config directory is missing or unwritable (#1058) (702565f)
  • health: background health scans start correctly on dev and rc (#1044) (be770a2)
  • health: Health page no longer shows a stuck initial scan pending banner (#1085) (5c4a0ac)
  • health: PAR2 repair reconstructs files when source articles are corrupt (#1060) (dc892bc)
  • nntp: providers no longer benched for minutes by brief network hiccups (#1018) (a3867e3)
  • queue: stop grinding remaining RAR volumes after a header timeout (#1059) (ef17d38)
  • resolve medium-severity CodeQL quality warnings (#1081) (66f99d1)
  • sab: queue and history panels no longer fail with server errors on PostgreSQL (#1088) (678d429)
  • streams: seeking and article retries no longer stall when Article RAM is full (#1053) (d53ba5e)
  • ui: play files from the web UI over plain HTTP (#1037) (86a4468)
  • ui: queue provider labels no longer flicker during download progress (#1016) (f062a04)
  • usenet: log a single warning when a Usenet article is missing on every provider (#1061) (9458ae5)
  • webdav: paused or trickling clients no longer wedge all streaming (#1052) (ad2a7ee)
  • webdav: repair files that cannot seek through missing tail articles (#1014) (9f544eb)
  • webdav: serve tail seeks from lazy RAR volumes (#1087) (a529699)
  • webdav: serve the WebDAV README through the UI port and freeze HTTP contracts (#1072) (8c16695)

Performance Improvements

  • nntp: decode yEnc body data in buffered batches (#1082) (104beec)
  • queue: keep playback smooth during import bursts by parsing RAR/7z archive headers asynchronously (#1040) (48013a2)
  • streams: lower streaming memory use with bounded 256 KB segment buffers (#1042) (fb498be)
  • usenet: accelerate playback starts and sustained streaming (#1029) (84274ca)

Refactors

  • api: keep queue and WebDAV independent of admin API controllers (#1070) (54c6afd)

1.2.1

Bug Fixes

  • api: suppress EF Core per-query command logs (#1095) (8b63233)
  • api: suppress EF Core per-query command logs (#1095) (405a22f)
  • auth: keep UI sessions working after upgrades (#1092) (dae1b29)
  • db: remove EF Core startup warnings (#1096) (616c71d)
  • ui: provider cards show warm connection counts (#1093) (79f34d0)

1.2.2

Bug Fixes

  • deps: Bump the npm-minor-and-patch group (#1099) (04a52c5)
  • deps: Bump the nuget-minor-and-patch group with 1 update (#1100) (ffd1069)
  • queue: large NZBs no longer rejected with too many segments during import (#1097) (43fc6d3)

1.2.3

Features

  • search: reject wrong-year movies and optionally sort profile results by quality (#1107) (15c16dd)
  • stremio: make Search Profiles work as a first-class AIOStreams addon (#1108) (9b7780e)

Bug Fixes

  • db: PostgreSQL installs no longer log timestamp errors (#1102) (1142009)
  • db: upgrades no longer fail on a pre-existing health-check index (#1106) (44749d8)
  • sab: initialize addurl timeout before HTTP clients (#1105) (8c9940a)
  • ui: show connections warm-pool hint (#1109) (7103fe6)

Chores

1.2.4

Bug Fixes

  • arr: prevent automatic replacement search loops (#1132) (a5dc24e)
  • db: allow orphan cleanup with PostgreSQL (#1133) (c59ba20)
  • health: PAR2 repair no longer exhausts memory or blocks retries after a crash (#1124) (b4804ea)
  • health: prevent health checks crashing on oversized metadata (#1123) (12cb9a9)
  • nntp: recover providers faster from shared network failures (#1116) (06df9c6)
  • queue: delete STRM files with removed history items (#1122) (12d1172)
  • stabilize streaming and queue watchdog cancellation (#1129) (047b34f)
  • streams: Article RAM waits no longer inflate during playback (#1126) (89bccfb)
  • ui: hide Stable/Dev label in the version dropdown on mobile (#1125) (51c200a)
  • ui: Mount button on Search page now adds releases (#1112) (71500fe)
  • ui: pin Overview Right now above widgets on stacked layouts (#1117) (ed0dd0a)
  • ui: remove scrollbar from header connection status (#1115) (9879d4b)
  • usenet: retain context for unclassified fetch failures (#1113) (ef76529)
  • usenet: scale auto article budget beyond 512 MiB (#1130) (c887505)

1.2.5

Features

  • queue: create symlink and STRM outputs together (#1146) (c888279)
  • ui: make Overview easier to scan and recover when stats fail to load (#1135) (3e8d70d)

Bug Fixes

  • arr: prevent completed downloads waiting indefinitely for import (#1138) (72fb79d)
  • deps: Bump zensical from 0.0.54 to 0.0.55 in the docs-python group (#1155) (9556699)
  • health: enable health checks and PAR2 repair without Radarr or Sonarr (#1139) (34750c3)
  • queue: NZBs with long Usenet subjects no longer rejected during import (#1160) (d98be41)
  • repair: wait for PAR2 recovery before removing failed playback (#1143) (eb10439)
  • ui: connections counter no longer flashes a spinner on the queue page (#1154) (9edff32)
  • ui: live file reads are now full-width rows in the Overview stack (#1162) (400a99f)
  • usenet: STAT of missing articles no longer logs unclassified cache-cleanup failures (#1159) (5f568d8)
  • usenet: stop skipping through incomplete files after every missing article (#1158) (02df429)
  • webdav: resume lazy RAR playback from tail seeks (#1136) (0605978)

Chores

1.2.6

Features

  • sab: include client user agent in authentication rejection warnings (#1179) (8848ad5)

Bug Fixes

  • queue: large imports of missing or corrupt Usenet articles no longer grind the server (#1188) (544aa6c)
  • queue: large NZBs up to 256 MiB no longer rejected during import (#1177) (3328f03)
  • queue: leftover STRM files are cleaned up and samples in Sample folders no longer get mounted (#1169) (87993e1)
  • queue: restore a single import strategy instead of dual symlink and STRM outputs (#1171) (144cac9)
  • ui: overview stats stay a compact bar on tablets and wrap 3-wide on phones (#1163) (09130e2)
  • usenet: missing-article playback no longer freezes all streams and imports (#1199) (497de64)

Chores

1.2.7

Bug Fixes

  • deps: Bump the npm-minor-and-patch group (#1202) (de13c67)
  • deps: Bump zensical from 0.0.55 to 0.0.56 in the docs-python group (#1201) (d5c2f23)
  • health: classify persistently missing streaming payloads as orphaned (#1215) (70323ff)
  • health: verify PAR2 slices before applying the damage cap (#1213) (017eb23)
  • queue: accept NZBs with up to 1,302,083 segments (#1220) (a7b0256)
  • queue: busy database no longer marks completed downloads as failed (#1197) (63b3ddd), closes #1180
  • queue: cancelled imports no longer keep parsing huge NZB files (#1192) (946637d)
  • queue: deleting or pausing a stuck download no longer hangs forever (#1198) (4df9040)
  • queue: failed imports no longer leave orphaned STRM files on disk (#1196) (80cf116)
  • queue: stop reprocessing releases that already failed health validation (#1216) (a08b848)
  • sab: oversize NZBs and stalled indexer fetches are rejected before they fill the disk (#1195) (133cd42)
  • ui: align the admin UI with daisyUI defaults and accessible controls (#1206) (b34f994)
  • webdav: play multipart RARs with unrelated trailing volumes (#1212) (65bc6d7)
  • webdav: stop counting healthy streaming playback as slow WebDAV requests (#1204) (150d185)

1.3.0

Features

  • health: clean up mounts whose streaming payloads are missing (#1218) (aa83ef3)
  • health: expose segment-buffer eviction causes and throttle forced GC (#1230) (cbd87e5)
  • health: parallel health checks with shared connection gate and queue coexistence (#1208) (b42ac42)
  • health: re-check action-needed files from Health history (#1336) (2043c96)
  • health: re-run health checks across the whole library from Settings → Maintenance (#1203) (bb54a92)
  • health: turn on background repairs by default (#1284) (c3229c2)
  • nntp: split transfer and metadata connection budgets (#1207) (39e04c1)
  • queue: name a lone imported video after its release folder (#1149) (c7530c0)
  • scheduling: schedule health checks, repairs, and queue downloads by time of day (#1153) (5e6a3ff)
  • ui: guide first-run setup for Plex, Emby, and Jellyfin (#1306) (b31a220)
  • ui: inspect each provider’s speed history from Overview (#1151) (ea6ce14)
  • ui: setup wizard always suggests rclone RC notifications for symlink installs (#1320) (502995d)
  • ui: show active queue jobs and history in one list (#1286) (e6b2e21)
  • ui: warn when rclone streams through port 3000 (#1328) (eae59a5)
  • ui: warn when Segment Cache duplicates rclone VFS read-ahead (#1319) (eebc880)
  • usenet: add memory ownership telemetry (#1295) (04cac95)
  • usenet: cap total Usenet download bandwidth (#1152) (ecd2193)
  • usenet: improve batching for short and medium range reads (opt-in) (#1292) (21a499f)
  • usenet: leftover segment-cache files are cleaned up on startup when the cache is disabled (#1321) (a9c69f8)
  • usenet: let long reads expand provider connections faster (#1324) (9044421)
  • usenet: let segment cache writes run behind playback (#1325) (5cd2aee)
  • usenet: make provider circuit-breaker cooldowns configurable (#1118) (56e9415)
  • usenet: measure production pipelined cache bypass before the warm-read fix (#1288) (a3a0d7b)
  • usenet: segment cache is off by default for new installs; existing installs keep their current behavior (#1322) (d0d18c0)
  • usenet: warm provider connections when long reads start (#1330) (83a431c)

Bug Fixes

  • api: reject invalid Warden source uploads with 400 and count UTF-8 bytes (#1274) (08f5567)
  • arr: prevent overlapping Watchtower cycles after a timeout (#1278) (28a9eba)
  • arr: reject oversized Newznab and Watchtower list responses instead of parsing them unbounded (#1279) (b9be02e)
  • db: container no longer dumps a stack trace per file when local streaming metadata is corrupt (#1297) (cd9b120)
  • db: retry backup directory initialization in the scheduler (#1269) (32b07bf)
  • db: skip a maintenance sweep instead of stopping the host when SQLite is busy (#1268) (f846184)
  • deps: Bump fast-uri from 3.1.5 to 3.1.7 in /frontend (#1312) (219ac28)
  • deps: Bump github/codeql-action in the github-actions group (#1256) (79a4861)
  • deps: Bump github/codeql-action in the github-actions group (#1315) (99ec38c)
  • deps: Bump qs from 6.15.3 to 6.16.0 in /frontend (#1316) (51bc1b5)
  • deps: Bump the npm-minor-and-patch group (#1254) (23c7ba8)
  • deps: Bump the npm-minor-and-patch group (#1313) (484dafc)
  • deps: Bump the nuget-minor-and-patch group with 2 updates (#1314) (a0377e5)
  • deps: Bump the nuget-minor-and-patch group with 3 updates (#1255) (f8ede69)
  • deps: Bump zensical from 0.0.56 to 0.0.57 in the docs-python group (#1253) (c9c5b97)
  • health: clarify Library Directory requirements (#1302) (8843fb7)
  • health: keep prune and unlinked-file cleanup running if progress reporting fails (#1272) (d62d57e)
  • health: recover libraries downloaded before 1.3.0 (#1335) (528eca5)
  • health: recover PAR2 repair after transient patch catalog load failures (#1277) (f7a27f3)
  • health: repair Arr-linked files after SAB history cleanup (#1282) (e5cf9c9)
  • health: stop deleting linked files after inconclusive Arr lookups (#1229) (997eb59), closes #1221
  • hosting: backend exits nonzero after a hosted background service crashes (#1273) (8990114)
  • nntp: keep streaming when an article-completion observer throws (#1275) (6cc3ee1)
  • queue: restart instead of serving a dead queue after processor failure (#1287) (cb77327)
  • rclone: improve mount recommendations and RC connection tests (#1311) (efca97d)
  • sab: deleting a queue item that is failing at the same moment no longer returns HTTP 500 (#1309) (71a52c8)
  • ui: align streaming bandwidth input width (#1260) (ec10a5a)
  • ui: compact idle Right now, keep Arr Health on-screen, and tooltip the rename setting (#1265) (5e89125)
  • ui: keep Arr Health last-import tooltip inside the dashboard (#1283) (d62a8b5)
  • ui: keep existing installs on overview (#1333) (2329c0d)
  • ui: keep overview stats and help text usable on phones (#1259) (f9439ff)
  • ui: per-provider MB/s chart stays continuous when there is no traffic (#1228) (012168b)
  • ui: prevent malformed websocket traffic from stopping the frontend (#1280) (80d28df)
  • ui: reject a missing frontend/backend API key before the UI starts listening (#1270) (f55a3fc)
  • ui: remove experimental tag from container-aware gap fill (#1307) (412fc69)
  • ui: repair settings remain saved after refresh (#1301) (381c512)
  • ui: show a clear error and exit when the frontend port is already in use (#1276) (60b5518)
  • ui: stabilize the overview dashboard layout (#1257) (2e72fe9)
  • ui: stop Arr Health table from showing a phantom horizontal scrollbar (#1267) (81008cc)
  • usenet: harden timeout connection lifecycle (#1224) (72f4d79)
  • usenet: keep pooling and config updates running if a telemetry observer throws (#1271) (ba5ae40)
  • usenet: preserve streaming priority and release every pipelined batch resource (#1291) (a2c1151)
  • usenet: warm rereads no longer re-download cached pipelined segments (#1289) (368a7da)
  • webdav: directory listings no longer fail with HTTP 500 when a filename contains XML-invalid characters (#1310) (1dfdcaa)
  • webdav: prevent PostgreSQL listing failures without buffering directories (#1332) (dd7cc42)
  • webdav: stop healthy playback triggering stalled-stream warnings (#1334) (b01c0bd)

Performance Improvements

  • health: background health checks scan large libraries much faster (#1303) (d8dce34)
  • queue: fail dead NZBs after one probe instead of scanning every article (#1148) (23bcf61)
  • usenet: default segment buffer retention to capacity (#1299) (51c0ed8)
  • webdav: start ranged playback without waiting for the full first article (#1290) (d3e5815)

UX

  • ui: move health-check and repair windows onto the background repairs card (#1285) (463a023)

1.4.0

Features

  • auth: sign in behind a reverse proxy via gui configuration (#1420) (fbad2f0)
  • health: add a “quick” health-check depth (#1410) (89ee934)
  • health: PAR2 repair now fixes missing articles inside RAR releases (#1348) (5c7bf79)
  • ui: activity chart separates client playback reads from app-triggered reads (#1340) (79ad0ef)
  • ui: make health check depth adjustable (#1426) (9c315ac)
  • usenet: benchmark configured provider limits above 50 connections (#1360) (63bde75)

Bug Fixes

  • arr: retain WebDAV items when Arr repair only partially completes (#1381) (75420e9)
  • arr: stop re-importing uploads rejected by queue rules (#1380) (95e9598)
  • auth: recover from rejected login action origins (#1401) (7895e06)
  • auth: sign in works again behind a reverse proxy (#1406) (ee0bbbd)
  • ci: anchor prerelease notes to latest stable release (#1402) (bf640d2)
  • db: let orphan cleanup continue through temporary locks (#1408) (9c163ff)
  • deps: Bump advanced-security/component-detection-dependency-submission-action (#1395) (a35ffe2)
  • deps: Bump js-yaml and @redocly/openapi-core in /frontend (#1397) (5fe0a8d)
  • deps: Bump Scalar.AspNetCore from 2.17.1 to 2.17.2 (#1339) (e3737c6)
  • deps: Bump the npm-minor-and-patch group (#1392) (b78fa73)
  • deps: Bump the npm-minor-and-patch group (#1422) (bfb2074)
  • deps: Bump the npm-minor-and-patch group across 1 directory with 4 updates (#1341) (4e32bb6)
  • deps: Bump the nuget-minor-and-patch group with 1 update (#1423) (de1d6b0)
  • deps: Bump the react-router group across 1 directory with 5 updates (#1337) (11c2c02)
  • deps: Bump zensical from 0.0.57 to 0.0.59 in the docs-python group (#1391) (1a98063)
  • docker: ship the musl rapidyenc native in the Alpine image (#1370) (5275648)
  • health: defer contended PAR2 repairs (#1383) (4bc4a21)
  • health: preserve urgent repairs across concurrent checks (#1407) (33ebeef)
  • health: prevent false repairs when stored segment alternatives are available (#1373) (6fb47d9)
  • metrics: count shared-stream pump fetches as client reads (#1350) (581833f)
  • nntp: bound fresh connection acquisition (#1409) (f912daa)
  • nntp: keep playback working when a provider returns the wrong post (#1357) (b4ede00)
  • queue: allow reviewed cleanup of large orphan backlogs (#1352) (b5bf01e)
  • queue: import independent RAR and 7z archive sets separately (#1382) (c9250ba)
  • queue: preserve jobs and retry delays during concurrent queue changes (#1399) (8ddebd9)
  • sab: accept duplicate segment fallbacks and keep validation errors bounded (#1400) (11d587b)
  • sab: Sonarr/Radarr no longer loop on “Download doesn’t contain intermediate path” after a job folder is removed (#1347) (295c4cc)
  • ui: match app read legend to the activity chart (#1355) (2240674)
  • ui: move public Base URL into General settings (#1411) (82d5501)
  • ui: render app activity reads with a solid line (#1349) (56f9d4e)
  • usenet: prevent stale provider misses from blocking imports (#1403) (303b7a7)
  • usenet: speed tests use articles available from the selected provider (#1361) (699e0ca)
  • usenet: verify retrievable articles before marking releases dead (#1404) (4a4fe71)
  • webdav: make /view HEAD requests metadata-only (#1405) (c2be9fb)

Performance Improvements

  • health: reduce redundant PAR2 repair work (#1385) (9f72826)

1.4.1

Bug Fixes

  • auth: direct sign-in works again when Base URL points to a reverse proxy (#1443) (72a9bdb)
  • ui: restore logout when a direct GET request is used (#1445) (3ef8667)

1.4.2

Bug Fixes

  • db: startup vacuum runs when enabled through NZBDAV_CONFIG__DB__IS_STARTUP_VACUUM_ENABLED (#1450) (b0a5404)
  • health: clear stale pending repairs when recording deferred results (#1462) (e51ffd8)
  • health: prevent provider timeouts from triggering repair or blocklisting (#1457) (447c2bd)
  • health: require a pure definitive-miss provider walk before treating a segment as missing (9d34565)
  • health: show a complete health overview breakdown totaling 100% (#1458) (207758e)
  • queue: group shuffled first RAR volumes with matching continuations (8bc3a18)
  • queue: lazy RAR mounting no longer drops extra files hidden behind the first archive member (#1453) (55f9b5c)
  • queue: season packs with repeated RAR/7z volume numbers import as separate archives (#1452) (9b4739b)
  • usenet: allow imports when yEnc headers omit the total count (#1460) (70e9d86)
  • usenet: log per-provider yenc rejection diagnostics (#1459) (2e0b576)
  • usenet: provider data caps count all BODY traffic and survive resets, restarts and metrics cleanup (#1454) (0d68d67)
  • usenet: recover imports with conflicting yEnc metadata using PAR2-verified reads (#1461) (ef5d503)
  • usenet: verify conflicting yEnc metadata against persisted PAR2 proofs (692a67f)

1.4.3

Features

  • health: add actions to resolve attention items and clarify health statistics (#1484) (5b395b4)
  • health: separate active attention items from repair history (#1463) (68f4d2b)
  • support: identify stalled playback and repeated health checks in support packs (#1482) (873d317)

Bug Fixes

  • auth: hash the WEBDAV_PASSWORD env value once, not per request (#1438) (6ae4c24)
  • deps: Bump github/codeql-action in the github-actions group (#1478) (d542ca5)
  • deps: Bump zensical from 0.0.59 to 0.0.61 in the docs-python group (#1476) (5b6d6ff)
  • health: explain blocked removals and omit file extensions from searches (#1490) (e9f2734)
  • health: flag unlinked files and allow needs-attention removal with read-only WebDAV (#1494) (d907cbc)
  • health: include history-linked files in routine checks (#1466) (d55e941)
  • health: keep running health checks visible after starting a full scan (#1481) (ab7652a)
  • health: prevent cancellation leaving old files behind after successful Arr repairs (#1503) (272d575)
  • health: start orphan cleanup retry budget after contention (#1464) (6d255ae)
  • health: urgent streaming repairs keep their failure count across restarts (#1496) (a60e759)
  • metrics: quarantine a corrupt metrics database and back off failed flushes (#1435) (5093dd0)
  • nntp: handle late connection factory cancellation without stacks (#1473) (13acf51)
  • nntp: normalize pooled capacity by configured connection limits (#1491) (570975f)
  • queue: bypass packed range lookup for empty 7z members (#1505) (5ac8313)
  • queue: classify unsupported 7z compression before packed range lookup (#1468) (f9354d4)
  • queue: explain intentional archive compression rejection (#1470) (efd1368)
  • queue: filter sample-directory videos without sibling-size comparisons (#1475) (f76d460)
  • queue: import RAR releases with individually scrambled volume names (#1469) (eac163b)
  • ui: clarify Activity totals and make support easier to find (#1485) (eaba97a)
  • ui: explain degraded Arr warnings directly on overview (#1504) (23d6593)
  • ui: make health alerts and playback failures easier to inspect (#1499) (0d0d7b6)
  • ui: size error breakdown segments outside tooltip wrappers (#1498) (d04075a)
  • ui: surface alerts across pages and simplify navigation (#1508) (55f4aed)
  • usenet: include protocol reasons and open timings in breaker logs (#1465) (de34a6c)
  • usenet: prevent healthy providers being skipped while connections queue (#1495) (ec275c1)
  • usenet: prevent playback stalls when a provider’s transfer slots are stuck (#1489) (7a81faa)
  • usenet: prevent queued connection waits from stalling provider failover (#1506) (b8fe4c4)
  • usenet: release stalled transfers when playback is cancelled (#1472) (9d0793e)
  • webdav: range requests after a flaky header probe no longer return bytes from the wrong offset (#1455) (0868917)
  • webdav: reduce unnecessary range read-ahead and improve seek diagnostics (#1487) (1b11254)

UX

  • ui: group live overview metrics in the active reads card (#1486) (3e89fb2)

1.4.4

Bug Fixes

  • db: remove metrics integrity scans from startup (#1512) (eb76ecf)
  • health: prevent health alerts timing out on large histories (#1518) (37173d3)
  • queue: add nested archive context to media validation failures (#1516) (fb68a84)
  • queue: import logs now explain why PAR2-verified recovery was unavailable for mismatched yEnc articles (#1519) (57bc644)
  • usenet: prevent playback and queue stalls after missing articles (#1514) (aeed8ab)

1.4.5

Bug Fixes

  • usenet: prevent abandoned reads from disabling healthy providers (#1521) (894da90)

1.5.0

Features

  • ui: Activity chart shows import downloads separately from maintenance (#1535) (ae7da05)
  • ui: peak download now shows the true 1-second maximum and no longer shrinks when widening the time range (#1536) (5b6a969)
  • ui: show provider bytes fetched on the overview activity card (#1528) (70a122f)
  • ui: warn when a provider repeatedly blocks missing-article checks (#1551) (612fcdb)

Bug Fixes

  • api: hide full numeric-only IPv6 addresses in support packs (#1524) (181a8ae)
  • arr: Arr and Prowlarr connections work with Docker hostnames behind a proxy and report timeouts clearly (#1537) (d480668)
  • arr: Arr Health no longer shows instances offline with ‘database is locked’ on large installs (#1556) (916b1e5)
  • auth: keep API keys and URL tokens out of frontend request logs (#1526) (bfc7f20)
  • deps: Bump the npm-minor-and-patch group across 1 directory with 13 updates (#1532) (f478af7)
  • deps: Bump the nuget-minor-and-patch group with 9 updates (#1533) (ded1d4e)
  • deps: Bump zensical from 0.0.61 to 0.0.62 in the docs-python group (#1530) (e71d7d1)
  • metrics: retain historical statistics across backend restarts (#1525) (cd638ce)
  • nntp: releases with obfuscated yEnc headers play instead of hanging and being removed (#1548) (a40a071)
  • queue: keep replacement uploads within the configured queue limit (#1527) (d8aaf2d)
  • ui: connect expanded provider speed paths through zero (#1554) (4a50932)
  • ui: connect sparse provider throughput graph to zero baseline (#1553) (a533693)
  • ui: hide all-clear alert indicator (#1549) (401c8c3)
  • ui: identify active media reads with parent folder names (#1562) (b81c13f)
  • ui: lock live read card height above the scrollport (#1563) (d64e7f9)
  • ui: make overlapping and low-volume activity easier to inspect (#1538) (d4a1be8)
  • ui: queue remembers your per-page size after leaving and returning to the page (#1564) (b7c341d)
  • ui: size the Right now card to its live reads instead of the first snapshot (#1558) (671f422)
  • usenet: disabled providers no longer keep connections open or send keep-alives (#1542) (6c742f5)
  • usenet: files are no longer reported missing or sent for repair while a provider is temporarily unavailable (#1550) (59cc144)
  • usenet: keep fewer idle warm connections open per provider by default (#1561) (313acc3)
  • usenet: providers that time out during background connection warming are paused until they recover (#1555) (aca5770)
  • usenet: show accurate provider peak and active-average speeds (#1540) (b5e7d26)
  • usenet: slow background warm-up connections no longer trip a healthy provider’s circuit breaker (#1560) (cf39766)

1.5.1

Bug Fixes

  • db: database backups no longer include metrics history (#1589) (190eace)
  • deps: Bump github/codeql-action in the github-actions group (#1569) (ad86990)
  • deps: Bump the nuget-minor-and-patch group with 1 update (#1568) (90b2713)
  • health: Health page no longer reports previously scanned files as awaiting their initial scan (#1577) (12a3415)
  • health: stay idle when no usenet provider is enabled (#1573) (8f67a44)
  • metrics: Overview Backup rescues counts a retried provider once per rescued article (#1576) (48d772f)
  • ui: mark backup providers on the Overview Providers card (#1579) (abb18af)
  • usenet: slower provider handshakes no longer trip the provider circuit under default settings (#1578) (58eeecc)

Performance Improvements

  • usenet: report payload bytes per chunk instead of per line (#1580) (e6761e5)

1.6.0

Features

  • api: support pack filename shows the InfiniDysk version that generated it (#1609) (0f1e775)
  • ui: manage files in compact tree and list views with health filters (#1546) (d83a6c1)
  • webdav: stream traces separate connection, permit, and failed-attempt waits per request (#1661) (738a87c)
  • webdav: stream traces show what each playback stall was waiting on (#1674) (9fd1869)

Bug Fixes

  • arr: Sonarr repairs no longer resolve to a different series whose folder name shares a prefix (#1620) (c4a4229)
  • arr: stop false “Imports are taking longer than expected” alerts (#1673) (34a32e2)
  • db: recheck pending history cleanup under the SQLite write lock (#1599) (e3f079d)
  • deps: Bump brace-expansion from 2.1.4 to 2.1.7 in /frontend (#1603) (de57eb3)
  • deps: Bump github/codeql-action (#1629) (3544821)
  • deps: Bump ip-address from 10.4.0 to 10.7.2 in /frontend (#1596) (be46762)
  • deps: Bump proxy-addr from 2.0.7 to 2.0.8 in /frontend (#1647) (a03cd96)
  • deps: Bump source-map-js from 1.2.1 to 1.2.2 in /frontend (#1648) (44428f2)
  • deps: Bump the npm-minor-and-patch group across 1 directory with 8 updates (#1601) (aec5115)
  • deps: Bump the npm-minor-and-patch group across 1 directory with 9 updates (#1642) (1709f13)
  • deps: Bump the nuget-minor-and-patch group with 1 update (#1602) (edb7aa4)
  • deps: Bump zensical from 0.0.62 to 0.0.64 in the docs-python group (#1600) (8064d1e)
  • deps: Bump zensical from 0.0.64 to 0.0.65 in the docs-python group (#1626) (0ad6d23)
  • deps: Bump zensical from 0.0.65 to 0.0.66 in the docs-python group (#1641) (a388993)
  • health: health checks no longer appear stuck at 0% for hours on dead releases (#1611) (8927443)
  • health: replace releases that break during playback instead of keeping them as damaged (#1631) (e250e47)
  • nntp: playback and imports no longer stall when a provider refuses extra connections (#1623) (5b5260e)
  • nntp: skip reconnect pacing when the caller cancels a read (#1658) (6f8a40c)
  • nntp: treat 481 “maximum connections per user” as a connection limit (#1668) (c50c2f9)
  • queue: fail over when a provider returns another post’s first segment (87a6f87)
  • queue: imported files keep their Usenet post date when Queue Pipelining is enabled (#1637) (036cbea)
  • queue: preserve playback for NZBs with omitted interior parts (#1594) (b3396fe)
  • queue: skip unavailable optional first-segment metadata (#1625) (b9604a2)
  • ui: reserve scrollbar gutter in media preview to stop resize loop (#1672) (ec9f606)
  • usenet: classify corrupt decoded bodies as health-neutral discards (#1678) (ffca62a)
  • usenet: distinguish connection-open failures from local admission waits (#1619) (7f46bc3)
  • usenet: playback no longer stalls when read-ahead fallbacks hold every failover slot (#1657) (279ead3)
  • usenet: share DATE liveness validation for probes and keepalives (#1665) (1a5276a)
  • webdav: bound view response copies and handle length overruns (#1592) (d79c480)
  • webdav: open full read-ahead window after the first segment is read (#1653) (f830550)
  • webdav: seeking near the end of some files no longer fails (#1656) (4cdc4a0)

Performance Improvements

  • api: resolve filtered tree directories with one descendant scan (#1671) (9838c46)
  • queue: faster seeking and smoother playback in multi-volume RAR releases (#1636) (40595d9)
  • queue: imports with queue pipelining enabled no longer download archive headers twice (#1622) (b0df768)
  • queue: RAR releases stream faster after the first volume (#1634) (85de0cf)
  • usenet: multi-volume imports no longer stall on throttled reconnects (#1621) (b010c99)
  • webdav: disable thread-pool unfair semaphore spinning to cut streaming CPU (#1614) (e406258)
  • webdav: memory returns to idle after playback stops (#1617) (37fba57)
  • webdav: new streams and seeks use less memory while ramping up (#1618) (f399e97)
  • webdav: PAR2-verified files now stream at full speed (#1664) (4d5fc59)
  • webdav: pause prefetch when shared streams have no readers (#1675) (b73f56a)
  • webdav: playback keeps moving when one article is slow to arrive (#1660) (4bbffc2)
  • webdav: releases with very large articles start playing faster and use less memory (#1635) (c7d0da7)
  • webdav: seeks and playback starts no longer wait on one slow first article (#1670) (54934ff)
  • webdav: smoother playback across multi-volume archive boundaries (#1659) (f9db281)
  • webdav: smoother playback across RAR volume boundaries (#1630) (13b1bee)
  • webdav: smoother playback with far shorter stalls between Usenet articles (#1638) (6260e1d)
  • webdav: smoother playback with fewer stalls while streaming (#1606) (31c837f)

UX

  • ui: cleaner import queue with labelled bulk actions and mobile-friendly rows (#1649) (799ab83)
  • ui: cleaner, mobile-friendly health page (#1650) (e114301)

1.6.1

Bug Fixes

  • deps: Bump advanced-security/component-detection-dependency-submission-action (#1682) (6d21118)
  • deps: Bump dotnet-stryker from 4.16.0 to 5.0.0 (#1480) (a914b40)
  • deps: Bump NUnit from 4.6.1 to 5.0.0 (#1644) (a13d490)
  • deps: Bump the npm-minor-and-patch group (#1681) (a3c3a8b)
  • deps: Bump the nuget-minor-and-patch group with 2 updates (#1683) (45f35b5)
  • deps: Bump the react-router group across 1 directory with 5 updates (#1531) (0d75b5d)
  • deps: Bump xunit.v3 from 3.2.2 to 4.0.1 (#1534) (8eea89a)
  • deps: Bump zensical from 0.0.66 to 0.0.67 in the docs-python group (#1680) (c1df5ae)
  • health: PAR2 repair no longer fails on multi-volume releases with an identity byte-limit error (#1694) (f5bc20b)
  • queue: indexer watermark files no longer fail imports with ‘Rar signature not found’ on some providers (#1679) (e1130a0)
  • queue: preserve first-volume header ordering for stored RAR files (#1688) (206b9ad)
  • usenet: keep backup-only providers demand-only with no warm floor (#1687) (41a1475)
  • webdav: re-reading a range with filled holes no longer aborts or returns 404 (#1698) (fa96956)
  • webdav: recognize strm links under the configured base url path prefix (#1692) (48715c5)

Performance Improvements

  • webdav: fetch the rest of a seek range while the first article downloads (#1697) (2f9f45a), closes #1677

UX

  • health: label active phases as elapsed time with a spinner (#1699) (585b7d6)

1.6.2

Bug Fixes

  • health: initialize the playback repair trigger before serving requests (#1705) (18a0c4b)

1.6.3

Bug Fixes

  • deps: Bump vite from 8.3.2 to 8.3.4 in /frontend (#1727) (62c1458)
  • health: keep recently played files available during automatic repair (#1713) (4bef51e)
  • usenet: backup accounts in a storage group are no longer charged for an article already rejected from that group (#1724) (a72e11d)
  • usenet: unregister completed bandwidth waiters without blocking the limiter lock (#1711) (18e902c)

1.7.0 Latest

Features

  • health: stop a running health check or repair from the Health page (#1753) (02e9b21)

Bug Fixes

  • deps: Bump body-parser from 2.3.0 to 2.4.0 in /frontend (#1742) (a77b5ff)
  • deps: Bump fast-uri from 3.1.8 to 3.1.9 in /frontend (#1743) (ff0f4d3)
  • deps: Bump github/codeql-action (#1758) (0ac3c86)
  • deps: Bump ip-address from 10.7.2 to 10.7.5 in /frontend (#1744) (6fac334)
  • deps: Bump the github-actions group across 1 directory with 2 updates (#1722) (4dd62f6)
  • deps: Bump the npm-minor-and-patch group (#1757) (2dc8b53)
  • deps: Bump the npm-minor-and-patch group across 1 directory with 15 updates (#1736) (af69ab9)
  • deps: Bump the nuget-minor-and-patch group with 1 update (#1756) (11de8f1)
  • deps: Bump the nuget-minor-and-patch group with 11 updates (#1737) (635eb22)
  • deps: Bump the react-router group in /frontend with 5 updates (#1755) (10e0f7a)
  • deps: Bump xunit.runner.visualstudio from 3.1.5 to 4.0.1 (#1723) (b7f3299)
  • health: files PAR2 cannot repair are no longer stuck behind other PAR2 repairs (#1761) (afa599d)
  • health: files replaced by Sonarr/Radarr upgrades no longer pile up as “Not library linked” (#1754) (b1578be)
  • health: PAR2 background repair is now off by default (#1762) (d8169d4)
  • health: stop PAR2 identity probing of dead volumes with untrusted ranges (#1752) (6000cd4)
  • health: treat null pending multipart parts as empty during PAR2 repair (#1740) (933b800)
  • queue: do not record inconclusive article misses as missing evidence (#1745) (1db170a)
  • retry a busy daily maintenance slot in place instead of skipping to tomorrow (#1747) (d46bf6e)
  • scheduled orphan cleanup and database backups no longer skip nights (#1738) (ce51abc)
  • sharpcompress: truncate RAR passwords to 127 characters before key derivation (#1751) (db347c7)
  • usenet: warn with the reason when a segment fetch is classified as protocol (#1746) (9a14f4d)