Commit Graph
972 Commits
Author SHA1 Message Date
Brandon Thomas d281ba7707 Merge PR #149 from alexanderalber: PPTX import: a transition without spd is 0.5 s, not the effect's default (#117) 2026-10-14 12:57:19 -04:00
Brandon Thomas a535040d6d Merge PR #98 from dylanmtaylor: docs(readme): percent-encode middle dot in platforms badge URL 2026-10-14 12:57:19 -04:00
Brandon Thomas c57d25e8d3 Merge PR #97 from mikl0s: Commands: an invalid shape id is an error instead of the selection 2026-10-14 12:57:19 -04:00
Brandon Thomas 6d57610489 Merge PR #96 from mikl0s: Slides: going to a slide that does not exist is an error 2026-10-14 12:57:19 -04:00
Brandon Thomas 7862974cad Merge PR #95 from mikl0s: Export: an unknown format is an error instead of a deckcraft file 2026-10-14 12:57:19 -04:00
Brandon Thomas 24644f3e3b Merge PR #83 from MarekSpodBiedry: PPTX: animation rewind survives save and reopen (#77) 2026-10-14 12:57:18 -04:00
Brandon Thomas 8409c337c1 Merge PR #82 from MarekSpodBiedry: Command palette: one Export… entry that opens the dialog, no path-only duplicate (#79) 2026-10-14 12:57:18 -04:00
Brandon Thomas 2578a92e96 Merge PR #80 from LloydNicholson: Fonts: a lookup finds an installed family whichever thread loads it first 2026-10-14 12:57:18 -04:00
Brandon Thomas 194e7fcf1b Merge PR #450 from MarekSpodBiedry: UI: notes, alt text and rename drafts no longer carry over to another document (#413)
# Conflicts:
#	crates/ui-egui/src/widgets.rs
2026-10-14 12:54:18 -04:00
Brandon Thomas 1171e92308 Merge PR #707 from lambertoo: Fix keyboard navigation when Presenter View has focus
# Conflicts:
#	crates/ui-egui/src/show.rs
2026-10-14 12:54:05 -04:00
Brandon Thomas b9b0fdbab0 Merge PR #587 from MMexicann: Media: preserve video frames and EOF across seeks 2026-10-14 12:53:42 -04:00
Brandon Thomas 903cf0930b Merge PR #463 from Zetenypapp: Copy and Cut buttons and menus put the text on the system clipboard (#431) 2026-10-14 12:53:42 -04:00
Brandon Thomas 5d406be3b0 Merge PR #460 from albayazid: Slide show: Honeycomb's hexagons cover the whole slide again (#420) 2026-10-14 12:53:42 -04:00
Brandon Thomas 3635bdc8ba Merge PR #713 from nagasakimark: Slide show: click-triggered animations, per-slide state and hit testing 2026-10-14 12:53:34 -04:00
Brandon Thomas a9b8cc4f4a Merge PR #728 from midasmatterhorn: pptx: write linked pictures with r:link so PowerPoint resolves external images 2026-10-14 12:53:34 -04:00
Brandon Thomas 9ab6a3a35c Merge PR #716 from switch87: CLI: convert and run refuse output formats DeckCraft can't write (#715) 2026-10-14 12:53:34 -04:00
Brandon Thomas e3a654d446 Merge PR #459 from MarekSpodBiedry: Slide: leading tabs in a new slide's body set the outline level (#370) 2026-10-14 12:53:33 -04:00
Brandon Thomas f4ae239725 Merge PR #458 from MarekSpodBiedry: AV1: reject tile groups that repeat, skip or reorder tiles (#395) 2026-10-14 12:53:33 -04:00
Brandon Thomas 1d8f460fc5 Merge PR #457 from MarekSpodBiedry: Matroska: stop following chapter and tag nesting past 32 levels (#396) 2026-10-14 12:53:33 -04:00
Brandon Thomas 838cef2fec Merge PR #456 from MarekSpodBiedry: Bitstream: reject bad NAL length widths, check NAL endpoints and signed Exp-Golomb limits (#397) 2026-10-14 12:53:33 -04:00
Brandon Thomas d184eb7927 Merge PR #455 from MarekSpodBiedry: Table: split and cell fill stay inside the table (#400) 2026-10-14 12:53:33 -04:00
Brandon Thomas 3046d49e56 Merge PR #454 from MarekSpodBiedry: Engine: a command that fails after editing puts the presentation back (#405) 2026-10-14 12:53:33 -04:00
Brandon Thomas 2b20fc3a45 Merge PR #453 from MarekSpodBiedry: MCP: do not resend a command whose reply was lost (#409) 2026-10-14 12:53:33 -04:00
Brandon Thomas ac88cad50b Merge PR #451 from MarekSpodBiedry: Pptx: keep the math namespace equations inherit from the slide root or a wrapper (#412) 2026-10-14 12:53:33 -04:00
Brandon Thomas f1b30485b2 Merge PR #448 from MarekSpodBiedry: Format scientific number formats (0.00E+00) in chart labels (#419) 2026-10-14 12:53:32 -04:00
Brandon Thomas 9b94481481 Merge PR #446 from MarekSpodBiedry: Engine: moving the selection to another text body settles the composition (#421) 2026-10-14 12:53:32 -04:00
Brandon Thomas ab2befffa0 Merge PR #445 from MarekSpodBiedry: Info: keep a property draft when another field or the side menu is clicked (#422) 2026-10-14 12:53:32 -04:00
Brandon Thomas ea480ad141 Merge PR #443 from MarekSpodBiedry: xtask: assets audit no longer panics on Unicode names and reads real paths from git (#424) 2026-10-14 12:53:32 -04:00
Brandon Thomas a7ed1767b5 Merge PR #442 from MarekSpodBiedry: Opus: validate the header in Decoder::from_head (#425) 2026-10-14 12:53:32 -04:00
Brandon Thomas 44df1ebcb0 Merge PR #436 from Silvertree2010: Colour menus: an Eyedropper that takes a colour from the slide (#367) 2026-10-14 12:53:32 -04:00
midasmatterhorn 5d31b78736 pptx: write linked pictures with r:link so PowerPoint resolves external images 2026-10-14 18:01:42 +03:00
Brandon ThomasandClaude Opus 5.5 d78e657e4c Release 0.7.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.7.0
2026-10-14 09:33:03 -04:00
Gert Pellin cf640c4b08 CLI: convert and run refuse output formats DeckCraft can't write (#715)
convert, run --save and run --export picked the format from the output
extension and fell back to native .deckcraft bytes for any extension
they didn't know, so out.odp, out.gif, out.svg and out.outline were
zips with exit status 0. They now fail before writing anything, with
the extension and the supported ones in the error.
2026-10-14 13:07:49 +02:00
Claude 887ea1e706 Slide show: click-triggered animations, per-slide state and hit testing
Make the slide show behave like PowerPoint for interactive decks.

