GolemUI v1.2.0: bring your own widget set
GolemUI v1.2.0 is out. It is the release where the engine stops being special: the machinery that turns gui.inputs.textInput(...) into a rendered, validated widget is now a public API, and you can point it at your own components.
Widget sets are now something you can build
Section titled “Widget sets are now something you can build”Until now GolemUI shipped exactly one widget set. The gui.* namespace, its selectors, and the <gui-form> components were built on internal wiring you could extend with custom widgets but not replace.
v1.2.0 extracts that wiring into @golemui/dx, the form authoring pipeline with the widget set factored out. Declare your widget types, get back a typed namespace and selector chain, and hand the result to one factory per framework:
createFormComponentin@golemui/react,@golemui/vue, and@golemui/litreturns a ready-to-use form component (in Lit, an element class where you pick the tag name).- Angular components cannot be returned from a factory, so
@golemui/angularshipsprovideWidgetSetand a generic widget set form component you wrap instead.
The proof it holds up: the shipped GuiForm and <gui-form> components are now built with these exact calls. The gui set is no longer privileged, just first.
Start with the new Widget Sets docs.
A full accessibility pass
Section titled “A full accessibility pass”Every component went through an accessibility review this cycle: validation errors are announced through a live region, date and time pickers got a rebuilt keyboard and screen reader experience with per-segment aria-label props (accepted by the JSON schemas too), tab panels joined the tab order, the password visibility toggle became a real named button, calendars announce month changes, and decorative icons disappeared from the accessibility tree. The widget reference prop tables list every new aria prop.
Smaller but worth knowing
Section titled “Smaller but worth knowing”- Validators fail loudly. A typo in a validator
type, stringformat, or custom rule name now throws at initialization, listing the valid options, instead of silently skipping the check. - Deterministic widget uids. Widgets without an explicit
uidget a stable position path (like#0.2.1) instead of a random id, so uid-based selectors and DOM ids survive re-renders and decodes. - Validation from application code. Event handlers can inject validation issues onto any widget.
- MCP CLI subcommands.
npx @golemui/gui-mcp check-dxandvalidate-jsonrun the MCP guardrails from a terminal or CI, no MCP client needed.
Upgrading
Section titled “Upgrading”v1.2.0 has no breaking changes from v1.1.0: bump every @golemui/* package together (versions move in lockstep) and you are done. If a form definition suddenly throws at startup, that is the loud validators doing their job: the message names the typo and the valid options.
The full commit-level list lives in the changelog.