Commit Graph
622 Commits
Author SHA1 Message Date
Brandon Thomas 46f23229ab Merge pull request #1510
Clipboard HTML export stays within its size cap
2026-10-30 16:08:21 -04:00
Brandon Thomas ae08bbe62d Merge pull request #1546
Accessibility: low contrast is checked across all text runs
2026-10-30 16:08:20 -04:00
Brandon Thomas 7b46958fa2 Merge pull request #1536
Suggest corrections for misspelt all-caps words
2026-10-30 16:08:19 -04:00
Brandon Thomas 81eff036d2 Merge pull request #1439
Duplicate names the copy like PowerPoint: next automatic name, chosen names kept
2026-10-30 16:08:18 -04:00
Brandon Thomas 1b5d860dfc Merge pull request #1449
Format Shape Effects: preset tiles for Shadow, Glow and Soft Edges, shadow Size
2026-10-30 16:05:36 -04:00
Brandon Thomas dc1fc8d83b Merge pull request #1418
fix(slides): dragging several selected slides moves them all
2026-10-30 16:05:27 -04:00
Brandon ThomasandClaude Opus 5.5 b7bec00386 Merge origin/main into #1449: preset tiles move into effects_tab
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 16:03:42 -04:00
Brandon ThomasandClaude Opus 5.5 4d2c1a3bac Clipboard HTML: put no HTML on the clipboard when even plain text is over the cap
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 16:00:36 -04:00
Brandon Thomas 2275e56319 Merge pull request #1518
Automatic lists work without Replace text as you type
2026-10-30 15:59:09 -04:00
Brandon Thomas 8713686274 Merge pull request #1489
Start a new paragraph when an HTML block tag opens in paste

# Conflicts:
#	crates/engine/src/cmd/richclip.rs
2026-10-30 15:59:08 -04:00
Brandon Thomas e6f9e912f7 Merge pull request #1482
Fix HTML paste style leaking past closing tags of a, td, mark
2026-10-30 15:58:55 -04:00
Brandon Thomas 34cfc5b20b Merge pull request #1500
Allow multiple automation roots per kind
2026-10-30 15:58:54 -04:00
Brandon ThomasandClaude Opus 5.5 b8cfcf20a2 Accessibility contrast skips line breaks and blank runs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:58:38 -04:00
Brandon ThomasandClaude Opus 5.5 1841ab75da Spelling: check all-caps candidates in capitals so KEEPCASE words are suggested
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:57:45 -04:00
Brandon ThomasandClaude Opus 5.5 352fec7725 Insert and paste count group members when picking the next automatic name
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:53:18 -04:00
Brandon ThomasandClaude Opus 5.5 ecad13d1cc Merge origin/main into #1418: port the slide drag onto panels/thumbs.rs and sorter/ui_tests.rs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:48:56 -04:00
Brandon Thomas 5b0871e5f3 Merge pull request #1473
Spell check: don't check words longer than 100 characters (fixes #1175)
2026-10-30 15:48:35 -04:00
Brandon Thomas 0f5d01a461 Merge pull request #1324
Long English dates follow each English locale's day order and punctuation
2026-10-30 15:48:34 -04:00
Brandon Thomas 234329a8d2 Merge pull request #1323
A paragraph with its own numbering start restarts the count there
2026-10-30 15:48:34 -04:00
Brandon Thomas 71c5da07eb Merge pull request #1568
Don't warn about macOS hidden system fonts such as .SF NS (#1504)
2026-10-30 15:48:33 -04:00
Brandon Thomas 5e85f73c5e Merge pull request #1397
Format: Fill offers Slide background fill
2026-10-30 15:48:04 -04:00
Brandon Thomas 6d02e90177 Merge pull request #1453
Reject '+' sign in slide range numbers
2026-10-30 15:42:14 -04:00
Brandon Thomas 52d81a9468 Merge pull request #1538
Reject invalid slide index in design.applyIdea and design.ideas
2026-10-30 15:42:13 -04:00
Brandon Thomas 81ab1bce0d Merge pull request #1537
Reject invalid slide index in animation.clear
2026-10-30 15:42:13 -04:00
Brandon Thomas 3465ed9d47 Merge pull request #1410
Reject invalid slide index in file.export, file.render, slide.colorAt

# Conflicts:
#	crates/engine/src/tests.rs
2026-10-30 15:42:12 -04:00
Brandon Thomas f29b7e7eed Merge pull request #1481
Tests pinning picture.reset, a repeated PNG export and an action button's theme fill

# Conflicts:
#	crates/engine/src/tests.rs
2026-10-30 15:42:11 -04:00
Brandon Thomas a37fa65852 Merge pull request #1479
review.compare says which side each change is on; an absent box is not a rotation
2026-10-30 15:42:10 -04:00
Brandon Thomas 21bbb4127d Merge pull request #1478
A group's box follows its children after a command moves or resizes one

# Conflicts:
#	crates/engine/src/tests.rs
2026-10-30 15:42:10 -04:00
Brandon Thomas 36eaa7e051 Merge pull request #1477
Inserts in the master views: insert.dateTime fills the master's date placeholder; answers say a master or layout was edited (part of #298)

