Skip to content

Fission 0.3.0

Choose a tag to compare

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

Fission 0.3.0 focuses on turning the platform work from 0.2 into more complete application flows. It adds typed async image loading, FutureBuilder/RefreshIndicator widgets, a product-browser example, native capability hosts, GPU-first web/iOS rendering, native app icons/launch surfaces, and the first server-side Fission shell with sessions, signed actions, progressive workers, browser bridge support, Docker packaging, and security controls.

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

Highlights

  • Added typed image sources and renderer-backed loading for asset, file, network, memory, and SVG image paths.
  • Added async UI helpers: FutureBuilder, AsyncSnapshot, AsyncConnectionState, and RefreshIndicator.
  • Added the product-browser example using real remote data, async loading, refresh behavior, grid/list presentation, and network images.
  • Added native host implementations and generated metadata for built-in capabilities, plus the Field Inspector example to exercise them across platforms.
  • Made web and iOS rendering GPU-first, with Canvas2D/software fallback retained where needed.
  • Added app icon/native launch surface generation and documented the full fission.toml manifest reference.
  • Added fission-shell-server and fission-command-server for server-rendered Fission apps, including signed actions, sessions, server assets, progressive browser workers, island bridge support, cache/security config, and Hyper serving.
  • Added Docker image packaging and registry publishing support for server/static deployment workflows.
  • Removed the stale Skia renderer crate from the released workspace.

New Features

Images And Async Widgets

  • Reworked the Image widget around typed ImageSource values rather than a single path-like field.
  • Added image source support for assets, local files, network URLs with request metadata, memory bytes, and inline SVG text.
  • Added image loading/cache/error behavior configuration through typed request and policy structures.
  • Added renderer loading paths so loaded images are actually available to Vello/display-list rendering.
  • Added tests covering source lowering, network image metadata, SVG handling, and renderer image loading behavior.
  • Added FutureBuilder so widgets can render loading/data/error states from job-backed asynchronous work.
  • Added RefreshIndicator with pull/armed/refreshing/done states and gesture integration.
  • Added product-browser documentation and example README updates.

Product Browser Example

  • Added a high-quality product browser example using real remote product data.
  • Added async loading and refresh behavior using the new async widgets.
  • Added image rendering for remote product thumbnails.
  • Reworked the example toward grid/list layout instead of a single visible item.
  • Added tests and screenshot-oriented checks to catch image-loading and layout regressions.

Capabilities And Native Hosts

  • Implemented native capability host plumbing and generated target metadata.
  • Added the Field Inspector example to exercise capabilities across desktop, web, iOS, and Android targets.
  • Added macOS development-bundle execution so permission prompts and entitlement-style metadata can be exercised through fission run --target macos.
  • Added macOS native capability hosts and native notifications.
  • Fixed web passkey registration defaults and scheduled notification handling.
  • Fixed iOS simulator capability dispatch linkage.
  • Documented example learning paths for capability-heavy examples.

Web, iOS, And Rendering Quality

  • Made web rendering GPU-first using the WebGPU/Vello path, with the existing Canvas2D/software renderer retained as fallback.
  • Added renderer diagnostics so active web renderers can be surfaced by tooling.
  • Fixed WebGPU image refresh behavior.
  • Made iOS rendering GPU-first where possible and retained fallback handling.
  • Fixed iOS safe-area and text layout issues.
  • Rendered software frames at device scale to avoid low-resolution/soft output when software fallback is used.
  • Added native app icons and launch surface generation.

Server-Side Fission

  • Added the server shell RFC and the first implementation of server-rendered Fission apps.
  • Added fission-shell-server and fission-command-server crates.
  • Added fission server serve style workflow through the CLI command crate.
  • Added Hyper-based serving for local server apps.
  • Added server-side asset serving for generated CSS/JS/worker/island assets.
  • Added revalidated/cache-aware site primitives and runtime integrations.
  • Added signed HTTP action/reducer dispatch for server forms.
  • Added server-private session state and persistent cart behavior in the Pokémon card store example.
  • Added progressive browser worker support and a message bridge for DOM-oriented enhancement work.
  • Added browser island bridge support for focused interactive areas.
  • Added runtime security controls and configuration for the server shell.
  • Added tests around server sessions, signed actions, browser bridge behavior, island worker asset handling, and cache/security paths.

