Commit Graph
663 Commits
Author SHA1 Message Date
zydvc26s67-webandCopilot App bfcd6ef71f Style delete: redirect every reference, validate name and replacement
delete_para and delete_char previously reassigned only the story text
runs/paragraphs using the deleted style, leaving other styles' Based
On, paragraph styles' nested/nested-line/GREP style refs, the drop cap
style, and the footnote reference style pointed at a name that no
longer exists.

Extract redirect_style_refs() from rename_style() (everything it does
except updating the registry entry's own name) and reuse it from both
delete commands, so deleting a style now redirects every reference
type to the replacement style before removing the registry entry.
Also teach rename_char_refs() about drop_cap_style, which it missed
even for renames.

Add validation: name must be non-empty and refer to an existing
style, and replaceWith (if given) must refer to an existing style and
can't be the style being deleted.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-14 11:33:35 -07:00
zydvc26s67-web 7c5b248dfc Merge remote-tracking branch 'origin/main' into pr171-fix 2026-10-14 11:11:42 -07:00
zydvc26s67-web 117429085b Merge remote-tracking branch 'origin/main' into zydvc26s67-web-paragraph-styles-save-delete
# Conflicts:
#	crates/engine/src/tests.rs
#	crates/ui-egui/src/dialogs.rs
2026-10-14 10:12:29 -07:00
Brandon ThomasandClaude Opus 5.5 d07cbbe94c Merge PR #859 (with main's 255-click limit kept inside its event budget)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:58:52 -04:00
Brandon Thomas 0df9238c73 Merge PR #850 2026-10-14 12:56:09 -04:00
Brandon ThomasandClaude Opus 5.5 23ac4ce3f1 fix: integrate batched community PRs (#845's Find scope test uses the Page tool's double-click from #862)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:51:12 -04:00
Brandon Thomas 4f193834bd Merge PR #870 (with #869) 2026-10-14 12:40:07 -04:00
Brandon Thomas 50a6b60072 Merge PR #868 2026-10-14 12:39:59 -04:00
Brandon Thomas c8a8a1868d Merge PR #867 2026-10-14 12:39:59 -04:00
Brandon Thomas b8d975b094 Merge PR #866 2026-10-14 12:39:59 -04:00
Brandon Thomas 23aeddb354 Merge PR #864 2026-10-14 12:39:58 -04:00
Brandon Thomas c1a1970168 Merge PR #862 2026-10-14 12:39:58 -04:00
Brandon Thomas a6e7e2a0c7 Merge PR #838 2026-10-14 12:39:58 -04:00
Brandon Thomas e8a3cda237 Merge PR #836 2026-10-14 12:39:58 -04:00
Brandon Thomas d67fb28456 Merge PR #840 2026-10-14 12:39:58 -04:00
Brandon Thomas 6ceb57d4f5 Merge PR #845 2026-10-14 12:39:58 -04:00
Brandon Thomas 24e86db864 Merge PR #855 2026-10-14 12:39:58 -04:00
Brandon ThomasandClaude Opus 5.5 11a51d5b66 Release 0.8.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.8.0
2026-10-14 09:06:57 -04:00
sanyamsingh001andCodex 44485e08da Merge tested main 0f4f382b0e into PR #845
Preserve the reviewed PR behavior and tested upstream base.

Co-Authored-By: Codex <codex@openai.com>
2026-10-14 19:33:57 +10:00
moppeeerandClaude Opus 5.5 23e1680e7d feat(ui): Swatches panel header like InDesign's; swatches go to the fill or stroke in front
LYH Studio episode 6 colours the "1969" headline (8:28) and the loop's
stroke (9:15) from the Swatches panel, whose header holds InDesign's
Fill/Stroke proxy, Formatting Affects Container/Text and the Tint field.

- Header: a Fill/Stroke proxy showing the colours of what colour edits
  apply to (panels::color_target; a click brings the other to the front,
  as X does), the container/text buttons (app.formattingAffectsText) and
  the tint of the colour in front.
- The Tint field sends only the tint, so each selected object (or run of
  text) keeps its own swatch: object.fill takes a tint without a swatch,
  and a stroke tint alone doesn't give a stroke-less object a stroke.
- Clicking a swatch applies it to the fill or stroke in front
  (panels::apply_swatch, to the text when colours affect text); that row
  is highlighted.
- Bottom row: New Color Group, New Swatch, Delete Swatch (the swatch last
  clicked). Rows and the proxy are named for accessibility (and tests).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:27:38 +02:00
aiongg 1758642a96 Integration: #870 the page menu always offers Delete Page for the clicked page, Delete Spread separately for multi-page spreads
(cherry picked from commit 9912a386a8)
2026-10-14 09:43:18 +02:00
moppeeer 02ddeb86da Merge branch 'codex/pages-panel-duplicate' into codex/pages-panel-menu 2026-10-14 09:43:10 +02:00
aiongg f4efb7cc5c Integration: #869 Alt-drag copies a page in one command and one undo step (layout.pages.duplicateSpread takes to)
(cherry picked from commit 7889b25a37)
2026-10-14 09:43:06 +02:00
moppeeer 15fccae6b8 Merge remote-tracking branch 'origin/main' into codex/pages-panel-duplicate
# Conflicts:
#	crates/engine/src/tests.rs
2026-10-14 09:39:45 +02:00
moppeeer 2a9e29f6ff Merge branch 'codex/page-tool-control-panel' into codex/liquid-object-pins
# Conflicts:
#	crates/engine/src/tests.rs
2026-10-14 09:39:24 +02:00
moppeeer 70a50e70b9 Merge branch 'codex/page-tool-control-panel' into codex/liquid-layout-panel 2026-10-14 09:38:32 +02:00
aiongg 7d601b5903 Integration: #864 drops the Controlled by Parent rule from the menus and the Objects Move with Page checkbox (neither has an effect yet)
(cherry picked from commit 47b51d6377)
2026-10-14 09:38:25 +02:00
moppeeer 3f1eb00bb3 Merge branch 'codex/page-tool' into codex/page-tool-control-panel
# Conflicts:
#	crates/engine/src/tests.rs
2026-10-14 09:38:16 +02:00
moppeeer 65dbf3c3a2 Merge remote-tracking branch 'origin/main' into codex/page-tool
# Conflicts:
#	crates/engine/src/tests.rs
2026-10-14 09:37:32 +02:00
aiongg 87682c3674 Integration: #836 a grey stop beside a CMYK stop exports as the K ink, keeping the PDF shading in DeviceCMYK
(cherry picked from commit f28456d9d3)
2026-10-14 09:18:00 +02:00
moppeeer 16d8027d89 Merge remote-tracking branch 'origin/main' into codex/page-tool-liquid-guides 2026-10-14 09:13:24 +02:00
moppeeer 25dadce9c8 Merge remote-tracking branch 'origin/main' into codex/fitting-shortcuts 2026-10-14 09:13:08 +02:00
moppeeer ed6bcae877 Merge remote-tracking branch 'origin/main' into codex/gradient-cmyk-blend 2026-10-14 09:12:51 +02:00
Brandon Thomas 43a46c04bf Merge PR #843 2026-10-14 01:54:43 -04:00
Brandon Thomas 80663cccfd Merge PR #846 2026-10-14 01:54:43 -04:00
Brandon Thomas b30b67dae3 Merge PR #834 2026-10-14 01:54:42 -04:00
Brandon Thomas 0421455b22 Merge PR #854 2026-10-14 01:54:41 -04:00
Brandon Thomas 9dc2068580 Merge PR #857 2026-10-14 01:54:41 -04:00
Brandon Thomas 21472519c0 Merge PR #858 2026-10-14 01:54:40 -04:00
Brandon Thomas c1ce6f77bf Merge PR #860 2026-10-14 01:54:39 -04:00
Brandon Thomas af6992dc65 Merge PR #837 2026-10-14 01:54:39 -04:00
Brandon Thomas 986c5487e9 Merge PR #849 2026-10-14 01:54:38 -04:00
Brandon Thomas d34384574c Merge PR #853 2026-10-14 01:54:37 -04:00
Brandon Thomas d83184f8b3 Merge PR #863 2026-10-14 01:54:37 -04:00
LabDennis ff5d866ff3 chore(sync): merge upstream main into PR #854 2026-10-14 06:51:45 +02:00
zydvc26s67-web 0a0a6ce5dd Merge remote-tracking branch 'origin/main' into zydvc26s67-web-paragraph-styles-save-delete
# Conflicts:
#	crates/engine/src/tests.rs
2026-10-13 20:58:27 -07:00
0f4f382b0e feat(text): improve editing, snapping, and threading
Add multi-click text selection, pending caret formatting and clipboard support, text-aware colour controls, guide/grid snapping, and frame threading with loaded-port interactions.

Include the layout, drop-cap and IDML updates carried from #83, with safeguards for generated and linked stories, external text references, local IDs, locked frames and atomic colour edits.

Fixes #23.

Co-authored-by: Sean Hammond <sean.hammond@und.edu>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:41:46 -06:00
moppeeerandClaude Opus 5.5 8156e575bc feat(ui): Pages panel menu in InDesign's order
The Pages panel menu in Chris Cicchino's "Adobe InDesign – Page Tool
and Liquid Layout" (0:47) reads: Insert Pages…, Move Pages…, Duplicate
Spread, Duplicate Spread at End of Document, Delete Spread, … New
Parent…, Apply Parent to Pages…, Override All Parent Page Items, Parent
Pages ▸, Create Alternate Layout…, Numbering & Section Options…, Allow
Selected Spread to Shuffle. DesignCraft's menu (and the page thumbnails'
context menu) had Insert Page After, Delete Page, Duplicate Spread, Add
to Previous Spread, Allow Spread to Shuffle and the parent items in
another order.

- Pages panel menu and page context menu in InDesign's order and labels:
  Insert Pages… and Move Pages… open their dialogs for the page; Delete
  Spread for a spread of several pages; Parent Pages ▸ holds Remove All
  Local Overrides and Detach All Objects from Parent; Create Alternate
  Layout… and Numbering & Section Options… open theirs. Add to Previous
  Spread stays last (InDesign drags pages into spreads instead).
- Translations (pt-BR gains the existing items it lacked).

Builds on #869 (Duplicate Spread at End of Document).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 02:15:27 +02:00
moppeeerandClaude Opus 5.5 3939b825d3 feat(ui): Pages panel duplicates pages by Alt-drag and the New Page button; Edit page size
Chris Cicchino's "Adobe InDesign – Page Tool and Liquid Layout" (0:42,
2:06) holds Option and drags a page in the Pages panel to copy it,
drags a page onto the New Page button to duplicate it ("click and drag
onto my plus sign I can duplicate that"), and resizes pages; InDesign's
panel also has an Edit page size button. DesignCraft's panel only moved
pages on drag, had no Edit page size button, and duplicating a page gave
the copy the size of the page before it (not its own) without its
liquid rule or guides. A page of its own size also drew its thumbnail
at the document's scale, over the panel's footer.

- Pages panel: Alt-drag copies the page to where it's dropped; a page
  dropped on Create new page is duplicated at the end of the document;
  Edit page size lists the presets (in the page's orientation) and
  Custom Page Size…; InDesign's tooltips (Create new page, Delete
  selected pages).
- Thumbnails share one scale (the document's page size, smaller when a
  taller page would pass 1.8 times the usual height); rows fit their
  spread's tallest page.
- engine: layout.pages.duplicateSpread copies the pages' size, margins,
  columns, guides and liquid rule, takes `atEnd`, and returns the copy's
  first page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 02:02:16 +02:00
moppeeerandClaude Opus 5.5 db19963bad feat(ui): the Page tool draws liquid guides from the rulers
Chris Cicchino's "Adobe InDesign – Page Tool and Liquid Layout" (11:00–
13:30) drags guides out of the rulers with the Page tool on a
guide-based page: "these guides are a little bit different... they are a
dashed line, a cyan dashed line" - liquid guides, which let the objects
they cross stretch with the page. DesignCraft drew liquid guides dashed
and applied them, but a guide could only become liquid through the
Liquid Layout panel's list: ruler drags always made ruler guides.

- canvas: with the Page tool, a page guide dragged from a ruler is a
  liquid guide; its preview is dashed while it's dragged.
- engine: guide.add takes `liquid`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 01:37:30 +02:00