Commit Graph
972 Commits
Author SHA1 Message Date
Brandon Thomas b815568fd7 Merge PR #626 from NikitkaRa: Spelling: squiggles in table cells and speaker notes; UI-thread checking on the web
# Conflicts:
#	crates/engine/src/cmd/text.rs
#	crates/ui-egui/src/status.rs
2026-10-14 14:44:48 -04:00
Brandon ThomasandClaude Opus 5.5 526e31d1f7 Fix up merged PRs: a picked file remembers main's Handout and Notes Master views (#479)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:44:40 -04:00
Brandon Thomas eff4c02efa Merge PR #615 from NikitkaRa: Spelling: squiggles while typing, Add to Dictionary, per-run languages, compounds
# Conflicts:
#	crates/engine/src/cmd/text.rs
#	crates/ui-egui/src/canvas.rs
2026-10-14 14:44:12 -04:00
Магда М.Г. 8d68b2fe9d Render: an unfilled shape's glow follows its line
A glow always filled the shape's whole silhouette, so a frame with no fill
(a rounded-rectangle border with a soft glow, common in corporate decks)
came out as a solid tinted panel over the slide. PowerPoint glows such a
shape along its outline only and leaves the inside clear; a filled shape's
or a picture's glow is unchanged. The line glow uses the same width and
blur as the outline part of a filled shape's glow.

Checked against PowerPoint's own PDF export of 31 real decks (597
slides): 66 slides closer to PowerPoint, none further; the frames' slides
go from a mean pixel difference of ~29 to ~2.5-8 (of 255), and the 90th
percentile over all slides from 12.9 to 10.0.
2026-10-14 20:44:01 +02:00
Brandon Thomas 5fbdb6c79e Merge PR #479 from NikitkaRa: Web: keep a picked file on the document and slide that asked for it
# Conflicts:
#	crates/ui-egui/src/lib.rs
2026-10-14 14:43:55 -04:00
Brandon ThomasandClaude Opus 5.5 740a57ddba Fix up merged PRs: table borders under a right-click select the table; the cell caret is drawn once
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:43:36 -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 bd607f333a Merge PR #648 from NikitkaRa: Canvas: a trackpad swipe turns the page
# Conflicts:
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/lib.rs
2026-10-14 14:42:43 -04:00
Brandon ThomasandClaude Opus 5.5 367b079d64 Fix up #609: spelling language tags can't leave the dictionary folders; long words get no suggestions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:42:15 -04:00
Brandon Thomas 6f38c958b6 Merge PR #674 from NikitkaRa: Canvas: a two-finger twist rotates the selection
# Conflicts:
#	crates/engine/src/cmd/shape.rs
#	crates/ui-egui/src/lib.rs
2026-10-14 14:42:12 -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 5ed2f808e3 Merge PR #539 from NikitkaRa: Draw: Ink to Shape converts pen strokes into shapes
# Conflicts:
#	crates/engine/src/cmd/shape.rs
#	crates/engine/src/lib.rs
#	crates/ui-egui/src/ribbon.rs
2026-10-14 14:41:19 -04:00
Brandon Thomas ec44671a81 Merge PR #559 from NikitkaRa: View: movable drawing guides saved with the presentation
# Conflicts:
#	crates/engine/src/tools.rs
#	crates/model/src/defaults.rs
#	crates/model/src/lib.rs
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/lib.rs
2026-10-14 14:41:12 -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 Thomas e1a92e37c6 Merge PR #609 from NikitkaRa: Review: spelling with Hunspell dictionaries, suggestions, Change and Ignore All
# Conflicts:
#	crates/engine/src/lib.rs
#	crates/engine/src/tests.rs
#	crates/ui-egui/src/dialogs.rs
2026-10-14 14:40:49 -04:00
Brandon ThomasandClaude Opus 5.5 2173cf9569 Fix up merged PRs: Draw Table and Table Eraser sit in the Table Design tab
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:40:38 -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 ThomasandClaude Opus 5.5 3b28496c36 Fix up merged PRs: main's newer params docs fit describe's grammar; help pages for bench and render-transition
file.export's slide range and transition.sound's keys parse as parameters, and the subcommands
main added since #303 have their own help page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:40:09 -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 ThomasandClaude Opus 5.5 1659e06565 Fix up merged PRs: Draw Table's table lookup uses the checked shape id param (#544 after #97); its test no longer writes to /tmp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:39:10 -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
Brandon ThomasandClaude Opus 5.5 7acb9faad1 Fix up merged PRs: one format.tabs and one Tabs dialog for #567/#569 and #637
#569 and #637 each added a `format.tabs` command and a Tabs dialog. Keep one of each:
- format.tabs takes #567/#569's add/move/remove/clear/set plus #637's strict `set`
  (unknown alignment or non-object entries are errors, stops within 0.05 pt collapse,
  last wins) and opens the Tabs dialog when called with no fields, as #637 did.
  A defaultTab-only call no longer rewrites the stops.
