v1.39.0

haiwen/seafilev1.39.0Sep 22, 2026by github-actions[bot]

Upgrading?

AI Summary

This release introduces the new 'Fluvid' motion-reactive fluid effect, adds two new Trama nodes for color keying and masking, and improves the profiling capabilities of multi-pass effects. It also includes enhancements to the build process and fixes several stability issues related to particle simulations and video loading.

Key Highlights

  • New 'Fluvid' effect creates a reaction-diffusion maze that reacts to camera motion, with a slider to morph between ink, mercury, and water.
  • Two new Trama nodes: Color Key and Mask, allowing users to keep specific color families or regions visible while making the rest transparent.
  • Profiling builds now break down time for each pass of multi-pass effects, particle simulation, and drawing.
  • Building from source now uses `--features release` to match the exact downloads, and the `--help` command provides detailed explanations of modes and features.
  • Particle uniforms have been expanded to 992 bytes, allowing access to params 8–15 through `param()`, while maintaining compatibility with existing custom simulations.

New Features

  • Fluvid motion-reactive fluid effect with mercury/water morphing
  • Trama node: Color Key
  • Trama node: Mask
  • Custom .pfx effects can declare speed parameters under 'rates' to avoid multiplying by u.time
  • Layer status indicator ('Needs a layer below') when a layer requires a base layer

Full Release Notes


<table>
<tr>
<td width="33%"><img src="https://github.com/kevinraymond/fosfora/releases/download/demo-assets/fluvid-v1.39.0.webp" width="100%" alt="Fluvid over Panorama"></td>
<td width="33%"><img src="https://github.com/kevinraymond/fosfora/releases/download/demo-assets/fluvid-v1.39.0-group.webp" width="100%" alt="Fluvid over a video of friends celebrating"></td>
<td width="33%"><img src="https://github.com/kevinraymond/fosfora/releases/download/demo-assets/fluvid-v1.39.0-dancer.webp" width="100%" alt="Fluvid over a video of a woman dancing with headphones"></td>
</tr>
<tr>
<td><sub>Fluvid over <i>Panorama</i>.</sub></td>
<td><sub>Fluvid over <i>Diverse Group Of Young Hipster Friends happily celebrating</i>.</sub></td>
<td><sub>Fluvid over <i>Blonde Woman Dancing to Music with Headphones Studio Clip</i>.</sub></td>
</tr>
</table>

<sub>Both videos: Free Stock video by <a href="http://www.videezy.com/">Videezy</a>.</sub>

### Added
- **Fluvid: move in front of a camera and your motion stirs a real fluid**, with a reaction-diffusion maze growing in the ink. Place it above a webcam, video or any effect. A medium slider morphs the liquid from ink to mercury that mirrors you to rippling water.
- **Two new trama nodes, Color Key and Mask,** keep one color family or one region of a picture and make the rest transparent. On a layer beneath Fluvid, whether a webcam, a video or another effect, they decide what Fluvid reacts to.
- **A layer that works on the layers beneath it now says so** ("Needs a layer below") when nothing enabled sits under it, instead of silently rendering nothing.
- **Custom `.pfx` effects can list speed parameters under `"rates"`.** Fosfora keeps each one's running total in a slot after your parameters, so a shader never has to multiply a parameter by `u.time`; a period in seconds can be declared too. `scripts/audit_pfx_rates.py` finds shaders that still multiply by `u.time`.

### Changed
- **Profiling builds time each pass of a multi-pass effect,** plus particle simulation, particle drawing and the snapshot of the layers below, instead of only each layer's total.
- **Building from source: `--features release` gives exactly what the downloads include.** A plain `cargo build` still has no optional features.
- **`fosfora --help` now explains itself.** Each mode says what it is for, the optional features are listed with the ones your build has marked and how to build the rest, and it shows where your settings live.
- **Particle uniforms grow from 960 to 992 bytes**, so particle compute shaders can read params 8–15 through `param()`. The new block is appended after the last field, so no offset moves and custom sims keep working unchanged.
- **The benchmark report now accounts for every track it does not score.** A new Exclusions section lists them by reason: for Harmonix, 538 of 912, mostly YouTube audio that does not match the annotated recording or videos that are gone. A drop-prediction claim that had not been measured on the current predictor was removed.

### Fixed
- **Loading a video into an existing layer failed with no message** when the clip was over the 60-second limit; the reason now shows in the status bar, as do failed preset saves and a webcam that will not start as a particle source.
- **Ten effects jumped when a binding or a drag moved their speed after the app had been running a while:** Aurora, Chromatica, Cymatics, Drift, Lumen, Prism, Storm, Tesla, Tunnel, and Frost's dunes. The change in speed was multiplied by the uptime; it now changes only how fast they move from that moment on.
- **Moving Etch's clear-cycle fader wiped the drawing again and again** once the app had been up a while: 8 clears during a 3-second drag at five minutes, now at most one.
- **Frost's crystals jumped instead of wandering once the app had been running a while.** Their drift speed follows the music, and every change in it was multiplied by the app's uptime, so a few minutes in, each shift in the sound threw the cells to new places. They now drift smoothly however long the app has been up.
- **Fosfora refused to start, with no window and no error status, when the system's file-watch limit was used up** (for example by an editor watching a large folder). It now starts without shader hot reload and says so in the status bar. A failed startup now exits with status 1 instead of 0.

## 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 Fosfora.app to Applications (or run directly). Signed and notarized.

**Linux / Windows**: Extract, run `fosfora` 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.

Related Repositories