Skip to content

v0.6.0

Choose a tag to compare

@cwt cwt released this 20 Jul 03:44
· 453 commits to main since this release

szn v0.6.0

20 commits since v0.5.1.


Headline: Copy-Mode Search, Non-Blocking Display Sockets, and Heavy Rendering Optimizations

This feature release introduces massive improvements to copy-mode capabilities, terminal output responsiveness under load, emoji/character width safety, and extensive rendering performance optimizations:

  • Copy-Mode Search — Fully integrated and highly optimized backward/forward search in copy-mode. Supports prompt prefix indicators (/ and ?), cyclic wrapping, correct cursor placement for 2-width characters, and matching combining marks / Thai (non-ASCII) inputs.
  • Non-Blocking Display Sockets — Switched display-client sockets to non-blocking to prevent event loop freezes when flooding output over slow links. Correctly shifts remaining unwritten buffer bytes to the front on EAGAIN and handles backlogs without skipping frames.
  • Unicode 15/16 Emoji & Width Overrides — Added a modern Unicode East-Asian-Width + emoji-presentation table to eliminate cursor drift for modern checkmarks, stars, and arrows. Added a customizable codepoint-widths session option to allow operators to specify custom width overrides.
  • Heavy Rendering & Memory Optimizations — Integrated arena allocation across server/client boundaries, ring-buffer history, bounds buffer caching, single-buffer yank, delta SGR sequence emission, and flat cells pre-allocation to maximize rendering throughput.
  • Command-line Version Check — Added the -V command-line option to extract the project version from build.zig.zon and print it.

Changes

Description Severity / Type
Copy-mode search (wiring keys, cyclic wrap, prompt prefix, 2-width char cursor) Feature
Support Thai (non-ASCII) input and match combining marks in copy-mode search Feature
Switched display-client sockets to non-blocking output buffering to prevent freeze High
Resolve partial write buffer truncation & event loop spin on display client flush (bug #207) High
Resolve skipped render frames on successful display backlog flush (bug #208) High
Unicode 15/16 emoji/character width correctness and codepoint-widths option (bug #206) High
Support version printing using standard -V option Feature
Re-wrap optimizations, esc_buf field, and osc_buf retain Optimization
Ring-buffer history, sixel pre-check, bounds buffer caching, and single-buffer yank Optimization
Skip clear and non-dirty panes in incremental merged grid rendering Optimization
Delta SGR escape sequence emission (reduced bandwidth overhead) Optimization
Remove event-loop blocking usleep(2000) during sixel cell-size wait Optimization
Pre-allocate flat_cells and logical_spans in reflowCursorInternal Optimization
Fix color loss on attribute-only SGR change Bug Fix