- The Tabs dialog is #569's; it now seeds from the dialog's params when Paragraph (or
  format.tabs) opened it, and on OK hands the applied stops back to Paragraph.
- Tests adapted: an empty format.tabs opens the dialog; the Paragraph → Tabs test sets
  stops through #569's dialog fields.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:38:03 -04:00
Brandon Thomas 23eb82c02a Merge PR #544 from NikitkaRa: Tables: Draw Table pencil and Table Eraser
# Conflicts:
#	crates/ui-egui/src/ribbon.rs
2026-10-14 14:38:00 -04:00
Brandon Thomas c3489d6a99 Merge PR #655 from NikitkaRa: Show: presenter view keeps a portrait Next slide inside its column
# Conflicts:
#	crates/ui-egui/src/show.rs
2026-10-14 14:37:36 -04:00
Brandon ThomasandClaude Opus 5.5 2a410e54fa Fix up merged PRs: main's newer textures (document window, SmartArt previews, show grid) go through textures::upload so they stay within the GPU max texture side (#652)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:37:30 -04:00
Brandon Thomas e225e4eec1 Merge PR #652 from NikitkaRa: UI: keep every texture within the GPU max texture side
# Conflicts:
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/src/panes.rs
2026-10-14 14:37:12 -04:00
Brandon Thomas 8587be6af9 Merge PR #542 from NikitkaRa: Design: Variants gallery with four colour variations of the theme
# Conflicts:
#	crates/engine/src/cmd/design.rs
#	crates/engine/src/tests.rs
2026-10-14 14:37:07 -04:00
Brandon Thomas b590cb0b0b Merge PR #303 from hoblin: deckcraft-cli help explains the CLI to an agent
# Conflicts:
#	apps/deckcraft-cli/src/main.rs
#	crates/engine/src/cmd/design.rs
#	crates/engine/src/cmd/file.rs
#	crates/engine/src/cmd/format.rs
#	crates/engine/src/tests.rs
2026-10-14 14:36:13 -04:00
Магда М.Г. 8c3404fc87 Fonts: falling back to the default face no longer deadlocks
cascade's last fallback searched the loaded faces and, finding none that
draws the cluster, called `first` while the search's read guard was still
alive (a temporary in the match arm lives to the end of the `let`).
`first` looks up the default family, which loads it through add_fonts,
and add_fonts takes the faces' write lock even when there is nothing to
add: the thread waited on itself, and every other thread then waited on
the loading lock it held.

