Architecture

Repositories

uniconfig-core

Engine: codecs, schema merge, form_model, catalog index, profile resolver, registry.

configui-binders

Toolkit binders (dui, dlangui, Qt, GTK, Avalonia, web).

uniconfig

ConfigUI app shell + fallback-catalog/ for Git/Terraform/DUB when those tools never ship vocabulary.

Storage, meaning, and panel stacked

Layers

ConfigUI (app) ── registry tree, format banner, file I/O
    └── configui-dui (default desktop binder; dui/dew + Vello)
            └── uniconfig.core.form_model (FormRow / flattenFormRows — in engine)
                    └── UniConfig engine (codecs, catalog index, sidecars)
                            └── fallback-catalog/ (shipped with app only)

Vocabulary discovery

When a file opens:

  1. Registered app catalogs (catalog-index.sdl)

  2. Bundled fallback-catalog/ (third-party tools only)

  3. Sidecar *.schema.json / $schema

  4. On-the-fly inference

No intra-file fork reader in UniConfig until connectome-fs exposes fork I/O.

Desktop renderer

Default build: dub build -c windowed (GLFW + Vello via configui-dui).

Headless CI smoke: dub build -c application (SoftwareBackend, no GPU).

Legacy dlangui: dub build -c dlangui-legacy.

Optional Vello

The dlangui-legacy configuration keeps the older dlangui binder for comparison; the default windowed configuration uses dui/dew + Vello directly.

Formula

\(n_{\text{unset}} = \lvert S \setminus I \rvert\)