Skip to content

Releases

FireCraft v0.2.5

Choose a tag to compare

@aliasfoxkde aliasfoxkde released this 03 Nov 18:17
Immutable release. Only release title and notes can be modified.

FireCraft v0.2.5 (2026-11-03)

Phase 19 daily-driver batch continued: path-node add/delete, the
canvas geometry dialogs, and object duplication.

Path competence (Phase 19b.1)

  • Double-click on a path segment inserts an anchor at the click point
    (splitting the segment via vector::insert_point)
  • Double-click on an existing anchor deletes it
    (vector::delete_point), with the two-endpoint guard preserved
  • Both fold into a single "Reshape" undo step; covered by new
    crates/vector/src/tests.rs round-trip batteries

Shell reachability (Phase 19.6, batch 2)

  • Modify ▸ Canvas ▸ Canvas Size… — absolute canvas resize with the
    CS6 nine-anchor grid
  • Modify ▸ Canvas ▸ Canvas Color… — document matte color
  • Edit ▸ Duplicate (Ctrl+Alt+D) and Edit ▸ Clone (Ctrl+Shift+C),
    both bound to object.duplicate — the copy lands on top, a
    following drag separates it (CS6 behavior)

The inert census drops 144 → 129 of 289 menu items; the
inert_count_never_rises ceiling gate is re-pinned at 129, and the
figure is now printed by reachability_census (--nocapture) so the
docs quote a derived number.

Community / policy

  • .github/ added: Code of Conduct, Contributing guide, Security
    policy, PR template, issue templates (bug / feature)

Release-path defect fix (WebOS appinfo stamping)

  • Defect: the v0.2.3→v0.2.4 window shipped a WebOS
    appinfo.json pinned to 0.2.3 — the template hardcoded a
    literal version, so the dist stamping replace was silently a
    no-op.
  • Fix: packaging/webos/appinfo.json now carries an
    @VERSION@ placeholder, and xtask dist --web gates on it: a
    template with no placeholder fails the build, and any file still
    carrying @VERSION@ after stamping fails too (host.html is
    version-free by design and exempt). Verified: the staged bundle's
    appinfo reads 0.2.5.

Verification

  • Full gate: all green (cargo run -p xtask -- ci — aegis,
    coverage, fmt, clippy, tests, layers, wasm, corpus, svg-roundtrip,
    web-golden, perf, fuzz, parity, scorecard, changelog)
  • xtask changelog verifies one workspace version across all stamps
  • Dist verification: xtask dist --web green with the new appinfo
    stamp gate; staged appinfo.json reads 0.2.5; web smoke passed

Artifacts

See the release assets; hashes are pinned in the attached
MANIFEST.sha256. Web bundle deployed to
https://firecraft-web.pages.dev.

GitHub release: https://github.com/aliasfoxkde/FireCraft/releases/tag/v0.2.5

FireCraft v0.2.3

Choose a tag to compare

@aliasfoxkde aliasfoxkde released this 25 Oct 03:39
Immutable release. Only release title and notes can be modified.

FireCraft 0.2.3

Phase 11.4 pixel-selection tools + paint/IO batch.

Pixel selection (Phase 11.4)

  • Marquee, ellipse, lasso, polygonal-lasso, and magic-wand tools with marching-ants overlay
  • Select all / deselect / inverse / feather
  • Expand, contract, border, smooth (bitmap.adjustPixelSel)
  • Selection-mask move (bitmap.moveSelectionMaskBy); fuzz driver covers the new verbs

Paint / IO

  • Brush and eraser hardening
  • fwpng tile-decode fixes
  • Lossy WebP export via libwebp-sys (feature-gated), CLI plumbing

Verification

  • GitForge CI: 7/7 jobs green on 00d2bf8 (fmt-layers, clippy-test, wasm-web, corpus-golden, perf-budgets, fuzz, generated-docs)
  • wasm bundle 13.0 MB (ceiling 14 MB); bridge smoke green

