fix(renderer-vecto): split panes re-layout on box change + Vim floor click mapping#8
Merged
Conversation
VemEditorEntity's keydown handler already fed every non-composing key to handleKey() unconditionally, but only called preventDefault() for a whitelist of navigation/control keys — letters, digits, punctuation, Enter, and Delete were left unprevented. That let the keystroke also reach the focused a11y shadow <textarea> natively, mutating its .value and firing the 'change' handler added for IME support, redelivering the same character a second time once the mode had already flipped to INSERT. Repeated/held 'a' compounded on every press for the same reason. preventDefault() now covers every single printable character plus Enter/Delete, so the shadow textarea's 'change' event is reserved for genuine IME composition commits only. Co-Authored-By: Claude Sonnet 5 <[email protected]>
…lick mapping Two interaction-audit findings (vem-docs reports/2026-07-16-interaction-audit.md): - WorkspaceLayout.update() wrote layoutRoot width/height bare; a PanelGroup never redistributes on bare writes, so :vsp/:sp panes kept stale sizes and overflowed off-screen when the Explorer/PluginLab opened or the window resized. It now calls PanelGroup.resize() when the box actually changed. - cellAt used Math.round for the x->column mapping, sending clicks on a character's right half one cell right. Vim mouse=a puts the cursor on the cell containing the pointer: floor, clamped at 0. Co-Authored-By: Claude Fable 5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the two vem-side renderer bugs from the 2026-07-16 interaction audit (
vem-docs/reports/2026-07-16-interaction-audit.md)::vsp/:sp:WorkspaceLayout.update()wrotelayoutRoot.width/heightbare, and aPanelGroupdoes not redistribute on bare writes — opening the Explorer/PluginLab or resizing the window left panes at stale sizes overflowing off-screen (devtools audit: "EditorPane escapes Panel by right 549px"). Now callsPanelGroup.resize()when the box actually changed; leaf panes keep the cheap direct write.Math.round; Vim mouse=a puts the cursor on the cell containing the pointer. NowMath.floor, clamped at 0 (left-padding clicks).Tests: new WorkspaceLayout redistribute case + two click-mapping cases (all failed before the fix); one legacy pointer test updated — its coordinate sat inside cell 3 and only mapped to 4 through the old rounding. Full suite: 181 pass.
oxlint --deny-warningsand repo prettier clean.Changeset:
@vemjs/renderer-vectopatch (bundles with the pending keydown-double-input changeset).🤖 Generated with Claude Code