Skip to the content.

Icon documentation - conventions

This folder holds the machine-generated icon system that lets the user docs show the real interface icons from FastMediaSorter next to the features they belong to.

Convention: icons, not emoji

What is generated vs hand-authored

Generated - never hand-edit these:

Hand-authored - the only editable file here:

Regenerating the tree

Run the three stages in order after an icon or a related string changes:

  1. Inventory (from the app registries):

    .\gradlew.bat :app_v2:testStandardDebugUnitTest --tests "*IconInventoryExportTest" -Dicon.inventory.generate=true
    
  2. SVG assets (from the inventory):

    pwsh -NoProfile -File scripts/docs/export-icon-svgs.ps1
    
  3. Legend pages (from the inventory + annotations + app strings):

    pwsh -NoProfile -File scripts/docs/render-icon-legend.ps1
    

Steps 2 and 3 are idempotent - a re-run is byte-identical when nothing changed.

Drift gate

scripts/quality/assert-icon-inventory-sync.ps1 locks the tree against drift: it checks cheap settings-source freshness (fragment_settings_*.xml vs the committed settings-header/settings-row subset), asset coverage (every public vector has its SVG, framework icons have none), rejects orphan SVGs, byte-diffs a fresh legend re-render against the committed pages, and enforces cross-locale parity. Pass -IncludeExportTest to also re-run the full inventory export test in assert mode (heavy - CI / opt-in).

The gate runs automatically from scripts/post-change.ps1 for:

If it fails with a “stale”, “settings-source”, or “missing SVG” message, re-run the matching stage above and commit the regenerated files.