Releases: AilloliAI/ailloli_ui
Releases · AilloliAI/ailloli_ui
Release list
Ailloli UI 0.1.0-beta.2
Second public beta of Ailloli UI, focused on retained consistency, interactive
scrolling, and repeatable release validation.
Added
- Public scrollbar contracts now expose
ScrollbarAxis,ScrollbarPart,
ScrollbarGeometrySpec,ScrollbarGeometry, andScrollbarDragthrough the
façade and prelude.ScrollBehavior::wheel_delta_with_modifiersand
code_scrollbar_geometriessupport custom integrations. Dialog::modal_contentmounts retained declarative content as a
PopupRole::Dialogmodal, andDialog::on_submitprovides an Enter fallback
after descendants receive the event.Editor::caret_follow_margin_linesand
CodeEditor::caret_follow_margin_linesconfigure the visible safety margin
maintained around a revealed caret.Componentand thecomponenthelper now accept capturing render closures.
LayoutPassis public for custom widgets that must distinguish measurement
from authoritative layout.InputRouter::cancel_pointer_statelets host adapters deliver cancellation
to active capture owners before clearing retained pointer state.
Changed
- Values created with
State::newestablish precise reactive dependencies when
retained Build, Layout, or Paint callbacks read them. Successful callbacks
replace conditional dependencies atomically, while failed or provisional
work cannot publish a partial dependency set. - Layout results, cache entries, geometry-derived widget state, and reactive
dependencies are committed as one transaction. Paint consumes only artifacts
from the matching committed layout. - Scrolling now handles line and pixel wheel deltas consistently, supports
Shift-based horizontal scrolling, centers the thumb on track clicks, and
shares geometry and interaction rules acrossScrollView, editors, text
inputs, tables, terminals, and popup lists. - Caret reveal and other geometry-dependent effects are now applied only after
an authoritative layout pass. - Reactive work is aggregated per native presentation, so every affected
window or popup is woken without scheduling unrelated presentations. Context::register_ui_servicenow requestsBuildonly for its current
mounted owner when a callback reports a change. Low-level
RuntimeHandle::register_ui_serviceregistrations no longer infer a
presentation or redraw, so those callbacks must explicitly request the
required Build, Layout, or Paint invalidation.- Reusing a
StateStore::signal,StateStore::signal_scoped, or
StateStore::signal_scoped_withslot now preserves the invalidator installed
when the slot was first created. Later handles share that source and do not
replace its invalidator until the slot is removed. - Signal mutations notify retained consumers before the historical invalidator,
after releasing value and subscription borrows. Historical callbacks can read
or mutate the signal reentrantly, including afterSignal::take; a panic in
that callback does not undo retained invalidations already queued.
Fixed
- Reactive state changes can no longer be hidden by a clean parent layout
cache, and updated text is no longer painted into stale bounds. - Stable sibling components are no longer rebuilt or laid out again when an
unrelated reactive consumer changes. - Scrollbar drags now remain stable across retained relayouts, popups, and
native host event routing. - The editor no longer consumes a pending caret reveal during a provisional
measurement pass. - Windows now request their first drawable frame after becoming visible,
preventing them from remaining blank until another input or resize event. - Replacing a retained widget or component with a different concrete type at
the same position or key now starts a fresh mount and clears the previous
state slots and reactive dependencies. - Pending capture requests now wake only their target logical windows instead
of requesting redraws for unrelated windows.
Security
- The four informational RustSec exceptions remain limited to their reviewed
dependency chains after the 2026-09-02 lockfile review. Vulnerabilities, new
warnings, and unreviewed advisory IDs still fail the release gate. lruremains pinned to0.18.2, so the resolved fix for RUSTSEC-2026-0253
cannot regress silently.
Project
- Public CI now uses context-aware routing, explicit Windows validation,
release workflow validation, and deterministic policy fixtures. - Superseded CI runs are cancelled automatically.
- Package validation now works correctly on fresh CI runners without
pre-existing build artifacts. - GitHub Pages now publishes library documentation only.
- The public sandbox now links to the published
ailloli_uicrate on
crates.io while keeping unavailable documentation destinations visibly
disabled. - The sandbox identifies the beta.2 candidate and links to these changelog
notes without claiming that an unverified registry version or GitHub Release
is already available. - Added the public framework banner, release badges, and canonical GitHub
Sponsors funding metadata. - Repository and release audits now require the canonical
AilloliAIfunding
beneficiary. - Release validation now enforces bracketed Keep a Changelog headings and the
canonical comparison and release links. - Public documentation, Rustdoc, UI labels, fixtures, and reports now follow
the project's contextual punctuation policy. En dashes remain valid for
ranges, while verbatim third-party legal text is preserved where required. - Release tooling derives the publication plan from the workspace version,
exports version-specific Markdown notes, and checks that the release tag
matches Cargo metadata. Selected-package checks record publish-equivalent
archives in a checksum ledger; registry verification supports repeated
--packageselections and bounded network retries.
Compatibility
- The audited delta removes or renames no documented beta.1 façade item. Most
façade consumers require no source migration; update the Cargo requirement
to0.1.0-beta.2to select this release. - Low-level users of
RuntimeHandle::register_ui_servicemust explicitly
request the required invalidation when a service reports changed state.
Context::register_ui_serviceperforms the owner-scopedBuildrequest
automatically. - The minimum supported Rust version remains Rust 1.88.
Known Limitations
- APIs remain pre-1.0 and may change between beta releases.
- Vulkan and OpenXR support remain experimental. Public CI validates Linux and
Windows, while macOS and OpenXR hardware are not validated for this beta.
Ailloli UI 0.1.0-beta.1
First public beta of Ailloli UI, a retained-mode desktop UI framework for Rust.
This release provides 22 synchronized framework crates for native applications.
Added
- A retained application facade and public prelude for composing windows and
reusable components, with reactive signals and separately targeted Build,
Layout, and Paint invalidation. - Reusable layouts, controls, navigation, text and file widgets, and overlays
for building desktop interfaces. - Retained trees with stable item identities and atomic insert, remove,
update, move, and expansion operations.TreeViewsupports viewport-based
virtualization, selection, inline editing, drag and drop, and context menus. - Native
winitwindow hosting, input dispatch, and frame capture, together
with the primarywgpurenderer for scenes, text, icons, and layers. - Backend-neutral text shaping, font selection, wrapping, editable buffers,
and code-editor primitives with optional Tree-sitter language integration. - Provider-neutral filesystem paths, entries, operations, watch events, and
retained file-tree stores. Local filesystem sources provide non-recursive
watching, and bounded, wakeable workers keep retained file-tree I/O outside
Build, Layout, and Paint. - An ANSI terminal parser, terminal grid and snapshots, plus PTY session
contracts with an optional portable backend. Process spawning remains opt-in. - Optional DevTools inspection snapshots, diagnostics, panels, and overlays
for inspecting retained applications. - Application storage contracts for XDG paths, persisted documents, and
storage diagnostics. - SVG validation and native application-icon rasterization, plus bundled
development-file icon fonts with their original license attribution. - Host-native desktop packaging through a library and the
cargo-ailloli-ui
command. - Versioned performance recording and regression gates, with the optional
ailloli-ui-benchcommand. - Experimental Vulkan rendering and OpenXR host integration for retained
scenes and input, including optional WGPU and Vulkan targets.
Changed
- All 22 framework crates use version
0.1.0-beta.1and exact first-party
registry requirements to keep the beta dependency set synchronized. - The public sandbox demonstrates the framework through its public facade
and links to project, documentation, contribution, and sponsorship
resources. Resources unavailable when the beta was built remain disabled
in that version of the sandbox.
Security
lruis pinned to0.18.2, which contains the fix for
RUSTSEC-2026-0253.- Repository and package audits reject credentials, non-public paths, and
unreviewed workflow actions before publication.
Project
- Public guides cover architecture, migration, benchmarking, contribution,
security reporting, support, sponsorship, and the release process. - Repository workflows provide Rust 1.88 validation, strict Rustdoc and
Clippy gates, RustSec auditing, CodeQL analysis, Dependabot configuration,
and GitHub Pages documentation deployment. Rust release tooling checks
package contents and the publication dependency order.
Compatibility
- Minimum supported Rust version: Rust 1.88.
- First-party Cargo feature names use underscores. Consumers migrating from
earlier development snapshots must replace the removed kebab-case feature
names using the
beta.1 migration guide.
Human-facing CLI command names remain kebab-case. - The framework is dual-licensed under Apache-2.0 or MIT. Bundled third-party
assets retain their respective licenses.
Known Limitations
- APIs remain pre-1.0 and can change between beta releases.
- Vulkan and OpenXR are experimental and may evolve faster than the desktop
facade. Packaging output is platform-specific and must be validated on each
target operating system.
Versioned API documentation
| API documentation portal
| beta.1 changelog