Repository navigation
v0.7.0
szn v0.7.0
35 commits since v0.6.0. 802 tests passing.
Headline: Status Bar, Pane Borders, and a 39-Bug Cleanup Sweep
v0.7.0 delivers the long-awaited tmux-compatible status bar with a rewritten
format engine, pane-border-format indicators, and a systematic 39-bug cleanup
covering everything from scroll history corruption to sixel eviction,
double-frees, and arena allocation discipline.
- Status Bar — Full tmux-compatible status bar driven by
status-left,
status-right,status-justify,window-status-format, and
window-status-current-formatoptions. Supportsstatus offto hide the
bar andstatus-intervalfor periodic clock updates. The format engine was
rewritten withTemplateCache(compile-once), stride-free deduplication,
#[style]sequences,strftime, and single-character aliases (#S,#I,
#W,#P,#H,#h,#F,#D,#T) matching tmux conventions. - Pane Border Format —
pane-border-format(default#Pfor pane index)
draws on the top border of each pane in vertical splits, and vertically
down the left border in horizontal (side-by-side) splits. Both horizontal
and vertical-border rendering are supported. - Systematic Bug Sweep (#210–#248) — 39 bugs found through deep code
audits, static analysis, and manual review. Every one is fixed. The bug
tracker now holds 248 entries, all with uniformStatus:metadata.
Changes
| Description | Severity / Type |
|---|---|
| tmux-compatible status bar (status-left/right, justify, window formats, interval) | Feature |
| Rewritten format engine (TemplateCache, strftime, #style, aliases) | Feature |
| pane-border-format option with horizontal + vertical border rendering | Feature |
| Fix host scrolling desync via DECAWM disable on alt screen (#210) | Bug Fix |
| Fix character width drift for standard symbols misclassified as emoji (#211) | Bug Fix |
| Fix status bar / pane-border-format rendering bugs (#212–#215) | Bug Fix |
| Fix Grid.scrollDown history ordering (#216) | Bug Fix |
| Fix reflowCursorInternal OOM recovery double-free (#217) | Bug Fix |
| Fix sixel registry eviction preferring unreferenced slots (#218) | Bug Fix |
| Fix sixel anchor drift across alt-screen switches (#219) | Bug Fix |
| Fix pane swap not resizing to new layout slot (#220) | Bug Fix |
| Fix daemon startup use-after-free on killed session (#221) | Bug Fix |
| Fix new pane not inheriting cell pixel size from parent (#222) | Bug Fix |
| Fix alt-screen cursor position drift on resize (#223) | Bug Fix |
| Reduce queryCellSize poll timeout from 200ms to 5ms (#224) | Bug Fix |
| Replace O(n²) sixel image ref scanning with O(1) refcounting (#225) | Optimization |
| Fix dangling pointer in renderStatusBar prompt (#226) | Bug Fix |
| Fix CPU infinite loop on 0-byte socket writes (#227) | Bug Fix |
| Add bounds checks to Packet serialize/deserialize (#228) | Bug Fix |
| Fix scroll down and reverse index history corruption (#229) | Bug Fix |
| Fix reflowCursorInternal double-free, leaks, history_start offset (#230) | Bug Fix |
| Fix Grid.clone history_start underflow panic (#231) | Bug Fix |
| Fix layout tree desync on window rotation and 0-pane state (#232) | Bug Fix |
| Enforce minimum pane dimensions for split geometry invariants (#233) | Bug Fix |
| Concatenate soft-wrapped lines in copy mode search (#234) | Bug Fix |
| Clear ghost characters on 2-col wrap, preserve combining marks (#235) | Bug Fix |
| Add SA_RESTART to signal handlers (#236) | Bug Fix |
| Free DispatchResult in prompt command evaluation (#237) | Bug Fix |
| Add errdefers and cleanup to config directive parsers (#238) | Bug Fix |
| Clean up allocated Pane on initialization error (#239) | Bug Fix |
| Skip Sixel matrix scanning when no sixels present (#240) | Optimization |
| Pre-calculate active_bound in drawLayoutBorders (#241) | Optimization |
| Use stack buffer in PTY getCwd (#242) | Optimization |
| Consolidate layout tree traversal into Layout.findPaneBounds (#243) | Refactor |
| Consolidate pane swap logic into swapPaneRelative helper (#244) | Refactor |
| Enforce arena allocation lifecycle per AGENTS.md (#245) | Compliance |
| Use inline for comptime CMD_TABLE lookup (#246) | Refactor |
| Re-analyze DECSM 1000/1002/1003 as intentional (#247) | Docs |
| Change pane-border-format default from #I (window) to #P (pane index) (#248) | Bug Fix |
| Reformat all 248 BUGS.md entries with uniform metadata | Docs |