8 Commits

Author SHA1 Message Date
Georg 97f0b913be Cursor reflects game state over the 3D scene again
Two regressions made the cursor stop communicating game state:

- The canvas had a hardcoded `cursor: grab`, overriding the document-level process-state
  cursor everywhere over the 3D scene (always a hand). Removed it so the canvas inherits the
  state cursor; grab is now shown only transiently while right-drag-rotating the camera.

- normalizeProcessState pinned ready/waiting-generating to the playing (feather) cursor
  whenever playbackCoordinator.isPlaying was set, which lingered at choice prompts — so an
  open choice showed the feather instead of the input cursor. Now, when an input prompt is
  open AND no sentence is actively playing (timeline's webglBookPlaybackActive), the playback
  overlay is stripped (playing-ready->ready, playing-generating->waiting-generating) and the
  input/server cursor shows. Opening an input mode also refreshes the cursor immediately.

Verified live over the canvas: feather while a sentence plays, input arrow at a choice/idle,
and they switch correctly with playback state (no stuck feather, no constant grab).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 10:00:49 +02:00
Georg 751ac5f62b Stabilize playback state and cursor feedback 2026-05-18 20:57:20 +02:00
Georg 6e908037fb Preload media assets and refine process cursors 2026-05-18 11:15:39 +02:00
Georg d7bb175167 Checkpoint current UI and ink integration state 2026-05-18 02:46:02 +02:00
Georg f2e786d5bc Add ink integration UI and media playback 2026-05-15 21:23:46 +02:00
Georg 9a6bb009f2 Fixed Ducking. Refined UI. 2026-05-14 23:18:30 +02:00
Georg 873049f7e6 Checkpoint current interactive fiction state 2026-05-14 21:17:43 +02:00
Georg 0ab639fd25 Refactored modules and updated loader. 2025-04-06 18:35:04 +00:00