assets/extract_tunes.py pulls 523 canon tunes (repress-count ranked, club pool
12"-only) into public/tunes.json across shop/fair/club genre pools; top ~8% of
each chunk flagged grail ("CERTIFIED CLASSIC", gold flash, 2000 pts). Level
clear reveals a real record (artist — title, label, year), the announcer speaks
it, and first IDs land in a persistent localStorage notebook (+1000). Title
screen shows notebook progress. Also: overlay/sub text got backgrounds for
readability, and prompt() is guarded for webviews that lack it.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Regenerate textures at 48px (chars/walls), 96px floor, with an UnsharpMask to
counter the LANCZOS softening. Bump TILE to 48 so the whole world scales up and
sprites render bigger/crisper; scale movement + range constants x1.5 to keep the
same tiles-per-second feel, and collision bodies to 34px. Mechanics reverified.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>