Changelog
Every release of Stipple, newest first.
The current version is 1.1.2. This page is copied from CHANGELOG.md in the repository at build time.
All notable changes to Stipple are listed here. The format follows Keep a Changelog and the project follows Semantic Versioning.
[Unreleased]
[1.1.2] - 2026-10-28
Changed
- The agent skill (
skills/stipple/SKILL.md) has worked examples for a mesh surface, a dissolve reveal andDitherEffectText, and a palette section. All six examples are compiled by a test, and a second test fails if the skill and the compiled copy differ. - The docs site publishes the same skill the repository holds, and documents
charset,DEFAULT_SCRAMBLE_CHARSETandDitherTextEffect. CI checks the links of the built docs. - The gallery shows
DitherFields.dissolveon the Fields andditherMaskpages.
[1.1.0] - 2026-10-27
Added
- The shader renderer draws
ditherFillandditherMask, andDitherFields.noiseandDitherFields.sweepcarry a shader.ditherFill,ditherMask,DitherTextandDitherImagetake arenderer,DitherRenderer.Cellsby default. DitherFields.sweepaccepts a() -> Floatprogress that is read when the field is drawn, and its shader takes the progress as a uniform, so an animated reveal compiles one program.DitherFields.mesh: a grid of 2 to 8 by 2 to 8 tones blended smoothly, with an optional drift of the interior points. It has a shader that takes the tones as a uniform, so editing or animating a mesh compiles nothing.DitherEffectTextwithDitherTextEffect.ScrambleandDissolve: text that settles out of random characters or appears grain by grain, from a timeline or a progress you own. It measures as the final text, shows it at once under reduced motion, and a screen reader reads only the final text.DitherFields.dissolve: a reveal in an irregular order, forditherMask, with a shader that takes the progress as a uniform.- The shader renderer draws blue noise and custom patterns up to 256 cells wide, dot-shaped cells and palettes of up to eight colours. Larger patterns and longer palettes still use the cell renderer.
Changed
- The noise field uses a float-only hash so the cell renderer and the shader draw the same cells. Which cells light up for a given noise changes; the look does not.
[1.0.0]
Added
- Dither engine: Bayer 2x2, 4x4 and 8x8 and blue-noise patterns, an extensible
DitherPattern, pureDitherFields (solid, linear, radial, noise, waves, ripples, sweep), andStippleThemethrough a composition local. - Cell renderer for every target, and an optional shader renderer (AGSL on Android 13 and later, Skia runtime effects on desktop, iOS and web) with automatic fallback to cells.
- Modifiers
dither,ditherProgress,ditherImage(ordered, Floyd-Steinberg and Atkinson),ditherFillandditherMask. - Reduced motion that freezes animation on Android, iOS, desktop and web.
- Components:
DitherButton,DitherBarChart,DitherGrid,DitherGauge,DitherStatCard,DitherProgressBar,DitherText,DitherAvatar,DitherImageandDitherBackground. - Gallery apps for web, desktop, Android and iOS, and an agent skill (
skills/stipple/SKILL.md).