Fix-ups in the merge (review): zoom targets, sections and titles are looked up with get()
instead of indexing; Hyperlink literals carry both main's sound fields and zoom_return;
duplicated test statements left by the test-file union are removed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 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>
- 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>
A SmartArt group now keeps its outline (Shape.diagram: layout + nodes with
levels) and its shapes are regenerated from it inside the group's child
rectangle. New commands: smartArt.nodes, setNodes, addNode (after, before,
above, below), removeNode, promote, demote and layout. Sub-points become
bullets in their parent's shape; the hierarchy layout is a real tree with
connector lines. Text typed into a diagram shape is read back first.
UI: a SmartArt Design contextual tab and a Text Pane (Enter adds a line,
Tab/Shift+Tab demote/promote, Backspace on an empty line removes it).
Co-authored-by: Cursor <cursoragent@cursor.com>
Format > Tabs opens from Home > Line Spacing > Tabs…, from the
Paragraph dialog, or by double-clicking a tab stop on the ruler. It
lists the selected paragraphs' tab stops (inches) with their
alignment. Set adds or replaces a stop at a position with Left,
Center, Right or Decimal alignment, Clear removes one, Clear All
removes them all, and you can change the default tab spacing. OK
applies everything in one undo step through format.tabs, which now
takes `set`. Cancel changes nothing.
The ruler's corner has PowerPoint's tab selector. A click cycles left,
center, right and decimal, and a click on the ruler then sets that
kind of stop. Presses on the rulers no longer reach the slide, so
they don't end text editing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Animations › Preview and Animation Pane › Play All play the current
slide on the canvas instead of opening the slide show. Escape or a
click stops playback. Transitions › Preview still opens the show.
Co-authored-by: Cursor <cursoragent@cursor.com>
While you edit text, the horizontal ruler now shows the text area's
span and the indent and tab markers of the paragraph with the caret.
- First-line indent: the top triangle.
- Hanging indent: the bottom triangle. Dragging it moves the left
indent while the first line stays put.
- Left indent: the box under the hanging triangle. Dragging it moves
both.
- Tab stops are drawn as left, centre, right and decimal marks.
- A click on the ruler adds a left tab, dragging a tab moves it, and
dragging a tab down off the ruler removes it.
Every change goes through a command (format.paragraph or the new
format.tabs). Each is one undo step and applies to the selected
paragraphs, and text editing goes on throughout. format.ruler is a
new query that reports the text area's position and the paragraph's
resolved indents and tabs. Rotated and vertical text show no markers.
Co-authored-by: Cursor <cursoragent@cursor.com>
The title bar's quick access buttons become a list the user controls:
a Customize menu with PowerPoint's common commands and Reset, right-click
any ribbon button to add it, right-click a toolbar button to remove it.
The toolbar is saved with the UI state; app.qat scripts it.
Co-authored-by: Cursor <cursoragent@cursor.com>
Adds edit.pasteSpecial. Keep Source Formatting bakes the copied shapes'
theme colours and theme fonts into fixed values (captured at copy time),
Picture draws the copied shapes into one PNG picture, and Keep Text Only
pastes plain text. Ctrl+Alt+V, Edit › Paste Special… and the Paste menu
open a Paste Special dialog.
Co-authored-by: Cursor <cursoragent@cursor.com>
The editor had one window, so looking at another slide meant leaving
the one you were editing. View › New Window opens one more window on
the same presentation. That window keeps its own slide and shows edits
from the first window. Closing it leaves the presentation open.
Arrange All is not included.
Co-authored-by: Cursor <cursoragent@cursor.com>
Review > Thesaurus (Shift+F7) opens a Thesaurus pane on the selected
word, or on the word at the caret. Clicking a synonym while editing
text puts it in place of that word in one undo step, and the pane
then looks up the new word. You can also type a word into the pane to
look it up.
The word list is written for DeckCraft and has no third-party source:
about 260 senses of common presentation vocabulary in
engine/data/thesaurus.txt. It is embedded, so the Thesaurus also
works offline and in the browser build. Lookups try simple English
endings and keep the word's capitalisation. New commands:
review.thesaurus (a query) and review.replaceWord. Ribbon big buttons
now carry an accessibility label.
Co-authored-by: Cursor <cursoragent@cursor.com>
The model, renderer and PPTX already handled duotone, black-and-white,
grayscale and a transparent colour, but the Color menu offered only
saturation and grayscale. picture.recolor applies PowerPoint's Recolor
presets (No Recolor, Grayscale, Sepia, Washout, Black and White 25/50/75%,
and dark and light variations of Text 2 and the six accents) replacing
the previous recolour; picture.recolors lists them. picture.transparentColor
makes a colour transparent or clears it. The Color menu shows a Recolor
gallery of preview ramps and a Set Transparent Color colour picker.
Co-authored-by: Cursor <cursoragent@cursor.com>
Picture Styles was a menu of six names, each running two or three
separate commands that left the previous style's effects behind. New
picture.style applies one of PowerPoint's 24 picture styles (frames,
shadows, soft edges, reflections, bevels, rounded, snipped and oval
shapes, a rotated frame) as one step that replaces the whole previous
look; picture.styles lists them and "none" clears the style. Picture
Format shows them as a thumbnail gallery, and a Picture Border split
button sets outline colour, weight and dashes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Insert > Table > Draw Table turns on a table pencil. Dragging a box on an
empty part of the slide makes a one-cell table. Drawing a line inside a
table splits the cells it crosses, across or down, and adds a row or
column only where needed, so the cells it doesn't cross stay whole.
Table Design > Draw Borders has the pencil and a Table Eraser. A click
on a border merges the two cells on either side when together they
form a rectangle, and their text is kept.
The new table.drawLine and table.eraseLine commands are each one undo
step. The grid work is pure (engine/src/drawtable.rs). It rebuilds the
table from its anchor cells, so existing merges survive, and it caps
the grid at 200 rows and columns. Ribbon big buttons now carry an
accessibility label.
Co-authored-by: Cursor <cursoragent@cursor.com>
PowerPoint's Design tab shows the current theme in four variants. The
Variants group had only the Colors and Fonts menus. theme_variants builds
four colour schemes from the theme's built-in colours (as designed, two
accent rotations, and a dark variant with light and dark swapped), so
switching between variants doesn't drift. design.variant applies one to
the master; design.variants reports them and which is applied. The
Design tab shows them as a gallery before Colors and Fonts.
Co-authored-by: Cursor <cursoragent@cursor.com>
The model, renderer and PPTX already carried cell borders, diagonals,
margins and vertical alignment, but nothing set them. New commands:
table.borders (all, outside, inside, inside horizontal/vertical, each
side, diagonals or none, with pen colour, width and dash; the facing
side of a neighbouring cell follows, as in PowerPoint), table.cellMargins
(Normal, None, Narrow, Wide or per side) and table.cellAlign. They act on
the given cells, the selected range, the cell with the caret, or the
whole table. Table Design gains a Borders menu with pen weight, style and
colour; Table Layout's Top/Center/Bottom now align cell text (they set
the text body's anchor, which cells override) and gain Cell Margins.
Co-authored-by: Cursor <cursoragent@cursor.com>
Draw > Ink to Shape recognises each pen stroke on the slide's ink layer
as a line, rectangle, oval or isosceles triangle (apex up or down) and
replaces it with that preset shape, outlined in the stroke's colour and
width with no fill. Strokes it can't recognise, and highlighter strokes,
stay ink. The ink shape is removed once it has no strokes left. The
whole conversion is one undo step.
The recogniser (engine/src/inkshape.rs) is pure geometry: ends meeting,
area covered within the bounding box, and spread from the fitted
ellipse. Ribbon big buttons now carry an accessibility label.
Co-authored-by: Cursor <cursoragent@cursor.com>
deckcraft_pptx::import_theme reads the theme of a .thmx (its main document is
a theme part) or of a presentation's first master, with the media its format
scheme uses. design.browseTheme {path | name, data} applies it to the current
master as one undo step, giving the theme's pictures ids of this deck.
Design tab: Browse for Themes… next to the theme gallery and in the Slide
Master Themes menu; the desktop picker offers Office Theme (.thmx) and
presentations. Ribbon small buttons expose their label to accessibility (same
change as #512). Parity row Browse themes M → D.
Co-authored-by: Cursor <cursoragent@cursor.com>
review.compare {path | name, data} reads a revised presentation (native or
PPTX) and lists slide-level revisions against the open one: inserted,
deleted and changed slides, with what changed (text, text formatting,
moved, resized, rotated, formatting, picture, objects inserted/deleted,
layout, notes, transition, animations, background, hidden). Slides match by
id, or by position when the decks share none (fixed for the session so
accepting doesn't switch the matching half way). Shapes match by id, then
name.
review.accept {index | all} applies revisions as one undo step: a revised
slide's media is copied (remapped on an id clash), its shape ids kept unless
another slide uses them (animations follow), its layout matched by id, then
name. review.revisions and review.endCompare complete the set.
Review tab: Compare (file picker), Accept All, End Review; the Revisions pane
lists changes with Go-to and Accept. Parity row: Compare presentations M → P.
Co-authored-by: Cursor <cursoragent@cursor.com>
AutoCorrect gains PowerPoint's options: correct TWo INitial CApitals,
capitalize the first letter of sentences and the names of days, fix
accidental cAPS LOCK, and replace 1/2, 1/4, 3/4 with fraction
characters. "word..." becomes "word…", "word," and "word." are corrected
too, and the built-in list grows from 13 to ~70 entries. The case rules
apply only to typing, not pasted text.
New text.autocorrect sets the options and adds or deletes replace
entries (your own win over the built-in list; deleted built-ins stay
deleted) and returns the list. Preferences ▸ AutoCorrect Options… opens
an AutoCorrect dialog with the options and the editable list.
Co-authored-by: Cursor <cursoragent@cursor.com>