[Bug]: Dead-key apostrophe inserts extra quotes in the composer
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 82/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- frontend
Research direction
Start at the composer editor's handleTextInput (the component is ComposerPromptEditorTiptap, apps/web), where any nonempty replacement range is currently treated as selected text to surround with delimiters. The fix is to distinguish a provisional dead-key replacement from real selected text — check whether the editor selection is empty before wrapping. Build on the focused jsdom test that mounts ComposerPromptEditorTiptap and replays the replacement, asserting s' then s'il in both plain and rich-text modes, and confirm existing composer tests still pass.
Written by the indexing model from the issue text.
Description
Area
apps/web, including the Linux desktop composer.
Steps to reproduce
- Use a keyboard layout where the apostrophe key is a dead key for accents.
- Type
sin the composer with the caret at the end and no selected text. - Press the single-quote key once, then Space to commit a literal apostrophe.
- Type
il.
Expected behavior
The composer contains s' after step 3 and s'il after step 4. Accented letters should continue to compose normally.
Actual behavior
The composer contains s'´' after step 3, then s'il' after step 4. Accented letters work normally; committing an apostrophe is the broken case.
Impact
Frequent incorrect text when writing French with a dead-key keyboard layout.
Version and environment
Linux x64 desktop, 0.0.46-nightly.20261007.2774, also present in main at 611132c171f3a821bd2e32f22261135cef6330ac.
Investigation
The composer's handleTextInput treats any nonempty replacement range as selected text to surround with delimiters. ProseMirror can report a replacement range covering a provisional dead-key accent while the current editor selection is empty. Surrounding that accent with ' produces exactly s'´', then selects the accent so subsequent typing leaves a trailing apostrophe.
A focused test mounting the actual controlled ComposerPromptEditorTiptap in jsdom reproduces s'´' in both plain and rich-text modes when replaying this replacement. This is a replay of the editor's text-input boundary, not a native Linux keyboard-event capture.
Existing issues and PRs were searched for a duplicate. This report is specifically about committing a literal apostrophe, rather than accent composition or Markdown grave accents.
- Dominant language
- TypeScript
- Stars
- 24.8k
- Forks
- 6.4k
- Avg merge
- 8h 34m
- Merged PRs (30d)
- 243
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from pingdotgg/t3code
-
bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
pingdotgg/t3code#16822 · 1 comment ·
Maintainers usually reply within 1 day
-
bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
pingdotgg/t3code#16821 · 1 comment ·
Maintainers usually reply within 1 day
-
bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
pingdotgg/t3code#16810 · 2 comments ·
Maintainers usually reply within 1 day
-
[Bug]: Antigravity turns fail on NixOS: embedded Python can't verify TLS (empty CA store) -> 502Openbug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
pingdotgg/t3code#16742 · 1 comment ·
Maintainers usually reply within 1 day
-
bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
pingdotgg/t3code#16737 · 1 comment ·
Maintainers usually reply within 1 day
All issues in pingdotgg/t3code
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
rajbos/ai-engineering-fluency#2340 · 1 comment ·
Maintainers usually reply within 1 day
-
community documentation first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 70/100
lingdojo/kana-dojo#31864 · 1 comment · 5 reactions ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
zenstackhq/zenstack#2873 ·
Maintainers usually reply within 1 day
-
CLI: TUI shows onboarding when the provider's API key is only in the environment (e.g. OPENROUTER_API_KEY)Possibly taken A pull request linked to this issue is open or already merged. OpenCLI
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
cline/cline#14923 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
paperclipai/paperclip#15490 ·
Maintainers usually reply within 1 day