Skip to content

Releases: humanbydefinition/textmode.synth.js

v1.6.0

06 Apr 23:36

Choose a tag to compare

1.6.0 (2026-04-06)

Features

  • add example sketches and update documentation references (7f0c94d)

v1.5.1

06 Feb 22:30
f636001

Choose a tag to compare

What's Changed

Full Changelog: v1.5.0...v1.5.1

v1.5.0

06 Feb 20:01

Choose a tag to compare

  • New Procedural Patterns: Introduced new plasma and moire procedural patterns for generating complex visual textures.
  • Expanded Coordinate Transforms: Added a suite of new coordinate manipulation transforms including polar, twirl, swirl, mirror, shear, barrel, pinch, and fisheye for advanced visual distortions.
  • New Blend Modes: Integrated various new blend modes such as screen, overlay, softlight, hardlight, dodge, burn, lighten, and darken for richer compositional effects.
  • Deterministic Randomness: Implemented a seed() function to allow for reproducible noise and voronoi patterns, enhancing consistency in generative art.
  • TextmodeSource Sampling: The src() function now supports sampling directly from TextmodeSource objects (images and videos), enabling integration of external media into synth chains.
  • Dynamic Synth Source Evaluation: The layer.synth() method now accepts a factory function, allowing for dynamic generation and recompilation of synth sources based on changing conditions.

v1.1.1

31 Jan 22:16

Choose a tag to compare

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

v1.1.0 - quality of life updates

24 Jan 00:39

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.0.0...v1.1.0

v1.0.0

16 Jan 21:56
22dd55b

Choose a tag to compare

textmode.synth.js

This marks the first public release of textmode.synth.js - a Hydra-inspired visual synthesis library adapted for the textmode.js ecosystem.

textmode.synth.js brings method-chained procedural texture generation to textmode rendering, allowing characters, foreground colors, and background colors to be driven independently through a compositional API. The result is a flexible system for building animated ASCII / textmode visuals using familiar Hydra-style patterns, compiled to GLSL and executed on the GPU.

Highlights

  • Hydra-style chainable synthesis API
  • Native integration with textmode.js’s three-texture pipeline
  • Oscillators, noise, voronoi, gradients, shapes, and more
  • Feedback loops, modulation, blending, and geometry transforms
  • Extensible architecture for custom sources and transforms

Live coding environment

Alongside this release, a dedicated browser-based live coding environment is available at

It includes auto-completion, inline documentation, curated examples, and access to the full textmode.js ecosystem without local setup.

Requirements

  • textmode.js v0.8.5+
    This release depends on new plugin and rendering hooks introduced in textmode.js v0.8.5.

Credits

textmode.synth.js is a derivative work of hydra-synth by Olivia Jack, reimagined for textmode rendering.
Core synthesis concepts, GLSL generation, and functional design are inspired by Hydra, with adaptations for character-based output and layered text rendering.


Feedback, experiments, and bug reports are very welcome.
Have fun breaking textmode!