| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(styles): make the anime-ghibli playbook loadable again `load_playbook("anime-ghibli")` raised a ValidationError, and since `lib.checkpoint._validate_style_playbook` fails closed, that took down every run using the style: init_project(..., style_playbook="anime-ghibli") CheckpointValidationError: Unknown or invalid style_playbook 'anime-ghibli'. Available playbooks: [..., 'anime-ghibli', ...] The playbook is listed by `list_playbooks()` and offered by name in `pipeline_defs/animation.yaml`, so the error even names it as an available alternative to itself. Four schema violations, repaired on whichever side the evidence pointed to — widen the schema where a shipped renderer feature backs the key, conform the playbook where it is only vocabulary drift: - `overlays.section_title` — the schema allowed stat_card/key_term/code_block and none of the four overlay types `Overlay` in Explainer.tsx actually renders. Added section_title/stat_reveal/hero_title/provider_chip, plus `accent` on overlay_style to match the renderer's accentColor prop. - `asset_generation` anime_scene knobs — scene_type, multi_image_per_scene, images_per_scene, image_variation_guidance, default_particles, default_particle_color, default_vignette all map onto real AnimeScene props. Added to the schema. - `identity.category: anime-illustration` and `pace: gentle` — no code reads either field for behavior, so the playbook now uses the canonical `custom` and `slow` rather than expanding the enums for one style. - `color_palette.spirit_glow` / `golden_hour` — ad-hoc named colors. Folded into the `accent` array; both hexes are preserved and still referenced by name in consistency_anchors. With this, `_build_theme_from_playbook("anime-ghibli")` returns the Ghibli palette instead of `{}`, so the style no longer silently falls back to the default dark theme at render time. Regression coverage iterates the catalog instead of a hardcoded list, which is how this slipped: tests/qa/test_07_playbook_intelligence.py names the three playbooks that existed when it was written, so anime-ghibli and premium-minimalist never had load coverage. The new tests assert that every playbook `list_playbooks()` advertises both validates and is accepted by `init_project`, and that the schema's overlay vocabulary tracks the renderer's. Verified: 6 of the new tests fail on the unfixed tree; full suite goes 964 -> 979 passed with no regressions. | 2 个月前 | |
Initial release — OpenMontage: the first open-source agentic video production system 11 production pipelines, 47 tools, 124 agent skills. Supports cloud APIs (fal.ai, OpenAI, ElevenLabs, Suno, HeyGen, Runway) and free local providers (diffusers, Piper TTS, WAN 2.1, Hunyuan, CogVideo). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | 6 个月前 | |
Initial release — OpenMontage: the first open-source agentic video production system 11 production pipelines, 47 tools, 124 agent skills. Supports cloud APIs (fal.ai, OpenAI, ElevenLabs, Suno, HeyGen, Runway) and free local providers (diffusers, Piper TTS, WAN 2.1, Hunyuan, CogVideo). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | 6 个月前 | |
Initial release — OpenMontage: the first open-source agentic video production system 11 production pipelines, 47 tools, 124 agent skills. Supports cloud APIs (fal.ai, OpenAI, ElevenLabs, Suno, HeyGen, Runway) and free local providers (diffusers, Piper TTS, WAN 2.1, Hunyuan, CogVideo). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | 6 个月前 | |
fix(playbook_loader): load generated playbooks from styles/custom/ lib/playbook_generator.save_playbook() writes generated playbooks to styles/custom/, and the skills tell agents to save them there (skills/meta/capability-extension.md, the animation and explainer proposal directors). But this loader globs only the styles/ root, and it is the loader tools/video/video_compose.py imports — so every generated playbook was invisible at render time. The only way to make one work was to hand-copy it up one directory, which is why custom playbooks end up duplicated in both places. Search styles/custom/ as a fallback in load_playbook() and merge it into list_playbooks(), matching the semantics lib/playbook_generator.py already uses: a preset wins when both exist, and the listing is deduped. The not-found error now names both directories it searched instead of just the last path it tried. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYThSL15CujvBwD1wuUmr9 | 1 个月前 | |
Add taste direction governance | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 6 个月前 | ||
| 6 个月前 | ||
| 6 个月前 | ||
| 1 个月前 | ||
| 3 个月前 |