v1.5.0
KnoxStudio now runs on GPUI + gpui-kit instead of egui/eframe. The NLE, capture, export, and AI domain stay the same; the window runtime is a retained-mode Mac app.
Runtime
- GPUI with gpui-kit: GPU-composited window, native TitleBar, resizable splits, overlays, and semantic light/dark theme
- Native macOS application menu (KnoxStudio / File / Edit / View / Playback / Window / Help) with system Undo, Redo, Cut, Copy, Paste
- Finder, Dock, and
openfile events through GPUIon_open_urls— no vendored winit patch - Session split into independent entities:
Document,Workspace, canvas, timeline, Inspector, Agent, Screenplay - Playback clock advances the playhead without rebuilding Inspector, Agent, or chrome every display refresh; canvas and timeline request their own animation frames
- Custom GPU
Elements for the preview canvas and the timeline (hit-testing, paint, thumbs, waveforms) - Screenplay editor on the kit rope
Editor: Tree-sitter highlighting, line numbers, soft wrap, find/replace, outline, and git - Agent composer is a real textarea with @ mentions, decorations, and streaming markdown — not a per-frame egui text edit
- In-app FPS HUD (
gpui-fps) from GPUI frame timings: FPS, frame time, P95, drop rate, CPU / GPU / memory - Dedicated tokio runtime so AI, export, and IO never block the UI thread
- Bundle FFmpeg/FFprobe 9.0.1
What this unlocks
- Native Mac chrome: traffic lights, menus, and OS edit actions instead of a painted-in title bar
- Smoother preview while playing: only the surfaces that show time (canvas, timeline, meters) tick
- A Zed-class text substrate (rope + Tree-sitter + LSP types) for screenplays and a future coding agent
- Observable session state (entities + subscriptions) as working memory for agents and checkpoints
- Drop the eframe/winit activation workaround that existed only to keep bundled-app file-open correct
Still the same product
Capture, timeline editing, Inspector, Voice Director, generation, export, OAuth, and autosave are the 1.4.x feature set on the new runtime. Domain Criterion benches (project_benchmarks) are unchanged; they measure project JSON and timeline ops, not GPU frames.