Why a generic config panel
A config file without a schema is a photograph of the keys someone happened to need. The rest of the legal vocabulary — enums, defaults, descriptions — lives in docs, provider plugins, or someone else’s example.
Linux already solved this for opt-in apps: GSettings schemas plus dconf-editor, or KDE KConfigXT. Windows Group Policy templates do the same from ADMX. Developers get a weaker cousin: SchemaStore plus editor completion.
Nothing trustworthy sits in the middle: open this Terraform tfvars, that dub.sdl, that .gitconfig, register them after touch, and keep the same panel widgets.
Two layers (do not confuse them)
Syntax / codec |
INI, YAML, TOML, SDLang, HCL-lite — parsers in uniconfig-core. Always in the engine. |
Vocabulary / schema |
Which fields exist, types, enums — JSON Schema reached via catalog profiles. Shipped by app authors, registered on the user’s machine. |
You are not loading profiles to parse profiles. You parse with codecs; you overlay vocabulary from catalogs.
ConfigUI’s resolution ladder
When a file opens, the engine tries, in order:
-
Glob match from registered app catalogs (
catalog-index.sdl) or bundled fallback -
Sidecar /
$schemanext to the file -
On-the-fly inference from instance keys (weakest — no unset fields)
Registration is lazy: catalogs load when needed, stale paths prune on read. No merged mega-catalog on disk.
What app developers do
-
Ship
uniconfig/catalog.sdl+ schemas in their repo -
Register the catalog path on startup (
registerCatalogSource) -
Provide a repository URL or declare closed source (required metadata)
See Ship vocabulary. The bundled fallback-catalog/ in the ConfigUI app covers Git/Terraform/DUB only.
What ConfigUI still does locally
-
Register after touch — opened file paths in
registry.sdl(left tree) -
Round-trip — write instance back to the project’s config file; vocabulary stays in catalog/schema or sidecars
HCL programs and for_each stay out of v0.1; .tfvars assignments are in.
Related HCI writing
Making settings follow the activity (where settings sit relative to work) and Config UI as the field vocabulary (what the surface is allowed to name).