Engine and UI components

Stack

ConfigUI (app shell)
    └── configui-dlangui | configui-dui | configui-qt | …
            └── uniconfig.core.form_model  (in uniconfig-core — not a separate package)
                    └── UniConfig engine
                            └── sidecar + catalog vocabulary (app-owned or fallback-catalog/)

Engine (uniconfig-core)

dependency "uniconfig-core" version="0.1.0"
  • Codecs (syntax), schema − instance merge

  • registerCatalogSource, ProfileResolver

  • form_modelFormRow, flattenFormRows() — import with uniconfig.core; binders depend on this, not a separate uniconfig-form package

Fallback catalog (not a separate repo)

fallback-catalog/ ships with the ConfigUI app — globs + JSON Schema for Git, DUB, EditorConfig, tfvars. App developers ship vocabulary in their own repos; we are not expecting a crowd of format contributors, so no uniconfig-profiles split.

Binders (configui-binders)

configui-binders monorepo:

configui-dui

Target desktop binder (dui/dew) — stub

configui-dlangui

Current ConfigUI default (legacy dlangui)

configui-qt

Qt 6 — stub

configui-gtk

GTK 4 — stub

configui-avalonia

.NET Avalonia — stub

@dev-centr/configui-web

TypeScript types + Solid ConfigForm; use from Next via a client component (no separate Next package)

Each binder walks flattenFormRows(doc.merged) and maps FormControlKind to native widgets.

ConfigUI shell

Binary uniconfig: registry sidebar, format banner, CLI (dump, register-catalog, …).

Build a binder

  1. Depend on uniconfig-core.

  2. Iterate flattenFormRows(mergedRoot).

  3. Wire openDocument / saveDocument for round-trip.

  4. App authors register vocabulary — Ship vocabulary.