Skip to content

Releases: strowk/bevy_superui

superui v0.4.0 (bevy 0.20)

Choose a tag to compare

@strowk strowk released this 10 Oct 18:06

Changed

  • Target Bevy 0.20; rebased the Flair fork onto bevy_flair 0.9.

Per superui's versioning policy, a minor bump tracks a Bevy version bump and
carries only the changes needed to support it — there are no new superui
features or behavior changes in this release. main now tracks the Bevy 0.20
(0.4.x) line; the Bevy 0.19 (0.3.x) line continues as a maintained branch.

superui v0.3.6 (bevy 0.19)

Choose a tag to compare

@strowk strowk released this 10 Oct 12:27

Added

  • <img> tag: reconciled into a bevy_ui ImageNode. src resolves relative to
    the document's own directory (recorded on UiRuntime as its base dir, the same
    way CSS and JS links already resolve), loads as a Handle<Image>, and is
    load-guarded so a stable src loads only once. Sizing is CSS-driven
    (NodeImageMode::Auto); object-fit is intentionally out of scope until
    bevy_ui gains fit modes.
  • cargo superui test: the end-to-end test runner is now included as a subcommand
    of the CLI.
  • UiRuntime::take_errors: drains uncaught JavaScript evaluation errors captured
    since the last call. Previously these were logged and discarded; now apps and
    tooling can read them to surface a failing author script.
  • transpiler cargo feature on superui: compiles the oxc .tsx transpiler into
    the build (including wasm), enabling in-browser transpilation for live
    playgrounds.
  • page.emit(name, value) in the end-to-end test engine: a spec can deliver a
    game→UI bridge event to the UI's bevy.on(name, …) handlers (the counterpart
    of the game's commands.trigger), so a headless test with no game side can
    drive and assert the UI's reaction to bridge data.
  • .json imports: import x from "./data.json" — default, import * as x, and
    import { x } all bind the whole value — inlines the file's parsed value as
    a top-level const x, resolved relative to the importing file. Only the
    whole value binds; picking a sub-path or member out of the JSON is out of
    scope, and other cross-file imports are still stripped. A missing or invalid
    file is fatal in the end-to-end test engine (the spec fails to transpile)
    and a skipped-binding warning everywhere else (runtime/HMR and build);
    editing the JSON hot-reloads the .tsx that imports it.

Changed

  • cargo-superui parses its arguments with argh instead of hand-rolled flag
    parsing.
  • Test engine --ui mode: specs are shown as a tree with their tests nested
    underneath; each spec header carries a status icon (spinner while running,
    check/cross once finished, hollow dot when not yet run) and each test a
    pass/fail icon. Time-travel now records a frame per step, so the slider moves
    the rendered image together with the DOM, and selecting a test jumps to its
    final step. The shell starts at a slightly larger zoom.

Fixed

  • The test engine now loads images, fonts, and class utilities, so
    screenshot-based end-to-end tests render the same as the running app.

superui v0.3.5 (bevy 0.19)

Choose a tag to compare

@strowk strowk released this 25 Sep 19:34

Added

  • <input type=range> range slider: draggable and keyboard-controllable (arrow
    keys, Home/End), with min, max, step, and value attributes (value
    clamped to range; defaults to the midpoint). Fires DOM input while
    interacting and change on commit, and .value is readable and writable from
    JS. Renders a browser-like slider by default, fully overridable via the new
    ::slider-track, ::slider-fill, and ::slider-thumb pseudo-elements.
  • Text <input> backed by Bevy EditableText: real text editing with a visible
    text cursor. Placeholder text fades to the input's text color.
  • <textarea> support as a multiline EditableText.
  • Tailwind-compatible class utilities: utility classes resolved at build time,
    documented in the website CSS reference.
  • widgets_showcase example demonstrating a text input, checkbox, and range
    slider, with a screenshot-based end-to-end test.

Changed

  • Keyboard focus and Tab navigation are unified on Bevy's InputFocus.
  • Bevy 0.19 is the only actively developed line; the 0.17 and 0.18 lines are
    maintenance-only.

Fixed

  • Editable <input>/<textarea> fields no longer lose focus on mouse release. A
    field with no JS listener was treated as non-interactive and let the
    release-click fall through to the layer behind it, which stole focus on
    mouse-up; editable controls now block those picks. Button-family controls
    (<button>, <input type=button|submit|reset|image>) stay pass-through unless
    they carry a listener.
  • Fixing teardown: a mounted UI is correctly cleaned up when its root entity is despawned.

