Commit History
-
docs: link the demo video and write-up from the README (submission deliverables)
Co-Authored-By: Claude <claude-opus-4-8> <noreply@anthropic.com>8fabf33 -
fix(game): bottom-anchor the lone opening greeting via .bubble-wrap flex
The greeting floats high because Gradio's auto-height .message-wrap sits at the top of the fixed-height .bubble-wrap scroll area. Make .bubble-wrap a flex column and push .message-wrap down, scoped with :not(:has(row ~ row)) so it applies ONLY to the single-message state. With 2+ messages the rule drops out -> the running dialogue (confirmed good) is left exactly as-is. Co-Authored-By: Claude <claude-opus-4-8> <noreply@anthropic.com>a086c41 -
fix(game): restore in-game dialogue; bottom-anchor only the lone greeting
The previous global justify-content:flex-end pushed the whole running dialogue up onto the child. Revert that and scope the bottom-anchor to :only-child, so it moves ONLY the lone opening greeting and never touches the multi-message layout. Co-Authored-By: Claude <claude-opus-4-8> <noreply@anthropic.com>0b7f357 -
style(game): bottom-anchor the chat stack so the opening greeting sits low too
The greeting is the chatbot's single first message; Gradio top-aligns it in the fixed-height chat area, so it floated up onto the child while running dialogue (autoscrolled) sat low. margin-top:auto + flex-end pin the stack to the bottom, dropping the lone greeting into the same lower letterbox band. Vertical alignment only -- does not touch the per-speaker bubble layout. Co-Authored-By: Claude <claude-opus-4-8> <noreply@anthropic.com>1c6b454 -
style(game): drop subtitle into the lower letterbox band, clear of the child
Phase 1 of decluttering the child: the dialogue stays a single centered column (the stable layout) but anchors below the frame base instead of over the child's feet, so the text no longer crosses the child's body. max(86px, ...) keeps it above the input line on short viewports. Co-Authored-By: Claude <claude-opus-4-8> <noreply@anthropic.com>72bd421 -
docs: update CLAUDE.md + AGENTS.md — dialogue fixes deployed, child-left parked
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>6133be0 -
style(game): slimmer input box (560px, thinner stone frame, less padding)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>9a2fcb4 -
Revert "style(game): move child dialogue left while keeping generic text-align center"
This reverts commit 5d8277a11fc69307cbe3173a322022363d6a8741.e659f31 -
style(game): move child dialogue left while keeping generic text-align center
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>5d8277a -
Revert "style(game): move child dialogue to the left side of the frame"
This reverts commit e134c2ecf5db5b0df4d855d9f164502fe5b5a98e.61c7d80 -
style(game): move child dialogue to the left side of the frame
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>e134c2e -
fix(game): re-apply scrim removal + centered user line (test freeze-isolation)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>b770513 -
fix(game): full revert of styles.css to pre-dialogue-fixes state to isolate freeze
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>5ddbb4a -
fix(game): revert input box to pre-dialogue-fixes sizing to isolate freeze
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>0564932 -
fix(game): strip user-message layout overrides to isolate freeze bug
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>3b9bf5b -
fix(game): restore Gradio's default user bubble placement — only cap width to prevent collapse
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>8116ee5 -
fix(game): use block+inline-block for user messages so they render again
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>c3a7b18 -
style(game): split dialogue laterally — child left, player right, center clear
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>f9d41a5 -
fix(game): center user message row for real (more Gradio selectors) + tighten input width
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>22850e7 -
fix(game): force user message row to full width — stops YOU text from collapsing vertically
style(game): tighten input box further (narrower, thinner frame, smaller text) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>3338bd7 -
docs: update CLAUDE.md + AGENTS.md — dialogue fixes applied/deployed to mirror
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>b78ef19 -
style(game): slimmer input box (narrower, thinner stone frame, less padding)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>ce723d3 -
fix(game): center the player line (right-align collapsed it) + drop the scrim rectangle
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>756272b -
docs: update CLAUDE.md + AGENTS.md to the deployed state (voice subprocess, SSR off, LFS, 276 tests)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>a3e5c2d -
docs: plan to fix the player line, scrim rectangle, and oversized input box
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>527c283 -
fix(game): drop the user-line width clamp that collapsed YOU text to a vertical column
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>e6f0b95 -
style(game): anchored lower dialogue band, balanced voices, faded history
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>f6f6542 -
style(game): drawer counts + clearer tappable affordance
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>ad46c69 -
style(game): bump control icons bigger + more legible (Phase 1 tuning)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>9cdbd81 -
style(game): minimal top-right control cluster, de-emphasized restart
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>7676f37 -
docs: plan for game-view chrome polish (controls/drawers/dialogue), Space-verified
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>0508e33 -
fix(end): remove the finale marker on overlay dismiss (fixes leave-the-wood double-click + begin-again flash)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>2cea026 -
fix(ui): load Google Fonts via <head> <link> so they load on the Space (@import was rejected)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1ea9131 -
docs: plan for end-screen button bugs + font/layout parity
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>102bb71 -
fix(voice): keep worker protocol on a clean fd so Kokoro load noise can't corrupt READY
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>7358304 -
fix(voice): run Kokoro in a CUDA-free subprocess so it can't poison ZeroGPU
The CPU TTS initialized a CUDA context in the main process (even device=cpu), poisoning the @spaces.GPU worker fork. Isolate Kokoro in voice_worker.py with CUDA_VISIBLE_DEVICES='' and talk to it over stdio; the DSP stays in-process. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>b9a778b -
fix(intro): poll for #intro-text instead of a fixed delay (fixes blank intro on Space latency)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>392035e -
fix(voice): hide CUDA while Kokoro runs so the CPU voice doesn't poison ZeroGPU
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>6dceaca -
diag(voice): HOLLOW_VOICE_OFF kill-switch to test if voice poisons ZeroGPU CUDA
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>193deeb -
fix(deploy): force GRADIO_SSR_MODE=False so the Space renders client-side (fixes intro/layout + ZeroGPU)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>e57987e -
fix(deploy): disable SSR so the Space renders client-side like local (intro + layout)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>8b56768 -
fix(voice): force Kokoro onto CPU so TTS works on ZeroGPU (cuda/cpu device mismatch)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>f175617 -
fix(deploy): pin Gradio to 6.18.0 for Space/local parity (intro + layout)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>06b09c5 -
docs: add Space deploy parity plan (intro/layout/voice)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>2a41678 -
feat(intro): condensed tester teaching card so the short arc explains the loop
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>a39d3fb -
docs: add plans for tester pacing+telemetry and tester intro comprehension
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>22712d6 -
feat(dev): HOLLOW_DEBUG per-turn + ending telemetry (aff/tone/treasure/claimed)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>e711a9c -
feat(pacing): shorten the tester run (end_affinity 35, recall_cooldown 1, bad_min_turn 3)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>b8e5756 -
feat(finale): tie the bad-ending threat to the lore (Caor/the Gaunt, the given)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>cadf187 -
docs: add plans for end-screen layout B, silent convulse, bad-ending lore threat
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>4ec61de