What changed in ppt-master from 5 to 6

3 releases numbered after v5.1.0 up to and including v6.2.0, stable releases only. v5.1.0 and v6.2.0 are the newest stable releases of 5 and 6 we track; this page follows them as new ones ship.

43 changes across 3 releases

Added 7

v6.2.0

  • 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

  • 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 33

v6.2.0

  • 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 <dir> 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

  • 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

  • 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 2

v6.1.0

  • First-exercise page gate removed from workflow
  • Preset exit clauses removed from receipt validation
Deprecated 1

v6.0.0

  • Create Template and Edit Native PPTX features paused from new capability development, continuing in maintenance mode with bug fixes only

Original release notes, newest first

The list above is our reading of these notes; the originals from hugohe3 are here, one fold per release.

v6.2.0

[!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 states how ownership is decided and 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 LayoutComposition; §VIII Layout patternImage 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 <role>_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, and the exporter message.
  • source_to_md.py -o <dir> with a single input writes into that directory instead of treating it as a file path.
  • image_gen.py --manifest validates each request's aspect ratio against the selected backend before spending a generation.
  • image_treat.py --fit WxH downscales an image to fit inside a box (new).
  • import-sources log wording matches what the tool does (no false "namespace" claim).
  • Tool behavior that lived in prompts moved to scripts/docs/ (Chart/Table payload grammar in native-data.md, exporter flags, image tools, import semantics); the prompts point there.
  • svg_to_pptx.py completes a preset's avLst when a placeholder or roundtrip source leaves it partial, so PowerPoint no longer offers to repair the deck.
Docs
  • docs/rules/prompt-style.md now covers every runtime file and is prescriptive: recall before craft before boundary, sentence and paragraph limits, one meaning per term, catalog exemplars.
  • docs/rules/prompt-layers.md adds Procedure as a fourth content layer.
  • conversion.md sidecar naming corrected to <stem>.
What's next

Maintenance continues as report-driven fixes from real generation runs. No prompt or workflow restructuring is planned.

View originalPermalink

v6.1.0

[!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 §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 <project> [--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 — informational, never a quota.
  • validate checks the per-slide Relationships line and, on versioned locks, the (user) tag on non-baseline forbidden rows (legacy marker-less locks are untouched).
  • The image upscale advisory fires only above 2.0× source scale (about 3× on a 1080p projector) and says so; smaller upscales are no longer reported.
  • Preset exit clauses ("no preset quota", "zero preset use proves nothing", "a neutral primitive when neutrality is useful") are removed; a directional or step relationship drawn as a hand path where §3.0 names a preset is a receipt contradiction to repair.
What's next

Continuous generation testing against these prompts; report-driven fixes only. Early runs show stronger cross-page consistency with the uninterrupted page loop and pre-P01 calibration.

View originalPermalink

v6.0.0

[!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). Craft and the minimal contract stay in references/; enforced grammar, importer behavior, and tool procedure moved to scripts/docs/svg-contract.md, svg_editor.md, narration.md, template-tools.md, and a sidecar field reference in 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<NN> 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.

View originalPermalink