Skip to content

v4.2.0

Latest

Choose a tag to compare

@hugohe3 hugohe3 released this 25 Jul 08:57

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 most twice per deck; the third occurrence must become a named role.
  • Font discovery broadened with restored Latin sans/serif/mono anchors and compact contrast-axis seeds for Stage 2 directions.
  • Executor may adapt Design Spec wording faithfully. Section IX copy is preferred wording and semantic authority rather than a verbatim default — facts, necessary content, and explicit literal requirements still hold.
  • Bounded repairs no longer force full reloads. Planning artifacts are reused while context remains valid; a verified local Design Spec repair rebinds through targeted readback and SHA rebind. Full reads remain for fresh, external, structural, or mismatched changes.
  • The first-page gate validates method, not just P01. Each finding is classified method-level or page-local and resolved to its authoritative rule before P02, so a systematic authoring error can't be patched on P01 and then reproduced across the deck.

Confirmation UI

  • Stage-specific recommendation files replace the mutable single-file handoff: the active Stage 1/2/3 file resolves from confirmed progression, filename and payload alignment is validated, skipped stages are rejected, and legacy recommendations.json projects stay readable. An unconfirmed active stage can be overwritten on request; confirmed earlier stages stay intact.
  • UI fonts switch by locale (thanks @kevindesuyo, #240).

Charts & icons

  • Chart catalog templates are page-local references, not visualization-type locks. Design Spec Section VII carries Page, Template, and a short usage note; only Page and Template project into the lock, and Section IX plus source data remain authoritative. The section is optional — empty and no-match entries are omitted.
  • Chart recall keeps bounded lexical results as the default. Low or empty results no longer auto-expand the full catalog; Strategist can keep no-template-match by judgment or request semantic fallback explicitly, and the shortlist must be read without output truncation.
  • Icon selection and execution separated. Generic bundled selection stays within one of four stylistic libraries (simple-icons alone or alongside, for real brand marks); every SVG under <project>/icons/ is prepared execution material rather than an inventory whitelist. Known IDs go straight to batched sync, only unresolved names are searched, and mixed stylistic-library batches are rejected before copying.

Export & layout

  • Per-run width headroom. Family and uppercase headroom now apply independently to each run, so one serif label no longer inflates measurement for every run on the line.
  • Bounds before reflow. Flat-page module zones are sized generously without sibling overlap, and expanding bounds is preferred over reflowing text when free space exists.
  • Conversion traces default to validation/<output_stem>.trace.json, with optional absolute or project-relative destinations honored.
  • Legacy locks without pptx_structure.mode default to flat; missing, invalid, and structured contracts still block.
  • Legacy image lock rows parse through one shared parser across page context, quality checks, and update_spec, with a single non-blocking compatibility warning.

Workflow & routing

  • Deterministic spec maintenance is discoverable again: deck-wide color and universal font-family changes route through update_spec.py, followed by validation and re-export.
  • Brand, Layout, and Deck discovery indexes are exposed for out-of-band listing; explicit workspace-root triggering is unchanged.
  • project_manager.py moves only local sources already under the repository projects/ tree — canonical repository documents and external inputs are protected during intake, and --move cannot widen that boundary.
  • Visual inspection is context-first: image meaning resolves from source context and regenerated metadata, with a narrow Strategist fallback for a specifically ambiguous asset.
  • Routine generation output is quieter — phase checklists are internal verification with compact status.

Community & docs

  • Bilingual sponsorship guides (SPONSORING.md / SPONSORING_CN.md) plus self-contained Skill sponsor pages; sponsor guidance loads only for explicit model, provider, or hosted-service recommendation requests.
  • Audio narration, technical design, and animation docs updated in both English and Chinese for the video pipeline.
  • Stale SVG-snapshot export claims removed from twelve example READMEs.

Full changelog: v4.1.0...v4.2.0