Skip to content

feat(export): PPTX fidelity upgrade - content-parity gate, OOXML verifier, SVG exporters - #24

Merged
tph-kds merged 1 commit into
mainfrom
feature/pptx-fidelity-upgrade
Aug 10, 2026
Merged

feat(export): PPTX fidelity upgrade - content-parity gate, OOXML verifier, SVG exporters#24
tph-kds merged 1 commit into
mainfrom
feature/pptx-fidelity-upgrade

Conversation

@tph-kds

@tph-kds tph-kds commented Aug 10, 2026

Copy link
Copy Markdown
Owner

Summary

Adds a fidelity layer to the PPTX export pipeline that ensures meaningful visible content survives into the PowerPoint output - no diagram summaries, no silent omissions, a blocking content-parity gate, and real OOXML archive verification.

What's included

Fidelity layer (new modules)

  • fidelity-types.ts - FidelityBlockReport, PptxFidelityPolicy, FidelityHardRules
  • fidelity-policy.ts - default policy with 0.9 meaningful-content recall threshold
  • content-parity.ts - text-recall metric (ratio of exported text tokens to expected)
  • representation-planner.ts - per-block representation planning (native/svg/raster/unsupported)
  • fidelity-report.ts - report builder, status mapping, block counting

SVG generators

  • svg-diagram.ts - deterministic Mermaid-free diagram SVG generator
  • svg-snapshot.ts - structured SVG snapshot fallback for visual blocks

OOXML structural verifier

  • pptx-verifier.ts - JSZip-based archive validation (slides, text survival, media rels, notes, links)

Exporter wiring

  • pptx-exporter.ts: fidelity-first mode, per-block representation, parity gate, archive verification
  • block-exporters/video.ts: new video exporter with SVG snapshot fallback
  • block-exporters/diagram.ts: SVG via renderDiagramSvg
  • block-exporters/fallback.ts: SVG snapshot fallback

Preflight and dialog

  • export-preflight.ts: estimated recall, fallbacks, missing blocks
  • export-dialog.tsx: fidelity-first mode selector, preflight summary, blocks download when recall < 0.9

Starter-components mirror

  • Adapted imports for scaffold's module structure
  • Block type alias added to deck-types.ts
  • Full fidelity tree, video, and pptx-verifier

Bug fixes

  • Fixed pptx-theme.ts: removed invalid headColor/bodyColor (PptxGenJS ThemeProps only supports fonts)
  • Eliminated double calculateContentParity iteration in buildExportReport

Tests

  • 24 test files, 234 tests all passing

Documentation

  • Updated deckforge-export SKILL.md, system-prompt.md, workflows
  • Added QUICKSTART.md for new users

Validation

  • 234 tests pass (vitest)
  • Typecheck clean
  • npm run validate exit 0
  • All 7 skill bundles PASS

…fier, SVG diagram/snapshot exporters

- Fidelity layer: fidelity-types, fidelity-policy, content-parity (text recall), representation-planner, fidelity-report
- SVG generators: deterministic diagram SVG, structured snapshot fallback
- OOXML structural verifier: pptx-verifier (JSZip-based archive validation)
- Video block exporter with SVG snapshot fallback
- Export preflight: estimated recall, fallbacks, missing blocks
- Export dialog: fidelity-first mode, preflight summary, blocking gate on low recall
- Starter-components mirror: adapted imports, Block type alias, full fidelity tree
- Fixed pptx-theme.ts: removed invalid headColor/bodyColor (PptxGenJS ThemeProps only supports fonts)
- Performance: eliminated double content-parity iteration in buildExportReport
- Tests: 24 test files, 234 tests all passing
- Docs: updated deckforge-export SKILL.md, workflows, system-prompt
- Added QUICKSTART.md for new users
@cursor

cursor Bot commented Aug 10, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@tph-kds
tph-kds merged commit 9452fc7 into main Aug 10, 2026
25 of 26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant