Releases

Every build, what changed in it, and what was measured. Newest first.

Sialk Stage is in public beta. The beta is the stage before v1, not a label worn by a series of releases, it ends on a user count, and then v1 ships. What each numbered version will contain is on the roadmap.

0.2.2 - public beta · macOS, Apple Silicon · 10 September 2026

Twenty-nine visuals in the library, and four things put right.

What changed

  • Multiply keeps what the top layer does not paint. It multiplied everything under a transparent pixel by zero, so a transparent layer set to multiply turned the whole output black. The picture beneath now shows through where the layer is empty, and fading a multiply layer out reveals it.
  • A Three.js scene receives its colour controls as hex strings, as the scene convention says. Until now no scene's colour control had any effect, the bundled one's included.
  • A Three.js layer is named by its folder, not scene.
  • A control with more than four choices is a menu, so it fits on one line.
  • p5.sound is supplied beside p5, in place of whichever copy a project's page loads. A project with loadSound() in preload() used to wait forever on an old copy of the addon, or fail to find it at all.
  • The library has twenty-nine visuals: every runnable example and eighteen new ones, each with controls, free.

Measured on the machine it was built on - Apple M3 Max, macOS 26, Electron 43.4.1, 120 Hz display.

One minute at 3840×2160, this exact build, the library's Cubes scene 7,201 frames at 120.0/s, 0 dropped, p99 9.5 ms, every painted frame transferred (3,584 of 3,584)

sha256 Sialk-beta-macOS.zip: e98eae401c7fe4380f5eb000d36e91a1ab93cc6bd75f9b89fddcb51d1ad26616

0.2.1 - public beta · macOS, Apple Silicon · 10 September 2026

Other people's sketches, as they come.

What changed

  • Shaders from glslsandbox and The Book of Shaders run as they are. A shader's own time, resolution and mouse, or u_time, u_resolution and u_mouse, are set every frame, and an #extension line anywhere in the file is lifted to where the compiler wants it. Before this, the glslsandbox default shader did not compile in Sialk. See writing a GLSL sketch.
  • A p5 project of more than one file loads. Sialk reads the project's index.html for the scripts it loads from its own folder, in order; p5 itself stays the copy Sialk supplies. Before this, any editor project with a second script died on its first line. See writing a p5 sketch.
  • Nothing else in the build changed. Three.js scenes, video and the audio contract are as in 0.2.0.

Measured on the machine it was built on - Apple M3 Max, macOS 26, Electron 43.4.1, 120 Hz display.

One minute at 3840×2160, this exact build, the glslsandbox default shader 7,191 frames at 120.0/s, 2 dropped, p99 9.9 ms, every painted frame transferred (3,591 of 3,591)

sha256 Sialk-beta-macOS.zip: 41c9f82328429ce6edd448d04177d5eb7ce4aeb3a80087d8a889efda24c0e691

0.2.0 - public beta · macOS, Apple Silicon · 5 September 2026

Sialk plays Three.js.

What changed

  • Three.js scenes are layers. A folder with a scene.js that exports a function: Sialk supplies three itself, the renderer and the loop, offline, and the room's audio reaches update() every frame. There was no canonical Three.js export, so Sialk defines one and freezes it with this release. See writing a Three.js scene.
  • A scene's controls come from a visual.json beside it, every type, and arrive on frame.parameters under their own names.
  • A Three.js page dropped on Sialk is told which shape it plays, instead of coming soon. Cables.gl, Rive and Spline are still coming, in that order.
  • The layer card names the kind: GLSL, P5, Three.js.
  • npx @sialk/agent knows the kind: a worked scene, a check for the mistakes every tutorial makes, and a Three.js section in the brief.

Measured on the machine it was built on - Apple M3 Max, macOS 26, Electron 43.4.1, 120 Hz display.

One minute at 3840×2160, this exact build, the bundled Three.js scene 7,182 frames at 119.7/s, 20 dropped in the first ten seconds, p99 10.0 ms, every painted frame transferred

sha256 Sialk-beta-macOS.zip: 725a1c7400a820900079afe2596baaf8e5067556c725ef8803657a9d470f8cfe

0.1.3 - public beta · macOS, Apple Silicon · 4 September 2026

The parameters are yours to play, and the first thing on screen is a visual.

What changed

  • Play a visual's parameters. Every control a visual declares is a fader, a switch, a colour or a trigger you can move, in this build. 0.1.2 showed them as a readout and kept the faders for v1; the library's visuals arrive with controls meant for the person who did not write them, so the readout stopped being the point.
  • One visual is already playing when Sialk opens, with its four controls beside it, instead of two example sketches.
  • The library. A LIBRARY door under the stack opens sialk.net/library: ready visuals, free, one zip each. Unzip, drop the folder on the window, and it is a layer with its own controls.
  • Controls for shaders. A visual.json beside a sketch.glsl declares number, boolean and colour controls in the shape the contract already takes; they arrive as uniforms under their own names. See writing a sketch with AI for the block.
  • Every empty state says where to start.

Measured on the machine it was built on - Apple M3 Max, macOS 26, Electron 43.4.1, 120 Hz display.

One minute at 3840×2160, this exact build, the first-run visual 7,199 frames at 120.0/s, 0 dropped, p99 10.6 ms

sha256 Sialk-beta-macOS.zip: d0e10bb32cf9ed11daae9766cea80cfb8f20acb5fa0225be4f128fadb347023b

0.1.2 - public beta · macOS, Apple Silicon · 31 August 2026

The cap is gone, and the stack learned to play video.

