# ppt-master: what changed from 5 to 6 - Product: ppt-master (https://whatsnew.fyi/product/ppt-master) - Vendor: hugohe3 - Range: changelog entries numbered after v5.1.0 up to and including v6.2.0, stable releases only - Entries below: 3 releases (newest first) - Resolved: 5 is v5.1.0 and 6 is v6.2.0, the newest stable release of each major we track - Carrying security changes: 0 · CVEs mentioned: 0 · Mentioning breaking changes: 0 · Removing or deprecating something: 2 - Page: https://whatsnew.fyi/product/ppt-master/compare/5...6 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'. ## What changed (43 changes, grouped by kind) ### Added #### v6.2.0 (2026-09-02) - image_treat.py gains --fit WxH flag to downscale an image to fit inside a box - image_gen.py --manifest validates each request's aspect ratio against selected backend before generation #### v6.1.0 (2026-08-30) - Relationships section joins every Slide block to document semantic units and their order, link, parent, membership, contrast, and overlap - Carrier-receipt review now requires stating a reason when no presets, inline emphasis, gradients, or filters are used - Four premium devices join the everyday menu: gradient or glow display text, accent gradient rule, elevated primary object, and duotone or brand-wash image - Text width calibration now performed once before P01 using text_measure.py to report characters per 100px per role - Carrier receipt gains an Effects line documenting inline emphasis runs, gradient uses, filter uses, and text effects ### Changed #### v6.2.0 (2026-09-02) - Prompt corpus rewritten for readability with restoreda catalog-style format in core files - Implemented one owner per rule with ownership registered in docs/rules/rule-owners.md and pointers in other files - Shared planning core moved to references/plan-core.md with both Default and Quick routes reading from it - Core files rewritten in catalog format with fixed skeleton, labeled paragraphs, and one decision per example - Executor section 2.2 lists roughly ten per-page decisions in order from module line to coordinates - Four overloaded terms renamed: Layout to Composition, Layout pattern to Image pattern, Structure decision to topology decision, and carrier semantics clarified - Vocabulary standardized in SKILL.md defining Structure, Layout, mode, template, style, Reference, and carrier - Font specification changed to one concrete face per role with at most one Latin plus one CJK - data-pptx-bounds redefined as union of child geometry plus margin, recomputed on size or line count changes - Role scan now names chapter numerals and hero figures as display roles that recur per anchor page - Image downscaling to planned size is allowed as an image derivative - P05 early gate replaces first-page gate on both routes with svg_quality_checker.py --stage early, skipped for rosters of six or fewer pages - Presets gain carrier-and-field family in receipt, routing trigger, and section 3.0 - project_manager.py init is now idempotent on names already carrying _YYYYMMDD suffix - svg_to_pptx.py now completes a preset's avLst when placeholder or roundtrip source leaves it partial - source_to_md.py -o with single input now writes into that directory instead of treating it as file path - Tool behavior documentation moved from prompts to scripts/docs/ with prompts pointing there - docs/rules/prompt-style.md extended to cover every runtime file with prescriptive guidelines and catalog exemplars #### v6.1.0 (2026-08-30) - Plan and Executor now have stated ownership boundaries across three tiers: Plan-only, Execution-only, and Reference sketch - Executor core is re-ordered with Page Expression Core (typographic features, layout structures, image composition) evaluated first before Blueprint Intake and per-page composition - Planning prompts reduced from 82.4K to 73.6K tokens and Quick prompts from 78.6K to 70.4K tokens - Image-layout catalog and placement geometry moved from planning batch to Executor ownership - Content fidelity clarified to use quotation marks and first person only for wording sourced as a quote, with organizing frameworks labeled as the deck's reading - Spec lock baseline and user prohibitions documented in spec_lock.md with user prohibitions quoted verbatim and tagged as (user) - Routing triggers evaluated once over entire roster before P01 and every triggered module read in that batch - Image upscale advisory fires only above 2.0× source scale and states the threshold, no longer reporting smaller upscales #### v6.0.0 (2026-08-30) - Reorganized prompt corpus from contract-last to contract-first design, reducing size from 345K to 233K tokens across all bundles - Moved execution-side modules behind trigger-based loading so they load only when needed rather than resident in memory - Relocated craft and design guidance to references/ while moving enforced grammar, importer behavior, and tool procedures to scripts/docs/ - Consolidated aesthetic defaults and everyday effects into executor-base.md, making them available without loading svg-effects.md - Reduced Default planning bundle from 117K to 82K tokens and Quick bundle from 129K to 78K tokens - Reduced resident Executor core from 70K to 33K tokens by deferring trigger-loaded modules - Reduced Create Deck bundle from 76K to 43K tokens ### Removed #### v6.1.0 (2026-08-30) - First-exercise page gate removed from workflow - Preset exit clauses removed from receipt validation ### Deprecated #### v6.0.0 (2026-08-30) - Create Template and Edit Native PPTX features paused from new capability development, continuing in maintenance mode with bug fixes only ## Release notes ### v6.2.0 - Date: 2026-09-02 - Version: v6.2.0 - Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v6.2.0 - Permalink: https://whatsnew.fyi/product/ppt-master/releases/v6.2.0 - **changed** — Prompt corpus rewritten for readability with restoreda catalog-style format in core files - **changed** — Implemented one owner per rule with ownership registered in docs/rules/rule-owners.md and pointers in other files - **changed** — Shared planning core moved to references/plan-core.md with both Default and Quick routes reading from it - **changed** — Core files rewritten in catalog format with fixed skeleton, labeled paragraphs, and one decision per example - **changed** — Executor section 2.2 lists roughly ten per-page decisions in order from module line to coordinates - **changed** — Four overloaded terms renamed: Layout to Composition, Layout pattern to Image pattern, Structure decision to topology decision, and carrier semantics clarified - **changed** — Vocabulary standardized in SKILL.md defining Structure, Layout, mode, template, style, Reference, and carrier - **changed** — Font specification changed to one concrete face per role with at most one Latin plus one CJK - **changed** — data-pptx-bounds redefined as union of child geometry plus margin, recomputed on size or line count changes - **changed** — Role scan now names chapter numerals and hero figures as display roles that recur per anchor page - **changed** — Image downscaling to planned size is allowed as an image derivative - **changed** — P05 early gate replaces first-page gate on both routes with svg_quality_checker.py --stage early, skipped for rosters of six or fewer pages - **changed** — Presets gain carrier-and-field family in receipt, routing trigger, and section 3.0 - **changed** — project_manager.py init is now idempotent on names already carrying _YYYYMMDD suffix - **changed** — svg_to_pptx.py now completes a preset's avLst when placeholder or roundtrip source leaves it partial - **added** — image_treat.py gains --fit WxH flag to downscale an image to fit inside a box - **added** — image_gen.py --manifest validates each request's aspect ratio against selected backend before generation - **changed** — source_to_md.py -o with single input now writes into that directory instead of treating it as file path - **changed** — Tool behavior documentation moved from prompts to scripts/docs/ with prompts pointing there - **changed** — docs/rules/prompt-style.md extended to cover every runtime file with prescriptive guidelines and catalog exemplars > [!IMPORTANT] > **The prompt corpus is now written for readers, not for compression.** After v6.1.0's slimming, this release makes every runtime rule live in one place, restores the catalog-style format in the core files that had been compressed, and shares one planning core between the Default and Quick routes. Rules did not change; where they read differently, the difference was reviewed commit by commit against the v6.1.0 baseline. Both routes were exercised end-to-end on a real source (Default 18 pages, Quick 15 pages) and the friction found there is fixed here. Create Template and Edit Native PPTX remain paused (bug fixes only). ##### Prompts - **One owner per rule.** [`docs/rules/ownership.md`](docs/rules/ownership.md) states how ownership is decided and [`docs/rules/rule-owners.md`](docs/rules/rule-owners.md) registers every cross-file rule with its single owner; other files keep a one-line pointer. The same rule used to be restated in five to ten places (slot contract, Chart/Table reference, sounds, template discovery, size band, icons, reading mode), each drifting on its own. - **Shared planning core.** `references/plan-core.md` holds the page-planning rules both routes read; `strategist.md` keeps only the confirmation surface, the three directions, and its artifacts; `quick-generate.md` §2 keeps only commands and contracts. - **Readable core files.** `executor-base.md`, `strategist.md`, `generate-pptx.md`, `quick-generate.md`, `image-generator.md`, `animations.md`, `create-template.md`, and `template-designer.md` are rewritten in the catalog format the well-read files already used: fixed skeleton, short labeled paragraphs, one decision per example, exceptions as their own sentence. Every code span, number, and link was verified present before and after. - **One ordered per-page chain.** Executor `§2.2` lists the roughly ten decisions a page goes through, in order, from module line to coordinates, instead of scattering them across sections. - **Four overloaded terms renamed.** §IX `Layout` → `Composition`; §VIII `Layout pattern` → `Image pattern`; "Structure decision" → "topology decision" (`topology=yes|no`); `carrier` now has one meaning. The checker reads the new column names and falls back to the old ones, so existing projects still validate. - **Vocabulary in `SKILL.md`**, read by every route, defines the terms the corpus uses (Structure, Layout, mode, template, style, Reference, carrier). - **Fonts**: each script names one concrete face, at most one Latin plus one CJK per role, no fallback list; the "at most four families" ceiling is back after being lost in the ownership pass. - **Dogfood follow-ups**: `data-pptx-bounds` is defined as the union of child geometry plus margin, recomputed whenever a size or line count changes; roles without a `_family` fall to `body_family` (title-family roles to `title_family`); the role scan names chapter numerals and hero figures as display roles that recur per anchor page; downscaling to the planned size is an allowed image derivative; a single character-only look is allowed for CJK lettering; preset shapes with repeated vertices are registry output and are not to be "cleaned"; Quick's closing checklist gains the motion gate. ##### Scripts and checker - **P05 early gate** replaces the first-page gate on both routes (`svg_quality_checker.py --stage early`); rosters of six or fewer pages skip it. Checker runs follow a gate point or the end of one consolidated repair pass. - **Presets** gain a carrier-and-field family in the receipt, the routing trigger, and §3.0. - `project_manager.py init` is idempotent on names that already carry a `_YYYYMMDD` suffix (no more `_2` directories). - `svg_quality_checker.py --json` semantics are stated everywhere the command appears: it writes the report the exporter reads; stdout stays the human summary. The exporter's repair hint now includes `--canonical-authoring`; the checker flag set is aligned across the quick reference, Quick §4 _[Truncated at 4000 characters — full notes: https://github.com/hugohe3/ppt-master/releases/tag/v6.2.0]_ ### v6.1.0 - Date: 2026-08-30 - Version: v6.1.0 - Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v6.1.0 - Permalink: https://whatsnew.fyi/product/ppt-master/releases/v6.1.0 - **changed** — Plan and Executor now have stated ownership boundaries across three tiers: Plan-only, Execution-only, and Reference sketch - **added** — Relationships section joins every Slide block to document semantic units and their order, link, parent, membership, contrast, and overlap - **changed** — Executor core is re-ordered with Page Expression Core (typographic features, layout structures, image composition) evaluated first before Blueprint Intake and per-page composition - **changed** — Planning prompts reduced from 82.4K to 73.6K tokens and Quick prompts from 78.6K to 70.4K tokens - **changed** — Image-layout catalog and placement geometry moved from planning batch to Executor ownership - **added** — Carrier-receipt review now requires stating a reason when no presets, inline emphasis, gradients, or filters are used - **added** — Four premium devices join the everyday menu: gradient or glow display text, accent gradient rule, elevated primary object, and duotone or brand-wash image - **changed** — Content fidelity clarified to use quotation marks and first person only for wording sourced as a quote, with organizing frameworks labeled as the deck's reading - **changed** — Spec lock baseline and user prohibitions documented in spec_lock.md with user prohibitions quoted verbatim and tagged as (user) - **changed** — Routing triggers evaluated once over entire roster before P01 and every triggered module read in that batch - **removed** — First-exercise page gate removed from workflow - **added** — Text width calibration now performed once before P01 using text_measure.py to report characters per 100px per role - **added** — Carrier receipt gains an Effects line documenting inline emphasis runs, gradient uses, filter uses, and text effects - **changed** — Image upscale advisory fires only above 2.0× source scale and states the threshold, no longer reporting smaller upscales - **removed** — Preset exit clauses removed from receipt validation > [!IMPORTANT] > **Plan and execution now have a stated boundary.** This release follows v6.0.0's prompt slimming with the first round of generation-driven prompt work: what the plan owns, what the Executor owns, and what is only a sketch are written down as three tiers, and the Executor core is re-cut so the craft that makes pages look designed comes first. Create Template and Edit Native PPTX remain paused (bug fixes only). ##### Prompts - **Three ownership tiers** ([`docs/rules/prompt-style.md`](docs/rules/prompt-style.md) §4.1). *Plan-only*: anything that needs a prepared file, holds across the whole roster, needs user confirmation, or comes from source semantics. *Execution-only*: anything judged with the objects on the canvas — carrier mix, geometry, presets, composition, treatment. *Reference*: a starting sketch the Executor adjusts freely, binding only when labeled `(binding)`. Depth test: one plan given to two Executors yields the same content with different looks. - **`Relationships` joins every §IX Slide block** — the page's semantic units and their `order` / `link` / `parent` / `membership` / `contrast` / `overlap`, written by the plan and consumed by the Executor's Structure decision. `project_manager.py validate` reports a missing line like a missing `Audience move`. - **The Executor core is re-cut**: the Page Expression Core (typographic features, native contour families, the everyday device menu, layout structures, page recipes, image composition families, the visual job router, everyday effects) comes first; then Blueprint Intake; then per-page composition, the technical contract, and checkpoints. Default-pipeline mechanics moved to `generate-pptx.md` Step 6 as their single owner. - **Planning reads less**: the image-layout catalog and placement geometry leave the planning batch (they are the Executor's and load on any image page); Strategist sheds execution vocabulary and internal duplicates. Planning set 82.4K → 73.6K tokens, Quick 78.6K → 70.4K. - **Absence needs a reason.** The final carrier-receipt review asks, per family or page, what carries the job when the receipt shows no presets, no inline emphasis, no gradients, or no filters — or fewer preset/connector pages than pages declaring a relationship. Style, speed, restraint, "text was enough", or "it is editable anyway" are not answers; a missing answer is repaired. Choosing not to use a device stays valid — only an unstated reason is not. Four premium devices (gradient or glow display text, accent gradient rule, elevated primary object, duotone / brand-wash image) join the everyday menu as capability recall. - **Content fidelity clarified**: quotation marks and first person only for wording the source gives as a quote; an organizing framework the source does not state is labeled as the deck's reading; when text does not fit, switch texture before dropping a qualifier. - **Lock prohibitions are the user's**: `spec_lock.md forbidden` holds the technical baseline plus prohibitions the user stated in their own words, quoted verbatim and tagged `(user)`; a confirmed `visual_style_behavior` binds as identity prose and is never projected into a prohibition. ##### Workflow - **Uninterrupted page loop.** Routing triggers are evaluated once over the whole roster before P01 and every triggered module is read in that batch; a page reaching an unforeseen capability reads its module then. The first-exercise page gate is gone — P01 gate, then pages, then the final gate. - **Text width calibrated once, before P01**: `text_measure.py calibrate [--outline] [--role NAME:FAMILY:SIZE]` reports ≈ chars per 100 px per role (CJK and Latin, the checker's own estimator) and each role's longest planned §IX line, written to `validation/text_calibration.json`. Later pages estimate by arithmetic and measure nothing. ##### Scripts and checker - The carrier receipt gains an `Effects:` line — inline emphasis runs, gradient uses, filter uses, text effects — informationa _[Truncated at 4000 characters — full notes: https://github.com/hugohe3/ppt-master/releases/tag/v6.1.0]_ ### v6.0.0 - Date: 2026-08-30 - Version: v6.0.0 - Original notes: https://github.com/hugohe3/ppt-master/releases/tag/v6.0.0 - Permalink: https://whatsnew.fyi/product/ppt-master/releases/v6.0.0 - **changed** — Reorganized prompt corpus from contract-last to contract-first design, reducing size from 345K to 233K tokens across all bundles - **changed** — Moved execution-side modules behind trigger-based loading so they load only when needed rather than resident in memory - **changed** — Relocated craft and design guidance to references/ while moving enforced grammar, importer behavior, and tool procedures to scripts/docs/ - **changed** — Consolidated aesthetic defaults and everyday effects into executor-base.md, making them available without loading svg-effects.md - **changed** — Reduced Default planning bundle from 117K to 82K tokens and Quick bundle from 129K to 78K tokens - **changed** — Reduced resident Executor core from 70K to 33K tokens by deferring trigger-loaded modules - **changed** — Reduced Create Deck bundle from 76K to 43K tokens - **deprecated** — Create Template and Edit Native PPTX features paused from new capability development, continuing in maintenance mode with bug fixes only > [!IMPORTANT] > **Focus change.** As capabilities landed release after release, the prompt corpus grew from 63K tokens (v2.5) to 188K (v2.13) to 345K (v5.1). This release slims it to 233K and moves execution-side modules behind triggers. The next phase is prompt optimization driven by continuous deck-generation testing. **Create Template and Edit Native PPTX are paused** — both keep working and receive bug fixes, but no new capability is planned for them until the prompts are where they should be. ##### Prompts - **Every prompt file rewritten contract-first, then craft.** Each file states the minimal form the model must write, then the design judgment; anything the SVG standard already enforces is no longer restated. Section numbers are stable, so cross-references from earlier notes still resolve. - **Three content kinds, one owner each** ([`docs/rules/prompt-layers.md`](docs/rules/prompt-layers.md)). Craft and the minimal contract stay in `references/`; enforced grammar, importer behavior, and tool procedure moved to `scripts/docs/` — [`svg-contract.md`](skills/ppt-master/scripts/docs/svg-contract.md), [`svg_editor.md`](skills/ppt-master/scripts/docs/svg_editor.md), [`narration.md`](skills/ppt-master/scripts/docs/narration.md), [`template-tools.md`](skills/ppt-master/scripts/docs/template-tools.md), and a sidecar field reference in [`pptx-animations.md`](skills/ppt-master/scripts/docs/pptx-animations.md). - **Aesthetic defaults and everyday effects are back in the Executor core.** The 60-30-10 proportion, 4.5:1 contrast, hue count by encoding, single light source, felt-not-seen alpha, one weight tool per container, dash presets, and the XML for `softShadow`, `titleGlow`, `field`, and `scrim` now live in `executor-base.md` and are usable without loading `svg-effects.md`. The Strategist keeps contrast/concord font pairings, PPT-safe faces, and industry color anchors. - **Sizes** (tiktoken `o200k_base`, audited by `prompt_audit.py`): corpus 345K → 233K; Default planning bundle 117K → 82K; Quick 129K → 78K; resident Executor core 70K → 33K; Create Deck 76K → 43K. ##### Workflow - **Planning reads everything; execution loads on triggers.** The Executor's resident core is `executor-base.md`, `shared-standards-core.md`, `semantic-svg.md`, the complete preset vocabulary, and the confirmed mode / visual-style catalog file (a `custom` direction without references reads none). `executor-structure.md` + `topology-assembly.md`, `native-shape-authoring.md`, and `svg-effects.md` load the first time a page needs them, on the triggers named in the routing table, and each page reports a `P modules:` line. - **Text width is calibrated once, then estimated.** One representative line per role is measured before P01; every later page sizes its zones by that per-font arithmetic, writes the sentence first and fits the zone to it, and never trims wording to satisfy an estimate. - **Font delivery target is stated where the Strategist reads it.** Faces default to Windows Microsoft PowerPoint unless the user or template names another target; the authoring host's installed fonts never select a face, and PingFang SC / Heiti SC / Songti SC are preview aliases, not named faces. ##### Contracts and docs - `native-data-interface.md`, `spec_lock_reference.md`, `beautify-pptx.md`, and `create-template.md` state their exact field grammar (finite `x`/`y` vs `≥1 EMU` sizes, zero-based `idx`, camelCase read aliases, `P` + at least two digits page keys, `Hans/Hant/Jpan/Hang` script tags, display-name provenance). - `docs/technical-design.md` and the compatibility router describe the trigger-loaded modules. ##### What's next Repeated deck generation on the slimmed prompts, and prompt changes driven by what those decks show. Template creation and native-editable PPTX editing stay in maintenance until then. No CLI flag, file format, or export behavior changed in this release.