StreamCraft v0.8.25 — release notes
Everything since v0.8.8. The headline: StreamCraft JARs are now 70–82% smaller, because we threw out the third-party media stack and rewrote screen, webcam, and audio capture as hand-written, OS-native libraries.
The download got dramatically smaller
We used to lean on JavaCV — a Java wrapper over FFmpeg, OpenCV, and OpenBLAS. It worked, but it meant every macOS and Linux build carried tens of megabytes of general-purpose C++ media libraries just to grab a few frames. So we replaced it: macOS and Linux capture is now done by purpose-built native libraries we wrote ourselves, each one a single small binary that does exactly what StreamCraft needs and nothing else.
The result, measured v0.8.8 → v0.8.25:
| Platform | Before | After | Drop |
|---|---|---|---|
| macOS | 83–126 MB | 17–22 MB | ~82% |
| Linux | 94–128 MB | 19–23 MB | ~81% |
| Windows | 48–82 MB | 18–22 MB | ~70% |
A NeoForge macOS build went from 116 MB to 17 MB. The entire 80-variant build matrix dropped from ~6.3 GB to 1.6 GB.
Native capture, rewritten from scratch
macOS — ScreenCaptureKit + AVCaptureDevice (v0.8.10). Screen, webcam, and audio capture on macOS now run through a single Swift library (libstreamcraft_capture.dylib) built on Apple's modern frameworks. Screen frames are downscaled on the GPU; the webcam delivers BGRA straight off the camera's image processor with no software color conversion. CPU cost of a 1080p30 screen share plus a 720p30 webcam dropped from ~25–30% to ~5–7%. (Minimum is now macOS 13 Ventura.)
Linux — V4L2 + PipeWire + xdg-desktop-portal (v0.8.11). Linux capture is a single C library (libstreamcraft_linux.so): webcams via direct V4L2 ioctl on /dev/video*, desktop audio via a PipeWire monitor source (with a PulseAudio fallback for Ubuntu 22.04), and screen capture via xdg-desktop-portal → PipeWire — which means Wayland screen sharing now works, not just X11. Optional dependencies are resolved lazily with dlopen, so a missing libpipewire degrades gracefully instead of failing to load.
A new linux-aarch64 build (v0.8.11) joins the matrix — StreamCraft now ships a native ARM64 Linux variant alongside x86_64.
Leaner packaging (v0.8.13). With the heavy native bundles gone, each per-platform JAR now carries only the one capture binary it actually needs — Windows builds no longer ship Linux binaries, and vice versa. This is what brought the Windows builds (already native via JNA/GDI/WASAPI) down too.
New & improved
- Positional screen-share audio (v0.8.22–23). A screen shared onto a Display Block now has distance-based volume — it fades in as you walk toward the screen and out as you leave, on a smooth curve scaled to the screen's size. A wall-sized cinema screen carries much farther than a small monitor. Set per block via the
POSITIONAL/GLOBAL/MUTEDaudio mode. - "How It Works" screen refresh (v0.8.25). A cleaner button row — Website, Discord, Academy — plus an invitation to the community SMP for watch parties and gaming.
- Session telemetry (v0.8.9). Session reports now include OS, OS version, and CPU architecture, which helps us triage platform-specific issues faster.
Fixes
- NeoForge: screen shares no longer vanish at certain camera angles (v0.8.21, v0.8.24). A Display Block screen could blink out as you turned your view; fixed across every NeoForge Minecraft version.
- macOS / 26.x audio sync (v0.8.12). Warmup polling and silence-padding keep desktop audio aligned with video on the MC 26.1 / 26.2 builds.
- Mac screen-share restart (v0.8.13). Stopping and restarting a screen share no longer leaves you with audio but no video.
- Proximity HUD (v0.8.14). The "streaming nearby" indicator no longer sticks after the last nearby streamer leaves or stops.
- Linux capture hardening (v0.8.15–20). Flatpak-sandbox audio fallback, clearer diagnostics, and a series of PipeWire/Wayland format-negotiation fixes for a wider range of GPU/compositor setups.
Heads-up: update client and server together
v0.8.9 raised the network protocol version. A v0.8.9+ client and a v0.8.9+ server are required — mixed old/new connections are rejected at handshake with a clear version-mismatch message. If you run a server, update it alongside your players.


