Skip to content

Releases: AilloliAI/ailloli_ui

Ailloli UI 0.1.0-beta.2

Pre-release

Choose a tag to compare

@MrRise-RiCorp MrRise-RiCorp released this 06 Sep 05:33

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, and ScrollbarDrag through the
    façade and prelude. ScrollBehavior::wheel_delta_with_modifiers and
    code_scrollbar_geometries support custom integrations.
  • Dialog::modal_content mounts retained declarative content as a
    PopupRole::Dialog modal, and Dialog::on_submit provides an Enter fallback
    after descendants receive the event.
  • Editor::caret_follow_margin_lines and
    CodeEditor::caret_follow_margin_lines configure the visible safety margin
    maintained around a revealed caret.
  • Component and the component helper now accept capturing render closures.
    LayoutPass is public for custom widgets that must distinguish measurement
    from authoritative layout.
  • InputRouter::cancel_pointer_state lets host adapters deliver cancellation
    to active capture owners before clearing retained pointer state.

Changed

  • Values created with State::new establish 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 across ScrollView, 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_service now requests Build only for its current
    mounted owner when a callback reports a change. Low-level
    RuntimeHandle::register_ui_service registrations 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_with slot 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 after Signal::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.
  • lru remains pinned to 0.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_ui crate 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 AilloliAI funding
    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
    --package selections 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
    to 0.1.0-beta.2 to select this release.
  • Low-level users of RuntimeHandle::register_ui_service must explicitly
    request the required invalidation when a service reports changed state.
    Context::register_ui_service performs the owner-scoped Build request
    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

Pre-release

Choose a tag to compare

@MrRise-RiCorp MrRise-RiCorp released this 26 Aug 13:52

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. TreeView supports viewport-based
    virtualization, selection, inline editing, drag and drop, and context menus.
  • Native winit window hosting, input dispatch, and frame capture, together
    with the primary wgpu renderer 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-bench command.
  • 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.1 and 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

  • lru is pinned to 0.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