Kody Video v2026.08.01
Kody Video v2026.08.01
Two things broke at the edges this week: exports died on iOS Chrome over a stubborn <video> element that WebKit refused to load, and deleted projects left gigabytes of cached files silently squatting in OPFS. This release makes exports survive without an element when they don't need one, and gives you a visible way to reclaim storage that was quietly leaking.
New
- One-tap storage cleanup. The home screen now shows a storage banner with a clear action so you can reclaim space occupied by stale export caches and orphaned files. When you delete a project, Kody Video now clears its cached last export in the same transaction and removes the underlying OPFS file — so storage actually frees up instead of staying silently full (#78).
Improved
- Exports survive stubborn element loads. When WebKit persistently refuses to load a blob
<video>it just recorded (a real failure on iOS Chrome), the export no longer dies. Duration measurement now falls back to the recorder-captured clip duration, and output-size probing falls back to stored capture dimensions — so if the WebCodecs path can pump the frames, the whole export completes without ever opening a<video>. The only paths that still require an element are the per-clip fallback pump and the realtime engine's playback, which now fail with clearer context about why they couldn't load. Retry backoff also gained a 2s tail attempt for slow decoder-slot reclaim (#79).
Fixed
- You no longer lose ~1GB to a double-stored export:
persistLastExportnow adopts file-backed exports in place instead of copying them, and superseded temp files are deleted immediately. A boot-time and pre-export sweep removes every stale cache file except a still-valid last export, so leftoverclips.zipscratch files and orphaned references to deleted projects are cleaned up automatically (#78). - Export errors that still escape now carry an
exportDetailtag — engine, load purpose (clip-duration/element-pump/probe-size/segment-load), and clip — so Sentry events are far easier to diagnose (#79).