← Web to Widget
Diagnostic codes
Every diagnostic has a stable code, a severity, and usually a line and column in the source HTML. Errors abort the import. Warnings are reported and the import continues. Info entries explain a decision the importer made. Agents and CI should key on the code, never on the message text.
HTML (parser)
| Code | Severity | Meaning | What to do |
|---|
| HTML001 | warning | Element never closed; auto-closed at end of input | Close the tag |
| HTML002 | warning | End tag with no matching open element; ignored | Remove the stray end tag |
| HTML003 | info | Element implicitly closed by an outer end tag | Usually fine |
| HTML004 | warning | Malformed attribute | Quote the value |
| HTML005 | warning | Unterminated comment | Add --> |
| HTML006 | warning | Unterminated tag or declaration | Fix the markup |
| HTML010 | warning / info | script ignored (info for the Tailwind CDN script) | Nothing; JavaScript is never converted |
| HTML011 | warning | External stylesheet link ignored | Move rules into a <style> block |
| HTML012 | warning | Duplicate id | Make ids unique; only the first can be bound |
| HTML020 | error | Nesting deeper than 256 | Flatten the design |
CSS (stylesheets and cascade)
| Code | Severity | Meaning | What to do |
|---|
| CSS001 | warning / info | Rule or at-rule could not be parsed and was skipped | Check the syntax |
| CSS002 | warning | @media block ignored | Use --viewport, or unconditional rules |
| CSS003 | warning | Unsupported selector (sibling combinators, pseudo-elements, :not(), :nth-*, nesting) | Use class, id, descendant or child selectors |
| CSS004 | warning | @import ignored | Inline the rules |
| CSS005 | info | @keyframes ignored | Animate in UMG |
| CSS006 | info | @font-face ignored | Pass --font |
| CSS007 | warning | Property not supported | See the support matrix |
| CSS008 | warning | Value could not be parsed | Fix the value |
| CSS009 | info | Non-visual property ignored (transition, cursor, ...) | Nothing |
| CSS010 | warning | var() had no value and no fallback; declaration dropped | Define it on :root or add a fallback |
TW (Tailwind)
| Code | Severity | Meaning | What to do |
|---|
| TW001 | warning | Unknown class: not a Tailwind utility and no stylesheet rule uses it | Typo, custom color, or plugin class; define a rule or remove it |
| TW002 | info | Variant not applicable at the design viewport/mode (max-*, print:, dark: when off) | Nothing, or pass --dark / --viewport |
| TW003 | info | Utility has no visual effect in UMG (transition-*, cursor-*, ring-*, ...) | Nothing |
MAP (mapper)
| Code | Severity | Meaning | What to do |
|---|
| MAP001 | info | Element has no dedicated mapping; treated as a container | Usually fine |
| MAP002 | warning | data-widget names an unknown class | Use a class from the authoring guide |
| MAP003 | info | Image recorded for import | Nothing |
| MAP004 | info | Percentage size approximated by a fill weight | Use px or flex-1 for exact control |
| MAP005 | info | Gradient has more than three stops; rendered from its first, middle and last stop | Split into two overlays if the other stops matter |
| MAP006 | info | box-shadow ignored | Nothing |
| MAP007 | warning | Widget name collision resolved with a suffix | Make ids unique |
| MAP008 | warning | Id contained invalid characters and was sanitized | Use [A-Za-z0-9_] |
| MAP009 | warning | Duplicate data-bind or data-event name | Make names unique |
| MAP010 | info | Absolute children anchored to a non-positioned parent | Add relative to the intended parent |
| MAP011 | info | Progress bar produced from element | Nothing |
| MAP012 | info | Inline formatting flattened into one text block | Split into separate elements |
| MAP013 | info | aspect-ratio ignored | Give explicit width and height |
| MAP014 | warning | Inline svg not converted; placeholder image emitted | Export the SVG to PNG and use img |
| MAP015 | info | justify-content reproduced with spacer widgets | Nothing |
| MAP016 | info | Element marked data-webumg-ignore skipped (preview-only) | Nothing; intended for screenshots behind a HUD |
| MAP017 | info | Corner gradient direction (to bottom right, bg-gradient-to-br) on an element without fixed px width and height; a 45-degree diagonal is used | Give the element w-[px] h-[px], or use an explicit angle |
EMIT (asset creation)
| Code | Severity | Meaning | What to do |
|---|
| EMIT001 | warning / error | A property could not be applied, or a widget class is unavailable | Report it; the rest of the widget is still built |
| EMIT002 | warning | Image not found or texture import failed | Check the path relative to the HTML |
| EMIT003 | error | Asset exists and was not created by this importer | Rename the design, or pass --force |
| EMIT004 | warning | Parent class not found | Check --parent |
| EMIT005 | info | Typeface not on the font asset; Regular used | Use a font with Bold/Italic faces |
| EMIT006 | error | Blueprint compiled with errors | Open the asset; report the compiler message |
| EMIT007 | error | Save failed | Check permissions and source control |
| EMIT008 | error | Destination is not a valid content path | Use /Game/... |
IO
| Code | Severity | Meaning |
|---|
| IO001 | error | Source file could not be read |
| IO002 | warning | Manifest or header could not be written |