github logabell/dewarr v0.3.8
Dewarr v0.3.8 — Massive speed and optimization improvements

6 hours ago

Dewarr v0.3.8 — Massive speed and optimization improvements

This release brings massive speed and optimization improvements across Discover, collections, cover art, metadata enrichment, and large-library workflows. Shelves start together, saved content appears sooner, artwork reuses more cache layers, and database queries do less repeated work. It also adds richer audiobook metadata and discovery sources, improves import and download review, and resolves several reported download and account-management problems.

Faster Discover, collections, and lists

  • Start the first six Discover shelves in parallel instead of waiting to mount all but the first two. Load later shelves 1,200 pixels ahead of the viewport, while keeping hidden and distant shelves from flooding requests.
  • Preserve mounted shelves when personal lists or other sources arrive later, avoiding canceled requests and repeated loading.
  • Bootstrap collection indexes, saved preferences, pinned collections, and selected collection cards in one home response. Load the full shelf catalog only when Customize needs it.
  • Show saved collection previews immediately while expanded source pages load. Serve expired Goodreads pages and saved live charts while background workers refresh them.
  • Include Hardcover list artwork in the list response, avoiding a separate metadata lookup per book; continue checking public-list visibility on every read.
  • Resolve personal-list identities only for books belonging to the requested list or list-index page. Reuse unfiltered totals instead of counting the same results twice.
  • Keep the newest Fiction and Fantasy shelves available when newer awards in other categories are added.
  • Avoid unnecessary first-load invalidation of followed-list books when an existing successful sync timestamp is first observed.

Faster cover art and metadata

  • Serve responsive 320px and 640px artwork for cards, retaining 1200px artwork for detail and export paths. Image variants reuse the original download.
  • Add a bounded memory cache above durable image storage, avoiding repeated database image reads and decoding on warm hits. Durable cached images survive container restarts.
  • Reuse public artwork in the browser for a day and durable public artwork for up to a year. Add ETags for conditional responses.
  • Reduce warm library-cover queries, while continuing to verify current library access, selected editions, backend generation, and artwork revisions before returning images or 304 responses.
  • Prefer available public card artwork when appropriate; retain explicit library-edition choices and library artwork priority on book details.
  • Expose X-Cover-Cache and Server-Timing headers so cache hits and server processing time can be distinguished from browser queuing or cold downloads.
  • Move missing reader metadata into small background batches. Available card data no longer waits for every slow provider lookup to finish.
  • Cache reader enrichment for five minutes with reader, account, endpoint, and library-evidence scoping. Give catalog refreshes two dedicated worker slots while preserving shared provider rate limits.

Less database work as libraries grow

  • Scope canonical identity and availability lookups to relevant books and families rather than repeatedly traversing the full catalog.
  • Reduce repeated queries and large-row loading in library projections, following overviews, review queues, observation processing, and list scheduling.
  • Batch scheduler updates and exclude busy policies before selecting eligible work, preventing occupied jobs from starving other lists.
  • Reuse blocklist and recovery context across candidate evaluation instead of loading them once per result.
  • Add an index for book coverage lookups and regression coverage for large-library query behavior.

Measured examples

On a disposable local PostgreSQL 18 database containing 10,000 books, six warm personal-list requests took approximately 290 ms sequentially before these changes and 111 ms in parallel afterward. With both versions run sequentially, the query changes reduced that sample to 183 ms. Warm public-image memory hits measured 1.7–2.0 ms, and warm library-image memory hits 8.1–8.8 ms.

These are individual local measurements using synthetic artwork. They exclude remote-provider latency, image conversion, browser queuing, and NAS load; they are not a universal speed guarantee.

Richer metadata and discovery

  • Add Audible recording metadata and Audnexus gap filling for ASIN, narrators, runtime, language, abridgment, and recording release information, while preserving existing accepted identity and protected metadata.
  • Add Audible search fallback and exact-ASIN import fallback, plus configurable marketplace support.
  • Add Audible popular, recent-release, and upcoming collections, and optional New York Times bestseller collections with daily refresh for followed sources.
  • Add curated official award selections from Hugo, Nebula, Booker, Pulitzer, Newbery, Caldecott, and Audie sources, with organization/year/category/audience/language filters, recognition status, and relevant contributor credits. Coverage is explicit for each included category and year.
  • Support an optional administrator-managed regional metadata endpoint and an optional metadata HTTP proxy. Additional metadata sources remain optional.
  • Preserve the last successful live-source snapshot when refresh fails. Pinning, following, and downloading remain separate actions.

Downloads, matching, and import review

  • Fix Soulseek selections incorrectly falling through to torrent/Prowlarr resolution; use the peer file list through the real artifact-resolution path. Improve transfer cleanup when connection settings change. (#31)
  • Add an Enabled control for download clients. Disabling a client prevents new submissions while existing transfers continue to be monitored and imported using their existing approvals. (#33)
  • Accept recognized trailing language and media labels when matching release titles and authors, including German audiobook labels, without treating unknown qualifiers as trusted identity evidence. (#50)
  • Decode supported AudiobookBay result markup without aborting an entire results page. (#51)
  • Improve MyAnonamouse VIP eligibility, EPUB-with-MOBI companion handling, and held-source review navigation. Keep explicit freeleech protection and request context through inspection and approval. (#52)
  • Improve manual import navigation, selected-download association, release matching, audio ordering, collection-content review, and progress feedback. Held imports expose the relevant inspection or matching workflow.
  • Improve source and downloader connection feedback, recovery checks, and request cover-art fallback.

Library organization, accounts, and usability

  • Add opt-in placement of ebooks inside matching audiobook version folders, including multiple narrations and either import order. Use hardlinks when possible and copies otherwise, with durable placement receipts and inventory verification. Existing conflicting files are not overwritten. (#49)
  • Support literal braces in naming templates and narrator fallback from a selected native MyAnonamouse release when file tags lack a narrator. (#49)
  • Add deletion of unused accounts and unlinking of OIDC or Plex sign-in providers, with history preservation, alternate-login checks, session revocation, and self/last-admin protection. Existing accounts with history can be renamed or disabled. (#37)
  • Improve settings navigation, account access controls, naming previews, source filters, Quick add, book-detail layouts, and review actions across narrow and wide screens.

Upgrade notes and remaining scope

  • Update to ghcr.io/logabell/dewarr:v0.3.8 or ghcr.io/logabell/dewarr:latest. AMD64 and ARM64 images are published through the checked release pipeline.
  • Align backup schema validation with the new migration head and explicitly hold ebook-companion background placement after a state restore until recovery activation is supported. Normal imports are unaffected by this restore-only restriction.
  • This release includes database migrations for ebook companion receipts, recording runtime, and the book-coverage index. Keep API and worker versions aligned.
  • Ebook companion placement is opt-in. It retains the canonical ebook folder and does not automatically backfill all existing books when enabled. MAM narrator fallback does not perform Prowlarr-to-MAM cross-enrichment.
  • Supplemental metadata setup and coverage are documented in Metadata sources; companion behavior is documented in Library folders.
  • Reverse-proxy origin reports and installation-specific SABnzbd/qBittorrent search reports remain open where the reported cause has not been established. Broader Audible category browsing, chapter enrichment, and MAM bookmark automation are not claimed complete by this release.

Validation: Full release checks passed, including backend unit/contract tests, all four database integration shards, mocked and live browser journeys, migration and schema checks, frontend validation, secret scanning, and AMD64/ARM64 container builds and smoke checks.

Full changes: v0.3.7...v0.3.8

Don't miss a new dewarr release

NewReleases is sending notifications on new releases.