Artifacts

File SHA-256
firecraft-0.2.3-linux-x86_64.tar.gz bae4c16bc73c6deba85f48b211fd7e3843409742ec6cfca6185dc340ed9fb337
firecraft-cli-0.2.3-linux-x86_64.tar.gz 560e03d1c157a806e5fb40499f5f9524ed088d4cef27f99e8c45cff3d98a3f11
firecraft_0.2.3_amd64.deb 122cf75cd477bd40390c80bd7948bafc7d2d2024ead66aeaeb7537f8fd3b1264
firecraft-web-0.2.3.zip 9bc558e3929b90b691177b278f3ed549ef9402b4d562d63395706da3e7409bcb

🤖 Generated with Claude Code

FireCraft 0.2.2

Choose a tag to compare

@aliasfoxkde aliasfoxkde released this 21 Oct 02:20
Immutable release. Only release title and notes can be modified.

FireCraft v0.2.2 — release notes (2026-10-19)

What changed

CLI export error message now correctly lists all 9 supported formats
(png, jpg, bmp, tiff, wbmp, webp, svg, psd, gif). WebOS packaging
dry-run: appinfo.json and host.html are now staged in dist/web
during build. Decision docs added: AVIF decode policy (pure-Rust wasm-safe
decoder), HEIC refusal (patent pools, OS-decoder-only), and smoke
budget (60s virtual time covers app logic, not wasm fetch/compile).

54 unit tests added for the scripting marshal helpers and text lib
helpers.

Features

  • io: lossless WebP export (05e91b3)
  • path: pattern fill authoring (5a17fd9)
  • bitmap: bilinear importFile resample (84b45fc)
  • compose: resolve shared-layer links (052ff13)
  • bake: rasterize non-image selections (deb4abc)
  • mask: pasteAsMask add unions masks (6df4903)
  • mask: rasterize vector clipboards as image masks (420fd66)
  • object: deep-clone groups on duplicate (8b06184)
  • fwpng: tile-bank load and write path (2a6abf6)
  • bitmap: importFile placement verb (fd828c0)
  • symbol: duplicateSymbolForAlias verb (074890b)
  • text: custom anti-alias dial setters (cdeeea5)
  • text: multi-run model and markup verbs (55de409)
  • text: paragraph attribute setter trio (ab9e1fb)
  • bitmap: pixel-mask move and adjust commands (d4f6b3d)
  • text: on-path mode/offset/reverse commands (a0304d4)
  • engine: loose-ends setter commands (d482b5d)
  • document: canvas trim + delete-all commands (51a3c3e)
  • text: text rectangle fit commands (8f2919d)
  • symbol: anim instance parameter commands (d98764b)
  • web: hotspot/group/web-layer setter commands (12b5e40)
  • filters: convolve + motionBlur bake commands (8eae611)
  • document: setImageSize - the last M verb (a4455d6)
  • filters: filterSelection bake family (3f67491)
  • clipboard: copy/cut/paste + paste-mask trio (1d1c8dc)
  • selection: named saved selections (f668d85)
  • bitmap: place-image trio (addImage family) (7ea2288)
  • symbol: button behaviors + button options (3d74723)
  • scripting: view flags as session state (a363f0f)
  • engine: page rotation with geometry re-bake (48ec811)
  • engine: convertToPaths freezes glyph outlines (56c6f2f)
  • vector: knife cuts + splitPaths commands (3baf178)
  • engine: flatten family via compositor bakes (235e4d4)
  • engine: fill edge, crop, tween (df8fe42)
  • engine: web-object point append (3516d89)
  • engine: autoshape redraw (614bc64)
  • engine: rectangle primitive params + quadrangle (93c59b4)
  • engine: selection-to-frames fans (ba60816)

