The new ui crate is an immediate-mode kit after Ryan Fleury's series: builder code declares boxes every frame from application state, a cache keyed by stable ids keeps hover, press, focus, scroll and animation, and the previous frame's layout routes the frame's input before building. Sizes are solved per axis after building (fixed, label, fraction of an ancestor, sum of children) with overflow shared by strictness. Custom boxes receive their routed events and are painted by the host in the same frame; labels are shaped with parley and painted through draw. Snowbound now builds its window with it: section tabs in the top strip in the notebook's order and colours, the section's pages on the right with subpage indents, Command-F filtering with Enter to open, a conflict bar in place of the Command-Shift-K/T title prompt, and the page as a custom box. The canvas's scrollbars become ui widgets over that box; PageView reports its scroll bounds and scrolls on request. Work a frame asks for runs after it is painted. --notebook opens a notebook folder, and SNOWBOUND_REPLAY scripts input with PNG snapshots so a covered window can be exercised. onestore reads a page's list heading from its metadata, notebook's Section::pages returns outline levels, and the catalog carries section colours. Assisted-by: claude-opus-5.5
clover caruso committed on 9/26/2026, 3:26:21 AMparent939081b
19 files changedLine totals unavailable