Skip to content

v1.8.0-rc.5

Pre-release
Pre-release

Choose a tag to compare

@EtienneLescot EtienneLescot released this 01 Aug 03:08
· 0 commits to 52bd2ced70cd0b2a922e6144a4db11a7426569c1 since this release

Everything in v1.8.0-rc.4, plus the cross-platform port — this is the first 1.8.0 build available for macOS and Linux.

rc.4 shipped the AI Edition and the native rendering engine on Windows. rc.5 takes that engine to the other two platforms, and takes native capture with it.

🖥️ The native engine on macOS and Linux

The Rust compositor that drives both the live preview and MP4 export, Direct3D 11-only through rc.4, now has two more backends behind the same scene contract.

macOS — Metal and VideoToolbox. All nine shader entry points ported to MSL, plus a CoreText/CoreGraphics text rasterizer. Layers, annotations, the cursor and its trail, the 3D tilt zoom and the dual-Kawase background blur are all drawn on Metal. VideoToolbox hardware decode and encode (h264_videotoolbox, with libopenh264 as fallback), multi-clip export, and audio muxed into the output.

Linux — WGSL. compositor_linux gains the background blur, image and wallpaper backgrounds, the webcam PiP, screen and camera shadows, the themed cursor sprite, tilted 3D zoom, and text annotations — plus arrows, blur/mosaic masks and images. Video export lands as software H.264 encode with MP4 mux and AAC audio.

A CPU backend for machines with no usable GPU. Software render and decode, selected automatically and surfaced in the UI so you know which path you are on. It reaches the export encoder like any other backend. D3D11 now fails legibly instead of silently degrading to WARP.

⚡ macOS export, 2.4× faster

Profiling the first working Metal export found the cost somewhere unexpected: 74 % of the wall time was decode, while the compositor itself ran at 0.2 ms/frame.

Measured on a 1920×1080@60 Constrained Baseline capture, decode only:

Decoder 240 frames fps
VideoToolbox (hardware) 1.11 s 215
libavcodec (software) 0.08 s 3000

The hardware decoder pays a fixed per-frame latency and allocates a CVPixelBuffer/IOSurface for each frame, while a Baseline profile decodes in a few hundred microseconds across cores that — unlike the decode block — are plural. End to end on the export that is 76 fps against 182 — 2.4× — even though the software path additionally pays swscale and a full memcpy into the IOSurface every frame.

So the decoder is now chosen by profile rather than by flipping a default: Baseline and Constrained Baseline (what OpenScreen's own capture produces, and what Chrome's MediaRecorder emits) decode in software; High, 10-bit, HEVC and 4K, where the arbitration reverses, keep VideoToolbox. OPENSCREEN_MAC_DECODE=software|videotoolbox overrides.

Two per-frame pipeline stalls went with it — compose_frame and render_nv12 each committed and immediately waited, draining the GPU before the CPU had anything to do — along with a full-resolution RGBA mirror blit the export never reads.

🎥 Native capture on Linux

Recording routes through the native helper: real video capture with a hardware H.264 encoder, system audio and microphone captured alongside it, and real cursor telemetry on Wayland via the ScreenCast portal. Linux captures are remuxed so they carry a real duration.

🎞️ Native GIF export

GIF is routed through the native exporter and the old pixi.js path is deleted — one rendering path for every output format.

⚡ Preview and timeline responsiveness

  • Preview — a decoder pool, so scrubbing across a clip boundary no longer reopens decoders; a fast seek path that stops discarding decoder state; frames delivered without a copy; and a decoded-frame leak per scrub step fixed.
  • Timeline — no more re-rendering the whole editor on every playhead frame, or the timeline on every mouse event during a scrub. Progress-bar drags coalesce into rAF.
  • Schema migrations hoisted to load time.

And the rest

  • Chat and agent — the reasoning trace streams into the chat panel, the model receives the actual cursor trajectory instead of a detector's verdict, and the AI timeline wizard is scoped to cuts only.
  • Editor — the playhead and ruler reworked to the reference design, project rename in the v4 header, and a header that stops re-flowing on every state change.

Downloads

Asset For
Openscreen-Mac-arm64-1.8.0-rc.5.dmg macOS — Apple Silicon (M1, M2, M3, M4)
Openscreen-Mac-x64-1.8.0-rc.5.dmg macOS — Intel
Openscreen.Setup.1.8.0-rc.5.exe Windows
Openscreen-Linux-1.8.0-rc.5.AppImage Linux — portable, any distribution
Openscreen-Linux-1.8.0-rc.5.deb Linux — Debian, Ubuntu
Openscreen-Linux-1.8.0-rc.5.pacman Linux — Arch, Manjaro

Not sure which Mac you have? menu → About This Mac → Chip. "Apple M1/M2/M3/M4" means Apple Silicon; "Intel Core" means Intel. The Intel build does launch on Apple Silicon, but it runs under Rosetta 2 — the compositor, the encoder and the transcription engine all get translated, and the app becomes slow enough to be unusable. Take the arm64 one.

Upgrade notes

  • Project files migrate to schema v6 on open. The legacy native aspect ratio is migrated using cropped dimensions.
  • macOS release-candidate builds are not signed or notarized. Gatekeeper will refuse the first launch: right-click the app → Open → Open, or clear the quarantine flag with xattr -d com.apple.quarantine /Applications/Openscreen.app.

Known gaps

  • Linux MP4 export is software-encoded — correct output, but slower than the hardware paths on Windows and macOS.
  • macOS and Linux rendering is new in this release candidate. Please report anything that looks wrong against the platform you saw it on.

Full 1.8.0 changelog: v1.7.0...v1.8.0-rc.5