Download Latest Version v0.57.1 source code.zip (454.1 kB) Google Add to Preferred Sources
Home / v0.56.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-10-08 2.4 kB
v0.56.0 source code.tar.gz 2026-10-08 394.5 kB
v0.56.0 source code.zip 2026-10-08 444.2 kB
Totals: 3 Items   841.2 kB 0

Features

  • Add aspect to @tile and @plot.scatter, so pieces fit non-square elements across every kind.
  • Add stretch, crack and relax to @tile.voronoi, and round to curve any tile's corners.
  • Add turn and slide to pair tiling edges for Escher-style tilings.
  • Add size for circle packing, jitter for lattice tiles, and density for @tile.slice.
  • Add round: and edge: to shape outlines, and @R.t() for noise along an outline.
  • Add palette, a seeded curve through oklch that returns n colors shared across every cell.
  • Evaluate a computed @seed, so nested doodles can take a different seed per cell.

Fixes

  • Round @ri and fractional repeat counts the way they rounded before 0.52, and read a grid count before a glued modifier like 32/600px.
  • Round shape corners before edge:, so the edge follows the rounded outline, not the sharp one.
  • Cap relax at 50 rounds and fall back to a square aspect when it isn't finite, and cap the voronoi stretch ratio at 1000, past which seeding takes minutes.
  • Make @R.t frequency add detail along the outline, not only between cells.
  • Give random() inside a scatter density its own stream, so a re-render matches the first.
  • Skip the pick counter inside a sequence, where the index already picks.
  • Peel delaunay triangles from the outside, so no holes are left inside.
  • Redraw the fish preset with a forked tail, and improve the vase shape.
  • Bound memo caches by key length too, so svg url memos stop holding 20 MB.

Internals

  • Link a shader program once per surface, encode a still shader image once per cell that repeats it, and fetch a Google font once for every nested doodle that needs it.
  • Memoize fitted preset outlines, and share one Douglas–Peucker walk between outline thinning and edge profiles instead of walking it twice.
  • Skip empty rings in circle packing, drop an O(n²) pass from voronoi parent seeding, and stop scanning once a wide gap has emptied a cell.
  • Read a plain number variable in $() without compiling it, build the selector calc context with plain stores, and escape svg urls through a lookup table.
  • Share the greedy tile coloring between voronoi and mosaic, and trim duplicate code across shapes, tiling, svg-filter and parse-svg.
  • Document round:, edge:, @R.t and the tile commands in the grammar, and lower the CI bundle size ceiling to 152 KB.
Source: README.md, updated 2026-10-08