Commit Graph
130 Commits
Author SHA1 Message Date
aiongg 3821a8f7f7 Integration: the pattern gallery offers the 48 gallery presets in gallery order; the six legacy ones still draw 2026-10-25 02:45:46 +00:00
aiongg 7d21b25330 Integration: one Edit points row in the UI parity table, and the progress log in date order 2026-10-25 02:33:30 +00:00
aiongg 4668e0b45a Merge #1335: Format: Pattern fill shows a gallery of every preset with Foreground and Background colors 2026-10-25 02:22:58 +00:00
aiongg ca919b0c9b Merge #1332: Edit Points: right-click a segment for Add Point, Delete Segment and Open/Close Path
# Conflicts:
#	crates/engine/src/tools.rs
2026-10-25 02:22:57 +00:00
aiongg 2b9b83ef83 Merge #1308: Edit Points: Shift, Ctrl or Alt while dragging a handle makes the point smooth, straight or corner 2026-10-25 02:22:38 +00:00
aiongg aaaee73c6f Merge #1301: Text: a Columns dialog sets the number of columns and the spacing between them 2026-10-25 02:22:38 +00:00
aiongg d863fac1c6 Merge #1282: Tables: dragging across cells selects a range of cells 2026-10-25 02:22:37 +00:00
dotCooCoo 2ddd2abe67 Format: Pattern fill shows a gallery of every preset with Foreground and Background colors
Format Shape's Pattern fill set 25 % in accent 1 on background 1 and
offered no way to change it, and Format Background listed 10 of the 54
presets by their XML names. Both panes now show the same editor: a
gallery of the 54 DrawingML presets drawn in the fill's own colors,
each named in words, and Foreground and Background color menus.

With a pattern fill, Format Shape no longer shows the solid-fill Color
button, which replaced the pattern with a solid fill, or the
Transparency slider, which did not change a pattern. The renderer
exports the preset list and tiles for the gallery to draw.
2026-10-24 14:13:22 -07:00
dotCooCoo 92ce587cd6 Edit Points: right-click a segment for Add Point, Delete Segment and Open/Close Path
The segment menu in Edit Points offered only Straight Segment and Curved
Segment. It now also has Add Point, which adds a point where the right
click was, Delete Segment, which removes the segment from a closed outline
so that the outline opens there (grayed out on an open outline), and Open
Path, which opens the outline at the segment's start point (Close Path on
an open outline).
`shape.deleteSegment` does the deletion for the CLI and MCP.

The place on a segment that a click picks was found only in steps of 1/32
of the segment, so Add Point and Ctrl-click could add the point as far
as 1/64 of a straight segment's length from the pointer. It is now narrowed
down after that first pass.

Adding or deleting a point now forgets a point type remembered for handle
drags, as opening and closing the outline already did. `shape.addPoint` on
the first point of an open outline no longer splits the closing edge of
another outline later in the same path.
2026-10-24 13:07:42 -07:00
dotCooCoo a9cafe64fc Docs: Play From and the .potx/.ppsx content types are no longer listed as missing
The Animation Pane row in ui-parity.md said the pane cannot preview from
the selected effect, but its button reads Play From and starts there
(animpane_tests). gaps.md, file-format-parity.md and the parity checklist
said .potx and .ppsx are saved with the .pptx content type, but
deckcraft_pptx::export_as writes the template and slide-show content
types, as a test in crates/pptx/tests/it/roundtrip.rs checks. The
gaps.md entry now covers only the macro-enabled variants. The checklist
row stays partial, and cargo xtask parity leaves the summary unchanged.
2026-10-24 11:58:09 -07:00
dotCooCoo 00f9df7d8d Edit Points: Shift, Ctrl or Alt while dragging a handle makes the point smooth, straight or corner
A handle drag in Edit Points ignored the modifier keys: the point kept
the type it had. In PowerPoint, Shift, Ctrl or Alt held during the drag
sets the point's type.

Shift held while dragging a point's handle now makes it a smooth point.
Ctrl (Cmd on the Mac) makes it a straight point, and Alt (Option) makes
it a corner point. The handle drag passes that type to shape.moveHandle,
and the point keeps it for the next drag without a modifier, as after
Smooth Point, Straight Point or Corner Point in the right-click menu.
2026-10-24 09:38:54 -07:00
dotCooCoo 68c21778ef Merge main into feat/table-cell-range-select 2026-10-24 09:29:12 -07:00
dotCooCoo e89c824c6d Text: a Columns dialog sets the number of columns and the spacing between them
Home > Columns offered 1, 2 or 3 columns, always 18 pt apart, and Format
Shape > Text Box had the same three buttons. The spacing could not be
seen or changed, and picking a number reset it.

