Skip to content

refactor: shared module layout (craft-contrib#20) - #1394

Merged
aiongg merged 67 commits into
storytold:mainfrom
aiongg:layout
Oct 27, 2026
Merged

aiongg merged 67 commits into
storytold:mainfrom
aiongg:layout

Conversation

@aiongg

@aiongg aiongg commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Pure-move refactor of FigCraft to the shared module layout in storytold/craft-contrib#20. No behaviour changes. Public paths stay the same: moved modules and items are re-exported from their old parent by name, and no caller is rewritten.

One commit per moved file or area; merge without squashing so each move stays reviewable and bisectable.

Large files split

Line counts are wc -l (including comments, tests and blank lines) at main (740d1173) and at this PR (60c671da).

File on main Lines on main Split into Left in the original Largest new file
crates/ui-egui/src/present.rs 3,422 11 files 459 present/tests.rs (438)
crates/format/src/fig/map.rs 3,122 9 files 367 map/layer.rs (699)
crates/engine/src/tools.rs (original replaced by crates/engine/src/canvas/tools.rs) 2,875 7 files 578 canvas/tools/drag.rs (605)
crates/format/src/fig/export.rs 2,840 7 files 631 export/layer.rs (440)
crates/ui-egui/src/right.rs (original replaced by crates/ui-egui/src/panels/right.rs) 2,491 5 files 710 panels/right/paints.rs (553)
crates/ui-egui/src/lib.rs 2,383 11 files 731 app.rs (385)
crates/engine/src/components.rs (original replaced by crates/engine/src/assets/components.rs) 2,339 7 files 301 assets/components/patch.rs (528)
crates/engine/src/cmd/file.rs 2,169 8 files 433 file/load.rs (416)
crates/engine/src/live.rs (original replaced by crates/engine/src/sharing/live.rs) 2,117 5 files 389 sharing/live/types.rs (482)
crates/engine/src/lib.rs 2,025 10 files 524 doc_state.rs (348)
crates/collab-net/src/hub.rs 1,795 5 files 772 hub/conn.rs (404)
crates/engine/src/codegen.rs (original replaced by crates/engine/src/dev/codegen.rs) 1,755 5 files 575 dev/codegen/html.rs (390)
crates/ui-egui/src/canvas.rs 1,705 6 files 366 canvas/overlays.rs (545)
apps/figcraft-server/src/store.rs 1,675 5 files 570 store/files.rs (300)
crates/ui-egui/src/typography.rs (original replaced by crates/ui-egui/src/panels/typography.rs) 1,615 5 files 350 panels/typography/fields.rs (481)
crates/engine/src/cmd/edit.rs 1,589 3 files 554 edit/props.rs (458)
crates/ui-egui/src/menus.rs 1,546 4 files 601 menus/palette.rs (410)
crates/engine/src/cmd/component.rs 1,527 3 files 356 component/props.rs (609)
crates/engine/src/board.rs (original replaced by crates/engine/src/boards/board.rs) 1,495 5 files 277 boards/board/derived.rs (339)

Also: 1 test module moved out to a tests.rs file, 5 mod.rs files renamed, 2 loose test files moved under tests paths.

crates/ui-egui/src/present.rs (3,422 → 459 + 11 files)
New file Lines
present/tests.rs 438
present/chrome.rs 408
present/scroll.rs 354
present/input.rs 334
present/player.rs 285
present/actions.rs 265
present/navigate.rs 255
present/transition.rs 251
present/layout.rs 186
present/device.rs 124
present/draw.rs 123
crates/format/src/fig/map.rs (3,122 → 367 + 9 files)
New file Lines
map/layer.rs 699
map/component.rs 441
map/document.rs 308
map/paint.rs 291
map/connector.rs 271
map/text.rs 270
map/layout.rs 188
map/proto.rs 179
map/variables.rs 164
crates/engine/src/tools.rs (2,875 → 578 + 7 files)
New file Lines
canvas/tools/drag.rs 605
canvas/tools/handles.rs 426
canvas/tools/click.rs 344
canvas/tools/pointer.rs 292
canvas/tools/pen.rs 276
canvas/tools/draw.rs 229
canvas/tools/keys.rs 174
crates/format/src/fig/export.rs (2,840 → 631 + 7 files)
New file Lines
export/layer.rs 440
export/assets.rs 365
export/common.rs 365
export/shape.rs 341
export/component.rs 324
export/paint.rs 239
export/prototype.rs 174
crates/ui-egui/src/right.rs (2,491 → 710 + 5 files)
New file Lines
panels/right/paints.rs 553
panels/right/effects.rs 541
panels/right/stroke.rs 313
panels/right/inspect.rs 269
panels/right/menu.rs 135
crates/ui-egui/src/lib.rs (2,383 → 731 + 11 files)
New file Lines
app.rs 385
canvas.rs (existing file) 366
app/files.rs 298
app/commands.rs 282
app/frame.rs 255
services.rs 159
app/control.rs 110
state.rs 65
clock.rs 63
open.rs 56
panels.rs 20
crates/engine/src/components.rs (2,339 → 301 + 7 files)
New file Lines
assets/components/patch.rs 528
assets/components/sync.rs 459
assets/components/instances.rs 342
assets/components/rebase.rs 249
assets/components/diff.rs 218
assets/components/variants.rs 147
assets/components/guard.rs 135
crates/engine/src/cmd/file.rs (2,169 → 433 + 8 files)
New file Lines
file/load.rs 416
file/export.rs 383
file/open.rs 245
file/save.rs 225
file/rest_import_tests.rs 187
file/version.rs 172
file/staging_write_tests.rs 119
file/tab_order_tests.rs 18
crates/engine/src/live.rs (2,117 → 389 + 5 files)
New file Lines
sharing/live/types.rs 482
sharing/live/events.rs 408
sharing/live/sync.rs 347
sharing/live/host.rs 272
sharing/live/join.rs 259
crates/engine/src/lib.rs (2,025 → 524 + 10 files)
New file Lines
doc_state.rs 348
session/undo.rs 275
derived.rs 236
prefs.rs 181
session/exec.rs 175
view_state.rs 136
session/new.rs 84
session/access.rs 54
error.rs 51
canvas.rs 14
crates/collab-net/src/hub.rs (1,795 → 772 + 5 files)
New file Lines
hub/conn.rs 404
hub/queue.rs 210
hub/hosting.rs 201
hub/backend.rs 138
hub/limits.rs 99
crates/engine/src/codegen.rs (1,755 → 575 + 5 files)
New file Lines
dev/codegen/html.rs 390
dev/codegen/css.rs 288
dev/codegen/arkui.rs 228
dev/codegen/swift.rs 168
dev/codegen/compose.rs 131
crates/ui-egui/src/canvas.rs (1,705 → 366 + 6 files)
New file Lines
canvas/overlays.rs 545
canvas/input.rs 260
canvas/outline.rs 196
canvas/render.rs 166
canvas/builder.rs 121
canvas/rulers.rs 93
apps/figcraft-server/src/store.rs (1,675 → 570 + 5 files)
New file Lines
store/files.rs 300
store/journal.rs 270
store/backend.rs 242
store/library.rs 161
store/links.rs 154
crates/ui-egui/src/typography.rs (1,615 → 350 + 5 files)
New file Lines
panels/typography/fields.rs 481
panels/typography/glyphs.rs 257
panels/typography/spacing.rs 202
panels/typography/picker.rs 189
panels/typography/axes.rs 187
crates/engine/src/cmd/edit.rs (1,589 → 554 + 3 files)
New file Lines
edit/props.rs 458
edit/clipboard.rs 332
edit/select.rs 267
crates/ui-egui/src/menus.rs (1,546 → 601 + 4 files)
New file Lines
menus/palette.rs 410
menus/tree.rs 384
menus/clipboard.rs 122
menus/select_layer.rs 55
crates/engine/src/cmd/component.rs (1,527 → 356 + 3 files)
New file Lines
component/props.rs 609
component/instance.rs 404
component/variants.rs 175
crates/engine/src/board.rs (1,495 → 277 + 5 files)
New file Lines
boards/board/derived.rs 339
boards/board/items.rs 297
boards/board/edit.rs 260
boards/board/tools.rs 210
boards/board/connectors.rs 147

Totals: 19 files split, 32,221 lines moved out of them, 120 new files.

Changes besides moved lines

  • test: scan source directories recursively (the one non-move code commit): the i18n key test walks ui-egui/src and format/src/{fig,rest} recursively, reads fig.rs and rest.rs beside those directories, and leaves out fig/export/ as it left out fig/export.rs. Without it the moves would drop files from the scan, or add the export warnings to the importer notes, without the test noticing. It finds the same keys before and after.
  • docs: update source paths for the layout moves: 16 path references in 7 docs.
  • Visibility: moved items used from another new file get pub(super), or pub(crate) when used elsewhere in the crate; engine DocState fields read elsewhere become pub(crate). Items used only in a type position or under a target cfg got it too: engine cmd/file/load.rs (wasm read, rest_images, sibling_variables), ui-egui typography/spacing.rs SpacingEdit, format fig/map/layer.rs Fit, collab-net hub/queue.rs (Charge, Held, Charges fields) and hub/limits.rs Counted; pub(in crate::cmd) for export_setting and print_param.
  • use, mod and pub use lines; impl X { wrappers around moved methods. Imports a split left unused were removed in that split's commit (LiveLink in live children, the print_param re-export in cmd/file.rs, use super::* in state.rs). In open.rs an import used only on wasm is gated with #[cfg(target_arch = "wasm32")].
  • Path rewrites a move needed: super::x paths in moved code that would become super::super::x are written from the crate root (crate::cmd::props::apply, crate::fig::export::STASH). app.rs names the crate-level control module as crate::control::… (CaptureState, background, drain), because the new child app/control.rs shadows the bare name there.
  • Log targets of moved modules change with their module path: engine library_server, live, invite_links, plugins, plugin_directory (now under assets::, sharing::, extensions::), collab-net hub and figcraft-server store children, and ui-egui's one call in FigApp::failed (figcraft_ui_egui → figcraft_ui_egui::app::commands). No log filter or test names a target.

Checks

  • pure-move-check upstream/main..layout: 67 commits: 60 ok, 7 with unmatched lines. Those are the scan-test commit, and in six splits only super:: → crate:: path rewrites, lines rustfmt reflowed, the crate::control:: paths and the wasm #[cfg] in open.rs (listed above). No ///, //! or #[…] line is removed. The docs commit changes only .md files.
  • cargo clippy --all-targets -- -D warnings for every split crate; cargo check -p figcraft-web --target wasm32-unknown-unknown.
  • figcraft-format and figcraft-engine pass cargo check --tests for x86_64-pc-windows-msvc and aarch64-apple-darwin. figcraft-ui-egui, figcraft-collab-net, figcraft-server and figcraft pass cargo xwin clippy --all-targets --target x86_64-pc-windows-msvc -- -D warnings. Those four can't be checked for aarch64-apple-darwin from Linux here: the ring build script needs a C cross toolchain.
  • The i18n source-scan test passes. The rest is left to CI.

Conflicts with open PRs

30 of 38 open PRs touch files this PR changes (2026-10-26).

Split files: changes need porting into the new child files

File PRs Numbers
ui-egui/src/lib.rs 19 #113, #129, #173, #174, #611, #618, #734, #789, #803, #805, #822, #823, #858, #941, #1050, #1143, #1271, #1334, #1360
engine/src/cmd/file.rs 10 #173, #174, #611, #1046, #1048, #1050, #1143, #1334, #1389, #1392
engine/src/lib.rs 7 #113, #173, #174, #1050, #1334, #1360, #1392
ui-egui/src/dialogs.rs 6 #129, #173, #174, #611, #962, #1271
ui-egui/src/right.rs 6 #174, #789, #803, #822, #823, #858
engine/src/live.rs 5 #174, #734, #1046, #1048, #1050
ui-egui/src/canvas.rs 5 #113, #129, #174, #1046, #1048
ui-egui/src/menus.rs 5 #113, #734, #805, #941, #1360
collab-net/src/hub.rs 4 #734, #1020, #1046, #1048
format/src/fig/export.rs 4 #634, #1046, #1048, #1334
ui-egui/src/present.rs 4 #174, #734, #1270, #1334
apps/figcraft-server/src/store.rs 2 #1046, #1048
engine/src/codegen.rs 2 #669, #1334
engine/src/tools.rs 2 #174, #1270
format/src/fig/map.rs 2 #634, #1334
ui-egui/src/icons.rs 2 #1271, #1334
ui-egui/src/typography.rs 2 #174, #858
engine/src/components.rs 1 #1334

Edited in place (mod, use and #[path] lines)

File PRs Numbers
ui-egui/src/widgets.rs 6 #174, #803, #822, #823, #858, #1271
ui-egui/src/control.rs 3 #129, #173, #174
ui-egui/src/home.rs 3 #173, #174, #962
ui-egui/src/i18n.rs 2 #611, #1391
engine/src/fonts.rs 1 #1050

Moved whole: git follows the rename on rebase

File PRs Numbers
ui-egui/src/colorpicker.rs → ui-egui/src/widgets/colorpicker.rs 8 #618, #789, #803, #822, #823, #1046, #1048, #1271
ui-egui/src/style_picker.rs → ui-egui/src/widgets/style_picker.rs 6 #789, #803, #822, #823, #1271, #1334
ui-egui/src/plugins_ui.rs → ui-egui/src/dialogs/plugins_ui.rs 5 #174, #803, #805, #822, #823
ui-egui/src/selection_colors.rs → ui-egui/src/panels/selection_colors.rs 4 #789, #803, #822, #823
ui-egui/src/variables_panel.rs → ui-egui/src/dialogs/variables_panel.rs 4 #803, #822, #823, #1271
engine/src/cmd/mod.rs → engine/src/cmd.rs 3 #113, #173, #174
engine/src/code_connect.rs → engine/src/dev/code_connect.rs 3 #173, #174, #669
engine/src/component_codegen.rs → engine/src/dev/component_codegen.rs 3 #173, #174, #669
format/src/rest/mod.rs → format/src/rest.rs 3 #634, #1046, #1048
ui-egui/src/layout_panel.rs → ui-egui/src/panels/layout_panel.rs 3 #803, #858, #1334
collab-net/src/queue_tests.rs → collab-net/src/hub/queue_tests.rs 2 #1046, #1048
engine/src/branches.rs → engine/src/sharing/branches.rs 2 #173, #174
engine/src/online.rs → engine/src/sharing/online.rs 2 #173, #174
engine/src/textedit.rs → engine/src/canvas/textedit.rs 2 #174, #1050
svg/src/import/mod.rs → svg/src/import.rs 2 #1046, #1048
ui-egui/src/i18n_tests.rs → ui-egui/src/i18n/tests.rs 2 #611, #1391
ui-egui/src/layers.rs → ui-egui/src/panels/layers.rs 2 #941, #1271
ui-egui/src/present_behaviour_tests.rs → ui-egui/src/present/behaviour_tests.rs 2 #1270, #1334
engine/src/devinspect.rs → engine/src/dev/devinspect.rs 1 #1334
engine/src/distance.rs → engine/src/canvas/distance.rs 1 #1334
engine/src/file_access.rs → engine/src/automation/file_access.rs 1 #1392
engine/src/file_access_tests.rs → engine/src/automation/file_access/tests.rs 1 #1392
engine/src/library.rs → engine/src/assets/library.rs 1 #1392
engine/src/library_tests.rs → engine/src/assets/library/tests.rs 1 #1392
engine/src/playground.rs → engine/src/assets/playground.rs 1 #669
engine/src/plugins.rs → engine/src/extensions/plugins.rs 1 #174
engine/src/shapebuilder.rs → engine/src/canvas/shapebuilder.rs 1 #634
engine/src/style_vars.rs → engine/src/assets/style_vars.rs 1 #1271
engine/src/textpreview.rs → engine/src/canvas/textpreview.rs 1 #174
engine/src/vectoredit.rs → engine/src/canvas/vectoredit.rs 1 #634
engine/src/vectoredit/ops.rs → engine/src/canvas/vectoredit/ops.rs 1 #634
engine/src/vectoredit/regions.rs → engine/src/canvas/vectoredit/regions.rs 1 #634
engine/src/vectoredit/regions_tests.rs → engine/src/canvas/vectoredit/regions_tests.rs 1 #634
engine/src/widgets.rs → engine/src/extensions/widgets.rs 1 #174
ui-egui/src/branch_ui.rs → ui-egui/src/dialogs/branch_ui.rs 1 #1334
ui-egui/src/comments.rs → ui-egui/src/canvas/comments.rs 1 #1334
ui-egui/src/dev_compare.rs → ui-egui/src/panels/dev_compare.rs 1 #1334
ui-egui/src/dev_mode.rs → ui-egui/src/panels/dev_mode.rs 1 #669
ui-egui/src/export_panel.rs → ui-egui/src/panels/export_panel.rs 1 #858
ui-egui/src/home_recents.rs → ui-egui/src/home/home_recents.rs 1 #1334
ui-egui/src/missing_fonts.rs → ui-egui/src/dialogs/missing_fonts.rs 1 #1050
ui-egui/src/present_variables_tests.rs → ui-egui/src/present/variables_tests.rs 1 #1270
ui-egui/src/proto_editor.rs → ui-egui/src/panels/proto_editor.rs 1 #1334
ui-egui/src/proto_panel.rs → ui-egui/src/panels/proto_panel.rs 1 #1334
ui-egui/src/render_worker.rs → ui-egui/src/canvas/render_worker.rs 1 #129
ui-egui/src/variable_ui.rs → ui-egui/src/panels/variable_ui.rs 1 #1271
ui-egui/src/versions.rs → ui-egui/src/panels/versions.rs 1 #1334

Docs (path references)

File PRs Numbers
docs/gaps.md 7 #113, #173, #174, #634, #669, #734, #1392
docs/mcp.md 6 #113, #173, #174, #500, #669, #734
docs/collab-protocol.md 5 #734, #1020, #1046, #1048, #1050
docs/prototyping-parity.md 3 #734, #1270, #1334
docs/components-parity.md 1 #669

After the freeze

  • Loose *_tests.rs files declared in the crate roots (95 in ui-egui, 181 in engine): 126 of them import other test modules by crate-root path, so moving them needs path rewrites.
  • #[path] test modules in crates this PR doesn't otherwise change: text (display, fontdb, color), collab (code), format (library, fig/tests.rs children, fig/export_tests.rs), figcraft (control_server), and doc proto.rs's two #[path] submodules.
  • dialogs::show() holds About, Preferences and Find & replace inline; extract them into functions, then move them to dialogs/.
  • Files of 1,000–1,500 lines not read for seams this round (ui-egui control.rs, colorpicker.rs, style_picker.rs, …).
  • Rewriting callers to the defining module and removing the old-path aliases (rules 3 and 4).

aiongg added 30 commits October 26, 2026 20:17
…es, shape_handles, rotation_origin, al_keys, booleans, shapebuilder, textedit, textpreview, vectoredit to canvas/
…wap, style_vars, playground, token_roles to assets/
…codegen, tailwind, devcompare, devinspect, dev_measurements, dev_resources to dev/
…andles, measure_overlay, proto_canvas, render_worker, selection_spacing, live_text, comments, board_bar, board_facilitate, widget_bar to canvas/
…ent_panel, export_panel, layout_panel, section_panel, selection_colors, typography, variable_ui, vector_panel, scale_panel, frame_presets, list_drag, proto_panel, proto_editor, dev_mode, dev_compare, shortcuts_panel to panels/
…s_ui, variables_panel, branch_ui, plugins_ui to dialogs/
aiongg added 24 commits October 26, 2026 20:17
@coderabbitai

coderabbitai Bot commented Oct 26, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 328 files, which is 28 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

Run configuration
Commits

Reviewing files that changed from the base of the PR and between 740d117 and 60c671d.

Files selected for processing: 328
  • apps/figcraft-server/src/store.rs
  • apps/figcraft-server/src/store/backend.rs
  • apps/figcraft-server/src/store/files.rs
  • apps/figcraft-server/src/store/journal.rs
  • apps/figcraft-server/src/store/library.rs
  • apps/figcraft-server/src/store/links.rs
  • crates/collab-net/src/hub.rs
  • crates/collab-net/src/hub/backend.rs
  • crates/collab-net/src/hub/barred_tests.rs
  • crates/collab-net/src/hub/conn.rs
  • crates/collab-net/src/hub/hosting.rs
  • crates/collab-net/src/hub/limits.rs
  • crates/collab-net/src/hub/preauth_tests.rs
  • crates/collab-net/src/hub/queue.rs
  • crates/collab-net/src/hub/queue_tests.rs
  • crates/engine/src/assets.rs
  • crates/engine/src/assets/components.rs
  • crates/engine/src/assets/components/diff.rs
  • crates/engine/src/assets/components/guard.rs
  • crates/engine/src/assets/components/instances.rs
  • crates/engine/src/assets/components/patch.rs
  • crates/engine/src/assets/components/rebase.rs
  • crates/engine/src/assets/components/rebase_source_tests.rs
  • crates/engine/src/assets/components/sync.rs
  • crates/engine/src/assets/components/tests.rs
  • crates/engine/src/assets/components/variants.rs
  • crates/engine/src/assets/library.rs
  • crates/engine/src/assets/library/tests.rs
  • crates/engine/src/assets/library_server.rs
  • crates/engine/src/assets/library_server/tests.rs
  • crates/engine/src/assets/library_swap.rs
  • crates/engine/src/assets/library_swap/tests.rs
  • crates/engine/src/assets/playground.rs
  • crates/engine/src/assets/style_vars.rs
  • crates/engine/src/assets/token_roles.rs
  • crates/engine/src/automation.rs
  • crates/engine/src/automation/batch.rs
  • crates/engine/src/automation/doc_urls.rs
  • crates/engine/src/automation/file_access.rs
  • crates/engine/src/automation/file_access/tests.rs
  • crates/engine/src/automation/inspect.rs
  • crates/engine/src/automation/params.rs
  • crates/engine/src/board.rs
  • crates/engine/src/boards.rs
  • crates/engine/src/boards/board.rs
  • crates/engine/src/boards/board/connectors.rs
  • crates/engine/src/boards/board/derived.rs
  • crates/engine/src/boards/board/edit.rs
  • crates/engine/src/boards/board/items.rs
  • crates/engine/src/boards/board/tools.rs
  • crates/engine/src/boards/board_table.rs
  • crates/engine/src/boards/board_templates.rs
  • crates/engine/src/canvas.rs
  • crates/engine/src/canvas/al_keys.rs
  • crates/engine/src/canvas/arc_handles.rs
  • crates/engine/src/canvas/booleans.rs
  • crates/engine/src/canvas/distance.rs
  • crates/engine/src/canvas/drop.rs
  • crates/engine/src/canvas/guides.rs
  • crates/engine/src/canvas/rotation_origin.rs
  • crates/engine/src/canvas/shape_handles.rs
  • crates/engine/src/canvas/shapebuilder.rs
  • crates/engine/src/canvas/snap.rs
  • crates/engine/src/canvas/textedit.rs
  • crates/engine/src/canvas/textedit/tests.rs
  • crates/engine/src/canvas/textpreview.rs
  • crates/engine/src/canvas/tools.rs
  • crates/engine/src/canvas/tools/click.rs
  • crates/engine/src/canvas/tools/drag.rs
  • crates/engine/src/canvas/tools/draw.rs
  • crates/engine/src/canvas/tools/handles.rs
  • crates/engine/src/canvas/tools/keys.rs
  • crates/engine/src/canvas/tools/pen.rs
  • crates/engine/src/canvas/tools/pointer.rs
  • crates/engine/src/canvas/vectoredit.rs
  • crates/engine/src/canvas/vectoredit/ops.rs
  • crates/engine/src/canvas/vectoredit/point_snap.rs
  • crates/engine/src/canvas/vectoredit/pointer.rs
  • crates/engine/src/canvas/vectoredit/regions.rs
  • crates/engine/src/canvas/vectoredit/regions_tests.rs
  • crates/engine/src/canvas/vectoredit/tests.rs
  • crates/engine/src/canvas/vectoredit/transform.rs
  • crates/engine/src/canvas/vectoredit/transform_tests.rs
  • crates/engine/src/canvas/vectoredit/width.rs
  • crates/engine/src/canvas/vectoredit/width_sides_tests.rs
  • crates/engine/src/canvas/vectoredit/width_tests.rs
  • crates/engine/src/cmd.rs
  • crates/engine/src/cmd/component.rs
  • crates/engine/src/cmd/component/instance.rs
  • crates/engine/src/cmd/component/props.rs
  • crates/engine/src/cmd/component/variants.rs
  • crates/engine/src/cmd/edit.rs
  • crates/engine/src/cmd/edit/clipboard.rs
  • crates/engine/src/cmd/edit/props.rs
  • crates/engine/src/cmd/edit/select.rs
  • crates/engine/src/cmd/file.rs
  • crates/engine/src/cmd/file/export.rs
  • crates/engine/src/cmd/file/load.rs
  • crates/engine/src/cmd/file/open.rs
  • crates/engine/src/cmd/file/rest_import_tests.rs
  • crates/engine/src/cmd/file/save.rs
  • crates/engine/src/cmd/file/staging_write_tests.rs
  • crates/engine/src/cmd/file/tab_order_tests.rs
  • crates/engine/src/cmd/file/version.rs
  • crates/engine/src/cmd/file/zip_cap_tests.rs
  • crates/engine/src/codegen.rs
  • crates/engine/src/components.rs
  • crates/engine/src/content.rs
  • crates/engine/src/content/datafill.rs
  • crates/engine/src/content/synthetic.rs
  • crates/engine/src/content/synthetic_ds.rs
  • crates/engine/src/content/templates.rs
  • crates/engine/src/content/templates/dashboard.rs
  • crates/engine/src/content/templates/design_system.rs
  • crates/engine/src/content/templates/glyphs.rs
  • crates/engine/src/content/templates/icon_set.rs
  • crates/engine/src/content/templates/kit.rs
  • crates/engine/src/content/templates/landing.rs
  • crates/engine/src/content/templates/mobile.rs
  • crates/engine/src/content/templates/slides.rs
  • crates/engine/src/content/templates/social.rs
  • crates/engine/src/content/templates/wireframe.rs
  • crates/engine/src/content/textfit.rs
  • crates/engine/src/derived.rs
  • crates/engine/src/dev.rs
  • crates/engine/src/dev/annotations.rs
  • crates/engine/src/dev/code_connect.rs
  • crates/engine/src/dev/codegen.rs
  • crates/engine/src/dev/codegen/arkui.rs
  • crates/engine/src/dev/codegen/compose.rs
  • crates/engine/src/dev/codegen/css.rs
  • crates/engine/src/dev/codegen/html.rs
  • crates/engine/src/dev/codegen/swift.rs
  • crates/engine/src/dev/component_codegen.rs
  • crates/engine/src/dev/dev_measurements.rs
  • crates/engine/src/dev/dev_resources.rs
  • crates/engine/src/dev/devcompare.rs
  • crates/engine/src/dev/devinspect.rs
  • crates/engine/src/dev/tailwind.rs
  • crates/engine/src/doc_state.rs
  • crates/engine/src/error.rs
  • crates/engine/src/extensions.rs
  • crates/engine/src/extensions/plugin_directory.rs
  • crates/engine/src/extensions/plugins.rs
  • crates/engine/src/extensions/widgets.rs
  • crates/engine/src/fonts.rs
  • crates/engine/src/fonts/tests.rs
  • crates/engine/src/lib.rs
  • crates/engine/src/live.rs
  • crates/engine/src/prefs.rs
  • crates/engine/src/selection.rs
  • crates/engine/src/selection/rename.rs
  • crates/engine/src/selection/selection_colors.rs
  • crates/engine/src/selection/selection_reorder.rs
  • crates/engine/src/selection/selection_spacing.rs
  • crates/engine/src/session.rs
  • crates/engine/src/session/access.rs
  • crates/engine/src/session/exec.rs
  • crates/engine/src/session/new.rs
  • crates/engine/src/session/undo.rs
  • crates/engine/src/sharing.rs
  • crates/engine/src/sharing/background.rs
  • crates/engine/src/sharing/background/tests.rs
  • crates/engine/src/sharing/branches.rs
  • crates/engine/src/sharing/collab.rs
  • crates/engine/src/sharing/invite_links.rs
  • crates/engine/src/sharing/live.rs
  • crates/engine/src/sharing/live/events.rs
  • crates/engine/src/sharing/live/host.rs
  • crates/engine/src/sharing/live/join.rs
  • crates/engine/src/sharing/live/sync.rs
  • crates/engine/src/sharing/live/types.rs
  • crates/engine/src/sharing/online.rs
  • crates/engine/src/tools.rs
  • crates/engine/src/view_state.rs
  • crates/format/src/fig.rs
  • crates/format/src/fig/export.rs
  • crates/format/src/fig/export/assets.rs
  • crates/format/src/fig/export/common.rs
  • crates/format/src/fig/export/component.rs
  • crates/format/src/fig/export/layer.rs
  • crates/format/src/fig/export/paint.rs
  • crates/format/src/fig/export/prototype.rs
  • crates/format/src/fig/export/shape.rs
  • crates/format/src/fig/map.rs
  • crates/format/src/fig/map/component.rs
  • crates/format/src/fig/map/connector.rs
  • crates/format/src/fig/map/connector_snapshot_budget_tests.rs
  • crates/format/src/fig/map/document.rs
  • crates/format/src/fig/map/image_filter_tests.rs
  • crates/format/src/fig/map/layer.rs
  • crates/format/src/fig/map/layout.rs
  • crates/format/src/fig/map/paint.rs
  • crates/format/src/fig/map/proto.rs
  • crates/format/src/fig/map/text.rs
  • crates/format/src/fig/map/variables.rs
  • crates/format/src/rest.rs
  • crates/format/src/sketch.rs
  • crates/svg/src/import.rs
  • crates/ui-egui/src/app.rs
  • crates/ui-egui/src/app/clipboard.rs
  • crates/ui-egui/src/app/commands.rs
  • crates/ui-egui/src/app/control.rs
  • crates/ui-egui/src/app/files.rs
  • crates/ui-egui/src/app/frame.rs
  • crates/ui-egui/src/app/ime.rs
  • crates/ui-egui/src/bidi.rs
  • crates/ui-egui/src/bidi/tests.rs
  • crates/ui-egui/src/canvas.rs
  • crates/ui-egui/src/canvas/board_bar.rs
  • crates/ui-egui/src/canvas/board_facilitate.rs
  • crates/ui-egui/src/canvas/builder.rs
  • crates/ui-egui/src/canvas/builder_poly_tests.rs
  • crates/ui-egui/src/canvas/comments.rs
  • crates/ui-egui/src/canvas/cursors.rs
  • crates/ui-egui/src/canvas/frame_labels.rs
  • crates/ui-egui/src/canvas/frame_stats.rs
  • crates/ui-egui/src/canvas/guides.rs
  • crates/ui-egui/src/canvas/handles.rs
  • crates/ui-egui/src/canvas/input.rs
  • crates/ui-egui/src/canvas/live_text.rs
  • crates/ui-egui/src/canvas/measure_overlay.rs
  • crates/ui-egui/src/canvas/outline.rs
  • crates/ui-egui/src/canvas/overlays.rs
  • crates/ui-egui/src/canvas/proto_canvas.rs
  • crates/ui-egui/src/canvas/render.rs
  • crates/ui-egui/src/canvas/render_worker.rs
  • crates/ui-egui/src/canvas/rulers.rs
  • crates/ui-egui/src/canvas/selection_spacing.rs
  • crates/ui-egui/src/canvas/widget_bar.rs
  • crates/ui-egui/src/canvas/zoom_preview_tests.rs
  • crates/ui-egui/src/clock.rs
  • crates/ui-egui/src/control.rs
  • crates/ui-egui/src/control/capture_tests.rs
  • crates/ui-egui/src/control/roots_tests.rs
  • crates/ui-egui/src/dialogs.rs
  • crates/ui-egui/src/dialogs/batch_rename.rs
  • crates/ui-egui/src/dialogs/branch_ui.rs
  • crates/ui-egui/src/dialogs/color_profile.rs
  • crates/ui-egui/src/dialogs/credits.rs
  • crates/ui-egui/src/dialogs/credits/ui_tests.rs
  • crates/ui-egui/src/dialogs/export.rs
  • crates/ui-egui/src/dialogs/import_report.rs
  • crates/ui-egui/src/dialogs/menu_input.rs
  • crates/ui-egui/src/dialogs/missing_fonts.rs
  • crates/ui-egui/src/dialogs/plugins_ui.rs
  • crates/ui-egui/src/dialogs/updates_ui.rs
  • crates/ui-egui/src/dialogs/variables_panel.rs
  • crates/ui-egui/src/home.rs
  • crates/ui-egui/src/home/home_recents.rs
  • crates/ui-egui/src/home/online.rs
  • crates/ui-egui/src/i18n.rs
  • crates/ui-egui/src/i18n/tests.rs
  • crates/ui-egui/src/icons.rs
  • crates/ui-egui/src/icons/draw.rs
  • crates/ui-egui/src/lib.rs
  • crates/ui-egui/src/menus.rs
  • crates/ui-egui/src/menus/clipboard.rs
  • crates/ui-egui/src/menus/palette.rs
  • crates/ui-egui/src/menus/select_layer.rs
  • crates/ui-egui/src/menus/tree.rs
  • crates/ui-egui/src/open.rs
  • crates/ui-egui/src/panels.rs
  • crates/ui-egui/src/panels/assets_panel.rs
  • crates/ui-egui/src/panels/component_panel.rs
  • crates/ui-egui/src/panels/dev_compare.rs
  • crates/ui-egui/src/panels/dev_mode.rs
  • crates/ui-egui/src/panels/export_panel.rs
  • crates/ui-egui/src/panels/frame_presets.rs
  • crates/ui-egui/src/panels/layers.rs
  • crates/ui-egui/src/panels/layout_panel.rs
  • crates/ui-egui/src/panels/list_drag.rs
  • crates/ui-egui/src/panels/proto_editor.rs
  • crates/ui-egui/src/panels/proto_panel.rs
  • crates/ui-egui/src/panels/right.rs
  • crates/ui-egui/src/panels/right/effects.rs
  • crates/ui-egui/src/panels/right/inspect.rs
  • crates/ui-egui/src/panels/right/menu.rs
  • crates/ui-egui/src/panels/right/paints.rs
  • crates/ui-egui/src/panels/right/stroke.rs
  • crates/ui-egui/src/panels/scale_panel.rs
  • crates/ui-egui/src/panels/section_panel.rs
  • crates/ui-egui/src/panels/selection_colors.rs
  • crates/ui-egui/src/panels/shortcuts_panel.rs
  • crates/ui-egui/src/panels/typography.rs
  • crates/ui-egui/src/panels/typography/axes.rs
  • crates/ui-egui/src/panels/typography/fields.rs
  • crates/ui-egui/src/panels/typography/glyphs.rs
  • crates/ui-egui/src/panels/typography/picker.rs
  • crates/ui-egui/src/panels/typography/spacing.rs
  • crates/ui-egui/src/panels/variable_ui.rs
  • crates/ui-egui/src/panels/vector_panel.rs
  • crates/ui-egui/src/panels/versions.rs
  • crates/ui-egui/src/present.rs
  • crates/ui-egui/src/present/actions.rs
  • crates/ui-egui/src/present/behaviour_tests.rs
  • crates/ui-egui/src/present/chrome.rs
  • crates/ui-egui/src/present/delay_tests.rs
  • crates/ui-egui/src/present/device.rs
  • crates/ui-egui/src/present/draw.rs
  • crates/ui-egui/src/present/input.rs
  • crates/ui-egui/src/present/layout.rs
  • crates/ui-egui/src/present/navigate.rs
  • crates/ui-egui/src/present/overlay_anchor_tests.rs
  • crates/ui-egui/src/present/player.rs
  • crates/ui-egui/src/present/scroll.rs
  • crates/ui-egui/src/present/tail_tests.rs
  • crates/ui-egui/src/present/tests.rs
  • crates/ui-egui/src/present/transition.rs
  • crates/ui-egui/src/present/variables_tests.rs
  • crates/ui-egui/src/right.rs
  • crates/ui-egui/src/services.rs
  • crates/ui-egui/src/state.rs
  • crates/ui-egui/src/typography.rs
  • crates/ui-egui/src/widgets.rs
  • crates/ui-egui/src/widgets/board_picker.rs
  • crates/ui-egui/src/widgets/colorpicker.rs
  • crates/ui-egui/src/widgets/field_math.rs
  • crates/ui-egui/src/widgets/font_preview.rs
  • crates/ui-egui/src/widgets/style_picker.rs
  • crates/ui-egui/src/widgets/style_picker/tests.rs
  • docs/boards-parity.md
  • docs/collab-protocol.md
  • docs/components-parity.md
  • docs/egui-037-migration-plan.md
  • docs/gaps.md
  • docs/mcp.md
  • docs/prototyping-parity.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@aiongg
aiongg merged commit 43af145 into storytold:main Oct 27, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants