github hugohe3/ppt-master v5.1.0

4 hours ago

Important

Route change. The former Fill Native PPTX and Enhance Native PPTX routes are merged into one Edit Native PPTX route, and their legacy CLIs (template_fill_pptx.py, the native-enhance workflow) are removed. Existing decks are now imported with pptx_to_svg.py --roundtrip, edited page by page, and exported with svg_to_pptx.py --roundtrip; unchanged pages pass through byte-for-byte. If you scripted the old commands, switch to the Edit Native PPTX workflow.

v5.0.0 replaced heuristic recall with vocabulary-led selection. This release fixes what that exposed in practice: decks that came out visibly plainer than the vocabulary allowed, text that overflowed its boxes, native charts and tables that drifted from their SVG previews, and an existing-deck path that patched OOXML instead of round-tripping it.

Generated decks stopped getting plainer

Six consecutive Default decks used zero native presets, zero Boolean geometry, zero filters, and almost only rectangles and lines. The causes were in the prompts, not the capability, and are removed:

  • Plainness exit clauses are gone from the always-loaded Executor core and effects reference ("plain construction remains valid", "keep peer grids flat", "add no effect family", "lightest sufficient boundary"). Export mechanics are untouched and no quota or minimum shape count is added.
  • The style index no longer maps topics to restrained styles. Its "Typical context" column is dropped; a topic never selects a row.
  • Zero-image exit clauses are removed across Strategist → Step 4 → Executor. Text-only sources now acquire web mood/scene images and use icons when the page benefits, instead of defaulting to omission; none remains legal and exclusive.
  • Stage 2 directions are catalog-informed again. A fresh-session control deck showed that authoring directions before opening any catalog produced restraint-only directions with explicit decoration bans, and every page collapsed to photo + text + two rules; the revert restores the only channel that put carrier vocabulary in front of the Strategist at direction time.
  • Directions are written as what a page uses, not as a look. Cards, icons, colour chips, and soft shadows are legitimate carriers rather than "web look" markers; an everyday device menu returns as reference vocabulary.
  • Capabilities are announced, not taught. Icon library and lettering guidance state what exists; page fit decides use. Strategist deliberation mandates are demoted to defaults and references, and docs/rules/prompt-style.md now states the admission criterion for a prohibition: only what affects SVG validity or PPTX export may be a hard rule.

Text fits its box

  • text_measure.py exposes the checker's width estimator at authoring time (measure, wrap, box), so authors calibrate one representative line per text role before writing coordinates instead of bouncing off the bounds gate.
  • The checker's text-bounds blind spots are closed. The canonical "first line + positioned tspans" paragraph form is estimated instead of reported as unverifiable; DrawingML wrapping headroom applies to module bounds; overlapping direct-root modules (>1 px on both axes) now fail.
  • Overflow diagnostics carry arithmetic: per-character width at that size and how many characters fit the container.
  • wrap matches the checker's headroom, so a wrapped paragraph passes the gate it was wrapped for.
  • Font stacks export correctly. A named CJK face now serves Latin glyphs when no named Latin face precedes it; "Microsoft YaHei, sans-serif" no longer sends digits to Segoe UI. How a font-family stack maps to PPTX faces is documented.

Native charts and tables match their previews

  • Parity is projected, not assumed. Twelve objective checks compare the marker JSON with the SVG fallback (header bands, column fills, first-column emphasis, border topology, legend coverage, explicit text/axis/grid colours, exception point colours, plot area, treemap tile sequence). They are advisory in the normal gate and fail closed in --native-charts-and-tables export preflight.
  • Exporter defects fixed: uniform table borders no longer draw diagonals in every cell; ChartEx charts no longer emit an empty title (rendered by PowerPoint as an automatic title) or a hardcoded "Series 1".
  • Round-trip regressions: the original table payload survives marker validation; update_spec.py re-stamps native fallback baselines after a deck-wide colour or font substitution, so the final gate no longer reports stale markers; merged-cell blanks are judged on the authored rows; run-level table styles participate in parity.
  • Bundled chart/table prototypes carry stamped baselines.

Edit Native PPTX

  • One route for existing decks. Import with pptx_to_svg.py --roundtrip, plan with an optional page_plan.json (select, reorder, repeat, or omit source slides), edit only planned pages, overlay notes/narration/timings/transitions, export with svg_to_pptx.py --roundtrip. The export receipt reports passthrough, cloned_passthrough, patched, and rebuilt counts.
  • Compact semantic authoring workspaces: imported decks and mirror templates share one new-only workspace contract; native tables normalize to semantic-table v2; complex vector decorations extract on demand; source-backed objects compact to a source-proxy contract.
  • svg_authoring_view.py --adopt-object copies an object across pages with effective inherited style and composed transforms; svg_quality_checker.py --roundtrip gates edited-text capacity on the resolved roster.
  • Adversarial review and three real-deck dogfood rounds closed defects around changed resources, inherited root attributes on rebuilt pages, notes-master discovery, externally linked pictures, shapes without ids, duplicate relationship ids, slide-jump remapping, and page plans that drop slides owning media.

Planning and Quick

  • design_spec_depth (Stage 2, default brief): writing the full Design Spec cost about a quarter of output tokens, most of it page copy the same context rewrites minutes later as SVG. brief keeps the outline style; complete is forced under split or refine modes. Spacing anchors and neutral colour roles that had been lost across refactors are restored.
  • Quick preserves explicit template structure: lockless Quick infers flat vs structured packaging from the complete SVG roster and validates all-or-none Master/Layout metadata.
  • Stage 1 recommends a page range; Stage-2 candidate text is authored once in the confirmed UI language.
  • Canonical compact SVG authoring is the source form for direct generation and PPTX-derived templates; the --canonical-authoring gate is advisory for authored pages (the normalizer is named) and blocking only for template workspaces. --stage page checks one authored SVG. A missing pptx_structure.mode defaults to flat.
  • spec_lock image rows no longer require pattern=; a confirmed icon library is materialized as a synced project pool; pptx_to_svg restores blank placeholders on re-import; slice failures sample the real key colour.

Repository

  • Prompt audit manifest registers Quick load sets and 22 authority edges; cross-runtime drift found by a full prompt audit is repaired in 24 files.
  • render-batch JSON fields and table align/valign values are documented; the FAQ and README (en/zh) follow the route change.

Full changelog: v5.0.0...v5.1.0

Don't miss a new ppt-master release

NewReleases is sending notifications on new releases.