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_model—FormRow,flattenFormRows()— import withuniconfig.core; binders depend on this, not a separateuniconfig-formpackage
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:
|
Target desktop binder (dui/dew) — stub |
|
Current ConfigUI default (legacy dlangui) |
|
Qt 6 — stub |
|
GTK 4 — stub |
|
.NET Avalonia — stub |
|
TypeScript types + Solid |
Each binder walks flattenFormRows(doc.merged) and maps FormControlKind to native widgets.
Build a binder
-
Depend on
uniconfig-core. -
Iterate
flattenFormRows(mergedRoot). -
Wire
openDocument/saveDocumentfor round-trip. -
App authors register vocabulary — Ship vocabulary.