- Hit testing resolves the topmost visible shape under the pointer.
  Non-interactive shapes block shapes beneath them; the hand cursor
  shows only over interactive shapes.
- Click-triggered animations (interactive sequences) play on shape
  click, repeat after their last step, and apply in click order so
  cycling "score ring" shapes work.
- Each slide keeps its own progress: returning to a slide through a
  link or Back restores hidden shapes and animation state.
- A shape with a link and an animation follows the link immediately;
  its animation clock only runs while the slide is shown and resumes
  with the remaining time on return.
- With advance-on-click off, background clicks still play animation
  steps but never change slide.
- A click on a playing step completes it at once.

Docs (gaps, animation and slide show parity, roadmap) are updated.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 17:22:23 +09:00
skylar taylor-barrick 42fb6728fa PDFW2: use fixed-size chunks in PDF text regression 2026-10-14 00:11:33 -06:00
rulindanalambert ba290f171e Fix presenter-view keyboard navigation and end-screen controls 2026-10-14 07:04:45 +02:00
Nikita Rakitin f036a8e805 PPTX: Color Pulse emphasis is written as a colour change, not a grow 2026-10-14 06:44:59 +03:00
Nikita RakitinandCursor 084e076c1d Undo: cap the history by memory as well as by steps
Undo kept up to 500 steps whatever their size. Steps share what an edit didn't touch, so most
are small, but a deck-wide edit (slide size, theme, find-and-replace style changes) keeps a copy
of every slide: 500 of those on a big deck could hold hundreds of copies. Each step's cost is now
estimated when it is pushed (the slides, masters and media it doesn't share with the document
after it), and the oldest steps are dropped while the total passes History::byte_limit
(UNDO_BYTE_BUDGET, 256 MiB, by default). The newest step always stays.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-14 06:41:16 +03:00
Nikita RakitinandCursor fa4b80ed65 UI: Slide Master Preserve and Title or Footers placeholders
Preserve the open master or layout, and turn its title and footer
placeholders on or off. Each change is one undo step, and a value that
is already set is not.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-14 06:40:11 +03:00
Nikita RakitinandCursor 5d9f47c81a Clipboard: rich text and pictures for other apps
Copy puts HTML on the pasteboard with the same plain words, so Pages keeps
bold, italic and underline, and a paste of that HTML keeps them here. A
shape with no text copies out as a picture.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-14 06:37:49 +03:00
Nikita Rakitin ce3725a5c8 PPTX: literal CR LF and CR in XML read as LF; line feeds in run text read as line breaks 2026-10-14 06:37:15 +03:00
Nikita Rakitin 8bbea22f74 Media: refuse MP4s whose sample tables overrun the file before symphonia reserves memory for them 2026-10-14 06:26:15 +03:00
Nikita RakitinandCursor 26d8bfdd3a UI: Design Effects applies a theme effect scheme
design.effects replaces the theme's format scheme (fills, lines and
effects) with DeckCraft, Soft, Crisp, Lift, Glow or Plain. Colours and
fonts stay. The scheme already in use is not an undo step.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-14 06:21:07 +03:00
Nikita Rakitin 5115f77f08 Media: damaged audio no longer hangs the demux loop or panics in symphonia 2026-10-14 06:20:10 +03:00
Nikita RakitinandCursor 2f3a525568 UI: Format Shape fill transparency follows the selection
The Fill slider seeded itself at 0% and wrote that when it lost focus, so a
solid fill that was already transparent opened as opaque and could be cleared.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-14 06:16:14 +03:00
Nikita Rakitin 800c2008df PPTX: table styles the file defines are kept on save even when no table uses them 2026-10-14 06:15:05 +03:00
Nikita RakitinandCursor d6b9cc9b5e Outline: lay out only the slides in view
Outline view built every slide's title and text editors each frame, so a 2000-slide deck took
about 40 ms a frame in a release build (more with real text). Slides outside the view (with a
margin) now take their last measured height, estimated from their line count until first
shown; the current slide is always laid out so its editor keeps the focus.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-14 06:13:10 +03:00
Nikita RakitinandCursor 1e6292306a UI: Format Background picture fill sets transparency and tiling
A picture background can set transparency, tile, offset, scale,
alignment and mirror. A solid fill can set transparency. Apply to All
copies the current slide's background, including a picture, onto every
slide. Unchanged options are not an undo step.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-14 06:08:40 +03:00
Nikita Rakitin c4a9f25754 Charts: a chart frame with no width no longer panics 2026-10-14 05:58:30 +03:00
Nikita RakitinandCursor 256612b232 UI: Trim Media dialog follows the selection
Trim Media opened at zero for start, end and both fades, so OK
cleared a clip that was already trimmed. The fields now start from
the selected audio or video.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-14 05:54:32 +03:00