maniator / maniator/verticopolis

[Bug]: [P3] Game input stays live on a dead renderer during in-place recovery

Open
#321 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
TypeScript
Stars
5
Forks
1
PR merge metrics
No merged PRs in 30d

Description

Imported from the engineering backlog (_bmad-output/implementation-artifacts/backlog.md, story context-loss-recovery).
Priority P3 (do-first order) | Severity: low | Status: open | Epic: stability | Type: review-deferral | Recorded: 2026-07-13

What happened?

Game input stays live on a dead renderer during the in-place recovery wait (gds-code-review, Edge Case Hunter). Between a context loss and the restore (up to ~8s of visible time, longer while backgrounded) the canvas is frozen but keyboard shortcuts, the palette, Load/New/Import and the speed buttons all still work, so a player can mutate the sim blind. The crash-screen path mutes game keys via CRASH_SCREEN_ID; the recovery wait has no equivalent guard. Mitigations already shipped: the "Recovering..." toast, gesture-state reset in rebuildEngine, and the tower-swap guard on the success bulletin. If revisited, add a lightweight input gate (like the crash screen's key mute) for the wait window.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the in-place recovery wait and compare its input handling with the crash-screen path using CRASH_SCREEN_ID. Review rebuildEngine and the existing recovery guards; done means keyboard shortcuts, the palette, Load/New/Import, and speed buttons remain inactive until the renderer is restored.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend, game-dev
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.