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.
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>
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>
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>
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>
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>
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>
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>
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>
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>
Design › Fonts › Customize Fonts… opens Create New Theme Fonts.
Empty design.fonts params open the dialog; a name and heading or body
faces apply to the open master in one undo.
Co-authored-by: Cursor <cursoragent@cursor.com>