Commit Graph
402 Commits
Author SHA1 Message Date
Brandon Thomas 2805b3d041 Merge PR #764
# Conflicts:
#	crates/ui-egui/src/lib.rs
2026-10-14 23:00:55 -04:00
Brandon Thomas d4a65a5ea5 Merge PR #688
# Conflicts:
#	crates/engine/src/cmd/paths.rs
2026-10-14 22:56:29 -04:00
Brandon Thomas af45138718 Merge PR #588
# Conflicts:
#	crates/render/src/lib.rs
2026-10-14 22:54:18 -04:00
Brandon Thomas ee498ac68f Merge PR #973
# Conflicts:
#	crates/ui-egui/src/i18n.rs
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ja.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/uk.rs
#	crates/ui-egui/src/panels/properties.rs
2026-10-14 22:38:58 -04:00
Brandon Thomas 7ed56979c7 Merge PR #977
# Conflicts:
#	crates/compose/src/tests.rs
2026-10-14 22:33:58 -04:00
Brandon Thomas f9b4660ca2 Merge PR #976
# Conflicts:
#	crates/engine/src/tests.rs
2026-10-14 22:33:58 -04:00
Brandon Thomas 2dbf60be6f Merge PR #925
# Conflicts:
#	crates/ui-egui/src/i18n.rs
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ja.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/uk.rs
2026-10-14 22:33:55 -04:00
Brandon Thomas e6d6affb37 Merge PR #796 2026-10-14 22:33:52 -04:00
Brandon Thomas ed3acb0f82 Merge PR #979 2026-10-14 22:05:13 -04:00
Brandon Thomas 35563d0f2f Merge PR #978 2026-10-14 22:05:13 -04:00
Brandon Thomas 8cbef21444 Merge PR #974 2026-10-14 22:05:13 -04:00
Brandon Thomas eb874d41fe Merge PR #968 2026-10-14 22:05:13 -04:00
Brandon Thomas 88fee015ce Merge PR #958 2026-10-14 22:05:13 -04:00
Brandon Thomas cb3fbde5de Merge PR #940 2026-10-14 22:05:12 -04:00
Brandon Thomas 79a5c52e9d Merge PR #933 2026-10-14 22:05:12 -04:00
Brandon Thomas b14b1fd805 Merge PR #913 2026-10-14 22:05:12 -04:00
Brandon Thomas 5839d5c7a4 Merge PR #894 2026-10-14 22:05:12 -04:00
Brandon Thomas f4333338b3 Merge PR #889 2026-10-14 22:05:12 -04:00
Brandon Thomas 9449d6c293 Merge PR #832 2026-10-14 22:05:12 -04:00
Brandon Thomas e6660efb7a Merge PR #801 2026-10-14 22:05:11 -04:00
Brandon Thomas 3adc568fc3 Merge PR #799 2026-10-14 22:05:11 -04:00
Brandon Thomas a593ae07af Merge PR #795 2026-10-14 22:05:11 -04:00
Brandon Thomas a666a9f00a Merge PR #793 2026-10-14 22:05:11 -04:00
Brandon Thomas 4bd1fbab37 Merge PR #765 2026-10-14 22:05:11 -04:00
Brandon Thomas 9f5e8cebf1 Merge PR #760 2026-10-14 22:05:11 -04:00
Brandon Thomas 7b76b28a54 Merge PR #759 2026-10-14 22:05:11 -04:00
Brandon Thomas 650aaf3440 Merge PR #751 2026-10-14 22:05:11 -04:00
Brandon Thomas 02dd8ade8d Merge PR #704 2026-10-14 22:05:11 -04:00
Brandon Thomas ab115db100 Merge PR #703 2026-10-14 22:05:11 -04:00
Brandon Thomas 63c3e36644 Merge PR #698 2026-10-14 22:05:11 -04:00
Brandon Thomas 412ce96ff0 Merge PR #691 2026-10-14 22:05:11 -04:00
Brandon Thomas 8d254120e7 Merge PR #658 2026-10-14 22:05:11 -04:00
Brandon Thomas 3cdda36680 Merge PR #657 2026-10-14 22:05:11 -04:00
Brandon Thomas 4cd3a8fa5e Merge PR #648 2026-10-14 22:05:11 -04:00
Brandon Thomas b379a5f0a5 Merge PR #577 2026-10-14 22:05:10 -04:00
Brandon Thomas 7a9570b56e Merge PR #570 2026-10-14 22:05:10 -04:00
Brandon Thomas 0c3e140be3 Merge PR #567 2026-10-14 22:05:10 -04:00
Brandon Thomas f268e17986 Merge PR #559 2026-10-14 22:05:10 -04:00
skylar taylor-barrick 694e662547 fix(pdf): reconcile shared writer with main (PDFW)
Preserve the shared writer migration while incorporating the pinned main
changes and resolving the roadmap entry.

