Releases: skyphusion-labs/vivijure
Release list
v1.0.0 -- Vivijure Studio, first stable release
Vivijure Studio leaves pre-1.0. The module-host control plane, the module registry, the
self-assembling UI, and the full render spine (planner -> keyframe -> motion -> finish -> score ->
assemble -> master) are OUTPUT-verified end-to-end on production -- every path re-run and the ACTUAL
artifact inspected (ffprobe stream shape plus eyeballed pixels / measured audio), not merely
phase=done. Verified paths:
- Motion backends: seedance, kling, minimax-hailuo, google-veo, vidu-q3, alibaba-wan, own-gpu
(same prod RunPod endpoint, Wan2.2i2v_clip), and the local-gpu LTX door (propagandhi). - Keyframe: SDXL/RunPod keyframe and the GPUless cloud-keyframe (FLUX-2).
- Finish: finish-rife, finish-upscale (exact 2x ESRGAN), finish-lipsync (MuseTalk).
- Score / audio: dialogue-gen, narration-gen, music-gen, beat-sync, audio-master.
- Captions: subtitle (burn +
.srt), film-titles. - Cast: cast-LoRA-bound keyframe + voice; plan-enhance; scatter/gather.
Two release-promise degrades found and fixed on the way in: cross-render clip-adoption contamination
(a re-render with a different backend silently adopting a stale clip -- now fingerprinted by
backend/config, #768) and audio-master shipping a silent film (#765). Both are prod-confirmed. The
evidence ledger for this release lives at docs/release/v1.0-coverage.md.
Not in v1.0 scope: the experimental CogVideoX-16gb local door (vivijure-local-16gb) is marked not
ready for deployment; its kernel-stack rendering defect is tracked post-1.0. The mainstream local-gpu
path ships via the LTX 12gb door.
This release also rolls up the two distribution changes below.
Retire the text-overlay finish module (dead code; superseded by subtitle + film-titles).
text-overlayretired, not fixed. The module read its content fromreq.config.overlays(an
array), butoverlayswas never a declaredconfig_schemafield (schema types are only int / float /
bool / enum / string; there is no array type). The corevalidateConfig(src/modules/registry.ts)
builds a module's validated config ONLY from declared schema keys, sooverlayswas always stripped
before the module saw it: it could never receive overlay content through any path (config or derived),
and always took the clean no-overlays passthrough. Captions and title / credit cards are already covered
by the working, output-verifiedsubtitleandfilm-titlesmodules. Removed: the
modules/text-overlay/worker, itsMODULE_TEXT_OVERLAYservice binding inwrangler.toml.example,
the CI + deploy-doc references, andtests/text-overlay.test.ts. Thefilm-orchestratorchain-advance
fixtures that used it as a generic unmodeled finish step now use a neutralMODULE_FINISH_STUB. The
core auto-discovers modules via theMODULE_*service-binding scan, so dropping the binding delists it
after the next core deploy.
Delist alibaba-wan-lora from the v1.0 distribution (unverified, not retired).
alibaba-wan-loradelisted pending verification (#771). Its distinguishing feature -- injecting
custom operator LoRAs into the Wan 2.2 cloud i2v path (high_noise_loras/low_noise_loras) -- is
UNVERIFIED: exercising it needs a hosted Wan2.2 i2v LoRA artifact, and the cast LoRAs on hand are SDXL
keyframe LoRAs (wrong architecture), so a render with empty LoRA arrays only duplicates the already
output-verifiedalibaba-wanbackend. Rather than ship an advertised-but-unverified feature in v1.0, the
module is DELISTED, not retired: theMODULE_ALIBABA_WAN_LORAcore binding is commented in
wrangler.toml.example, the module DIR is added to the CI deploy-loopEXCLUDE, and it is dropped from
deploy.shSTANDARD_MODULES. The module SOURCE and its tests stay intact; re-enable the binding + drop
it fromEXCLUDEonce the custom-LoRA path is output-verified with a real Wan LoRA.
v0.6.6 -- load-run wiring fixes + Secrets Store migration
Wiring-bug batch from the load/stress runs, plus the module Secrets Store migration:
- fix(render): bundle-only renders now derive dialogue + voice from the storyboard, instead of rendering silent (#313)
- feat(planner): per-keyframe sub-progress wired in (render-progress.ts), so the ETA subdivides the keyframe phase instead of pinning (#318)
- fix(contract): finish-rife declares src_fps/frames/width/height OPTIONAL, matching what advanceFinishPhase actually sends; behavior preserved (#232)
- fix(modules): the 12 cloud modules now resolve RunPod creds from the Cloudflare Secrets Store, with per-endpoint secret names (latent shared-secret bug fixed); part of #238 (#237)
Audio-mix into mux (#231) is wired but held for the VPC service decision -- ships separately.
v0.6.5 -- planner/cast fixes + stale-deploy catch-up
v0.6.4 -- load-run bug-fix batch
Bug fixes surfaced by today's load/stress runs:
- fix(render): Slate-authored per-shot dialogue now reaches TTS + lip-sync instead of rendering SILENT -- emitScene serializes dialogue + hStartFilm forwards dialogue_lines (#307, #296)
- fix(cast): DELETE /api/cast/:id now reclaims the cast's R2 artifacts (portrait/refs/source/lora), no more orphans (#298)
- fix(cast): a LoRA training row wedged in 'training' (RunPod job aged out before write-back) reconciles to failed (#295)
Backend keyframes_only cost-trap fix (#119) merged separately; ships with the next backend image.