Preserve linked story parents when duplicating a layer

This commit is contained in:
dotCooCoo committed 2026-10-27 07:57:36 -07:00
commit bb897ba4ea
262 files changed
+83030 -82116

No files matched your search

+1 -1
View File
@@ -54,7 +54,7 @@ code points in the text. Threading is the story's ordered frame list.
Every user-visible action is a `CommandSpec` (`id`, `label`, menu path, shortcut, parameter
doc, `enabled`, `run`, journaled, undoable) in `crates/engine/src/cmd/*`. The UI, the CLI, MCP
and the control channel all call `Session::execute(id, params)`. UI-only commands (windows,
panels, zoom, dialogs) are `UI_COMMANDS` in `crates/ui-egui/src/menus.rs`, reachable the same way.
panels, zoom, dialogs) are `UI_COMMANDS` in `crates/ui-egui/src/menus/ui_commands.rs`, reachable the same way.
Tool gestures emit Begin/Preview/Commit commands so a drag is one undo step. Every journaled
command is replayable as a script. Escaped panics during a command or an import/export become an
error (`engine/src/guard.rs`), never a lost document; native recovery is written periodically
+4 -3
View File
@@ -166,8 +166,9 @@ to icons and `dockExpanded:true` expands the outer column. Activating a floating
raises its group. These operations change only UI layout.
Clicking an icon in an iconic column opens its group as a flyout beside the column, on the
canvas side; clicking the icon again closes it. With Auto-Collapse Iconic Panels on (the
default; a column bar's menu toggles it), Escape or a click outside the flyout closes it too.
canvas side; clicking the icon again, or another icon, closes it. With Auto-Collapse Iconic
Panels on (off by default; a column bar's menu toggles it), Escape or a click outside the flyout
closes it too.
`ui.docking` returns the panel layout in use; `ui.inspect` includes the same object as
`docking`:
@@ -181,7 +182,7 @@ default; a column bar's menu toggles it), Escape or a click outside the flyout c
{"groups": [{"panels": ["stroke"], "active": 0}, …], "width": 260.0, "iconic": true,
"iconic_width": 37.0}]}}}},
"floating": []},
"customized": false, "focused": "canvas", "flyout": null, "autoCollapse": true,
"customized": false, "focused": "canvas", "flyout": null, "autoCollapse": false,
"rightToLeft": false, "hidden": [],
"hitRects": [{"hit": {"Tab": "properties"}, "rect": [983.0, 0.0, 74.0, 27.0]},
{"hit": {"DragBar": "properties"}, "rect": [1190.0, 0.0, 56.0, 27.0]},
+1 -1
View File
@@ -10,7 +10,7 @@ Script-specific typesetting detail: [cjk.md](cjk.md), [cjk-typography.md](cjk-ty
## How it was measured
Interface strings live in `crates/ui-egui/src/i18n.rs` (a shared table with German, French,
Interface strings live in `crates/ui-egui/src/i18n/table.rs` (a shared table with German, French,
Spanish, Japanese and Simplified Chinese columns) and `crates/ui-egui/src/i18n/{ar,cs,it,ja,ka,pt_br,uk}.rs`.
Untranslated strings fall back to English. A script (2026-10-10) built the set of English
interface strings as the union of every catalog's keys, every engine command label and every
+2 -2
View File
@@ -16,7 +16,7 @@ basics of editing fail for too many users on Windows and Linux.
| What | Value | How |
|---|---|---|
| InDesign 21.6 menu items matched (in scope) | 331 / 482 (69%) | script over the running app's menu dump; see target-app-parity.md |
| Menu bar | 9 menus, 49 submenus, 340 items | `MENUS` in `crates/ui-egui/src/menus.rs` |
| Menu bar | 9 menus, 49 submenus, 340 items | `MENUS` in `crates/ui-egui/src/menus/tables.rs` |
| Commands | 446 engine (188 in menus) + 99 UI | `crates/engine/src/cmd/*`, `UI_COMMANDS` |
| Theme colours | measured hex values of Medium Dark, 4 brightness themes + High Contrast | `theme::Tokens` vs `11-observed-ui.md` §1 |
@@ -35,7 +35,7 @@ basics of editing fail for too many users on Windows and Linux.
| Overset mark (red + at the out port) | selected frame only | every overset frame, groups included, while frame edges show | ✓ | a deliberate step past InDesign: grouped labels that overflow were invisible until Preflight |
| Smart guides, snapping to guides/grid/baseline | ✓ | ✓ (2,049-line `snap.rs`) | ~ | vertical smart spacing between two rectangles (#188) |
| Nudging with arrows, Shift ×10 | ✓ | ✓ | ✓ | |
| Document views: scrollbars (each split pane), Hand tool by Space, middle drag, or Alt while editing text | ✓ | ✓ | ✓ | `canvas.rs` `scrollbar_tests` |
| Document views: scrollbars (each split pane), Hand tool by Space, middle drag, or Alt while editing text | ✓ | ✓ | ✓ | `canvas/scroll.rs` `scrollbar_tests` |
| Gridify while drawing, Gap tool, Live Distribute | ✓ | ✓ | ✓ | |
| Type tool: caret, selection, double/triple click, drag-and-drop text | ✓ | ✓ | ~ | formatting at a caret discarded (#289); text editing complaints (#23, #174) |
| Threading: click out port, load text cursor, click frame | ✓ | ✗ ports drawn only; no thread/unthread command; Primary Text Frame and autoflow on Place | ✗ | **alpha blocker** (#352, #194, #165, #140) |