mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 09:01:14 +00:00
24 KiB
24 KiB
Changelog
[Unreleased]
[0.55.3] - 2026-02-27
[0.55.2] - 2026-02-27
[0.55.1] - 2026-02-26
Fixed
- Fixed Windows VT input initialization in ESM by loading
koffiviacreateRequire, restoring VT input mode while keepingkoffiexternalized from compiled binaries (#1627 by @kaste)
[0.55.0] - 2026-02-24
[0.54.2] - 2026-02-23
[0.54.1] - 2026-02-22
Fixed
- Changed koffi import from top-level to dynamic require in
enableWindowsVTInput()to prevent bun from embedding all 18 platform.nodefiles (~74MB) into every compiled binary. Koffi is only needed on Windows.
[0.54.0] - 2026-02-19
[0.53.1] - 2026-02-19
[0.53.0] - 2026-02-17
[0.52.12] - 2026-02-13
[0.52.11] - 2026-02-13
[0.52.10] - 2026-02-12
Added
- Added terminal input listeners in
TUI(addInputListenerandremoveInputListener) to let callers intercept, transform, or consume raw input before component handling.
Fixed
- Fixed
@autocomplete fuzzy matching to score against path segments and prefixes, reducing irrelevant matches for nested paths (#1423)
[0.52.9] - 2026-02-08
[0.52.8] - 2026-02-07
Added
- Added
pasteToEditortoEditorComponentAPI for programmatic paste support (#1351 by @kaofelix) - Added kill ring (ctrl+k/ctrl+y/alt+y) and undo (ctrl+z) support to the Input component (#1373 by @Perlence)
[0.52.7] - 2026-02-06
[0.52.6] - 2026-02-05
[0.52.5] - 2026-02-05
[0.52.4] - 2026-02-05
[0.52.3] - 2026-02-05
[0.52.2] - 2026-02-05
[0.52.1] - 2026-02-05
[0.52.0] - 2026-02-05
[0.51.6] - 2026-02-04
Changed
- Slash command menu now triggers on the first line even when other lines have content, allowing commands to be prepended to existing text (#1227 by @aliou)
Fixed
- Fixed
/settingscrashing in narrow terminals by handling small widths in the settings list (#1246 by @haoqixu)
[0.51.5] - 2026-02-04
[0.51.4] - 2026-02-03
Fixed
[0.51.3] - 2026-02-03
[0.51.2] - 2026-02-03
Added
- Added
Terminal.drainInput()to drain stdin before exit (prevents Kitty key release events leaking over slow SSH)
Fixed
- Fixed Kitty key release events leaking to parent shell over slow SSH connections by draining stdin for up to 1s (#1204)
- Fixed legacy newline handling in the editor to preserve previous newline behavior
- Fixed @ autocomplete to include hidden paths
- Fixed submit fallback to honor configured keybindings
[0.51.1] - 2026-02-02
Added
- Added
PI_DEBUG_REDRAW=1env var for debugging full redraws (logs triggers to~/.pi/agent/pi-debug.log)
Changed
- Terminal height changes no longer trigger full redraws, reducing flicker on resize
clearOnShrinknow defaults tofalse(usePI_CLEAR_ON_SHRINK=1orsetClearOnShrink(true)to enable)
Fixed
-
Fixed emoji cursor positioning in Input component (#1183 by @haoqixu)
-
Fixed unnecessary full redraws when appending many lines after content had previously shrunk (viewport check now uses actual previous content size instead of stale maximum)
-
Fixed Ctrl+D exit closing the parent SSH session due to stdin buffer race condition (#1185)
[0.51.0] - 2026-02-01
[0.50.9] - 2026-02-01
[0.50.8] - 2026-02-01
Added
- Added sticky column tracking for vertical cursor navigation so the editor restores the preferred column when moving across short lines. (#1120 by @Perlence)
Fixed
- Fixed Kitty keyboard protocol base layout fallback so non-QWERTY layouts do not trigger wrong shortcuts (#1096 by @rytswd)
[0.50.7] - 2026-01-31
[0.50.6] - 2026-01-30
Changed
- Optimized
isImageLine()withstartsWithshort-circuit for faster image line detection
Fixed
- Fixed empty rows appearing below footer when content shrinks (e.g., closing
/tree, clearing multi-line editor) (#1095 by @marckrenn) - Fixed terminal cursor remaining hidden after exiting TUI via
stop()when a render was pending (#1099 by @haoqixu)
[0.50.5] - 2026-01-30
Fixed
- Fixed
isImageLine()to check for image escape sequences anywhere in a line, not just at the start. This prevents TUI crashes when rendering lines containing image data. (#1091 by @zedrdave)
[0.50.4] - 2026-01-30
Added
- Added Ctrl+B and Ctrl+F as alternative keybindings for cursor word left/right navigation (#1053 by @ninlds)
- Added character jump navigation: Ctrl+] jumps forward to next character, Ctrl+Alt+] jumps backward (#1074 by @Perlence)
- Editor now jumps to line start when pressing Up at first visual line, and line end when pressing Down at last visual line (#1050 by @4h9fbZ)
Changed
Fixed
- Fixed autocomplete for paths with spaces by supporting quoted path tokens (#1077)
- Fixed quoted path completions to avoid duplicating closing quotes during autocomplete (#1077)
[0.50.3] - 2026-01-29
[0.50.2] - 2026-01-29
Added
- Added
autocompleteMaxVisibleoption toEditorOptionswith getter/setter methods for configurable autocomplete dropdown height (#972 by @masonc15) - Added
alt+bandalt+fas alternative keybindings for word navigation (cursorWordLeft,cursorWordRight) andctrl+dfordeleteCharForward(#1043 by @jasonish) - Editor auto-applies single suggestion when force file autocomplete triggers with exactly one match (#993 by @Perlence)
Changed
- Improved
extractCursorPositionperformance: scans lines in reverse order, early-outs when cursor is above viewport, and limits scan to bottom terminal height (#1004 by @can1357) - Autocomplete improvements: better handling of partial matches and edge cases (#1024 by @Perlence)
Fixed
- Fixed backslash input buffering causing delayed character display in editor and input components (#1037 by @Perlence)
- Fixed markdown table rendering with proper row dividers and minimum column width (#997 by @tmustier)
[0.50.1] - 2026-01-26
[0.50.0] - 2026-01-26
Added
- Added
fullRedrawsreadonly property to TUI class for tracking full screen redraws - Added
PI_TUI_WRITE_LOGenvironment variable to capture raw ANSI output for debugging
Fixed
- Fixed appended lines not being committed to scrollback, causing earlier content to be overwritten when viewport fills (#954)
- Slash command menu now only triggers when the editor input is otherwise empty (#904)
- Center-anchored overlays now stay vertically centered when resizing the terminal taller after a shrink (#950 by @nicobailon)
- Fixed editor multi-line insertion handling and lastAction tracking (#945 by @Perlence)
- Fixed editor word wrapping to reserve a cursor column (#934 by @Perlence)
- Fixed editor word wrapping to use single-pass backtracking for whitespace handling (#924 by @Perlence)
- Fixed Kitty image ID allocation and cleanup to prevent image ID collisions between modules
[0.49.3] - 2026-01-22
Added
codeBlockIndentproperty onMarkdownThemeto customize code block content indentation (default: 2 spaces) (#855 by @terrorobe)- Added Alt+Delete as hotkey for delete word forwards (#878 by @Perlence)
Changed
- Fuzzy matching now scores consecutive matches higher and penalizes gaps more heavily for better relevance (#860 by @mitsuhiko)
Fixed
- Autolinked emails no longer display redundant
(mailto:...)suffix in markdown output (#888 by @terrorobe) - Fixed viewport tracking and cursor positioning for overlays and content shrink scenarios
- Autocomplete now allows searches with
/characters (e.g.,folder1/folder2) (#882 by @richardgill) - Directory completions for
@file attachments no longer add trailing space, allowing continued autocomplete into subdirectories
[0.49.2] - 2026-01-19
[0.49.1] - 2026-01-18
Added
- Added undo support to Editor with Ctrl+- hotkey. Undo coalesces consecutive word characters into one unit (fish-style). (#831 by @Perlence)
- Added legacy terminal support for Ctrl+symbol keys (Ctrl+, Ctrl+], Ctrl+-) and their Ctrl+Alt variants. (#831 by @Perlence)
[0.49.0] - 2026-01-17
Added
- Added
showHardwareCursorgetter and setter to control cursor visibility while keeping IME positioning active. (#800 by @ghoulr) - Added Emacs-style kill ring editing with yank and yank-pop keybindings. (#810 by @Perlence)
- Added legacy Alt+letter handling and Alt+D delete word forward support in the editor keymap. (#810 by @Perlence)
[0.48.0] - 2026-01-16
Added
EditorOptionswith optionalpaddingXfor horizontal content padding, plusgetPaddingX()/setPaddingX()methods (#791 by @ferologics)
Changed
- Hardware cursor is now disabled by default for better terminal compatibility. Set
PI_HARDWARE_CURSOR=1to enable (replacesPI_NO_HARDWARE_CURSOR=1which disabled it).
Fixed
- Decode Kitty CSI-u printable sequences in the editor so shifted symbol keys (e.g.,
@,?) work in terminals that enable Kitty keyboard protocol (#779 by @iamd3vil)
[0.47.0] - 2026-01-16
Breaking Changes
Editorconstructor now requiresTUIas first parameter:new Editor(tui, theme). This enables automatic vertical scrolling when content exceeds terminal height. (#732)
Added
- Hardware cursor positioning for IME support in
EditorandInputcomponents. The terminal cursor now follows the text cursor position, enabling proper IME candidate window placement for CJK input. (#719) Focusableinterface for components that need hardware cursor positioning. Implementfocused: booleanand emitCURSOR_MARKERin render output when focused.CURSOR_MARKERconstant andisFocusable()type guard exported from the package- Editor now supports Page Up/Down keys (Fn+Up/Down on MacBook) for scrolling through large content (#732)
- Expanded keymap coverage for terminal compatibility: added support for Home/End keys in tmux, additional modifier combinations, and improved key sequence parsing (#752 by @richardgill)
Fixed
- 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)
visibleWidth()andextractAnsiCode()now handle APC escape sequences (ESC _ ... BEL), fixing width calculation and string slicing for strings containing cursor markers- SelectList now handles multi-line descriptions by replacing newlines with spaces (#728 by @richardgill)
[0.46.0] - 2026-01-15
Fixed
- Keyboard shortcuts (Ctrl+C, Ctrl+D, etc.) now work on non-Latin keyboard layouts (Russian, Ukrainian, Bulgarian, etc.) in terminals supporting Kitty keyboard protocol with alternate key reporting (#718 by @dannote)
[0.45.7] - 2026-01-13
[0.45.6] - 2026-01-13
Added
OverlayOptionsAPI for overlay positioning and sizing with CSS-like values:width,maxHeight,row,colaccept numbers (absolute) or percentage strings (e.g.,"50%"). Also supportsminWidth,anchor,offsetX,offsetY,margin. (#667 by @nicobailon)OverlayOptions.visiblecallback for responsive overlays - receives terminal dimensions, return false to hide (#667 by @nicobailon)showOverlay()now returnsOverlayHandlewithhide(),setHidden(boolean),isHidden()for programmatic visibility control (#667 by @nicobailon)- New exported types:
OverlayAnchor,OverlayHandle,OverlayMargin,OverlayOptions,SizeValue(#667 by @nicobailon) truncateToWidth()now accepts optionalpadparameter to pad result with spaces to exactlymaxWidth(#667 by @nicobailon)
Fixed
- Overlay compositing crash when rendered lines exceed terminal width due to complex ANSI/OSC sequences (e.g., hyperlinks in subagent output) (#667 by @nicobailon)
[0.45.5] - 2026-01-13
[0.45.4] - 2026-01-13
[0.45.3] - 2026-01-13
[0.45.2] - 2026-01-13
[0.45.1] - 2026-01-13
[0.45.0] - 2026-01-13
[0.44.0] - 2026-01-12
Added
SettingsListOptionswithenableSearchfor fuzzy filtering inSettingsList(#643 by @ninlds)pageUpandpageDownkey support withselectPageUp/selectPageDowneditor actions (#662 by @aliou)
Fixed
- Numbered list items showing "1." for all items when code blocks break list continuity (#660 by @ogulcancelik)
[0.43.0] - 2026-01-11
Added
fuzzyFilter()andfuzzyMatch()utilities for fuzzy text matching- Slash command autocomplete now uses fuzzy matching instead of prefix matching
Fixed
- Cursor now moves to end of content on exit, preventing status line from being overwritten (#629 by @tallshort)
- Reset ANSI styles after each rendered line to prevent style leakage
[0.42.5] - 2026-01-11
Fixed
- Reduced flicker by only re-rendering changed lines (#617 by @ogulcancelik)
- Cursor position tracking when content shrinks with unchanged remaining lines
- TUI renders with wrong dimensions after suspend/resume if terminal was resized while suspended (#599)
- Pasted content containing Kitty key release patterns (e.g.,
:3Fin MAC addresses) was incorrectly filtered out (#623 by @ogulcancelik)
[0.42.4] - 2026-01-10
[0.42.3] - 2026-01-10
[0.42.2] - 2026-01-10
[0.42.1] - 2026-01-09
[0.42.0] - 2026-01-09
[0.41.0] - 2026-01-09
[0.40.1] - 2026-01-09
[0.40.0] - 2026-01-08
[0.39.1] - 2026-01-08
[0.39.0] - 2026-01-08
Added
- Experimental: Overlay compositing for
ctx.ui.custom()with{ overlay: true }option (#558 by @nicobailon)
[0.38.0] - 2026-01-08
Added
EditorComponentinterface for custom editor implementationsStdinBufferclass to split batched stdin into individual sequences (adapted from OpenTUI, MIT license)
Fixed
- Key presses no longer dropped when batched with other events over SSH (#538)
[0.37.8] - 2026-01-07
Added
Component.wantsKeyReleaseproperty to opt-in to key release events (default false)
Fixed
- TUI now filters out key release events by default, preventing double-processing of keys in editors and other components
[0.37.7] - 2026-01-07
Fixed
matchesKey()now correctly matches Kitty protocol sequences for unmodified letter keys (needed for key release events)
[0.37.6] - 2026-01-06
Added
- Kitty keyboard protocol flag 2 support for key release events. New exports:
isKeyRelease(data),isKeyRepeat(data),KeyEventTypetype. Terminals supporting Kitty protocol (Kitty, Ghostty, WezTerm) now send proper key-up events.
[0.37.5] - 2026-01-06
[0.37.4] - 2026-01-06
[0.37.3] - 2026-01-06
[0.37.2] - 2026-01-05
[0.37.1] - 2026-01-05
[0.37.0] - 2026-01-05
Fixed
- Crash when pasting text with trailing whitespace exceeding terminal width through Markdown rendering (#457 by @robinwander)
[0.36.0] - 2026-01-05
[0.35.0] - 2026-01-05
[0.34.2] - 2026-01-04
[0.34.1] - 2026-01-04
Added
- Symbol key support in keybinding system:
SymbolKeytype with 32 symbol keys,Keyconstants (e.g.,Key.backtick,Key.comma), updatedmatchesKey()andparseKey()to handle symbol input (#450 by @kaofelix)
[0.34.0] - 2026-01-04
Added
Editor.getExpandedText()method that returns text with paste markers expanded to their actual content (#444 by @aliou)
[0.33.0] - 2026-01-04
Breaking Changes
- Key detection functions removed: All
isXxx()key detection functions (isEnter(),isEscape(),isCtrlC(), etc.) have been removed. UsematchesKey(data, keyId)instead (e.g.,matchesKey(data, "enter"),matchesKey(data, "ctrl+c")). This affects hooks and custom tools that usectx.ui.custom()with keyboard input handling. (#405)
Added
Editor.insertTextAtCursor(text)method for programmatic text insertion (#419)EditorKeybindingsManagerfor configurable editor keybindings. Components now usematchesKey()and keybindings manager instead of individualisXxx()functions. (#405 by @hjanuschka)
Changed
- Key detection refactored: consolidated
is*()functions into genericmatchesKey(data, keyId)function that accepts key identifiers like"ctrl+c","shift+enter","alt+left", etc.
[0.32.3] - 2026-01-03
[0.32.2] - 2026-01-03
Fixed
- Slash command autocomplete now triggers for commands starting with
.,-, or_(e.g.,/.land,/-foo) (#422)
[0.32.1] - 2026-01-03
[0.32.0] - 2026-01-03
Changed
- Editor component now uses word wrapping instead of character-level wrapping for better readability (#382 by @nickseelert)
Fixed
- Shift+Space, Shift+Backspace, and Shift+Delete now work correctly in Kitty-protocol terminals (Kitty, WezTerm, etc.) instead of being silently ignored (#411 by @nathyong)
[0.31.1] - 2026-01-02
Fixed
visibleWidth()now strips OSC 8 hyperlink sequences, fixing text wrapping for clickable links (#396 by @Cursivez)
[0.31.0] - 2026-01-02
Added
isShiftCtrlO()key detection function for Shift+Ctrl+O (Kitty protocol)isShiftCtrlD()key detection function for Shift+Ctrl+D (Kitty protocol)TUI.onDebugcallback for global debug key handling (Shift+Ctrl+D)wrapTextWithAnsi()utility now exported (wraps text to width, preserving ANSI codes)
Changed
- README.md completely rewritten with accurate component documentation, theme interfaces, and examples
visibleWidth()reimplemented with grapheme-based width calculation, 10x faster on Bun and ~15% faster on Node (#369 by @nathyong)
Fixed
- Markdown component now renders HTML tags as plain text instead of silently dropping them (#359)
- Crash in
visibleWidth()and grapheme iteration when encountering undefined code points (#372 by @HACKE-RC) - ZWJ emoji sequences (rainbow flag, family, etc.) now render with correct width instead of being split into multiple characters (#369 by @nathyong)
[0.29.0] - 2025-12-25
Added
- Auto-space before pasted file paths: When pasting a file path (starting with
/,~, or.) and the cursor is after a word character, a space is automatically prepended for better readability. Useful when dragging screenshots from macOS. (#307 by @mitsuhiko) - Word navigation for Input component: Added Ctrl+Left/Right and Alt+Left/Right support for word-by-word cursor movement. (#306 by @kim0)
- Full Unicode input: Input component now accepts Unicode characters beyond ASCII. (#306 by @kim0)