Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 11 additions & 10 deletions .aegis-baseline.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,9 @@
# Only after verifying each newly added key is a false positive.
# Matches the 9-digit observed value range in the PNG node dictionary
# (0..141663582), the run of SVG path control coordinates in the brand
# mark's bezier paths, and the GitHub release and asset identifiers
# quoted in the release receipts; this repository holds no tax
# identifiers.
australian-tfn ./docs/img/app-preview-dark.svg 197e6b1c357f3d959ff48bf52e3e8aae179b55145f13eb64db7eea631a93cc69 1
australian-tfn ./docs/img/app-preview-dark.svg 9e2095671e41853dd2c27a6a9f6c43b8d1cd2f8548e2293e95aec84f7a07adf5 1
australian-tfn ./docs/img/app-preview-dark.svg c271cd9d0bac232bb161ac8dd9b1a40816441598fd5c0c5e41d3e3bdfafa47ee 1
australian-tfn ./docs/img/app-preview-dark.svg c8c202ad4293b1893efd892e1f3420d2b79cbd72dc511fd5b980fbf51644d75c 1
# mark's bezier paths and in the brand study illustration's control
# points, and the GitHub release and asset identifiers quoted in the
# release receipts; this repository holds no tax identifiers.
australian-tfn ./docs/img/firecraft-vector-brand-study.svg 0c0abeaf013ea7ee28c7a1845ec462ed9d0dab7f9626410681d6a15aa9fb1571 1
australian-tfn ./docs/img/firecraft-vector-brand-study.svg 1c302c0eb6b2ce0b6aef4f72d11808bda6520a11205cf024c4c3daac3a12af82 1
australian-tfn ./docs/img/firecraft-vector-brand-study.svg 353c47b7c0c49557e6633299b2b3a0fcde5225767f34c7b9adb4aeca93828a12 1
Expand Down Expand Up @@ -248,9 +244,11 @@ xml-external-entity ./crates/io/tests/svgimport.rs f6cfc5faea5abe6ee5bd8667967ed
xml-external-entity ./packaging/build-macos-dmg.sh 7b16906a7de9206c7488979eb86e8393ba62a45c0e769c79cf070a16c1858d49 1
# Matches any 5-digit run: CS6 command ids, the JPEG dimension ceiling
# (65535), menu ids, CS6 palette-instance ids (the 48xxx family), a
# canvas dimension in a render-scale test, CVE id suffixes, the
# civil-date epoch constant (36524) in the SBOM timestamp builder, plus
# the headless-browser virtual-time budget (60000), and decision 0074's
# canvas dimension in a render-scale test, the scale factor of the brand
# mark's placement transform in the dark-mode mock-up and in the
# decision record that adjudicates it, CVE id suffixes, the civil-date
# epoch constant (36524) in the SBOM timestamp builder, plus the
# headless-browser virtual-time budget (60000), and decision 0074's
# table of adjudicated classes and the rule identifiers quoted by the
# Aegis adjudication tickets. The v1 MVP roadmap's RPC-emulation row
# names the legacy Fireworks RPC TCP port — a protocol number, not
Expand Down Expand Up @@ -638,6 +636,8 @@ zip-code ./docs/decisions/0084-aegis-rebless-slice-hotspot.md 6ae29c8266e042c990
zip-code ./docs/decisions/0084-aegis-rebless-slice-hotspot.md 7f86696157efee849855811dbdd3b8babcbde71c5c3e17277bf4f2bf6a75106e 1
zip-code ./docs/decisions/0084-aegis-rebless-slice-hotspot.md e95e07198fbc2a3fac954c1e20f99ff404edbc4a9bcc08f0ef575f1b58121ac5 1
zip-code ./docs/decisions/0084-aegis-rebless-slice-hotspot.md fec32d6024e177ac05e94de175bfccd84ec3d389034f6f57067fb167302534b6 1
zip-code ./docs/decisions/0101-brand-mark-in-the-mock-up.md 16b024b09ebcb9d66f6a9968858d7e01081e51a14a4922edf3c8e3c2009c0000 1
zip-code ./docs/img/app-preview-dark.svg 16b024b09ebcb9d66f6a9968858d7e01081e51a14a4922edf3c8e3c2009c0000 1
zip-code ./docs/planning/firecraft/M8-import-export.md f2f89ede8e7d4b3d2243dea1ca96b8ece56f793811d9708b4a0181bf81a50011 2
zip-code ./docs/planning/firecraft/M9-scripting.md 0e5c81ceee464db1c0cb9ed801d134fab0dd2a28c0dc62e35aa21a8e13ff0ebc 1
zip-code ./docs/planning/firecraft/M9-scripting.md 20d70708103e5223b6f2fb00f00947832fb93d12ebef11eb10bc5599efefe184 1
Expand Down Expand Up @@ -704,6 +704,7 @@ zip-code ./docs/research/fw-ui-evidence.md fec32d6024e177ac05e94de175bfccd84ec3d
zip-code ./docs/research/fw-ui-evidence.md ffdfd59d08e67eeff2569e91641bb6adb12fc0bf42ef8f0f2c197ed14369f10d 3
zip-code ./docs/tasks/T27-12-adjudicate-aegis-findings.md 6f21ec723dd82aa7bd36bc81cc4008e4f6359fe8ce68f793af23b7123bdbf3a6 1
zip-code ./docs/tasks/T27-12-adjudicate-aegis-findings.md d55d01d0341ed0ba2cd99b322e8c5b609254f47d10c7cd12b99b4922effeba44 1
zip-code ./site/assets/app-preview-dark.svg 16b024b09ebcb9d66f6a9968858d7e01081e51a14a4922edf3c8e3c2009c0000 1
zip-code ./xtask/src/aegis.rs 6f21ec723dd82aa7bd36bc81cc4008e4f6359fe8ce68f793af23b7123bdbf3a6 1
zip-code ./xtask/src/aegis.rs d55d01d0341ed0ba2cd99b322e8c5b609254f47d10c7cd12b99b4922effeba44 1
zip-code ./xtask/src/aegis.rs f2f89ede8e7d4b3d2243dea1ca96b8ece56f793811d9708b4a0181bf81a50011 1
Expand Down
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,20 +64,22 @@ Some of these items are partially implemented or still planned. The authoritativ

