ppt-master

AI

AI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and animations, data-backed charts and tables on demand, audio narration from speaker notes, and support for your own .pptx templates. · by Hugo He

Latest v4.8.0 · by hugohe3Websitehugohe3/ppt-master

Release activity

Release activity — 10 releases across 9 days since Jul 4, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Jul 4, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 20261 release on Aug 9, 20261 release on Aug 16, 2026
MondayNo releases on Jul 6, 2026No releases on Jul 13, 20261 release on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026
TuesdayNo releases on Jul 7, 2026No releases on Jul 14, 20261 release on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026
WednesdayNo releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026
ThursdayNo releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 20261 release on Aug 6, 20262 releases on Aug 13, 2026
FridayNo releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 20261 release on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026
Saturday1 release on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 20261 release on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026

10 releases since Jul 4, 2026, busiest day 2

Changelog

v4.8.0

Latest
Added 12
  • AI imagery becomes a composition system with coherent element families, transparent cut assets, and hand-rendered lettering that pages can build around
  • Illustration assets are now composable across the deck, allowing both runtimes to plan coherent families of elements and reuse them across slides
  • Decorative lettering is a first-class carrier, prepared as image assets and sliced to transparent elements
  • Transparent slicing recovers clean alpha using explicit pure-RGB chroma keying with spill removal and antialiased edge preservation
  • Three new composition patterns: curved panoramic photo wall from precomputed 2D contours, glyph-shaped picture defaulting to editable text picture fill, and registered device/frame mockup
  • Four new composition recipes: ceremonial fan and arc strips, folded/louvered same-source strips, bento field combination, and staggered photo strip
Changed 5
  • Eligibility for decorative lettering is now decided by criterion rather than page role, checking stability and artistic communication benefit
  • Image sourcing follows the task rather than tooling, with AI or keyed providers used proactively when serving planned visual jobs
  • AI capability is resolved at execution with per-runtime recovery instead of backend or host-tool preflight checks
  • Twelve image backends were realigned to current provider contracts with corrected size, ratio, endpoint, and payload handling
  • Formula compiler was split into focused modules: parser, AST, profile tables, OMML emitter, and run-property merger
Fixed 2
  • Out-of-profile LaTeX input now fails closed rather than degrading silently
  • Incompatible model overrides are now rejected instead of silently applying the wrong schema

v4.7.0 went deep into PowerPoint's own object model. This release turns to the image path — where a deck's pictures come from, what they are allowed to be, and how they get composed into a page. AI imagery stops being a per-page spot illustration and becomes a composition system: coherent element families, transparent cut assets, and hand-rendered lettering that the page can build around. Alongside it, the formula profile grows from a hand-picked LaTeX subset to the documented Microsoft 365 one, and the PPTX → SVG direction learns to bring back motion and math instead of silently dropping them.

AI imagery as a composition system
  • Illustration assets are now composable across the deck. Both runtimes can plan a coherent family of elements — chrome, anchors, figures, accents — batch-generate them on one sheet, and reuse them across any suitable slide, instead of treating each page's picture as an isolated spot.
  • Decorative lettering is a first-class carrier. Artistic lettering is prepared as an image asset, batched by artistic treatment into sheets, and sliced to transparent elements. Native WordArt stays out of scope and ordinary editable text remains the fallback. A page that needs a real heading keeps its native title, with the lettering acting as its display layer — the two coexist rather than compete.
  • Eligibility is decided by criterion, not page role. The trigger used to scan only cover and divider wording. A dish name, exhibit name, year, hero number, or pull quote on a content page is often the more stable string, and set over photography it is exactly where native type reads pasted-on. The rule is now the two questions that actually decide it — is the wording stable, and would an artistic treatment communicate better — with length, line count, and page role no longer filtering candidates. Use stays selective: one small coherent set per deck, never a coverage quota.
  • Transparent slicing recovers clean alpha. Sheet slicing keys off an explicit pure-RGB chroma key, removing spill while preserving antialiased edges and translucent effects. --strict-alpha validates the complete cell boundary and fails closed; without it the legacy warning-only behavior is unchanged. When keying visibly did not take — corners still opaque after --alpha, or --trim removing nothing on either axis — the run names the sampled color and points at --bg / --tolerance rather than quietly shipping a visible box onto the slide.
  • Three new composition patterns and four recipes. A curved panoramic photo wall built from precomputed 2D contours (never shear or skew), a glyph-shaped picture defaulting to the editable text picture fill, and a registered device/frame mockup — plus ceremonial fan and arc strips, folded/louvered same-source strips, the bento field combination, and a staggered photo strip. Every form stays natively editable.
Image sourcing follows the task, not the tooling
  • The resolved visual style no longer decides the image source. In a dogfood run every image on the deck resolved to AI illustration because the style had already answered the source question — including externally verifiable heritage architecture. Per-image source is now a mandatory decision in both runtimes, never inherited, and a deliberate non-documentary choice for a verifiable subject has to be stated.
  • Availability no longer decides fit either. Zero-config web acquisition stays active when AI or keyed providers are unavailable, and a callable generator is used proactively when it serves a planned visual job — the recommendation follows the communication need rather than which credentials happen to be present.
  • Web image search reviews candidates on thumbnails, in isolation. Explicit query variants are aggregated and deduplicated across providers, eight preview thumbnails are saved per page, and originals are downloaded only after selection. The multimodal inspection runs as its own bounded stage so candidate images stay out of the main generation context, with a strict metadata-ranked path for agents without vision.
  • AI capability is resolved at execution, with per-runtime recovery. Planning no longer runs backend or host-tool preflight checks. When automation fails, Default asks for retry, manual fulfillment, or cancellation of the affected images; Quick replans without AI and discloses every fallback. Needs-Manual is reserved for explicit manual selection and blocks export until the required files exist.
  • Twelve image backends were realigned to current provider contracts — retired defaults replaced, provider-specific size, ratio, endpoint, and payload handling corrected, and incompatible model overrides rejected instead of silently applying the wrong schema. --list-backends now reports the effective configuration and whether it came from the process environment or a file, with credentials still hidden.
Native formulas: the documented Microsoft 365 profile
  • The LaTeX profile now covers what Microsoft documents, not a hand-picked subset — the documented commands, environments, macros, colors, and normalizations, plus mhchem. Out-of-profile input still fails closed rather than degrading silently.
  • The compiler was split into focused modules — parser, AST, profile tables, OMML emitter, and run-property merger — with marker styling preserved on math runs and structural controls, and final OMML resource limits enforced.
  • Superscript and subscript export as native text runs. Direct super / sub baseline shift on a tspan lowers to real DrawingML baseline offsets without changing font size, with tspan ownership preserved through finalization and inline-formula conflicts rejected.
Native shapes and the reverse loop
  • A project-authored preset shape can carry one registered shadow or glow through the canonical --filter-id authoring surface, while remaining one editable native shape. Connectors, ordinary group filters, child filters, and multi-effect graphs stay closed.
  • PPTX → SVG reconstructs supported slide transitions — effects, options, and timings recovered against the current registry, with internal WAV transition sounds extracted and published collision-safe. Unsupported carriers are diagnosed in tolerant mode and rejected in strict mode.
  • Finite object animations come back too. Registry rows map to unique top-level SVG group targets, restoring effect options, pane order, Start mode, duration, relative delay, and trigger shapes. Duration-less, advanced, build/media, and unmapped timing stays diagnosed and direct-preserved rather than normalized into something it isn't.
  • Formulas survive the import. Validator-clean block and inline OMML rebuilds as canonical formula markers; unsupported formula content is retained through diagnosed fallback and fails in strict mode. Unreconstructed transitions and object timing are reported per source slide.
