From a9a8b7a5f1ab341df1233a44821e9cb02f406f90 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Mon, 28 Sep 2026 15:03:10 -0700 Subject: [PATCH] the daily token: the live crawl keeps its punctuation KidLisp strings now carry , ; ( ) and escaped quotes, and write takes nil for no background, so the $code matches the GIF line for line. Co-Authored-By: Claude Opus 5.5 --- marketing/podcast/lib/crawl.mjs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/marketing/podcast/lib/crawl.mjs b/marketing/podcast/lib/crawl.mjs index 518b0ed3dd..b3713830a5 100644 --- a/marketing/podcast/lib/crawl.mjs +++ b/marketing/podcast/lib/crawl.mjs @@ -180,12 +180,10 @@ export function renderCrawlGif(g, outPath, { seconds = 30, fps = 12 } = {}) { })(); } -// The same crawl as a live KidLisp piece, moving with (clock). KidLisp can't -// yet carry , ; " ( ) inside a string, so those are dropped from the piece -// (the GIF keeps them). Line backgrounds are black: there's no bare write -// with a size. +// The same crawl as a live KidLisp piece, moving with (clock). Strings keep +// their punctuation; only \ and " need escaping. export function crawlPiece(g, { periodMs = 30000 } = {}) { - const kl = (s) => s.replace(/[,;"\\()]/g, ""); + const kl = (s) => s.replace(/\\/g, "").replace(/"/g, '\\"'); const zNow = `(* (/ (mod (clock) ${periodMs}) ${periodMs}) ${g.TRAVEL.toFixed(1)})`; const src = ["(wipe black)"]; for (const { x, y, c } of g.stars) src.push(`(ink ${c.join(" ")})(plot ${x} ${y})`); @@ -197,7 +195,7 @@ export function crawlPiece(g, { periodMs = 30000 } = {}) { const y = `(- (- ${g.H} (* ${g.A.toFixed(2)} (- 1 ${k}))) (* (max (- ${z} ${g.GONE.toFixed(1)}) 0) 100))`; const s = `(* ${g.S0} (* ${k} ${k}))`; const x = `(- ${g.W / 2} (* ${text.length * GW / 2} ${s}))`; - src.push(`(ink ${l.color.join(" ")})`, `(write "${text}" ${x} ${y} black ${s})`); + src.push(`(ink ${l.color.join(" ")})`, `(write "${text}" ${x} ${y} nil ${s})`); }); return src.join("\n"); } -- 2.51.2