fn read_registry(plugins_root: &Path) -> PluginRegistryExpand description
Read the plugin registry. A missing file is the fresh install and reads as empty in silence; an unreadable or unparseable one warns with the reason and reads as empty too; the page renders identically either way, so the warn is the only place the difference shows.