Infrastructure

  • ci: Aegis PII scan integrated into xtask ci chain
  • ci: llvm-cov coverage gate (60% lines/functions, workspace-wide)
  • ci: GitHub Actions workflow mirrors 7-job GitForge pipeline
  • test: 54 unit tests for scripting marshal and text lib helpers

Artifacts

File SHA-256
firecraft-0.2.2-linux-x86_64.tar.gz 54f49225ed4154b5510a258c37c0ced548f2c6f2dc9d3fd1e75603943a157f59
firecraft-cli-0.2.2-linux-x86_64.tar.gz 9123a46e15ab1299c12a7a876f309cf84f9b1e9c88cd840178bf808e76858a30
firecraft_0.2.2_amd64.deb 5fc384716ea05f205d7424e10fade10438ffaa6c838bdf0262ec684c89135b43
firecraft-web-0.2.2.wasm 0820a44550e6d8319ae7dbb2a3be0f4fb0c2b7fbc2266d8b3cf0774acac6bded
appinfo.json 68dc6f6c700b754849907b4d56bf01652a4b496a83cf2d59ad9e5414484f63af

Deployed to: https://firecraft-web.pages.dev (v0.2.2)

Carried from v0.2.1

  • Shell surfaces M13 (CS6 tool panel, align/distribute, point editing,
    Auto Shape library)
  • Live filters M14 (24 kernels, CS6 filter enumeration parity)
  • Style/vector depth M15 (gradient styles, compound paths, masks)
  • CS6 DOM verb-surface parity: 268 covered / 3 partial (evidence-gated) /
    0 missing; 241-command engine registry
  • Native WebP encode (lossless VP8L) and WebP import; PNG/JPEG round
    trip; SVG export with golden parity

Platforms

Built and verified on Linux x86_64. Web bundle is the primary target.
Other platform recipes (packaging/) are untested on this release cycle.

v0.2.1 — web bridge hotfix

Choose a tag to compare

@aliasfoxkde aliasfoxkde released this 16 Oct 01:51
Immutable release. Only release title and notes can be modified.

FireCraft v0.2.1 — hotfix release

v0.2.0's web bundle shipped with a dead browser bridge: File > Open,
Import, and Save did nothing in the browser (the wasm shell panicked
on its first bridge call), and the build-time smoke check that should
have caught it was reading its own script source instead of the page's
runtime state — green while broken. This release replaces the v0.2.0
web zip. Desktop and CLI artifacts are unchanged in behavior; all
artifacts are re-cut at the new version.

Fixed:

  • web: the eframe shell now overrides the wasm-only as_any_mut entry,
    so bridge calls (postMessage open/apply/export, the hidden file
    input, downloads) reach the app instead of panicking.
  • web: bridge-driven mutations now repaint the canvas — an opened
    document renders immediately, with zero input events.
  • build: the dist --web bridge smoke strips <script> bodies before
    asserting on the DOM and also requires the failure marker's
    absence; it can no longer pass on its own inputs.
  • build: the fmt gate now covers the workspace-excluded web crate.

The deployed instance at https://firecraft-web.pages.dev serves this
release and was verified in a real browser: open (menu and host-page
bridge) -> draw -> save, end to end.

Carried from v0.2.0 (full notes in the v0.2.0 release):

  • Shell surfaces M13 (CS6 tool panel, align/distribute, point editing,
    Auto Shape library), live filters M14 (24 kernels, CS6 filter
    enumeration parity), style/vector depth M15 (gradient styles,
    compound paths, masks).
  • CS6 DOM verb-surface parity: 268 covered / 3 refused with recorded
    evidence / 0 missing; 241-command engine registry.
  • Native WebP encode (lossless) and WebP import; PNG/JPEG round trip;
    SVG export with golden parity.

Platforms: this release was built and verified on Linux x86_64
(desktop tarball, CLI tarball, deb, WASM bundle). The web bundle is
the primary release target. Other platform recipes live in the repo.