It shows when a run's chain is empty and nothing loaded draws the
character before the default family has been looked up, so it depends on
which test (or document) gets there first: deckcraft-text's tests hung in
4 of 10 parallel runs here (all threads parked in system_fallback /
try_family, one in add_fonts' write), and in 0 of 15 with this change.

The search now finishes before `first` runs. New test
falling_back_to_the_default_face_does_not_deadlock reaches that path on a
fresh database; it times out on main and passes with the fix.
2026-10-14 20:35:43 +02:00
Brandon Thomas 89da88e374 Merge PR #258 from RCShoemaker: fix(cli): render refuses an unknown option instead of writing it as a file (#235)
# Conflicts:
#	apps/deckcraft-cli/src/main.rs
#	contributors/people.toml
2026-10-14 14:34:57 -04:00
Brandon Thomas e406e11db2 Merge PR #444 from MarekSpodBiedry: CLI: render-transition refuses --t values that would share one file name (#423)
# Conflicts:
#	apps/deckcraft-cli/src/main.rs
2026-10-14 14:33:40 -04:00
Brandon Thomas 1c150c3c31 Merge PR #345 from marcoarnulfo: Review: the Language dialog marks the selected text with the language you pick
# Conflicts:
#	crates/engine/src/tests.rs
#	crates/ui-egui/src/lib.rs
2026-10-14 14:31:22 -04:00
Brandon ThomasandClaude Opus 5.5 2dc22843e4 Fix up merged PRs: the missing-recent test reads main's toast, which now carries open errors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:31:11 -04:00
Brandon ThomasandClaude Opus 5.5 8ee597216d Fix up landed PRs from review
- #178: ToUnicode ranges looked up without indexing
- #465: frame_num gaps are concealed (bounded) even when the SPS forbids them; cut streams keep playing
- #471: control request lines up to 256 MB so picture/media inserts still fit
- #473: a merge that loses its only row or column is removed, with regression tests
- #521: AutoCorrect no longer rewrites real words (cant, wont, im)
- #654: inherit_placeholder_geometry's doc comment back on its function

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:31:01 -04:00
Brandon Thomas 12df77ed19 Merge PR #637 from NikitkaRa: UI: Paragraph dialog sets alignment, indents and spacing
# Conflicts:
#	crates/engine/src/cmd/format.rs
#	crates/ui-egui/src/dialogs.rs
#	crates/ui-egui/src/ribbon.rs
2026-10-14 14:30:55 -04:00
Brandon Thomas be445fb083 Merge PR #630 from NikitkaRa: UI: Font dialog sets character formatting in one step
# Conflicts:
#	crates/engine/src/cmd/format.rs
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/dialogs.rs
2026-10-14 14:27:38 -04:00
Brandon Thomas f6cf99bf87 Merge PR #291 from albayazid: Start screen: a missing Recent file is marked, its error shows, and entries can be removed (#172)
# Conflicts:
#	crates/ui-egui/src/lib.rs
2026-10-14 14:27:28 -04:00
Brandon ThomasandClaude Opus 5.5 0609ca01cb Fix up merged PRs: right-click on the edited text box's frame selects that box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:27:15 -04:00
Brandon Thomas f0dbc08c09 Merge PR #569 from NikitkaRa: Text: Tabs dialog and the ruler's tab selector (stacked on #567)
# Conflicts:
#	crates/ui-egui/src/dialogs.rs
2026-10-14 14:27:04 -04:00
Brandon Thomas 80d3ad5f24 Merge PR #243 from pierrevbc: Canvas: drag the frame of a text box being edited to move it
# Conflicts:
#	crates/engine/src/tests.rs
#	crates/engine/src/tools.rs
2026-10-14 14:26:59 -04:00
Brandon Thomas aec4043ccd Merge PR #567 from NikitkaRa: View: indent and tab markers on the ruler
# Conflicts:
#	crates/engine/src/cmd/format.rs
#	crates/ui-egui/src/canvas.rs
2026-10-14 14:26:32 -04:00
Brandon Thomas 8fde5f31e7 Merge PR #204 from justinjohn0306: Pictures: Change Picture replaces the selected picture (#115)
# Conflicts:
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/lib.rs
2026-10-14 14:26:16 -04:00
Brandon Thomas a0d97fa931 Merge PR #644 from NikitkaRa: Startup: survive damaged settings, font folders, recovery folders and small texture limits
# Conflicts:
#	crates/engine/src/recovery.rs
#	crates/fonts/src/fontdb.rs
#	crates/fonts/src/lib.rs
#	crates/ui-egui/src/lib.rs
2026-10-14 14:24:45 -04:00
Brandon Thomas d498633faf Merge PR #654 from NikitkaRa: PPTX: shape text anchors at the top when the file gives no anchor; write ctr for centred shapes 2026-10-14 14:24:17 -04:00
Brandon Thomas 71c3848eff Merge PR #521 from NikitkaRa: Text: AutoCorrect options, case rules and your own entries
# Conflicts:
#	crates/engine/src/tests.rs
2026-10-14 14:24:16 -04:00
Brandon Thomas 42b6e8e871 Merge PR #473 from NikitkaRa: Table: inserting and deleting rows and columns keeps merges consistent (#408) 2026-10-14 14:24:15 -04:00
Brandon Thomas fca521ac8c Merge PR #471 from NikitkaRa: Control server: bound connections, line length, queue and socket timeouts (#418) 2026-10-14 14:24:15 -04:00
Brandon Thomas 3335ee0feb Merge PR #465 from NikitkaRa: H.264: bound frame_num gap work and reject gaps the SPS forbids (#427)
# Conflicts:
#	crates/h264/src/synth_tests.rs
2026-10-14 14:24:15 -04:00
Brandon Thomas 31390e5e21 Merge PR #178 from MarekSpodBiedry: PDF: map each glyph to its shaping cluster's text in ToUnicode (#164)
# Conflicts:
#	crates/pdf/src/tests.rs
2026-10-14 14:24:15 -04:00
Brandon Thomas 0c2c433ade Merge the chart and EMF+ metafile PRs integrated on land-r2 (#532 #537 #591 #594 #598 #602 #603 #638 #640 #662 #666 #669 #690 #582 #588 #633 #635)
# Conflicts:
#	crates/pptx/src/write/mod.rs
#	crates/pptx/tests/roundtrip.rs
2026-10-14 14:17:35 -04:00