Repository navigation
Releases
v1.6.0 — Bauhaus Tiles and Ring Scales
Two tilings join the catalogue, the 37th and 38th patterns, both from a study of the Bauhaus line-and-circle posters.
Bauhaus Tiles is one engine for the whole genre. Every glyph is a bundle of N parallel stripes following a line, a quarter arc, its straight chord, or an L-shaped elbow inside a square cell, placed so that stripe k crosses every cell side at the same fraction (k + ½)/N. That single constraint is what makes pipes, half discs, chevrons, nested diamonds, hatch blocks and woven knots all join across any edge in any rotation or reflection; Truchet's arc tiles are the N = 1 case. Nine motifs, four plane groups over a seeded block (free, pmm, p4m, p4), strokes or solid bands.
The drawing does not go cell by cell. It traces every band chain — side to neighbouring side across the grid, border to border or around a loop — and places each stripe by where it crosses the chain's entry edge, propagated step by step through the corner connectors. That is what lets the entire field slide with phase without a seam: mirrored, the sliding stripes become rings radiating from every disc centre. Closed loops whose round trip returns a stripe on the other side of its band are Möbius; no consistent shift exists on them, so they are detected and held still. A full cycle reproduces the first frame byte for byte.
Ring Scales is the seigaiha lattice: discs of one radius on a staggered grid, drawn in painter's order so each covers the one above it, with bold rings and a fine polar grid alternating by seed. Ring radii advance with phase.
Also in this release
- Both patterns ship with animation presets: Roll (bass on stripe weight, brightness on a weight gradient across the band) and Sections (a 16-beat step through the four symmetry groups, so a section change reads as order arriving) for the tiles; Ripple for the scales.
- The research note behind the two patterns is in
docs/research/: which Bauhaus families reduce to formulas, and which do not.
Full history: v1.5.0...v1.6.0
v1.5.0 — Villarceau Ribbons
Villarceau Ribbons joins the catalogue as the 36th pattern — and it is the first here whose motion closes by a group law rather than by a construction we impose.
The 3-sphere is a disjoint union of great circles, one per point of an ordinary sphere. Stereographic projection sends each of those fibers to an exact circle, and the fibers over a latitude form a torus of mutually linked circles — the Villarceau circles the pattern is named for. Motion is left multiplication by a one-parameter SO(4) subgroup; at a full turn that element is −1, which lies inside every fiber's own circle group, so every fiber returns to itself as a set. The loop is the group law, not a trick.
All 84 fibers move across a cycle, median travel 96px — no frozen elements — at p50 2.4ms.
Also in this release
- A stage-fitness audit of all 36 patterns, measuring what actually makes a pattern work as a music visualizer: smooth structural params, chaotic ones, intrinsic time, visible motion fraction, silence behaviour, preset reach.
- Hitomezashi gains its first continuous structural axis. The audit measured it with none — audio could reach stroke weight and scale and nothing else, which is why it barely responded. Its stitch inset is now interpolated; at the default the expression is exactly the historical value, so every existing URL renders byte-identically.
- Seven mis-routed presets fixed. Interlace, isoweave, linefield, knot, chirp and node garden each had a structural parameter sitting unused while a preset slot went to a second cosmetic route.
- Four candidate params were measured and rejected rather than routed — where a preset already routed 100% structural, or where an established
NEVER_ROUTEfinding outranked a metric known to be blind to that case.
Full history: v1.4.0...v1.5.0
v1.4.0 — the field patterns
Three new generators, taking flowshape to 35, plus a new mode on an existing one. All four were spiked on the animate stage and played against music before anything was registered.
New patterns
- Line Field — a grid of short axial strokes whose orientation comes from a continuous vector field: Gaussian vortices plus curl waves, evaluated at domain-warped coordinates. The curl construction is the forced order — the field is divergence-free by identity, so it must swirl and can never drain. Every stroke turns through the phase cycle; the swirls wander like weather.
- Node Garden — a jittered lattice of dots with an edge wherever two fall inside the connection radius. Rows and columns stay legible, edges are trimmed rim-to-rim so each one crosses visible ground, and a displacement clamp guarantees no two dots ever overlap at any parameter. Constellations form and dissolve as the field drifts.
- Interference — horizontal lines displaced by the summed field of two wave sources. With equal wavenumbers the fringes are the hyperbola family of the two foci: geometry, not tuning. At the default amplitude the lines cross and braid into luminous caustic ribbons.
Also
- Hiding squares — a new mode on Warped Fabric, where each cell's square rides the same warp noise in translation, scale and rotation. Where the noise is calm the squares fill their cells; where it rises they shrink, shift and turn, exposing the ground. Existing Warped Fabric URLs render byte-identically.
- The References section now credits 22 works by DOI, each verified to resolve to the exact work cited.
Every existing pattern snapshot is unchanged, so every poster URL ever shared still renders exactly as it did.
Full history: v1.3.0...v1.4.0
v1.3.0 — the sources, cited
The About page now carries a References section: one entry per pattern — 30 of them — with the primary source behind each, and a resolvable DOI wherever one exists. 19 works are credited by DOI, and each is recorded in this deposit's metadata as a cites relation, so the literature this project rests on is linked from the archived record rather than only named in prose.
Six entries are marked original construction. That marks the composition and the parameterisation as this project's own — never the mathematics, which is classical in every case and cited alongside.
Also in this release
- Per-page share cards. Home and the three galleries each have their own Open Graph card, in English and Spanish, served from real paths. Previously every page shared one image, and the Spanish card was never served at all — the document declared two
og:imagetags and crawlers take the first. - Audio-reactive colour on the animate stage, off by default: spectral centroid to hue, level to chroma, in OKLCH, decaying back to monochrome in silence.
- A second hue axis.
HUE SPREADparts paper's hue from ink's, so a muted ground can sit under a differently-tinted mark. Default 0, which reproduces every existing palette byte for byte. - Intrinsic motion for 17 patterns, which now move on their own during silence rather than only when audio drives them.
- Four demo tracks on the stage, and a curated video gallery.
- The pattern count is corrected to 30 throughout — it had been stale at 25 in the READMEs, the docs, the deposit metadata and the social cards.
Full history: v1.2.0...v1.3.0
v1.2.0 — curated gallery
A gallery of hand-picked work at flowshape.art/#/gallery, in three tabs.
Gallery
Designs — 26 chosen patterns. Posters — 9 compositions. Videos — 5 recordings from the animated stage.
Tabs are URL-addressable, so a tab is shareable and the back button works, and a tab only appears once its category has content.
Order is shuffled once per page load and then held: a repeat visitor meets different work first, but the grid does not rearrange under someone who opens a piece and presses back.
Posters are live composer URLs, not exported images. They stay crisp at any size, add nothing to the repository, and clicking one opens the composer at that exact state instead of showing a dead image.
Videos play on click, in a modal, full length and with sound — native controls carry fullscreen. The grid fetches no video at all until someone asks for one. They are hosted on Cloudflare R2 rather than committed, at native frame rate and 1080p.
Since v1.1.0
v1.1.0 added saved work and sharing: star any design, poster or animation, find it again at #/saved, rename or delete it, and export the collection as a file. A share control on every view hands over the link that reproduces exactly what is on screen.
Both rest on the same idea as the rest of the project: a saved favourite is a URL, so nothing about the artwork is duplicated and nothing can drift out of date.
Also
- The README claim that there is "nothing to save and nothing to log in to" is corrected — there is no account and no server, and what you keep is kept in your own browser.
- 779 tests.