v1.1.1
·
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 directSynthParameterValue(numbers, arrays, functions) in addition toSynthSourceobjects. This allows for more concise code, such aspaint(1, 0, 0)for solid red, orosc().add(0.5)to add a grayscale value. - Improved Shader Compilation and Lifecycle Management: Implemented robust handling for shader compilation, including
isCompilingandisDisposedflags 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
vitestfor testing,eslintwithjsdocrules for code quality,commitlintfor conventional commit messages,markdownlint-cli2for documentation consistency, andhuskyfor Git hooks. NewAGENTS.mdprovides ground-truth reference for AI coding agents. - Refactored GLSL Utilities and Constants: Moved GLSL channel-related constants (
CHANNEL_SAMPLERS,CHANNEL_SUFFIXES) to a centralsrc/core/constants.tsfile. Introduced GLSL utility functions_packCharand_unpackCharfor more efficient character index handling in shaders.
What's Changed
- docs: Fix phantom parameters in char() and osc() examples by @humanbydefinition in #25
- test: add tests for SafeEvaluator utility by @humanbydefinition in #28
- docs: add missing examples for modulate transforms in ISynthSource by @humanbydefinition in #27
- refactor: centralize texture channel constants by @humanbydefinition in #29
- test: add coverage for CharacterResolver by @humanbydefinition in #31
- refactor: centralize CompilationTarget and TextureChannel types by @humanbydefinition in #32
- docs: add missing modulate methods to ISynthSource by @humanbydefinition in #33
- types: enforce Textmodifier type in synthRender and extensions by @humanbydefinition in #34
- test: add coverage for ArrayUtils by @humanbydefinition in #38
- types: replace any cast with Partial in SynthPlugin by @humanbydefinition in #39
- refactor: simplify getTextureChannel logic to reduce size by @humanbydefinition in #40
- Centralize GLSL character packing logic by @humanbydefinition in #49
- test: add coverage for collectExternalLayerRefs by @humanbydefinition in #46
- Refactor: Deduplicate RGB channel transforms by @humanbydefinition in #52
- test: add unit tests for TransformRegistry by @humanbydefinition in #51
- api: add RGBA overloads to color methods by @humanbydefinition in #45
- test: Add coverage for compiler channel utilities by @humanbydefinition in #53
- types: remove unsafe casts in TransformFactory by @humanbydefinition in #56
- test: add coverage for TransformFactory by @humanbydefinition in #54
- Refactor UniformManager to centralize dynamic uniform creation by @humanbydefinition in #55
- api: Add primitive value overloads for combine transforms by @humanbydefinition in #57
- Fix WebGL framebuffer leak in synth feedback loop by @humanbydefinition in #47
- types: strengthen generatedFunctions types by @humanbydefinition in #48
- docs: improve example for src/index.ts by @humanbydefinition in #35
- test: Add tests for FeedbackTracker class by @humanbydefinition in #58
- perf: optimize array smoothing calculation by @humanbydefinition in #64
- fix: shader leak in synthRender race condition by @humanbydefinition in #61
- refactor: remove unreachable vector handling code by @humanbydefinition in #59
- api: standardize scalar arguments for solid and color transforms by @humanbydefinition in #62
- test: add unit tests for TransformDefinition by @humanbydefinition in #67
- refactor: centralize SynthSource creation logic by @humanbydefinition in #66
- perf: Optimize synthRender hot path by @humanbydefinition in #71
- docs: add missing examples for coordinate transforms in ISynthSource by @humanbydefinition in #70
- api: add missing overloads for color sources by @humanbydefinition in #69
- fix: webgl shader leak during async compilation by @humanbydefinition in #68
- docs: update AGENTS.md by @humanbydefinition in #79
- fix: plugin uninstall resource cleanup by @humanbydefinition in #78
- test: add coverage for SynthChain by @humanbydefinition in #72
- types: strengthen SynthSourcePrototype in TransformFactory by @humanbydefinition in #75
- types: remove unsafe casts in SynthSource injection by @humanbydefinition in #80
- perf: optimize feedback loops with copy shader by @humanbydefinition in #77
- types: add missing return types to public methods by @humanbydefinition in #83
- refactor: centralize axis-based transform generation by @humanbydefinition in #84
- test: add coverage for GLSLGenerator by @humanbydefinition in #81
- refactor: centralize source resolution logic in api/sources by @humanbydefinition in #88
- fix: copy shader leak in SynthPlugin uninstall by @humanbydefinition in #85
- dev by @humanbydefinition in #89
Full Changelog: v1.1.0...v1.1.1