PR #875.
2026-10-14 18:18:19 -06:00
moppeeerandClaude Opus 5.5 ccf4f4aee4 An empty last paragraph isn't overset text, as in InDesign
A story that ends with a paragraph return has an empty last paragraph. When
it didn't fit, DesignCraft marked the story overset at the end of its text
(Preflight: "Overset text: 0 characters"; the out port turned red).
InDesign doesn't: Montilla Design's Flex Layout file has a caption ending
with a return, fitted to its three lines, and InDesign reports no errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 01:40:50 +02:00
Davit Matchakhelidze 9792aa025e Merge upstream main into ka-language 2026-10-15 03:38:25 +04:00
moppeeerandClaude Opus 5.5 89f6adb6fb Find Font: a style that differs only in spacing isn't missing
Montilla Design's Flex Layout file names its body face "Regular " (with a
trailing space, as the designer's copy of Articulat CF did). Face lookup
already ignores spacing and case, so the text is drawn in Regular, but
font.list (Find Font) compared names exactly and reported the style
missing. It now uses the lookup's comparison (designcraft_fonts::same_style).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 01:25:04 +02:00
moppeeerandClaude Opus 5.5 6fe0770f47 Flex Layout: containers that lay out their objects, as InDesign 2026's
A Flex Layout container is a frame holding its objects as nested items
(as Edit › Paste Into makes), with a `flex` record: direction, wrap,
justification, cross-axis alignment, Fixed/Auto width and height, padding
and horizontal/vertical spacing. designcraft_doc::flex lays the objects
out (a Flexbox subset: lines, justification, alignment, Auto sizing), and
the engine runs it after every edit, so the container keeps its objects
in place whatever changes.

Commands: flex.add (Add to Flex Layout; detects aligned objects: their
direction, Auto size, Space Between at their own spacing, as InDesign
does), flex.convert (a group or rectangle frame), flex.remove (objects
stay, grouped), flex.set (every panel setting, plus the alignment grid
cell), flex.reorder. Resizing a container by its handles or W/H changes
its box and makes that side Fixed instead of scaling its objects;
dragging an object inside one drops it in the nearest place.

UI: Object › Flex Layout (Add to, Convert to, Remove, Show Flex Controls),
a Flex Layout panel (Window › Panels) laid out as InDesign's (Create Flex
Layout; alignment grid, W/H with Auto/Fixed; justification menu, four
directions, wrap; padding with the link button; spacing, greyed as
InDesign does when the justification works it out or nothing wraps), and
the same section in Properties. Icons are new drawings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 01:20:50 +02:00
moppeeerandClaude Opus 5.5 099fbd23ee IDML: import and export ruler guides
Guides in an IDML page (<Guide> children of <Page>) were dropped on import,
and DesignCraft's own guides weren't written. Montilla Design's Flex Layout
file keeps its 16 column guides on the B-Parent page; none came in.

Import: Location is measured from View Preferences › Ruler Origin (the
spread's top left, the page's, or the spine); Orientation, FitToPage (off:
a spread guide), Locked and ItemLayer are kept. Export writes each page's
guides under its <Page> in spread-origin coordinates, which is the ruler
origin DesignCraft writes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:54:34 +02:00
moppeeerandClaude Opus 5.5 d52ef6b6b9 A line is set when its baseline fits in the frame, as in InDesign
InDesign sets a text line when its baseline fits in the frame; the
descenders may hang below the frame's bottom. DesignCraft required the
baseline plus the descent to fit, so a frame sized to a heading's caps
oversets: Zero2Graphic's magazine tutorial draws 2.7682 cm frames for
103 pt headings (control bar, 4:12–5:44), and all three were overset.

The keep-lines IDML fixture's frames are now 236 pt tall, so they hold the
same 19 lines under either rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:18:55 +02:00
Guillem Hermida 939d5676cb Color panel: the Tint field keeps typed text and applies it on Enter or leaving the field
The Tint row's value box was the egui Slider's own DragValue. The panel reads
the tint back from the document every frame, so egui dropped the text being
edited after the first digit (100 -> 6 -> 100 -> 1000, as #945 reports for
the CMYK fields), and a typed tint was never applied because the panel only
applied on the slider's drag_stopped().

The slider keeps applying on release, without its own value box; the value
is a widgets::NumField that buffers text while focused and applies on Enter
or focus loss, clamped to 0-100 %.

Part of #945.
2026-10-14 23:17:18 +02:00
moppeeerandClaude Opus 5.5 d5d8621780 Pathfinder keeps the frontmost object, as InDesign does
InDesign's Pathfinder result takes the attributes (and content) of the
frontmost object, except Subtract, which keeps the backmost. DesignCraft
kept the backmost for every op but Minus Back, so a photo placed over
strips and intersected with them was deleted and the black strips stayed
(Zero2Graphic's magazine tutorial, 7:19).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:22:17 +02:00
moppeeerandClaude Opus 5.5 d3309401f5 Show 100% black as rich black on screen by default, as InDesign does
InDesign's Preferences › Appearance of Black defaults to Display All
Blacks as Rich Black on screen, so [Black] text and strokes look pure
black (RGB 0,0,0), as in Adobe's magazine-layout tutorial. DesignCraft
defaulted to Display All Blacks Accurately (#343334). Settings saved
with an explicit choice keep it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 20:30:21 +02:00
moppeeerandClaude Opus 5.5 11b1566c09 Type tool: a press over a locked empty frame draws a new text frame instead of converting it
Adobe's "Set up a modern magazine layout" (Brian Wood, 2:12–4:23) locks a
page frame drawn round the spread (Cmd+L), then draws the text frames on
top of it with the Type tool. In DesignCraft the press landed in the
locked frame, which the Type tool turned into a text frame, putting the
caret in it; no new frame was drawn.

- The Type tool takes a hit only on text frames (locked or not, as
  InDesign lets you edit their text) and unlocked empty frames; over a
  locked empty frame, the press starts a new text frame.
- text.placeCaret refuses to convert a locked empty frame (or one on a
  locked layer).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 19:22:54 +02: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