fileitemaction uses completeSuffix() to preserve the full extension.
fileTypeFromExtension() recurses on compound extensions to detect
frontmatter support from the inner extension.
Components:
- lib/: shared denote metadata parsing and frontmatter handling
- extractor/: KFileMetaData plugin for Baloo indexing
- fileitemaction/: "Rename with Denote..." Dolphin context menu
- Unit tests for metadata and frontmatter parsing
All tests passing, builds against KF6/Qt6.