diff --git a/.aegis-baseline.tsv b/.aegis-baseline.tsv index e3665d0..c0f6037 100644 --- a/.aegis-baseline.tsv +++ b/.aegis-baseline.tsv @@ -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 @@ -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 @@ -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 @@ -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 diff --git a/README.md b/README.md index 52b3d20..792116c 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ 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.

FireCraft application workspace @@ -72,12 +72,14 @@ The images below are repository screenshots of the application. They are point-i 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:

- 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. + 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.

+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 diff --git a/docs/ATTRIBUTION.md b/docs/ATTRIBUTION.md index 9c4f305..82344a3 100644 --- a/docs/ATTRIBUTION.md +++ b/docs/ATTRIBUTION.md @@ -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)) | diff --git a/docs/decisions/0101-brand-mark-in-the-mock-up.md b/docs/decisions/0101-brand-mark-in-the-mock-up.md new file mode 100644 index 0000000..6555bad --- /dev/null +++ b/docs/decisions/0101-brand-mark-in-the-mock-up.md @@ -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. diff --git a/docs/img/app-dark.png b/docs/img/app-dark.png deleted file mode 100755 index 8970208..0000000 Binary files a/docs/img/app-dark.png and /dev/null differ diff --git a/docs/img/app-preview-dark.png b/docs/img/app-preview-dark.png deleted file mode 100644 index 5c97fae..0000000 Binary files a/docs/img/app-preview-dark.png and /dev/null differ diff --git a/docs/img/app-preview-dark.svg b/docs/img/app-preview-dark.svg index 7605b01..a45bbf3 100644 --- a/docs/img/app-preview-dark.svg +++ b/docs/img/app-preview-dark.svg @@ -1,10 +1,11 @@ - FireCraft in dark mode, editing a vector fox - A mock-up of the FireCraft workspace in dark mode: a geometric fox illustration sits on the artboard with live path nodes on its outline, a layers panel lists the fox's parts, and a timeline runs along the bottom. + FireCraft in dark mode, editing the flame mark + A mock-up of the FireCraft workspace in dark mode: the FireCraft flame mark sits on the artboard with live path nodes on its outline, a layers panel lists the mark's parts, and a timeline runs along the bottom. - - - + + + + @@ -58,50 +59,40 @@ - - - - - - - - - - - - - - - + + + + + - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - + + + + @@ -116,27 +107,23 @@ - - - fox-head - muzzle - eyes - ear-inner - background + flame-mark + base-glow + background PROPERTIES X - 260 + 462 Y - 236 + 215 W - 268 + 196 H - 254 + 269 Fill Stroke Blend @@ -178,7 +165,7 @@ Snap: 8px grid RGB / 8 5 layers - fox-head · path + flame-mark · path DARK MODE diff --git a/site/assets/app-preview-dark.png b/site/assets/app-preview-dark.png deleted file mode 100644 index 5c97fae..0000000 Binary files a/site/assets/app-preview-dark.png and /dev/null differ diff --git a/site/assets/app-preview-dark.svg b/site/assets/app-preview-dark.svg new file mode 100644 index 0000000..a45bbf3 --- /dev/null +++ b/site/assets/app-preview-dark.svg @@ -0,0 +1,171 @@ + + FireCraft in dark mode, editing the flame mark + A mock-up of the FireCraft workspace in dark mode: the FireCraft flame mark sits on the artboard with live path nodes on its outline, a layers panel lists the mark's parts, and a timeline runs along the bottom. + + + + + + + + + + + + + + + + + + File + Edit + Modify + Text + Select + Command + View + Window + Help + untitled.fw.png — 100% + + + + + + + + + + + + + + + + + + + + T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LAYERS + + + + + + + + + flame-mark + base-glow + background + + + + PROPERTIES + + X + 462 + Y + 215 + W + 196 + H + 269 + Fill + Stroke + Blend + Opacity + + + #E8622A + — + none + Normal + 100% + + + + + TIMELINE + + + + + + + + + + + + + + 0:00 + 0:10 + + + + + + + 100% + Snap: 8px grid + RGB / 8 + 5 layers + flame-mark · path + DARK MODE + + diff --git a/site/index.html b/site/index.html index 84f47a3..0c964f7 100644 --- a/site/index.html +++ b/site/index.html @@ -173,7 +173,7 @@

Made for the way
designers think. FIRECRAFT · DARK MODE VECTOR ARTWORK -Preview graphic of the FireCraft workspace in dark mode with a geometric fox illustration selected on the canvas +Preview graphic of the FireCraft workspace in dark mode with the FireCraft flame mark selected on the canvas
A VECTOR FOX, UNDER EDIT PREVIEW GRAPHIC diff --git a/xtask/src/aegis.rs b/xtask/src/aegis.rs index f915048..c468415 100644 --- a/xtask/src/aegis.rs +++ b/xtask/src/aegis.rs @@ -202,8 +202,11 @@ const CLASS_NOTES: &[(&str, &str)] = &[ "zip-code", "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 \ + family), a 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 \