* feat(conflicts): add machine-readable CF conflict declarations
Add conflicts.json files for Radarr and Sonarr defining
mutually exclusive custom format pairs:
- SDR vs SDR (no WEBDL)
- x265 (HD) vs x265 (no HDR/DV)
Enables tooling to warn users about conflicting combinations.
Includes new JSON schema and metadata schema updates.
* refactor(conflicts): use id-as-key pattern
Restructure conflicts.json files to use trash IDs as object keys instead
of nested properties. This establishes the structural pattern for future
file migrations across the repository.
- Change custom_formats array items from arrays of objects to objects
with trash ID keys
- Add name (required) and desc (optional) as value fields for each
conflict entry
- Update schema to use patternProperties with hex regex for key
validation
- Set minProperties: 2 on conflict groups to ensure at least 2
conflicting CFs
* docs(contributing): document conflicts.json files
Adds documentation for the new conflicts.json files so contributors know
how to declare mutually exclusive Custom Formats when working with sync
app data.
- Add index entry and file references for conflicts.json
- Document the conflicts.json schema and format
- Explain how sync tools use conflict declarations
* feat: add navigation prefetch and progress bar
- `navigation.instant.prefetch`: Preloads pages when users hover over
links, making navigation feel instant on subsequent clicks.
- `navigation.instant.progress`: Shows a slim progress indicator at
the top of the page on slower connections, providing visual feedback
that a page is loading.
Both features build on the existing `navigation.instant` and require
no additional configuration.
* feat: add search suggestions, highlighting, and TOC follow
- `search.suggest`: Shows autocomplete suggestions in the search bar
as users type, helping them find content faster.
- `search.highlight`: Highlights matching search terms on the target
page after clicking a result, making it easy to spot relevant text.
- `toc.follow`: Automatically scrolls the table of contents sidebar
to keep the active heading visible, so users always know where they
are in long pages.
* fix: remove duplicate pymdownx.tabbed entry
The extension was listed twice: once without options (line 57) and
once with `alternate_style: true` (line 60). The duplicate bare entry
is redundant and may cause unexpected behavior. The configured entry
with `alternate_style` is the correct one per Material for MkDocs
requirements since v9.
* fix: use standard permalink icon for table of contents
Changes `permalink: ""` to `permalink: true`. The empty string
renders an invisible/empty permalink anchor on every heading, which
means the feature is technically active but users can't see or click
the link icon. Setting it to `true` uses Material's default pilcrow
(¶) icon, making heading permalinks visible and clickable for easy
sharing of direct links to specific sections.
* feat: add syntax highlighting enhancements
Adds three options to `pymdownx.highlight` and the `pymdownx.inlinehilite`
extension:
- `anchor_linenums: true`: Makes line numbers in code blocks clickable
anchors, allowing users to link directly to specific lines.
- `line_spans: __span`: Wraps each line in a span element, enabling
per-line styling (e.g., highlighting specific lines).
- `pygments_lang_class: true`: Adds the language name as a CSS class
to code blocks, allowing language-specific styling.
- `pymdownx.inlinehilite`: Enables syntax highlighting in inline code
using the `#!language code` syntax (e.g., `#!python print("hello")`).
Useful for referencing code snippets within paragraph text.
* Change toc permalink setting to an empty string