v0.3.11

kevinraymond/fosforav0.3.11Feb 28, 2026by github-actions[bot]

AI Summary

Introduces async preset loading and webcam stability improvements, ensuring smoother preset cycling and preventing layer growth issues.

Key Highlights

  • Async preset loading with background thread decoding and atomic swap
  • Webcam layer preset ordering fix to prevent extra stray layers
  • Webcam decode panic hardening with backoff and auto-stop
  • Clippy `never_loop` lint fix for CI

New Features

  • Async preset loading
  • Webcam robustness improvements

Full Release Notes


### Added
- **Async preset loading** — presets with media/video layers decode in a background thread, keeping current content playing; atomic swap on completion with pulsing status bar indicator and preset button highlight
- Generation-based cancellation for rapid MIDI preset cycling (only final preset applies)

### Fixed
- **Webcam layer preset ordering** — loading a preset with a webcam layer no longer appends it to the end of the stack; webcam content is now placed in-place at its correct index, preventing extra stray layers and layer count growth on repeated save/load cycles
- **Webcam decode panic hardening** — backoff (50ms sleep) after corrupted frame decode panics to avoid hammering a broken camera; auto-stop capture thread after 10 consecutive panics with user-visible error log
- Log GPU present mode and available modes on startup for easier driver issue diagnosis
- **Clippy `never_loop` lint** — replace `while`+`break` with `match` drain-and-retry in preset loader, unblocking CI for v0.3.11 release

## Downloads

| Platform | File | Notes |
|----------|------|-------|
| **macOS** | `.dmg` | Universal binary (Apple Silicon + Intel) |
| **Linux x86_64** | `.tar.gz` | glibc 2.35+ (Ubuntu 22.04+, Debian 12+) |
| **Windows x64** | `.zip` | Windows 10+ |

## Getting started

**macOS**: Open the DMG, drag Phosphor.app to Applications (or run directly). Signed and notarized.

**Linux / Windows**: Extract, run `phosphor` from the extracted directory. The `assets/` folder must be next to the binary.

## Requirements

- **GPU**: Vulkan (Linux/Windows) or Metal (macOS)
- **Audio**: Built-in mic or line-in for audio-reactive visuals
- **NDI®** (optional): [NDI® SDK runtime](https://ndi.video) for network video output
- **Video playback** (optional): `ffmpeg` on PATH for media layers

---
NDI® is a registered trademark of Vizrt NDI AB.