-
released this
2026-05-25 11:11:15 +00:00 | 359 commits to main since this releaseEngine
- Free audio routing → 10 modulation targets. Pre-1.2 only knew
moveSpeed,turnSpeed,depositAmount. AddssensorDistance,
rhythmAmplitude,chaosStrengthon the agent side andexposure,
bloomIntensity,saturation,contraston the post side, so audio
pulses can drive visually-loud parameters and not just motion. - Blend modes. New
blendModepreset param picks how agents
compose over the background.additive(default) keeps the
historical glow-y look;paintalpha-composites agents over the bg
in display space so dark inks on a bright paper look right
(additivesaturates everything to white at high bg brightness). - Long-exposure agent-head highlight. New
headIntensityslider
(0..3) overlays a bright stamp at each agent's current position on
top of the persistent pheromone trail. Combined with highdecayRate
this gives a comet-head / long-exposure photography feel that the
trail-only renderer couldn't produce. Backed by a dedicated heads
buffer cleared every tick. - Kaleidoscope mode. New
kaleidoscopeslider (0 off, 1-6 mirror
axes) folds the composite output into N-fold rotational symmetry. - Sim-speed multiplier. New
simSpeedpreset param (1-8×) runs
multiple physics steps per rendered frame for faster pattern
evolution without dropping render rate. Trade-off: ~N× GPU load.
Editor & library
- Collapsible sections in the editor with per-section reset
buttons, so you can experiment in one area without losing edits
elsewhere. All sections except Global start collapsed. - Per-parameter help tooltips (?) on every slider / colour / select.
Renders via Portal so it's not clipped by section card boundaries. - Spawn-pattern respawn button next to the dropdown — re-seeds
agents on demand without the R hotkey. - Last-selected preset persists across page reloads (localStorage).
- Pre-baked thumbnails ship for every built-in preset
(public/preset-thumbs/<id>.png). Re-generate via
npm run bake:thumbnails. Custom presets still use the runtime
per-session snapshot. - All 19 built-in presets re-characterised — each now owns a
distinct post-processing fingerprint (bloom, feedback, vignette,
saturation, contrast). Two new paint-mode presets demonstrate the
ink-on-paper aesthetic; two new presets demo the head-highlight and
kaleidoscope features (Comet Trail, Mandala).
Bug fixes
- Slider edits no longer trigger spurious resets. The seed-respawn
effect was firing on any species-array replacement because
on([…])-form deps don't dedup at the primitive level. Wrapped each
increateMemo. Also stops the preset switch from respawning twice
(immediate + 250 ms debounced). - Background color no longer saturates the agents. Was added in
the scene shader, where the feedback loop amplified it by
1/(1-feedbackAmount)×20 at default settings. Moved to the
composite pass — bg is now applied once per frame, not accumulated. - Bloom threshold slider actually does something across its whole
range (was dead past ~0.2 because it operated on un-exposure-scaled
HDR values). Now exposure-scaled in the bright pass. - Paint blend mode visible for dark inks. Was using max-channel
brightness as alpha, so charcoal-coloured agents on white bg stayed
invisible. Now uses a colour-agnostic density channel. - Tooltip popovers no longer clipped by the editor section card's
overflow:hidden. Rendered via Portal with position:fixed. - Preset card names readable. They were inheriting the browser's
ButtonTextsystem colour on dark surfaces. - Population-share slider hidden in the All tab. Setting the same
share on all three species just normalises to 1/3 / 1/3 / 1/3
regardless of value — was effectively a "reset to equal" button.
Refactor
- Drop legacy global
attractionStrength+repulsionStrength.
Their effect is folded into the per-pair interaction matrix at
preset-load time (schema preprocess) and at source-literal level
(mk() helper) — exactly matches old behaviour, removes a redundant
knob that overlapped the matrix. - Single-source respawn coordinator (
src/ui/respawnCoordinator.ts)
funnels nonce / preset-switch / debounced-seed-edit through one
performRespawn callback, replacing three competing effects.
Tooling
npm run bake:thumbnailsruns the Playwright-based renderer that
captures preset thumbnails. Requires headed Chromium (macOS headless
Chrome doesn't expose WebGPU).?preset=<id>and?bare=1URL params for direct preset selection +
UI-overlay-free screenshot bakes.- vitest now resolves solid-js to the client (reactive) build via
resolve.conditions, so reactivity is actually testable inenv: node.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Free audio routing → 10 modulation targets. Pre-1.2 only knew