superui v0.3.4 (bevy 0.19)

Choose a tag to compare

@strowk strowk released this 20 Sep 19:52

This is a semver-patch release following schema of 0.3.x for bevy 0.19, but the JavaScript engine swap is a behavioral change worth reading before you upgrade.

JavaScript engine: Boa → V8 (native) / browser (web)

superui no longer ships the Boa engine. JavaScript now runs on:

  • V8 (via deno_core) on native targets, and
  • the browser's own engine on wasm.
  • will probably not run at all if you build for android/ios and other targets where v8 cannot be built easily.

superui auto-selects the backend by target - native gets V8, wasm gets the browser engine, no config needed.

First native build downloads V8. deno_core pulls a prebuilt rusty_v8 static library on first build — a one-time network fetch and a noticeably longer initial compile. CI and offline builds need network access on that first run.

Mouse-wheel scrolling

overflow: scroll nodes now scroll under the pointer on wheel events, scrolling the nearest scrollable ancestor. The previous "scrolling is not supported" caveat is retired.

Fixes

  • Reordered keyed rows stay dispatchable.

Compatibility

superui bevy
0.3.x 0.19

It is big and complex change with no backports: the 0.2.x (Bevy 0.18) and 0.1.x (Bevy 0.17) maintenance branches do not receive this release and starting forward 0.19+ only would be supported.

superui 0.3.3 (bevy 0.19)

Choose a tag to compare

@strowk strowk released this 14 Aug 20:42

Fixes a mounted UI eating the host app's world picking and click propagation. A superui root now blocks the pointer only where the DOM is actually interactive; PickingPolicy::Solid restores the old swallow-everything behaviour for menus and modals. Documented at https://strowk.github.io/bevy_superui/docs/concepts/picking.html

superui 0.2.3 (bevy 0.18)

Choose a tag to compare

@strowk strowk released this 14 Aug 20:20

Fixes a mounted UI eating the host app's world picking and click propagation. A superui root now blocks the pointer only where the DOM is actually interactive; PickingPolicy::Solid restores the old swallow-everything behaviour for menus and modals.

superui 0.1.3 (bevy 0.17)

Choose a tag to compare

@strowk strowk released this 14 Aug 19:42

Fixes a mounted UI eating the host app's world picking and click propagation. A superui root now blocks the pointer only where the DOM is actually interactive; PickingPolicy::Solid restores the old swallow-everything behaviour for menus and modals.

superui 0.3.2 (bevy 0.19)

Choose a tag to compare

@strowk strowk released this 14 Aug 19:40

Fixes since 0.3.0:

  • HMR re-exec collision — author scripts are now scoped in an IIFE, so a hot reload no longer collides with the previous execution's top-level bindings.
  • row index — the row index is now a reactive accessor, so bindings that read it update when a row moves.
  • Deep-nesting stack overflow — the JS parser grows its stack on demand, so deeply nested transpiled JSX no longer overflows the Windows main thread or test worker threads.

0.3.1 was published with incorrect dependency versions and does not resolve; use 0.3.2.

superui 0.2.2 (bevy 0.18)

Choose a tag to compare

@strowk strowk released this 14 Aug 19:40

Fixes since 0.2.0:

  • HMR re-exec collision — author scripts are now scoped in an IIFE, so a hot reload no longer collides with the previous execution's top-level bindings.
  • row index — the row index is now a reactive accessor, so bindings that read it update when a row moves.
  • Deep-nesting stack overflow — the JS parser grows its stack on demand, so deeply nested transpiled JSX no longer overflows the Windows main thread or test worker threads.

0.2.1 was published with incorrect dependency versions and does not resolve; use 0.2.2.

superui 0.1.2 (bevy 0.17)

Choose a tag to compare

@strowk strowk released this 14 Aug 19:40

Fixes since 0.1.0:

  • HMR re-exec collision — author scripts are now scoped in an IIFE, so a hot reload no longer collides with the previous execution's top-level bindings.
  • row index — the row index is now a reactive accessor, so bindings that read it update when a row moves.
  • Deep-nesting stack overflow — the JS parser grows its stack on demand, so deeply nested transpiled JSX no longer overflows the Windows main thread or test worker threads.

0.1.1 was published with incorrect dependency versions and does not resolve; use 0.1.2.