# What changed in @earendil-works/pi-tui

> 214 changes in @earendil-works/pi-tui 0.74 to 1 from its official release notes, upgrade guides and advisories: 19 breaking, 4 security, 52 new APIs and options. Each one cited. Sources checked 2026-11-11. HTML: https://unstale.sh/npm/@earendil-works/pi-tui/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @earendil-works/pi-tui 1

### Breaking changes

- Display math wider than the content width now falls back to raw LaTeX instead of wrapping row by row and splitting fractions and sums. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Editor.render() wraps the drawn cursor in zero-width APC markers instead of emitting \x1b[7m directly; code rendering it outside a TUI must strip the markers. (1.2.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#120---2026-10-12)
- Unhandled wheel events now scroll the transcript instead of reaching a focused overlay's handleInput as raw input; overlays that scroll with the wheel must implement handleMouse. (1.2.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#120---2026-10-12)
- Input.render() wraps the drawn cursor in zero-width APC markers instead of emitting \x1b[7m directly; code rendering it outside a TUI must strip the markers. (1.2.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#120---2026-10-12)
- parseKey() now returns the produced symbol for shifted keys, so bindings such as + or ctrl++ match Kitty keyboard protocol and modifyOtherKeys reports; physical shift+= spelling still matches. (1.2.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#120---2026-10-12)
- When enabled, showHardwareCursor shows only the terminal cursor; focused Editor and Input components no longer draw a reverse-video cursor. (1.2.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#120---2026-10-12)
- Terminal implementations must provide setProgramStatus(status); terminals without OSC 7501 support can implement it as a no-op. (1.1.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#110---2026-10-07)
- Ctrl+Home and Ctrl+End now move the fullscreen transcript to the top or bottom and no longer move the editor cursor. (1.0.3) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#103---2026-10-05)
- Home and End now always move the editor cursor to the line start or end. (1.0.3) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#103---2026-10-05)

### New APIs and options

- A focused component that sets this property receives viewport keys instead of letting TuiAltScreen scroll the transcript. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Adds a function to compute the selection after a tui.select.pageUp or tui.select.pageDown key. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Adds a function that replaces runs of C0 and C1 control characters with a space. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Components can wrap a drawn cursor with renderFakeCursor(); the TUI renders it in reverse video or omits it after CURSOR_MARKER when showHardwareCursor is enabled. (1.2.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#120---2026-10-12)
- Added Box.setPaddingX(...). (1.1.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#110---2026-10-07)
- Added formatProgramStatus() for the Program Status Protocol (OSC 7501). (1.1.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#110---2026-10-07)
- Set PI_PROGRAM_STATUS=1|0 to override terminal support detection for Program Status Protocol reports. (1.1.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#110---2026-10-07)
- Added Text.setPaddingX(...). (1.1.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#110---2026-10-07)
- Drops the text selection and multi-click state, for example before a host replaces the transcript. (1.1.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#110---2026-10-07)
- Registers an image transcoder so Image can convert JPEG, GIF, and WebP images to PNG for the Kitty graphics protocol. (1.0.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#101---2026-10-03)
- TuiAltScreen.getScreenLines() returns the lines of the last rendered frame. (1.0.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#100---2026-10-01)

### Performance

- Markdown reuses top-level blocks from its last render, allowing streaming updates to render only the changed last block and resizes to reuse highlighted code; theme changes must call invalidate(). (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Reduced memory retained per rendered message; a long assistant message keeps about a fifth of the heap it kept before. (1.0.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#100---2026-10-01)

### Behavior and default changes

- Detects the Rex terminal and enables OSC 8 hyperlinks, truecolor, and Kitty images. (1.4.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#140---2026-10-21)

### Fixes and other changes

- Alacritty hyperlink detection also uses `TERM` and `ALACRITTY_WINDOW_ID`, enabling hyperlinks when `TERM_PROGRAM` is unset. (1.5.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#151---2026-11-09)
- Markdown rendering no longer displays HTML comments as visible text. (1.5.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#151---2026-11-09)
- Internal cursor markers no longer leak into terminal output, including with multiple markers or horizontally clipped content. (1.5.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#151---2026-11-09)
- Deleting a paste marker with Backspace no longer corrupts later short markers or causes marker text to be submitted instead of pasted content. (1.5.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#151---2026-11-09)
- Kitty images are drawn after clearing and writing their covered rows on every terminal, fixing fullscreen images in Orca that showed only their first row. (1.5.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#151---2026-11-09)
- Bare Markdown URLs no longer swallow following CJK punctuation and text; explicit Markdown links and angle autolinks are unchanged. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Word characters now match iTerm2 defaults, preventing paths and tokens from splitting at ~, ., \, and +. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Ranking now scores contiguous query occurrences and keeps the best alignment, fixing scattered earlier matches ranking above later contiguous matches. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Images inside padded or colored boxes are cropped correctly when partially visible after scrolling above the fullscreen viewport, including beside other text. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- F1–F12 shortcuts, including modified function keys, are recognized, and F13+ and other functional keys no longer insert invisible private-use characters into the editor. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Deeply nested blockquotes no longer produce exponentially many lines or hang or crash rendering when borders exhaust the available width. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Orca is recognized as supporting true color and hyperlinks, and Kitty images when it advertises ORCA_IMAGE_PROTOCOL=kitty. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Control characters in a title no longer end the title sequence and send the remaining text to the terminal as escape sequences. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- On Apple Terminal and native Windows, ESC + Return with Shift held is treated as Shift+Enter; without Shift it remains Alt+Enter. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Setting unchanged text no longer drops wrapped lines and causes renderers to wrap the same text again. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Regular mode no longer writes OSC 133 prompt markers from rendered lines to the terminal, preventing the working indicator from disappearing during runs. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- PageUp and PageDown selection keys are now handled by SelectList, SettingsList, and editor autocomplete. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- Wrapping no longer starts the next line with a space when a styled word ends at the wrap width, and strikethrough no longer continues into right padding. (1.5.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#150---2026-11-02)
- File autocomplete now returns results for queries containing regex metacharacters such as `[` or `(`. (1.4.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#140---2026-10-21)
- An unclosed display-math block no longer swallows or corrupts following Markdown tables, including during streaming. (1.4.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#140---2026-10-21)
- Bold and italic formatting now renders next to CJK punctuation. (1.4.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#140---2026-10-21)
- Terminal modes are restored synchronously on process exit, even if the process exits without calling stop(). (1.4.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#140---2026-10-21)
- Overlay compositing no longer drops CURSOR_MARKER when an overlay ends directly left of the cursor, preserving the hardware cursor position. (1.2.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#120---2026-10-12)
- Herdr now uses the Kitty graphics protocol, fixing inline images that had not rendered since 1.1.0. (1.2.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#120---2026-10-12)
- Fragmented terminal color replies no longer leak hex values into the prompt or trigger the external editor via their BEL terminator. (1.2.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#120---2026-10-12)
- TERM_PROGRAM=herdr is now detected as supporting OSC 8 hyperlinks, making Markdown links clickable in Herdr. (1.1.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#110---2026-10-07)
- Fixed fullscreen Kitty images collapsing to a one-row strip after scrolling in WezTerm. (1.0.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#101---2026-10-03)
- Non-PNG images now show their text fallback on Kitty-protocol terminals when no transcoder is registered or conversion fails. (1.0.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#101---2026-10-03)
- Fixed color bleeding past mouse selections and search highlights in fullscreen mode when a styled token ends at the highlight boundary. (1.0.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#100---2026-10-01)
- Fixed autocompletion not triggering when the input starts with whitespace. (1.0.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#100---2026-10-01)

## @earendil-works/pi-tui 0.99

### Breaking changes

- Removed. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Replaces the separate terminal color queries with one round trip for the default foreground, background, and 16 ANSI colors, returning TerminalColors. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Removed in favor of TUI.queryTerminalColors(). (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)

### New APIs and options

- Adds a color type supporting indexed ANSI, sRGB, or OKLCH values. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Added as a helper for color values and styling. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Added as a helper for color values and styling. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Added as a helper for color values and styling. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Added as a helper for color values and styling. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Added as a helper for color values and styling. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Added as a helper for color values and styling. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Added as a helper for color values and styling. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Reads file URLs from the macOS clipboard. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Added as a helper for color values and styling. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Added as a helper for color values and styling. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Parses #rgb, #rrggbb, oklch(), and okhsl() color values. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Added as a helper for color values and styling. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Added as a helper for color values and styling. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Allows wheel scroll lines to be updated at runtime. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- The wheelScrollLines option now accepts "auto", which accelerates fast wheel spins on terminals that send one event per notch. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)

### Performance

- Improved rendering performance: visibleWidth() avoids grapheme segmentation for ANSI-styled ASCII, Box avoids re-padding cached lines, and Markdown reuses parsed tokens across theme and width changes. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)

### Behavior and default changes

- Terminals with TERM values matching *-direct are now detected as truecolor. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)

### Fixes and other changes

- Keyboard input is no longer lost when a component that forwarded a mouse event to a child removes that child. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Reduced image stretching in terminals that use the Kitty graphics protocol. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Autocomplete now works after opening wrappers such as (, [, {, <, or a backtick. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- The shell cursor no longer stays hidden after exit when an extension closes an overlay during shutdown. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)
- Autocomplete no longer appears empty when loaded skill names do not contain the letters in skill. (0.99.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0990---2026-09-29)

## @earendil-works/pi-tui 0.86

### New APIs and options

- Adds bundled asynchronous native clipboard readers for macOS, Windows, and X11, replacing the external native clipboard dependency in consumers. (0.86.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0860---2026-09-19)

### Performance

- Reduces latency for long texts by using native substring search instead of scanning each character in JavaScript. (0.86.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0860---2026-09-19)

### Fixes and other changes

- Vertically lays out unsupported and nested display scripts. (0.86.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0860---2026-09-19)
- Fixes autocomplete boundaries and path quoting around CJK punctuation. (0.86.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0860---2026-09-19)
- Shows actionable backend error messages instead of a generic notice and extends failure notices to five seconds. (0.86.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0860---2026-09-19)
- Prevents later row clears in WezTerm from erasing fullscreen Kitty images. (0.86.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0860---2026-09-19)
- Centers cases layouts around surrounding equations. (0.86.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0860---2026-09-19)
- Fixes legacy font switches falling back to raw source. (0.86.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0860---2026-09-19)
- Ranks the bare skill name instead of the skill: prefix. (0.86.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0860---2026-09-19)

## @earendil-works/pi-tui 0.85

### Breaking changes

- Applications must configure the hardware cursor through the renderer constructor instead of relying on coding-agent environment-variable defaults. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)
- Without a supplied log directory, redraw logging is disabled and crash dumps are written to the OS temp directory. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)
- Debug and crash log filenames now use the `pi-tui-` prefix. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)
- The redraw debug environment variable is now `PI_TUI_DEBUG_REDRAW` instead of `PI_DEBUG_REDRAW`. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)
- Applications must configure clear-on-shrink behavior through `setClearOnShrink()` instead of relying on coding-agent environment-variable defaults. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)

### New APIs and options

- LaTeX rendering now supports relational algebra join symbols. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)
- Adds a `TuiAltScreen` option that renders a clickable jump-to-end label on a follow-end primary scroll view while it is scrolled away from the end. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)

### Performance

- Search latency on large transcripts was reduced by caching unchanged results, indexing ASCII runs, and limiting highlight work to visible matches. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)

### Behavior and default changes

- Mouse wheel scrolling while holding Alt in fullscreen mode is five times faster. (0.85.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0851---2026-09-05)
- The animation and editor integration changed to support embedded working indicators. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)

### Fixes and other changes

- Mouse hover no longer changes selection or recenters autocomplete and settings lists, preventing clicks from targeting a different item. (0.85.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0851---2026-09-05)
- Fixed drag selection continuing over an editor. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)
- Fixed terminal startup under restricted seccomp policies that reject the `SIGWINCH` self-signal. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)
- Fixed terminal image capability detection for Zed. (0.85.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0850---2026-09-04)

## @earendil-works/pi-tui 0.84

### New APIs and options

- Adds helpers to detect and copy the active fullscreen text selection programmatically. (0.84.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0844---2026-08-28)
- Environment and programmatic overrides are available for OSC 8 hyperlinks, inline image protocols, and truecolor terminal capabilities. (0.84.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0844---2026-08-28)
- Adds a copyOnSelect option for fullscreen text selection. (0.84.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0844---2026-08-28)
- Added fullscreen TUI search with configurable match styles and next/previous navigation using the specified keybindings. (0.84.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0842---2026-08-14)
- Added a timeout setting for high-latency terminals, limited to lone Escape input; also fixed split Alt+Enter input over SSH being misread as Escape. (0.84.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0842---2026-08-14)
- Added an unbound single-line transcript scrolling action for fullscreen TUI keybindings. (0.84.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0842---2026-08-14)
- Added an optional right-click paste handler to the alternate-screen TUI, currently enabled on Windows. (0.84.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0841---2026-08-07)
- Added an unbound half-page transcript scrolling action for fullscreen TUI keybindings. (0.84.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0841---2026-08-07)
- Alternate-screen layouts now include VStack, HStack, and nested ScrollView with constrained sizing, sticky regions, and pointer-targeted scrolling. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Alternate-screen scrollbars support proportional display, mouse dragging, Home/End navigation, transient auto mode, and always mode that reserves a column; modes can change at runtime. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Interface-compatible main-screen and alternate-screen TUI renderers now support application-owned scrolling. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Markdown now renders terminal-friendly Unicode for inline and display LaTeX, including fractions, scripts, symbols, aligned equations, cases, and matrices. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- The Markdown component now supports width-aware source transforms. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- The bundled Markdown parser and its token types are now exported for use by applications. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Previous and next prompt history actions can be configured independently of vertical cursor movement. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Lifecycle and render-state handoff APIs let developers replace renderers without replaying main-screen content. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- A shared TUI mode type and mode discriminants are available for the main-screen and alternate-screen renderers. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)

### Performance

- Reduced alternate-screen per-frame allocation churn roughly 9–18x by painting full-width layout rows as direct line references. (0.84.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0842---2026-08-14)

### Behavior and default changes

- Scrollbars use muted thin tracks and proportional thumbs, preserve underlying backgrounds, reserve an unstyled column in always mode, reveal auto tracks on pointer entry, expand thumbs on hover, and support track-click jumping. (0.84.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0844---2026-08-28)
- Search uses a bordered placeholder-based input, muted result count, right-aligned clickable key-and-arrow buttons with configurable hover styling, and open-shortcut toggling. (0.84.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0844---2026-08-28)
- Added double-click word and whitespace selection, granularity-aware drag selection, and triple-click paragraph selection. (0.84.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0841---2026-08-07)
- Drag selection now auto-scrolls at the edges when extending across off-screen scroll-view content. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- The default wheel step is reduced from three lines to one for finer scrolling. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- The alternate-screen renderer now supports stacked transient notifications. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- The alternate-screen viewport now supports page scrolling and OSC 133 semantic prompt navigation. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)

### Fixes and other changes

- Fixes ordering for nested autocomplete results. (0.84.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0844---2026-08-28)
- Fixes word selection splitting paths and kebab-case tokens on `/` and `-`. (0.84.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0844---2026-08-28)
- Fixes crashes when image-heavy output exceeds V8's string length limit. (0.84.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0844---2026-08-28)
- Fixed duplicate fullscreen right-click paste in VS Code-based terminals on Windows. (0.84.3) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0843---2026-08-24)
- Fixed padded text exceeding narrow terminal widths. (0.84.3) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0843---2026-08-24)
- Fixed wrapped Markdown table links leaking color into borders and neighboring cells, including tables inside blockquotes. (0.84.3) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0843---2026-08-24)
- Fixed focused overlays not receiving mouse wheel or viewport scroll keys such as PageUp and PageDown. (0.84.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0842---2026-08-14)
- Fixed mouse drag selection and OSC 8 link activation in terminals reporting generic SGR mouse release button codes. (0.84.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0842---2026-08-14)
- Fixed idle fullscreen sessions repainting and clearing text selection when the terminal loses focus. (0.84.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0842---2026-08-14)
- Fixed false success reporting when OSC 52 is unsupported by allowing host clipboard integration and reporting verified failures. (0.84.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0842---2026-08-14)
- Fixed manual scrolling snapping search back to the current match and fragmented SGR mouse input leaking into the query. (0.84.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0842---2026-08-14)
- Fixed control spaces split across line endings causing complete expressions to fall back to raw source. (0.84.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0842---2026-08-14)
- Fixed required LaTeX arguments starting on a new line being parsed as empty. (0.84.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0842---2026-08-14)
- Reduced fullscreen mouse event volume under tmux, Zellij, and GNU Screen by using button-motion tracking instead of all-motion tracking. (0.84.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0841---2026-08-07)
- Fixed spacing for LaTeX relations, multiplication, and named operators, and composition of matrices with stacked fractions, operator limits, and adjacent matrices. (0.84.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0841---2026-08-07)
- Kitty images no longer cross vertical layout clip boundaries or overlap sticky regions while scrolling. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Redraw fixes prevent redundant Kitty image data, dropped adjacent rows, duplicate fixed-basis scroll content, and scans of clipped transcript rows. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Unmatched mouse events when terminal pane focus changes no longer create phantom text selections. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- The npm package now includes the source and build script needed to rebuild the Darwin native addon. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Ctrl-modified editor bindings provide Home, End, PageUp, and PageDown variants when fullscreen transcript navigation would otherwise leave them inaccessible. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Terminal width accounting now handles Indic conjunct grapheme clusters correctly. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Image payloads now include size metadata required by the xterm.js image addon. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Keyboard input can preempt the throttled render timer, reducing rendering latency on Windows. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Nested stack layouts now respect child minimum sizes. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Width truncation now terminates OSC 8 hyperlinks correctly. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Spaces in queries now filter multi-word labels instead of changing the selected value. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Batched terminal color-scheme reports are no longer parsed as one malformed response. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Clearing terminal progress now emits the complete OSC 9;4 sequence. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Truecolor detection now works when Windows Terminal does not provide WT_SESSION to child shells. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- The npm package now includes the source and build script needed to rebuild the Windows native addon. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)
- Shift+Enter detection on Windows now reports modifier key state correctly. (0.84.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0840---2026-08-06)

## @earendil-works/pi-tui 0.83

### Fixes and other changes

- Absolute paths are clickable when terminal hyperlinks are available. (0.83.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0830---2026-07-29)
- Long image fallback paths no longer overflow narrow terminals, and home-directory paths are shortened. (0.83.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0830---2026-07-29)

## @earendil-works/pi-tui 0.82

### Fixes and other changes

- Narrow terminals no longer crash when the editor's bottom scroll indicator exceeds the terminal width. (0.82.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0820---2026-07-24)
- Debug and crash logs now use the configured TUI log directory, including PI_CODING_AGENT_DIR, instead of always writing under ~/.pi/agent. (0.82.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0820---2026-07-24)

## @earendil-works/pi-tui 0.81

### Fixes and other changes

- Text wrapping now recognizes CRLF and CR line endings while preserving styles across lines. (0.81.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0810---2026-07-21)
- Undo restores the paste registry together with the text, and marker renumbering shifts registry entries in ascending id order, preventing submitted prompts from containing literal markers or the wrong paste's content. (0.81.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0810---2026-07-21)
- Shutdown now clears the editor's inverted software cursor before restoring the hardware cursor, avoiding a duplicate cursor artifact. (0.81.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0810---2026-07-21)

## @earendil-works/pi-tui 0.80

### New APIs and options

- An opt-in Markdown renderer option preserves source backslash escapes for transcript rendering. (0.80.3) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0803---2026-06-30)

### Fixes and other changes

- Terminal output now normalizes tab characters consistently. (0.80.8) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0808---2026-07-16)
- Fixed decoding of Alt+symbol key combinations such as Alt+, and Alt+. (0.80.7) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0807---2026-07-14)

## @earendil-works/pi-tui 0.79

### Security

- Pi Agent: Pi loads project-local extensions without approval (0.79.0) — [security advisory](https://github.com/advisories/GHSA-MQXH-6GQ7-558M)

### New APIs and options

- Exported `sliceByColumn` for ANSI-aware horizontal column slicing. (0.79.7) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0797---2026-06-18)
- Added support for terminal background color queries using OSC 11 replies. (0.79.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0794---2026-06-15)
- Added provider-defined trigger characters so editor autocomplete can naturally trigger on token prefixes. (0.79.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0791---2026-06-09)

### Behavior and default changes

- Warp terminal detection was added for Kitty graphics inline image support. (0.79.7) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0797---2026-06-18)

### Fixes and other changes

- Partial closing fences no longer make code blocks shrink or flicker while content streams. (0.79.9) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0799---2026-06-20)
- Non-empty drafts now jump to the start of the line before Cursor Up browses input history. (0.79.5) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0795---2026-06-16)
- Fixed inline image rendering during full redraw fallbacks by reserving image padding rows before placement, without regressing tall-image placement. (0.79.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0794---2026-06-15)
- Fixed border alignment when an overlay starts inside a full-width cell. (0.79.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0794---2026-06-15)
- CJK text now wraps at character boundaries instead of leaving large trailing gaps. (0.79.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0792---2026-06-12)
- Blank-line separation between loose Markdown list items is now preserved. (0.79.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0792---2026-06-12)
- Markdown source list markers now preserve unordered markers, so standalone + user messages no longer render as -. (0.79.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0792---2026-06-12)
- Provider/model completions remain matchable after slash-separated fuzzy queries are inserted. (0.79.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0792---2026-06-12)
- Reserved row clears no longer erase all but the top strip of tool image previews. (0.79.2) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0792---2026-06-12)
- Fixed hardware cursor positioning while slash-command autocomplete is visible. (0.79.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0791---2026-06-09)
- Unspaced CJK runs can break at grapheme boundaries without leaving large trailing gaps. (0.79.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0791---2026-06-09)
- Returning from history browsing now restores the current draft. (0.79.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0791---2026-06-09)
- Autocomplete suggestions now re-query after editor cursor movement. (0.79.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0790---2026-06-08)
- The fallback response is now response-driven instead of timeout-driven, fixing intermittent Shift+Enter handling. (0.79.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0790---2026-06-08)
- Browsing upward now places the cursor at the start of a prompt and browsing downward at the end, so repeated Up/Down traverses multiline prompts immediately. (0.79.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0790---2026-06-08)
- Rendering now clears stale lines when content shrinks to zero. (0.79.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0790---2026-06-08)

## @earendil-works/pi-tui 0.78

### Security

- Pi Agent: Potential XSS in HTML session exports via Markdown URL sanitization bypass (0.78.1) — [security advisory](https://github.com/advisories/GHSA-7V5M-PR3Q-6453)
- Pi Agent: Predictable temporary extension install paths allow local privilege escalation on shared Linux hosts (0.78.1) — [security advisory](https://github.com/advisories/GHSA-JFGX-WXX8-MP94)
- Pi Agent: Race condition in Pi auth.json writes could expose stored credentials (0.78.1) — [security advisory](https://github.com/advisories/GHSA-R95R-RJ6R-C39X)

### Fixes and other changes

- Non-capturing overlays remain interactive after UI rerenders and explicit focus release. (0.78.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0781---2026-06-04)
- Tab width accounting in column slicing and overlay compositing prevents tab-containing output from exceeding terminal width. (0.78.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0781---2026-06-04)
- Fixed wrapping of very long ANSI text lines to avoid stack overflows. (0.78.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0780---2026-05-29)
- OSC 8 hyperlinks now pass through tmux when the client supports them. (0.78.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0780---2026-05-29)

## @earendil-works/pi-tui 0.77

### Fixes and other changes

- Ignores mismatched or delayed terminal responses to avoid false Kitty keyboard protocol detection. (0.77.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0770---2026-05-28)

## @earendil-works/pi-tui 0.76

### New APIs and options

- An opt-in Markdown renderer option preserves source ordered-list markers during transcript rendering. (0.76.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0760---2026-05-27)

### Fixes and other changes

- Windows Terminal capability detection enables OSC 8 hyperlinks, preserving clickable long URLs across wrapped lines. (0.76.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0760---2026-05-27)
- JetBrains terminal capability detection disables unsupported OSC 8 hyperlinks. (0.76.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0760---2026-05-27)
- Shift+Enter works in Apple Terminal by detecting local macOS modifier state when Terminal.app sends plain Return. (0.76.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0760---2026-05-27)
- JetBrains terminal capability detection enables truecolor. (0.76.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0760---2026-05-27)
- Editor and input word navigation and deletion use Unicode word boundaries while preserving ASCII punctuation boundaries. (0.76.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0760---2026-05-27)

## @earendil-works/pi-tui 0.75

### Breaking changes

- The package-level development watch script was removed because the root TypeScript check validates strip-only-compatible sources. (0.75.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0754---2026-05-20)
- The minimum supported Node.js version is now 22.19.0. (0.75.0) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0750---2026-05-17)

### Performance

- The optional koffi dependency for Windows VT input was replaced with a tiny vendored native helper, reducing install size while preserving Shift+Tab handling. (0.75.5) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0755---2026-05-23)

### Fixes and other changes

- Loader initialization now ensures indicator startup cannot run before frames are initialized. (0.75.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0754---2026-05-20)
- Truecolor capability detection now aligns terminal image rendering with the interactive theme detector. (0.75.4) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0754---2026-05-20)

## @earendil-works/pi-tui 0.74

### Fixes and other changes

- Portrait images are now capped by height instead of always scaling to the configured maximum width. (0.74.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0741---2026-05-16)
- Fixed image placement when the viewport is shorter than the rendered image. (0.74.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0741---2026-05-16)
- Fixed WezTerm Kitty keyboard protocol edge cases to keep escape handling correct. (0.74.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0741---2026-05-16)
- Improved markdown rendering robustness for very large files. (0.74.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0741---2026-05-16)
- Wrapped markdown list items now preserve indentation on continuation lines. (0.74.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0741---2026-05-16)
- Fixed rendering of markdown task-list checkboxes. (0.74.1) — [release notes](https://github.com/earendil-works/pi/blob/c8390defa9b69a05629a1a0877cd91aa18585ecd/packages/tui/CHANGELOG.md#0741---2026-05-16)
