* feat: add comic metadata support to metadata picker and fix Comicvine parser * feat: lazy-load Comicvine issue details on selection * feat: lazy-load detail metadata for Amazon, GoodReads, and Audible parsers * fix: prevent spurious comic_metadata row creation for non-comic books * fix: extract rich previews from Audible search and reorder picker sections * feat: redesign metadata editor layout with collapsible sections and boolean selects * fix: implement per-field comic metadata locks replacing grouped locks * feat: add comic metadata filters and fix visibleFilters backend support * fix: use human-readable role labels in comic creator filter * fix: auto-populate comic metadata from ComicVine during metadata fetch * refactor: clean up ComicvineBookParser remove duplication and comments * fix: use ComicMetadata webLink for ComicVine favicon URL * fix: cache library options to prevent Set All dropdowns from resetting * fix: stream book content from disk instead of loading entire file into memory * fix: increase max visible filters from 15 to 20 * feat: replace filter multiselect with drag-and-drop reorderable list * fix: use audiobook-specific cover paths and cache busting for audiobook thumbnail updates * chore: enforce mandatory screenshots and stricter testing requirements in PR template * fix: update BookServiceTest to match Resource return type after streaming change --------- Co-authored-by: acx10 <acx10@users.noreply.github.com>
2.8 KiB
📝 Description
🏷️ Type of Change
- Bug fix
- New feature
- Enhancement to existing feature
- Refactor (no behavior change)
- Breaking change (existing functionality affected)
- Documentation update
🔧 Changes
🧪 Testing
📸 Screenshots / Video (MANDATORY)
Due to an increase in untested, AI-generated PRs, we have made this section mandatory for all submissions. Please include screenshots or a screen recording that demonstrates your change working end-to-end (e.g., the bug fix in action, the new feature working, API responses, or test output for backend changes). PRs that do not include this will be closed without review. Thank you for helping us keep the project stable.
✅ Pre-Submission Checklist
All boxes must be checked before requesting review. Incomplete PRs will be closed without review. No exceptions.
- Code follows project style guidelines and conventions
- Branch is up to date with
develop(merge conflicts resolved) - Automated tests added or updated to cover changes (backend and frontend)
- All tests pass locally (
./gradlew testfor backend,ng testfor frontend) - Changes manually verified in local dev environment (including related features)
- Screenshots or video proving the change works are attached above (MANDATORY)
- Flyway migration versioning is correct (if schema was modified)
- Documentation PR submitted to booklore-docs (if user-facing changes)
- PR is reasonably scoped (PRs over 1000+ changed lines will be closed, split into smaller PRs)
🤖 AI-Assisted Contributions
If any part of this PR was generated or assisted by AI tools (Copilot, Claude, ChatGPT, etc.), all items below are mandatory. AI-generated code that hasn't been thoroughly reviewed is the leading cause of reverted PRs. You are responsible for every line you submit. "The AI wrote it" is not an excuse.
- Every line has been read, understood, and can be explained by the author
- PR is scoped to a single logical change, not a dump of everything the AI suggested
- Tests validate actual behavior, not just coverage (AI-generated tests often assert nothing meaningful)
- No dead code, placeholder comments,
TODOs, or unused scaffolding