v0.4.18
What's New
🖱️ Click-to-Position Cursor
Click anywhere in the shell input area to move the cursor to that position
(requires OSC 133 shell integration — zsh & fish ship this by default).
Arrow-key sequences are sent to the PTY to reposition the cursor; only input
cells count, wide-char spacer tails and prompt/output cells are skipped.
- Click past the end of input snaps to the end
- Cross-line clicking works correctly across soft-wrapped input
- Rejected when a command is running (
cursorIsAtPromptgate, matching Ghostty) - Rejected while browsing scrollback history or mid-scroll-animation
- Rejected when mouse reporting is active (vim/tmux) or on the alternate screen
🐛 Fixes
- Command-running guard: Clicking on a stale command line after pressing Enter
no longer floods the terminal with^[[Dgarbage. After OSC 133;C the cursor's
semantic state flips to output, and the guard rejects clicks until the shell
returns to a prompt. - Stack buffer overflow in the C shim: the cursor semantic content getter
wrote a 4-byte enum into a 1-byteuint8_t, corrupting the adjacent
cursor_visual_stylevariable. Fixed to use the correct sized type. - Blank window after height resize and stale split-divider hit-test region
- Removed outdated architecture plan files and stale doc references
🔧 Under the Hood
- Vendored Ghostty source patches (new
GHOSTTY_TERMINAL_DATA_CURSOR_SEMANTIC_CONTENT
enum) are now carried asVendor/ghostty.patchand applied by CI before the
Zig build — the submodule stays pinned to upstream, and the patch guarantees
reproducible builds. - 688 tests pass, architecture guard OK.