Character Cartridges (.joypack v1.0): spec, packer, loader node, and WREN - the first portable video-character file (verified: same face + rhotic General American voice in an unseen scene, zero training)
INT8 ConvRot support: the loader now reconstructs int8_tensorwise comfy_quant checkpoints to bf16 at load (dequant + regular-Hadamard un-rotation, verified ~0.95% from the bf16 source). The published INT8 surgical build now loads directly in the multishot workflow.
Add host-RAM preflight warning before model load. Three users reported Windows hard-crashing (RAM 99% -> reboot) during first load; the loader materializes the whole checkpoint in host RAM, which fits with a large pagefile and kills a 64GB box with the Windows default. Warns with concrete fixes instead of dying silently.
Clearer error for ComfyUI-quantized (INT8 ConvRot / fp8mixed) checkpoints: name the bf16/GGUF builds of the SAME model that work in this pack, and say the INT8 file is for ComfyUI's native loaders. Two users hit the old wording.
Linux hard-crash fix: WAV sidecar uses soundfile first, torchaudio removed. Avoids the torchcodec/FFmpeg dlopen that could trip a glibc TLS loader abort (ld.so _dl_allocate_tls_init) and kill ComfyUI mid-run on systems with FFmpeg <7.
wav save: fall back torchaudio -> soundfile -> builtin wave (Linux user without FFmpeg shared libs hit 'Could not load libtorchcodec' on torchaudio.save)
LLMEnhance: local endpoints no longer require an api_key (placeholder sent automatically); clearer error + tooltip; document the field in the workflow README
per-character reference scheduling: RefPicker emits ref_shots (first-appearance shot per character), Generate injects each ref at its character's entry shot with the long trim - multi-character single-run videos get every character properly seeded
load order: DiT (quantize/fuse peak) first, VAEs, text encoder LAST + gc between stages - encoder-first stacked 24GB under the fuse peak and caused an mmap access violation at VAE load on a 96GB box
references seed shot 1 only: from shot 2 the bank carries identity+staging; re-injecting a wide full-scene ref every shot made the subject relocate between shots
no-offload pre-flight: refuse cannot-fit DiT with a catchable error (cudaMallocAsync otherwise hard-aborts the whole process), warn on tight activation budgets
reference_zoom: over-zoom refs before conditioning - a ref at exactly render size is pixel-continuable and the model opens the shot ON it (long literal ghost no trim covers); 1.2 default breaks the continuation shortcut while keeping identity + wide composition
head_trim_first_shot: shot 1 conditions on refs alone (empty bank) and opens ON the reference - give it its own longer trim (auto = 2x head_trim, min 24)
RefPicker: character dropdown, no silent scan-fallback, cache fix; head-trim applied to all outputs; lora_file dropdown on ModelLoader; gemma_path guard