mirror of
https://github.com/storytold/figcraft.git
synced 2026-11-11 00:11:10 +00:00
docs: tidy agent, contributor and asset docs
This commit is contained in:
1 parent
76f520ffaa
commit
69f7e91db3
14 files changed
+31
-73
No files matched your search
@@ -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
@@ -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 |
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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 |
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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,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
@@ -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
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in new issue
Block a user