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