Skip to content

v1.8.0

Choose a tag to compare

@migueldeicaza migueldeicaza released this 10 Jan 19:48
· 187 commits to main since this release
e468331

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.

New Features

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.