fix(windows): caret, wide-char drift, pane sizing, and resize recovery#42
Merged
Conversation
Pulls in renderer/cursor patches plus matched ultraviolet, x/ansi, colorprofile, and go-runewidth updates. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Windows ConPTY drops resize events fired before the child reads console input (claude/node mid-boot) and never replays them, leaving the child at the spawn-time 80x24. Two fixes: - resizeKick: re-apply the pane size with a 1-column jiggle on the pane's first output, when the child's console is provably wired up. - Persist cols/rows in workspace.json and respawn restored panes via NewWithSize so they start at the real dimensions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Draw the reverse-video caret for every pane type (claude-code, opencode, ...) instead of the Bubble Tea hardware cursor. Per-frame repositioning of the real cursor desynced the diff writer on Windows and dropped the first typed character a column to the right. - Skip Width==0 wide-char continuation cells in the cell renderers so emoji/CJK glyphs no longer drift following columns one cell right. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- redraw keybinding (default alt+shift+l): ClearScreen + re-query size, a recovery hatch for cell-diff drift and missed WindowSizeMsg. - 1s size poll plus a legacy-conhost grid fixup (CONOUT$ active buffer): conhost shrinks its screen buffer with the window but never grows it back on maximize, leaving the grid stuck small. Grow-only, no-op in Windows Terminal. - Settle repaints after a pane's first live output to clear boot-frame artifacts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Splits moved to Alt+Shift+H/V so Alt+V stays free for Claude Code's image paste; the install HowTo step still showed the old Alt+V. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ering # Conflicts: # docs/configuration.md # internal/config/config.go # internal/daemon/daemon.go # internal/tui/dialog.go # internal/tui/pane.go
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.
Windows-focused TUI rendering and ConPTY robustness fixes surfaced while running quil in legacy conhost.
Fixes
Width==0continuation cells of emoji/CJK glyphs no longer emit a phantom space that pushed following columns one cell right.resizeKickre-applies the size with a 1-column jiggle on firstoutput, and pane
cols/rowsare persisted so restored panes respawn at the real size.redrawkeybinding (defaultAlt+Shift+L: ClearScreen + re-query size) and a 1s size poll with a legacy-conhost grid fixup (CONOUT$active screen buffer; grow-only; no-op in Windows Terminal). Recovers from conhost never growing its screen buffer on maximize.Docs / site
docs/keybindings.md,docs/configuration.md,.claude/CLAUDE.mdupdated.site/src/pages/install.astro: corrected vertical-split key toAlt+Shift+V(onlysite/**change → triggers Pages redeploy).Known non-fix (documented, not a quil bug)
The "Test" → "T est" space after the first typed char in claude panes was traced byte-for-byte to claude-code v2.1.168's incremental keystroke renderer — reproducible on released v1.15.1, absent when running
claudedirectly in Windows Terminal (quil sends identical bytes). Recommended: run quil in Windows Terminal.Testing
go test ./...green;go vet ./...clean on Linux.