Clean up documentation by removing obsolete implementation notes and
updating the Calibre OPF implementation guide.
Changes:
- Update CALIBRE_OPF_IMPLEMENTATION.md with namespace URL approach
- Remove IMPLEMENTATION_TAGS_FILTER.md (superseded by unified search)
- Remove UNIFIED_SEARCH_IMPLEMENTATION.md (implementation complete)
The Calibre OPF documentation now reflects the corrected approach using
full Dublin Core namespace URLs (http://purl.org/dc/elements/1.1/)
instead of namespace prefixes, which were found to not work with Go's
XML decoder.
Documentation: #docs-cleanup
Update CALIBRE_OPF_IMPLEMENTATION.md to be implementation-ready with detailed, copy-paste code for all functions.
Major enhancements:
- Add 4 detailed implementation steps with emoji markers (📝 STEP 1-4)
- Include complete, ready-to-copy code for all functions:
* CalibreOPFMetadata struct (STEP 1)
* parseCalibreMetadataOPF() function ~130 lines (STEP 2)
* extractCalibreSidecar() function ~25 lines (STEP 3)
* extractMetadata() modification showing exact lines to change (STEP 4)
- Add comprehensive unit test file (~200 lines) with test cases
- Add optional integration test (~100 lines)
- Add required imports section (encoding/xml)
- Add verification & testing checklist (Phase 4)
- Add troubleshooting guide for common issues
- Add success criteria checklist
Plan now provides:
- Exact line numbers and locations for all changes
- Complete functions ready to copy/paste
- Clear before/after code for modifications
- Test data and expected outputs
- Build verification commands
- Manual testing procedures
Implementation plan is now detailed enough for direct implementation by copy-pasting code sections.
Total plan: 1,113 lines (up from 427 lines)
New code templates: ~450 lines of production + test code
Time estimate: 2-2.5 hours for complete implementation
Add comprehensive implementation plan for Calibre metadata.opf sidecar file support in the media scanner.
Key features:
- Sidecar-first approach: Calibre metadata.opf takes precedence over embedded metadata
- Complete database schema mapping (no schema changes required - all fields exist)
- Dublin Core and Calibre-specific field support
- Simplified implementation: modify existing extractMetadata() instead of wrapper pattern
- Works for all library types and file types
- Comprehensive testing strategy
Implementation details:
- ~150 lines of new code (2 new functions + 1 modification)
- No call site changes required
- Graceful degradation on malformed XML
- Performance target: <5% scan time increase
This plan reflects simplified approach based on user feedback to directly modify extractMetadata() rather than creating wrapper functions.
Related: User guide and developer docs added in separate commits