←
Narrative Marketing Engine
Unlock Your Campaign’s Power




Frame Control

VIEWER RUNTIME v5 β€” FINAL ========================== Root cause of VFX not rendering: VFXManager.init() is called inside DOMContentLoaded. The viewer's bootViewer() runs as an async IIFE BEFORE DOMContentLoaded. So when activateVFX calls resumeVFX(), renderer/clock/scene are all undefined. The animate() loop crashes silently β€” nothing renders. Fix: waitForVFXReady() polls VFXManager._initialized (set by DOMContentLoaded) before any VFX calls. All VFX activation now waits for this gate. VFX audio fix: ArrayBuffers die in JSON. exportFullProject uploads them to R2 and stores vfxAudioUrl / windAudioUrl (strings) in the snapshot instead. Rewind fix: _rewindCooldown prevents the bubble timer from firing during rewind. -->