Repository navigation
v0.0.1
0.0.1 (2026-10-23)
The first release: a retained UI core that lays out, styles, draws,
takes input and speaks to screen readers, the same on every platform.
Added
- A context holding the interface as a tree of nodes, with ids that
never name a destroyed node's successor, limits fixed at creation and
no allocation during a frame. - CSS flexbox layout with wrapping, gaps, automatic margins, aspect
ratios, absolute placement with anchors, baseline alignment,
right-to-left mirroring and safe-area padding, held to Chrome on over
a thousand fixtures. A frame where nothing changed does no work. - Style in fixed layers: classes and node types with state variants,
conditions on a node's size and on the viewport, input modality, text
scale and reduced motion, and values set on the node itself. Design
tokens with aliases, themes scoped to subtrees, and transitions,
timed or spring, that move colors in Oklab. - A draw list of boxes with rounded corners, borders and gradients,
shadows, nine-slice images and glyph runs, with clip chains and
transforms a renderer can batch across, snapped to device pixels and
the same bytes on every platform. Content the program draws itself
goes into the list through a paint function. - A text component on FreeType and HarfBuzz: shaping, bidirectional
text, line breaking, rich-text spans, font fallback, families and
variable fonts, and glyph images as coverage, multi-channel distance
fields and colour (COLR, CBDT and sbix). - Text fields with selection, word and line movement, undo, input
method compositions, passwords, number filters, maximum lengths, PC
and Mac keymaps and the program's clipboard. - Input: hit testing through rounded clips, scrolling and scales;
hover, press, clicks and pointer capture; focus for up to eight
players with Tab order and directional navigation for keys and
gamepads; drags, drag and drop, sliders; routing to the program with
what the interface leaves passed to the game behind it. - Scrolling with eased steps, touch panning, flings and optional
overscroll; virtual lists that keep only the rows near the viewport
and hold the scroll position through edits; popups placed beside an
anchor and dismissed by a press outside or Escape; dialogs and menus
as layers; exits that play out before a node goes. - An accessibility tree built from what the interface already holds,
with adapters for UI Automation, AT-SPI, NSAccessibility,
UIAccessibility, Android and the web's ARIA, including text being read
and edited. maul-ui-rhi, a reference renderer on Maul RHI, which can also draw
a panel in 3D against the scene's depth.maul-ui-window, the glue to Maul Window: input, gamepads, input
methods, the clipboard, the on-screen keyboard and the platform's
accessibility adapter for a window.- Support for Linux, Windows with
clang-cl, macOS, iOS, Android and
the web, with Emscripten or Clang's wasm32-wasi; a static or shared
library, a CMake package and a pkg-config module.
Changed
- For programs moving from an earlier build of Maul UI (0.6.1 and
before):MUI_DEF_VERSIONis nowMUI_ABI_VERSION, and before 1.0 it
carries the whole version, patch included.muiCreateContextand
muiCreateTextServicenow refuse a def built with the headers of any
other release, another patch release too, withmui_errorVersion.
muiDefaultContextDefandmuiDefaultTextServiceDefare inline and
stamp the headers' version, so build against the headers of the exact
library you link.