╭ changed ──────────╮ │src/embed/script.js│ ╰───────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────╮ │← previous│ ╰──────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────╮ │406 if (!t || !t.dataset || !t.dataset.focusId) return; │ │407 // sync the wasm focus to wherever the browser moved focus │ │408 wasmInstance.exports._setFocus(Number(t.dataset.focusId)); │ │345 - // a click's mousedown fires this focusin before the click event. ticking │ │346 - // here would rebuild #grid and destroy the node before its click lands, │ │347 - // swallowing the navigation and forcing a second click — so don't │ │348 - // re-render for a grid element. a file input is also skipped because a │ │349 - // changed overlay would replace it between mousedown and click, before │ │350 - // the browser opens its picker. │ │351 - if (!grid.contains(t) && !(t.tagName === "INPUT" && t.type === "file")) { │ │352 - wasmInstance.exports._tick(minRows(), maxCols()); │ │353 - } │ │409 + // keyed controls survive a redraw before click. cell links live in the │ │410 + // replaceable backdrop, so their click handler redraws after activation. │ │411 + if (nodeKey(t)?.startsWith("control:")) wasmInstance.exports._tick(minRows(), maxCols());│ │412 }); │ │413 │ │414 grid.addEventListener("click", (event) => { │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