Skip to content

FireCraft v0.2.0

Choose a tag to compare

@aliasfoxkde aliasfoxkde released this 15 Oct 07:00
· 93 commits to main since this release
Immutable release. Only release title and notes can be modified.

FireCraft v0.2.0 — the CS6 verb-surface campaign + first enhancements

A clean-room reimplementation of Adobe Fireworks CS6 in pure Rust.
Since v0.1.0 (M0–M12) the application gained the full CS6 shell
(M13), the complete native live-filter surface (M14), the style and
fill system (M15), and the complete CS6 DOM verb surface as a
scripting campaign — plus the first enhancement features beyond CS6.

== What shipped since v0.1.0 ==

Shell and tools (M13)

  • CS6 menu bar, keymap, shell chrome, per-tool cursors, space-drag
    pan, Auto Shape flyout with preview glyphs, live move, alt-clone,
    double-click entry points, drag constraint matrix.

Live filters (M14)

  • The full CS6 native filter surface: bevel/emboss, shadow/glow,
    clouds, per-channel levels, colorize HLS, curve knots, motion
    blur, convolve — with a live Filters panel, composited in real
    time, golden-image parity gates, and a zero unknown-GUID floor.

Styles and fills (M15)

  • Style model with byte-exact ZSLv/ZSTv persistence, .stl import,
    Styles panel, gradient fills (decode, render, goldens, SVG
    gradient paint servers and export), pattern fills end to end,
    canvas background painting, brush size/edge/pressure model,
    reshape-area and redraw-path tools, intersect/polygon selection.

Document structure

  • Layer/page ordering, locks, master pages, typed shared layers
    (shareToPages/detachShared), element masks as groups with pixel
    planes and JPEG stash, object transform family, frame management,
    guides/grid/onion-skinning, page rotation with geometry re-bake.

Scripting surface — the DOM verb campaign

  • 241 registered commands covering the CS6 verb surface: selection
    model (hierarchy selects, selectSimilar), flatten family,
    knife/splitPaths, convertToPaths, clipboard (copy/cut/paste,
    paste-as-mask with union), saved selections, place-image trio,
    importFile with bilinear resampling, button symbols and options,
    text setter families (paragraph attrs, multi-run markup, rectangle
    fits, on-path mode/offset/reverse, anti-alias dials), web-object
    setters, anim instance parameters, canvas trim and delete-all,
    deep-clone duplicate, tile-bank load/write, pattern fill authoring
    (path.setPatternFill), filter bake family (filterSelection,
    convolve, motionBlur), image size with pre-flight bake hoisting.
  • CS6 DOM parity matrix: 268 carried / 3 partial / 0 missing
    (docs/planning/generated/dom-parity.md). The 3 partial rows are
    permanent CS6-native runtime behaviors or evidence-gated pending a
    Wine oracle — documented in docs/PROGRESS.md, none silently
    dropped.

Enhancements beyond CS6

  • Lossless WebP export joins the raster matrix: png, jpg, bmp,
    tiff, wbmp, webp — pixels in, the same pixels out, alpha
    preserved.

Quality gates

  • Every change is gated by cargo run -p xtask -- ci (fmt, clippy
    -D warnings, tests, layer enforcement, wasm build) and the 7-job
    GitForge CI pipeline: golden-image corpus, 256-seed command fuzz
    sweep, performance/memory budgets, rising test floors.

License: dual-licensed MIT OR Apache-2.0 (LICENSE-MIT /
LICENSE-APACHE). Clean-room method: built from public specs and
observed behavior; no Adobe code or assets.

== Web bundle (WASM — the primary target) ==

firecraft-web-0.2.0.zip — static bundle for any static host:
index.html + one .js + one .wasm + MANIFEST.sha256. The same bundle
is live at https://firecraft-web.pages.dev (Cloudflare Pages).

Cloudflare Pages quick start:

  1. Download and unzip (files sit at the zip root).
  2. Cloudflare dashboard -> Workers & Pages -> Create -> Pages ->
    "Upload assets", and drop the unzipped folder. Or:
    npx wrangler pages deploy
  3. Done — Pages serves over HTTPS with the right application/wasm
    MIME type, which the bundle's streaming instantiation requires.
    file:// will not work.

For WebOS embedding (iframe + postMessage bridge: openDocument /
apply / exportPng / exportDocument), see docs/WEBOS.md in the repo —
its worked host page is executed verbatim by the release gate's
bridge smoke.

== Linux x86_64 ==

firecraft-0.2.0-linux-x86_64.tar.gz desktop shell + CLI
(firecraft-0.2.0/{bin,share/licenses})
firecraft-cli-0.2.0-linux-x86_64.tar.gz headless CLI alone
firecraft_0.2.0_amd64.deb pinned-control deb;
apt install ./firecraft_0.2.0_amd64.deb
MANIFEST.sha256 over the three above;
sha256sum -c verifies

Requires glibc >= 2.31. GPU not required — the compositor is
deterministic CPU.

== Other platforms ==

This release was built and verified on Linux x86_64. Recipes for
AppImage (packaging/build-appimage.sh), macOS universal dmg
(packaging/build-macos-dmg.sh) and Windows portable zip + installer
(packaging/build-windows.ps1) ship in the repo — the repo carries no
artifact it did not build and verify (docs/TOOLCHAINS.md).

== SHA-256 ==

dbd70489dfd08f73ce0eb7f1df0daf81e398d7daca710c4cfe20b69b6b297b04
firecraft-web-0.2.0.zip

Native archives are hashed inside the release's MANIFEST.sha256.