Source intake
  • Topic Research can retain a webpage as a source package. Each adopted URL or preconverted package is imported exactly once, its companion images counted as source-extracted inventory rather than web acquisition, with expected / imported / failed research sources reconciled.
  • Fact URLs are provenance, not an import queue. Research URLs are no longer expanded during import; adopted page packages are fetched on demand, and retained-page images are a reviewed one-at-a-time fallback rather than a pool.
  • Fonts resolve against the delivery target. Unspecified delivery now defaults to Windows PowerPoint using the deck locale, authoring-host fonts are limited to SVG preview and measurement, and Noto Serif CJK SC maps to SimSun.
Repository
  • Agent-facing Markdown is single-language per file, including the rules themselves. A few instructions were written in Chinese inside otherwise English files, which biases output language and quietly overrides the "match the user's language" discipline. Those are translated, and docs/rules/language.md states the rule.
  • The skill description covers a wider set of intents and states skill-root provenance, from @Fro2en12's PR #267.
  • Roadmap corrections: the accessibility row's alt-text premise, the logo row against shipped brand assets, the reading-path row's actual carriers, missing coverage-map rows, and slide-number / footer fields settled as a boundary.

Full changelog: https://github.com/hugohe3/ppt-master/compare/v4.7.0...v4.8.0

View originalPermalink
How v4.8.0 went

v4.7.0

Added 7
  • LaTeX compiles to editable PowerPoint math with OMML output supporting Office 2010+ TextMath in both flat and structured packages
  • Inline math compiles to inline m:oMath within DrawingML paragraphs, allowing formulas to remain in the same paragraph as surrounding text
  • Links are authored with ordinary SVG <a href> and lower to real PowerPoint click relationships for whole objects, inline text runs, and formulas
  • Same-deck navigation with links targets other slides in the same deck, and targets are remapped when slides, layouts, and masters are cloned
  • Links survive round-trip import and export, with supported click links reconstructed on PPTX import and same-deck links retargeted unambiguously
  • Opt-in native charts preserve plot-area geometry as manual layout from authored slide coordinates instead of PowerPoint's automatic placement
  • Horizontal bar axes and doughnut hole sizing are supported in native charts
Changed 2
  • Native formulas are now the default path with formula policy choices and image-rendering resources removed from Default and Quick generation
  • SVG formula preview is authoring-only with no formula image fallback emitted
Fixed 1
  • Invalid LaTeX input fails closed rather than degrading silently
Removed 1
  • latex_render.py is no longer used for formula rendering in normal operation, remaining only as a standalone legacy raster utility

v4.6.0 opened a new input with page-image reconstruction. This release goes the other way — deeper into PowerPoint's own object model. Two things a deck could previously only fake are now real native objects: formulas are editable PowerPoint math instead of pictures, and hyperlinks are real click relationships instead of styled text. Both round-trip.

Native formulas
  • LaTeX compiles to editable PowerPoint math. A strict LaTeX subset is validated and compiled straight to OMML — no Pandoc, no image rendering, no external service. Formulas export as Office 2010+ TextMath in both flat and structured packages, and invalid input fails closed rather than degrading silently.
  • Inline math lives in the paragraph it belongs to. Same-paragraph formulas compile to inline m:oMath and are emitted as styled math runs inside the surrounding DrawingML paragraph, so a sentence with a symbol in the middle stays one sentence. Standalone block formulas remain available; the Executor chooses ordinary text, inline math, or a block depending on the content.
  • This is now the default path, not an option. Formula policy choices and image-rendering resources are gone from both Default and Quick generation. Exact mathematical content stays owned upstream, and one shared marker contract covers both forms. latex_render.py remains only as a standalone legacy raster utility for anyone who still wants a picture.
  • The SVG preview is authoring-only. No formula image fallback is emitted. PowerPoint 2010+ is the supported target; non-PowerPoint clients are outside the contract.
Native hyperlinks
  • Links are authored with ordinary SVG <a href>. Whole objects, inline text runs, and formulas can all carry a link, and each lowers to a real PowerPoint click relationship rather than blue underlined text.
  • Same-deck navigation works, not just external URLs. A link can target another slide in the same deck, and those targets are remapped when slides, layouts, and masters are cloned — failing closed when a target is ambiguous rather than guessing.
  • Links survive the round trip. Supported click links are reconstructed on PPTX import, linked images and table cells are preserved through Markdown extraction, and Fill Native PPTX retargets same-deck links unambiguously.
  • Validation is fail-closed on URI safety, action ownership, relationship mode, and final slide-roster membership. An actionButton* preset still contributes visual geometry only: appearance alone never implies an action, which keeps the rule that generated decks do not invent behavior nobody asked for.
Native charts
  • Opt-in native charts keep the layout they were drawn with. Plot-area geometry is emitted as manual layout from the authored slide coordinates instead of collapsing to PowerPoint's automatic placement, and bounded titles are preserved as editable companion text boxes.
  • Horizontal bar axes and doughnut hole sizing are supported, and the authoring contract now documents absolute plot-area bounds, the automatic-layout fallback, and bounded title/subtitle constraints.
Roadmap
  • The roadmap is now a coverage map organized by the four layers of a presentation — visible objects, composition, behavior, and document structure — with a status on every row. It is written as a map rather than a backlog: a settled boundary reads as a decision, not a debt, and the statuses that describe a decision are separated from the ones that describe an open question.
  • Several rows were understating what already exists. Connectors, SmartArt, and hyperlinks each recorded only the authoring side of a capability that was already working on the read or preserve side. Those are corrected.
  • Scope decisions are on the record with their reasoning. Arbitrary video, background music, OLE objects, and 3D models are Not planned, each stating that media and objects already present in a source deck are preserved unchanged. Endpoint binding for newly authored connectors was evaluated and declined, because identifying which lines are real edges is an intent judgment that no geometric tolerance settles.

Full changelog: https://github.com/hugohe3/ppt-master/compare/v4.6.0...v4.7.0

View originalPermalink
How v4.7.0 went

v4.6.0

Added 10
  • A new Quick-only Generate profile reconstructs raster page frames as editable PPTX with text restored natively and registered base and foreground groups reconstructed
  • Low-resolution graphics may be reconstructed at high resolution under an identity lock while data graphics stay exact
  • Stage 2 now presents three whole design solutions with each candidate carrying a project-specific custom mode, visual style, and image rendering
  • Non-destructive bitmap treatments for brightness, contrast, tone, and blur applied as project-local derivatives that preserve dimensions and alpha
  • Registered subject layer pairs recognized by both runtimes for subject-over-native-content compositions
  • Native picture fills for editable text with blipFill supporting stretch and tile modes with fill alpha preserved
Changed 6
  • Prepared derivatives are resolved before SVG authoring in both Default and Quick
  • Direction notes read as concise style summaries with a preferred direction chosen after comparison rather than declared up front
  • Narration waits for transitions to settle with page timing configurable
  • Visual continuity is planned before slide authoring rather than recovered afterward
  • Quick video delivery now requires synchronized custom animations rather than inherited stagger
  • Semantic visual hierarchy, canvas chrome, and chart design contracts realigned with dynamic canvas dimensions honored
Fixed 2
  • A five-page lightweight spec_lock re-read for Default Generate with scheduled re-read boundaries clarified for the Executor
  • Preview and confirm servers no longer share a port range to prevent a stale live-preview tab from shutting down the confirmation service

v4.5.0 filled the template library and rebuilt how a deck is composed. This release opens a new input: a page image can now be reconstructed as a layered, editable deck. Around it, Stage 2 planning becomes three whole design solutions you can edit, images gain a deterministic preparation path, and narrated video finally carries the animation sound it was authored with.

Image to PPTX
  • A new Quick-only Generate profile reconstructs raster page frames as editable PPTX. Source images are normalized into canonical slide frames — one frame becomes one slide — with full-page screenshots kept as evidence only, never as a skin. Text is restored natively; registered base and foreground groups are reconstructed, including a shared plate where padded bounding boxes are disjoint so the objects become independent crops.
  • Low-resolution graphics may be reconstructed at high resolution under an identity lock, while data graphics stay exact. The profile documents its Codex support boundary explicitly — other hosts are unsupported.
