Repository navigation
SUI 0.3.0
This release adds application and editor surfaces, improves text quality and
retained rendering, and expands the source-built language bindings.
Highlights
- Added retained docking workspaces, editor cursor grabbing and raw mouse motion,
safe initial desktop window placement, and GPU interoperability contracts. - Expanded Python and JavaScript bindings for the newer Rust widget and editor
surfaces. These bindings remain source-built and are not registry publications. - Reused paragraph shaping and glyph measurements across layout widths, added
size-only text measurement, and reduced repeated Flex layout probes. - Retained widget output, scene fragments, renderer packets, GPU batches, and
shared scene command storage to reduce repeated frame preparation work. - Overlapped GPU preparation with CPU startup and added reproducible widget,
frame, shrinkwrap-conversation, and editorial-flow benchmarks. - Improved font hinting, transformed text rasterization, LCD coverage and atlas
sampling; isolated node-edge animation repaint work and analytic grid dots. - Added provider-neutral image icons, bounded browser tabs, compact dialogs,
and reserved scrollbar gutters. - Updated dependencies and bundled Lucide icons to 1.47.0.
- Made the Shrinkwrap and Editorial text demos follow shared theme colors,
typography, and radii, including theme changes while paused and cached text
layouts at unchanged window sizes. - Added a size-focused web release profile and kept the demo within the existing
12 MiB uncompressed Wasm budget without removing features. - Restored Rust 1.90 compatibility, corrected offscreen demo-picker test
interactions, and resolved strict workspace Clippy findings. - Bundled complete Noto Sans Arabic and Hebrew fallback fonts for offline web
and Android text, and corrected caret hit testing across right-to-left runs. - Restored corrupted Unicode, emoji, and IME sample text in the demo and its
text-editing benchmarks. - Continued VSync presentation and animation/timer delivery inside native
window move/resize loops, including while the title bar is held still. - Preferred compatible Direct3D12 hardware on Windows to improve native window
drag pacing, retaining explicit backend selection and automatic fallback. - Kept focused, visible VSync windows presenting cached content so an idle UI
does not lower a variable-refresh monitor's refresh rate. - Reused GPU vertex buffers, upload staging storage, and output-transform
resources to avoid repeated allocations and interaction-time frame stalls. - Fixed inflated frame-time/FPS readings after idle mouse motion by attributing
input costs and latency only to a pending redraw across native and test hosts. - Made the demo FPS counter measure host frame cadence, including VSync and
idle intervals, while reporting render work separately. - Retained action cards independently so hover, press, and focus transitions
repaint only the affected cards instead of rebuilding an entire picker grid. - Centralized builder/runtime resource registration so rejected duplicate handles
preserve the original resource, and shared native/web GPU resource setup. - Shared button press, text-change, and caret lifecycle logic across controls;
organized composites, binding infrastructure, and renderer internals by feature. - Made binding signatures language-neutral with explicit numeric and identifier
types, and changed export verification to follow Rust modules and declarations. - Fixed selector observer write-back deadlocks and removed obsolete reactive
dependencies after completed widget phases while preserving cached phases. - Bounded text-layout and renderer path caches, preserving layouts and geometry
still owned by live widgets or frames, and avoided full reindexing on collection
appends. - Matched node-graph spatial bounds to configured Bézier curvature so visible
curves remain available for hit testing and culling. - Added the optional
sinomo-ui-webviewcrate for WRY-backed native child
webviews with retained layout, lifecycle synchronization, thread-safe
controls, typed page/title/IPC events, and application-owned browser policy. - Prevented synchronous live-test flushes from advancing future animation
frames based only on render wall time, avoiding timeouts in repeating demos. - Added affine transformed widget subtrees and Canvas-hosted normal widgets.
Canvas now uniformly scales paint, input, semantics, text, images, and nested
layout by default, with screen-space/custom zoom policies and touch pinch;
retained node widgets use the same path. - Added the
sinomo-ui-nodesgraph-editor library with typed nodes, edges,
handles, controlled and uncontrolled observable state, retained custom node
widgets, dynamic measurement, incremental spatial indexing, subflows,
resizing, edge reconnection, per-element semantics, lifecycle events,
animated viewport and edge behavior, controls, minimap, and graph-owned
appearance overrides. - Added a comprehensive
sui-demonode-editor workspace behind the
default-enablednodesfeature, covering controlled and uncontrolled graphs,
retained node controls, every edge family, subflows, editing, indexing,
semantics, and viewport telemetry.
Compatibility and release notes
- Update SUI crate dependencies together from
0.2to0.3. Lucide keeps its
independent1.47.0version and now depends on the0.3SUI family. Event::RawMouseMotionandWindowEvent::Movedrequire handling in exhaustive
event matches. Public widget appearance/configuration structs gained fields,
includingControlPalette::selection_border; update explicit struct literals.- Rust 1.90 remains the minimum supported version.
- Linux webview builds require the system WebKitGTK 4.1 development libraries;
the Rust bindings do not install the browser engine. - Browser support remains alpha and Android remains experimental. Native
webviews are an optional crate; Python wheels and Node addons are not part of
this Rust registry release.