mirror of
https://github.com/storytold/figcraft.git
synced 2026-10-27 03:46:50 -06:00
docs: update source paths for the layout moves
This commit is contained in:
@@ -49,7 +49,7 @@ all end with the same geometry.
|
||||
| Timer music, timer sounds | missing | |
|
||||
| Voting sessions | done | one at a time: votes per person (1–99), on every object, on sticky notes or on the selection; a click on an object places a vote (several on one object allowed), a click on your badge or an Alt-click takes it back; your own votes show as badges while it runs, everyone's once it ends, with a ranked list (ties share a rank) that selects an object from its row; Clear results. `board.vote {action: start\|cast\|retract\|end\|clear}`, `board.voteResults`. Ballots sync per voter (keyed by the live-session client id, or your name offline), so people voting at once never overwrite each other. Not undo steps |
|
||||
| Voting: only the facilitator ends or clears it, who voted for what | missing | anyone who can edit the board can end or clear a vote; results are counts only |
|
||||
| Board widgets | missing | design-file widgets exist (`crates/engine/src/widgets.rs`), not wired to boards |
|
||||
| Board widgets | missing | design-file widgets exist (`crates/engine/src/extensions/widgets.rs`), not wired to boards |
|
||||
| Templates (retrospective, brainstorm, flow chart…) | partial | five built-in templates drawn up for FigCraft (retrospective, brainstorm, weekly planner, flow chart, kanban board), placed from the toolbar's templates picker (each with a picture of itself) or `board.template {name, x?, y?}` as ordinary sections, stickies, shapes, connectors and text in one undo step; `board.templates` lists them. No community templates, no saving your own |
|
||||
| Tables | partial | `board.table {rows, columns, cells?, x?, y?}` (at most 50 × 20): an auto layout frame of rows of cells with text, a tinted header row and lines between rows and columns; a cell's row grows with its text; a double-click types in the cell under the pointer; add or remove a row or column from the bar over the selection or `board.tableEdit {id, action, index?}`; undoable and synced in live sessions. No column resizing by dragging, no cell colours, no Tab between cells, no CSV paste |
|
||||
| Mind maps | missing | |
|
||||
|
||||
@@ -107,7 +107,7 @@ fit FigCraft's architecture:
|
||||
back with their ids (the server accepts re-creating deleted ids). Merging a branch whose new
|
||||
layers, styles, variables or comments lie in another id space (one made offline or in an earlier
|
||||
session) is refused by the app before anything is sent, since the server would refuse it (see
|
||||
`crates/engine/src/branches.rs`).
|
||||
`crates/engine/src/sharing/branches.rs`).
|
||||
- Objects inside an entry are not separate objects: modes are part of their collection, a
|
||||
variable's values per mode part of the variable and replies part of their comment thread. Two
|
||||
people adding a mode to the same collection, editing different modes of one variable, or replying
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
Design systems are why teams adopt Figma. **Components: breadth ~96%, ready ~72%. Styles and
|
||||
variables: breadth ~95%, ready ~76% (estimated).** QA'd with a synthetic design system of ~300
|
||||
components used 2,000 times (`crates/engine/src/synthetic_ds.rs`, `components_scale_tests.rs`);
|
||||
components used 2,000 times (`crates/engine/src/content/synthetic_ds.rs`, `components_scale_tests.rs`);
|
||||
not with real libraries. Remaining: 4–10 h here, plus team libraries' tail (4–8 h, partly after
|
||||
accounts).
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@ Entry points:
|
||||
- Headless/UI tests: `Context::default().run_ui(...)` in many `crates/ui-egui/src/*_tests.rs`
|
||||
files; `crates/ui-egui/src/idle_tests.rs` has the frame/idle harness; `windows_tests.rs` has the
|
||||
`run_logic` hidden-window harness.
|
||||
- Render/control: `crates/ui-egui/src/render_worker.rs`; `crates/ui-egui/src/control.rs`.
|
||||
- Render/control: `crates/ui-egui/src/canvas/render_worker.rs`; `crates/ui-egui/src/control.rs`.
|
||||
|
||||
Build/test entry points:
|
||||
|
||||
@@ -217,8 +217,8 @@ deadline work merely because a pass index is nonzero.
|
||||
| `crates/ui-egui/src/control.rs:119`, `idle_tests.rs:275` | `egui::UserData` not found | Removed with the callback API |
|
||||
| `crates/ui-egui/src/control.rs:367` + 11 test files | `Event::MouseWheel` missing field `source` | Add `MouseWheelSource` |
|
||||
| `crates/ui-egui/src/dialogs.rs:108` | `Role::SelectableLabel` not found | 0.37 keeps deprecated `pub type WidgetType = Role`; only renamed variants such as `SelectableLabel` are gone. Map to `Role::Button` |
|
||||
| `crates/ui-egui/src/frame_labels.rs:63` | non-exhaustive match missing `Shape::Band` | Add the 0.37 shape variant |
|
||||
| `crates/ui-egui/src/typography.rs:1312` | `ScrollArea` state `offset` private | Use `clamped_offset()` |
|
||||
| `crates/ui-egui/src/canvas/frame_labels.rs:63` | non-exhaustive match missing `Shape::Band` | Add the 0.37 shape variant |
|
||||
| `crates/ui-egui/src/panels/typography.rs:1312` | `ScrollArea` state `offset` private | Use `clamped_offset()` |
|
||||
| Many files | `Id::new`/`Ui::id()` deprecation warnings | CI clippy `-D warnings` turns these into failures; replace mechanically |
|
||||
|
||||
`clip_rect_margin` is not removed in 0.37; it remains as a deprecated unused field. Remove its use
|
||||
@@ -254,7 +254,7 @@ by egui/default fonts; leaving any of them on crates.io creates mixed egui-famil
|
||||
`egui_glow` only if a glow build is introduced. If a crate is not resolved in the final graph,
|
||||
remove its patch row and record the `cargo tree` evidence.
|
||||
|
||||
`egui_extras` must be patched because `crates/ui-egui/src/credits.rs` uses
|
||||
`egui_extras` must be patched because `crates/ui-egui/src/dialogs/credits.rs` uses
|
||||
`TableBuilder`/`TableRow`/`TableBody`; a 0.36 `egui_extras` would pull a second egui 0.36.
|
||||
|
||||
`craft-window` is a git dependency, not a path patch. Pin it to the final craft-libs revision whose
|
||||
@@ -373,10 +373,10 @@ Optional new provenance patches, only if measurements require them:
|
||||
| 63 uses, e.g. `tabs.rs`, `layers.rs`, `right.rs`, `widgets.rs` | `ui.id()` | `ui.scope_id()` | Renamed; same scope ID |
|
||||
| any `UiBuilder::new().id(...)` (none found now) | `.id(id)` | `.scope_id(id)` | Deprecated; verify by grep after codemod |
|
||||
| `crates/ui-egui/src/dialogs.rs` `tab_strip` | `WidgetType::SelectableLabel` | `egui::Role::Button` | `WidgetType` survives as deprecated `pub type WidgetType = Role`; only `SelectableLabel` is gone |
|
||||
| `crates/ui-egui/src/credits.rs` `sort_header` | `WidgetType::Button`/`Label` | `egui::Role::Button`/`Role::Label` | Same mapping; aliases may compile but should not produce warnings |
|
||||
| `crates/ui-egui/src/dialogs/credits.rs` `sort_header` | `WidgetType::Button`/`Label` | `egui::Role::Button`/`Role::Label` | Same mapping; aliases may compile but should not produce warnings |
|
||||
| `crates/ui-egui/src/control.rs` `ui.input` scroll branch; 11 test files | `Event::MouseWheel { unit, delta, phase, modifiers }` | add `source: egui::MouseWheelSource` | Use `Wheel` for synthetic wheel input, `Unknown` where unspecified |
|
||||
| `crates/ui-egui/src/frame_labels.rs` `turn` | exhaustive `Shape` match | add `Shape::Band(_)` | 0.37 `BandShape`; label drawing never adds one, leave it unchanged with a comment or rotate via its `angle` if a Band ever appears |
|
||||
| `crates/ui-egui/src/typography.rs` `font_picker` | `shown.state.offset.y` | `shown.state.clamped_offset().y` | `State::offset` private/deprecated; `clamped_offset` is the drawn position |
|
||||
| `crates/ui-egui/src/canvas/frame_labels.rs` `turn` | exhaustive `Shape` match | add `Shape::Band(_)` | 0.37 `BandShape`; label drawing never adds one, leave it unchanged with a comment or rotate via its `angle` if a Band ever appears |
|
||||
| `crates/ui-egui/src/panels/typography.rs` `font_picker` | `shown.state.offset.y` | `shown.state.clamped_offset().y` | `State::offset` private/deprecated; `clamped_offset` is the drawn position |
|
||||
| `crates/ui-egui/src/control.rs` `PendingShot`/`drain` | polls `Event::Screenshot` | capture-slot callback | API removed; see 6.3 |
|
||||
| tests in `idle_tests.rs` | synthetic `Event::Screenshot` | complete a test capture slot | API removed |
|
||||
|
||||
|
||||
+2
-2
@@ -131,7 +131,7 @@ No alpha blockers: the alpha gate in [`roadmap.md`](roadmap.md#alpha-gate) passe
|
||||
- **Missing:** a corpus of real documents (design systems, app screens, prototypes) imported and
|
||||
compared with Figma's own PNG/SVG/PDF exports.
|
||||
- **Evidence:** every corpus in the repo is synthetic (`crates/svg/tests/corpus`, the synthetic
|
||||
design system in `crates/engine/src/synthetic_ds.rs`). Scores were self-graded by the agents that
|
||||
design system in `crates/engine/src/content/synthetic_ds.rs`). Scores were self-graded by the agents that
|
||||
built the features.
|
||||
- **Impact:** unknown fidelity in auto layout sizing, text metrics, effects and component
|
||||
resolution on real files; the numbers in this repo can't be trusted beyond "estimated" until it
|
||||
@@ -362,7 +362,7 @@ No alpha blockers: the alpha gate in [`roadmap.md`](roadmap.md#alpha-gate) passe
|
||||
API) and takes `ui.input {gamepad}` on the control channel; widgets react to clicks in a
|
||||
presented prototype, on the prototype's own copy; `proto.evaluate` computes expressions (mode
|
||||
lookups included) where a layer's interaction would run (`crates/engine/src/proto_tail_tests.rs`,
|
||||
`crates/ui-egui/src/present_tail_tests.rs`, `crates/format/src/rest/gamepad_tests.rs`).
|
||||
`crates/ui-egui/src/present/tail_tests.rs`, `crates/format/src/rest/gamepad_tests.rs`).
|
||||
- **Missing:** video triggers (on media hit/end) and play/pause/mute/seek actions (the REST
|
||||
importer warns and skips them, `crates/format/src/rest/proto.rs`); controllers on macOS, Linux
|
||||
and FreeBSD (the usual Rust controller library links libudev on Linux; a pure-Rust reader per
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@ Each may be given more than once, as `--flag DIR` or `--flag=DIR`:
|
||||
- The roots must be existing folders: a missing one, or a file, stops the server at startup.
|
||||
`initialize`'s `instructions` name the folders, so the agent knows where it may work.
|
||||
- **What is covered:** everything a call does, because the engine reaches the file system through
|
||||
one module (`crates/engine/src/file_access.rs`), and `crates/engine/clippy.toml` refuses `std::fs`
|
||||
one module (`crates/engine/src/automation/file_access.rs`), and `crates/engine/clippy.toml` refuses `std::fs`
|
||||
anywhere else in the engine, so a command added later is covered too. That is `open_file` (and the
|
||||
`variables` file it may name), `save_file`, `export {path}`, and through `run_command` / `batch`
|
||||
every command that names a file: `file.open`, `file.openRecent` (recent files outside the roots
|
||||
|
||||
@@ -7,10 +7,10 @@ media control, every transition and easing exist; key/gamepad triggers take cont
|
||||
read from controllers on Windows and in the browser. Every rule of the public
|
||||
documentation on triggers, actions, overlays, animations, easing, scrolling and interactive
|
||||
components is a test case with what it implies (`crates/engine/src/proto_behaviour_tests.rs`, 7
|
||||
tests on the model, and `crates/ui-egui/src/present_behaviour_tests.rs`, 14 tests driving the
|
||||
tests on the model, and `crates/ui-egui/src/present/behaviour_tests.rs`, 14 tests driving the
|
||||
player, 21 gestures among them; presentation tabs: `crates/ui-egui/src/present_tab_tests.rs`, 6
|
||||
tests; the tail: `crates/engine/src/proto_tail_tests.rs`, 4 tests, and
|
||||
`crates/ui-egui/src/present_tail_tests.rs`, 5 tests), and all pass. Not yet checked against
|
||||
`crates/ui-egui/src/present/tail_tests.rs`, 5 tests), and all pass. Not yet checked against
|
||||
larger real prototypes. Remaining: 2–5 h.
|
||||
|
||||
| Group | Figma | FigCraft | Missing |
|
||||
@@ -105,7 +105,7 @@ tool; opt-in), **silent** (the documentation doesn't say; the case pins the curr
|
||||
|
||||
| Date | Change | Summary |
|
||||
|---|---|---|
|
||||
| 2026-10-24 | patch | The Triggers row's Missing column no longer lists delays on mouse enter, leave, down and up, which landed on 2026-10-13 (`crates/engine/src/proto_delay_tests.rs`, `crates/ui-egui/src/present_delay_tests.rs`). Numbers unchanged |
|
||||
| 2026-10-24 | patch | The Triggers row's Missing column no longer lists delays on mouse enter, leave, down and up, which landed on 2026-10-13 (`crates/engine/src/proto_delay_tests.rs`, `crates/ui-egui/src/present/delay_tests.rs`). Numbers unchanged |
|
||||
| 2026-10-24 | patch | Open link to a website first shows a notice that it leaves the prototype, with the link, Open link, Cancel and "Don't show this again", which the desktop app saves with its preferences and the web build keeps until the page reloads (`proto.linkNotice` turns the notice back on); a second link to a website that fires while the notice shows is dropped, and a mail link still opens. Before, the player opened the link at once, also from an After delay trigger. Numbers unchanged |
|
||||
| 2026-10-23 | patch | A top-level frame taller (or wider) than the device's screen scrolls with no overflow setting, as Figma's documentation says; before, "No scrolling" frames such as the landing page template's Phone frame only clipped. Content past a frame's own edges still scrolls only as its overflow allows. Checked in the app on macOS. Numbers unchanged |
|
||||
| 2026-10-22 | minor | Change to, set variable and set variable mode lay out what they change in the player as the canvas does: text sizes to what it shows and hugging frames follow (an instance with a longer label changed to the main's width; a bound text kept its old size). Two player tests. Breadth and ready unchanged. |
|
||||
|
||||
Reference in New Issue
Block a user