Progress log entry for the wild-case rendering fixes; "Bevel and 3-D rotation" moves from missing to partial (approximate bevels, cameras and face lighting; no extrusion, rigs or 3-D pane); gap estimate narrowed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
16 KiB
Where DeckCraft falls short of PowerPoint
Last reviewed: 2026-10-10 · Last updated: 2026-10-13 · Change: minor (3-D bevel, camera and face lighting rendered; previous: minor, IME composition and CJK interface text landed, #101; previous: minor, core-workflow alpha gate added; stage stays alpha; before that: major, first itemized gap list; full re-measure against PowerPoint for Mac 16.113.4 and the open GitHub issues) · Target: Microsoft PowerPoint for Mac 16.113 (Microsoft 365)
Every known shortfall, one entry each, ranked by how much it stops someone who presents with
PowerPoint from switching. This is the work list: pick from the top. Numbers are summarized in
target-app-parity.md; the feature-by-feature scores are in
parity-checklist.md. Hours are Opus 5.5 agent wall-clock hours including
tests (calibration in target-app-parity.md).
B marks a gap that blocks beta. None blocks alpha: all six core workflows pass the
alpha gate.
When a gap closes, delete its entry, update the parity doc it points to, and add a line to the revision history.
Ranked: the top 15
| # | Gap | Category | Beta | Hours | Doc |
|---|---|---|---|---|---|
| 1 | PPTX never tested against a corpus of real decks | File format | B | 20–35 | file-format-parity.md |
| 2 | Data loss and crashes on common paths (#60, #40, #59) | Stability | B | 6–12 | this file |
| 3 | PPTX round trip drops comment threads, media options, rewind (#70, #74, #77) | File format | B | 3–6 | file-format-parity.md |
| 4 | SVG pictures don't render (EMF/WMF do) | File format | B | 6–12 | file-format-parity.md |
| 5 | No localization: English only | Localization | B (infra + 5 languages) | 55–90 | localization-parity.md |
| 6 | No printing | Feature | B | 5–8 | file-format-parity.md |
| 7 | Fonts: only Regular, Bold and Italic faces (#69) | Feature | B | 3–5 | ui-parity.md |
| 8 | Image paste fails on Windows and Linux (#53) | Feature | B | 2–4 | ui-parity.md |
| 9 | Presenter view isn't placed on the second display | Hardware | B | 3–5 | slideshow-parity.md |
| 10 | Animation Pane: no timeline, thin preview; 64 of ~190 effects | Feature | B (pane) | 10–16 | animation-parity.md |
| 11 | Charts: data grid editing, elements, chartex types |
Feature | B (data, elements) | 12–20 | parity-checklist.md |
| 12 | Format Shape pane thinner than PowerPoint's | UI/UX | B | 6–10 | ui-parity.md |
| 13 | No native macOS menu bar | UI/UX | B | 3–5 | ui-parity.md |
| 14 | PDF export rasterizes slide artwork | File format | B | 5–8 | file-format-parity.md |
| 15 | Slides rasterize on the CPU; no performance baseline | Performance / hardware | 15–30 | hardware-parity.md |
Stability
Close discards an edited presentation without asking (#60)
- Evidence: issue #60; quitting prompts,
file.closedoesn't. PR #75 is open. - Impact: silent data loss on a common path. The worst kind of bug for a presentation app.
- Estimate: 0.5–1 h (land and test #75). Beta blocker.
Startup crashes on some Windows GPUs (#40, #59)
- Evidence: #59 (Intel UHD, access violation in
igvk64.dllduring Vulkan enumeration), #40 (WordCraft, GridCraft and DeckCraft all fail on one Windows 11 PC). The DX12 default (#16) fixed AMD'satio6axx.dllcrash only. - Impact: the app never opens for those users.
- Estimate: 4–8 h (backend probing outside the process or a safe-mode fallback, a software renderer path). Needs a tester with the hardware. Beta blocker.
No soak or long-session testing
- Evidence: unit tests (504), PPTX malformed/fuzz tests and the command panic guard exist; no random command sequences over big decks, no memory or undo-depth soak.
- Impact: unknown crash and slowdown rate in long sessions.
- Estimate: 4–8 h.
File formats
Detail in file-format-parity.md.
PPTX has never met a corpus of real decks
- Evidence: every PPTX test (
crates/pptx/tests, 30 tests) uses decks DeckCraft generates; the 2026-10-07 alpha checklist already listed this as open. No reference renders from PowerPoint exist to compare against. - Impact: the main reason to switch is "open my PowerPoint decks". Fidelity on real decks
(corporate templates, SmartArt,
chartexcharts, embedded fonts, EMF) is unknown. - Estimate: 20–35 h: build an owned corpus in
storytold/photocraft-corpusstyle (craftrulesstandards/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 comment threads, media playback options and animation rewind (#70, #74, #77)
- Evidence: issues filed 2026-10-10 by an automated reviewer; the writer emits legacy comments
only (no
p188modern comments with replies and resolved state, though the reader understands them); media playback options and the animation rewind flag aren't written back. - Impact: a deck opened and saved silently loses review state and show behaviour.
- Estimate: 3–6 h. Beta blocker.
SVG pictures don't render
- Evidence:
crates/render/src/images.rsdecodes throughimage0.25 (PNG, JPEG, WebP, GIF, TIFF, BMP), and EMF/WMF throughdeckcraft-metafile(ported from WordCraft: paths, fills, pens, pattern and hatch brushes, bitmaps and text; clip regions and EMF+ records are not drawn). Nothing reads SVG; PowerPoint's Insert Icons stores SVG with a PNG fallback. - Impact: SVG icons show only their raster fallback, and SVG files can't be inserted. An EMF/WMF that clips its drawing (EXTSELECTCLIPRGN, INTERSECTCLIPRECT) draws past its clip.
- Estimate: 4–8 h (an SVG renderer through
resvg-style crates); EMF/WMF clip regions 2–4 h.
Template, slide-show and macro variants are saved as plain .pptx
- Evidence:
crates/pptx/src/write/mod.rsalways writes thepresentationml.presentation.main+xmlcontent type;.potx/.ppsxopen,.pptm/.potm/.ppsmaren't recognised. - Impact: a template saved as
.potxisn't a template to PowerPoint; macro decks can't be opened even to view. - Estimate: 2–4 h (content types; keep
vbaProject.binuntouched without running it).
No legacy .ppt/.pot/.pps import
- Evidence: PowerPoint for Mac still opens and saves the 97–2003 binary formats
(
CFBundleDocumentTypes); DeckCraft doesn't read them. - Impact: archives of older decks don't open.
- Estimate: 20–35 h (import only, from the public [MS-PPT] spec). Owner decision whether it's worth it.
No OpenDocument .odp
- Evidence: PowerPoint opens and saves
.odp. - Impact: LibreOffice users and public-sector exchange.
- Estimate: 12–20 h (read and write the common subset).
PDF export rasterizes slide artwork
- Evidence:
crates/pdfplaces each slide as an image under a selectable text layer, links and bookmarks. - Impact: large PDFs; blurry when zoomed or printed.
- Estimate: 5–8 h (vector paths, fills and text through the PDF writer). Beta blocker.
No printing
- Evidence: checklist row "Print" is missing; PR #66 (browser print) is open.
- Impact: handouts and speaker notes are printed in many workplaces.
- Estimate: 5–8 h (print through the PDF path and each OS's print dialog). Beta blocker.
No video or animated GIF export
- Evidence: checklist row missing; PowerPoint exports MP4/MOV and animated GIF.
- Impact: sharing a talk as a video is a common request.
- Estimate: 10–16 h (render the timeline frame by frame; an H.264 encoder is the hard part, FilmCraft has one to copy).
Embedded fonts aren't read or written
- Evidence: no
p:embeddedFontLsthandling incrates/pptx. - Impact: decks that rely on embedded fonts reflow.
- Estimate: 3–5 h.
Features
Font weights beyond Regular, Bold and Italic (#69)
- Evidence: #69; the font database maps a family to four faces.
- Impact: Light, Medium and Semibold headings (common in modern templates) render wrong.
- Estimate: 3–5 h. Beta blocker.
Image paste fails on Windows and Linux (#53)
- Evidence: #53 (v0.3.0, Fedora AppImage and Windows).
- Impact: copy-paste of screenshots is a core workflow.
- Estimate: 2–4 h. Beta blocker.
Tab inside a text box ends text entry (#78)
- Evidence: #78.
- Impact: tab stops and indented lists can't be typed.
- Estimate: 1–2 h.
Charts: data grid, elements and the newer chart types
- Evidence: checklist rows "Edit chart data" (P0, partial), "Chart elements" (partial), "Other
chart types" (partial);
chartexparts (waterfall, funnel, treemap, sunburst, histogram, box & whisker) aren't read. - Impact: most business decks have charts; editing their data is routine.
- Estimate: 12–20 h. Data and elements are beta blockers (6–10 h).
SmartArt is pre-drawn shapes only
- Evidence:
crates/pptx/src/read/shapes.rsreads SmartArt's drawing part as a group; no text pane, no layout switching, the diagram data isn't regenerated. - Impact: editing a SmartArt diagram from PowerPoint breaks it.
- Estimate: 10–16 h.
Animation Pane, effect count and preview
Detail in animation-parity.md. 10–16 h; the pane is a beta blocker.
Notes and Handout masters
- Evidence: checklist row missing; PPTX writes a notes master but there's no view to edit it, and no handout master at all.
- Estimate: 4–6 h.
Edit points, text warp, 3-D
- Evidence: checklist rows "Edit points" (P1 missing), "Text warp transforms" (partial: all 40
prstTxWarppresets render and their adjusts round-trip, but there is no Transform gallery or command to apply one, no adjust handles, and arc/circle placement can differ from PowerPoint by 1–3 % of the path length), "Bevel and 3-D rotation" (partial: bevels, camera presets and rotations and face lighting render as approximations andscene3d/sp3dround-trip as raw XML; no extrusion or side faces, only the three-point rig, and no command or pane to apply 3-D). - Estimate: 4–6 h (edit points), 2–4 h (warp gallery, command and handles), 6–10 h (3-D extrusion, rigs and materials, Format Shape page).
Proofing: spelling, thesaurus, AutoCorrect
- Evidence:
review.spellingchecks a small built-in list of frequent misspellings (crates/engine/src/cmd/review.rs); no dictionaries, no thesaurus, no AutoCorrect. - Estimate: 8–14 h (Hunspell-format dictionaries under an open licence per language).
Equations
- Evidence: checklist row missing; PR #55 (OMML editor, +10.5k lines) is open.
- Estimate: 3–6 h to review, land and round-trip.
Smaller missing rows
Zoom (summary/section/slide, 6–10 h), reuse slides (2–4 h), laser pointer (1–2 h), transition sounds (1–2 h), artistic effects (6–10 h), remove background (6–10 h; needs a model or a classical matte), compress pictures (2–3 h), insert screenshot (2–3 h), record audio/screen and record slide show (8–12 h), compare presentations (6–10 h), password protection (4–6 h, ECMA-376 agile encryption), ink to shape/text (6–10 h), icons and 3-D models (8–14 h, needs an open icon set).
UI/UX
Detail in ui-parity.md.
- No native macOS menu bar.
menus::menu_tree()exists but nothing installs it. 3–5 h. Beta blocker. - Format Shape pane thinner than PowerPoint's (Fill/Line/Effects/Size/Text Box pages, picture and texture options, 3-D). 6–10 h. Beta blocker.
- File tab depth (#76 landed the Backstage): no online templates, cloud places, printer choice, video/GIF/CD exports or document protection. 4–8 h for the parts that need no cloud.
- Window chrome (#71 macOS controls misaligned, #26 GNOME title bar, #41 system light/dark). 2–4 h.
- Icon consistency across Craft apps (#73, #56). 2–4 h; coordinate in craftrules.
- Dialogs: 27 dialogs vs PowerPoint's ~60 (Font, Bullets and Numbering, Find/Replace dialog, Replace Fonts, Action Settings, Print, Insert Object…). 8–14 h.
- Command palette defaults to an Export entry that fails (#79). 0.5 h.
Hardware
Detail in hardware-parity.md.
- Presenter view isn't placed on the second display; the show doesn't pick the projector. 3–5 h. Beta blocker.
- CPU slide rasterization (
vello_cpu); PowerPoint renders on the GPU. 12–20 h (vello hybrid or wgpu path). - Software-only video decode; PowerPoint uses VideoToolbox/Media Foundation. 8–14 h (copy FilmCraft's hardware decode).
- No pen pressure or tilt for ink; no pinch-zoom or trackpad gestures. 3–6 h.
Localization
Detail in localization-parity.md.
- English only, no string catalog (#15, #30; Ukrainian PR #34 open). PowerPoint for Mac ships 26 languages. Infrastructure 8–14 h, then 3–16 h per language plus native review. Beta needs the infrastructure and at least Simplified Chinese, Spanish, French, German and Japanese (~30–45 h).
- Hangul in the interface needs an installed Korean font (#101). craft-fonts has no Korean face (Noto CJK is excluded by the asset policy), so the web build draws Korean file names, notes and outline text as boxes; desktop borrows Malgun Gothic, Apple SD Gothic Neo or Noto Sans CJK. Adding an openly licensed Korean face (e.g. Nanum Gothic, OFL) to craft-fonts: 1–2 h.
- Table cells don't underline an IME composition (the text is composed in place, #101). 1 h.
- UI isn't mirrored for right-to-left languages. 6–10 h.
- Browser build draws Arabic and Hebrew as missing-glyph boxes in exports (#81). 1–2 h.
Performance
- No baseline. Nothing measures open time, render time per slide, show frame rate or memory
against PowerPoint. 4–8 h for a benchmark suite in
xtask. - Morph aligns outlines every frame (#67, PR open). 1 h.
Ecosystem
- 8 original themes, no template gallery. PowerPoint offers dozens of designs online and offline. 8–14 h for a larger original set (asset policy: our own designs only).
- No add-ins or VBA. Out of scope by policy; MCP/CLI automation is the alternative.
AI features
- No Designer, Copilot, Speaker Coach, live subtitles or Translate. All are Microsoft cloud services; an offline rule-based Designer is in the catalogue (P2). Local models (speech-to-text for subtitles, translation) need an owner decision on licensed models. 20–40 h.
Revision history
| Date | Change | Summary |
|---|---|---|
| 2026-10-13 | minor | Shape, picture and table rendering checked against PowerPoint on ~150 synthetic edge-case slides; 3-D bevels, cameras and face lighting now render approximately (gap narrowed to extrusion, rigs and the 3-D pane) |
| 2026-10-12 | minor | IME composition in slide text and notes, and CJK interface text with real glyphs (#101): the IME gap is now Korean on the web and table-cell underlines |
| 2026-10-12 | minor | EMF/WMF text, pattern and hatch brushes drawn; legacy OLE and ActiveX previews shown; the SVG gap keeps only EMF clip regions |
| 2026-10-12 | minor | Text warps render (all 40 presets, adjusts round-trip); the warp gap is now the gallery, command and handles |
| 2026-10-10 | minor | Noted that no gap blocks alpha (core-workflow gate passes) |
| 2026-10-10 | major | Created: every gap from the 2026-10-10 re-measure and the 16 open GitHub issues, ranked, with beta blockers marked |