## Screenshots

The images below are repository screenshots of the application. They are point-in-time views; consult the roadmap for current implementation status.
The images below are views of the application: the first is a repository screenshot, the second a vector mock-up of the dark theme. They are point-in-time views; consult the roadmap for current implementation status.

<p align="center">
<img src="docs/img/app-main.png" alt="FireCraft application workspace" width="960" />
</p>

The first capture is a 1280×800 frame of the current shell with a vector object selected, taken from the optimized web bundle built on 2026-11-04. It is evidence for that build and state, not a general parity claim — see the [screenshot audit](docs/tasks/T22-screenshot-ui.md) for the captures, measurements, and their limits.

The same workspace in the dark theme — Tools panel down the left edge, a vector object selected on a transparent canvas, and the Optimize panel previewing a PNG-24 export:
The dark theme, with the FireCraft flame mark under edit and its path nodes live:

<p align="center">
<img src="docs/img/app-dark.png" alt="FireCraft in dark mode: the Tools panel down the left edge, a vector fox logo selected on a transparent 800×600 canvas, and the Optimize panel showing a PNG-24 preview at 100% quality." width="960" />
<img src="docs/img/app-preview-dark.svg" alt="FireCraft in dark mode: the Tools panel down the left edge, the flame mark selected on a transparent 800×600 canvas with live path nodes on its outline, and the Optimize panel showing a PNG-24 preview at 100% quality." width="960" />
</p>

The dark-mode image is original vector artwork — a mock-up of the shell, not a screen capture — so the mark on the canvas is the project's own. The capture above it is the real one, and it is evidence for the build it came from, not a general parity claim.

## Get started

### Download a release
Expand Down
3 changes: 2 additions & 1 deletion docs/ATTRIBUTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ Adobe bytes, paths, colors, or names. License: this repository's
| `docs/img/logo.svg`, `site/assets/firecraft-mark.svg`, `site/assets/favicon.svg`, `web/favicon.svg` | FireCraft brand mark and SVG favicons: a clean flame silhouette with an ember-red-to-orange gradient | FireCraft contributors | Original vector artwork traced and refined from the project's supplied flame reference; no Adobe artwork or third-party assets used | Apache-2.0 ([LICENSE](../LICENSE)) |
| `docs/img/firecraft-vector-brand-study.svg`, `site/assets/firecraft-vector-brand-study.svg` | FireCraft vector-editing brand illustration with Bézier nodes, handles, and gradient controls | FireCraft contributors | Original SVG illustration developed from the approved FireCraft flame artwork; no Adobe artwork or third-party assets used | Apache-2.0 ([LICENSE](../LICENSE)) |
| `docs/img/logo.png`, `assets/icons/hicolor/256x256/apps/firecraft.png` | FireCraft application icon: the flame mark on a charcoal rounded-square field | FireCraft contributors | Raster exports of the original FireCraft SVG mark | Apache-2.0 ([LICENSE](../LICENSE)) |
| `docs/img/app-preview-dark.svg` / `.png` | Dark-mode application preview graphic: the workspace with a geometric fox illustration under edit | FireCraft contributors | Original vector artwork created for this project — a mock-up of the shell, not a screen capture; no Adobe artwork or third-party assets used | Apache-2.0 ([LICENSE](../LICENSE)) |
| `docs/img/app-preview-dark.svg` | Dark-mode application preview graphic: the workspace with the FireCraft flame mark under edit | FireCraft contributors | Original vector artwork created for this project — a mock-up of the shell, not a screen capture; no Adobe artwork or third-party assets used | Apache-2.0 ([LICENSE](../LICENSE)) |
| `docs/img/app-main.png` | Application screenshot: the workspace with a vector object selected | FireCraft contributors | A capture of this project's own application, taken from the optimized web bundle built on 2026-11-04; no Adobe artwork or third-party assets used | Apache-2.0 ([LICENSE](../LICENSE)) |
| `assets/library/Animations.fw.png` | FireCraft Common Library: Animations (3 animation-source symbols) | FireCraft contributors | generated by `xtask library-gen` | Apache-2.0 ([LICENSE](../LICENSE)) |
| `assets/library/Bullets.fw.png` | FireCraft Common Library: Bullets (5 list marks) | FireCraft contributors | generated by `xtask library-gen` | Apache-2.0 ([LICENSE](../LICENSE)) |
| `assets/library/Buttons.fw.png` | FireCraft Common Library: Buttons (2 plain + 1 rich symbol) | FireCraft contributors | generated by `xtask library-gen` | Apache-2.0 ([LICENSE](../LICENSE)) |
Expand Down
83 changes: 83 additions & 0 deletions docs/decisions/0101-brand-mark-in-the-mock-up.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# 0101 — The dark-mode mock-up shows the brand mark itself, and its placement transform is adjudicated

