Fix up merged PRs: rustfmt; drop doc rows the union merge left twice

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Brandon Thomas
2026-10-14 13:51:53 -04:00
co-authored by Claude Opus 5.5
parent 6902c4bf92
commit f9c1000e35
7 changed files with 8 additions and 30 deletions
-2
View File
@@ -139,8 +139,6 @@ Ranked; detail and the full beta plan in [docs/roadmap.md](docs/roadmap.md).
corpus, embedded fonts, #70, #74, #77, EMF/WMF and SVG. 36–64 h.
2. **PPTX on real decks:** owned corpus, round-trip checks, fixes; #70, #74, #77; EMF/WMF and SVG.
`corpus_media.rs` keeps 3-D models and animation bounce end. 36–64 h.
2. **PPTX on real decks:** a larger owned corpus and the remaining round-trip losses; #70, #74, #77;
EMF/WMF and SVG. 36–64 h.
3. **Localization:** catalog, system language (#15), zh-Hans, es, fr, de, ja with IME. 27–46 h.
4. **Output:** vector PDF, printing. 10–16 h.
5. **Depth that users hit:** font weights (#69), chart data and elements, Animation Pane timeline,
+1 -1
View File
@@ -2,8 +2,8 @@
pub mod animation;
pub mod arrange;
pub mod background;
pub mod artistic;
pub mod background;
pub mod design;
pub mod edit;
pub mod file;
-2
View File
@@ -18,8 +18,6 @@ Coordinates are slide points (1/72 inch; a 16:9 slide is 960 × 540) unless note
| `ui.inspect` | — | UI state, active tool, window/canvas/slide rects, dialog, `home` (the File tab open over a presentation), `backstage` (its page, also the start screen), slide show state (`grid`, `zoomArm`, `zoom`, `blank`, `presenterPaused`, `presenterSecs`, `notesPx`, `custom`, `goto`; `cells` while See All Slides is open), documents, perf (fps, render ms) |
| `ui.tool.select` | `{tool, preset?}` | `select`, `text`, `shape` + preset, any preset name, `curve`, `freeform`, `scribble`, `pen`, `highlighter`, `eraser` |
| `ui.pointer` | `{events: [{kind: down\|drag\|up\|move\|doubleclick\|tripleclick\|contextclick, x, y, mods?}], mods?}` | Drive the active tool in slide points through the same code path as the mouse (`contextclick`: the right-button press that selects before the context menu) |
| `ui.key` / `ui.text` | `{key, shift?, alt?, cmd?}` / `{text}` | Keyboard input (also drives a running slide show) |
| `ui.pointer` | `{events: [{kind: down\|drag\|up\|move\|doubleclick\|tripleclick, x, y, mods?}], mods?}` | Drive the active tool in slide points through the same code path as the mouse |
| `ui.key` / `ui.text` | `{key, shift?, alt?, cmd?}` / `{text}` | Keyboard input (also drives a running slide show: digits then Enter go to that slide, G is See All Slides, Z arms zoom, T pauses the presenter timer, R resets it, `[` and `]` change notes size, Esc clears a slide number, the grid and zoom before it leaves the show) |
| `ui.ime` | `{preedit, active?: [start, end]}` / `{commit}` | An input method's composition through egui, as a real one arrives: shown in place on the slide or in a focused field; `{"preedit": ""}` cancels |
| `ui.move` / `ui.click` / `ui.drag` | screen points | Real egui pointer input — reaches every widget, menu and pane |
+6 -11
View File
@@ -76,10 +76,8 @@ the round trip even though DeckCraft doesn't model it.
| Presentation, slide size, sections (p14), custom shows | yes | yes | |
| Slide masters, layouts, placeholders and inheritance | yes | yes | |
| Themes: colour, font (Latin/EA/CS), effect schemes, background styles | yes | yes | Unknown theme parts kept |
| Notes slides and notes master | yes | yes | Header, footer, date and slide-number text on the notes master is kept. No notes-master editing view |
| Handout master | no | no | |
| Notes slides and notes master | yes | yes | No notes-master editing view |
| Handout master | yes | yes | Header, footer, date and slide-number text is kept. No handout-master editing view |
| Notes slides and notes master | yes | yes | Header, footer, date and slide-number text on the notes master is kept. Edited in View ▸ Notes Master |
| Handout master | yes | yes | Header, footer, date and slide-number text is kept. Edited in View ▸ Handout Master |
| Shapes: preset geometry (~180 presets), custom geometry, groups, connectors | yes | yes | Presets re-derived in `crates/geom/src/preset.rs` (and `preset/extra.rs`). Outlines, dashes, arrowheads and ink inside a group, and text, keep their size in points whatever the group's child-coordinate scale (#233). |
| Fills: solid, gradient, picture (stretch/tile/crop), pattern, group | yes | yes | |
| Lines: dash, compound, caps, joins, arrowheads | yes | yes | |
@@ -116,13 +114,10 @@ the round trip even though DeckCraft doesn't model it.
### What would move the PPTX number
1. A larger owned corpus (corporate templates, SmartArt, chartex charts, EMF, embedded fonts,
every transition and animation) in a corpus repo. `crates/pptx/tests/corpus.rs` already checks
open → save → reopen (parts and text) for decks we author. Still needed: render checks and a
PowerPoint reference render for each (owner runs PowerPoint).
1. A larger owned corpus (corporate templates, SmartArt, chartex charts, EMF, embedded fonts,
every transition and animation) in a corpus repo, with a PowerPoint reference render for each.
`crates/pptx/tests/corpus_kinds.rs` already checks tables, charts, animations, media, sections
and masters/layouts (open → save → reopen).
every transition and animation) in a corpus repo. `crates/pptx/tests/corpus.rs` and
`corpus_kinds.rs` already check open → save → reopen (parts and text) for decks we author:
tables, charts, animations, media, sections and masters/layouts among them. Still needed:
render checks and a PowerPoint reference render for each (owner runs PowerPoint).
2. The round-trip losses above (#70, #74, #77).
3. SVG rendering. EMF+ records inside EMF/WMF are still not drawn.
-5
View File
@@ -123,7 +123,6 @@ Detail in [file-format-parity.md](file-format-parity.md).
exist to compare against. `corpus_charts.rs` round-trips one owned slice (a combo chart with
data labels and trendlines, a merged table with diagonal borders, text columns, autofit,
vertical text and a WordArt warp). That is still a generated deck, not a corpus of real ones.
### PPTX corpus is only decks we author
- **Evidence:** `crates/pptx/tests/corpus_kinds.rs` builds decks in this repo and checks open → save →
reopen (package parts and text): tables, charts, animations, media, sections, and several masters
and layouts. A handout master with a header, footer, date and slide number used to disappear on
@@ -133,10 +132,6 @@ Detail in [file-format-parity.md](file-format-parity.md).
- **Estimate:** 20–35 h: grow the owned corpus in `storytold/photocraft-corpus` style (craftrules
`standards/test-corpora.md`), add render checks, have the owner open outputs in PowerPoint, fix
what breaks. **Beta blocker.**
(corporate templates, SmartArt, `chartex` charts, embedded fonts, EMF) is still mostly unknown.
- **Estimate:** 20–35 h: build an owned corpus in `storytold/photocraft-corpus` style (craftrules
`standards/test-corpora.md`), add import → render → export → re-import checks, have the owner open
outputs in PowerPoint, fix what breaks. **Beta blocker.**
### Round trip loses media playback options and animation rewind (#74, #77)
- **Evidence:** issues filed 2026-10-10 by an automated reviewer; media playback options and the
-2
View File
@@ -12,8 +12,6 @@ The summary between `<!-- SUMMARY -->
| P2 | 54 | 13 | 15 | 26 | 38% |
| P1 | 65 | 38 | 21 | 6 | 75% |
| P2 | 54 | 13 | 16 | 25 | 39% |
| P1 | 65 | 38 | 21 | 6 | 75% |
| P2 | 54 | 13 | 16 | 25 | 39% |
| Area | Parity |
|---|---|
+1 -7
View File
@@ -35,11 +35,8 @@ ready** (estimated), **10–16 h** to parity.
| Media playback with controls, play across slides, full-screen video | yes | yes | WMA/WMV not decodable |
| Media playback with controls, play across slides, full-screen video | yes | yes | Seeks and loops preserve new-generation video frames and end-of-stream; queue regression and repeated seeks across H.264/HEVC/VP9/AV1 in `crates/media`. WMA/WMV not decodable |
| Media playback with controls, play across slides, full-screen video, Play/Pause/Stop in the click sequence | yes | yes | WMA/WMV not decodable; click sequence since #116 |
| Animated GIFs play; pause from their corner button | yes | yes (#39) | |
| Media playback with controls, play across slides, full-screen video | yes | yes | WMA/WMV not decodable. Slide Show ▸ Show Media Controls (on by default) hides the playback bar |
| Animated GIFs play; pause from their corner button | yes | yes (#39) | The corner button hides with Show Media Controls |
| See All Slides grid during the show | yes | no | |
| Zoom into part of a slide during the show | yes | no | |
| See All Slides grid during the show | yes | yes: G, or All on the show bar and in presenter view; click a thumbnail, Esc closes the grid | Hidden slides are labelled; the first 48 slides are shown |
| Zoom into part of a slide during the show | yes | yes: Z, then click the slide (or the presenter slide); 2×, Esc or another click leaves it | The presenter keeps the whole slide and draws a frame on the zoomed part |
| Pen and highlighter ink | yes | pen only (Cmd+P pen, Cmd+A arrow, E erases all ink) | No highlighter, per-stroke eraser, ink colours, or keep/discard annotations prompt |
@@ -58,11 +55,8 @@ ready** (estimated), **10–16 h** to parity.
| Pause / reset timer, clock | yes | yes: Pause/Resume and Reset in presenter view (T pauses, R resets); the clock is local time, `--:--` where there is no clock | Pausing the timer does not pause the show, animations or rehearsal |
| Slide counter, previous/next/end buttons | yes | yes | |
| Keyboard navigation while Presenter View has focus | yes | yes | Shares the audience window's key handling; handled keys are consumed before buttons, and the presenter stays available at the end screen |
| Notes font size, scrolling | yes | scrolling only | |
| Placed on the presenter's display automatically, show on the projector | yes | **no**: opens wherever the OS puts it | Beta blocker, 3–5 h |
| Swap displays | yes | no | |
| Notes font size, scrolling | yes | yes: A- / A+ (and `[` / `]`), 12–48 pt in steps of 4, default 18; the notes scroll | |
| Placed on the presenter's display automatically, show on the projector | yes | **no**: opens wherever the OS puts it | Open PR #433 places the show on a second display when one is attached. This change does not |
| Placed on the presenter's display automatically, show on the projector | yes | **no**: opens wherever the OS puts it | Beta blocker, 3–5 h. Open PR #433 places the show on a second display when one is attached. This change does not |
| Swap displays | yes | no | Still open on #433 |
| Pen, laser, black screen, zoom from presenter view | yes | Black, White and Zoom buttons; the audience zoom is framed on the presenter slide | Pen and the laser pointer are still keys only; there is no laser yet |
| See all slides from presenter view | yes | yes: All slides opens the grid on the show | |