From 2e25476d0ac87b34693da84bc086061a9850d36d Mon Sep 17 00:00:00 2001 From: funman300 Date: Fri, 8 May 2026 17:19:46 -0700 Subject: [PATCH] feat(replay): continuous scrub on key-held arrow keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Holding ← or → now triggers continuous step at 100 ms cadence (10 steps/sec) — matches the mockup's `[← →] scrub` terminology while keeping single-press = single-step semantics. Implementation: per-key accumulators in a new `ReplayScrubKeyHold` resource. Each frame the key is held, the corresponding accumulator absorbs `time.delta_secs()`; when it exceeds `SCRUB_REPEAT_INTERVAL_SECS` (0.1s) the handler fires another step and resets the accumulator. `just_pressed` events bypass the accumulator entirely and fire immediately — release resets to 0 so the next fresh press also fires immediately rather than at half-interval. Symmetric handling for ← (backwards step via undo) and → (forward step). Both keys remain paused-only via the same destructure-gate pattern in the underlying step helpers. Footer text unchanged (`[← →] step`) — the only-wired-keybinds discipline says "list what works"; held-key continuous scrub is a discoverable enhancement to the same keybind, not a new keybind. `handle_arrow_keyboard` gains `Res