Date: 2026-11-12 · Issue [#131](https://github.com/aliasfoxkde/FireCraft/issues/131) · Status: accepted

## Context

The project's identity is the vector flame (`docs/img/logo.svg`, one path with
the ember-red-to-orange gradient). The fox was retired with it, but three
published places still carried the old motif: the README's dark-mode image,
the landing mock-up's artwork, and the attribution row that named "a
geometric fox illustration under edit". The mock-up is the graphic a
first-time visitor sees, so the retired motif was the project's face.

The README's dark-mode image was a *screen capture* whose canvas held the
old logo object, so its alt text described what the pixels actually
contained. That text could not simply be reworded: the capture had to be
replaced, and no renderer on this host draws the SVG correctly — the
internal SVG renderer ignores `objectBoundingBox` gradients and
multi-transform chains, so an exported PNG of the new artwork would be
wrong. A wrong PNG is worse than no PNG.

Drawing the mark into the mock-up raised two questions that had to be
settled before the artwork was right.

## Decision

- **The mock-up shows the mark the logo draws it.** The flame is placed with
the canonical path from `docs/img/logo.svg` and the logo's own gradient,
so the two cannot drift. It is one path and one gradient, as the logo is.
A first attempt added a second, scaled copy of the path as a gold "inner
core"; a geometric check of that construction — the path flattened to a
polygon, the scaled copy's vertices tested against the original — showed
the copy leaves the flame along **37% of its outline**, with excursions of
up to 64 path units, because the flame's tail and tendrils are not
star-shaped about the mark's centre. The core was removed rather than
shipped as a defect.
- **The selection chrome is fitted to the mark, not to the old artwork.**
The path's outline is flattened, its bounds mapped through the artwork's
transform, and the selection rectangle, its eight handles, the six path
nodes, the layer names, the status bar and the properties panel all
describe the object that is actually on the artboard.
- **The SVG is the single source.** `docs/img/app-preview-dark.png`,
`site/assets/app-preview-dark.png` and the retired capture
`docs/img/app-dark.png` are removed rather than regenerated; the site's
copy is the same file. Browsers render the SVG directly. The README shows
the mock-up with a caption that says what it is — original artwork, not a
screen capture — because a capture's alt text has to describe its pixels,
and the capture that used to be there held the retired mark.
- **The placement transform is adjudicated, not dodged.** The mock-up places
the mark with `transform="translate(403.79 193.46) scale(0.31214)"`. The
scale factor's digits read as a five-digit run, and Aegis's `zip-code`
rule matches any five-digit run, so the gate reports it as new. Three
occurrences — one per copy of the graphic, and this record, which
quotes the transform it adjudicates — are false positives of a class
the baseline already carries, and the rule class's reason in
`xtask/src/aegis.rs` now names this source so a reviewer can read what
the rows cover. No rule class was switched off and no rule was excluded.

The Aegis re-bless was reproduced outside `cargo`, as decisions 0083 and
0084 did, because the local build admission was closed while the GitForge
runners held the host's compilers. The renderer reproduces
`xtask/src/aegis.rs`'s `render_baseline` byte-for-byte: rendering `main`'s
committed baseline from a scan of `main`'s tree reproduces `main`'s
committed file exactly, with no diff. The scanner is the CI-pinned
`aegis` 0.6.3, so the content digests are the digests CI computes. The
rewrite was iterated to a fixed point: the second pass found no change.

## Consequences

- The published artwork carries the flame, and only the flame. The SVG is
the artifact; there is no raster copy to drift from it.
- The flame's placement is derived from the mark's own outline rather than
drawn by eye, so the selection chrome, the layer list and the properties
panel describe the object on the artboard.
- The Aegis baseline carries three new `zip-code` rows (the placement
transform's scale factor, in each copy of the graphic and in this record)
and drops the four `australian-tfn` rows the retired fox's bezier paths
had contributed. The
`australian-tfn` reason also returns to the wording the gate's source
holds: the committed baseline had drifted from it when the brand study
illustration was added, and regenerating from the source restores it.
- The mock-up is still a mock-up. It is original artwork of the shell, not a
screenshot of a build, and the README now says so.
Binary file removed docs/img/app-dark.png
Binary file not shown.
Binary file removed docs/img/app-preview-dark.png
Binary file not shown.
Loading
Loading