Commit Graph
4827 Commits
Author SHA1 Message Date
Gert Pellin 1ad6dd8e39 EPUB chapters: point in-document links at the chapter file of their target
After the split an href="#id" whose target ended up in another chapter
file is dead; endnotes (#798) end the book, so their #en-N / #enref-N
links cross files. Rewrite such links to file#id from the id-to-file
map, as in aiongg's integration branch (#259, 0b353c6f). The test calls
the rewrite directly, since note export comes with #798.
2026-10-14 11:02:52 +02:00
moppeeerandClaude Opus 5.5 0c8d5e96df Merge origin/main into codex/content-handles
Main moved double-click handling to the second press (click_count 2, from the mouse or the control channel); the frame/content toggle now sits there too, before main's text-frame edit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:58:30 +02:00
Gert Pellin 8f0a88f628 Merge branch 'fix/769-epub-nav-headings' into fix/768-epub-chapters
# Conflicts:
#	crates/epub/src/lib.rs
2026-10-14 10:56:59 +02:00
Gert Pellin b6a62dbd99 EPUB nav: keep a heading under its parent when it is shallower than the one before it
Headings h1, h3, h2 put the h2 at the top level: the loop closed every
level deeper than the new entry. Close a level only while its parent is
as deep as the new entry or deeper, as in aiongg's integration branch
(#259, bc9b89fc), with both nesting cases as tests.
2026-10-14 10:56:27 +02:00
moppeeerandClaude Opus 5.5 aaa9981867 Merge origin/main into codex/paste-svg-paths
Main now keeps Edit › Paste available and reads the system clipboard's
text itself (#518: other apps' text pastes as a text frame), and has its
own view_centre. On top of that:

- SVG markup from the system clipboard, by the paste keys or a menu,
  goes to edit.pasteSvg in DesignApp::run (with no insertion point), so
  it becomes paths rather than a text frame of markup; typing, it is
  text as before.
- The branch's request_system_paste / RequestPaste path and its own
  view_centre are gone: main's clipboard reading replaces them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:54:33 +02:00
moppeeerandClaude Opus 5.5 64c99b18d5 Merge origin/main into codex/handle-double-click-fit
Main moved double-click handling to the second press (click_count 2, from the mouse or the control channel); the handle double-click that fits the frame now sits there too, before main's text-frame edit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:43:58 +02:00
moppeeer f4dffb061d Merge remote-tracking branch 'origin/main' into codex/new-document-dialog
# Conflicts:
#	crates/ui-egui/src/dialogs.rs
2026-10-14 10:40:14 +02:00
moppeeer eda4f671b7 Merge remote-tracking branch 'origin/main' into codex/windows-integrated-titlebar
# Conflicts:
#	crates/ui-egui/src/lib.rs
2026-10-14 10:39:40 +02:00
a2c0cb79ce A radial gradient on a box with no width or height is a circle across it
Review fix from aiongg (6db40bdb, the radial_ellipse part), ported to this
branch: a straight line's box has no ellipse, so its stroke's radial
gradient showed only the last stop once #823's gradient strokes land.

Co-authored-by: aiongg <aiongtaigi@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:39:03 +02:00
f69601b0ff A linear gradient across a straight line runs along its length, on screen and in PDF alike
Review fix from aiongg (72d7ea2e, with the line tests of 6db40bdb), ported
to this branch: Fill::linear_axis gives screen and PDF one gradient axis,
and a box with no extent along the gradient's angle takes its longer side.

Co-authored-by: aiongg <aiongtaigi@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:36:45 +02:00
moppeeer 5f00aa7bb3 Merge remote-tracking branch 'origin/main' into codex/gradient-strokes
# Conflicts:
#	crates/engine/src/cmd/style.rs
#	crates/idml/src/tests.rs
2026-10-14 10:33:30 +02:00
moppeeer 52e0aaa2d6 Merge remote-tracking branch 'origin/main' into codex/radial-gradient-ellipse
# Conflicts:
#	crates/engine/src/cmd/style.rs
2026-10-14 10:32:47 +02:00
aiongg 67b61c5b8b Integration: #763 New Swatch with nothing selected makes a colour swatch in the engine; the panel sends the Fill/Stroke target
(cherry picked from commit aad9db158f)
2026-10-14 10:32:16 +02:00
moppeeer cb0a952657 Merge remote-tracking branch 'origin/main' into codex/new-gradient-swatch
# Conflicts:
#	crates/engine/src/cmd/style.rs
2026-10-14 10:32:16 +02:00
264c4e63ae Fixed Width columns resize the frame to fit them; columnWidth and firstBaselineMin are range-checked
Review fix from aiongg (977b4b26), ported to this branch: the frame's
width becomes columns × column width + gutters + left/right insets.

Co-authored-by: aiongg <aiongtaigi@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:31:27 +02:00
moppeeer cb90de8f80 Merge remote-tracking branch 'origin/main' into codex/text-frame-options-layout
# Conflicts:
#	crates/engine/src/cmd/object.rs
2026-10-14 10:31:27 +02: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
Andres TorresiandClaude Haiku 5.5 fbfc1dca76 feat(ui): the Typography panel has its own OT icon in the dock
The icon column's Typography entry reused the Character icon. It now uses an
"OT" glyph (panel-typography), and a test checks it is neither the placeholder
nor the Character icon.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-14 08:46:28 +01:00
Andres TorresiandClaude Haiku 5.5 be98657a22 feat(text): Typography panel lists and sets the OpenType features of the selection
A Typography panel (Window ▸ Show Panel, and the icon column) lists the
features of the selected text's fonts, merged over those fonts, grouped as
Ligatures, Alternates, Stylistic Sets (named by the font), Figure Style,
Figure Width, Figure Position and Capitals. A section or choice appears only
when a font offers it.

Each feature is a checkbox: checked when all of the selection has it, a dash
when only some of it does, empty when none does. A feature only some of the
selection's fonts offer is italic. Mutually exclusive choices are checkboxes
too, and choosing one turns the others off.

type.openTypeFeatures reports each feature's applied and available state over
the selection. type.feature turns features on or off across the selection,
keeping each run's other features. The fonts crate reads GSUB and GPOS
feature lists and stylistic set names.

The Character panel's OpenType menu is now a button that opens or focuses the
Typography panel.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-14 08:46:28 +01: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
moppeeerandClaude Opus 5.5 678de9462d Gradient stops: parse_color reads the {model, …} form the panel now sends, and still takes {gray: 0–100}
Follow-up to aiongg's ba95ae2d on this branch, where main's parse_color has neither form.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:36:12 +02:00
moppeeerandClaude Opus 5.5 bf22391581 Gradient text test: make the cell's gradient swatch with object.gradient (swatch.create's gradient form is #763's)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:33:07 +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
aiongg 121d2a37c0 Integration: #826 grey stops keep their value (model form); a stale ramp drag can't index past the stops
(cherry picked from commit ba95ae2dae)
2026-10-14 09:18:00 +02:00
aiongg 57c997634f Integration: #825 PDF table-cell and footnote text lays a gradient across its own lines, as on screen
(cherry picked from commit 14e98419ad)
2026-10-14 09:18:00 +02:00
aiongg 06ed9bb4f5 Integration: #588 CMYK ink passes cull items to the area they cover
(cherry picked from commit b3551e3ce6)
2026-10-14 09:15:54 +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
moppeeer f6cbcac5ed Merge remote-tracking branch 'origin/main' into codex/essentials-classic-workspace 2026-10-14 09:12:35 +02:00
moppeeer 25fb0c7f87 Merge remote-tracking branch 'origin/main' into codex/gradient-panel-layout 2026-10-14 09:12:19 +02:00
moppeeer 1faaebef25 Merge remote-tracking branch 'origin/main' into codex/gradient-text 2026-10-14 09:12:03 +02:00
moppeeer 2a293c1b3a Merge remote-tracking branch 'origin/main' into codex/wrap-panel-offsets 2026-10-14 09:11:16 +02:00
moppeeer 6f3f32a445 Merge remote-tracking branch 'origin/main' into codex/effects-on-pasted-into 2026-10-14 09:10:42 +02:00
moppeeer 7f1d9f2b2e Merge remote-tracking branch 'origin/main' into codex/copy-placed-graphic 2026-10-14 09:10:24 +02:00
moppeeer fb11ea99cb Merge remote-tracking branch 'origin/main' into codex/ungroup-real-groups 2026-10-14 09:10:07 +02:00
moppeeer 69f77874e7 Merge remote-tracking branch 'origin/main' into codex/outlines-per-line 2026-10-14 09:09:16 +02:00
skylar taylor-barrick c68cb357e9 fix(pdf): preserve writer integration with main (PDFW)
Retain the PDF writer adoption and upstream text-threading changes. Keep both roadmap entries and use the accepted-socket fixture comment from main.
2026-10-14 00:18:33 -06: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