Design directions
  • Stage 2 now presents three whole design solutions rather than isolated choices. Complete mode and visual-style catalogs are batch-loaded alongside renderings, and each candidate must be a whole solution with its rendering choice independent of whether AI images are used.
  • Every candidate carries a project-specific custom mode, visual style, and image rendering. Components can be edited inline while whole-direction resets stay available, and the confirmation UI distinguishes applied from adjusted state without changing the flattened final-result authority.
  • Direction notes read as concise style summaries, and a preferred direction is chosen after comparison rather than declared up front.
Images
  • Non-destructive bitmap treatments. Brightness, contrast, tone, and blur are applied as project-local derivatives that preserve dimensions and alpha, with no-clobber writes and inherited image provenance. Semantic cutouts stay outside this deterministic tool.
  • Prepared derivatives are resolved before SVG authoring in both Default and Quick. A1/A2/A3 patterns map to the appropriate derivative or registered-layer path while P/M/C composition stays native, and pattern IDs never auto-create assets.
  • Registered subject layer pairs. Both runtimes recognize subject-over-native-content compositions and prepare registered base and cutout assets with deterministic z-order.
  • Native picture fills for editable text. Run-level blipFill supports stretch and tile modes with fill alpha preserved, reusing media relationships across repeated runs, and validation distinguishes text image-fill carriers from preset patterns.
Video & audio
  • Native animation sounds are mixed into exported narrated videos. PPTX cue timing is calibrated against the raw narration timeline, embedded transition and object sounds are extracted into a float SFX stem, and the video payload and packet timing are preserved while the mixed audio is verified.
  • Real-time slideshow capture is an explicit delivery branch for preserving narration and native animation cues, mutually exclusive with the native-export mix. No recorder dependency or capture script is introduced — the branch documents single-source system audio capture, human acceptance, and the Linux-to-Windows handoff.
  • On-demand transition sounds. A 186-cue CC0 WAV catalog ships bundled; only selected IDs sync into a project. Sound selection stays post-motion and outside Strategist and spec artifacts.
  • Narration waits for transitions to settle, page timing is configurable, and concurrent animation start modes survive narration sync. Quick video delivery now requires synchronized custom animations rather than inherited stagger.
