v1.0.9-beta.055 - feat/fix: Overhaul library UX, upgrade file parser, and expand naming conventions
This major update resolves complex edge cases in the automated file parser, rescues raw folders from the JIT Black Hole, and introduces highly dynamic UI components for better library management.
✨ Features & Enhancements
- Dynamic Standardize File Names Modals: Upgraded the rename modals on the Library and Series pages to dynamically fetch the admins configured folder_naming_pattern and file_naming_pattern. Replaced rigid dropdowns with editable text inputs for quick, on-the-fly modifications.
- Expanded Naming Variables: Added {VolumeYear} and {IssueYear} tags to the library renamer, background importer, and UI settings, allowing admins to explicitly distinguish between the parent series year and the individual issues publication year.
- Library Grid Visibility: Updated the /api/library endpoint to explicitly bypass the 0 issues restriction for any series flagged as UNMATCHED. Brand-new folders dropped directly into the library are no longer invisible and can now be interacted with immediately.
- Unmatched UI Badges & Fallbacks: The Library API now returns matchState, allowing grids and list views to render a highly visible orange Unmatched badge on raw folders. The Series page header also now gracefully falls back to a generic Omnibus placeholder icon if an official cover URL is missing.
🐛 Bug Fixes & Parser Upgrades
- Fixed Volume Tag Greedy Parsing: Restricted the Volume identifier regex to a maximum of 3 digits (\d{1,3}(?!\d)). This prevents the parser from incorrectly consuming 4-digit volume years (e.g., V2024) as the issue number, safely passing the string down to the standalone number parser.
- Fixed the Year Trap Edge Case: Updated the final fallback parser to explicitly ignore standalone numbers between 1900 and 2099. This ensures series with years in their title (e.g., Spider-Man 2099, 2000 AD) do not accidentally have their title year extracted as an issue number when explicit # tags are missing. (Safeguards applied universally across the Importer, Library Scanner, BullMQ worker, and Search engines).
- UI & TypeScript Fixes: Resolved a TS type definition error on the Series page where isManga was missing from the seriesInfo state interface, and restored an accidentally truncated modal block on the main Library page.
♻️ Refactors & Optimizations
- Smart Matcher Optimization: Simplified the /api/admin/unmatched query to rely strictly on the native matchState: UNMATCHED enum rather than performing brittle string matching against the metadataId, significantly improving query reliability and speed.