-
v0.3.2 — new drop 🔥
Stablereleased this
2026-06-29 22:25:22 +00:00 | 7 commits to master since this releaseFixed
- (ci) Push the release tag once so release.yml runs once
- Vsync frame cap follows the active monitor's refresh rate
- (ci) Forgejo-first release + headless render builds (gitlab can't block it)
- (ci) Drive the Release PR with git-cliff (release-plz never opened one)
🌐 Live WASM demo (latest build): https://public.pages.ssy.dk/soundy-bits/
This release's exact browser build is thesoundy-bits-0.3.2-wasm.zipasset.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.3.1 — new drop 🔥
Stablereleased this
2026-06-28 18:35:21 +00:00 | 18 commits to master since this releaseFixed
- Post-processing / background effects restored. The Tilemap → Combined Effects
(blur/glow/streak/chromatic) → Vector shader chain was registered on the main app instead of the
render sub-app, so it silently never ran ("no post processing at all"). Moved to the render app;
every GPU post-process effect works again. - Release pipeline actually fires now. release-plz creates the tag via the Forgejo API, which
does not triggerrelease.yml, so the tag is re-pushed as a real git push — and that push plus the
Release PR now use a dedicatedRELEASE_TOKENPAT, because Forgejo's autoFORGEJO_TOKENnever
triggers downstream workflows.
Changed
- Opus encoder vendored as pure Rust (
unsafe-libopusvia the opus-rs fork). The headless
renderer's MP4 audio track no longer needslibopus-dev/ system libopus or autotools/cmake. - Headless cargo feature gate (
gui+live_audio, both default-on). A render-only build
(--no-default-features --features diagnostics) drops the GUI (egui/winit) and live-audio
(cpal/pulse) system dependencies, so therendersubcommand runs on a bare server or container.
Added
- Headless deploy docs — Arch + Debian desktop library lists and a server/container section
(Debian/Ubuntu, Alpine + a Dockerfile, NVIDIA) covering the renderer's runtime Vulkan deps. - Prebuilt-binaries table lists the
-nvencartifact and notes every binary doubles as a headless
video renderer; acknowledgements credit the headless render stack (openh264 / muxide /
unsafe-libopus). A CI gate now compiles the headless feature build so it can't silently rot.
🌐 Live WASM demo (latest build): https://public.pages.ssy.dk/soundy-bits/
This release's exact browser build is thesoundy-bits-0.3.1-wasm.zipasset.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Post-processing / background effects restored. The Tilemap → Combined Effects
-
v0.3.0 — new drop 🔥
Stablereleased this
2026-06-27 22:27:22 +00:00 | 27 commits to master since this releaseAdded
- Headless render-to-video (
soundy-bits render …, native-only). The same binary renders a
clip to an MP4 (H.264 video + Opus audio, in sync) or a PNG frame sequence with no window or
display — deterministic and reproducible, runnable on a headless server. Reuses the real
visualization/post-process plugins via an offscreenRenderTarget::Image+gpu_readback, a
fixed-step clock, and a frame-indexed offline audio pump. Encoding is a pluggable
VideoSink/VideoEncoderseam (src/headless/) so AV1 can drop in. Requireslibopus-devat
build time andlibopus.soat runtime.- Hardware H.264 via NVENC (
--features nvenc, NVIDIA) — auto-selected by default with the
software encoder as fallback; capped-VBR with a configurable--bitrate. The crate vendors its
headers and dlopens the driver at runtime, so it builds with no CUDA toolkit (but hard-links the
NVIDIA encode lib, so thenvencbinary only runs on NVIDIA hosts — hence an opt-in feature, not
default). Reuses a pooled, pipelined set of NVENC buffers, so a full song renders at ~7× real
time at 1080p60 (≈420 fps on a 4090) and exits cleanly. - Software encoder (fallback) is multi-threaded: encode/mux on a worker thread overlapping GPU
rendering, constant-QP + multi-slice so it parallelizes across cores, parallel RGBA→I420. - Flags:
--encoder auto|hw|sw,--bitrate <Mbps>(NVENC),--quality <QP>(software CQP,
default 22),--speed(faster software),--software(render on Mesa lavapipe for GPU-less hosts).
- Hardware H.264 via NVENC (
Changed
- Upgraded to Bevy 0.19. The custom 3-pass post-process chain (Tilemap → Combined effects →
Vector SDF/filters) and theColoredMesh2dpipeline were ported from the removed render-graph
node API to the new schedule-based renderer (passes are render-world systems on theCore2d
schedule, ordered after tonemapping inCore2dSystems::PostProcess). UI scaling moved from
EguiContextSettings::scale_factorto theEguiZoomFactorcomponent, and egui/Bevy deprecations
were cleared. - Refreshed all dependencies to their latest compatible versions.
cpalis intentionally held at
0.17 to stay aligned withrodio0.22 (which pinscpal0.17), avoiding a duplicate native audio
backend in the tree; it will follow once rodio bumps. - Releases are now automated via release-plz: a "Release PR" carries the
version bump + changelog, and merging it tags + publishes. CI runs on pull requests only.
Fixed
- Release archives now extract into a single top-level
soundy-bits-<ver>-<target>/folder instead of
scattering the binary + assets into the current directory (no more "tarbombs").
🌐 Live WASM demo (latest build): https://public.pages.ssy.dk/soundy-bits/
This release's exact browser build is thesoundy-bits-0.3.0-wasm.zipasset.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Headless render-to-video (
-
v0.2.0 — new drop 🔥
Stablereleased this
2026-06-25 23:32:59 +00:00 | 30 commits to master since this releaseAdded
- Vector SDF background layer — a resolution-independent, per-pixel procedural pattern
(rings, sunburst, hex grid, nested polygons, moiré, kaleidoscope) rendered as a final
post-process pass, with a the29nov-style filter stack: threshold/duotone, posterize, halftone,
beat-gated invert, in-shader bloom, chromatic, scanlines, grain, vignette, flicker. Audio-reactive
and layerable over any mode (like the tilemap effect). Selectable color mode: Duotone (the29nov
mono, default) or Gradient — an animated, bass-pulsing rainbow with adjustable hue speed, like Orbit. - Theme / Curator-Seed system — portable themes that set partial default settings and constrain
the randomizer (lock / range / force / one-of) into a stylistic envelope. Importable as a
human-editable TOML file or a compact paste-able seed code (postcard + CRC32 + base64,
versioned). Built-in starter themes (Mono/the29nov, Neon, VHS, Cosmic), an in-app Theme Editor
(all options per mode, default value + randomize range each, plus a random-theme generator), and
a control-panel manager. The active theme persists across sessions and keeps Randomize within its
envelope.
Fixed
- Floating Windows layout now scrolls tall control panels instead of running off-screen, so the
bottom controls in the Mode/Background/Stereo windows stay reachable. - Vector layer "Opacity" now works as a true layer crossfade (was swallowed by the duotone remap).
- Reduced SDF pattern density (esp. hex) so patterns read as clean shapes, not fine texture.
- Audited/tightened Randomize ranges + added an anti-stacking guard so a single Randomize stays
watchable instead of producing muddy/over-stacked frames. try_despawnon managed background meshes silences a benign double-despawn warning during rapid
randomize/mode churn; guarded an empty file-dialog selection against a panic.
🌐 Live WASM demo (latest build): https://public.pages.ssy.dk/soundy-bits/
This release's exact browser build is thesoundy-bits-0.2.0-wasm.zipasset.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Vector SDF background layer — a resolution-independent, per-pixel procedural pattern
-
v0.1.0 Stable
released this
2025-10-09 21:23:52 +00:00 | 180 commits to master since this releaseDownloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
1 download
-
Source code (ZIP)