Release history
ppt-master releases
AI generates natively editable PPTX from any document — real PowerPoint shapes, not images — no design skills needed
All releases
7 shown
- Update project layout to separate `templates/brands/`, `templates/layouts/`, and `templates/decks/` directories; existing monolithic templates must be migrated using the provided multi‑path fusion steps.
- Review Git‑style conflict resolution guidance in `docs/templates-architecture.md` when merging multiple source segments of the same kind.
- When customizing AI image rendering, ensure any `custom` escape hatch prose does not exceed one paragraph per dimension and respects the ≤1 custom candidate limit.
- Live Preview enters main pipeline with browser‑based per‑page annotation and AI rewrite.
- Template architecture split into brand, layout, and deck kinds with multi‑path fusion and Git‑style conflict resolution.
- Brand identity preset subsystem adds first‑class `templates/brands/` directory with reference brands.
Full changelog
Highlights
Live Preview enters the main pipeline
- Browser-based per-page preview launches automatically during generation. Click any element to write annotations directly on the page, then say "apply my annotations" — the AI rewrites that region with your guidance baked in. (
workflows/live-preview.md) - EN/ZH UI, slide navigation toolbar, error surfacing, faster rendering, no more stacked dev servers.
- Built on @WodenJay's #85. Annotation deletions persist to disk on save-all (#127 fix).
Template architecture — three-kind refactor (brand / layout / deck)
Templates split into three independent kinds, each in its own physical directory with a dedicated schema:
| Kind | Writes | Workflow |
|---|---|---|
| brand (templates/brands/) | identity only — color / typography / logo / voice / icon style | workflows/create-brand.md |
| layout (templates/layouts/) | structure only — canvas / page rhythm / SVG roster | workflows/create-template.md (layout branch) |
| deck (templates/decks/) | full replica — identity + structure + middle | workflows/create-template.md (default) |
- Multi-path fusion with segment-level integer replacement: brand + deck → brand overrides identity segment; layout + deck → layout overrides structure segment; brand + layout + deck → both override, deck supplies middle.
- Git-style conflict resolution for same-kind multiples (
brand × 2etc.) — every cross-source segment difference is reported as a conflict; user picks per segment. - Authoritative architecture doc:
docs/templates-architecture.md(中文).
Brand identity preset subsystem
- New first-class kind for identity-only presets under
templates/brands/. Includesanthropicandgoogleas reference brands. - Brand assets reverse-engineered from logos / brand sites / branded PPTX / brand PDFs via
workflows/create-brand.md. - Trigger rule mirrors layout templates: explicit directory path only; no bare-name resolution.
AI image: three-dimension lock + hero_page + custom escape hatch
rendering × palette × typethree-dimension system with Strategist h.5 lock — downstream Image_Generator consumes a fixed contract instead of re-deciding per image.- Strategist h.5 presents ≥3 candidates (4-line format: title / visual / color / mood) when AI images are in scope, instead of single auto-pick. Includes a
Reference imagespointer toai-image-comparison/PNGs. page_role: hero_pagedual-track — local insert + full-canvas hero image coexist with four composition primitives (single-subject / portrait / typographic / atmospheric).- Type narrowed to 11 internal infographic skeletons; hero/background/portrait/typography folded into composition primitives.
- NEW:
customescape hatch. When no preset carries the deck's actual temperament (niche cultural aesthetic, brand HEX outside preset ranges, ceremonial / wuxia / ink-wash, etc.), Strategist may setimage_rendering: customand/orimage_palette: customwith a one-paragraph*_behaviorprose. Image_Generator splices the prose directly into the prompt in place of the preset's fewshot snippet. Per-dimension limit (≤1 custom candidate per dimension; one candidate may carry both). End-to-end contract:image-renderings/_index.md§1.5,image-palettes/_index.md§2, Strategist h.5 hard-rule + Recording the lock, spec_lock fields, Image_Generator Step 2. - Color-as-truth rule: AI image always adapts to deck HEX, never the reverse.
Image layout patterns — Primary + Modifier composition
- Image layout vocabulary split into Primary patterns (composition skeleton) + Modifier patterns (refinement). Compose freely:
#48 side-by-side comparison + #21 rounded rectangle crop + #29 two-stop scrim. - Strategist gated to read patterns and produce verbatim
#<id>references in §VIII Layout pattern column. - Layout pattern diversity self-check added — avoid AI-default
left-image / right-imageeverywhere.
Visual review workflow
New rubric-based per-page visual self-check, run between Executor and post-processing on request (workflows/visual-review.md) — does not auto-trigger; user must invoke. Brand-token H4 hits never silently edit the SVG; per-round Hard hits addressed in same iteration.
Animation customization — slim scaffold + per-slide
animation_config.py scaffoldandlist-groupssubcommands (skills/ppt-master/scripts/animation_config.py).- Per-slide explicit
transition+animationrules — only groups inherit from deck-level defaults. - Default
autosemantic animation mode added tosvg_to_pptx. - New
workflows/customize-animations.mdrunbook for object-level animation tuning.
Capability-showcase example decks
Two new full decks stress-testing core engine guarantees:
examples/ppt169_brutalist_ai_newspaper_2026/— 10-page editorial annual report: wall-to-wall small type + irregular columns + halftone monochrome + single-spot red + real native shapes. Stresses text-position precision and cross-page consistency.examples/ppt169_kubernetes_blueprint_2026/— 10-page Kubernetes architecture walkthrough: isometric blueprint aesthetic, blueprint cyan/amber palette, fully hand-authored SVG geometry (no raster images), custom drawing-in animation. Stresses geometric shape generalization and chart-structure extensibility.
PPTX export hardening
- Pattern fill PPTX safety net in
svg_quality_checker.py— warns on<pattern>withoutdata-pptx-pattern(silent fallback toltUpDiag); errors on values outside OOXMLST_PresetPatternVal(schema-failed PPTX that won't open).shared-standards.md §7documents the closed preset enum. --merge-paragraphsflag for editable paragraph text frames (default off; flatten-tspan per-line split is still default).--svg-snapshotmakes the SVG-snapshot PPTX opt-in (no longer always written).<g rotate(angle,cx,cy)>pivot fixed in grpSp export.- Ancestor
translatepreserved when entering matrix mode (image landing at (0,0) bug fixed). <image>ctx transform no longer double-applied.meetaspect-fit allowed when clip-path is a no-op rect.- Pie / donut / gauge arc-endpoint miscomputation corrected; bullet / bubble / sankey / stacked-area visual consistency improved.
verify-chartsworkflow expanded to cover all data-driven chart geometries.
Public roadmap
Roadmap published in EN/ZH (docs/roadmap.md / docs/zh/roadmap.md) covering recent capability evolution, current focus, and Non-goals (read-arbitrary-PPTX, native PowerPoint charts, uv-as-default, pure speed optimization, CLI/SaaS/desktop forms).
Other improvements
image_gen.py: JSON manifest mode required for in-pipeline AI image generation; adaptive concurrency; Markdown sidecar auto-rendered from manifest.project_manager.py import-sources: propagates source image assets into projectimages/with namespacing.pptx_to_svg:<a:hslClr>hue decoded with correct unit scale (#102).svg_to_pptx: text box width expansion reduced.live-previewserver backup decoupled from SVG snapshot.- README gallery: 6 new decks front-loaded with PPTX download links; Bilibili capability-showcase collection linked.
Full changelog: https://github.com/hugohe3/ppt-master/compare/v2.7.0...v2.8.0
Structural chart filenames + animation sidecar
- Removed `--legacy-render` flag from `pptx_template_import.py`.
- SVG visual editor: javascript protocol stripping and sanitizer fixes to prevent XSS.
- Native PPTX ↔ SVG round‑trip with new `pptx_to_svg` converter and enhanced `svg_to_pptx`.
- Overhauled `/create-template` supporting native‑only import, replication modes (`standard`, `fidelity`) and updated `layouts_index.json`.
- Browser‑based SVG visual editor with element annotation, multi‑select UI and security hardening.
Full changelog
Highlights
Native PPTX ↔ SVG round-trip
pptx_to_svg— semantic OOXML→SVG converter (reverse ofsvg_to_pptx). Reads.pptxdirectly via zipfile + xml.etree, no PowerPoint COM, no Keynote→PDF rasterization. Each<p:sp prst=\"rect\">becomes<rect>, each<p:pic>becomes<image>, each<p:txBody>becomes real<text>+<tspan>with original font preserved. 14 modules underscripts/pptx_to_svg/(~2.6k LOC).svg_to_pptximprovements: consumesvg_output/directly for native pptx, auto-split source per product, elliptical-corner rect via custGeom, croppable images preserved, tspan flattening + whitespace fixes, honourpreserveAspectRatio=\"meet\".finalize_svgconsolidation — crop / fix-aspect / embed-images merged into a singlealign-imagespass.
/create-template overhaul
- Native-only PPTX import: drops legacy PowerPoint-COM / Keynote-PDF renderer, drops
inline_*asset normalization, removesreference_svg_selection.json.pptx_template_import.pyshrinks ~460 → ~110 lines, runs anywhere Python runs. - Replication mode:
standard(default 5-page roster) |fidelity(preserve every distinct layout cluster from source PPTX). Variant naming follows letter-suffix convention (02a_chapter_full.svg,03a_content_two_col.svg); variants reuse parent placeholder set. layouts_index.jsongains apagesfield listing the SVG roster — Strategist template selection can see fidelity templates' coverage.
SVG visual editor (browser)
- Element-level annotation editor with multi-select, Ctrl+click, rubber-band selection, keyboard shortcuts, element property display, in-place project edit. Security hardening: javascript: protocol stripping, sanitizer fixes. English UI.
- Surfaced as a standalone
visual-editworkflow — easier trigger recognition.
Web image search (zero-config)
- License-tier filtered web image acquisition path, added as a first-class alternative to AI image generation.
- Quality-first sourcing with attribution checks; query relevance is the primary scoring dimension.
Audio narration backends
- ElevenLabs, MiniMax Qwen, CosyVoice — multi-backend with voice cloning surfaced as first-class.
- Default MiniMax endpoint switched to domestic
api.minimaxi.com.
Other
- Image generation: ModelScope backend (#83); negative prompts removed across docs/CLI/backends.
- Claude Code plugin manifest (Option C, npx-validated).
docs/rules/— style guides for references and Python code.technical-design.mdrewritten as why-only (drops how-detail duplication).
Install / upgrade
See README for the four supported install paths (Claude Code / Cursor / VS Code + Copilot / Codebuddy). No breaking changes for existing projects; the legacy --legacy-render flag in pptx_template_import.py has been removed (was opt-in only).
Full Changelog: https://github.com/hugohe3/ppt-master/compare/v2.5.0...v2.6.0
- Removed `chart-calibration` command from CLAUDE.md and AGENTS.md
- `generate-audio` workflow for localized voice narration
- Recorded narration export in `svg_to_pptx` enabling narrated video output
- Per-element animations enabled by default with slower pacing
Full changelog
✨ Highlights
Audio Narration & Video Export
generate-audioworkflow: turn speaker notes into localized voice narration, with locale-aware voice picking- Recorded narration export:
svg_to_pptxembeds audio as PPT recorded narration, enabling direct export to narrated video - TTS-friendly speaker notes: Executor rewrites the notes spec to prevent English label leakage in localized output
Animations
- Per-element animations on by default:
svg_to_pptxsplits animations by top-level<g id>out of the box - Slower default pacing: more composed animation timing suited for live presentation
Skill Packaging
skills/ppt-master/made self-contained, ready for standalone installation into other AI IDE workspaces
Docs
- New audio narration & video export guide
- Removed the redundant chart-calibration command block from CLAUDE.md and AGENTS.md
Full commit history: `git log v2.4.0..v2.5.0` (9 commits)
🤖 Generated with Claude Code
- Output files now land in exports/ with timestamped archiving instead of root directory; prior artifacts moved to backup/
- HTML named entities forbidden in SVG; XML escapes (&, <, >, ", ') now required
- Path selection changed from four-option menu to deterministic flow for image generation
- Per-element entrance animations with auto-conversion to PPT element animations and click/cascade timing
- 70+ chart template library with strategic models, enterprise layouts, and architecture diagrams
- Excel workbook to Markdown converter integrated into main pipeline
Full changelog
✨ Highlights
Animations & Transitions
- Per-element entrance animations: top-level SVG
<g id>groups auto-convert to PPT element animations with click / auto cascade - Page transitions: native with-previous / after-previous timing, Office 2010 extension for compatibility
--animation-trigger autoproduces a click-free autoplay sequence; decorative chrome groups are auto-skipped
Chart System
- 70+ chart template library: strategic models, enterprise table layouts, architecture diagram family (enforced title + description slots)
- Chart coordinate calibration: standalone
verify-chartsworkflow +svg_position_calculator.pycovering bar / line / pie / radar - Unified Tailwind color palette across templates;
charts_index.jsonis the selection contract - Harvey-ball and similar shapes inlined to survive PPTX export
Icon Libraries
- Added phosphor-duotone (soft-depth style) and simple-icons brand-logo (with brand-color lock)
- Per-placeholder
stroke-widthoverride; placeholders are explicitly forbidden from carrying their own stroke - Stroke-style libraries now lock a deck-wide stroke width
Image Generation
- Recommended backend switched to gpt-image-2 (legacy compatibility preserved)
- Path selection moved from a four-option menu to a deterministic flow
Source Document Conversion
- New Excel workbook to Markdown converter
ppt_to_md.pywired into the main pipeline
Output Layout
- All generated files now land in
exports/with timestamped archiving _svg.pptxkept as the SVG snapshot backup; prior artifacts moved underbackup/<timestamp>/
SVG Quality
- Well-formed XML check runs before structural validation
- HTML named entities forbidden; XML escapes (
&<>) required - Nested inline
<tspan>formatting preserved through flatten - Key info must use inline
<tspan>highlighting to avoid wall-of-text output - Fixed
rotate(angle cx cy)pivot when converting text
Prompts & Docs
- Strategist / Executor / shared-standards / SKILL prose tightening pass (keep the bones, drop the fat)
- README sponsorship section and positioning framing restructured; PackyCode sponsorship added
- FAQ reframes SVG charts as a deliberate design choice
- Chart calibration promoted to an independent pipeline gate
Web Viewer
- Unified editorial dark theme across index and viewer
- Restored native link behavior and fullscreen preview
Full commit history: git log v2.3.0..v2.4.0 (242 commits)
🤖 Generated with Claude Code
- Native DrawingML export with Office compatibility
- 72 new layout and visualization templates
- Multi-format source conversion via Pandoc