Home > Columns > More Columns... and a Columns... button in Format Shape
> Text Box now open a Columns dialog with Number (1 to 16) and Spacing in
inches, filled in from the text box. OK applies both in one undo step.
A Spacing left as shown keeps the text box's exact value.

format.columns with no fields opens the dialog. A key left out keeps the
text box's own value instead of resetting it to 1 column or 0 pt, and a
count that is not a whole number from 1 to 16, or a spacing that is not
a number, is an error. Before, an out-of-range count was clamped, a
count that was not a whole number meant 1 column, and a spacing that
was not a number meant 0 pt.
2026-10-24 05:57:36 -07:00
dotCooCoo 9888d7c90e Tables: dragging across cells selects a range of cells
While the caret is in a table cell, a drag into another cell of the
table now selects the cells between them. The range takes in every
merged cell it touches, and the canvas shades the selected cells.
Moving back into the first cell returns to a text selection there.
Shift+arrow moves the cell the range was extended to, and the cell it
started from stays.

With a range selected, run and paragraph formatting apply to those
cells only. Delete clears their text and keeps the cells and the table,
and Copy and Cut take their text, with a tab between cells and a line
per row. Shading, Borders, Cell Margins and Align take in the merged
cells the range touches. A press in the table starts again in the cell
under the pointer.
2026-10-24 01:29:58 -07:00
aiongg 8957e193e9 Merge integration track r1-t02 (dialogs, view, text editing, panes, status bar, other)
ROADMAP.md, docs/gaps.md: union of both tracks' log rows.
2026-10-24 06:26:36 +00:00
aiongg c480b74a3f Merge PR #833: Shapes: Edit Points — Straight/Curved Segment and Open/Close Path from the right-click menu
Conflicts: ROADMAP.md docs/gaps.md docs/ui-parity.md (union of both sides' rows)
2026-10-24 06:16:21 +00:00
aiongg 6971d55345 Merge PR #799: Text boxes: a click on the frame selects the box whole (#787)
docs/ui-parity.md: kept main's status header lines; the PR's older header dropped, its new table row kept.
2026-10-24 06:15:50 +00:00
Brandon Thomas a0aca7f36b Merge pull request #1187 from samirhvbr/fix/group-shape-appearance 2026-10-23 17:10:42 -04:00
Brandon Thomas 4030f3c008 Merge pull request #1234 from marcoarnulfo/feat/last-fill-outline-color 2026-10-23 17:10:41 -04:00
Marco Arnulfo f43d42d535 Canvas: scroll bars when the zoomed slide is larger than the window (fixes #1157) 2026-10-23 18:21:28 +02:00
Marco Arnulfo 58d746bc17 Shape Outline button sets only the colour; docs row under Revision history; tests anchor on the hex field's label and check the scheme slots 2026-10-23 17:07:21 +02:00
Marco Arnulfo 40f6f1756b Shape Fill and Shape Outline: the button applies the last colour picked from its menu (part of #1080) 2026-10-23 17:01:26 +02:00
Samir Hanna Verza 07c8e2d77f M3: apply fill and outline edits to group members (#1079) 2026-10-22 13:20:11 -03:00
FaabyyandClaude Sonnet 5.5 8bc3d3f110 Text boxes: a click on the frame selects the box whole (#787)
A click on the frame band of an unselected or selected text box or
placeholder started text editing, so the box could not be selected,
moved, duplicated or deleted from its frame. The frame band now selects
the box whole, like PowerPoint; only a click inside takes the caret.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 18:25:14 +00:00
Gert Pellin 392734a135 Export: transparent background docs and clearer refusal (#784)
The error for a non-PNG export says the option is for PNG export. ROADMAP,
file-format, UI parity and control protocol docs mention the option.
2026-10-16 16:42:42 +02:00
Marco Arnulfo 13e06cace2 Shapes: Edit Points — Straight/Curved Segment and Open/Close Path from the right-click menu 2026-10-15 20:04:58 +02:00
Brandon ThomasandClaude Opus 5.5 a15d93acdd Fix up #747 and #772 from review: docs keep their status headers (log rows stay), no milestone renaming; the bullet test no longer saves screenshots; clippy's as_chunks in the bullet render test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:00:48 -04:00
hajdukste 51de1ad2cf Text (#93): show gray markers on empty list paragraphs 2026-10-14 17:58:53 -07:00
Brandon ThomasandClaude Opus 5.5 4517dd4e88 Docs: fold the rows and headers the PR merges duplicated; parity summary regenerated
Union merges of the 2026-10-14 community PR wave stacked header lines and
left near-duplicate rows, bullets and paragraphs with per-PR counts. Each
progress doc now has one status line and one row per fact, with current
numbers: breadth 84% over 191 features (cargo xtask parity, after removing
duplicate Thesaurus/AutoCorrect/Artistic effects/Corrections checklist
rows), 320 engine commands, 41 dialogs, 1,641 tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 16:13:37 -04:00
Brandon Thomas bb15c0a033 Merge the landing branch into land-r8
# Conflicts:
#	contributors/people.toml
#	crates/engine/src/cmd/file.rs
#	crates/pptx/src/opc.rs
#	crates/pptx/tests/roundtrip.rs
#	crates/ui-egui/src/backstage.rs
#	crates/ui-egui/src/lib.rs
2026-10-14 15:53:57 -04:00
Brandon ThomasandClaude Opus 5.5 b54ec601d8 Fix up #508: read 3-D settings with the XML parser; keep only known presets
Shape3d::parse scanned the kept a:scene3d/a:sp3d XML as strings and copied the
camera, light rig, direction, material and bevel names from the file into the
XML it writes back unescaped. It now parses the fragment with the importer's
XML reader (exported from deckcraft-pptx as parse_xml) and keeps a value only
when it is in the format's lists (ST_PresetCameraType, ST_LightRigType,
ST_LightRigDirection, ST_PresetMaterialType, ST_BevelPresetType), else the
default; lengths are clamped and the extrusion/contour colours are
re-serialized (escaped) by the XML writer. The Format Shape pane rows in
ui-parity.md that earlier merges had duplicated are folded into one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:42:23 -04:00
Brandon Thomas b4be808ba3 Merge PR #508 from NikitkaRa: Format Shape: 3-D Format and 3-D Rotation controls
# Conflicts:
#	crates/engine/src/cmd/shape.rs
#	crates/engine/src/tests.rs
#	crates/ui-egui/src/panes.rs
2026-10-14 15:40:11 -04:00
Brandon Thomas 081c9fdc5e Merge the landing branch into land-r7
# Conflicts:
#	apps/deckcraft-cli/src/main.rs
#	apps/deckcraft-cli/tests/cli.rs
#	crates/engine/src/cmd/file.rs
#	crates/engine/src/cmd/text.rs
#	crates/engine/src/lib.rs
#	crates/engine/src/tests.rs
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/src/textures.rs
2026-10-14 15:34:15 -04:00
Brandon ThomasandClaude Opus 5.5 d66833b7c2 Fix up merged PRs: land-r6's changes fitted to the landing branch
- review.thesaurus's params doc parses under describe's grammar; describe's edit.copy test
  expects the landing branch's {text, html?} answer.
- The Language dialog test picks the landing branch's "Français (France)" entry; the Format
  Background test allows the pane's title to appear twice.
- Progress docs rebuilt from the landing branch's versions with land-r6's rows applied on top,
  so the union merge no longer drops the pen-pressure, ui.pointer and ui.key rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:23:16 -04:00
Brandon Thomas 91eb9d8884 Merge the landing branch into land-r6
# Conflicts:
#	crates/engine/src/tests.rs
#	crates/engine/src/tools.rs
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/dialogs.rs
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/src/panes.rs
#	crates/ui-egui/src/ribbon.rs
#	crates/ui-egui/src/status.rs
#	crates/ui-egui/src/textures.rs
#	crates/ui-egui/src/thumbs.rs
2026-10-14 15:14:21 -04:00
Brandon Thomas bad8e9d1dd Merge PR #139 from alexanderalber: Text: typing goes on after Tab in a text box (#78)
# Conflicts:
#	crates/ui-egui/src/lib.rs
2026-10-14 15:08:45 -04:00
Brandon Thomas b56d5792b0 Merge the format, canvas and dialog PRs integrated on land-r4 (#567 #569 #630 #637 #536 #559 #519 #506 #549 #556 #525)
# Conflicts:
#	crates/engine/src/cmd/review.rs
#	crates/engine/src/tests.rs
#	crates/ui-egui/src/dialogs.rs
#	crates/ui-egui/src/panes.rs
2026-10-14 15:06:35 -04:00
Brandon ThomasandClaude Opus 5.5 c448a3dba9 Fix up merged PRs: progress docs without the rows the union merges duplicated
Stale status lines and table rows from the older PRs are folded into main's current ones.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:05:32 -04:00
Brandon ThomasandClaude Opus 5.5 320e3a971a Fix up merged PRs: one Editing group on Home, fmt, docs after the format/canvas/dialog merges
- Home: #556's Find and Replace join main's Replace Fonts… in one Editing group with the
  Selection Pane, as PowerPoint lays it out; the separate group pushed Replace Fonts… out of
  reach at 1400 px. The Replace Fonts test picks the dialog's Replace button, not the ribbon's.
- cargo fmt.
- docs: parity summary regenerated with `cargo xtask parity`; ui-parity's ruler row says tab
  stops are set on the ruler (#567/#569) as well as in the Tabs dialog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:04:16 -04:00
Brandon Thomas 95cb3be9e6 Merge PR #522 from NikitkaRa: UI: keep editor slides on the Retina pixel grid
# Conflicts:
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/panes.rs
#	crates/ui-egui/src/sorter.rs
#	crates/ui-egui/src/textures.rs
2026-10-14 14:58:19 -04:00
Brandon Thomas f8949f28cd Merge PR #692 from NikitkaRa: UI: Format Background picture fill sets transparency and tiling
# Conflicts:
#	crates/engine/src/cmd/design.rs
#	crates/ui-egui/src/panes.rs
2026-10-14 14:55:58 -04:00
Brandon Thomas b2b0e82359 Merge PR #556 from NikitkaRa: Text: Find and Replace across slides, tables and notes
# Conflicts:
#	crates/engine/src/tests.rs
#	crates/ui-egui/src/dialogs.rs
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/src/ribbon.rs
2026-10-14 14:53:21 -04:00
Brandon Thomas 143a842d1c Merge PR #506 from NikitkaRa: Format Shape: picture or texture fill options
# Conflicts:
#	crates/engine/src/tests.rs
#	crates/ui-egui/src/panes.rs
2026-10-14 14:51:02 -04:00
Brandon Thomas b267a921cd Merge PR #519 from NikitkaRa: UI: WordArt adjust handles drag a text warp
# Conflicts:
#	crates/engine/src/tests.rs
#	crates/engine/src/tools.rs
#	crates/geom/src/warp.rs
2026-10-14 14:46:54 -04:00
Brandon Thomas 4416bc170a Merge PR #697 from NikitkaRa: UI: Format Shape fill transparency follows the selection
# Conflicts:
#	crates/ui-egui/src/panes.rs
2026-10-14 14:43:08 -04:00
Brandon Thomas b3ec4013e6 Merge PR #230 from pierrevbc: Tables: caret in the edited cell, click-to-place, drag borders to resize
# Conflicts:
#	crates/engine/src/cmd/text.rs
#	crates/engine/src/tests.rs
#	crates/engine/src/tools.rs
#	crates/render/src/lib.rs
#	crates/ui-egui/src/canvas.rs
2026-10-14 14:41:34 -04:00
Brandon Thomas 79b3e3693f Merge PR #571 from NikitkaRa: UI: preview slide animations on the editor canvas
# Conflicts:
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/control.rs
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/src/show.rs
2026-10-14 14:40:51 -04:00
Brandon ThomasandClaude Opus 5.5 7dcfe0f989 Fix up merged PRs: a textless shape still copies as the objects marker so Ctrl+V pastes it (#182), not as a picture (#702)
With only an image on the system clipboard egui-winit drops Ctrl+V, so #702's
picture copy of a textless shape undid main's #182 fix. Text keeps #702's HTML,
and empty plain text falls back to the marker.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:40:18 -04:00
Brandon Thomas 38e95d8c15 Merge PR #702 from NikitkaRa: Clipboard: rich text and pictures for Pages and Keynote
# Conflicts:
#	crates/engine/src/cmd/edit.rs
#	crates/ui-egui/src/lib.rs
2026-10-14 14:39:36 -04:00
Brandon Thomas 2d4c4e75d8 Merge PR #536 from NikitkaRa: UI: Grid Options sets spacing, snap and the on-screen grid
# Conflicts:
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/dialogs.rs
#	crates/ui-egui/src/lib.rs
2026-10-14 14:39:01 -04:00