v3.9.0
Since v3.8.0. This release makes the direction gate show real styles and carry the chosen look through the whole deck — and keeps bold, bespoke design first-class.
Design capability, verified: a picked preset fixes only the register; the boldness/signature-move gate still fires, and a bespoke register invented for the content is a first-class peer of a preset. Confirmed by a 12-agent integration workflow (pass) and a security scan.
Changed — the direction gate is PRESET-DRIVEN (real styles, not colour schemes)
- The gate now shows the best-fit named presets rendered with their own DNA (signature motif), not three synthesised palette/font combos — fixing "the options were just different colours".
archetypes_html.preset_directions([names])+_dna_cover()render each preset's motif (Swiss ghost numeral, Ink-wash 印 seal, Blueprint grid, Bauhaus triad, …). - 4 new presets → 18 total:
bauhaus,midcentury,terminal,synthwave(all code-only, full guard/when/image_prompt parity), chosen from a design-movement web sweep.
Added — the chosen style runs through EVERY slide, not just the cover (的风格要走所有页)
_dna_ambient()renders a quiet register signature (corner mark / edge rule / faint grid-scanline / recurring numeral-seal) on every interior slide, behind content. Self-verify item (q) enforces it end-to-end via a newinterior register:contract field + aregister_interiorscritic check + a PRE-FLIGHT tick — a deck styled only on the bookends is now a finding.- The quiet register (repeats every slide = SYSTEM) is distinguished from the loud signature motif (dosed 2–3, never stamped) across every gate, so the new behaviour doesn't trip the block-sameness rules.
Changed — branch-aware gate count + bespoke registers are first-class
- No image tool → 4 rendered directions (3 DNA presets + 1 pure colour-scheme direction); with image tool → 3.
build_directions_htmlauto-letters "describe your own" (D on a 3-up, E on a 4-up). - A direction dict may carry
cover_motif+ambient_motifso a bespoke register renders its OWN real DNA in the preview — presets are the floor you beat, not the menu you satisfy.
Changed — generated imagery must FUSE style AND stay topical
- New 🔴 FUSION gate: every generated hero/plate must be both unmistakably on-style and depict the deck's subject; on-style-but-generic filler fails and is regenerated.
Security
- Hardened a docs API-key placeholder (
sk-...→$(cat ~/.openai_key)/DUMMY_KEY). Investigation confirmed no real key was ever hardcoded or committed — scripts read from env vars; re-scan clean.