You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Kitty Graphics Protocol
Full Kitty graphics support: Unicode placeholders, virtual placeholder rendering with pixel offsets, cursor movement, and all transport modes including Ghostty security restrictions.
Memory management for Kitty images: Added configurable memory limits (default 320MB, up to 4GB). When limits are reached, images are evicted in order: non-visible first, then oldest, then any remaining until quota is met.
Unicode & CJK Improvements
Unicode width specification compliance: Implemented the https://wcwidth.readthedocs.io/en/latest/specs.html for proper Unicode character measurement. Width now derives from UCD properties, EastAsianWidth ranges, and valid emoji variation sequences.
Fixed Emoji and CJK cursor drift: Resolved an issue where the cursor would gradually drift away from Japanese, Chinese, and Korean text. Glyphs are now positioned at exact terminal column positions rather than using CoreText's advance width.
Stability Fixes
Fixed crash in reverseIndex and cmdRestoreCursor (#256): Buffer.clear() now properly resets yBase to prevent out-of-bounds access when switching between normal and alternate buffers. Added defensive bounds checking and cursor position clamping.
Fixed macOS background color rendering: Corrected an issue where foreground colors were incorrectly applied as background colors (e.g., in ls --color output).
iOS Keyboard Input
Improved IME support: Fixed an issue where double-space would insert a period in the terminal (the iOS shortcut for typing a period). This behavior is now correctly intercepted.
Better CJK keyboard handling: Improved Chinese, Japanese, and Vietnamese input. Korean input includes special handling for composition edge cases.
API addition: MacLocalTerminalView.startProcess() now exposes the currentDirectory parameter.
Copy improvement: Added mode to skip null characters inserted for double-width characters during copy operations.
Internal
Test suite modernization: Migrated from XCTest to Swift Test. Fixed thread-safety issues in CharData for parallel test execution. Imported additional tests from Ghostty and xterm.js, including reflow tests.
API change: CharData tables are now owned by Terminal rather than being static, enabling thread-safe parallel terminal instances.