docs: tidy agent, contributor and asset docs

This commit is contained in:
aiongg committed 2026-10-31 04:17:30 +00:00
1 parent 76f520ffaa
commit 69f7e91db3
14 files changed
+31 -73

No files matched your search

+5 -11
View File
@@ -6,10 +6,7 @@ inspection. It runs natively on macOS, Windows, Linux and FreeBSD, and in the br
Siblings: `../vectorcraft` (Illustrator-class), `../photocraft` (Photoshop-class), `../designcraft` Siblings: `../vectorcraft` (Illustrator-class), `../photocraft` (Photoshop-class), `../designcraft`
(InDesign-class) and the other Crafting Apps; same conventions. (InDesign-class) and the other Crafting Apps; same conventions.
Standards and learnings shared across the crafting apps live in `../../craftrules` (checked out Repos don't share code.
next to `craft-apps/`, or `storytold/craftrules`). Read its `AGENTS.md` at the start of a session,
follow its standards, and contribute reusable learnings back there. Never code: repos don't share
code.
## Start every session here ## Start every session here
1. Read [`ROADMAP.md`](ROADMAP.md) (stage, headline numbers, estimates) and 1. Read [`ROADMAP.md`](ROADMAP.md) (stage, headline numbers, estimates) and
@@ -106,7 +103,7 @@ to `main`.
write manifests atomically, delete your target dir when done (disk is limited). write manifests atomically, delete your target dir when done (disk is limited).
## Roadmap ## Roadmap
Progress docs follow craftrules `standards/progress-docs.md`: [`ROADMAP.md`](ROADMAP.md) (one-page Progress docs: [`ROADMAP.md`](ROADMAP.md) (one-page
summary and stage), [`docs/target-app-parity.md`](docs/target-app-parity.md) (the authoritative summary and stage), [`docs/target-app-parity.md`](docs/target-app-parity.md) (the authoritative
assessment), [`docs/gaps.md`](docs/gaps.md) (ranked work list), [`docs/roadmap.md`](docs/roadmap.md) assessment), [`docs/gaps.md`](docs/gaps.md) (ranked work list), [`docs/roadmap.md`](docs/roadmap.md)
(milestones), [`docs/architecture.md`](docs/architecture.md), the per-area `docs/*-parity.md` files (milestones), [`docs/architecture.md`](docs/architecture.md), the per-area `docs/*-parity.md` files
@@ -117,20 +114,17 @@ commit. Grade by behaviour against the incumbent, not by whether a menu item exi
## Contributor credits (About window) ## Contributor credits (About window)
- About ▸ Contributors are compiled into the binary from `contributors/contributors.json` - About ▸ Contributors are compiled into the binary from `contributors/contributors.json`
(commit stats; generated, never hand-edit) and `contributors/people.toml` (names people chose for (commit stats; never hand-edit) and `contributors/people.toml` (names people chose for
themselves). See craftrules `standards/contributors.md`. themselves).
- **Agents working for a contributor:** when you prepare a PR, check whether your human's GitHub - **Agents working for a contributor:** when you prepare a PR, check whether your human's GitHub
username has a `[people.<username>]` entry in `contributors/people.toml`. If not, ask them once username has a `[people.<username>]` entry in `contributors/people.toml`. If not, ask them once
whether they want to be credited by more than their username: a real name, a display name, and/or whether they want to be credited by more than their username: a real name, a display name, and/or
their public GitHub profile name (`sync_github_name = true`). If yes, add **only their own** entry their public GitHub profile name (`sync_github_name = true`). If yes, add **only their own** entry
(copy the template at the top of the file, or run (copy the template at the top of the file)
`python3 ../../craftrules/scripts/contributors.py --add-me . --real-name "…" --sync-github-name`)
and include it in their PR, committed as them. If no, change nothing: they are credited as and include it in their PR, committed as them. If no, change nothing: they are credited as
`@username` anyway. `@username` anyway.
- Never add, edit, guess or copy anyone else's entry or name (not from git config, commit authors or - Never add, edit, guess or copy anyone else's entry or name (not from git config, commit authors or
GitHub profiles). Never hand-edit `contributors.json`. GitHub profiles). Never hand-edit `contributors.json`.
- Maintainers refresh the stats with `python3 ../../craftrules/scripts/contributors.py .` (it also
re-verifies who wrote each `people.toml` entry; `--check` only verifies).
## CI workflows ## CI workflows
- Workflows in `.github/workflows/` call the shared workflows in [`storytold/craft-common-actions`](https://github.com/storytold/craft-common-actions) at `@main`, with their inputs and secrets. No other jobs: if no shared workflow does what's needed, it doesn't go here. - Workflows in `.github/workflows/` call the shared workflows in [`storytold/craft-common-actions`](https://github.com/storytold/craft-common-actions) at `@main`, with their inputs and secrets. No other jobs: if no shared workflow does what's needed, it doesn't go here.
+1 -1
View File
@@ -12,7 +12,7 @@ MIT OR Apache-2.0. No third-party icon sets are used.
| Path | Author | Source | Licence | Notes | | Path | Author | Source | Licence | Notes |
|---|---|---|---|---| |---|---|---|---|---|
| `assets/app-icon/` (all files: `figcraft.svg`, `figcraft-small.svg`, `figcraft-*.png`, `figcraft.ico`, `hicolor/`) | The project owner (engraving-style drawing, vectorised) | Original work, see [`assets/app-icon/README.md`](assets/app-icon/README.md); derived files rendered by `cargo xtask icon` | MIT OR Apache-2.0, [`assets/app-icon/LICENSE.txt`](assets/app-icon/LICENSE.txt) | FigCraft app icon (chameleon) | | `assets/app-icon/` (all files: `figcraft.svg`, `figcraft-small.svg`, `figcraft-*.png`, `figcraft.ico`, `hicolor/`) | The project owner (engraving-style drawing, vectorised) | Original work, see [`assets/app-icon/README.md`](assets/app-icon/README.md); derived files rendered by `cargo xtask icon` | MIT OR Apache-2.0, [`assets/app-icon/LICENSE.txt`](assets/app-icon/LICENSE.txt) | FigCraft app icon (chameleon) |
| `docs/brand/artcraft-logo.svg`, `docs/brand/artcraft-logo.png`, `docs/brand/artcraft-logo-white.svg`, `docs/brand/artcraft-logo-white.png`, `docs/brand/artcraft-mark.svg`, `docs/brand/artcraft-mark.png`, `docs/brand/artcraft-mark-black.svg`, `docs/brand/artcraft-mark-black.png` | ArtCraft Team | storytold/craftrules `assets/brand/` | ArtCraft brand terms (`docs/brand/LICENSE-brand.txt`), not open source | Trademarks; unmodified use within FigCraft only | | `docs/brand/artcraft-logo.svg`, `docs/brand/artcraft-logo.png`, `docs/brand/artcraft-logo-white.svg`, `docs/brand/artcraft-logo-white.png`, `docs/brand/artcraft-mark.svg`, `docs/brand/artcraft-mark.png`, `docs/brand/artcraft-mark-black.svg`, `docs/brand/artcraft-mark-black.png` | ArtCraft Team | ArtCraft brand kit | ArtCraft brand terms (`docs/brand/LICENSE-brand.txt`), not open source | Trademarks; unmodified use within FigCraft only |
| `docs/images/` (all screenshots and exports: `shot-*.png`, `art-*.png`) | FigCraft contributors | Screenshots of FigCraft showing synthetic demo documents made in FigCraft, and PNG exports of those documents by FigCraft's renderer | MIT OR Apache-2.0 | No third-party artwork | | `docs/images/` (all screenshots and exports: `shot-*.png`, `art-*.png`) | FigCraft contributors | Screenshots of FigCraft showing synthetic demo documents made in FigCraft, and PNG exports of those documents by FigCraft's renderer | MIT OR Apache-2.0 | No third-party artwork |
| `examples/*.figcraft` | FigCraft contributors | Synthetic demo documents built through FigCraft's command API; invented copy, shapes and vectors drawn from scratch, no images or embedded fonts | MIT OR Apache-2.0 | Text uses Inter (OFL, from craft-fonts or the system); no third-party artwork | | `examples/*.figcraft` | FigCraft contributors | Synthetic demo documents built through FigCraft's command API; invented copy, shapes and vectors drawn from scratch, no images or embedded fonts | MIT OR Apache-2.0 | Text uses Inter (OFL, from craft-fonts or the system); no third-party artwork |
+5 -11
View File
@@ -6,10 +6,7 @@ inspection. It runs natively on macOS, Windows, Linux and FreeBSD, and in the br
Siblings: `../vectorcraft` (Illustrator-class), `../photocraft` (Photoshop-class), `../designcraft` Siblings: `../vectorcraft` (Illustrator-class), `../photocraft` (Photoshop-class), `../designcraft`
(InDesign-class) and the other Crafting Apps; same conventions. (InDesign-class) and the other Crafting Apps; same conventions.
Standards and learnings shared across the crafting apps live in `../../craftrules` (checked out Repos don't share code.
next to `craft-apps/`, or `storytold/craftrules`). Read its `AGENTS.md` at the start of a session,
follow its standards, and contribute reusable learnings back there. Never code: repos don't share
code.
## Start every session here ## Start every session here
1. Read [`ROADMAP.md`](ROADMAP.md) (stage, headline numbers, estimates) and 1. Read [`ROADMAP.md`](ROADMAP.md) (stage, headline numbers, estimates) and
@@ -107,7 +104,7 @@ to `main`.
write manifests atomically, delete your target dir when done (disk is limited). write manifests atomically, delete your target dir when done (disk is limited).
## Roadmap ## Roadmap
Progress docs follow craftrules `standards/progress-docs.md`: [`ROADMAP.md`](ROADMAP.md) (one-page Progress docs: [`ROADMAP.md`](ROADMAP.md) (one-page
summary and stage), [`docs/target-app-parity.md`](docs/target-app-parity.md) (the authoritative summary and stage), [`docs/target-app-parity.md`](docs/target-app-parity.md) (the authoritative
assessment), [`docs/gaps.md`](docs/gaps.md) (ranked work list), [`docs/roadmap.md`](docs/roadmap.md) assessment), [`docs/gaps.md`](docs/gaps.md) (ranked work list), [`docs/roadmap.md`](docs/roadmap.md)
(milestones), [`docs/architecture.md`](docs/architecture.md), the per-area `docs/*-parity.md` files (milestones), [`docs/architecture.md`](docs/architecture.md), the per-area `docs/*-parity.md` files
@@ -118,20 +115,17 @@ commit. Grade by behaviour against the incumbent, not by whether a menu item exi
## Contributor credits (About window) ## Contributor credits (About window)
- About ▸ Contributors are compiled into the binary from `contributors/contributors.json` - About ▸ Contributors are compiled into the binary from `contributors/contributors.json`
(commit stats; generated, never hand-edit) and `contributors/people.toml` (names people chose for (commit stats; never hand-edit) and `contributors/people.toml` (names people chose for
themselves). See craftrules `standards/contributors.md`. themselves).
- **Agents working for a contributor:** when you prepare a PR, check whether your human's GitHub - **Agents working for a contributor:** when you prepare a PR, check whether your human's GitHub
username has a `[people.<username>]` entry in `contributors/people.toml`. If not, ask them once username has a `[people.<username>]` entry in `contributors/people.toml`. If not, ask them once
whether they want to be credited by more than their username: a real name, a display name, and/or whether they want to be credited by more than their username: a real name, a display name, and/or
their public GitHub profile name (`sync_github_name = true`). If yes, add **only their own** entry their public GitHub profile name (`sync_github_name = true`). If yes, add **only their own** entry
(copy the template at the top of the file, or run (copy the template at the top of the file)
`python3 ../../craftrules/scripts/contributors.py --add-me . --real-name "…" --sync-github-name`)
and include it in their PR, committed as them. If no, change nothing: they are credited as and include it in their PR, committed as them. If no, change nothing: they are credited as
`@username` anyway. `@username` anyway.
- Never add, edit, guess or copy anyone else's entry or name (not from git config, commit authors or - Never add, edit, guess or copy anyone else's entry or name (not from git config, commit authors or
GitHub profiles). Never hand-edit `contributors.json`. GitHub profiles). Never hand-edit `contributors.json`.
- Maintainers refresh the stats with `python3 ../../craftrules/scripts/contributors.py .` (it also
re-verifies who wrote each `people.toml` entry; `--check` only verifies).
## CI workflows ## CI workflows
- Workflows in `.github/workflows/` call the shared workflows in [`storytold/craft-common-actions`](https://github.com/storytold/craft-common-actions) at `@main`, with their inputs and secrets. No other jobs: if no shared workflow does what's needed, it doesn't go here. - Workflows in `.github/workflows/` call the shared workflows in [`storytold/craft-common-actions`](https://github.com/storytold/craft-common-actions) at `@main`, with their inputs and secrets. No other jobs: if no shared workflow does what's needed, it doesn't go here.
+2 -2
View File
@@ -337,7 +337,7 @@ Ranked; detail and milestones in [`docs/roadmap.md`](docs/roadmap.md).
Run last, Manage, Rust SDK and two examples), docs refresh (#102), the multiplayer core without Run last, Manage, Rust SDK and two examples), docs refresh (#102), the multiplayer core without
networking (#103: client-scoped ids, change sets, server ordering and validation, client networking (#103: client-scoped ids, change sets, server ordering and validation, client
reconciliation, convergence tests). Menu breadth 200/203; ready for real work ~47%. reconciliation, convergence tests). Menu breadth 200/203; ready for real work ~47%.
- **2026-10-10** · Full re-measure against Figma desktop 126.10.7 under the craftrules progress-docs - **2026-10-10** · Full re-measure against Figma desktop 126.10.7 under the progress-docs
standard: ready for real work ~46%, feature breadth ~76%, stage alpha; progress docs split out standard: ready for real work ~46%, feature breadth ~76%, stage alpha; progress docs split out
(`docs/target-app-parity.md`, `gaps.md`, `roadmap.md`, `architecture.md`, the per-area parity (`docs/target-app-parity.md`, `gaps.md`, `roadmap.md`, `architecture.md`, the per-area parity
docs); `docs/parity.md` renamed `docs/parity-checklist.md`. docs); `docs/parity.md` renamed `docs/parity-checklist.md`.
@@ -670,6 +670,6 @@ Ranked; detail and milestones in [`docs/roadmap.md`](docs/roadmap.md).
| 2026-10-10 | minor | Readiness by audience with hours to ~95% (full ~400–750, mainstream ~180–330, essentials ~85–160) | | 2026-10-10 | minor | Readiness by audience with hours to ~95% (full ~400–750, mainstream ~180–330, essentials ~85–160) |
| 2026-10-10 | minor | Added essentials user (~53%) and mainstream practitioner (~43%); ready for real work unchanged at ~46% | | 2026-10-10 | minor | Added essentials user (~53%) and mainstream practitioner (~43%); ready for real work unchanged at ~46% |
| 2026-10-10 | minor | Alpha gate (core workflows) checked under the revised stage rules: passes, stays alpha | | 2026-10-10 | minor | Alpha gate (core workflows) checked under the revised stage rules: passes, stays alpha |
| 2026-10-10 | major | Rewritten to the craftrules progress-docs shape after a full re-measure; rubric, area narrative and inventory moved to docs/target-app-parity.md, gaps to docs/gaps.md, milestones to docs/roadmap.md. Depth ~79% (self-graded, 16 areas) → ready for real work ~46% (all dimensions); full parity 115–195 h → 420–790 h | | 2026-10-10 | major | Rewritten to the progress-docs shape after a full re-measure; rubric, area narrative and inventory moved to docs/target-app-parity.md, gaps to docs/gaps.md, milestones to docs/roadmap.md. Depth ~79% (self-graded, 16 areas) → ready for real work ~46% (all dimensions); full parity 115–195 h → 420–790 h |
| 2026-10-10 | minor | Day-2 refreshes after each batch of PRs (depth 58% → 79%) | | 2026-10-10 | minor | Day-2 refreshes after each batch of PRs (depth 58% → 79%) |
| 2026-10-09 | major | First roadmap | | 2026-10-09 | major | First roadmap |
+1 -1
View File
@@ -22,7 +22,7 @@ its rounded corners, like the other Crafting Apps.
## Provenance ## Provenance
The owner's original engraving-style drawing (1500 px, keyed to the palette), supplied for The owner's original engraving-style drawing (1500 px, keyed to the palette), supplied for
FigCraft and vectorised with craftrules `assets/logo-options/_tools/vectorize_tile.py`. The source FigCraft and vectorised. The source
image is not kept in this repo. License: see `LICENSE.txt`. image is not kept in this repo. License: see `LICENSE.txt`.
## Files ## Files
+2 -5
View File
@@ -1,13 +1,10 @@
# Contributor names for the About window (craftrules standards/contributors.md). # Contributor names for the About window.
# #
# Everyone who contributes is credited by GitHub username automatically. Anything more is up to # Everyone who contributes is credited by GitHub username automatically. Anything more is up to
# you: add YOUR OWN entry below, in your own PR (commit it yourself). Never add someone else; a # you: add YOUR OWN entry below, in your own PR (commit it yourself). Never add someone else; a
# maintainer may add a person only when that person asked, recording where in consent_source. # maintainer may add a person only when that person asked, recording where in consent_source.
# #
# Easiest: python3 ../../craftrules/scripts/contributors.py --add-me . \ # Copy this block, replacing your-github-username (every field is optional):
# [--real-name "Ada Lovelace"] [--display-name "Ada"] [--sync-github-name]
#
# Or copy this block, replacing your-github-username (every field is optional):
# #
# [people.your-github-username] # [people.your-github-username]
# real_name = "Your Name" # shown when the viewer picks "Real name" # real_name = "Your Name" # shown when the viewer picks "Real name"
+3 -4
View File
@@ -1,8 +1,7 @@
//! Bake the contributor credits into the binary as static Rust tables (craftrules //! Bake the contributor credits into the binary as static Rust tables. Nothing is read at run time.
//! standards/contributors.md). Nothing is read at run time.
//! //!
//! - contributors/contributors.json: commit stats per GitHub username, generated by craftrules //! - contributors/contributors.json: commit stats per GitHub username, with a mark for whose people.toml
//! scripts/contributors.py, which also marks whose people.toml entry it verified. //! entry is verified.
//! - contributors/people.toml: the names people chose for themselves. A name is used only when the //! - contributors/people.toml: the names people chose for themselves. A name is used only when the
//! JSON says the entry was verified (`people_entry`). //! JSON says the entry was verified (`people_entry`).
//! //!
+1 -1
View File
@@ -1,6 +1,6 @@
//! The About window's credits: every contributor (GitHub login always; display and real names only //! The About window's credits: every contributor (GitHub login always; display and real names only
//! with recorded consent) and the AI models that helped. The tables are baked into the binary by //! with recorded consent) and the AI models that helped. The tables are baked into the binary by
//! build.rs from contributors/contributors.json (craftrules standards/contributors.md); nothing is //! build.rs from contributors/contributors.json; nothing is
//! read at run time. //! read at run time.
use std::cmp::Ordering; use std::cmp::Ordering;
+4 -21
View File
@@ -1,16 +1,14 @@
# Contributors in the About window # Contributors in the About window
**About ▸ Contributors** credits everyone who contributed to FigCraft, and **About ▸ Models** credits **About ▸ Contributors** credits everyone who contributed to FigCraft, and **About ▸ Models** credits
the AI models named in `Co-Authored-By` trailers. This follows the shared craftrules standard the AI models named in `Co-Authored-By` trailers.
[`standards/contributors.md`](https://github.com/storytold/craftrules/blob/main/standards/contributors.md);
this page is the local copy of the decision.
## Decision ## Decision
- Two files, both **compiled into the binary** by the UI crate's `build.rs` (nothing is read from - Two files, both **compiled into the binary** by the UI crate's `build.rs` (nothing is read from
disk or the network at run time; the web build has them too): disk or the network at run time; the web build has them too):
- [`contributors/contributors.json`](../contributors/contributors.json): commit stats per GitHub - [`contributors/contributors.json`](../contributors/contributors.json): commit stats per GitHub
username. **Generated** by `craftrules/scripts/contributors.py`; never hand-edit. username; never hand-edit.
- [`contributors/people.toml`](../contributors/people.toml): the names people chose for - [`contributors/people.toml`](../contributors/people.toml): the names people chose for
themselves. **Each contributor adds only their own entry**, in their own PR. themselves. **Each contributor adds only their own entry**, in their own PR.
- Each contributor gets one line: GitHub username (always), display name (opt-in, or their synced - Each contributor gets one line: GitHub username (always), display name (opt-in, or their synced
@@ -32,20 +30,5 @@ display_name = "Nickname"
sync_github_name = true # use the name on your public GitHub profile as display name sync_github_name = true # use the name on your public GitHub profile as display name
``` ```
or, with craftrules checked out next to `craft-apps/`: Names show for entries committed by their own user (or by a maintainer with a `consent_source`).
Delete your entry to remove your names. Git author names and emails are never recorded.
```sh
python3 ../../craftrules/scripts/contributors.py --add-me . --real-name "Your Name" --sync-github-name
```
Names show after the next refresh: the script checks that each entry was committed by its own
user (or by a maintainer with a `consent_source`). Delete your entry to remove your names.
## Refreshing (maintainers)
```sh
python3 ../../craftrules/scripts/contributors.py . # regenerate + verify; needs git, Python 3.11+, gh
python3 ../../craftrules/scripts/contributors.py --check . # verify people.toml only
```
Commit the updated `contributors/contributors.json`. Git author names and emails are never recorded.
+1 -2
View File
@@ -173,8 +173,7 @@ No alpha blockers: the alpha gate in [`roadmap.md`](roadmap.md#alpha-gate) passe
still unmeasured (`crates/text/src/metrics_tests.rs`, and a local check over such documents in still unmeasured (`crates/text/src/metrics_tests.rs`, and a local check over such documents in
`crates/engine/src/text_metrics_local_tests.rs`). `crates/engine/src/text_metrics_local_tests.rs`).
- **Estimate:** 15–30 h once `.fig` or REST import of real files is available; needs files whose - **Estimate:** 15–30 h once `.fig` or REST import of real files is available; needs files whose
licence allows use (owner to supply or approve; never committed if not redistributable, see licence allows use (owner to supply or approve; never committed if not redistributable).
craftrules `standards/test-corpora.md`).
### 4. Interaction fidelity not compared tool by tool ### 4. Interaction fidelity not compared tool by tool
- **Missing:** a side-by-side pass of every tool and panel: cursors, modifier keys while dragging, - **Missing:** a side-by-side pass of every tool and panel: cursors, modifier keys while dragging,
+1 -1
View File
@@ -6,7 +6,7 @@ FigCraft's interface has a localization layer with an English catalog, a Russian
by a native speaker, and Spanish (with a Latin American overlay), French, German, Brazilian by a native speaker, and Spanish (with a Latin American overlay), French, German, Brazilian
Portuguese, Japanese, Korean, Simplified Chinese, Indonesian, Vietnamese, Bosnian and Czech drafts (machine-drafted, Portuguese, Japanese, Korean, Simplified Chinese, Indonesian, Vietnamese, Bosnian and Czech drafts (machine-drafted,
waiting for native speakers' review), plus Swedish and Turkish catalogs. This page lists the twelve key waiting for native speakers' review), plus Swedish and Turkish catalogs. This page lists the twelve key
languages of the craftrules standard, then the other languages Figma ships. How to add a languages, then the other languages Figma ships. How to add a
language: [`translating.md`](translating.md). language: [`translating.md`](translating.md).
## What Figma ships ## What Figma ships
-6
View File
@@ -1,11 +1,5 @@
# Release playbook # Release playbook
The release playbook shared by every crafting app lives in craftrules:
[`../craftrules/release/playbook.md`](../../../craftrules/release/playbook.md)
(`storytold/craftrules`, checked out next to `craft-apps/`; the repository is not public). It is
the canonical copy; don't duplicate it here. Cutting a release step by step:
`craftrules/release/cut-a-release.md`.
FigCraft copies PhotoCraft's reference implementation (`.github/workflows/release.yml`, FigCraft copies PhotoCraft's reference implementation (`.github/workflows/release.yml`,
`packaging/`, the `xtask version` command) with FigCraft's names. FigCraft-specific details are in `packaging/`, the `xtask version` command) with FigCraft's names. FigCraft-specific details are in
[releasing.md](releasing.md). [releasing.md](releasing.md).
+2 -4
View File
@@ -7,9 +7,7 @@ Nobody sees a draft until a maintainer publishes it.
This is FigCraft's copy of the shared [release playbook](release-playbook.md) (PhotoCraft is the This is FigCraft's copy of the shared [release playbook](release-playbook.md) (PhotoCraft is the
reference implementation). User-facing names say **FigCraft**. Files, binaries and ids stay reference implementation). User-facing names say **FigCraft**. Files, binaries and ids stay
lowercase (`figcraft-<version>-<platform>-<arch>.<ext>`, `ai.storyteller.figcraft`). The lowercase (`figcraft-<version>-<platform>-<arch>.<ext>`, `ai.storyteller.figcraft`).
operational runbook (secrets, the `release` ruleset, runner group, promoting the draft) is
craftrules `release/cut-a-release.md`.
## FigCraft's names ## FigCraft's names
@@ -216,7 +214,7 @@ never repo or org secrets. Names (identical in every app): `APPLE_CERTIFICATE`,
`WINDOWS_CERTIFICATE`, `WINDOWS_CERTIFICATE_PASSWORD`, `AZURE_TENANT_ID`, `AZURE_CLIENT_ID`, `WINDOWS_CERTIFICATE`, `WINDOWS_CERTIFICATE_PASSWORD`, `AZURE_TENANT_ID`, `AZURE_CLIENT_ID`,
`AZURE_CLIENT_SECRET`, `AZURE_SIGNING_ENDPOINT`, `AZURE_SIGNING_ACCOUNT`, `AZURE_CERT_PROFILE`. `AZURE_CLIENT_SECRET`, `AZURE_SIGNING_ENDPOINT`, `AZURE_SIGNING_ACCOUNT`, `AZURE_CERT_PROFILE`.
Each is optional: a missing one gives an unsigned artifact and a `::warning::`. An org admin Each is optional: a missing one gives an unsigned artifact and a `::warning::`. An org admin
provisions the environment, ruleset and secrets with craftrules `release/signing-setup.md`, and provisions the environment, ruleset and secrets, and
adds the repo to the org's Default runner group so `macos-15-xlarge` can pick up the job. adds the repo to the org's Default runner group so `macos-15-xlarge` can pick up the job.
## Checks ## Checks
+3 -3
View File
@@ -47,7 +47,7 @@ wall-clock); the `.fig` reader, the multiplayer core and a plugin runtime each n
native-speaker review, real-file licensing and screen-reader QA need people. native-speaker review, real-file licensing and screen-reader QA need people.
The full number is an additive weighted sum over the dimension table; mainstream and essentials use The full number is an additive weighted sum over the dimension table; mainstream and essentials use
multiplicative discounts, as the standard says. multiplicative discounts.
## What was measured, and how ## What was measured, and how
@@ -182,10 +182,10 @@ type, and everything the mainstream number leaves out.
The same question for the typical professional Figma Design user: a product designer who designs The same question for the typical professional Figma Design user: a product designer who designs
screens, maintains or uses a design system, prototypes and hands off to developers every week. screens, maintains or uses a design system, prototypes and hands off to developers every week.
Computed per craftrules `standards/progress-docs.md`. Computed with the same method.
**1. Areas used weekly, with weights.** Feature areas 1–16 of the table above, with their weights **1. Areas used weekly, with weights.** Feature areas 1–16 of the table above, with their weights
(sum 94). Left out as the standard says: plugins and widgets (18), AI (21), team and organization (sum 94). Left out: plugins and widgets (18), AI (21), team and organization
libraries (19, cloud/team admin), Figma Draw extras (20, not weekly for a product designer), libraries (19, cloud/team admin), Figma Draw extras (20, not weekly for a product designer),
localization beyond English, specialist hardware. Real-time multiplayer (17) is cloud collaboration localization beyond English, specialist hardware. Real-time multiplayer (17) is cloud collaboration
and is left out as an area, but its effect on working with Figma users is counted in discount 3. and is left out as an area, but its effect on working with Figma users is counted in discount 3.