v1.1.0-beta.076 - feat(matcher): page preview for unmatched files (port of rust-engine .076)
✨ Features
- Smart Matcher "Preview Pages": flip through an unmatched file's pages in a dialog to identify badly-named downloads before matching — new admin-only archive-preview route (locked to library roots + the unmatched dir, re-checked every request), folder items resolve to their first natural-sorted archive, RAR-family falls back to the single-page archive-cover with a convert-to-CBZ hint
⚙️ Changes
- Port of rust-engine 1d83efa with the engine offload removed — pages are extracted locally via AdmZip with the identical list/filter/sort as the reader and the OPDS page streamer, so indexes always line up (this was the engine path's fallback, now the only path)
- The OPDS/page-count fixes bundled in the rust-engine commit were NOT ported — main already shipped them as beta.075
🧪 Tests
- 6 archive-preview route tests (engine-offload case dropped): non-admin 403, out-of-roots 403, info mode file + page count, folder resolves to first natural-sorted archive, natural-sorted page extraction, out-of-bounds 404
✅ Verification
- tsc clean, vitest 321/321, Docker build passes