toastsim/src/ui/title.ts
monster 16860cf5d6 M9: the fresh-eyes pass — played it cold, fixed what a stranger hits
Sat down with it like someone who'd never seen it. Five findings, all
reproduced before fixing, all verified after:

1. The kitchen panel was a cheat console. BREAD/SPREAD/TOOL/BUTTER are the
   order's facts, but the widgets stayed live — you could fetch a soup spoon
   and then quietly re-select the butter knife. Locked during play; the
   browning dial stays yours because it's a real control.

2. The drawer card printed the ANSWER under the silhouette. The entire
   "similar but not identical" puzzle, solved by a caption. The name is gone;
   after ten seconds of fumbling it fades in as a pity: "fine. it's the
   butter knife."

3. Lifting anything above the rim committed it instantly — but fishing means
   lifting blockers, so you could accidentally "choose" whatever you were
   moving aside. Commit now needs 0.45s of continuous hold above the rim,
   which doubles as a beat to compare what you're holding against the
   silhouette. Verified: a wobbly lift takes ~0.95s because dipping below
   the rim resets the clock, and that's correct.

4. Coverage scored 20% on a slice a player had visibly covered corner to
   corner. Root cause: the "covered" floor scaled with the ASKED amount, so
   Coverage and Amount both punished thinness — double jeopardy. Coverage now
   asks its own question (are there bare patches? floor = 0.06 absolute) and
   the same conscientious play scores 84%.

5. Nothing told you how much was on the toast until the verdict. New live
   readout, computed by the judge's own functions: "on the toast: thin —
   normal asked · 84% covered". Watching it, a played-well day 1 went
   8.8 -> 9.0, and the missing 0.2 is named on the card (stripes), not hidden.

Also: the drawer holds 11 pieces dropped down a tighter column (a heap you
rummage in, not an exploded diagram — padded with extra teaspoons, like every
real drawer), it sits on a bench instead of floating in a void, Service is
sim-time rather than wall-clock, and the title mentions the drawer exists.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 15:42:09 +10:00

28 lines
1.1 KiB
TypeScript

import { el, Panel } from './hud';
/** The front door. One button, one piece of art, one joke. */
export class Title {
private panel: Panel;
constructor(day: number, onStart: () => void) {
this.panel = new Panel('title');
const wrap = el('div', 'title-wrap', this.panel.root);
const art = el('img', 'title-art', wrap);
art.src = '/assets/img/title_art.png';
art.alt = '';
const txt = el('div', 'title-txt', wrap);
el('h1', undefined, txt, 'TOASTSIM');
el('p', 'title-sub', txt, 'Bread goes in. You are judged.');
const btn = el('button', 'btn', txt, day > 1 ? `RESUME — DAY ${day}` : 'START DAY 1');
btn.addEventListener('click', () => {
this.panel.dispose();
onStart();
});
const keys = el('div', 'title-keys', txt);
el('div', undefined, keys, 'SPACE — lever down, then pop');
el('div', undefined, keys, 'DRAG — fish the right tool from the drawer');
el('div', undefined, keys, 'DRAG — spread · WHEEL — tilt the knife · dip when empty');
el('div', undefined, keys, 'ENTER — serve it to him');
}
}