[1.2.4] - 2026-03-04
Added
-
履歴ウィンドウで Del キーによる削除: コマンド履歴セレクター(Ctrl+R)で
選択中のエントリを Del キーで削除できるようになった。削除後はリストが即座に
更新され、カーソル位置は維持される(最終行を削除した場合は一つ上に移動)。
削除はファイルにも即座に反映される。 -
ヒントバー表示を更新:
Enter:Run Del:Delete S-Enter:&& Esc:Close -
Shell integration (OSC 133 / OSC 633) for accurate command history:
- VT parser now recognises OSC 133 and OSC 633 (VS Code extension) markers
emitted by PowerShell, bash, zsh, fish, oh-my-posh, and Starship. - Marker B records the exact cursor column where user input begins, making
history capture independent of prompt appearance (no morestrip_prompt
regex for modern shells). - Marker C captures the confirmed command text at the moment Enter is pressed.
- Marker D records the exit code of the last command.
ShellIntegrationstruct added toTerminalState.
- VT parser now recognises OSC 133 and OSC 633 (VS Code extension) markers
-
Keystroke tracker (
KeystrokeTracker) as a fallback forcmd.exe:- Intercepts every printable key before forwarding to the PTY.
- Handles Backspace, Ctrl+W (delete word), Ctrl+U / Ctrl+C (clear line).
- Active only when no OSC markers have been seen for the current pane.
-
Tiered
get_current_line()inWindowManager:- Priority 1: OSC confirmed command (marker C).
- Priority 2: OSC prompt-end position (marker B) + screen buffer slice.
- Priority 3: Keystroke tracker buffer.
- Priority 4: Legacy
strip_promptheuristic (last resort).
-
README: new Shell Integration section with setup instructions for
PowerShell, bash/zsh (WSL), oh-my-posh, and cmd.exe fallback. -
Font configuration (
[font]section inconfig.toml):family— font family name (e.g."Cascadia Code","JetBrains Mono").
Leave empty to inherit the host terminal's current font.size— font size in points (0= inherit from host terminal).bold— force bold rendering for all text (default:false).ligatures— enable ligatures for supported fonts (default:true).- Settings are applied at startup via OSC 50 escape sequences where the
host terminal supports them (silently ignored otherwise). config.example.tomlupdated with the new[font]section and examples.
Performance
- Dirty-line rendering:
WmRenderernow skips rows that have not changed
since the last frame. Only rows marked dirty by the VT parser are redrawn,
cutting render work to near-zero for idle panes (e.g. a vim split next to a
running build log). - Per-pane output tracking: panes that produced no new output since the
last render pass are skipped entirely, not just their unchanged rows. - Batched SGR escape sequences:
apply_attrsandapply_attrs_with_selection
now emit a single\x1b[...msequence per attribute group instead of one
execute!()call per attribute. Reduces write call overhead by 5–10x per
styled cell group. - Resize debounce (30 ms): rapid terminal-resize events (fired every pixel
during drag on Windows) are coalesced into a single resize + redraw after
the window settles, eliminating flicker and redundant PTY resizes. clear_all_dirty()after render: dirty-line sets are now cleared after
every render pass so subsequent frames start with a clean slate.