Repository navigation
v0.6.0
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
EAGAINand 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-widthssession 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
-Vcommand-line option to extract the project version frombuild.zig.zonand 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 |