Skip to content

Kody Video v2026.08.05

Choose a tag to compare

@kody-bot kody-bot released this 09 Aug 19:41
bbd34b3

Kody Video v2026.08.05

This release reworks how audio works end-to-end: independent per-clip volume sliders, a full audio-track detail view with trim and fades, and a preview path that finally plays music everywhere it should. It also brings a tour video to the home page, a pile of iOS export and storage fixes, and quieter error reporting.

New

  • Per-clip volume sliders and persisted audio normalization. You can now set each clip's own sound level and its music-duck level independently — no more single mix slider that ties the two together. Clip audio is also peak-normalized automatically after recording and stored per clip, so your voice sits at a consistent level across every take whether or not you've added music (#125).

  • Audio track detail view: trim, level, and fades per track. Tapping a background-music track opens a detail view where you can trim the kept window over a decoded waveform, set a per-track volume that only affects the music side of the mix, and apply fade in/out per track. Tracks without explicit fades inherit the playlist defaults, so existing projects keep their behavior and gain eased hand-offs between songs (#116).

  • Tour video on the home page. First-time visitors see a "New here? Watch the tour" card before they ever open the camera. The video streams from kody.video's own media domain (no third-party player), opens in a native dialog so the page layout never reflows, and stays dismissed after you close it — even across SPA navigations (#126, #133, #134, #135).

  • The About page now links a real video made with Kody Video alongside the YouTube tour, so you can see what the app produces (#128).

  • Export fallback hint. When an export falls back to the realtime canvas path (no WebCodecs available), you now see a dismissible notice explaining what happened and how to get a higher-quality result — including saving a project backup to import on a desktop browser (#141).

  • Kody Video now checks for app updates when you return to the tab after switching away, not just on first load. If an update is found, the same Update toast appears (#117).

  • On-device diagnostics and repair pages are available at /api/diag and /api/recover for troubleshooting a stuck or stale shell without needing the app to boot (fb00d85, f4fbbdd).

Improved

  • Preview music is audible everywhere. The project preview and the editor's clip stage now both play the music bed at the right position and level. The previous audio-routing path could go permanently silent on iOS; normalization boosts now ride plain element volumes instead, so you hear audio on every browser (#118).

  • The PWA update toast now reads simply "Update available" with a clickable Update action, sits above the home logo, and stays centered during its animation (#121).

  • Onboarding copy now says Timeline instead of Scissors for the trim tool (ca8054f).

  • The app self-heals after deploys: stale cached assets, retired chunk URLs, and boot-entry imports are detected and purged automatically so you land on the latest version without a hard reload (5c5eb17, 06d6642, e8c3efe, 7deb08e, f12743d).

  • Our test suite now runs in a real browser instead of Node with fakes, catching DOM and browser-API regressions before they reach you (#124).

Fixed

  • iOS black exports when the preview canvas wasn't ready in time. Export now falls back to a tiny on-DOM canvas instead of a detached element, so the browser encodes real frames instead of black ones (#137).

  • iOS clip audio decode failures that produced silent exports. When the WebCodecs audio decoder throws NotFoundError, the app now remuxes the audio track and decodes it through an alternate path, with retries and proper resource cleanup so the decoder pool doesn't exhaust (#138, #136).

  • iOS Safari IndexedDB reconnect. The cached database connection could go stale after Safari backgrounded the page, causing a crash on the next load. The connection is now reopened automatically when the browser closes it (#127).

  • Empty database schema caused by the diagnostics page creating a version-1 database with no stores. The diagnostics page now only opens an existing database, and the schema version bumps to heal already-corrupt databases on next open (#120).

  • False-positive silent-export detection: near-floor audio peaks after lossy encoding were being treated as silent mux faults. The comparator now checks retention against input level before flagging silence (#131).

  • Light-mode contrast on editor chrome — clip action labels, the Trim chip, disabled toolbar controls, keyboard hints, and the Go button are all readable now (#123).

  • Zoom HUD and REC timer jitter during recording: re-renders were wiping the on-screen readouts, collapsing both pills. Both now render as real text nodes, and mid-take drag-zoom no longer triggers re-renders (#122).

  • Camera flip icon arrowheads were floating off their shafts (6c91e10).

  • Array.prototype.at polyfill for older Chromium shells that lack the method, which caused the router to crash before any page rendered (#132).

  • Quieter error reporting: browser-extension noise, CSS preload failures, and lazy chunk load failures are now filtered from error tracking since they're transient deploy races or extension interference, not app bugs (#129, #130, #139).

  • Internal code comments now say "Kody Video Plus" instead of the old "Remove Watermark" naming, matching the app UI and payment surfaces (#140).