Skip to content

v2.12.0

Latest

Choose a tag to compare

@hugohe3 hugohe3 released this 01 Jul 07:36

Highlights

PPTX compatibility — decks that PowerPoint / WPS refused to open now open cleanly

This release closes several distinct "the file won't open" failure modes reported on 2.11 (#196, #197, and follow-ups):

  • Speaker-notes decks are no longer rejected as corrupt (#197). Exporting with notes now emits a proper notesMaster + notes theme and registers it in presentation.xml / [Content_Types].xml, instead of the old "drop the dangling rel" workaround that PowerPoint actually rejected.
  • Windows / Codex-sandbox "无法读取" fixed (#196). After a successful export, svg_to_pptx relaxes the exported file's permissions (POSIX read/write for the owner + read for group/other; on Windows it also grants the built-in Users group read via icacls), so files written inside a restrictive sandbox open on the desktop.
  • Package metadata normalized for PowerPoint, invalid slide-size metadata normalization removed, and tracked-text / validation gaps handled — all eliminating "needs repair" prompts.
  • UTF-8 stdio forced across CLI entry scripts and tool subprocesses, preventing mojibake / encoding-driven failures on non-UTF-8 default consoles.

If you hit an unopenable deck on 2.11, upgrading to 2.12.0 is the fix.

Spot illustrations — AI illustration sheet → sliced decorative cutouts (new pipeline)

Generate one AI illustration sheet, slice it into individual spot elements, and place them as decorative cutouts (not boxed images) across the deck. Illustrations can be deployed as a cross-page motif through-line, with the lean tied to the locked visual_style. Confirm UI gains an illustration-usage toggle and selectable illustration strategies.

Typography — px-only unit system with deck-wide role locking

  • Single px-based unit system with recalibrated body baselines; exported font sizes round to 0.1pt (0.5pt snapping dropped).
  • Structural roles hold one size deck-wide — font size is treated as skin, not inherited template geometry; band freedom is reserved for feature elements.
  • Two-tier confirmation (anchors → re-derive → realization) with a pt confirmation layer, a delivery-purpose axis, and per-role sizes; subheading and lead added as recognized ramp roles; warns on template px drift.

Image search

  • Best-match-only by default, with review copies and manual replace; entity-safety gate for exact-subject web rows; concurrent --batch mode; weak-required_terms warnings.

By module

Export / PPTX

  • Cap native PPTX image media size.
  • Honor image transform matrices; account for letter spacing in text export.
  • Textbox/paragraph fidelity: scale single-line headroom by uppercase fraction, merge leading text paragraphs, preserve list-item paragraph breaks, avoid paragraph textbox width headroom.

Templates & brands

  • New native-enhancement workflow for finished PPTX.
  • Template-fill apply gated on a confirmed plan, plus a validate step.
  • New brand presets: 中国电建 / 中汽研 (consolidated to a single deck each).

Confirm UI / Live preview

  • Multi-source image usage in image confirmation; canvas labels and preview samples aligned.
  • Live preview: expose text styles for textboxes, unitless SVG length edits preserved, edit/annotation flow clarified, preview runtime history daemonized.

Converters

  • doc_to_md: preserve DOCX tables as pipe Markdown, trim mammoth over-escaping.
  • image_manifest.json emitted across all converter paths; prefer short image filenames; guard empty-URL conversions.
  • Fix web page charset decoding.

Beautify

  • Seed body_size from the source deck's inherited body font size.

Docs & internals

  • Workflow-spec refactor: routing, registry, artifact, and recovery split into dedicated authorities; technical-design doc synced with landed capabilities.

Full changelog: v2.11.0...v2.12.0