Skip to content

v0.21.0

Choose a tag to compare

@OrellBuehler OrellBuehler released this 05 Sep 09:48
· 4 commits to main since this release
d41aa73

The release about the room you work in: the editor is now a workspace you arrange, in colors you choose — and the panel that holds your footage finally tells you about it.

Highlights

A dockable workspace. The six panels — Media, Transcript, Preview, Timeline, Inspector, Agent — are no longer a fixed arrangement. Each is resizable by its sash, movable by its tab (drop it against any edge, or tab it into another group) and closable, and the toolbar's Panels menu reopens one or resets the whole thing. The transcript is its own panel now rather than a tab hiding behind the media bin, so you can read the words while you cut them. Your arrangement is saved and comes back the way you left it.

Every color is themable. Settings → Appearance: three presets to start from — Kerf Dark, Kerf Light, High contrast — a name, a dark/light scheme, and then a picker for every color token, grouped by what it paints. Themes import and export as JSON, so one can be shared or kept in a repo. Getting there meant the light theme actually reaching the parts of the app that had hardcoded their own colors: every translucent border, fill, glow and scrim is now mixed from an opaque base, and the editor components carry no color literals at all.

The media bin knows your footage. A row said name, duration and codec — the panel that is supposed to be where you know your media was the one place that knew the least about it. Rows now lead with a real decoded frame (sampled 10% in, so a fade-up does not read as black), the spec line — 1920×1080 · 29.97 fps · h264 · stereo — and badges for 360, stills, how many clips already use it, and whether it has been analyzed. The context menu opens with the facts: frame and aspect, rate, codec, audio, projection, the stitched lens pair, the use count, the import date, then what analysis found — loudness, tempo, silence, shots, transcript. Below them are the actions those facts are for: add at the playhead, append, extract audio, remove silences, mark the asset 360 or flat, copy the path, show it in the folder.

Speech-to-text is optional now. Every import runs analysis and analysis transcribes, which downloads a speech model on first use — so a machine that could not reach huggingface.co failed every import's analysis outright. Settings → Speech turns transcription off for the pass while silence, scene, loudness and rhythm detection still run, and the transcript tab explains an empty transcript instead of dead-ending.

Fixes

  • The CPU budget slider did not save. It wrote the percentage into the store while dragging so the label could follow, then compared the released value against that same field, saw no change and never persisted it. It judges against what the backend last confirmed now.
  • Safe-area guides no longer default to on. They were a session flag, so every vertical project opened shaded. They are a persisted preference (Settings → Preview, or the preview's context menu — both write the same one), off by default.
  • A failed speech-model download names the URL that failed. The fetch is redirected to a CDN host, so which lookup broke was invisible — and the browser's resolver is not the one the downloader uses.

Also

  • Settings is a section rail rather than a single page: Performance, Speech, Preview, Appearance.
  • The workspace layout and the theme ride in settings.json as opaque JSON the frontend validates on the way back in — they are about this computer, not about a .kerf file.
  • A stored layout goes through a validator: unknown panels dropped, each shown once, minimum sizes re-taken from the registry, so an old or hand-edited layout can never lock a panel out of reach.

Install

  • macOS.dmg (Apple Silicon or Intel). Needs FFmpeg: brew install ffmpeg.
  • Windows-setup.exe. FFmpeg is bundled, nothing else to install.
  • Linux.AppImage, .deb or .rpm. Needs system FFmpeg. Pick the AppImage if you want in-place auto-updates; .deb / .rpm installs update through your package manager instead.