Repository navigation
FireCraft v0.2.0
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:
- Download and unzip (files sit at the zip root).
- Cloudflare dashboard -> Workers & Pages -> Create -> Pages ->
"Upload assets", and drop the unzipped folder. Or:
npx wrangler pages deploy - 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.