# ppt-master changelog
> 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
- Vendor: hugohe3
- Category: AI
- Official site: https://hugohe3.github.io/ppt-master/
- Tracked by: What's New (https://whatsnew.fyi/product/ppt-master)
- Harvested from: GitHub (hugohe3/ppt-master)
- Entries below: 10 (newest first)
What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog.
Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'.
## Releases
### v4.8.0
- Date: 2026-08-16
- Version: v4.8.0
- Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.8.0
- Permalink: https://whatsnew.fyi/product/ppt-master/releases/v4.8.0
- **added** — AI imagery becomes a composition system with coherent element families, transparent cut assets, and hand-rendered lettering that pages can build around
- **added** — Illustration assets are now composable across the deck, allowing both runtimes to plan coherent families of elements and reuse them across slides
- **added** — Decorative lettering is a first-class carrier, prepared as image assets and sliced to transparent elements
- **added** — Transparent slicing recovers clean alpha using explicit pure-RGB chroma keying with spill removal and antialiased edge preservation
- **added** — 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
- **added** — Four new composition recipes: ceremonial fan and arc strips, folded/louvered same-source strips, bento field combination, and staggered photo strip
- **added** — --strict-alpha flag validates complete cell boundary and fails closed for transparent slicing
- **added** — Per-image source is now a mandatory decision in both runtimes and never inherited
- **added** — Web image search reviews candidates on thumbnails in isolation with eight preview thumbnails saved per page
- **added** — --list-backends reports effective configuration and whether it came from process environment or file
- **added** — LaTeX profile now covers documented Microsoft 365 commands, environments, macros, colors, and normalizations including mhchem
- **added** — Superscript and subscript export as native text runs with DrawingML baseline offsets without changing font size
- **changed** — Eligibility for decorative lettering is now decided by criterion rather than page role, checking stability and artistic communication benefit
- **changed** — Image sourcing follows the task rather than tooling, with AI or keyed providers used proactively when serving planned visual jobs
- **changed** — AI capability is resolved at execution with per-runtime recovery instead of backend or host-tool preflight checks
- **changed** — Twelve image backends were realigned to current provider contracts with corrected size, ratio, endpoint, and payload handling
- **changed** — Formula compiler was split into focused modules: parser, AST, profile tables, OMML emitter, and run-property merger
- **fixed** — Out-of-profile LaTeX input now fails closed rather than degrading silently
- **fixed** — 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 candida
_[Truncated at 4000 characters — full notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.8.0]_
### v4.7.0
- Date: 2026-08-13
- Version: v4.7.0
- Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.7.0
- Permalink: https://whatsnew.fyi/product/ppt-master/releases/v4.7.0
- **added** — LaTeX compiles to editable PowerPoint math with OMML output supporting Office 2010+ TextMath in both flat and structured packages
- **added** — Inline math compiles to inline m:oMath within DrawingML paragraphs, allowing formulas to remain in the same paragraph as surrounding text
- **added** — Links are authored with ordinary SVG and lower to real PowerPoint click relationships for whole objects, inline text runs, and formulas
- **added** — Same-deck navigation with links targets other slides in the same deck, and targets are remapped when slides, layouts, and masters are cloned
- **added** — Links survive round-trip import and export, with supported click links reconstructed on PPTX import and same-deck links retargeted unambiguously
- **added** — Opt-in native charts preserve plot-area geometry as manual layout from authored slide coordinates instead of PowerPoint's automatic placement
- **added** — Horizontal bar axes and doughnut hole sizing are supported in native charts
- **changed** — Native formulas are now the default path with formula policy choices and image-rendering resources removed from Default and Quick generation
- **changed** — SVG formula preview is authoring-only with no formula image fallback emitted
- **removed** — latex_render.py is no longer used for formula rendering in normal operation, remaining only as a standalone legacy raster utility
- **fixed** — Invalid LaTeX input fails closed rather than degrading silently
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 ``.** 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 n
_[Truncated at 4000 characters — full notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.7.0]_
### v4.6.0
- Date: 2026-08-13
- Version: v4.6.0
- Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.6.0
- Permalink: https://whatsnew.fyi/product/ppt-master/releases/v4.6.0
- **added** — A new Quick-only Generate profile reconstructs raster page frames as editable PPTX with text restored natively and registered base and foreground groups reconstructed
- **added** — Low-resolution graphics may be reconstructed at high resolution under an identity lock while data graphics stay exact
- **added** — Stage 2 now presents three whole design solutions with each candidate carrying a project-specific custom mode, visual style, and image rendering
- **added** — Non-destructive bitmap treatments for brightness, contrast, tone, and blur applied as project-local derivatives that preserve dimensions and alpha
- **added** — Registered subject layer pairs recognized by both runtimes for subject-over-native-content compositions
- **added** — Native picture fills for editable text with blipFill supporting stretch and tile modes with fill alpha preserved
- **added** — Native animation sounds are mixed into exported narrated videos with PPTX cue timing calibrated against the raw narration timeline
- **added** — Real-time slideshow capture as an explicit delivery branch for preserving narration and native animation cues
- **added** — On-demand transition sounds with a 186-cue CC0 WAV catalog shipped bundled
- **added** — Traditional Chinese (zh-TW) locale for the local UI
- **changed** — Prepared derivatives are resolved before SVG authoring in both Default and Quick
- **changed** — Direction notes read as concise style summaries with a preferred direction chosen after comparison rather than declared up front
- **changed** — Narration waits for transitions to settle with page timing configurable
- **changed** — Visual continuity is planned before slide authoring rather than recovered afterward
- **changed** — Quick video delivery now requires synchronized custom animations rather than inherited stagger
- **changed** — Semantic visual hierarchy, canvas chrome, and chart design contracts realigned with dynamic canvas dimensions honored
- **fixed** — A five-page lightweight spec_lock re-read for Default Generate with scheduled re-read boundaries clarified for the Executor
- **fixed** — 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`
_[Truncated at 4000 characters — full notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.6.0]_
### v4.5.0
- Date: 2026-08-09
- Version: v4.5.0
- Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.5.0
- Permalink: https://whatsnew.fyi/product/ppt-master/releases/v4.5.0
- **added** — Fifteen brand identity workspaces for consulting, enterprise technology, Chinese technology, and financial organizations with labelled provenance and documented palette traps
- **added** — 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
- **added** — 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
- **changed** — Template installation now creates separate spec files per workspace as `design_spec...md` instead of merging into a single lossy file
- **changed** — Segment ownership now governs visual weight and dominance independent of install time, moving precedence to read time
- **changed** — Structure is now a runtime shape-composition grammar loaded by Default and Quick instead of a static catalog
- **changed** — Visualizations split by information model with charts keeping value-driven assets while qualitative topology and cell grids move out
- **changed** — Table rebuilt around six cell-grid grammars with schedules routed to Gantt
- **added** — Conditional geometry-composition pass with semantic validation for structural geometry and deck rhythm
- **added** — Directional multi-image composition where each image page decides its direction, contour, slots, and integration with vector, baseline, curve-spine, and panel geometry
- **added** — Word-timed subtitles for MiniMax, ElevenLabs, and CosyVoice with provider timings regrouped into shared compact SRT format
- **added** — Subtitles live beside their audio with an atomic manifest carrying provider provenance
- **changed** — Quick is now a self-contained runtime profile with source conversion, factual research, source import, and PPTX intake inlined
- **changed** — Default and Quick are now mutually exclusive procedures with Quick keeping full capability surface without substitute planning artifacts
- **changed** — Beautify selects runtime from explicit intent, using Quick only when trigger matches otherwise Default
- **added** — Project-scoped `workflow.log` as a cold audit trail mirroring project-scoped Python text output
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...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 readin
_[Truncated at 4000 characters — full notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.5.0]_
### v4.4.0
- Date: 2026-08-06
- Version: v4.4.0
- Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.4.0
- Permalink: https://whatsnew.fyi/product/ppt-master/releases/v4.4.0
- **changed** — 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
- **changed** — Template choice is now made during Stage 1 of confirmation instead of in a separate pre-Strategist phase
- **changed** — Production choices are now server-enforced to reject incomplete recommendation and final payloads
- **changed** — Typography reuse is now governed by design judgment rather than quota enforcement
- **added** — Style is now a fourth template kind alongside Brand, Layout, and Deck
- **added** — Create Style ships with schema, workspace contract, validator, and discovery index
- **added** — A consulting decision style template ships in the catalog with language-neutral, answer-first, evidence-led design
- **changed** — Template discovery is skipped for ordinary free design to enable faster default planning
- **added** — Export quality gate now requires a current passing final checker report before PPTX creation
- **added** — Text outside the page is now detected with separated page-fit geometry and DrawingML wrap safety checks
- **changed** — Re-export after animation edits now requires a current matching passing quality report
- **changed** — Web research is now isolated behind an artifact-based worker boundary with validated hand-off before import
- **changed** — Imported research is now fully read by the active content owner instead of being limited to 250 words
- **changed** — Quick applies supplied templates directly without starting the Confirm UI
- **changed** — Quick now uses the same composition baseline as default generation including text rhythm, natural wrapping, and visual weight
- **added** — Runtime attribution guard validates canonical project identity including exact author, repository URL, and MIT license text
- **added** — Attribution preflight is now part of the Skill bootstrap with route-specific entry point validation
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 def
_[Truncated at 4000 characters — full notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.4.0]_
### v4.3.0
- Date: 2026-07-31
- Version: v4.3.0
- Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.3.0
- Permalink: https://whatsnew.fyi/product/ppt-master/releases/v4.3.0
- **added** — Implement Quick Generate route that skips Strategist, confirmation UI, and spec lock apparatus for fact-sufficient requests
- **added** — Add language-aware font selectors in the Confirm UI with primary language distinct from UI language
- **added** — Support multi-effect object timelines with independent Start and timing settings for SVG groups
- **added** — Implement explicit preserve/reflow/split text-flow modes that emit native DrawingML line breaks
- **added** — Add motion selection guide driven by slide semantics with relationship and lifecycle mapping
- **changed** — Propagate one confirmed BCP-47 language contract end to end through text, tables, charts, notes, and document metadata
- **changed** — Materialize resolvable SVG text into native editable Boolean geometry with exact font and style matching
- **changed** — Route advanced visual techniques by visual job instead of browsing as a catalog with baseline to surface to selection to integration procedure
- **fixed** — Picture shadows and glows now survive both export and import directions
- **fixed** — Radial gradient point focus preserved between SVG and DrawingML fillToRect
- **fixed** — Recognize Traditional Chinese system fonts as PowerPoint-safe including Heiti TC, Kaiti TC, and MingLiU_HKSCS
- **removed** — 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
_[Truncated at 4000 characters — full notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.3.0]_
### v4.2.0
- Date: 2026-07-25
- Version: v4.2.0
- Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.2.0
- Permalink: https://whatsnew.fyi/product/ppt-master/releases/v4.2.0
- **added** — 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
- **added** — Subtitles synchronized with animations and recalibrated against exported video using Edge word-boundary stream and normalized correlation against actual video audio
- **added** — Motion semantics preserved for downstream video planning through video_motion_plan.py, deriving renderer-neutral motion plan from resolved conversion traces
- **added** — Edge TTS now runs three concurrent requests by default with configurable concurrency, with MP3/SRT publication kept atomic and page-ordered
- **added** — Speaker notes grounded in the finished page from completed SVG instead of fixed-length summary
- **added** — Animation groups derive from slide semantics through auditing and regrouping of ordinary SVG content into real reveal units
- **added** — Existing animations sidecar follows user intent, replaced on explicit regeneration and preserved for adjustment or repair
- **added** — Role anchors replace the body-ratio envelope for font family and size projection from Design Spec into Spec Lock
- **added** — Sparse display sizing is bounded with maximum two occurrences per deck before becoming a named role
- **added** — Font discovery broadened with restored Latin sans/serif/mono anchors and compact contrast-axis seeds
- **added** — Stage-specific recommendation files replace mutable single-file handoff with validation of filename and payload alignment
- **added** — UI fonts switch by locale
- **changed** — Choreography returns to content judgment instead of fixed page-structure-to-effect mappings
- **changed** — Nested edit groups are authoring freedom with anti-fragmentation rule applying only to top level
- **changed** — Executor may adapt Design Spec wording faithfully with Section IX as preferred wording and semantic authority
- **changed** — Bounded repairs no longer force full reloads through planning artifact reuse and targeted readback
- **changed** — Chart catalog templates are page-local references with Design Spec Section VII carrying Page, Template, and usage note
- **fixed** — Missing timing plan no longer silent, now names at-risk slides on stderr when narration animations derived without narration_timing.json
- **fixed** — First-page gate validates method across deck by classifying findings method-level or page-local before P02
- **fixed** — 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 mos
_[Truncated at 4000 characters — full notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.2.0]_
### v4.1.0
- Date: 2026-07-21
- Version: v4.1.0
- Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.1.0
- Permalink: https://whatsnew.fyi/product/ppt-master/releases/v4.1.0
- **changed** — 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
- **changed** — Replaced fixed line-height ratios (1.4–1.5× / 1.6–2.0×) with spacing chosen from typeface, size, density, and reading distance
- **changed** — 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
- **added** — Executor now opens with a visible menu of available constructions including alpha/gradient paint, elevation, image integration, line and type treatments, and constructed styles
- **changed** — The image-as-canvas usage rule for 4+ image decks became an intent audit; repeated layout structures are valid when the narrative requires them
- **removed** — Removed two taste-encoding warnings: missing_image_as_canvas and layout_degenerated
- **changed** — Changed the structured pages capacity hint from 3–8 content groups to one group per logical content unit
- **added** — Strategist's material sufficiency section now includes an explicit Crop Policy column with no-crop and adaptive options that project into the lock
- **added** — Strategist's section now includes a Native-ready column to identify independent data charts and tables for promotion to native editable objects
- **added** — 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** — Design Spec and spec_lock.md are now authored once as complete documents rather than scaffolded and filled piecemeal
- **changed** — project_manager.py validate no longer reopens confirm_ui/result.json and instead validates planning artifacts against their schemas
- **changed** — Executor resolves fonts by exact role with a legacy font_family fallback to keep existing locks working
##### 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 ` | 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
_[Truncated at 4000 characters — full notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.1.0]_
### v4.0.0
- Date: 2026-07-20
- Version: v4.0.0
- Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v4.0.0
- Permalink: https://whatsnew.fyi/product/ppt-master/releases/v4.0.0
- **added** — 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
- **added** — PowerPoint ↔ SVG Mapping Guide documenting the boundary between PowerPoint and SVG capabilities feature by feature
- **added** — Real slide masters and layouts using PowerPoint-native p:sldMaster and p:sldLayout inheritance for repeated page chrome and shared backgrounds
- **added** — Live slide-number fields replacing literal page numbers in exported decks
- **added** — Exported decks inherit project theme colors and fonts
- **added** — Solid and gradient full-page backgrounds export as PowerPoint-native slide backgrounds
- **added** — Reusable chart SVG template library with compacted rendering
- **added** — Prompt budget and governance lint (prompt-audit) with token-safe export postflight receipts
- **added** — Create Template route turns finished PPTX, images, PDFs, documents, websites, or brand assets into reusable template workspaces with three classes: Brand, Layout, and Deck
- **added** — Deterministic mirror import materializes validated authoring IR into structured template workspace
- **added** — template_preview_pptx.py tool for reviewing decks
- **added** — Fill Native PPTX route patches slide shells directly from raw PPTX templates without SVG regeneration
- **added** — SmartArt semantic structure reading during PPTX intake
- **added** — All DrawingML preset geometries round-trip through import and export
- **added** — Native table and chart reconstruction with improved XY chart axis semantics and fidelity
- **added** — CSS color alpha and group opacity compile into native alpha in exported presentations
- **added** — All native line-end arrow shapes enabled
- **added** — Narration exports receive _narrated filename suffix
- **added** — Confirm UI presents AI-authored custom design candidates alongside catalog options with staged confirmation
- **added** — Reference image single-image edit mode on the OpenAI backend for out-of-pipeline restyle and iteration
- **changed** — Per-page execution context reuses unchanged references instead of re-projecting them
- **changed** — Animation and transition behavior unified across export routes
- **fixed** — URL-encode page_name for non-ASCII slide names in live preview
- **fixed** — 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](https://github.com/hugohe3/ppt-master/blob/main/docs/project-positioning.md) (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](https://github.com/hugohe3/ppt-master/blob/main/docs/powerpoint-svg-mapping.md) 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)
### v3.1.0
- Date: 2026-07-04
- Version: v3.1.0
- Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v3.1.0
- Permalink: https://whatsnew.fyi/product/ppt-master/releases/v3.1.0
- **added** — Export native chart chrome metadata including titles, overlays, and axis labels with SVG fallback styling mirrored into native charts
- **added** — Inherit typography from SVG fallback in native charts while preserving explicit bounds, point colors, and overlays
- **added** — Guard chart chrome against invisible fallback text
- **changed** — Use viewBox as the single source of truth for canvas size in preview and export
- **changed** — Split native_objects into a subpackage and group drawingml and package modules
- **changed** — Centralize SVG resource path resolution and parse each SVG once across DOM checks
- **fixed** — Error on silent-loss paint colors (hsl, alpha-hex) during export validation
- **fixed** — Validate exported PPTX typefaces during export validation
- **fixed** — 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