What changed

  • Nothing is capped any more. Output renders at the size you ask for, your screen's own, 4K included. The 1280 px limit in 0.1.1 is deleted, not raised: no tier and no build of Sialk degrades the picture. The only limit left is an 8K engineering ceiling.
  • Video clips as layers. Drop an .mp4 or .mov into the stack beside your sketches, it letterboxes, composites over and under your code, and declares Speed and Restart as parameters the music can drive. H.264, HEVC, VP9 and AV1 decode; HAP and ProRes do not.
  • The audio contract is 1.2, and the drums split from the notes. percussive and harmonic are the zero-setup answer to "react to the kick, not the pad", and this build fixes a fault 0.1.1 shipped: those two fields were analysed but never sent, so a sketch reading them saw 0.000. They arrive now. (stems and stemCount exist in the contract too and read zeros in this build, per-stem input arrives with v1.)
  • Your chosen audio input survives a restart. 0.1.1 reverted to the system default at every launch.
  • Add layer takes files, not only folders. The dialog now accepts a .glsl, a sketch.js, an HTML entry or a video clip directly, in 0.1.1 everything but HTML was greyed out. Found by testing this very release.

Measured on the machine it was built on - Apple M3 Max, macOS 26, Electron 43.4.1, 120 Hz display. Numbers from another machine are exactly what the beta is for.

One minute at 3840×2160, this exact build 7,181 frames at 119.6/s, 22 dropped, p99 9.6 ms

sha256 Sialk-beta-macOS.zip: b6ed86c5b0df50ae2001393949f2acd556a62172a18f0fbf259066e7eeb85de9

0.1.1 - public beta · macOS, Apple Silicon · 29 August 2026

The first build anyone else has run. Drop sketches in, stack them, mix them by hand, and watch their own parameters move, a sketch that reads the audio contract reacts to the music on its own.

What is in it

  • GLSL and p5 sketches. A folder with a sketch.glsl in it, or a folder with a sketch.js that declares setup() or draw(). Sialk writes the page and supplies p5 itself, so a sketch of one file runs offline on the first drop. Anything else is told, plainly, that it is not here yet, more kinds are on the way.
  • Layers. Added while the show is running, reordered by dragging the card, removed behind a confirm. Opacity, four blend modes, per-layer enable. Composited on the GPU.
  • Transparency. A layer that paints no background composites over what is beneath it.
  • The audio contract. window.sialk is present before your first line runs, in every layer, loudness, three bands, a spectrum, onsets, tempo and the phase of the beat.
  • Parameters, as a readout. Whatever a sketch declares, name and live value, so you can watch a sketch play itself. In this build they are meters rather than faders; playing them by hand arrives with v1, alongside the modulators they are the base for. A sketch's own control panel is kept out of the picture the audience sees.
  • One screen, and it is the wall. The picture in the window is the output, not a preview of it, there is one output in this build, so there is nothing it could differ from. Fullscreen puts it on a second display, or its own Space, and leaves the controls where they are.
  • Settings, on ⌘, - two panes, Output and Audio: size, frame rate, audio input, and which display fullscreen opens on. They describe the machine, not the show, and never travel inside a show file.
  • Show files. A whole mix, layers, values, placement, saved as a .sialk document with its own icon; double-click it, drop it on the window, or ⇧⌘O. ⇧⌘S saves it somewhere else. A sketch you have edited since is reported, not silently reverted; one that has moved keeps its place in the stack.
  • A run log, written every run, to ~/Documents/Sialk/logs/.

Not in the beta build, each with the version it arrives in:

  • Playing a sketch's parameters, in the beta the Inspector is a readout: name, live value, a meter. The faders arrive with v1.
  • Modulation, the + audio and + LFO stacks. v1.
  • Placing a layer, scale, position and rotation. v1.
  • Driving a sketch's own panel, lil-gui and dat.GUI knobs as Sialk parameters. v1. Panels are kept out of the output in every edition.
  • Layers from an address, pasting or dropping a URL. v1.
  • Building a source folder, a Vite or CRA tree with no node_modules. v1.
  • Playing the pointer - Pointer X/Y and Click as parameters. v1.
  • The build view, the four-column arrangement on V. v1.
  • Filtering the parameter list, the all / bound / moving pills. v2, with MIDI.
  • A separate output preview, a picture that can differ from the wall. v4.

Measured on the machine it was built on - Apple M3 Max, macOS 26, Electron 43.4.1. Numbers from another machine are exactly what the beta is for. The beta renders at most 1280 px on the long edge; the 1080p and 4K rows below are the engine on the uncapped development build, the ceiling the cap sits under, not what this build shows you.

The cap holding under 4K load asked for 3840×2160, rendered 1280×720 at 120/s, 0 dropped
Two minutes at 1920×1080/60 (dev build) 14,412 frames at 120.1/s, 0 dropped, p99 10.6 ms
Two minutes at 3840×2160/60 (dev build) 7,195 frames of 7,194 expected, all on the GPU, 0 bitmap fallbacks
Seven minutes, two layers (dev build) 50,389 frames at 119.97/s, 14 dropped, transfer ratio 0.997
Three layers and a second output window 120.1/s, 0 dropped
Two hours at 3840×2160/60 (dev build) 862,879 frames, 60.0/s delivered in every band, memory flat

Known, and named rather than discovered

  • Not signed or notarised. macOS will refuse it once. Move it to Applications and run xattr -dr com.apple.quarantine /Applications/Sialk.app - see the beta page for why both steps matter. Signing arrives with v1.
  • Apple Silicon only.
  • No MIDI, no cues, no remote. Those are v2, v3 and v5 on the roadmap.
  • No Windows build. Windows arrives at v3, once its GPU path has been measured on real hardware rather than assumed.

If it breaks, use the feedback page, it takes the run log from ~/Documents/Sialk/logs/. A sentence and a log is plenty.