Skip to content

Fission 0.1.0

Choose a tag to compare

@zcourts zcourts released this 29 May 22:11
· 500 commits to main since this release

Fission 0.1.0 is the first public crates.io release of the framework. It establishes the core Rust-first application model: typed actions, reducers, widget trees, semantic lowering, layout, rendering, desktop shell integration, examples, and test infrastructure.

Source commit: 92780259bb7dc359946bd922349417bb84108dcd
Published crate metadata points at crates/authoring/fission in that commit.

Highlights

  • First public fission facade crate for application authors.
  • Core runtime model for AppState, typed Actions, reducers, BuildCtx, semantic input handling, and widget lowering.
  • GPU-oriented rendering stack with display-list primitives, renderer traits, Vello renderer work, text rendering, image rendering, shadows, anti-aliasing, and retained rendering experiments.
  • Desktop shell path capable of running real Fission examples end to end.
  • Initial widget catalog covering layout, text, buttons, inputs, scroll, overlays, navigation, feedback widgets, and data/application UI surfaces.
  • Test harness and live test-driver foundations for headless/widget tests and shell-driven end-to-end tests.
  • Example applications, including counter, inbox, editor, and widget-gallery style coverage.
  • crates.io packaging metadata, README files, license metadata, and internal path dependency versioning prepared for publishing.

New Features

Application Model

  • Added the fission facade crate so applications can depend on one public crate instead of wiring every internal crate manually.
  • Added fission-core, fission-ir, fission-layout, fission-semantics, fission-theme, fission-i18n, fission-diagnostics, fission-widgets, and related framework crates.
  • Implemented typed action/reducer support with action envelopes and stable action identifiers.
  • Added BuildCtx for ergonomic binding of actions to UI events.
  • Added semantic input handling so widget behavior is driven through structured semantics rather than raw renderer-only hit testing.
  • Added theme and internationalization foundations through environment-driven app context.

Widgets And Authoring

  • Added core layout primitives and a broad first widget set: text, buttons, rows, columns, boxes/containers, stack/z-stack style composition, spacers, positioned content, scroll containers, lazy lists, sliders, checkboxes, radio controls, dropdown/select controls, menus, tooltips, progress indicators, skeleton loading surfaces, breadcrumbs, tree views, drawers, modals, alerts, forms, number inputs, data tables, routers, overlays, portals, popovers, and gesture handling.
  • Added rich text and advanced text-input work: multiline editing, selection, clipboard integration, IME-oriented infrastructure, undo/redo foundations, caret placement, styled runs, tab capture, auto-indent, and input affordance tests.
  • Added media/embed foundations including image rendering, video primitives, webview/browser mechanisms, and macOS video backend wiring.
  • Added #[derive(Action)] through fission-macros.
  • Added widget IDs, stable lowering keys, and retained-mode cache foundations needed for rebuild and animation correctness.

Rendering, Layout, And Shells

  • Added display-list structures and renderer traits.
  • Built out Vello/WGPU rendering work, Parley text layout integration, font fallback, image drawing, shadows, transparent surfaces, and alpha handling.
  • Implemented a desktop shell path with window/event handling, pointer and keyboard input, hit testing, focus, scrolling, resize handling, and screenshot/test control foundations.
  • Added layout engines and then refined them toward deterministic constraints, intrinsic sizing, flex behavior, stable child ordering, and layout invariant validation.
  • Added scrollbar, animation, repaint, resize, and retained rendering work to reduce unnecessary rebuilds and CPU usage.

Testing And Examples

  • Added fission-test and fission-test-driver foundations.
  • Added test harness support for widget/runtime integration tests.
  • Added live E2E control-channel foundations for desktop shell testing and screenshot capture.
  • Added regression coverage for layout ordering, hit testing, animation invalidation, resize behavior, paint cache behavior, and display-list text bounds.
  • Added and expanded examples demonstrating counter interactions, inbox-style app UI, editor-style rich text/code surfaces, widget-gallery coverage, media, scrolling, overlays, and input behaviors.

Documentation And Packaging

  • Added comprehensive crate-level documentation and README files for the first publishable crate set.
  • Added open-source project metadata and crates.io package metadata.
  • Added version requirements to internal path dependencies so the workspace could be published to crates.io in dependency order.
  • Reduced package size by limiting theme/font package contents.

Bug Fixes

  • Fixed rendering order, root traversal, stable layout ordering, intrinsic sizing, flex shrink/stretch behavior, text measurement, and layout overlap issues.
  • Fixed hit testing across scroll offsets, overlays, absolute fill nodes, portals, popovers, and text input caret placement.
  • Fixed keyboard input handling, copy/paste matching, focus routing, tab handling, and caret positioning.
  • Fixed stale paint-cache entries, repeating animation CPU burn, paused redraw loops, and resize-driven rendering issues.
  • Fixed video playback surface visibility, scroll-aware video layer placement, precise seek/stop behavior, event polling, and a macOS video shutdown crash.
  • Fixed inbox/editor visual regressions, scroll behavior, flyout sizing, modal layout, button padding, and large-file/editor rendering issues.

Performance Improvements

  • Added retained rendering/cache foundations and repaint-without-rebuild work for animations.
  • Added rich text layout caching and faster node hashing in lowering.
  • Reduced high CPU usage from event loops, repeating animations, cursor blink, and resize redraw behavior.
  • Added windowed and sparse-indexed editor data structures for large file navigation/editing.
  • Added pixel/screenshot checks to catch resize and paint regressions.

API Notes

  • This is the first public API baseline for Fission.
  • The preferred application entry point is the fission facade crate.
  • Action types are defined with #[derive(Action)]; later releases add more ergonomic action/reducer macros.
  • Several internal crates are public because the framework is still early and modular, but application authors should generally start from fission.

Verification

  • Published crate VCS metadata confirms this release was built from 92780259bb7dc359946bd922349417bb84108dcd.
  • The release included package metadata and versioned internal dependencies needed for crates.io publication.

Full changelog: https://github.com/worka-ai/fission/commits/v0.1.0