@linxiraos/pi-tui 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/CHANGELOG.md +180 -176
  2. package/package.json +9 -9
package/CHANGELOG.md CHANGED
@@ -1,182 +1,8 @@
1
1
  ## [Unreleased]
2
2
 
3
- ## [1.3.1] - 2026-10-19
4
-
5
- ### Breaking Changes
6
-
7
- - Removed `KeyEventType` export from public API
8
- - `Editor` constructor now requires `TUI` as first parameter: `new Editor(tui, theme)`. This enables automatic vertical scrolling when content exceeds terminal height. ([#732](https://github.com/badlogic/pi-mono/issues/732))
9
- - Removed `Key` helper object from public API; use string literals like `"ctrl+c"` instead of `Key.ctrl("c")`
3
+ ## [1.3.2] - 2026-10-19
10
4
 
11
- ### Added
12
-
13
- - Added `ComposerPreferences.completeScrollback` (default `false`): rows a growing HUD or dialog pushes off screen go straight to scrollback instead of being held back until it shrinks ([#15692](https://github.com/can1357/oh-my-pi/pull/15692) by [@Ilm-Alan](https://github.com/Ilm-Alan))
14
- - `AssistantMessageComponent`'s native turn footer leads with a Copy icon (`zeta.turn.copy`) and a dot instead of the clock icon; it copies the answer's text and shows when the host handles transcript actions
15
- - Add backslash+enter newline fallback for terminals without Kitty protocol
16
- - Overlay compositing via `TUI.showOverlay()` and `TUI.hideOverlay()` for `ctx.ui.custom()` with `{ overlay: true }`
17
- - Kitty keyboard protocol flag 2 support for key release events (`isKeyRelease()`, `isKeyRepeat()`, `KeyEventType`)
18
- - `setKittyProtocolActive()`, `isKittyProtocolActive()` for Kitty protocol state management
19
- - `kittyProtocolActive` property on Terminal interface to query Kitty protocol state
20
- - `Component.wantsKeyRelease` property to opt-in to key release events (default false)
21
- - Input component `onEscape` callback for handling escape key presses
22
- - Emergency terminal restore to prevent corrupted state on crashes
23
- - Overhauled UI with welcome screen and powerline footer
24
- - Theme-configurable HTML export colors
25
- - `ctx.ui.theme` getter for styling status text with theme colors
26
- - Added `PI_TUI_WRITE_LOG` environment variable to capture raw ANSI output for debugging
27
- - Added legacy Alt+letter handling and Alt+D delete word forward support in the editor keymap. ([#810](https://github.com/badlogic/pi-mono/pull/810) by [@Perlence](https://github.com/Perlence))
28
- - `showOverlay()` now returns `OverlayHandle` with `hide()`, `setHidden(boolean)`, `isHidden()` for programmatic visibility control ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
29
- - New exported types: `OverlayAnchor`, `OverlayHandle`, `OverlayMargin`, `OverlayOptions`, `SizeValue` ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
30
- - `truncateToWidth()` now accepts optional `pad` parameter to pad result with spaces to exactly `maxWidth` ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
31
- - **Experimental:** Overlay compositing for `ctx.ui.custom()` with `{ overlay: true }` option ([#558](https://github.com/badlogic/pi-mono/pull/558) by [@nicobailon](https://github.com/nicobailon))
32
- - `EditorComponent` interface for custom editor implementations
33
- - `StdinBuffer` class to split batched stdin into individual sequences (adapted from [OpenTUI](https://github.com/anomalyco/opentui), MIT license)
34
- - `Editor.getExpandedText()` method that returns text with paste markers expanded to their actual content ([#444](https://github.com/badlogic/pi-mono/pull/444) by [@aliou](https://github.com/aliou))
35
- - Added mermaid block extraction and deduplication utilities (extractMermaidBlocks)
36
- - Added `Alt+Delete` as a delete-word-forward shortcut
37
- - Added configurable code block indentation for Markdown rendering
38
- - Added undo support in the editor via `Ctrl+-`.
39
- - Added configurable code block indentation for Markdown rendering.
40
- - Added `Alt+Delete` as a delete-word-forward shortcut.
41
- - Added `isPageUp()` and `isPageDown()` helper functions
42
- - Added `SizeValue` type for CSS-like overlay sizing (absolute or percentage strings like `"50%"`)
43
- - Added `OverlayHandle` interface with `hide()`, `setHidden()`, `isHidden()` methods for overlay visibility control
44
- - Added `visible` callback to `OverlayOptions` for dynamic visibility based on terminal dimensions
45
- - Added `pad` parameter to `truncateToWidth()` for padding result with spaces to exact width
46
- - `StdinBuffer` class to split batched stdin into individual sequences
47
- - Added `isCtrlY` helper function for detecting Ctrl+Y keyboard input
48
- - Added configurable editor keybindings with typed key identifiers and action matching
49
- - Added word-wrapped editor rendering for long lines
50
- - Added `getText()` method to Text component for retrieving current text content
51
- - Added `fullRedraws` readonly property to TUI class for tracking full screen redraws
52
- - Added `showHardwareCursor` getter and setter to control cursor visibility while keeping IME positioning active. ([#800](https://github.com/badlogic/pi-mono/pull/800) by [@ghoulr](https://github.com/ghoulr))
53
- - Added Emacs-style kill ring editing with yank and yank-pop keybindings. ([#810](https://github.com/badlogic/pi-mono/pull/810) by [@Perlence](https://github.com/Perlence))
54
- - `EditorOptions` with optional `paddingX` for horizontal content padding, plus `getPaddingX()`/`setPaddingX()` methods ([#791](https://github.com/badlogic/pi-mono/pull/791) by [@ferologics](https://github.com/ferologics))
55
- - Expanded keymap coverage for terminal compatibility: added support for Home/End keys in tmux, additional modifier combinations, and improved key sequence parsing ([#752](https://github.com/badlogic/pi-mono/pull/752) by [@richardgill](https://github.com/richardgill))
56
- - `OverlayOptions.visible` callback for responsive overlays - receives terminal dimensions, return false to hide ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
57
- - `pageUp` and `pageDown` key support with `selectPageUp`/`selectPageDown` editor actions ([#662](https://github.com/badlogic/pi-mono/pull/662) by [@aliou](https://github.com/aliou))
58
- - `fuzzyFilter()` and `fuzzyMatch()` utilities for fuzzy text matching
59
- - Slash command autocomplete now uses fuzzy matching instead of prefix matching
60
- - Added setAutocompleteMaxVisible() configuration (3-20 items)
61
- - Added image detection to terminal capabilities (containsImage method)
62
- - Added stdin monitoring to detect stalled input events and log warnings
63
- - Added `pageUp` and `pageDown` key support with `selectPageUp`/`selectPageDown` editor actions
64
- - Add `getExpandedText()` to editor for expanding paste markers
65
- - Added `SymbolTheme` interface for customizing UI symbols including cursors, borders, spinners, and box-drawing characters
66
- - Added support for custom spinner frames in the Loader component
67
- - Added `setTopBorder()` method to Editor component for displaying custom status content in the top border
68
- - Added `getWidth()` method to TUI class for retrieving terminal width
69
- - Added rounded corner box-drawing characters to Editor component borders
70
- - Added legacy terminal support for Ctrl+symbol keys (Ctrl+\, Ctrl+], Ctrl+-) and their Ctrl+Alt variants. ([#831](https://github.com/badlogic/pi-mono/pull/831) by [@Perlence](https://github.com/Perlence))
71
- - Kitty keyboard protocol flag 2 support for key release events. New exports: `isKeyRelease(data)`, `isKeyRepeat(data)`, `KeyEventType` type. Terminals supporting Kitty protocol (Kitty, Ghostty, WezTerm) now send proper key-up events.
72
-
73
- ### Changed
74
-
75
- - `UserMessageComponent`'s native hover toolbar (`zeta.user.tools`) leads with Copy and Rewind icon buttons (`copy`, `rewind`) instead of text labels, then a dot and the time, like the turn usage footer
76
- - `ContextUsageView`'s native body (on terminals with `meter`) leads with the tokens used and the room left before auto-compaction, then one stacked bar ticked at the threshold, the breakdown as rows (`zeta.context.cat`, `.cat.free`, `.cat.buffer`: swatch, name, tokens, share; the exact count in the row's `title`) and the snapcompact estimate as labelled rows (`zeta.context.snap`); the blocks meter and legend `kv` are gone, and `contextUsageHead` no longer repeats the window size
77
- - `AskDialogComponent`'s native root is `zeta.editor.ask` (collapsed: `zeta.editor.ask.hidden`, the countdown, the question as `zeta.ask.summary`, Skip and Show): a chosen answer is the `accent`-toned row (a check also carries the check icon) instead of the highlighted one; multi-select Other… is `zeta.ask.other.check`; the question tabs check answered questions and say their keys in the strip's `title`; the countdown moves from the head to the action bar beside Hide; the preview is `zeta.ask.preview`; the Review tab leads with `zeta.ask.notice` and lists answers (`zeta.ask.answers`) by question name with inline code mono and no `(Recommended)` suffix; option descriptions run inline code mono, notes ride the row's detail as `em`; Submit/Next's tooltip names only Enter (and Space on a multi-select)
78
- - `MCPAddWizard`'s native sheet asks one question per step: a phase strip (`zeta.mcpAdd.progress` of `zeta.mcpAdd.phase`, toned done/current/upcoming and `neutral` when no auth was needed), the question and its lead (`zeta.mcpAdd.title`, `zeta.mcpAdd.tag` for optional fields, `zeta.mcpAdd.lead`), then a mono field with a placeholder and its rule or refusal (`zeta.mcpAdd.field`, `tone: "error"`; `zeta.mcpAdd.note`), choice rows with icons and mono tags (`zeta.mcpAdd.choices`), status lines (`zeta.mcpAdd.status`, `zeta.mcpAdd.checks`, `zeta.mcpAdd.error`) or the review rows (`zeta.mcpAdd.summary`). Cancel, Back and Continue / Save server buttons run Ctrl+C, Esc and Enter instead of a key-hint strip. The connection test shows its own busy step, the OAuth client secret field is masked, and the review saves on Enter (no Yes/No choice)
79
- - `ReportPanel`'s native body carries the role `zeta.report.body`
80
- - `HookInputComponent` describes a dock sheet (`zeta.overlay.hook-input` col) like `HookEditorComponent`'s: the title's first line (`zeta.hook-input.title`, the countdown as `zeta.hook-input.timer`) over its further lines (`zeta.hook-input.detail`), the field (`zeta.hook-input.field`, `tone: "error"` while a submit was refused) with its placeholder, and Cancel / Submit buttons that run Esc / Enter; the key legend under the field is terminal-only
81
- - `JobsSheet`'s native body is a master–detail split (`zeta.jobs.split`: `zeta.jobs.master` | `zeta.jobs.detail`): the job list grouped Running / Recent (`zeta.jobs.group` labels), each row a type icon tinted by status with its duration, beside the selected job's status pill, live elapsed and Cancel job (`zeta.jobs.status`), its task title or command (`zeta.jobs.title` / `zeta.jobs.command`), facts (`zeta.jobs.facts`: agent, directory, pids, exit code, artifact) and output (`zeta.jobs.out`, `zeta.jobs.nooutput`); the footer counts running and recent jobs (`zeta.jobs.summary`), and no jobs shows an empty state (`zeta.jobs.empty`). Task jobs no longer draw an `agent` node here
82
- - `BtwHistoryPanel`'s native sheet is centered and reads like a mail reader: the questions as two-line rows (`zeta.btw.history`, list `zeta.btw.list` / `zeta.btw.list.idle` while the answer has the keys) beside the selected thread (`zeta.btw.reader` › `zeta.btw.thread` › `zeta.btw.turn`: `zeta.btw.question` / `zeta.btw.followup`, `zeta.btw.meta`, `zeta.btw.answer`, `zeta.btw.error`), the follow-up field under the last answer (`zeta.btw.composer`), and footer buttons Stop answer, Copy answer, Close and Follow up (Cancel and Send while composing) in place of the focus labels and key-hint strip; an empty history is an `md` sheet (`zeta.btw.empty`)
83
- - The `wait` tool's native job rows (`zeta.wait.job`) are a single `row`: badge, id and label, progress and clock, without the output preview or capture notice beneath
84
- - The native bash run foot reads In background with a live clock (`zeta.run.time` without `stopped`) while a parked job's frames stream (`details.async.state === "running"`, partial), instead of Running
85
- - Moved `wrapTextWithAnsi` export to `@linxiraos/pi-natives` package
86
- - Default editor `newLine` binding now uses `shift+enter` only
87
- - Hardware cursor is now disabled by default for better terminal compatibility. Set `PI_HARDWARE_CURSOR=1` to enable (replaces `PI_NO_HARDWARE_CURSOR=1` which disabled it).
88
- - Migrated key parsing and matching logic to native implementation for improved performance
89
- - Simplified `isKeyRelease()` and `isKeyRepeat()` to use regex pattern matching instead of string inclusion checks
90
- - Refactored `visibleWidth` function to use caching wrapper around new `visibleWidthRaw` implementation for improved performance
91
- - Improved performance of key ID parsing with optimized cache lookup strategy
92
- - Simplified `visibleWidth` calculation to use consistent Bun.stringWidth approach for all string lengths
93
- - Replaced external `fd` binary with native fuzzy path search for `@`-prefixed autocomplete
94
- - Restructured terminal capabilities from interface-based to class-based model
95
- - Improved table column width calculation with word-aware wrapping
96
- - Refactored text utilities to use native WASM implementations for strings >256 chars with JS fast path
97
- - Added Ctrl+Backspace as a delete-word-backward keybinding and improved modified backspace matching
98
- - Migrated file system operations from synchronous to asynchronous APIs in autocomplete provider for non-blocking I/O
99
- - Migrated node module imports from named to namespace imports across all packages for consistency with project guidelines
100
- - Normalized keybinding definitions to lowercase internally
101
- - Improved fuzzy matching to handle alphanumeric swaps.
102
- - Normalized keybinding definitions to lowercase internally.
103
- - Changed `showOverlay()` to return `OverlayHandle` for controlling overlay visibility
104
- - Removed `widthPercent`, `maxHeightPercent`, `rowPercent`, `colPercent` from `OverlayOptions` (use percentage strings instead)
105
- - Improved file autocomplete to show directory listing when typing `@` with no query, and fall back to prefix matching when fuzzy search returns no results
106
- - Terminal startup now queries Kitty protocol support before enabling event reporting
107
- - Changed cursor style from block to thin blinking bar (▏) at end of line
108
- - Editor component now uses word wrapping instead of character-level wrapping for better readability ([#382](https://github.com/badlogic/pi-mono/pull/382) by [@nickseelert](https://github.com/nickseelert))
109
- - Renamed `EllipsisKind` enum to `Ellipsis` for clearer API naming
110
- - Changed hardcoded ellipsis character from theme-configurable to literal "…" in editor truncation
111
- - Improved blockquote rendering with text wrapping in Markdown component
112
- - Expanded Kitty keyboard protocol coverage for non-Latin layouts and legacy Alt sequences
113
- - Improved cursor positioning with safer bounds checking
114
- - Updated editor layout to respect configurable padding
115
- - Refactored scrolling logic for better viewport management
116
-
117
- ### Fixed
118
-
119
- - Fixed table charts picking the wrong label and measure columns when numbers group thousands with spaces (`1 988`, `17 083`); they now read like `1,988` ([#16175](https://github.com/can1357/oh-my-pi/issues/16175))
120
- - Fixed terminal capability replies relayed through win32-input-mode appearing as typed input in WSL terminals ([#16137](https://github.com/can1357/oh-my-pi/issues/16137))
121
- - Fixed the status-bar activity spinner and turn timer freezing until the next keypress when the working-row loader is stopped mid-turn; an open turn window now repaints the status line on its own timer ([#16109](https://github.com/can1357/oh-my-pi/pull/16109) by [@tommymorgan](https://github.com/tommymorgan)).
122
- - Fixed pasting sometimes inserting a block of base64 text instead of the pasted text in terminals that deliver pastes through the Kitty clipboard protocol (OSC 5522), most often with dictation apps that paste for you; a slow paste now arrives whole, and keys typed while a paste never finishes are given back instead of lost ([#16170](https://github.com/can1357/oh-my-pi/pull/16170) by [@H4vC](https://github.com/H4vC))
123
- - Fixed a streaming table bouncing everything below it up and down while its last cell was still being written ([#16116](https://github.com/can1357/oh-my-pi/pull/16116) by [@galtamam-cmyk](https://github.com/galtamam-cmyk))
124
- - Fixed inline images in iTerm2 being sized for the wrong cell shape, which left charts smeared or offset ([#16118](https://github.com/can1357/oh-my-pi/pull/16118) by [@galtamam-cmyk](https://github.com/galtamam-cmyk))
125
- - Remove trailing space padding from Text, Markdown, and TruncatedText components when no background color is set (fixes copied text including unwanted whitespace)
126
- - Fixed Ctrl+Enter sequences to insert new lines in the editor
127
- - Fixed `fd` tool detection to automatically find `fd` or `fdfind` in PATH when not explicitly configured
128
- - Fixed editor multi-line insertion handling and lastAction tracking ([#945](https://github.com/badlogic/pi-mono/pull/945) by [@Perlence](https://github.com/Perlence))
129
- - Fixed editor word wrapping to reserve a cursor column ([#934](https://github.com/badlogic/pi-mono/pull/934) by [@Perlence](https://github.com/Perlence))
130
- - Fixed editor word wrapping to use single-pass backtracking for whitespace handling ([#924](https://github.com/badlogic/pi-mono/pull/924) by [@Perlence](https://github.com/Perlence))
131
- - Fixed Kitty image ID allocation and cleanup to prevent image ID collisions between modules
132
- - Fixed viewport tracking and cursor positioning for overlays and content shrink scenarios
133
- - Autocomplete now allows searches with `/` characters (e.g., `folder1/folder2`) ([#882](https://github.com/badlogic/pi-mono/pull/882) by [@richardgill](https://github.com/richardgill))
134
- - Directory completions for `@` file attachments no longer add trailing space, allowing continued autocomplete into subdirectories
135
- - `visibleWidth()` and `extractAnsiCode()` now handle APC escape sequences (`ESC _ ... BEL`), fixing width calculation and string slicing for strings containing cursor markers
136
- - SelectList now handles multi-line descriptions by replacing newlines with spaces ([#728](https://github.com/badlogic/pi-mono/pull/728) by [@richardgill](https://github.com/richardgill))
137
- - Reset ANSI styles after each rendered line to prevent style leakage
138
- - Cursor position tracking when content shrinks with unchanged remaining lines
139
- - TUI renders with wrong dimensions after suspend/resume if terminal was resized while suspended ([#599](https://github.com/badlogic/pi-mono/issues/599))
140
- - Pasted content containing Kitty key release patterns (e.g., `:3F` in MAC addresses) was incorrectly filtered out ([#623](https://github.com/badlogic/pi-mono/pull/623) by [@ogulcancelik](https://github.com/ogulcancelik))
141
- - `visibleWidth()` now strips OSC 8 hyperlink sequences, fixing text wrapping for clickable links ([#396](https://github.com/badlogic/pi-mono/pull/396) by [@Cursivez](https://github.com/Cursivez))
142
-
143
- Older entries are archived in [packages/tui/CHANGELOG.md@9caccab691ce](https://github.com/can1357/oh-my-pi/blob/9caccab691ce575007f4b6bcbaf8f944723d5457/packages/tui/CHANGELOG.md).
144
- Older entries are archived in [packages/tui/CHANGELOG.md@58141d4e5fa8](https://github.com/can1357/oh-my-pi/blob/58141d4e5fa892166024e2168866c45e0baacde3/packages/tui/CHANGELOG.md).
145
- - Corrected editor end-of-line cursor rendering assertion to use includes() instead of endsWith()
146
- - Fixed potential errors during emergency terminal restore when terminal is already dead
147
- - Fixed autocomplete race condition by tracking request ID to prevent stale suggestion results
148
- - Added legacy terminal support for `Ctrl+` symbol key combinations
149
- - Added legacy terminal support for `Ctrl+` symbol key combinations.
150
- - Fixed backspace handling with additional codepoint support
151
- - Fixed Alt+letter key combinations for better recognition
152
- - TUI now filters out key release events by default, preventing double-processing of keys
153
- - `matchesKey()` now correctly matches Kitty protocol sequences for unmodified letter keys
154
- - Crash when pasting text with trailing whitespace exceeding terminal width through Markdown rendering
155
- - Slash command menu now only triggers when the editor input is otherwise empty ([#904](https://github.com/badlogic/pi-mono/issues/904))
156
- - Center-anchored overlays now stay vertically centered when resizing the terminal taller after a shrink ([#950](https://github.com/badlogic/pi-mono/pull/950) by [@nicobailon](https://github.com/nicobailon))
157
- - Shift+Space, Shift+Backspace, and Shift+Delete now work correctly in Kitty-protocol terminals (Kitty, WezTerm, etc.) instead of being silently ignored ([#411](https://github.com/badlogic/pi-mono/pull/411) by [@nathyong](https://github.com/nathyong))
158
- - Improved Kitty terminal key sequence parsing to correctly handle text field codepoints in CSI-u sequences
159
- - Fixed handling of private use Unicode codepoints (U+E000 to U+F8FF) in Kitty key decoding to prevent invalid character interpretation
160
- - Simplified terminal write error handling to mark terminal as dead on any write failure
161
- - Fixed multi-line strings in renderOutputBlock causing width overflow
162
- - Fixed slash command autocomplete applying stale completion when typing quickly
163
- - Reserved cursor space for zero padding and corrected end-of-line cursor rendering to prevent wrap glitches
164
- - Fixed viewport tracking after partial renders to prevent autocomplete list artifacts
165
- - Rendering optimizations: only re-render changed lines
166
- - Refactor input component to use keybindings manager
167
- - Fixed editor cursor blinking by allowing terminal cursor positioning when enabled.
168
- - Editor no longer corrupts terminal display when text exceeds screen height. Content now scrolls vertically with indicators showing lines above/below the viewport. Max height is 30% of terminal (minimum 5 lines). ([#732](https://github.com/badlogic/pi-mono/issues/732))
169
- - Cursor now moves to end of content on exit, preventing status line from being overwritten ([#629](https://github.com/badlogic/pi-mono/pull/629) by [@tallshort](https://github.com/tallshort))
170
- - Slash command autocomplete now triggers for commands starting with `.`, `-`, or `_` (e.g., `/.land`, `/-foo`) ([#422](https://github.com/badlogic/pi-mono/issues/422))
171
-
172
- ### Removed
173
-
174
- - `SingleResult` (and the task tool's settled payload) carries the failure diagnostics an agent-driven model switch needs: optional `failureClass` (`usage-limit` / `auth` / `account-policy` / `context-overflow` / `transient` / `aborted` / `unknown`), optional `fallbackCandidates` (other selectors this session could run), and optional `modelChange` (`{ source: "spawn-param" | "wake-param", from?, to }`) recording that a caller-supplied model replaced the default one. All three stay absent unless a run actually reports them.
175
- - The welcome/splash brand art is now generated with the standard FIGlet tool instead of being drawn by hand: `ZETA_LOGO` renders the mark `Z` (the ASCII form of `Ζ`), `ZETA_WORDMARK` renders `Zeta` (both in the standard `ANSI Shadow` font) and `ZETA_SUBLINE` renders the `Linxira-Zeta` identity line in `mini`, with the version under the wordmark. `bun scripts/brand/generate-logo-art.ts` regenerates the three constants from the vendored fonts, and the brand guard fails on any hand-edited glyph.
176
- - Removed `ellipsis` property from `SymbolTheme` interface
177
- - Removed `extractAnsiCode` function from public API
178
- - Removed TUI layout engine exports from public API (BoxNode, ColumnNode, LayoutNode, etc.)
179
- - Removed `visibleWidth` benchmark file in favor of Kitty sequence benchmarking
5
+ - Version line moves to 1.3.2 with the rest of the suite; no user-visible change in this package.
180
6
 
181
7
  ## [9.5.0] - 2026-02-01
182
8
 
@@ -361,6 +187,184 @@ Older entries are archived in [packages/tui/CHANGELOG.md@58141d4e5fa8](https://g
361
187
 
362
188
  Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mono](https://github.com/badlogic/pi-mono).
363
189
 
190
+ ## [1.3.1] - 2026-10-19
191
+
192
+ ### Breaking Changes
193
+
194
+ - Removed `KeyEventType` export from public API
195
+ - `Editor` constructor now requires `TUI` as first parameter: `new Editor(tui, theme)`. This enables automatic vertical scrolling when content exceeds terminal height. ([#732](https://github.com/badlogic/pi-mono/issues/732))
196
+ - Removed `Key` helper object from public API; use string literals like `"ctrl+c"` instead of `Key.ctrl("c")`
197
+
198
+ ### Added
199
+
200
+ - Added `ComposerPreferences.completeScrollback` (default `false`): rows a growing HUD or dialog pushes off screen go straight to scrollback instead of being held back until it shrinks ([#15692](https://github.com/can1357/oh-my-pi/pull/15692) by [@Ilm-Alan](https://github.com/Ilm-Alan))
201
+ - `AssistantMessageComponent`'s native turn footer leads with a Copy icon (`zeta.turn.copy`) and a dot instead of the clock icon; it copies the answer's text and shows when the host handles transcript actions
202
+ - Add backslash+enter newline fallback for terminals without Kitty protocol
203
+ - Overlay compositing via `TUI.showOverlay()` and `TUI.hideOverlay()` for `ctx.ui.custom()` with `{ overlay: true }`
204
+ - Kitty keyboard protocol flag 2 support for key release events (`isKeyRelease()`, `isKeyRepeat()`, `KeyEventType`)
205
+ - `setKittyProtocolActive()`, `isKittyProtocolActive()` for Kitty protocol state management
206
+ - `kittyProtocolActive` property on Terminal interface to query Kitty protocol state
207
+ - `Component.wantsKeyRelease` property to opt-in to key release events (default false)
208
+ - Input component `onEscape` callback for handling escape key presses
209
+ - Emergency terminal restore to prevent corrupted state on crashes
210
+ - Overhauled UI with welcome screen and powerline footer
211
+ - Theme-configurable HTML export colors
212
+ - `ctx.ui.theme` getter for styling status text with theme colors
213
+ - Added `PI_TUI_WRITE_LOG` environment variable to capture raw ANSI output for debugging
214
+ - Added legacy Alt+letter handling and Alt+D delete word forward support in the editor keymap. ([#810](https://github.com/badlogic/pi-mono/pull/810) by [@Perlence](https://github.com/Perlence))
215
+ - `showOverlay()` now returns `OverlayHandle` with `hide()`, `setHidden(boolean)`, `isHidden()` for programmatic visibility control ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
216
+ - New exported types: `OverlayAnchor`, `OverlayHandle`, `OverlayMargin`, `OverlayOptions`, `SizeValue` ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
217
+ - `truncateToWidth()` now accepts optional `pad` parameter to pad result with spaces to exactly `maxWidth` ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
218
+ - **Experimental:** Overlay compositing for `ctx.ui.custom()` with `{ overlay: true }` option ([#558](https://github.com/badlogic/pi-mono/pull/558) by [@nicobailon](https://github.com/nicobailon))
219
+ - `EditorComponent` interface for custom editor implementations
220
+ - `StdinBuffer` class to split batched stdin into individual sequences (adapted from [OpenTUI](https://github.com/anomalyco/opentui), MIT license)
221
+ - `Editor.getExpandedText()` method that returns text with paste markers expanded to their actual content ([#444](https://github.com/badlogic/pi-mono/pull/444) by [@aliou](https://github.com/aliou))
222
+ - Added mermaid block extraction and deduplication utilities (extractMermaidBlocks)
223
+ - Added `Alt+Delete` as a delete-word-forward shortcut
224
+ - Added configurable code block indentation for Markdown rendering
225
+ - Added undo support in the editor via `Ctrl+-`.
226
+ - Added configurable code block indentation for Markdown rendering.
227
+ - Added `Alt+Delete` as a delete-word-forward shortcut.
228
+ - Added `isPageUp()` and `isPageDown()` helper functions
229
+ - Added `SizeValue` type for CSS-like overlay sizing (absolute or percentage strings like `"50%"`)
230
+ - Added `OverlayHandle` interface with `hide()`, `setHidden()`, `isHidden()` methods for overlay visibility control
231
+ - Added `visible` callback to `OverlayOptions` for dynamic visibility based on terminal dimensions
232
+ - Added `pad` parameter to `truncateToWidth()` for padding result with spaces to exact width
233
+ - `StdinBuffer` class to split batched stdin into individual sequences
234
+ - Added `isCtrlY` helper function for detecting Ctrl+Y keyboard input
235
+ - Added configurable editor keybindings with typed key identifiers and action matching
236
+ - Added word-wrapped editor rendering for long lines
237
+ - Added `getText()` method to Text component for retrieving current text content
238
+ - Added `fullRedraws` readonly property to TUI class for tracking full screen redraws
239
+ - Added `showHardwareCursor` getter and setter to control cursor visibility while keeping IME positioning active. ([#800](https://github.com/badlogic/pi-mono/pull/800) by [@ghoulr](https://github.com/ghoulr))
240
+ - Added Emacs-style kill ring editing with yank and yank-pop keybindings. ([#810](https://github.com/badlogic/pi-mono/pull/810) by [@Perlence](https://github.com/Perlence))
241
+ - `EditorOptions` with optional `paddingX` for horizontal content padding, plus `getPaddingX()`/`setPaddingX()` methods ([#791](https://github.com/badlogic/pi-mono/pull/791) by [@ferologics](https://github.com/ferologics))
242
+ - Expanded keymap coverage for terminal compatibility: added support for Home/End keys in tmux, additional modifier combinations, and improved key sequence parsing ([#752](https://github.com/badlogic/pi-mono/pull/752) by [@richardgill](https://github.com/richardgill))
243
+ - `OverlayOptions.visible` callback for responsive overlays - receives terminal dimensions, return false to hide ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
244
+ - `pageUp` and `pageDown` key support with `selectPageUp`/`selectPageDown` editor actions ([#662](https://github.com/badlogic/pi-mono/pull/662) by [@aliou](https://github.com/aliou))
245
+ - `fuzzyFilter()` and `fuzzyMatch()` utilities for fuzzy text matching
246
+ - Slash command autocomplete now uses fuzzy matching instead of prefix matching
247
+ - Added setAutocompleteMaxVisible() configuration (3-20 items)
248
+ - Added image detection to terminal capabilities (containsImage method)
249
+ - Added stdin monitoring to detect stalled input events and log warnings
250
+ - Added `pageUp` and `pageDown` key support with `selectPageUp`/`selectPageDown` editor actions
251
+ - Add `getExpandedText()` to editor for expanding paste markers
252
+ - Added `SymbolTheme` interface for customizing UI symbols including cursors, borders, spinners, and box-drawing characters
253
+ - Added support for custom spinner frames in the Loader component
254
+ - Added `setTopBorder()` method to Editor component for displaying custom status content in the top border
255
+ - Added `getWidth()` method to TUI class for retrieving terminal width
256
+ - Added rounded corner box-drawing characters to Editor component borders
257
+ - Added legacy terminal support for Ctrl+symbol keys (Ctrl+\, Ctrl+], Ctrl+-) and their Ctrl+Alt variants. ([#831](https://github.com/badlogic/pi-mono/pull/831) by [@Perlence](https://github.com/Perlence))
258
+ - Kitty keyboard protocol flag 2 support for key release events. New exports: `isKeyRelease(data)`, `isKeyRepeat(data)`, `KeyEventType` type. Terminals supporting Kitty protocol (Kitty, Ghostty, WezTerm) now send proper key-up events.
259
+
260
+ ### Changed
261
+
262
+ - `UserMessageComponent`'s native hover toolbar (`zeta.user.tools`) leads with Copy and Rewind icon buttons (`copy`, `rewind`) instead of text labels, then a dot and the time, like the turn usage footer
263
+ - `ContextUsageView`'s native body (on terminals with `meter`) leads with the tokens used and the room left before auto-compaction, then one stacked bar ticked at the threshold, the breakdown as rows (`zeta.context.cat`, `.cat.free`, `.cat.buffer`: swatch, name, tokens, share; the exact count in the row's `title`) and the snapcompact estimate as labelled rows (`zeta.context.snap`); the blocks meter and legend `kv` are gone, and `contextUsageHead` no longer repeats the window size
264
+ - `AskDialogComponent`'s native root is `zeta.editor.ask` (collapsed: `zeta.editor.ask.hidden`, the countdown, the question as `zeta.ask.summary`, Skip and Show): a chosen answer is the `accent`-toned row (a check also carries the check icon) instead of the highlighted one; multi-select Other… is `zeta.ask.other.check`; the question tabs check answered questions and say their keys in the strip's `title`; the countdown moves from the head to the action bar beside Hide; the preview is `zeta.ask.preview`; the Review tab leads with `zeta.ask.notice` and lists answers (`zeta.ask.answers`) by question name with inline code mono and no `(Recommended)` suffix; option descriptions run inline code mono, notes ride the row's detail as `em`; Submit/Next's tooltip names only Enter (and Space on a multi-select)
265
+ - `MCPAddWizard`'s native sheet asks one question per step: a phase strip (`zeta.mcpAdd.progress` of `zeta.mcpAdd.phase`, toned done/current/upcoming and `neutral` when no auth was needed), the question and its lead (`zeta.mcpAdd.title`, `zeta.mcpAdd.tag` for optional fields, `zeta.mcpAdd.lead`), then a mono field with a placeholder and its rule or refusal (`zeta.mcpAdd.field`, `tone: "error"`; `zeta.mcpAdd.note`), choice rows with icons and mono tags (`zeta.mcpAdd.choices`), status lines (`zeta.mcpAdd.status`, `zeta.mcpAdd.checks`, `zeta.mcpAdd.error`) or the review rows (`zeta.mcpAdd.summary`). Cancel, Back and Continue / Save server buttons run Ctrl+C, Esc and Enter instead of a key-hint strip. The connection test shows its own busy step, the OAuth client secret field is masked, and the review saves on Enter (no Yes/No choice)
266
+ - `ReportPanel`'s native body carries the role `zeta.report.body`
267
+ - `HookInputComponent` describes a dock sheet (`zeta.overlay.hook-input` col) like `HookEditorComponent`'s: the title's first line (`zeta.hook-input.title`, the countdown as `zeta.hook-input.timer`) over its further lines (`zeta.hook-input.detail`), the field (`zeta.hook-input.field`, `tone: "error"` while a submit was refused) with its placeholder, and Cancel / Submit buttons that run Esc / Enter; the key legend under the field is terminal-only
268
+ - `JobsSheet`'s native body is a master–detail split (`zeta.jobs.split`: `zeta.jobs.master` | `zeta.jobs.detail`): the job list grouped Running / Recent (`zeta.jobs.group` labels), each row a type icon tinted by status with its duration, beside the selected job's status pill, live elapsed and Cancel job (`zeta.jobs.status`), its task title or command (`zeta.jobs.title` / `zeta.jobs.command`), facts (`zeta.jobs.facts`: agent, directory, pids, exit code, artifact) and output (`zeta.jobs.out`, `zeta.jobs.nooutput`); the footer counts running and recent jobs (`zeta.jobs.summary`), and no jobs shows an empty state (`zeta.jobs.empty`). Task jobs no longer draw an `agent` node here
269
+ - `BtwHistoryPanel`'s native sheet is centered and reads like a mail reader: the questions as two-line rows (`zeta.btw.history`, list `zeta.btw.list` / `zeta.btw.list.idle` while the answer has the keys) beside the selected thread (`zeta.btw.reader` › `zeta.btw.thread` › `zeta.btw.turn`: `zeta.btw.question` / `zeta.btw.followup`, `zeta.btw.meta`, `zeta.btw.answer`, `zeta.btw.error`), the follow-up field under the last answer (`zeta.btw.composer`), and footer buttons Stop answer, Copy answer, Close and Follow up (Cancel and Send while composing) in place of the focus labels and key-hint strip; an empty history is an `md` sheet (`zeta.btw.empty`)
270
+ - The `wait` tool's native job rows (`zeta.wait.job`) are a single `row`: badge, id and label, progress and clock, without the output preview or capture notice beneath
271
+ - The native bash run foot reads In background with a live clock (`zeta.run.time` without `stopped`) while a parked job's frames stream (`details.async.state === "running"`, partial), instead of Running
272
+ - Moved `wrapTextWithAnsi` export to `@linxiraos/pi-natives` package
273
+ - Default editor `newLine` binding now uses `shift+enter` only
274
+ - Hardware cursor is now disabled by default for better terminal compatibility. Set `PI_HARDWARE_CURSOR=1` to enable (replaces `PI_NO_HARDWARE_CURSOR=1` which disabled it).
275
+ - Migrated key parsing and matching logic to native implementation for improved performance
276
+ - Simplified `isKeyRelease()` and `isKeyRepeat()` to use regex pattern matching instead of string inclusion checks
277
+ - Refactored `visibleWidth` function to use caching wrapper around new `visibleWidthRaw` implementation for improved performance
278
+ - Improved performance of key ID parsing with optimized cache lookup strategy
279
+ - Simplified `visibleWidth` calculation to use consistent Bun.stringWidth approach for all string lengths
280
+ - Replaced external `fd` binary with native fuzzy path search for `@`-prefixed autocomplete
281
+ - Restructured terminal capabilities from interface-based to class-based model
282
+ - Improved table column width calculation with word-aware wrapping
283
+ - Refactored text utilities to use native WASM implementations for strings >256 chars with JS fast path
284
+ - Added Ctrl+Backspace as a delete-word-backward keybinding and improved modified backspace matching
285
+ - Migrated file system operations from synchronous to asynchronous APIs in autocomplete provider for non-blocking I/O
286
+ - Migrated node module imports from named to namespace imports across all packages for consistency with project guidelines
287
+ - Normalized keybinding definitions to lowercase internally
288
+ - Improved fuzzy matching to handle alphanumeric swaps.
289
+ - Normalized keybinding definitions to lowercase internally.
290
+ - Changed `showOverlay()` to return `OverlayHandle` for controlling overlay visibility
291
+ - Removed `widthPercent`, `maxHeightPercent`, `rowPercent`, `colPercent` from `OverlayOptions` (use percentage strings instead)
292
+ - Improved file autocomplete to show directory listing when typing `@` with no query, and fall back to prefix matching when fuzzy search returns no results
293
+ - Terminal startup now queries Kitty protocol support before enabling event reporting
294
+ - Changed cursor style from block to thin blinking bar (▏) at end of line
295
+ - Editor component now uses word wrapping instead of character-level wrapping for better readability ([#382](https://github.com/badlogic/pi-mono/pull/382) by [@nickseelert](https://github.com/nickseelert))
296
+ - Renamed `EllipsisKind` enum to `Ellipsis` for clearer API naming
297
+ - Changed hardcoded ellipsis character from theme-configurable to literal "…" in editor truncation
298
+ - Improved blockquote rendering with text wrapping in Markdown component
299
+ - Expanded Kitty keyboard protocol coverage for non-Latin layouts and legacy Alt sequences
300
+ - Improved cursor positioning with safer bounds checking
301
+ - Updated editor layout to respect configurable padding
302
+ - Refactored scrolling logic for better viewport management
303
+
304
+ ### Fixed
305
+
306
+ - Fixed table charts picking the wrong label and measure columns when numbers group thousands with spaces (`1 988`, `17 083`); they now read like `1,988` ([#16175](https://github.com/can1357/oh-my-pi/issues/16175))
307
+ - Fixed terminal capability replies relayed through win32-input-mode appearing as typed input in WSL terminals ([#16137](https://github.com/can1357/oh-my-pi/issues/16137))
308
+ - Fixed the status-bar activity spinner and turn timer freezing until the next keypress when the working-row loader is stopped mid-turn; an open turn window now repaints the status line on its own timer ([#16109](https://github.com/can1357/oh-my-pi/pull/16109) by [@tommymorgan](https://github.com/tommymorgan)).
309
+ - Fixed pasting sometimes inserting a block of base64 text instead of the pasted text in terminals that deliver pastes through the Kitty clipboard protocol (OSC 5522), most often with dictation apps that paste for you; a slow paste now arrives whole, and keys typed while a paste never finishes are given back instead of lost ([#16170](https://github.com/can1357/oh-my-pi/pull/16170) by [@H4vC](https://github.com/H4vC))
310
+ - Fixed a streaming table bouncing everything below it up and down while its last cell was still being written ([#16116](https://github.com/can1357/oh-my-pi/pull/16116) by [@galtamam-cmyk](https://github.com/galtamam-cmyk))
311
+ - Fixed inline images in iTerm2 being sized for the wrong cell shape, which left charts smeared or offset ([#16118](https://github.com/can1357/oh-my-pi/pull/16118) by [@galtamam-cmyk](https://github.com/galtamam-cmyk))
312
+ - Remove trailing space padding from Text, Markdown, and TruncatedText components when no background color is set (fixes copied text including unwanted whitespace)
313
+ - Fixed Ctrl+Enter sequences to insert new lines in the editor
314
+ - Fixed `fd` tool detection to automatically find `fd` or `fdfind` in PATH when not explicitly configured
315
+ - Fixed editor multi-line insertion handling and lastAction tracking ([#945](https://github.com/badlogic/pi-mono/pull/945) by [@Perlence](https://github.com/Perlence))
316
+ - Fixed editor word wrapping to reserve a cursor column ([#934](https://github.com/badlogic/pi-mono/pull/934) by [@Perlence](https://github.com/Perlence))
317
+ - Fixed editor word wrapping to use single-pass backtracking for whitespace handling ([#924](https://github.com/badlogic/pi-mono/pull/924) by [@Perlence](https://github.com/Perlence))
318
+ - Fixed Kitty image ID allocation and cleanup to prevent image ID collisions between modules
319
+ - Fixed viewport tracking and cursor positioning for overlays and content shrink scenarios
320
+ - Autocomplete now allows searches with `/` characters (e.g., `folder1/folder2`) ([#882](https://github.com/badlogic/pi-mono/pull/882) by [@richardgill](https://github.com/richardgill))
321
+ - Directory completions for `@` file attachments no longer add trailing space, allowing continued autocomplete into subdirectories
322
+ - `visibleWidth()` and `extractAnsiCode()` now handle APC escape sequences (`ESC _ ... BEL`), fixing width calculation and string slicing for strings containing cursor markers
323
+ - SelectList now handles multi-line descriptions by replacing newlines with spaces ([#728](https://github.com/badlogic/pi-mono/pull/728) by [@richardgill](https://github.com/richardgill))
324
+ - Reset ANSI styles after each rendered line to prevent style leakage
325
+ - Cursor position tracking when content shrinks with unchanged remaining lines
326
+ - TUI renders with wrong dimensions after suspend/resume if terminal was resized while suspended ([#599](https://github.com/badlogic/pi-mono/issues/599))
327
+ - Pasted content containing Kitty key release patterns (e.g., `:3F` in MAC addresses) was incorrectly filtered out ([#623](https://github.com/badlogic/pi-mono/pull/623) by [@ogulcancelik](https://github.com/ogulcancelik))
328
+ - `visibleWidth()` now strips OSC 8 hyperlink sequences, fixing text wrapping for clickable links ([#396](https://github.com/badlogic/pi-mono/pull/396) by [@Cursivez](https://github.com/Cursivez))
329
+
330
+ Older entries are archived in [packages/tui/CHANGELOG.md@9caccab691ce](https://github.com/can1357/oh-my-pi/blob/9caccab691ce575007f4b6bcbaf8f944723d5457/packages/tui/CHANGELOG.md).
331
+ Older entries are archived in [packages/tui/CHANGELOG.md@58141d4e5fa8](https://github.com/can1357/oh-my-pi/blob/58141d4e5fa892166024e2168866c45e0baacde3/packages/tui/CHANGELOG.md).
332
+ - Corrected editor end-of-line cursor rendering assertion to use includes() instead of endsWith()
333
+ - Fixed potential errors during emergency terminal restore when terminal is already dead
334
+ - Fixed autocomplete race condition by tracking request ID to prevent stale suggestion results
335
+ - Added legacy terminal support for `Ctrl+` symbol key combinations
336
+ - Added legacy terminal support for `Ctrl+` symbol key combinations.
337
+ - Fixed backspace handling with additional codepoint support
338
+ - Fixed Alt+letter key combinations for better recognition
339
+ - TUI now filters out key release events by default, preventing double-processing of keys
340
+ - `matchesKey()` now correctly matches Kitty protocol sequences for unmodified letter keys
341
+ - Crash when pasting text with trailing whitespace exceeding terminal width through Markdown rendering
342
+ - Slash command menu now only triggers when the editor input is otherwise empty ([#904](https://github.com/badlogic/pi-mono/issues/904))
343
+ - Center-anchored overlays now stay vertically centered when resizing the terminal taller after a shrink ([#950](https://github.com/badlogic/pi-mono/pull/950) by [@nicobailon](https://github.com/nicobailon))
344
+ - Shift+Space, Shift+Backspace, and Shift+Delete now work correctly in Kitty-protocol terminals (Kitty, WezTerm, etc.) instead of being silently ignored ([#411](https://github.com/badlogic/pi-mono/pull/411) by [@nathyong](https://github.com/nathyong))
345
+ - Improved Kitty terminal key sequence parsing to correctly handle text field codepoints in CSI-u sequences
346
+ - Fixed handling of private use Unicode codepoints (U+E000 to U+F8FF) in Kitty key decoding to prevent invalid character interpretation
347
+ - Simplified terminal write error handling to mark terminal as dead on any write failure
348
+ - Fixed multi-line strings in renderOutputBlock causing width overflow
349
+ - Fixed slash command autocomplete applying stale completion when typing quickly
350
+ - Reserved cursor space for zero padding and corrected end-of-line cursor rendering to prevent wrap glitches
351
+ - Fixed viewport tracking after partial renders to prevent autocomplete list artifacts
352
+ - Rendering optimizations: only re-render changed lines
353
+ - Refactor input component to use keybindings manager
354
+ - Fixed editor cursor blinking by allowing terminal cursor positioning when enabled.
355
+ - Editor no longer corrupts terminal display when text exceeds screen height. Content now scrolls vertically with indicators showing lines above/below the viewport. Max height is 30% of terminal (minimum 5 lines). ([#732](https://github.com/badlogic/pi-mono/issues/732))
356
+ - Cursor now moves to end of content on exit, preventing status line from being overwritten ([#629](https://github.com/badlogic/pi-mono/pull/629) by [@tallshort](https://github.com/tallshort))
357
+ - Slash command autocomplete now triggers for commands starting with `.`, `-`, or `_` (e.g., `/.land`, `/-foo`) ([#422](https://github.com/badlogic/pi-mono/issues/422))
358
+
359
+ ### Removed
360
+
361
+ - `SingleResult` (and the task tool's settled payload) carries the failure diagnostics an agent-driven model switch needs: optional `failureClass` (`usage-limit` / `auth` / `account-policy` / `context-overflow` / `transient` / `aborted` / `unknown`), optional `fallbackCandidates` (other selectors this session could run), and optional `modelChange` (`{ source: "spawn-param" | "wake-param", from?, to }`) recording that a caller-supplied model replaced the default one. All three stay absent unless a run actually reports them.
362
+ - The welcome/splash brand art is now generated with the standard FIGlet tool instead of being drawn by hand: `ZETA_LOGO` renders the mark `Z` (the ASCII form of `Ζ`), `ZETA_WORDMARK` renders `Zeta` (both in the standard `ANSI Shadow` font) and `ZETA_SUBLINE` renders the `Linxira-Zeta` identity line in `mini`, with the version under the wordmark. `bun scripts/brand/generate-logo-art.ts` regenerates the three constants from the vendored fonts, and the brand guard fails on any hand-edited glyph.
363
+ - Removed `ellipsis` property from `SymbolTheme` interface
364
+ - Removed `extractAnsiCode` function from public API
365
+ - Removed TUI layout engine exports from public API (BoxNode, ColumnNode, LayoutNode, etc.)
366
+ - Removed `visibleWidth` benchmark file in favor of Kitty sequence benchmarking
367
+
364
368
  ## [1.3.0] - 2026-10-18
365
369
 
366
370
  ### Breaking Changes
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@linxiraos/pi-tui",
4
- "version": "1.3.1",
4
+ "version": "1.3.2",
5
5
  "description": "Terminal User Interface library with differential rendering for efficient text-based applications",
6
6
  "homepage": "https://linxira-os.github.io/zeta/",
7
7
  "author": "Linxira-OS",
@@ -38,14 +38,14 @@
38
38
  "gen:glyphs": "bun scripts/gen-glyphs.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@linxiraos/pi-omptype": "1.3.1",
42
- "@linxiraos/pi-agent-core": "1.3.1",
43
- "@linxiraos/pi-ai": "1.3.1",
44
- "@linxiraos/pi-catalog": "1.3.1",
45
- "@linxiraos/pi-natives": "1.3.1",
46
- "@linxiraos/pi-utils": "1.3.1",
47
- "@linxiraos/pi-wire": "1.3.1",
48
- "@linxiraos/pi-snapcompact": "1.3.1"
41
+ "@linxiraos/pi-omptype": "1.3.2",
42
+ "@linxiraos/pi-agent-core": "1.3.2",
43
+ "@linxiraos/pi-ai": "1.3.2",
44
+ "@linxiraos/pi-catalog": "1.3.2",
45
+ "@linxiraos/pi-natives": "1.3.2",
46
+ "@linxiraos/pi-utils": "1.3.2",
47
+ "@linxiraos/pi-wire": "1.3.2",
48
+ "@linxiraos/pi-snapcompact": "1.3.2"
49
49
  },
50
50
  "devDependencies": {
51
51
  "kitty-vt-wasm": "^0.2.0"