github hankscafe/omnibus v1.0.9-beta.053
Omnibus v1.0.9-beta.053

7 hours ago

v1.0.9-beta.053 - feat/fix: Enhanced metadata locking, issue extraction, and unmatched resolution

This commit introduces several major quality-of-life improvements for library management, overhauls the issue number extraction logic to prevent misidentification, and adds rate-limit protections during mass imports.

✨ Features & Enhancements

  • Sticky Custom Issue Metadata: Added a hasCustomMetadata flag to the database. Manual edits made via the Bulk Issue Editor are now locked and protected from being overwritten by the background METADATA_SYNC job.
  • Restore Defaults Tool: Added a Restore Default Data button to the Bulk Issue Editor, allowing admins to instantly unlock custom metadata and re-fetch the official ComicVine/Metron names.
  • In-Series Unmatched Resolution: Added a contextual warning banner to the Series Page for admins when unrecognized files are detected in the series directory. Includes an inline dropdown to instantly link local files to missing official records via a new /api/library/issue/link endpoint.
  • Komga/Kavita External Links: Upgraded writeSeriesJson to automatically inject the ComicVine URL into the links array of the exported series.json file.

🐛 Bug Fixes & Stability

  • Bulletproof Issue Number Extraction: Completely overhauled the extractIssueNumber regex in the Importer and Library Scanner. It now strictly prioritizes #, issue, or ch before looking at vol indicators. This perfectly resolves edge cases like Dandadan Vol.2022 #1.cbz misidentifying as issue 2022.
  • Deduplication Loop Fix: Replaced parseFloat logic with a string-based leading zero stripper (/^0+(?=\d)/) in the series auto-healer. This prevents infinite database deletion loops for variant issues (e.g., #1A vs #1B) and non-numeric issues (e.g., Annuals).
  • Rate-Limit Safe Volume Resolution: The ComicInfo.xml extractor can now successfully resolve missing Volume IDs by pinging the ComicVine API if an Issue URL is found in the tag.
  • Extractor Memory Cache: To prevent N+1 API bans during mass folder imports, the extractor now utilizes a composite-key (SeriesName_Year) in-memory cache for Volume IDs.
  • Automated Memory Management: Integrated cleanupMetadataExtractorCache into the existing BullMQ CACHE_CLEANUP job to gracefully purge the in-memory extractor cache of entries older than 24 hours, preventing long-term memory leaks.

Addresses #116

Don't miss a new omnibus release

NewReleases is sending notifications on new releases.