Summary
This PR adds the much requested feature, Library Import. It also fixes multipart import behavior, and adds safer filesystem cleanup options when deleting audiobooks.
Added
- Full-page Library Import view at
/library-import - Sidebar navigation link for Library Import
- Root folder selector with explicit Scan action for unmatched files
- Cached unmatched scan results with last-scanned timestamp and unmatched count
- Grouped multipart-file rows in Library Import instead of one row per file
- Expandable grouped-file list so users can inspect all files included in a row
- Destination root folder selector in the Library Import footer
- Live import-progress indicator on the Import N Books button
- Sortable and resizable Library Import table columns
- Mobile-optimized Library Import table/card layout
- Embedded metadata parsing for unmatched scan, including better ASIN discovery from more tag variants
- Support for non-standard embedded ASIN tags such as
ASIN:andCDEK - ASIN embedding on import
- User-configurable import extension/filetype blacklist in Settings
- Filesystem delete options for audiobooks, including folder deletion and empty author-folder cleanup when safe
- Regression test coverage for Library Import, unmatched scan grouping, multipart import behavior, delete behavior, and footer/import UX
- Library Import matching prefers:
detectedAsin- detected album/title plus author
- filename/folder fallback
- Library Import search modal pre-fills and uses detected author more intelligently
- The Book column prefers detected album/title metadata and falls back to folder name only when metadata is unavailable
- Import actions treat grouped files as a single import unit
- Move/Hardlink-Copy imports bring companion files along unless blocked by the configured blacklist
Fixed
- Multipart imports assigning colliding filenames and ending up out of order after rename
- Multi-file manual...
Automated canary build