Web bundle: serve the unzipped contents over HTTP(S) (any static
server); opening documents and saving use the browser's file dialogs
via a hidden input and blob downloads, and hosts can drive the app
with postMessage (ping/openDocument/exportRequest — see docs/WEBOS.md).

SHA-256:
665002a62a4ff893b2781e72724ef595af71f73b3d7445f81d4a0d1ac70459a7 dist/native/firecraft-0.2.1-linux-x86_64.tar.gz
9a56579ed151c9ba21aad381e2ec9d3df269c4493e6254aac171a5c7e836a02a dist/native/firecraft-cli-0.2.1-linux-x86_64.tar.gz
d7b919ff563b2e2e0f53101094a3ca14ee240e464f3671d6c6990af8bfd22d9e dist/firecraft-web-0.2.1.zip
74188dd5121da965efbfb41979ac623d706d0b48665514103fe2fb40fbd27aff dist/native/firecraft_0.2.1_amd64.deb
68ca3a2f91ed5cdcbc90837fd20f19810a67fc66a18121d3d903b7dd4545defc dist/native/MANIFEST.sha256

FireCraft v0.2.0

Choose a tag to compare

@aliasfoxkde aliasfoxkde released this 15 Oct 07:00
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.

FireCraft v0.1.0

Choose a tag to compare

@aliasfoxkde aliasfoxkde released this 13 Oct 00:24
Immutable release. Only release title and notes can be modified.

FireCraft v0.1.0 — first tagged release (M0–M12 complete)

A clean-room reimplementation of Adobe Fireworks CS6 in pure Rust:
the Fireworks PNG (.fw.png) format read/write with full node-tree
fidelity, a deterministic CPU compositor, vector editing with boolean
ops and Auto Shapes, bitmap layers with live filters, text (including
text-on-path), symbols and nine-slice, .jsf scripting with a History
panel, and import/export across PSD, SVG, PNG, JPEG, BMP, TIFF, WBMP
and animated GIF. Every milestone gate is green and the
performance/memory ceilings are enforced on CI
(docs/planning/generated/parity.md).

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.1.0.zip — static bundle for any static host:
index.html + one .js + one .wasm (~10.9 MB) + MANIFEST.sha256.

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.1.0-linux-x86_64.tar.gz desktop shell + CLI
(firecraft-0.1.0/{bin,share/licenses})
firecraft-cli-0.1.0-linux-x86_64.tar.gz headless CLI alone
firecraft_0.1.0_amd64.deb pinned-control deb;
apt install ./firecraft_0.1.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 ==

340ec09dfda307eaa51627e60b8fff1fdbaf3a200f174ac56fb615afdecd6ca1 firecraft-web-0.1.0.zip

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

== What shipped (M0–M12) ==

  • Format: Fireworks PNG read/write, byte-identical round-trips,
    unknown-node preservation, 16-file corpus pinned by digest
  • Engine: journaled command registry, undo/redo, replay-exact,
    fuzz-armed (10 targets, 60s+ campaigns, 0 crashes)
  • Vector: booleans, simplify/expandStroke/inset, 11 Auto Shapes,
    align/distribute, point editing
  • Bitmap + filters: selections, retouch brushes, live filter stacks
    (brightness/contrast, levels, HSL, blur, unsharp, find-edges...)
  • Text: shaping via cosmic-text, bundled Liberation Sans (OFL),
    text-on-path
  • Symbols: definitions/instances, rich symbols, nine-slice, Common
    Library import/export
  • Import/export: PSD (layered, RLE) both ways, SVG both ways, raster
    codecs, animated GIF states, web export (HTML+Images shim tables,
    CSS layers, sprites, pages-to-files)
  • Automation: .jsf scripting host (ES3 semantics), CLI with stdin
    control channel, MCP server — all through the same registry ids
  • Web: egui shell compiled to wasm32, postMessage bridge, ~10.9 MB
    bundle, bridge smoke-tested on the release bytes