2f6f2c68

By: Michael Lynch <git@mtlynch.io>

Fix flaky chat e2e tests by holding the "c" key like other tests

`keyboard.press("c")` fires keydown and keyup back-to-back (~0.5ms
apart), faster than an animation frame. Phaser's KeyboardManager
queues both native events and processes them together once per
frame; Key.onUp() unconditionally clears `_justDown`, so a same-frame
down+up cancels itself out before Scene.update() ever reads
JustDown(). The result: chat.open() silently never runs, and
`#chat-log` never gets the `chat-history-open` class.

This reproduced consistently (confirmed with `nix build --keep-failed`
trace/error-context output and by instrumenting the DOM keydown/keyup
events and Phaser's key state directly), not just under nix sandbox
load: "chat history is available to later joiners when they open
chat" failed 100% of standalone re-runs before this fix and passed
100% after.

Three tests used the fragile `press("c")` pattern. The rest of the
suite already worked around this exact race with an explicit
`keyboard.down("c")` / `waitForTimeout(50)` / `keyboard.up("c")`
sequence that guarantees an animation frame lands between the two
events. Apply that same pattern to the remaining three call sites.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 2s 4s 7s 10s 8s
Eval - - - - -
Build - - - - -
Suite 2s 4s 7s 10s 8s

Timeline

0s10s