Split the gallery into sections with a divider, start the colored set

Generators now live in gen/<section>/<subject>/<action>.js; the section
folder picks where a tile shows in the gallery and isn't part of the URL.
The first 50 are in gen/bw, a dashed divider follows, then gen/color.

First colored ones: fox/sleep, pig/oink, duck/swim, whale/spout,
turtle/walk, owl/blink, crab/dance, butterfly/flutter, dino/stomp,
jellyfish/pulse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-22 20:45:17 +00:00
co-authored by Claude Opus 5.5
parent 8842194c3c
commit ab7e0dc0df
77 changed files with 275 additions and 8 deletions
+12
View File
@@ -0,0 +1,12 @@
// chunky bubble letters "lol" hopping one after another like a wave
const{sin,max}=Math,T=2*Math.PI
export const frames=20,delay=60
export default(c,t)=>{
const L=[[x=>{c.moveTo(x,70);c.lineTo(x,180)},48],[x=>{c.moveTo(x+32,148);c.arc(x,148,32,0,T)},128],[x=>{c.moveTo(x,70);c.lineTo(x,180)},208]]
L.forEach(([f,x],k)=>{
const h=max(0,sin(T*(t-k*.14))),y=-38*h**.8,sq=h<.15?1-(.15-h)*.6:1
c.save();c.translate(x,212);c.scale(2-sq,sq);c.translate(-x,-212+y/sq)
for(const[w,s]of[[44,'#111'],[28,'#fff']])c.lineWidth=w,c.strokeStyle=s,c.beginPath(),f(x),c.stroke()
c.restore()
})
}