Changelog
All notable changes to Digital Bunker Web to Widget. Versions follow semantic versioning.
0.1.0 - 2026-09-05
First beta. Everything below is covered by automation tests (DigitalBunker.WebUMG.*, 16 contracts) on Unreal Engine 5.8.
Added
- Tolerant HTML parser with entity decoding, whitespace collapsing, raw-text
style/scripthandling, structured diagnostics with line and column, and a nesting-depth guard. - CSS value model (lengths, boxes, colors including
rgb,hsl,oklch,oklab, named colors) and a stylesheet parser with element, class, id, attribute, descendant and child selectors, pseudo-classeshover/focus/active/disabled, specificity,:rootcustom properties,var()with fallbacks,@layer,@supports, and@themetokens. - Tailwind v3/v4 utility expansion without a compiler: layout, flex, grid, spacing, sizing, position, typography, colors with
/opacity, arbitrary values,!important, negative values, responsive variants against a design viewport,dark:, state variants, and a full default palette. - Cascade producing one computed style per element from Preflight or browser defaults, stylesheet rules, Tailwind utilities (with Tailwind precedence independent of class order), inline style and
!important. - Mapper producing an engine-independent widget plan: Vertical/Horizontal/Wrap/Grid/Scroll boxes, Overlay plus Canvas for absolute children with anchors from insets, Border and Size Box decorations, buttons with hover/pressed/disabled styles, images, progress bars (including the nested-div pattern), form controls, spacers for
justify-content, Collapsed hidden elements, stable naming, binding and event collection, localization text entries. - Deterministic plan JSON manifest with sorted keys and a SHA1 plan hash; round-trip parsing.
- Editor emitter creating Widget Blueprints through the standard factory, importing images as UI textures, routing text through a String Table, recording provenance metadata, compiling and saving.
- Re-import that reuses widgets by name and class (preserving Event Graph references and designer tweaks), reports added/kept/reclassed/removed, and refuses to overwrite foreign assets without
--force. - Generated C++ binding header with
BindWidgetmembers,BlueprintImplementableEvents and text keys. DBWebUMGImportcommandlet with JSON report, lint mode, manifest and header output;Tools/webumg.pyCLI; Tools menu import; Content Browser re-import action.- Portable-boundary checker, authoring guide for agents, support matrix, diagnostics reference.
- Eight Agent Skills (
skills/) following the agentskills.io format, includingwebumg-from-imagefor 1:1 reconstruction of a supplied screenshot or mockup, withTools/install-skills.pyfor Claude Code, Codex, OpenCode, Cursor and the cross-agent.agents/skillsfolder.
DBWebUMG.Renderconsole command andwebumg.py render: offscreen PNG of an imported widget plus a geometry JSON (absolute rectangle and visibility per widget) for numeric comparison against the browser.- Demo content:
Content/Demo/WBP_CombatHUDimported fromTests/Fixtures/combat_hud.html. backdrop-blur-*/backdrop-filter: blur()map to a native UMG Background Blur (frosted panels).- CSS and Tailwind gradients become native gradient layers: two shipped UI materials (linear, radial) instanced per gradient. Up to three stops with positions, angles, CSS corner keywords, circle/ellipse extents and premultiplied sRGB interpolation follow the specification; the gradient probe fixture renders within 1/255 of Chrome. Rounded corners kept, padding box covered. Fades and vignettes no longer need baked PNGs.
data-webumg-ignoremarks preview-only elements (a gameplay screenshot behind a HUD) that the importer skips (MAP016).
Fixed during pre-release testing against a real HUD
hiddennow beats other display utilities regardless of class order, as in Tailwind (ahidden flexdeath screen rendered visible).- Canvas children with a fixed width and automatic height no longer collapse to zero height.
- An inline element with
flex-1inside a flex row now fills the row. - A flex container centring a single styled inline element keeps the element as an item with its own style; block containers that collapse to a text block keep the inline element style.
rounded-fullmaps to half-height rounding; a fixed radius larger than the box drew nothing.- CLI recovers content paths mangled by Git Bash path conversion.
Known limitations
- Inline formatting inside a text run is flattened (MAP012);
RichTextBlocksupport is planned. - Gradients use at most three stops (MAP005 for more); angled or circular gradients on elements without a resolvable px size are rendered as if square (MAP017);
box-shadowis ignored (MAP006). - External stylesheets are not loaded (HTML011);
@mediablocks are ignored (CSS002). - Inline SVG produces a placeholder image (MAP014).
- Events are declared in the header but the Button
OnClickedto event wiring in the Blueprint graph is manual in this version.