Fission 0.1.0
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
fissionfacade crate for application authors. - Core runtime model for
AppState, typedActions, 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
fissionfacade 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
BuildCtxfor 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)]throughfission-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-testandfission-test-driverfoundations. - 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
fissionfacade 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