Releases: hugohe3/ppt-master
v2.10.0
Highlights
Mode + Visual-Style — two independent catalogs
The old "three executor styles" model is retired. Deck structure and deck look are now two orthogonal axes the Strategist locks separately, so any structure can pair with any style:
- Modes (how the argument is structured) —
pyramid/narrative/instructional/showcase/briefing, plus a user-authority escape hatch for custom structures. Keynote / 发布会 / TED-style requests route toshowcase. - Visual styles (how the deck looks) — the catalog grew to 16 named styles across regrouped families (Swiss-minimal, editorial, soft-rounded, dark-tech, brutalist, blueprint, memphis, zine, photo-editorial, data-journalism, ink-wash, glassmorphism, …), each zero-HEX and reference-strength so palette stays driven by the deck's real colors.
- The Strategist locks
modeandvisual_styleindependently intospec_lock.md; the executor and resume-execute paths read both.
Template-fill — direct PPTX route (issue #53)
A new standalone route reuses an existing .pptx design and fills new content back into it, editing PPTX directly (it never enters the SVG generation pipeline) so the output stays natively editable:
- check-plan guardrails flag non-text source pages and over-reuse of the same source slide before filling.
- Slide library now exposes chart data, and private parts are isolated on slide reuse with improved capacity checks.
- See
workflows/template-fill-pptx.md.
Strategist & content quality
- One core message per outline page — each page now carries a single primary point, pushing decks away from the even-weight "web look".
- Per-block expression register — each content block follows its natural expression mode instead of defaulting to bullets; prose rendering hardened against bullet gravity.
- Hero-page title layer choice at h.5 (default SVG title vs. embedded-in-image title).
- Opt-in refine-spec checkpoint — ask to review/revise the full spec before any image or SVG work; off by default. (
workflows/refine-spec.md)
Converter
- DOCX equations → LaTeX — Word-native and MathType "Office Math" (OMML) formulas are now rewritten to inline LaTeX instead of being silently dropped. Pure-Python, no new dependencies. (Classic MathType OLE objects carry no OMML and are kept as their preview image.)
- PPT source — tolerate notes slides whose placeholders have no
notesMaster.
Export & fidelity
- Paragraphs merge by default — mergeable
dy-stacked blocks collapse into one editable text frame; pass--no-mergefor strict per-line fidelity. - Accurate document properties stamped on export, with an optional
metadata.jsonoverride. - PPTX ⇄ SVG text fixes — font-size resolved from
pPr/defRPr, placeholder list text styles inherited, digits/%treated as tabular width, CJK soft-break join spaces dropped, flat inline tspan runs merged. - Wider font variety and recognition to reduce default-font sameness across decks.
Image generation
- OpenAI-compatible knobs replace per-provider backends, simplifying configuration.
- Dropped post-generation in-image text verification (redundant with live preview).
Live preview & editor
- Direct on-canvas editing (L1 text / L2 style / L3 geometry) documented across the guides;
svg_editornow accepts added move coordinates.
Icons
- Outline icons preserve their stroke colors.
Community
- New corporate sponsor: RunAPI.
- README reframed around "it's a tool, not a wishing well"; Gemini 3.5 Flash noted as a strong value pick.
Loading just the skill? The attached ppt-master-skill-v2.10.0.zip (~48 MB) contains only skills/ppt-master/ for Codex / Cursor / non-Claude-Code hosts. The full repository remains the primary working form.
v2.9.0
Highlights
Live Preview — direct on-canvas editing (no AI round-trip)
The live preview editor gains a full direct-edit surface, so layout nudges no longer need an AI round-trip:
- Object inspector — select any element to edit geometry, safe text content, and raw SVG attributes (
fill/stroke/opacity/font-size…). Group and multi-select batch editing supported. - Drag to move — press-drag a selected element to reposition it; the whole selection moves together under multi-select, mapped through each element's own transform so moves track the cursor at any zoom.
- Arrow-key nudge —
↑ ↓ ← →moves the selection 1px,Shift + arrow10px. - Overlap picker — right-click lists every selectable element under the pointer, so stacked shapes can be reached without blind cycling.
- Undo + coalescing —
Ctrl+Z/ Undo drops the last staged edit; consecutive edits to the same field collapse into one undo step. Staged edits preview live and write to disk only on Apply changes, with an unsaved-work guard before you lose them.
Edits persist through the export pipeline — moved text frames, promoted multi-line tspans, and repositioned icons all reproduce in the PPTX. (workflows/live-preview.md)
LaTeX formula rendering
- New
latex_render.pyrenders LaTeX math to images from a Strategist-locked manifest, with a 4-provider fallback chain (CodeCogs / QuickLaTeX / mathpad / Wikimedia). (scripts/latex_render.py) - Strategist writes the formula manifest after the typography confirmation;
--dry-runvalidates without rendering.
Converter & export fixes
- Text gradient fills are now preserved on the PPTX → SVG path.
- Pure-translate transforms on text are absorbed into the text frame position instead of being silently dropped.
- Notes slides — dropped a dangling
notesMasterrelationship and added a package-rels guard, fixing PowerPoint repair prompts on decks with speaker notes. - PDF source — tighter vector-figure crops.
- EPUB source — gracefully handles broken manifests.
New example decks
- Attention Is All You Need — narrated deck, now the primary download on the README.
- LoRA (Hu et al., 2021).
AI image & Strategist refinements
text_policyreworked into a two-layer ownership model with per-row judgment (page-level chrome always SVG-owned); subject-domain prompt-depth guidance added.- AI-image prompt guidance — dropped stale "CJK fails / English-only" capability claims; SVG-overlay reservation scoped to
hero_pageonly; architecture / schematic examples added to §5.3.
Config & infrastructure
.envlookup order now includes the skill directory (Codex / Cursor loads).- Default
projects/directory anchored to the current working directory. - Image generation avoids the OpenAI SDK transport (fixes some proxy setups).
- Resolved a marketplace manifest conflict from a duplicate skills spec.
Docs
- README — new Getting Started guide, slimmed hero, stance note on the Python + agents shape.
- Roadmap opens an "Under consideration" section (LaTeX math was the first entry — now shipped).
Skill-only package — ppt-master-skill-v2.9.0.zip below loads just skills/ppt-master/ as an AI agent skill (Codex / Cursor / non-Claude-Code). The full repository — including the examples/ decks the AI reads to learn conventions — remains the primary form; clone or download the source for that.
v2.8.0
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: v2.7.0...v2.8.0
v2.7.0
Highlights
Chart template library — structure-named
- Chart filenames now describe visual structure, not domain models.
swot.svg→quadrant_text_bullets.svg,bcg_matrix.svg→quadrant_scatter_axes.svg,porters_five_forces.svg→hub_inward_arrows.svg, etc. Model names (SWOT / BCG / PEST / OKR / Porter's) live insummarykeywords so Strategist匹配 still works. charts_index.jsonslimmed tometa + charts.{summary}only — dropscategories/quickLookup/keywords/label. Chinese↔English matching relies on summary自带等价词.- New templates:
segmented_wheel,arc_anchored_list, plus a card / connector / depth-pattern expansion batch.snake_flowandisometric_stairsrebalanced for visual weight. - Strategist §VII chart-match framing widened — encourages reuse via structural fit rather than exact model name.
Template system — explicit-path-only triggers
/create-templateand template selection trigger only on user-supplied directory path. No slug matching, no name resolution.layouts_index.jsonis discovery-only metadata.create-templateworkflow restructured into intake → proposal → confirmation gate three-stage flow.- New mirror replication mode for verbatim PPTX library import (在 standard / fidelity 之外).
design_spec.mdslimmed to a personality-only skeleton; 8-variant fidelity cap dropped.- Strategist Style Objective confirmation split into mode + visual style two questions.
- Removed legacy templates:
exhibit,科技蓝商务,mckinsey,smart_red.
PPTX ↔ SVG round-trip — fidelity hardening
pptx_to_svg: pattern fills, EMF/WMF/Office vector assets, theme-style backgrounds for masters/layouts standalone, layered + flat view emission, all-masters/all-layouts exposure.svg_to_pptx: affine transforms preserved for native pictures, nested<svg viewBox>sprite crops →<p:pic>,round2SameRectround-trip, SVG text transparency + stroke preservation, Japanese / Korean fonts added to EA fonts list (#93).pdf_to_mdbold formatting preserved inmerge_adjacent_formatting(#91).- DOCX office vector image metadata preserved; EMF assets supported in PPT markdown export.
Customizable animation + recorded narration
- New animation sidecar workflow — semantic custom animation planning, page-level entrance/emphasis/exit.
- Recorded narration export hardened; narration + animation guidance synced across docs.
Split-mode resume-execute
- New standalone
resume-executeworkflow — open a fresh chat, say "继续生成 projects/",跳过 Phase A 直接进入 SVG 生成 + 导出. - Topic-research workflow refreshed.
Other
pdf_to_mdadds--imagesmode (all/filtered/none).- Dropped
web_to_md.cjs+ Node.js dependency — pure Python now. - Image
.envloader strips inline#comments;.envexamples move inline comments to their own line. - SVG editor serves
/assets/so PPTX-imported media renders. - OpenAI
gpt-image-2request options validated. - Executor batch-reads layout / chart templates before generation.
spec_lockgains per-pagepage_layoutsandpage_charts; chart layout compatibility clarified.- Marketplace plugin tracks commit SHA instead of pinned version.
Install / upgrade
See README for the four supported install paths (Claude Code / Cursor / VS Code + Copilot / Codebuddy). No breaking changes for existing projects.
Chart filename migration note: if you reference chart templates by filename in custom prompts or external scripts, several files were renamed in this release. Check skills/ppt-master/templates/charts/ for the new structure-based names.
Full Changelog: v2.6.0...v2.7.0
v2.6.0
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: v2.5.0...v2.6.0
v2.5.0
✨ 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
v2.4.0
✨ 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
v2.3.0
Highlights
Native DrawingML export is now the default. Every element — text, shapes, charts, icons — exports as a real PowerPoint object. Click anything and edit it directly. No more "Convert to Shape."
Two files per export: a native .pptx (fully editable) and an _svg.pptx (visual reference backup), both saved to exports/ with timestamps.
What's New
Converter & Export
- Native PPTX export with DrawingML shapes — text boxes, groups, gradients, shadows, glow effects all convert natively
- Office compatibility mode (default on) — PNG fallback via
asvg:svgBlipfor Office 2016+ / LTSC 2021 - SVG
clipPathon images → native DrawingML picture geometry - SVG
marker-start/marker-end→ native DrawingML arrow heads - SVG
rotate()transform support on all element types - Stroke linejoin, text-decoration, donut chart, and shadow/glow improvements
Templates & Visualization
- 20 layout templates across 5 categories (brand, general, scenario, government, special)
- 52 visualization templates — charts, infographics, process diagrams, relationship diagrams, strategic frameworks
- 6,700+ vector icons (Tabler Filled, Tabler Outline, Chunk)
- PPTX template import for
/create-templateworkflow — extract backgrounds, logos, theme colors, fonts from existing.pptxfiles
Source Conversion
- PowerPoint → Markdown conversion (
ppt_to_md.py) - DOCX / EPUB / HTML / LaTeX / RST conversion via Pandoc (
doc_to_md.py) - PDF image noise filtering for cleaner extraction
- macOS Keynote fallback for PPTX template import
Image Generation
- 12 backends: Gemini, OpenAI, Qwen, Zhipu, Volcengine, Stability, FLUX, Ideogram, SiliconFlow, Fal, Replicate, MiniMax
- Explicit provider configuration with per-backend API keys
Workflow
- Topic research workflow for source-less PPT generation
- Mandatory design spec and chart template read gates
- Sequential page generation enforced for cross-page consistency
exports/output structure with timestamps
Community
- Comprehensive FAQ based on real user issues
- Issue templates (bug report + feature request)
- CONTRIBUTING.md, Code of Conduct, Security Policy
Requirements
- Python 3.10+
- Office 2016+ (Office 365 recommended)
- Optional: Node.js 18+ (WeChat), Pandoc (DOCX/EPUB)