Repository navigation
Stop typed letters from nudging the rest of the prompt - #11
Merged
Merged
Conversation
Each typed letter is its own span, so the font cannot kern or ligate across the boundary between typed text and the ghost text. Every keystroke moved that boundary and nudged later letters by up to 0.85px in Firefox. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Problem
Typing some letters in the prompt box nudged the rest of the text sideways by a fraction of a pixel. The text should never move while you type.
Each typed letter is its own span, and the untyped rest is one ghost span. Fonts kern letter pairs, but not across span boundaries. Every keystroke moves that boundary, so a kerning pair breaks or forms and the following letters shift.
Fix
The composer textbox sets
font-kerning: noneandfont-variant-ligatures: none. Letter widths no longer depend on where the span boundary is.Proof
I measured the rect of every character after each keystroke in Playwright Firefox, with correct keys only, five runs per variant:
Headless Chromium on Linux showed no shift before or after, so it can't reproduce the bug. I could not test Safari or a Mac. The shift is too small for a screenshot, so there's no visual.
New check in
tests/play.mjsasserts the computed styles.npm run lint,npm run typecheck, andnpm test(vitest plus the Playwright run) pass.Reviewed with sol-loop: 1 round with gpt-6.1-sol. Sol verdict: approved
Created with Claude Opus 5.5 in Claude Code (T3 Code).
🤖 Generated with Claude Code