2.31.0 (2026-07-14)
Features
- add newznab/torznab indexer endpoints (5e5ee1c)
- add option to enable failover during pre-caching (#1038) (bc42579)
- altmount: use native /api/nzb/streams API instead of SABnzbd+WebDAV (#1023) (8886054)
- builtins/easynews-search: attach probed media info and support v3 api (df1539e)
- builtins/nab: add configurable season pack search strategy for auto-mode series search (#1061) (46eb329)
- builtins: adjust for aiostreams service (7dabf46)
- config: alias renamed setting keys to preserve DB-stored values (9b60a13)
- config: support multiple env names (6a2c31d)
- config: usenet configuration schema & env metadata (163198f)
- core: add full-pipeline stream result cache (#1075) (a0a82c9)
- core: consolidate env vars, user-agent & proxy settings (eecfdbe)
- core: shared utils for usenet (xml, disk-backed cache, caches) (6e191f0)
- dashboard/usenet: move actions into dropdown menu, add requeue action, allow bulk requeue and block (4910054)
- dashboard/usenet: show hostname and full nzb url on hover (aa2eec5)
- dashboard/usenet: show nzb url in entry info modal (8802e6f)
- dashboard: add action menu to usenet settings page (47cbf20)
- dashboard: add command palette (#1095) (55b1412)
- dashboard: add confirmation dialog to clear all overrides (41e20a2)
- db: usenet persistence (migrations & repositories) (d2a490f)
- debrid: usenet streaming & aiostreams provider (25d33c9)
- deduplicator merging, allow adding duplicates to failover list, allow external debrid addons for failover targets. fix proxying for failover targets (dafbd53)
- formatter: add
stream.preloadingvariable for preload streams transparency (79c6e28) - frontend: add logo and link to some compatible clients in install page (fce8d42)
- frontend: simplify provider ordering/grouping (d978aaa)
- frontend: UI primitives & dashboard wiring (a72e945)
- frontend: usenet dashboard (c0c3ae9)
- main: make failover generic, parallel and cross-type (8aa62d7)
- make log level and format runtime settings (f4240df)
- move result limiting after SEL (b4d513c)
- presets: add davex preset (a7596d8)
- proxy: serve nzbs from download manager (3a5258e)
- release-blocklists: add publishing page with gist provider (e052cad)
- release-blocklists: move public export settings to publishing page (31fc06a)
- release-blocklists: shareable verdicts for dead and fake releases (#1086) (41e20a2)
- remove unused nzb proxy (5c14d71)
- server: usenet & dashboard API routes (203ae49)
- usenet/archive: 7-Zip reader (LZMA) (03ad62a)
- usenet/archive: archive core (random-access fs, volumes, streams) (8973ff0)
- usenet/archive: crypto (AES, RAR/7z KDF) (c3472aa)
- usenet/archive: opener & set resolution (3081055)
- usenet/archive: RAR reader (rar4 & rar5) (818c878)
- usenet/inspect: availability inspection & probing (6faefe9)
- usenet/integration: integration layer (engine, library, sessions, dashboard adapters) (28e2aa4)
- usenet/nntp: NNTP protocol & connection pool (b5157be)
- usenet/nzb: NZB parsing module (74b3c48)
- usenet/par2: PAR2 decoding (f211d17)
- usenet/pool: improve affinity handling (d81acdd)
- usenet/pool: segment pool & streaming primitives (cce9175)
- usenet/pool: yEnc decoding (bd4efd5)
- usenet/sabnzbd: SABnzbd-compatible API (8345a7b)
- usenet/stats: stats accumulation (ca70c59)
- usenet: add configurable pre-playback verify mode (stat/body) (873208f)
- usenet: add delete all button to library (#1034) (d88a774)
- usenet: add inspect scheduler with max concurrent imports (187e4aa)
- usenet: add stream stop button and idle-timeout setting (bffcd97)
- usenet: census verifier and zero-fill hole padding (57c6444)
- usenet: remove default pipeline depth setting (e6eaeba)
- usenet: remove fail archive options (d60a9ce)
- usenet: store library aliases and key purely by content hash (187e4aa)
- usenet: stream dashboard live stats and ease between frames (713abaa)
Bug Fixes
- adjust header handling (b7f8623)
- anime-database: resolve season 1 to the first cour for TV-less shows (10f4f38)
- api/user: dont allow encrypted password for user API (2852d01)
- builtins/easynews-search: default to 3.0 and add search concurrency of 2 to 2.0 (1b0c05b)
- builtins: convert parsedMediaInfo duration from seconds to ms when applying to streams (df61254)
- command-palette: scroll to the selected setting on mobile with accordions (8de1582)
- dashboard/usenet: show toast on non .nzb file upload (b24fc13)
- dashboard: adjust usenet library layout (e3856e6)
- disk-backed-cache: await disk ready on get (134156a)
- disk-backed-cache: periodically flush index and on server shutdown (843f926)
- failover: improve external target probing heuristics (351560a)
- filterer: handle 0 in season/episode matching (efca9a6)
- frontend: description adjustments (cc552af)
- main: mutate original stream when marking
preloading(f64cfe1) - media-info: derive resolution from both dimensions and map more real-world codec aliases (1daca60)
- media-info: ensure duration is in seconds (aeb2898)
- presets/easynewsSearch: valdiate easynews service credentials (5a98930)
- presets/newznab: move Season Pack Strategy option next to Search Mode (#1093) (20100f6)
- presets/usenetStreamer: parse smart play into stream.message (2237165)
- proxy: pass
nzb_grabscontext toshouldProxyandresolveOverrideHeadersfornzbtype (#1046) (26d9601) - sel: update service list in whitelist and error message for
service()(#1043) (231a8cb) - server: add unhandled exception/rejection net (9ee6afc)
- update link to docs (c077dd1)
- use special header for ip forwarding (8fa6cad)
- usenet/archive: group obfuscated multi-volume archives with per-volume random base names (d19e90a)
- usenet/archive: order RAR volumes by RAR5 header volume number, not filename (f4919c2)
- usenet/nzb: harden subject parsing (06513a2)
- usenet: attribute archive-set missing-article failures to the actual failing volume (82226ae)
- usenet: check plausibilty of yenc size (892e25a)
- usenet: destroy live readers and drop warm sessions on engine close (47ef36e)
- usenet: fetch by message-id only, never send GROUP (e5e1f82)
- usenet: improve connection handling and connection/download stat display (089aa47)
- usenet: include password hmac in fingerprint (bcf36cc)
- usenet: invalidate warm engines on config change (bcf36cc)
- usenet: make archive crypt errors generic and use in sevenzip (30e82d8)
- usenet: make error classification more robust (bcf36cc)
- usenet: measure latency separately (958777f)
- usenet: measure only DATE command latency (#1035) (37ff5f0)
- usenet: mint extension-less stream urls for cloudflare compatibility (#1070) (d0cf369)
- usenet: prefer to size archive volumes by par2/part-grid (b0f2473)
- usenet: prevent crashes from unhandled rejections and post-EOF stream errors (9fe2b68)
- usenet: recover from transient provider failures (bcf36cc)
- usenet: redesign provider speed test (daddc7a)
- usenet: share the archive boundary-segment memo per VolumeSet (4fd2e8f)
- usenet: stop obfuscated split-7z inference from absorbing par2 sidecars (1e98a8e)
- usenet: stream RAR5 -p encrypted splits with non-16-aligned volume fragments (39464b2)
- usenet: throw on externally-aborted inspect (705d66c)
- usenet: truncate rar passwords to 127 chars, cap archive passwords at 512 (23d9f0c)
- usenet: use name from meta (f809046)
Performance Improvements
- docker: preload mimalloc (cbee416)
- usenet/nzb: byte-level segment scanning and chunked hashing (e546e8b)
- usenet: lean yEnc decode with pooled output buffers (7aacb4b)
- usenet: rework connection budget and make the segment cache disk-only (cab8322)
- usenet: scale archive windows with read-ahead and cancel stale queued downloads (2735fb2)
- usenet: suffix-anchor near-EOF reads for lazy split-RAR streams (1a0c1b7)
- usenet: zero-alloc onread NNTP read path (01e3332)
- usenet: zero-alloc serve path with a pinned segment arena (d9f6b9c)