76 Commits
Author SHA1 Message Date
Brandon Thomas ab96d42696 Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	docs/ui-parity.md
2026-11-02 23:24:47 -05:00
Trevor BrownandClaude Fable 5.1 5de0a0b806 M3: variables.define refuses a text that is neither a string, a number nor a boolean (#2093)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-02 04:13:40 -05:00
Trevor BrownandClaude Fable 5.1 93999750aa M4: the Pen previews the segment a dragged smooth point shapes and curves the rubber band after one (#1438)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-02 03:19:46 -05:00
Trevor BrownandClaude Fable 5.1 485a94673f M3: a Custom text variable defined with a number shows its digits (#2093)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-02 02:40:43 -05:00
aiongg 4b29760ffd Merge track 6
Conflicts: dialogs.rs dialog widths (both kept); i18n/*.rs adjacent rows (both kept).
2026-10-30 23:57:22 +00:00
aiongg 35697cb807 Merge PR #1255: TOC separator and style notation
crates/idml/src/tests.rs: kept the PR's TOC tests, dropped the duplicate copy from #1249
crates/engine/src/tests/idml.rs: main's createBookmarks plus the PR's right-indent separator
crates/ui-egui/src/dialogs.rs: main's labelled_by fields plus the PR's special-character menu
crates/ui-egui/src/i18n/*.rs: kept both added rows
2026-10-30 23:26:42 +00:00
aiongg 58819833a7 Merge PR #1287: section marker activation
crates/ui-egui/src/panels/pages.rs: kept #1287's marker activation and tests; spread label code from #892 (main).
2026-10-30 23:24:25 +00:00
aiongg 14eb9f0be6 Integration: #1285/#1286 ui-parity: TOC dialog notes in the body, revision-history row, header 2026-10-30 21:25:23 +00:00
aiongg e8e80ce22c Merge PR #1285: TOC: keep the title field readable beside its style selector
crates/ui-egui/src/dialogs.rs: TOC title row by hand: the reserved-width title field (#1285) with its accessible name, and the style selector keeping the label-id name argument
crates/ui-egui/src/dialogs/tests.rs: kept HEAD, applied #1285's 450->360 viewport edits in 3 tests, appended its new test
2026-10-30 19:46:44 +00:00
moppeeer 94dad76ac1 Merge remote-tracking branch 'origin/main' into codex/toc-right-indent-separator
# Conflicts:
#	crates/idml/src/import.rs
#	crates/ui-egui/src/dialogs.rs
#	crates/ui-egui/src/i18n.rs
2026-10-29 11:44:26 +01:00
moppeeer f93bc980d6 Merge remote-tracking branch 'origin/main' into codex/toc-dialog-title-width
# Conflicts:
#	crates/ui-egui/src/dialogs.rs
2026-10-29 11:44:18 +01:00
moppeeer 5bd339d28f Merge remote-tracking branch 'origin/main' into codex/toc-more-options
# Conflicts:
#	crates/ui-egui/src/dialogs.rs
#	crates/ui-egui/src/i18n.rs
2026-10-29 11:44:15 +01:00
moppeeer 6f6ddb3272 Merge remote-tracking branch 'origin/main' into codex/pages-section-marker-dialog
# Conflicts:
#	crates/ui-egui/src/panels/pages.rs
2026-10-29 11:44:10 +01:00
dotCooCoo 17247c929e Merge main into feat/story-editor-depth-ruler
Move the depth ruler state, translations, and menu command into the split UI modules.
2026-10-26 21:02:19 -07:00
aiongg 96295e3f58 refactor(ui-egui): split menus.rs into menus/ 2026-10-26 21:00:23 +00:00
dotCooCoo af46697a88 Merge branch 'main' into feat/story-editor-depth-ruler
# Conflicts:
#	ROADMAP.md
2026-10-26 11:57:12 -07:00
aiongg 073ac98694 Merge upstream main into keymap-adoption; pin craft-libs to main e3b9e239
Main's shortcut dispatch (shortcut_key, used for keys forwarded from floating panel windows)
becomes the keymap's: shortcuts and forwarded_shortcuts both take their presses through the
key dispatcher and run them once the input is released. craft-keymap comes from
storytold/craft-libs, ForeignSet is built through its constructor, and the panel shortcut test
asks the docking layout which panel shows.
2026-10-25 19:36:33 +00:00
moppeeer 1bd9b2770c Merge remote-tracking branch 'origin/main' into codex/toc-right-indent-separator
# Conflicts:
#	crates/ui-egui/src/dialogs.rs
2026-10-25 19:21:26 +01:00
moppeeer 182d0e5c15 Merge remote-tracking branch 'origin/main' into codex/toc-more-options 2026-10-25 17:22:06 +01:00
dotCooCoo 5c103c280e Story Editor: a depth ruler beside the text, and View › Story Editor › Show/Hide Depth Ruler, as in InDesign
The Story Editor has a vertical depth ruler between the style column
and the text. It is marked in the document's vertical ruler units with
how deep the story's text fills its frames, counted through its
columns and threaded frames, and it is shaded down to the overset
point. Paragraph spacing adds to the depth. Lines set side by side, in
the sub-columns of a split paragraph or on both sides of a wrap
object, count once. Where several marks fall on one editor row, only
the deepest is drawn. A red line crosses the text, and the ruler when
it shows, above the first character that does not fit.

View › Story Editor › Show/Hide Depth Ruler (view.storyEditorDepthRuler)
shows or hides the ruler in the Story Editor, for every story opened in
it. The ruler is shown by default, and the setting is saved with the
preferences.
2026-10-24 15:50:10 -07:00
aiongg 5def4a8c01 Story Optical Margin Alignment with a size, and Ignore Optical Margin (Story panel, engine and IDML) (#1705)
* Type: story Optical Margin Alignment with a size, and Ignore Optical Margin (engine, IDML)

A story's Optical Margin Alignment applies to every paragraph except those
with Ignore Optical Margin; hang amounts scale with the story's size.
story.options sets it, type.para and paragraph styles take
ignoreOpticalMargin. IDML imports and exports StoryPreference
OpticalMarginAlignment/OpticalMarginSize and IgnoreEdgeAlignment. The
per-paragraph opticalMargin switch keeps hanging at the text's own size.

Part of #947.

* Type: the Story panel, and Ignore Optical Margin in the Paragraph panel menu and Paragraph Style Options

Window > Type & Tables > Story sets Optical Margin Alignment and its size
for the stories of the text selection or the selected text frames through
story.options, and is disabled without either. type.selectionAttrs
reports the stories' values as storyOptions, null where they differ.
The Paragraph panel menu toggles ignoreOpticalMargin, and Paragraph Style
Options > Indents and Spacing has an Ignore Optical Margin checkbox.

Part of #947.

* ROADMAP: the story Optical Margin Alignment entry names its default and scope
2026-10-24 10:08:40 -04:00
moppeeer 39bf3da8a4 Merge remote-tracking branch 'origin/main' into codex/toc-right-indent-separator
# Conflicts:
#	ROADMAP.md
#	docs/ui-parity.md
2026-10-24 14:19:44 +02:00
moppeeer 8da257ff83 Merge remote-tracking branch 'origin/main' into codex/toc-dialog-title-width
# Conflicts:
#	ROADMAP.md
#	docs/ui-parity.md
2026-10-24 14:19:43 +02:00
moppeeer ddb83321d3 Merge remote-tracking branch 'origin/main' into codex/toc-more-options
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:41 +02:00
moppeeer bd03c931dd Merge remote-tracking branch 'origin/main' into codex/pages-section-marker-dialog
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:40 +02:00
moppeeer 74ed763507 Merge remote-tracking branch 'origin/main' into codex/toc-right-indent-separator
# Conflicts:
#	crates/idml/src/tests.rs
2026-10-24 00:21:11 +02:00
moppeeer c427640726 Merge remote-tracking branch 'origin/main' into control-panel-lists-shading
# Conflicts:
#	crates/ui-egui/src/i18n/fr.rs
2026-10-22 16:53:56 +02:00
aiongg 8f98f3dc8b Keyboard Shortcuts: import an InDesign shortcut set (#1296)
* #1180: import an InDesign keyboard shortcut set

Edit > Keyboard Shortcuts gets Import InDesign Set..., which reads the
.txt that InDesign's Show Set writes (window.importShortcuts {path|text}).
Matched commands take the set's Default shortcut, or lose theirs when
every occurrence says [none defined]; other commands give up keys the
set takes. The report lists changes, cleared conflicts, and the items
that could not be matched or read. Tool keys stay fixed.

* #1180: read the set file through the checked reader

* #1180: when two items want the same keys, the later one takes them
2026-10-22 09:28:11 -04:00
paaspaas00andClaude Opus 5.5 2c1973a6e4 Control panel (¶): Bulleted and Numbered List, Shading and Border, as InDesign's
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 16:16:25 +02:00
paaspaas00 b768ea789e Merge properties-more-options into control-panel-text-modes 2026-10-21 14:33:32 +02:00
paaspaas00andClaude Opus 5.5 13527f9cb7 Control panel fields: Escape reverts any typed value; parity docs for the text modes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 13:15:51 +02:00
paaspaas00andClaude Opus 5.5 6cb9466129 Docs: the Properties ••• sections in the UI parity checklist
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 11:57:12 +02:00
aiongg e50d5983e1 keymap: parity row lists what the importer still can't apply 2026-10-19 04:41:50 +00:00
aiongg 8383d828ad keymap: DesignCraft shortcuts on craft-keymap
The shortcut model, dispatch and storage move onto the shared craft-keymap
crate. The catalogue is built from UI_COMMANDS, the engine command specs,
the panels (window.panel {panel}) and the tools (tool.select {tool}, one
group per Tools-panel group), with menu paths from the menu tree.

- Dispatch goes through craft_keymap::egui::Dispatcher; presentation keys,
  Esc-to-selection, Clear and the native-menu skip stay app-side, and the
  clipboard events stay with the canvas.
- Panels take InDesign's default keys where DesignCraft leaves them free.
- Tool keys are editable; tools sharing a key take turns.
- ui.json keeps its shortcuts as craft-keymap Overrides; the map form older
  versions saved loads unchanged.
- window.setShortcut accepts params (panels), tool ids and steal; the
  Keyboard Shortcuts dialog lists panels and tools and moves recorded keys.
2026-10-19 04:14:59 +00:00
moppeeer 42903d7bd3 TOC-5: open numbering options from section markers 2026-10-18 23:43:17 +02:00
moppeeer 8cc92a50b6 TOC-6: toggle advanced table of contents options 2026-10-18 23:36:38 +02:00
moppeeer 7308800623 TOC-3: keep the table of contents title readable 2026-10-18 23:29:40 +02:00
moppeeer e8ec23a88d TOC-1: preserve right-indent separators and expose their picker 2026-10-18 15:47:55 +02:00
aiongg 3c862cc20f #1180: import an InDesign keyboard shortcut set
Edit > Keyboard Shortcuts gets Import InDesign Set..., which reads the
.txt that InDesign's Show Set writes (window.importShortcuts {path|text}).
Matched commands take the set's Default shortcut, or lose theirs when
every occurrence says [none defined]; other commands give up keys the
set takes. The report lists changes, cleared conflicts, and the items
that could not be matched or read. Tool keys stay fixed.
2026-10-16 19:53:29 +00:00
aiongg bc5799c046 Merge PR #1036: Overset marks for text frames inside groups
ROADMAP.md: the union merge re-added 13 log lines already present; kept one copy each. The PR's overset line moved into date order and took the group-ports clause; its other two lines describe work from other PRs and were dropped.
docs/ui-parity.md: merged cleanly next to #1033's row.
2026-10-16 04:51:29 +00:00
aiongg 21a6e6d90f Merge branch 'batch-tB' into next-integ
# Conflicts:
#	docs/gaps.md
2026-10-16 04:48:56 +00:00
aiongg 7e539fee8d Integration: #1002 Cmd borrows the last-used selection tool
Holding Cmd/Ctrl with a non-selection tool borrows whichever of Selection and Direct Selection was chosen last, instead of a fixed tool per tool family. The session records the last chosen selection tool; the busy() guard stays.
2026-10-16 04:33:07 +00:00
aiongg 6a22e38b1e Merge PR #1002: Tools: Cmd held with another tool borrows the Selection tool for one gesture
tooling.rs: kept #366's IME handling (with_ctx passes the session; a press ends the composition first) and #1002's borrowed tool, which pointer, key, overlay, cursor and wants_text reach through gesture_tool().
2026-10-16 04:28:48 +00:00
aiongg 70b3ca22a0 Integration: #1063 progress-log lines of #1060-#1065 sit under Newest first; the Typography line ends as usual and the parity doc keeps no done-work paragraph 2026-10-16 04:03:42 +00:00
aiongg 619f9114bd Merge PR #1063: UI: Typography opens with its named panel groups and a clear page
Conflicts:
- docs/ui-parity.md: kept both paragraphs.
2026-10-16 04:03:29 +00:00
aiongg 65cee09c5c Merge PR #1065: Styles: show captured color and spacing in Paragraph Style Settings
Conflicts:
- docs/ui-parity.md: kept both paragraphs.
2026-10-16 04:01:40 +00:00
aiongg 5857f2d31e Merge PR #1062: Styles: preview paragraph and character style edits before applying them
Conflicts:
- crates/ui-egui/src/dialogs.rs: footer row keeps the branch's labels and #683's New Document Preview and adds #1062's style Preview checkbox at its start; kept style_options_preview() next to the branch's paragraph style dialog; kept both sets of tests.
- docs/ui-parity.md: kept both paragraphs; style-dialog Preview is no longer listed as a gap.
2026-10-16 04:00:32 +00:00
aiongg 75875b2e96 Merge PR #1060: Styles: show paragraph overrides and clear them from the row menu
Conflicts:
- crates/engine/src/cmd/text.rs: kept #531's paraMixed report and used #1060's override counts (paraOverrides, charOverrides, characterStyleOverrides) in it.
- crates/ui-egui/src/panels/styles.rs: kept both row-menu items and both sets of tests; #1064's test passes #1060's new `overridden` argument.
- docs/ui-parity.md: kept both paragraphs and both change notes; Redefine Style is no longer listed as a gap (#1064).
2026-10-16 03:59:57 +00:00
aiongg 67d597c416 Merge PR #1064: Styles: redefine paragraph and character styles from local formatting
Conflicts:
- crates/engine/src/cmd/style.rs: both add a test module at the top of the file; kept #1061's application_inheritance_tests and #1064's redefine_tests, one after the other.
- docs/ui-parity.md: kept both paragraphs.
2026-10-16 03:58:09 +00:00
aiongg 6f38f5a7b0 Merge PR #1061: Styles: captured text follows later style edits 2026-10-16 03:57:03 +00:00