Workflow & fixes
  • Bounded inventory views for Beautify, keeping Quick authoring context scoped rather than loading whole decks.
  • A five-page lightweight spec_lock re-read for Default Generate (#255), with scheduled re-read boundaries clarified for the Executor.
  • Visual continuity is planned before slide authoring rather than recovered afterward.
  • Traditional Chinese (zh-TW) locale for the local UI, contributed in #259, with its locale contract documented.
  • Preview and confirm servers no longer share a port range — a stale live-preview tab could previously shut down the confirmation service that had taken its port.
  • Semantic visual hierarchy, canvas chrome, and chart design contracts realigned, with dynamic canvas dimensions honored across visual review and the typography UI.

Full changelog: https://github.com/hugohe3/ppt-master/compare/v4.5.0...v4.6.0

View originalPermalink
How v4.6.0 went

v4.5.0

Added 8
  • Fifteen brand identity workspaces for consulting, enterprise technology, Chinese technology, and financial organizations with labelled provenance and documented palette traps
  • Eleven Style workspaces with orthogonal communication methods: academic-research, creative-pitch, incident-postmortem, investor-pitch, narrative-keynote, operating-review, product-launch, science-explainer, solution-proposal, technical-deepdive, and workshop-teaching
  • Six layout systems including presentation_core_43 (4:3), report_core (16:9 with multi-Master support), editorial_bleed (16:9), xiaohongshu_post (3:4), story_vertical (9:16), and moments_square (1:1) each authored for their own canvas
  • Conditional geometry-composition pass with semantic validation for structural geometry and deck rhythm
  • Directional multi-image composition where each image page decides its direction, contour, slots, and integration with vector, baseline, curve-spine, and panel geometry
  • Word-timed subtitles for MiniMax, ElevenLabs, and CosyVoice with provider timings regrouped into shared compact SRT format
  • Subtitles live beside their audio with an atomic manifest carrying provider provenance
  • Project-scoped `workflow.log` as a cold audit trail mirroring project-scoped Python text output
Changed 8
  • Template installation now creates separate spec files per workspace as `design_spec.<kind>.<id>.md` instead of merging into a single lossy file
  • Segment ownership now governs visual weight and dominance independent of install time, moving precedence to read time
  • Structure is now a runtime shape-composition grammar loaded by Default and Quick instead of a static catalog
  • Visualizations split by information model with charts keeping value-driven assets while qualitative topology and cell grids move out
  • Table rebuilt around six cell-grid grammars with schedules routed to Gantt
  • Quick is now a self-contained runtime profile with source conversion, factual research, source import, and PPTX intake inlined
  • Default and Quick are now mutually exclusive procedures with Quick keeping full capability surface without substitute planning artifacts
  • Beautify selects runtime from explicit intent, using Quick only when trigger matches otherwise Default

v4.4.0 made Style a template kind and put a passing quality report in front of every export. This release fills the template library that decision surface selects from — 26 new workspaces across brands, styles, and layouts — and rebuilds how a deck is composed: visualization catalogs split by information model, and structure becomes a composition grammar rather than a list of preset shapes.

Template library
  • Fifteen brand identity workspaces. Consulting (mckinsey, bcg, bain, deloitte, pwc, accenture), enterprise technology (microsoft, nvidia, ibm, aws), Chinese technology (huawei, alibaba, tencent, xiaomi), and financial (jpmorgan). Provenance is labelled per value: nvidia and ibm primaries are fact from published guidelines and the open Carbon token set; the other thirteen are approx and say so, because those organizations publish no open brand manual. No workspace bundles a logo — every section IV sets File: none and describes how to install officially supplied artwork. Goldman Sachs and China Merchants Bank were dropped rather than guessed. Each entry also records the practical trap in its palette: Huawei's restrained-accent principle, the near-identical Alibaba and Xiaomi orange, Blue 60 being interactive rather than fill, Microsoft's four quadrants colliding with status semantics, Deloitte and NVIDIA green failing contrast for body text.
  • Eleven Style workspaces whose communication methods are orthogonal rather than restyled variants: academic-research, creative-pitch, incident-postmortem, investor-pitch, narrative-keynote, operating-review, product-launch, science-explainer, solution-proposal, technical-deepdive, workshop-teaching. Fallback color is written only where color carries declared semantics; no Style declares fallback typography, which would act as a gravity source pulling unrelated decks toward one family.
  • Six layout systems. presentation_core_43 (4:3, 16 prototypes) authored for the narrower field rather than scaled down; report_core (16:9, 13 prototypes, two Masters — the first multi-Master layout, with real footer and slide-number placeholders instead of drawn text); editorial_bleed (16:9, 10 prototypes, every picture slot reaching a canvas edge and no frame at all); xiaohongshu_post (3:4), story_vertical (9:16), and moments_square (1:1) completing the social canvas set. Each was authored for its own canvas: no vertical page splits into side-by-side columns, 9:16 lets pictures cross the interface safe zones text must respect, and 1:1 uses both axes because it is the only canvas where both divide soundly.
Template application
  • Each workspace installs as its own spec instead of being fused. Applying several templates used to hand-merge their specs into one templates/design_spec.md — lossy, manually renumbered, and ungoverned. Installed specs are now design_spec.<kind>.<id>.md, each a verbatim copy with one provenance line, so several workspaces of the same kind coexist. Precedence moves from install time to read time.
  • An owned segment governs visual weight, not only values. When a segment owner declares that a value should dominate, recede, or stay rare, that carries the same authority as the value itself — the root cause behind two decks where a spec-declared dominant color became an incidental accent.
Composition
  • Structure is a grammar, not a catalog. The Structure catalog is replaced by a runtime shape-composition method loaded by both Default and Quick, adding carrier topology, structural punctuation, port states, label tethers, and node-local hierarchy. Published bare keys remain accepted as intent-only compatibility inputs.
  • Visualizations split by information model. Charts keep value-driven assets; qualitative topology and cell grids move out, Table is rebuilt around six cell-grid grammars with schedules routed to Gantt, and canonical family indexes carry legacy key aliases. Planning references, Executor branches, native readiness, and chart verification are all object-scoped so mixed pages resolve per object.
  • Structural geometry and deck rhythm. A conditional geometry-composition pass with semantic validation, one dominant page scaffold unifying active visual branches, and whole-roster rhythm checks aligned across Default and Quick without new artifacts. Every drawn field, spine, node carrier, and edge must pass a native construction gate — implicit and direct-content roles are distinguished from drawn geometry, with no preset quotas.
  • Directional multi-image composition. Each image page decides its direction, contour, slots, and integration once, with vector, baseline, curve-spine, and panel geometry defined for non-grid layouts.
Audio
  • Word-timed subtitles for MiniMax, ElevenLabs, and CosyVoice. Provider timings are regrouped with the same punctuation and length rules as Edge into shared compact SRT. Qwen stays audio-only where upstream exposes no timestamps.
  • Subtitles live beside their audio, with an atomic manifest that carries provider provenance but no API keys or raw cloud voice IDs, and audio/subtitle output published as a rollback-safe pair.
Quick & workflow
  • Quick is a self-contained runtime profile. Source conversion, factual research, source import, and PPTX intake are inlined; Default/Beautify and Quick are mutually exclusive procedures, and the Default workflow no longer loads into Quick prompts. Quick keeps the full capability surface — shared mode/style, native-shape, image, and chart authorities — without substitute planning artifacts.
  • Beautify selects one runtime from explicit intent — Quick only when its trigger matches, otherwise Default, skipping confirmation, spec, lock, and Default-only gates in the Quick branch.
  • Project-scoped workflow.log. A cold audit trail mirroring project-scoped Python text output, non-authoritative, with detached service output still in component logs.
Fixes & tooling
  • UI-free image orientation review. Labeled EXIF-normalized contact sheets for multimodal inspection during source intake, reusing existing batch-fix and analysis commands. GIFs are excluded from contact sheets and mixed fix batches are rejected before mutation.
  • SVG quality provenance in the terminal. Blocking, introduced, inherited, and source-import counts now print in the console summary from the same classification the JSON report uses.
  • Prompt audit findings are actionable — near duplicates are report-only, reviewed exact duplicates are adjudicated, accepted schema projections bind to stable fingerprints, and Adaptive Layout ownership returns contract changes to Strategist. Budget ceilings were recalibrated to the audited corpus.
  • Bundled icons refreshed: Tabler 3.46.0, Phosphor Core 2.1.1, Simple Icons 16.28.0. No bundled icon identifiers were removed.

Full changelog: https://github.com/hugohe3/ppt-master/compare/v4.4.0...v4.5.0

View originalPermalink
How v4.5.0 went

v4.4.0

Added 7
  • Style is now a fourth template kind alongside Brand, Layout, and Deck
  • Create Style ships with schema, workspace contract, validator, and discovery index
  • A consulting decision style template ships in the catalog with language-neutral, answer-first, evidence-led design
  • Export quality gate now requires a current passing final checker report before PPTX creation
  • Text outside the page is now detected with separated page-fit geometry and DrawingML wrap safety checks
  • Runtime attribution guard validates canonical project identity including exact author, repository URL, and MIT license text
  • Attribution preflight is now part of the Skill bootstrap with route-specific entry point validation
Changed 10
  • Confirmation runtime is now a two-stage process with Stage 1 as a communication contract followed by Stage 2 as a final solution and production gate
  • Template choice is now made during Stage 1 of confirmation instead of in a separate pre-Strategist phase
  • Production choices are now server-enforced to reject incomplete recommendation and final payloads
  • Typography reuse is now governed by design judgment rather than quota enforcement
  • Template discovery is skipped for ordinary free design to enable faster default planning
  • Re-export after animation edits now requires a current matching passing quality report

v4.3.0 made Quick Generate a real route and gave a deck one language contract. This release works on the decision surface in front of generation and the gate behind it: the confirmation UI is now a single two-stage run instead of a growing set of phases, Style joins Brand / Layout / Deck as a fourth template kind, and a passing quality report is now required before any PPTX is written.

Confirmation
  • One run, two stages. The confirmation runtime is now a communication contract (Stage 1) followed by one final solution and production gate (Stage 2). Only current Stage-1 and Stage-2 artifacts with canonical result receipts are accepted, template and Strategist handoffs must be fresh so prior-run files cannot leak forward, and reopening a completed session is rejected.
  • Template choice lives inside Stage 1. The separate pre-Strategist template phase is gone: the template decision is folded into the first confirmation while template content stays out of communication planning. Ordinary runs default to free design and expand selectors only when a template is actually used; the selection persists beside Stage 1 and Stage 2 is gated on the post-apply handoff.
  • Production choices are server-enforced. Incomplete recommendation and final payloads are rejected, including the conditional AI-image path, and one validated recommendation snapshot is reused so a narrow concurrent rewrite cannot slip past Stage 2 validation.
  • Typography reuse is a design judgment, not a quota. Repeated font pairs are allowed unless they contradict an explicitly fixed contract, and localized candidate selection is preserved when several directions share one signature. Empty custom-color validation was also clarified.
Templates
  • Style is a fourth template kind. Roster-free communication methods and coordinated design defaults now have their own workspace: Create Style ships with a schema, workspace contract, validator, and discovery index, and is integrated with template application, fusion, and the flat/structured ownership boundary. Brand, Layout, and Deck are unchanged.
  • A consulting decision style ships in the catalog — language-neutral, answer-first, evidence-led, encoding argument, evidence, page-role, and restrained visual guidance without locking brand or layout.
  • The four JSON indexes are the complete registered library. Discovery reads only registered kind indexes; explicit roots stay exact and are installed project-locally, and Stage 2 remains responsible for application rather than choice.
Export quality gate
  • A current passing final checker report is required before PPTX creation — for default, Quick, and explicit output exports alike. Non-output source overrides remain available for diagnostics, and existing projects without a report follow a documented migration path.
  • Text outside the page is detected. Page-fit geometry is separated from DrawingML wrap safety: root viewBox checks use headroom-free estimates while module headroom is retained, duplicate module diagnostics are suppressed, and off-canvas Morph staging markers validate with actionable errors.
  • Re-export after animation edits follows the same gate — a current matching passing report is required, and failed recovery is directed through the complete issue set, real SVG fixes, and a fresh checker run.
Topic research
  • Web research is isolated from the main context. Factual fetching moves behind an artifact-based worker boundary that writes the existing research and provenance artifacts; the hand-off is validated before import and a main-context fallback is retained. Planning ownership stays in the main agent.
  • The imported research is fully read. The 250-word cap applies to the worker receipt only; the active content owner reads the imported research pair in full before planning, and split-mode hints are based on what the main chat actually retained.
Generation & Quick
  • Faster default planning. Ordinary free design skips template discovery entirely, shared aesthetic and numeric-leading defaults are restored with the Visual Job Router always active, Executor chooses prepared icons per page from the Strategist-curated project pool, and known required references are direct-loaded.
  • Quick applies supplied templates directly. At most one exact workspace root per kind is validated and installed, free design is used when no exact root is supplied, and the Confirm UI is never started — the lockless flat export boundary is unchanged.
  • Quick gets the same composition baseline. Text rhythm, natural wrapping, proximity, visual weight, and structural container use moved into the always-loaded SVG core, with transient core-message, typography, and density anchors for Quick authoring; persisted Design Spec and lock consumption stay inside the Default Executor contract.
  • Quick is documented by decision rights, not by subtraction. Across README, getting-started, FAQ, roadmap, and technical design (en/zh): explicit user requirements win, only unspecified choices are decided without asking, preparation is not skipped, missing required assets still block, and the token savings land in planning rather than per-page SVG authoring. The Windows smoke test now uses quick generation.
Integrity
  • Runtime attribution guard. Supported command paths now validate canonical project identity — exact author, repository URL, MIT license text, and the presence of both sponsor files (their contents may change) — failing closed through the shared CLI bootstrap and route-specific entry points, with a second independent identity check on canonical Skill metadata and LICENSE.
  • Attribution preflight is part of the Skill bootstrap, and route selection stops when it fails.
Fixes & tooling
  • Chat-completion image backends read images by data URI instead of a fixed 22-character slice, so any OpenAI-compatible endpoint reachable through OPENROUTER_BASE_URL works, with a fallback to inline message content when no images array is returned (reported by @jinhaosong-source, #247).
  • Local UI ports are project-aware. Port 5050 is preferred and advances only when the port is implicit; explicit ports are treated as exact and readiness is validated by service, project, and pid; visual-review servers resolve from each project's live-preview lock.
  • Custom animation stays restrained — one dominant Start rhythm, entrances primary, emphasis and exit reserved for real lifecycle duties. No effect, mode, or exporter behavior was narrowed.
  • Prompt budgets are fixed guardrails at 250/1000/5000-token increments rather than current-token ratchets, with Style route and load-set coverage.

Full changelog: https://github.com/hugohe3/ppt-master/compare/v4.3.0...v4.4.0

View originalPermalink
How v4.4.0 went

v4.3.0

Added 5
  • Implement Quick Generate route that skips Strategist, confirmation UI, and spec lock apparatus for fact-sufficient requests
  • Add language-aware font selectors in the Confirm UI with primary language distinct from UI language
  • Support multi-effect object timelines with independent Start and timing settings for SVG groups
  • Implement explicit preserve/reflow/split text-flow modes that emit native DrawingML line breaks
  • Add motion selection guide driven by slide semantics with relationship and lifecycle mapping
Changed 3
  • Propagate one confirmed BCP-47 language contract end to end through text, tables, charts, notes, and document metadata
  • Materialize resolvable SVG text into native editable Boolean geometry with exact font and style matching
  • Route advanced visual techniques by visual job instead of browsing as a catalog with baseline to surface to selection to integration procedure
Fixed 3
  • Picture shadows and glows now survive both export and import directions
  • Radial gradient point focus preserved between SVG and DrawingML fillToRect
  • Recognize Traditional Chinese system fonts as PowerPoint-safe including Heiti TC, Kaiti TC, and MingLiU_HKSCS
Removed 1
  • Remove disposable-test and fixed-page-roster restrictions from Quick Generate route

v4.2.0 pushed a narrated deck all the way to video. This release turns attention back to the deck itself — how fast you can get one, what language it speaks, and how much of the authored picture actually survives the trip into PowerPoint.

Two things headline it. Quick Generate is now a real route: for a fact-sufficient request you can skip the Strategist, the confirmation UI, and the whole spec/lock apparatus, hand-author svg_output/, pass a lockless final check, and export — with the ordinary export capabilities still on the table. And a deck now carries one confirmed language contract end to end, from the font selector in the confirmation UI through complex-script slots, RTL runs, tables, charts, notes, and document metadata.

Quick Generate
  • A lockless generation route. Explicit quick/fast requests skip Strategist, Confirm UI, Design Spec/Spec Lock, the first-page gate, and finalize. The disposable-test and fixed-page-roster restrictions from the unreleased flag are gone — this is a normal way to produce a deck, not a debug path.
  • Resource preparation is preserved, strategy is not. Source conversion, factual research, images, icons, formulas, and provenance all remain; the current agent resolves routine choices without confirmation artifacts. Unresolved resource states block, and preview/package requests that need the full pipeline are routed back to it.
  • Export capability stays intact behind one gate. A Quick-specific final checker mode ignores planning artifacts and enforces flat structure; a current passing report is required before export. Notes, object motion, narration, native objects, tracing, metadata, backup, and postflight remain available as opt-ins rather than being hard-disabled.
  • Minimal workspaces. An init flag creates only svg_output/, keeping source and resource directories conditional.
Language & typography
  • One language contract, propagated. Staged BCP-47 values are canonicalized and carried through text, tables, charts, notes, and document metadata, including complex-script font slots and mixed-direction RTL. Old locks and single-pass confirmation stay compatible.
  • Language-aware font selectors in the Confirm UI. Deck primary language is now distinct from the UI language: English decks get primary-only controls, everything else gets primary plus English. The catalog spans CJK, Latin, Arabic, Hebrew, Devanagari, and Thai common PowerPoint faces, tracks Office cloud and Windows language-feature availability, and remains a manual selector rather than a recommendation whitelist — generated typography recommendations stay open, with distinct pairings validated.
  • Font choices must be executable. Categories remain design rationale, but a custom choice now collects concrete heading and body faces; legacy prose-only choices reopen for structured repair before final confirmation. Every supported script also gets at least one target-approved safe candidate.
  • Traditional Chinese system fonts recognized as PPT-safe (thanks @kevindesuyo, #244), with a maintainer follow-up classifying Heiti TC, Kaiti TC, and MingLiU_HKSCS as East Asian so they route to the intended DrawingML slot instead of silently falling back to Microsoft YaHei.
Native fidelity
  • Picture shadows and glows survive both directions. One registered SVG shadow or glow maps to native picture effects on export and restores on import, with a private crop carrier keeping cropped-image previews unclipped and flattening back to a single editable picture.
  • Clipped-picture effects are a closed authoring form. The filter goes on an exact single-picture carrier and the clip-path on the image; the carrier may be a direct Master/Layout atom, but placeholder, binding, and native-replacement ownership stay outside it. Filter and clip-path on the same element is rejected.
  • Radial gradient point focus preserved. The effective SVG focus maps into DrawingML fillToRect and restores on import for the reversible point-focus subset; authored focus outside the canonical centered circle is rejected, and imported out-of-circle focus is normalized with a diagnostic.
  • Authored line breaks survive by default. New explicit preserve / reflow / split text-flow modes emit real DrawingML line breaks in one editable frame; ordinary preserve-mode frames use native auto-fit so they follow later PowerPoint edits, while exact imported frames and structured multiline carriers stay fixed. Narrated exports no longer need --no-merge.
  • Text as a Boolean operand. Resolvable SVG text is shaped with exact font and style matching and materialized into native editable Boolean geometry, failing closed for unsupported text.
  • Lossy imports become diagnostics. Non-neutral outer-shadow transforms and nested group rotation are rejected on PPTX import rather than silently simplified.
Animations
  • Multi-effect object timelines. Backward-compatible effects[] rows give one SVG group several effects with independent Start and timing settings; repeated shape targets are allowed and native behavior trees are validated on readback, with recorded narration kept click-free.
  • Motion chosen by slide semantics. The catalog is now a relationship- and lifecycle-driven selection guide — canonical transitions mapped to concrete adjacent-slide relationships, entrance/emphasis/path/exit/static duties distinguished — with Strategist handing off semantic lifecycle duties and Executor picking effects and timing. Motion remains opt-in.
Visual authoring
  • Advanced techniques are routed by visual job, not browsed as a catalog. SVG effects gained a baseline → surface → selection → integration → stop procedure, page-level back-to-front stacks for covers, dividers, evidence, comparisons, and closing pages, each with an explicit stop condition. The effects authority is now loaded before SVG decisions in both Default and Quick, and stays non-quota.
  • Image composition split by responsibility. Layout, crop/reveal, tone/contrast, and framing/depth now have distinct ownership under hierarchical P/M/A/C pattern IDs, with a composition playbook for turning vocabulary into deliberate combinations. Every image-bearing page runs an explicit treatment opportunity pass and must earn a real image/content or image/shape relationship — plain placement is still a valid answer when it communicates better, and a named primary structure is a skeleton, not a no-effect instruction.
  • Cross-page visual motif has an owner. Strategist chooses or inherits one motif through the existing Theme field, Executor preserves its invariant while varying realization by page role, and Quick resolves the same choice transiently. Executor may omit or adapt a motif with no supporting job; a second recurring identity is still forbidden.
Confirmation UI
  • Chat fallback surfaces before the blocking wait. The UI launches and health-checks first, then posts the actual URL, the current Stage 1 summary, and the direct-chat fallback — so headless and Linux hosts are not stuck behind a wait. --wait-only --wait-stage stage1 supports the detached waiter.
  • The user's chosen surface wins. The confirmation surface is decided before any daemon or wait command, a running UI is stopped and cleaned up before continuing a stage in chat, and recovery/beautify align with UI-result and visible-chat evidence.
  • Fallback AI rendering choices are reachable through a compact preset selector plus a separate editable custom-style card, with image planning loaded after a confirmed none-to-image override.
  • Stage 2 previews use fixed role copy again, keeping visual comparisons stable while remaining language-aware.
Tooling & structure
  • 100+ page decks stay in authored order. Numeric filename ordering is centralized and applied across export, validation, preview, animation, notes, and audio consumers.
  • Internals moved behind stable script shims for project management and SVG quality, with 21 state-free checks extracted into an svg_contracts domain module. Public command paths, import surfaces, and validation order are unchanged — no validation policy changes.
  • Planning reference paths anchored to the skill root, so agents stop probing project-local template directories first.

Full changelog: https://github.com/hugohe3/ppt-master/compare/v4.2.0...v4.3.0

View originalPermalink
How v4.3.0 went

v4.2.0

Added 12
  • Native PowerPoint video export allows narrated decks to continue straight to MP4 through installed PowerPoint's CreateVideo, with animations and transitions rendered with real PowerPoint fidelity
  • Subtitles synchronized with animations and recalibrated against exported video using Edge word-boundary stream and normalized correlation against actual video audio
  • Motion semantics preserved for downstream video planning through video_motion_plan.py, deriving renderer-neutral motion plan from resolved conversion traces
  • Edge TTS now runs three concurrent requests by default with configurable concurrency, with MP3/SRT publication kept atomic and page-ordered
  • Speaker notes grounded in the finished page from completed SVG instead of fixed-length summary
  • Animation groups derive from slide semantics through auditing and regrouping of ordinary SVG content into real reveal units
Changed 5
  • Choreography returns to content judgment instead of fixed page-structure-to-effect mappings
  • Nested edit groups are authoring freedom with anti-fragmentation rule applying only to top level
  • Executor may adapt Design Spec wording faithfully with Section IX as preferred wording and semantic authority
  • Bounded repairs no longer force full reloads through planning artifact reuse and targeted readback
  • Chart catalog templates are page-local references with Design Spec Section VII carrying Page, Template, and usage note
Fixed 3
  • Missing timing plan no longer silent, now names at-risk slides on stderr when narration animations derived without narration_timing.json
  • First-page gate validates method across deck by classifying findings method-level or page-local before P02
  • Legacy recommendations.json projects stay readable with stage-specific recommendation file validation

v4.1.0 finished a deck at the PPTX boundary: transitions, opt-in animations, speaker notes, audio narration. This release carries that same deck one step further — to a video you can publish, with subtitles that actually line up with what the narrator is saying and what the slide is doing.

The rest is a steady pass over planning, typography, and the confirmation flow, fixing boundaries that recent generation runs exposed.

Narration & video
  • Native PowerPoint video export. A narrated deck can now continue straight to MP4 through installed PowerPoint's own CreateVideo, polled to completion — animations and transitions render with real PowerPoint fidelity because PowerPoint is doing the rendering. This requires Windows with PowerPoint installed; macOS limitations and failure boundaries are documented rather than silently degraded.
  • Subtitles synchronized with animations, then recalibrated against the exported video. Page-local SRT comes from the same Edge word-boundary stream that produces the audio, click-free animation timing is rebuilt from cue maps, and the merged total SRT is derived from the final PPTX timings. After video export, each page's narration is aligned against the actual video audio with coarse-then-fine normalized correlation, so PowerPoint's own quantization can't drift the subtitles — and a weak or truncated match fails closed instead of shipping misaligned.
  • Motion semantics preserved for downstream video planning. video_motion_plan.py derives a renderer-neutral motion plan from resolved conversion traces, keeping object bounds, order, effect, direction, duration, and narration timing intact. Directional fly and wipe effects are registered without disturbing legacy tuples.
  • Faster narration. Edge TTS now runs three concurrent requests by default (--concurrency to change), with MP3/SRT publication kept atomic and page-ordered. Cloud providers stay serial.
  • Speaker notes grounded in the finished page. Notes are written from the completed SVG — every information-bearing content group contributes to the spoken argument — instead of a fixed-length summary. Two to five sentences and the target duration are pacing guidance, not hard limits.
  • A missing timing plan is no longer silent. Deriving narration animations without narration_timing.json falls back to a positional group-N → cue-N mapping that mistimes any slide whose narration outlasts its object count. That case now names the at-risk slides on stderr.
Animations
  • Choreography returns to content judgment. Fixed page-structure-to-effect mappings are gone. Communication purpose, tone, narration, direction, and deck coherence decide the motion; inherited or neutral motion is a valid answer, and the full effect vocabulary stays available.
  • Animation groups derive from slide semantics. Custom choreography starts by auditing and regrouping ordinary SVG content into real reveal units, respecting visual and structural boundaries, then revalidates and refreshes previews before export.
  • An existing animations sidecar follows user intent — replaced on explicit regeneration, preserved and edited for adjustment or repair, and asked about when the request is ambiguous.
  • Nested edit groups are authoring freedom, not a default. Top-level groups remain the semantic, bounds, and automatic-animation anchors; the anti-fragmentation rule now applies only to that top level.
Typography & planning
  • Role anchors replace the body-ratio envelope. Every declared font family and size role projects from Design Spec into Spec Lock; per-occurrence adjustment within ±2 px of the mapped anchor is allowed, and anything outside every declared band is a planning-contract failure that blocks generated SVG output (reference checks stay advisory, mirror-prototype sizes pass through as inherited input).
  • Sparse display sizing is bounded, not whitelisted. The same undeclared display size may appear at most twice per deck; the third occurrence must become a named role.
  • Font discovery broadened with restored Latin sans/serif/mono anchors and compact contrast-axis seeds for Stage 2 directions.
  • Executor may adapt Design Spec wording faithfully. Section IX copy is preferred wording and semantic authority rather than a verbatim default — facts, necessary content, and explicit literal requirements still hold.
  • Bounded repairs no longer force full reloads. Planning artifacts are reused while context remains valid; a verified local Design Spec repair rebinds through targeted readback and SHA rebind. Full reads remain for fresh, external, structural, or mismatched changes.
  • The first-page gate validates method, not just P01. Each finding is classified method-level or page-local and resolved to its authoritative rule before P02, so a systematic authoring error can't be patched on P01 and then reproduced across the deck.
Confirmation UI
  • Stage-specific recommendation files replace the mutable single-file handoff: the active Stage 1/2/3 file resolves from confirmed progression, filename and payload alignment is validated, skipped stages are rejected, and legacy recommendations.json projects stay readable. An unconfirmed active stage can be overwritten on request; confirmed earlier stages stay intact.
  • UI fonts switch by locale (thanks @kevindesuyo, #240).
Charts & icons
  • Chart catalog templates are page-local references, not visualization-type locks. Design Spec Section VII carries Page, Template, and a short usage note; only Page and Template project into the lock, and Section IX plus source data remain authoritative. The section is optional — empty and no-match entries are omitted.
  • Chart recall keeps bounded lexical results as the default. Low or empty results no longer auto-expand the full catalog; Strategist can keep no-template-match by judgment or request semantic fallback explicitly, and the shortlist must be read without output truncation.
  • Icon selection and execution separated. Generic bundled selection stays within one of four stylistic libraries (simple-icons alone or alongside, for real brand marks); every SVG under <project>/icons/ is prepared execution material rather than an inventory whitelist. Known IDs go straight to batched sync, only unresolved names are searched, and mixed stylistic-library batches are rejected before copying.
Export & layout
  • Per-run width headroom. Family and uppercase headroom now apply independently to each run, so one serif label no longer inflates measurement for every run on the line.
  • Bounds before reflow. Flat-page module zones are sized generously without sibling overlap, and expanding bounds is preferred over reflowing text when free space exists.
  • Conversion traces default to validation/<output_stem>.trace.json, with optional absolute or project-relative destinations honored.
  • Legacy locks without pptx_structure.mode default to flat; missing, invalid, and structured contracts still block.
  • Legacy image lock rows parse through one shared parser across page context, quality checks, and update_spec, with a single non-blocking compatibility warning.
Workflow & routing
  • Deterministic spec maintenance is discoverable again: deck-wide color and universal font-family changes route through update_spec.py, followed by validation and re-export.
  • Brand, Layout, and Deck discovery indexes are exposed for out-of-band listing; explicit workspace-root triggering is unchanged.
  • project_manager.py moves only local sources already under the repository projects/ tree — canonical repository documents and external inputs are protected during intake, and --move cannot widen that boundary.
  • Visual inspection is context-first: image meaning resolves from source context and regenerated metadata, with a narrow Strategist fallback for a specifically ambiguous asset.
  • Routine generation output is quieter — phase checklists are internal verification with compact status.
Community & docs
  • Bilingual sponsorship guides (SPONSORING.md / SPONSORING_CN.md) plus self-contained Skill sponsor pages; sponsor guidance loads only for explicit model, provider, or hosted-service recommendation requests.
  • Audio narration, technical design, and animation docs updated in both English and Chinese for the video pipeline.
  • Stale SVG-snapshot export claims removed from twelve example READMEs.

Full changelog: https://github.com/hugohe3/ppt-master/compare/v4.1.0...v4.2.0

View originalPermalink
How v4.2.0 went

v4.1.0

Added 4
  • Executor now opens with a visible menu of available constructions including alpha/gradient paint, elevation, image integration, line and type treatments, and constructed styles
  • Strategist's material sufficiency section now includes an explicit Crop Policy column with no-crop and adaptive options that project into the lock
  • Strategist's section now includes a Native-ready column to identify independent data charts and tables for promotion to native editable objects
  • Added Prompt Refactor Review contract to docs/rules/prompt-style.md requiring compression passes to record before/after strength deltas and prove permissions did not become quotas
Changed 8
  • Removed the 60-30-10 color split, the 4-color-per-page cap, and the industry color table as a default lock; color distribution now follows encoding, style, and natural asset colors while maintaining body-text contrast ≥4.5:1 and brand/semantic roles
  • Replaced fixed line-height ratios (1.4–1.5× / 1.6–2.0×) with spacing chosen from typeface, size, density, and reading distance
  • Removed the requirement for page-local tints, gradient stops, shadow/glow paints, transparency composites, and one-off illustration tones to be locked; spec_lock.md now functions as an identity anchor set rather than an allowlist
  • The image-as-canvas usage rule for 4+ image decks became an intent audit; repeated layout structures are valid when the narrative requires them
  • Changed the structured pages capacity hint from 3–8 content groups to one group per logical content unit
  • Design Spec and spec_lock.md are now authored once as complete documents rather than scaffolded and filled piecemeal
  • project_manager.py validate no longer reopens confirm_ui/result.json and instead validates planning artifacts against their schemas
  • Executor resolves fonts by exact role with a legacy font_family fallback to keep existing locks working
Removed 1
  • Removed two taste-encoding warnings: missing_image_as_canvas and layout_degenerated
First, an apology

The architectural cleanup that shipped with v4.0.0 carried changes it did not need to make, and those changes suffocated the project's creativity. That is on me, and I'm sorry.

It also taught me something I had underweighted: this project is not only its code. The prompts and the orchestration of the workflow matter just as much — arguably more. A quota tightened by one line, a reference demoted to a lock, a permission rewritten as a limit: none of that shows up as a failing test, but it decides whether the AI is allowed to design at all.

In my own testing, the deck aesthetics have recovered a good deal, so I'm publishing this fix right away rather than batching it.

The wider lesson is that a great many details hide inside every small design decision here. Every future change deserves extreme care, and I need to slow the rate of change down.


The v4.0.0 refactor compressed the prompt contract hard. Some of that compression turned permissions into quotas, references into locks, and flexible realization into silent constraint — the AI had less room to design than the system intends. This release restores that range and pins down why each remaining boundary exists, so a future compression pass cannot quietly take it away again.

Creative range restored
  • Palette: the 60-30-10 split, the "no more than 4 colors per page" cap, and the industry color table as a default lock are gone. Industry anchors are optional recall; color count and distribution follow encoding, style, and natural asset colors. Body-text contrast ≥ 4.5:1 and confirmed brand/semantic roles still hold.
  • Typography: fixed line-height ratios (1.4–1.5× / 1.6–2.0×) are replaced by spacing chosen from typeface, size, density, and reading distance — no fixed ratio overrides legibility or the selected style.
  • Page-local expression: page-local tints, gradient stops, shadow/glow paints, transparency composites, one-off illustration tones, and export-safe display families no longer need a lock row. spec_lock.md is an identity anchor set, not an allowlist of every legal value; promote a value only when it recurs.
  • Effect capability discovery: Executor now opens with a visible menu of available constructions — alpha/gradient paint, elevation, image integration (scrim, vignette, faux glass, clipping), line and type treatments, constructed styles (hand-drawn, Riso, halftone, isometric, paper cut). It is a reference, not a constraint; svg-effects.md still owns syntax and fallbacks.
  • Image composition: the "use image-as-canvas at least once per 4+ image deck" rule becomes an intent audit. Repeated left/right or top/bottom structures are valid when the narrative calls for them, and catalog families and modifiers stay available without a usage quota.
  • Quality checker: two taste-encoding warnings (missing_image_as_canvas, layout_pattern_degenerated) are removed. Contextual colors and safe font families are informational anchor comparisons, not drift errors.
  • Structured pages: the "3–8 content groups" capacity hint becomes one group per logical content unit.
Decision ownership: Strategist prepares, Executor realizes
  • Strategist owns material sufficiency, resource selection, and project-local readiness — image layout pattern and crop policy, chart selection, native-ready choices, icons, and adaptive Layout mappings.
  • §VIII gains an explicit Crop Policy column (no-crop protects required pixels; adaptive lets Executor choose complete display or a focal-safe crop) and projects into the lock as <path> | source= | pattern= | crop=.
  • §VII gains a Native-ready column: an independent data chart or pure text-grid table is promoted to a native editable object only when the requirement or the deck's afterlife benefits; incidental sparklines and KPI insets stay designed SVG.
  • AI and web image acquisition stays after final confirmation and before Executor.
  • Executor realizes the confirmed plan: Design Spec §IX is final page-copy authority, source reads are limited to explicit verification, and a prototype or Layout mapping that no longer fits returns to Strategist instead of being silently reselected downstream.
Governance against silent tightening

docs/rules/prompt-style.md gains a Prompt Refactor Review contract: every compression pass must record before → after strength deltas, preserve the compact objective predicate behind each non-self-evident hard rule, and prove that a permission did not become a quota, a reference did not become a lock, and preparation timing did not shift downstream. A shorter prompt that changes decision ownership, constraint strength, preparation timing, or capability discoverability is a semantic regression even when structural and token-budget audits pass.

Planning artifacts
  • Whole-document authoring restored: read the Design Spec reference → author the complete design_spec.md once → Gate 1 → read the Spec Lock reference → author the complete spec_lock.md once. No placeholder scaffold is materialized and filled piecemeal; scaffold-spec / scaffold-lock are optional manual helpers.
  • project_manager.py validate no longer reopens confirm_ui/result.json — it validates the planning artifacts against their schemas.
  • Orphan locks are rebuilt from recovered Design Specs, with recovery guidance aligned.
Typography roles

Confirm UI's heading/body choice remains the base, and Strategist may add recurring content-driven roles (project title, body, support-role stacks) that carry from Design Spec into spec_lock intact. Executor resolves fonts by exact role with a legacy font_family fallback, so existing locks keep working.

Chart recall

Lexical recall stays bounded, but low or absent lexical confidence now returns the full live registry under semantic_fallback, and --semantic-fallback forces that review when every lexical candidate conflicts. Candidates are compared semantically; the catalog is never opened separately or mirrored into a second index.

Custom creative directions
  • spec_lock.md accepts optional catalog reference lists (mode, visual style, image rendering) for custom directions, with unique ids that must resolve to their catalog files. Genuinely novel directions stay behavior-only.
  • A catalog-backed custom direction now reads every source it combines, and those optional references persist and reload across planning, execution, image generation, and resume.
Topic research

Research is gap-driven: it triggers on outcome-critical factual gaps found after reading the available sources, stays fact-only, writes non-colliding supplements, and defers all image acquisition until after final confirmation.

Docs
  • Roadmap restructured around the positioning axis and signal-driven directions; month-by-month history compacted into a milestones table pointing at release notes and the commit log.
  • Model recommendation in both READMEs: Kimi K3 (sponsor) as default with Claude as an alternative, paired with gpt-image-2 (OpenAI) or gemini-3.1-flash-image (Google) for images.
  • Confirmation channel wording is now channel-neutral: a decision is honored from whichever channel it actually happened in — result.json when the Confirm UI was used, the conversation otherwise.
View originalPermalink
How v4.1.0 went

v4.0.0

Added 20
  • New canonical charter defining PPT Master as an open-source, chat-driven workflow that produces real, editable PowerPoint with native depth in PowerPoint's object model and structure
  • PowerPoint ↔ SVG Mapping Guide documenting the boundary between PowerPoint and SVG capabilities feature by feature
  • Real slide masters and layouts using PowerPoint-native p:sldMaster and p:sldLayout inheritance for repeated page chrome and shared backgrounds
  • Live slide-number fields replacing literal page numbers in exported decks
  • Exported decks inherit project theme colors and fonts
  • Solid and gradient full-page backgrounds export as PowerPoint-native slide backgrounds
Changed 2
  • Per-page execution context reuses unchanged references instead of re-projecting them
  • Animation and transition behavior unified across export routes
Fixed 2
  • URL-encode page_name for non-ASCII slide names in live preview
  • Unordered gradient stops, oversized tile image fills, and malformed source constructs now recover locally
Project positioning — now explicit
  • New canonical charter: Project Positioning and Capability Boundary (English canonical, synchronized Chinese). The one-line thesis: PPT Master is an open-source, chat-driven workflow that lets AI reason the argument into shape first, then design and produce a real, editable PowerPoint — not slide images or a thin editable skin. Its defining axis is native depth: author or preserve more of PowerPoint's own object model, behavior, and reusable structure, release after release.
  • Editable is table stakes; the direction of travel is converging with PowerPoint itself — the PowerPoint ↔ SVG Mapping Guide records the current boundary honestly, feature by feature
  • README and the doc set are aligned to this framing throughout, with doc indexes added
Native slide masters & layouts
  • Repeated page chrome and shared backgrounds are promoted to real slide masters (p:sldMaster / p:sldLayout inheritance); explicit per-deck layout contracts are compiled on export
  • Exported decks inherit project theme colors and fonts; literal page numbers become live slide-number fields
  • Solid/gradient full-page backgrounds export as PowerPoint-native slide backgrounds (#226, @Kaimar666)
  • Structured template routes write locked master text styles and enforce master/layout structure
Token efficiency
  • Reusable chart SVG template library compacted end to end, with rendering fidelity preserved
  • Per-page execution context reuses unchanged references instead of re-projecting them; the execution lock contract is compacted
  • New prompt budget and governance lint (prompt-audit); export postflight receipts are token-safe
Template system — Brand / Layout / Deck
  • New Create Template route turns a finished PPTX, images/PDFs, documents/websites, or brand assets into a reusable template workspace — three classes: Brand (identity), Layout (structure), Deck (application + identity + structure)
  • Deterministic mirror import: validated authoring IR materializes into a structured template workspace; review decks via template_preview_pptx.py
  • New Fill Native PPTX route: a raw PPTX template plus new material patches slide shells directly — no SVG regeneration
  • Adaptive vs. strict template use is now an explicit confirmed decision
PPTX import depth
  • SmartArt semantic structure is read during intake; all DrawingML preset geometries round-trip
  • Native table/chart reconstruction: XY chart axis semantics, imported table/chart fidelity improvements
  • Robustness: unordered gradient stops, oversized tile image fills, and malformed source constructs recover locally
Converter
  • CSS color alpha and group opacity compile into native alpha; picture opacity preserved through round-trip
  • All native line-end arrow shapes enabled; animation and transition behavior unified across export routes; narration exports get a _narrated filename suffix
Planning & Confirm UI
  • Confirm UI presents AI-authored custom design candidates alongside catalog options; staged confirmation covers reading mode and communication outcomes
  • Mode + visual-style dual catalogs (18 styles) with per-style composition geometry vocabulary
  • Versioned spec scaffolds; confirmed decisions are preserved end-to-end through spec projection; mandatory first-page checker gate
Image generation
  • --reference-image single-image edit mode on the OpenAI backend (#233, @WodenJay) — out-of-pipeline restyle/iterate tool
Community
  • URL-encode page_name for non-ASCII slide names in live preview (#224, @championeer)
View originalPermalink
How v4.0.0 went

v3.1.0

Added 3
  • Export native chart chrome metadata including titles, overlays, and axis labels with SVG fallback styling mirrored into native charts
  • Inherit typography from SVG fallback in native charts while preserving explicit bounds, point colors, and overlays
  • Guard chart chrome against invisible fallback text
Changed 3
  • Use viewBox as the single source of truth for canvas size in preview and export
  • Split native_objects into a subpackage and group drawingml and package modules
  • Centralize SVG resource path resolution and parse each SVG once across DOM checks
Fixed 3
  • Error on silent-loss paint colors (hsl, alpha-hex) during export validation
  • Validate exported PPTX typefaces during export validation
  • Harden spec_lock drift scanning
Native chart fidelity
  • Export native chart chrome metadata (titles, overlays, axis labels) and mirror SVG fallback styling into native charts
  • Inherit typography from the SVG fallback; preserve explicit bounds, point colors, and overlays
  • Guard chart chrome against invisible fallback text
Checker / export validation hardening
  • viewBox is now the single source of truth for canvas size (preview + export aligned)
  • Error on silent-loss paint colors (hsl, alpha-hex); validate exported PPTX typefaces; harden spec_lock drift scanning
Internals
  • Split native_objects into a subpackage; group drawingml/package modules; centralize SVG resource path resolution; parse each SVG once across DOM checks
Docs
  • Require human review for AI-assisted PRs; sharpen image strategy & preview checkpoints
View originalPermalink
How v3.1.0 went
View all

Discussion

If you publish ppt-master, you can claim this product by proving you administer its repository.