toastsim/scripts/gen-art-batch.sh
type-two d998b74abc THE FACES: every regular gets a portrait, the jar gets three, the dish gets one
Twenty-two assets off the Cloudflare FLUX lane (scripts/gen-art-batch.sh
— idempotent, fixed seed per character, ~5s each, barely a dent in the
10k daily neurons):

- Thirteen regulars on their tickets, clipped into the corner like a
  loyalty card photo: Deidre's floral cardigan, Ray's flat cap, the
  child on tiptoes with a fistful of coins, the bloke from two doors
  down in his dressing gown, the delivery mid-yawn at 6am, the lunch
  rush as three impatient torsos, the pavlova order in her pearls. The
  inspector's ticket uses his own portrait; a name with no face made
  simply shows no frame (onerror removes it).
- THE MOTHER's jar rendered in all three states on the title button:
  bubbling over the rim, sulking under grey liquor, and dead with a
  tiny white surrender flag planted in the crust.
- Six dish heroes on the scorecard beside the ask: the skewers, the
  pan, the sliced rib eye, the whites bowl, the poached egg mid-drip,
  the benedict.

Verified live: pavlova portrait on day 20's ticket, benedict table on
21's, jar_sulking at gap 3, hero_eggs on the eggs scorecard.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 02:37:15 +10:00

48 lines
4.4 KiB
Bash
Executable File

#!/bin/bash
# gen-art-batch.sh — the full 2D art pass on the Cloudflare FLUX lane.
# Regulars' ticket portraits, THE MOTHER's jar states, dish heroes.
# Idempotent: skips anything already in public/assets/img.
set -uo pipefail
cd "$(dirname "$0")/.."
S="${SCRATCH:-/tmp/toastsim-art}"; mkdir -p "$S"
STYLE="claymation stop-motion figurine, plain light grey background, soft studio lighting, chunky stylized game asset, waist-up portrait"
JSTYLE="claymation stop-motion style, plain light grey background, soft studio lighting, chunky stylized game asset"
gen() { # gen <outname> <seed> <prompt>
local name="$1" seed="$2" prompt="$3"
[ -f "public/assets/img/$name.png" ] && { echo "= $name exists"; return; }
./scripts/cf-flux.py "$S/$name.raw" "$prompt" 8 "$seed" >/dev/null \
&& sips -s format png -Z 768 "$S/$name.raw" --out "public/assets/img/$name.png" >/dev/null 2>&1 \
&& echo "+ $name" || echo "! $name FAILED"
}
# The regulars — one fixed seed each so reruns keep the same person.
gen who_deidre 101 "$STYLE, elderly woman with lavender-grey perm, floral cardigan, large round glasses on a chain, clutching a small handbag, expectant pursed smile"
gen who_ray 102 "$STYLE, middle-aged working man in a flat cap and worn brown work jacket, stubble, mug of tea in hand, easy-going squint"
gen who_a_child 103 "$STYLE, small child on tiptoes at a counter, oversized striped jumper, gap-toothed grin, holding out a fistful of coins"
gen who_a_man_in_a_hurry 104 "$STYLE, businessman with loosened tie and rumpled suit, briefcase under one arm, checking his wristwatch, harried expression"
gen who_a_regular 105 "$STYLE, comfortable older man in a knitted vest with a folded newspaper under his arm, content half-smile, coffee mug"
gen who_someone_new 106 "$STYLE, young woman with a short bob and denim jacket, looking around uncertainly, holding a menu, hopeful nervous smile"
gen who_the_bloke_from_two_doors_down 107 "$STYLE, unshaven man in a tartan dressing gown over day clothes, slippers, holding his own mug from home, sheepish grin"
gen who_the_chef_on_her_day_off 108 "$STYLE, woman with hair in a tight bun, chef whites jacket open over a band t-shirt, arms crossed, appraising professional stare"
gen who_the_delivery_at_6am 109 "$STYLE, courier in a hi-vis vest and beanie mid-yawn, cardboard box under one arm, heavy eyelids"
gen who_the_lunch_rush 110 "$STYLE, three impatient office workers crowded shoulder to shoulder, all checking phones and watches, tight group"
gen who_the_man_at_table_nine 111 "$STYLE, mysterious lone man in a long grey overcoat, fedora resting on the table edge, steepled fingers, unreadable face"
gen who_the_pavlova_order 112 "$STYLE, grand formidable elderly woman in pearls and a silk scarf, chin high, gloved hands folded, expecting perfection"
gen who_the_benedict_table 113 "$STYLE, refined woman in a cream blazer with gold earrings, holding a menu closed, patient knowing smile"
# THE MOTHER — three states of one jar.
gen jar_bubbling 201 "$JSTYLE, single glass mason jar of sourdough starter, cloth cap tied with string, contents risen and bubbly, lively froth over the rim, warm and healthy"
gen jar_sulking 202 "$JSTYLE, single glass mason jar of sourdough starter, cloth cap tied with string, contents flat and sunken with a thin grey liquid layer on top, gloomy"
gen jar_dead 203 "$JSTYLE, single glass mason jar of long-dead sourdough starter, cloth cap askew, contents collapsed dark and crusted, a small wilted flag stuck in it, funereal"
# Dish heroes — the plate on the scorecard's order line.
gen hero_grill 301 "$JSTYLE, plate of chargrilled mushroom skewers with proper dark grill marks, single plate centered"
gen hero_pan 302 "$JSTYLE, cast iron pan with golden butter-basted mushrooms glistening, single pan centered"
gen hero_steak 303 "$JSTYLE, sliced rib eye steak on a wooden board, rosy pink centre, resting juices, single board centered"
gen hero_eggs 304 "$JSTYLE, glass bowl of whipped glossy egg whites beside three brown eggshells, single bowl centered"
gen hero_poach 305 "$JSTYLE, single perfect poached egg on a slotted spoon, white silky and intact, droplet falling"
gen hero_benedict 306 "$JSTYLE, eggs benedict on a toasted muffin, hollandaise dripping down, single plate centered"
echo done