# Conflicts:
#	crates/engine/src/tests.rs
2026-10-30 15:41:59 -04:00
Brandon Thomas 932ec7bef6 Merge pull request #1475
table.cellAlign takes a horizontal align
2026-10-30 15:41:42 -04:00
Brandon Thomas 34af55bd6b Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 15:38:10 -04:00
MarekSpodBiedry fe54c0eb3c Don't warn about macOS hidden system fonts such as .SF NS (#1504) 2026-10-30 14:59:05 +01:00
Dylan M. Taylor 505a6f28ac Update prompt shows the app icon and accent color instead of a letter (#1561)
UPDATE_APP (native builds; craft-update is a native-only dependency) carries our 128 px icon and accent (#f07a1e, its colour in ArtCraft Launcher). The updater, the self-update
helper and craft-update's startup prompt all get them through crate::UPDATE_APP; the
prompt draws the icon, the accent and "by ArtCraft" (craft-update's default developer).

craft-update is pinned to storytold/craft-libs main at 1065653e7 (#434).
Clippy fixes for Rust 1.99 in untouched code (same logic):
- crates/engine/src/tools/click.rs
- crates/engine/src/tools/pointer.rs
- crates/metafile/src/emfplus.rs
- crates/model/src/trendline.rs
- crates/pptx/src/read/dml.rs
- xtask/src/layers.rs
2026-10-30 01:28:38 -04:00
Zach BerryandClaude Sonnet 5.5 afe4c324a7 [II5] A paragraph with its own numbering start begins a new run at that number
Layout added the paragraph's start to the running count, so start k set
paragraph by paragraph read 1, 3, 5. A change of start_at between
neighbouring numbered paragraphs now restarts the count, as PowerPoint's
Start at does; the same start on every paragraph still counts on.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 18:02:10 -05:00
Harrison Booth 079ea961dd Review accessibility contrast across text runs 2026-10-29 10:40:21 -05:00
NetterSilverandClaude Haiku 5.5 35a9b812fd Reject invalid slide index in design.applyIdea and design.ideas
Found while testing crates/engine/src/cmd/ideas.rs:254 (apply_cmd); same pattern in ideas_cmd :248

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 12:19:26 +01:00
NetterSilverandClaude Haiku 5.5 1bdd63dabe Reject invalid slide index in animation.clear
Found while testing crates/engine/src/cmd/animation.rs:342 (clear)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 11:27:56 +01:00
NetterSilverandClaude Haiku 5.5 6fbfea12a6 Suggest corrections for misspelt all-caps words
Found while testing crates/engine/src/spell.rs:396-448 (Dictionary::suggest)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 10:09:07 +00:00
Harrison Booth 6d2fd18923 autocorrect: decouple lists from replacements 2026-10-28 15:40:36 -05:00
Harrison Booth 2ac978ce54 dc5-02: enforce clipboard HTML size cap 2026-10-28 14:49:53 -05:00
Harrison Booth d1487e6916 MCP: accept multiple automation roots 2026-10-28 11:16:28 -05:00
NetterSilverandClaude Haiku 5.5 fd102fb47b Start a new paragraph when an HTML block tag opens in paste
Found while testing crates/engine/src/cmd/richclip.rs:121-170 (html_to_body, opening-tag handling; is_block at :190)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 13:44:26 +01:00
dotCooCoo b57ab3fb35 Merge commit 'refs/check/mw-deckcraft-main' into feat/slide-background-fill
# Conflicts:
#	crates/engine/src/cmd/shape.rs
#	crates/ui-egui/src/panes.rs
2026-10-28 03:50:51 -07:00
Dylan M. Taylor 1a203c4a73 Refactor engine for strict Clippy checks 2026-10-28 06:02:27 +00:00
NetterSilverandClaude Haiku 5.5 e75a72c0cc Fix HTML paste style leaking past closing tags of a, td, mark
Found while testing crates/engine/src/cmd/richclip.rs:121-139 (html_to_body), with tag_kind at :175

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 04:52:34 +01:00
Zach BerryandClaude Sonnet 5.5 cd5ff01810 [NN6] review.compare treats an absent box like an unrotated, unflipped one
slide.reset drops a placeholder's stored box, and compare called that
"rotated" because None differed from a stored rotation of 0. Absent now
equals 0 for rotation and no flips; a real flip difference reads "flipped".
PowerPoint's Compare reports a rotation only when the angle differs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 21:43:36 -05:00
Harrison Booth ddd7d210ef Duplicate: number the copy from the shape count, not the count of distinct names 2026-10-27 21:02:22 -05:00
Zach BerryandClaude Sonnet 5.5 2cad063d1d [MM4] A group's box follows its children after a command moves one
shape.move or shape.setBounds on a group's child left the group's box as it
was, so inspect_slide reported stale bounds. After any edit that changes a
child's box or the child list, the group's box is refitted to the union of its
children (its child space too, so every child keeps its place on the slide).
A group that was itself moved or resized, and SmartArt groups (regenerated
inside their own box), are left alone.

PowerPoint: a group's bounding box always hugs its children; dragging one
child out grows the group, dragging it back shrinks it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 20:38:41 -05:00
Zach BerryandClaude Sonnet 5.5 3356bc071c [SS1] Pin that an inserted action button's fill follows the theme
It already does: insert.actionButton gives the shape the accent1 style with no explicit fill, as
PowerPoint's gallery button has, so a theme change recolours it. No code change; a test pins it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 20:37:48 -05:00
Zach BerryandClaude Sonnet 5.5 0efd6f1b85 [HH12] Pin that exporting a slide again overwrites the PNG
Not a bug: file.export writes the second PNG over the first with the edit in
it. The test pins it (export, edit, export to the same path, files differ).

PowerPoint: Save As / Export to an existing file name replaces the file.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 20:37:48 -05:00