Skip to content

v1.1.1

Choose a tag to compare

@humanbydefinition humanbydefinition released this 31 Jan 22:16
· 155 commits to main since this release

Highlights (via @gemini-code-assist)

  • Enhanced API Flexibility with Overloads: The API for charColor, cellColor, paint, solid, and all combine/combineCoord transforms now supports direct SynthParameterValue (numbers, arrays, functions) in addition to SynthSource objects. This allows for more concise code, such as paint(1, 0, 0) for solid red, or osc().add(0.5) to add a grayscale value.
  • Improved Shader Compilation and Lifecycle Management: Implemented robust handling for shader compilation, including isCompiling and isDisposed flags to prevent race conditions and memory leaks during asynchronous shader creation and layer disposal. Ping-pong buffers for feedback loops are now dynamically managed, including recreation upon grid dimension changes.
  • Optimized Feedback Loop Rendering: Introduced a global, shared copy shader (ShaderManager) for efficient blitting of ping-pong buffers to the draw framebuffer. This avoids re-running the main synth shader for the final copy pass, improving performance for feedback effects.
  • Comprehensive Development Tooling and Standards: Added new development tools including vitest for testing, eslint with jsdoc rules for code quality, commitlint for conventional commit messages, markdownlint-cli2 for documentation consistency, and husky for Git hooks. New AGENTS.md provides ground-truth reference for AI coding agents.
  • Refactored GLSL Utilities and Constants: Moved GLSL channel-related constants (CHANNEL_SAMPLERS, CHANNEL_SUFFIXES) to a central src/core/constants.ts file. Introduced GLSL utility functions _packChar and _unpackChar for more efficient character index handling in shaders.

What's Changed

Full Changelog: v1.1.0...v1.1.1