Pokémon Card Store Example

  • Added a new server-side e-commerce example selling Pokémon cards.
  • Demonstrates static/server-rendered pages, session-backed cart state, signed actions, server assets, progressive workers, browser bridge behavior, and server-side configuration.
  • Added documentation using the store as a concrete guide for server-side Fission workflows.

Packaging, Docker, And Deployment

  • Added Docker image packaging support for server and static-site deployment paths.
  • Added registry publishing support for Docker-style images in the packaging workflow.
  • Hardened server build and Docker packaging tests.
  • Documented static and server site packaging workflows.

Documentation And Project Metadata

  • Added a complete fission.toml reference page covering manifest sections, target configuration, metadata, capabilities, icons, splash/launch surfaces, site/server config, packaging, and release settings.
  • Added documentation for image and async widgets.
  • Added server rendering and security workflow docs.
  • Added a two-year video calendar documentation item.
  • Added app icon and native launch surface docs.

Bug Fixes

  • Removed stale Skia renderer crate/package state so the workspace only publishes maintained rendering crates.
  • Restricted PR platform checks so external PRs do not run privileged platform workflows by default.
  • Fixed remote image rendering bugs that could leave product-browser images invisible.
  • Fixed image overflow/layout issues in the product browser by using appropriate grid/image fit behavior.
  • Fixed web image refresh after WebGPU rendering changes.
  • Fixed iOS fallback rendering and simulator capability dispatch linkage.
  • Fixed macOS capability prompts by running desktop targets from development app bundles.
  • Fixed web passkey algorithm defaults and scheduled notification behavior.
  • Fixed server static asset 404s by serving generated server shell assets through the server runtime.
  • Fixed server action POST behavior so form actions return users to normal app routes instead of leaving them on internal action URLs.
  • Fixed cart state loss across requests by adding session-backed server state.

Performance Improvements

  • Web rendering now prefers GPU/WebGPU/Vello instead of defaulting to software Canvas2D.
  • Software fallback rendering now accounts for device scale to reduce soft output.
  • Server pages can use cache/revalidation behavior instead of recompiling/redeploying for every content refresh.
  • Browser workers and island bridge work reduce the need for a single large client-side application bundle where smaller progressive enhancement is enough.
  • Docker/server packaging paths were hardened to reduce deployment friction.

API Changes And Migration Notes

  • Image construction now uses typed image sources and image request structures. Code that assumed a single string/path image field should migrate to constructors such as asset/file/network/memory/SVG source helpers.
  • New async widgets are available from fission-widgets and through the fission facade/prelude where exported.
  • Server applications should enable the server feature/crates and use the server command workflow rather than treating static-site generation as the only web output path.
  • The stale Skia renderer crate is no longer part of the released crate set. Use the maintained Vello/render crates.
  • Platform capabilities now require the appropriate fission.toml capability declarations and generated platform metadata for permission-sensitive targets.

Published Crate Set

This release publishes all workspace crates under crates/ as 0.3.0, including the new server command/shell crates and all core, authoring, rendering, shell, command, packaging, release, credential, test, chart, and 3D crates.

Contributors

  • zcourts
  • Courtney Robinson

Verification

Before publishing 0.3.0, the release was checked with:

  • cargo fmt --all -- --check
  • cargo test --workspace --no-fail-fast
  • cargo run -p cargo-fission --bin fission -- site check --project-dir documentation --release
  • cargo publish package verification for each crate in dependency order
  • cargo info <crate>@0.3.0 verification for every published crate

Full changelog: v0.2.0...v0.3.0