@linxiraos/pi-tui 1.1.27 → 1.2.0
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.
- package/CHANGELOG.md +47 -463
- package/README.md +7 -5
- package/dist/types/app-keybindings.d.ts +1 -1
- package/dist/types/apps/cleanse-board.d.ts +1 -1
- package/dist/types/apps/debug/log-viewer.d.ts +4 -0
- package/dist/types/apps/debug/raw-sse-buffer.d.ts +2 -0
- package/dist/types/apps/git/git-tui.d.ts +2 -2
- package/dist/types/apps/git/help.d.ts +3 -1
- package/dist/types/apps/if-bench-board.d.ts +2 -2
- package/dist/types/apps/setup-model-picker.d.ts +1 -1
- package/dist/types/autocomplete.d.ts +5 -2
- package/dist/types/charts/chart-plan.d.ts +674 -0
- package/dist/types/charts/chart-svg.d.ts +59 -0
- package/dist/types/charts/table-data.d.ts +175 -0
- package/dist/types/chat/assistant-message.d.ts +5 -0
- package/dist/types/chat/chat-transcript-builder.d.ts +2 -0
- package/dist/types/chat/compaction-summary-message.d.ts +1 -0
- package/dist/types/chat/execution-shared.d.ts +6 -5
- package/dist/types/chat/fence-figure.d.ts +42 -0
- package/dist/types/chat/figure-markdown.d.ts +42 -0
- package/dist/types/chat/messages.d.ts +1 -1
- package/dist/types/chat/svg-figure.d.ts +33 -0
- package/dist/types/chat/svg-source.d.ts +49 -0
- package/dist/types/chat/table-chart.d.ts +89 -0
- package/dist/types/chat/tool-execution.d.ts +2 -0
- package/dist/types/chat/user-message.d.ts +15 -2
- package/dist/types/chrome/shared.d.ts +9 -0
- package/dist/types/chrome/transcript-container.d.ts +6 -0
- package/dist/types/components/box.d.ts +1 -0
- package/dist/types/components/disclosure.d.ts +1 -0
- package/dist/types/components/editor.d.ts +15 -4
- package/dist/types/components/form.d.ts +1 -0
- package/dist/types/components/image.d.ts +12 -44
- package/dist/types/components/key-value-list.d.ts +1 -0
- package/dist/types/components/layout/row.d.ts +1 -0
- package/dist/types/components/layout/stack.d.ts +1 -0
- package/dist/types/components/markdown.d.ts +36 -3
- package/dist/types/components/scroll-view.d.ts +1 -0
- package/dist/types/components/section.d.ts +1 -0
- package/dist/types/components/table.d.ts +1 -0
- package/dist/types/components/text.d.ts +1 -0
- package/dist/types/components/tree-view.d.ts +7 -0
- package/dist/types/components/truncated-text.d.ts +1 -0
- package/dist/types/fuzzy.d.ts +29 -1
- package/dist/types/key-hint-format.d.ts +1 -1
- package/dist/types/keybinding-matchers.d.ts +3 -0
- package/dist/types/keybindings.d.ts +1 -1
- package/dist/types/kitty-graphics.d.ts +2 -2
- package/dist/types/loop-watchdog.d.ts +8 -7
- package/dist/types/multiplexers/cmux.d.ts +16 -0
- package/dist/types/multiplexers/herdr.d.ts +26 -0
- package/dist/types/multiplexers/notify.d.ts +13 -0
- package/dist/types/multiplexers/orca.d.ts +12 -0
- package/dist/types/multiplexers/screen.d.ts +9 -0
- package/dist/types/multiplexers/tmux.d.ts +29 -0
- package/dist/types/multiplexers/types.d.ts +100 -0
- package/dist/types/multiplexers/wmux.d.ts +12 -0
- package/dist/types/multiplexers/zellij.d.ts +12 -0
- package/dist/types/native/backend.d.ts +3 -2
- package/dist/types/native/blobs.d.ts +7 -3
- package/dist/types/native/encode.d.ts +3 -4
- package/dist/types/native/overlay.d.ts +5 -0
- package/dist/types/overlays/agent-hub-projection.d.ts +6 -5
- package/dist/types/overlays/agent-hub-types.d.ts +9 -0
- package/dist/types/overlays/agent-hub.d.ts +2 -0
- package/dist/types/overlays/agent-transcript-viewer.d.ts +11 -2
- package/dist/types/overlays/agents-hub.d.ts +9 -0
- package/dist/types/overlays/annotation-overlay.d.ts +19 -2
- package/dist/types/overlays/annotation-types.d.ts +2 -0
- package/dist/types/overlays/ask-dialog.d.ts +5 -2
- package/dist/types/overlays/history-search.d.ts +10 -0
- package/dist/types/overlays/hook-selector.d.ts +9 -4
- package/dist/types/overlays/jobs-panel.d.ts +1 -7
- package/dist/types/overlays/model-browser.d.ts +54 -7
- package/dist/types/overlays/model-hub.d.ts +23 -0
- package/dist/types/overlays/oauth-selector.d.ts +0 -1
- package/dist/types/overlays/plan-review-overlay.d.ts +3 -2
- package/dist/types/overlays/session-observer-registry.d.ts +2 -0
- package/dist/types/overlays/session-selector.d.ts +6 -2
- package/dist/types/overlays/settings-defs.d.ts +1 -0
- package/dist/types/overlays/usage-dashboard.d.ts +8 -4
- package/dist/types/overlays/usage-display.d.ts +3 -1
- package/dist/types/prompt/composer.d.ts +1 -1
- package/dist/types/prompt/custom-editor.d.ts +11 -8
- package/dist/types/prompt/image-source.d.ts +2 -1
- package/dist/types/prompt/interactive-context-helpers.d.ts +4 -1
- package/dist/types/prompt/model-mention-autocomplete.d.ts +1 -1
- package/dist/types/prompt/welcome.d.ts +6 -1
- package/dist/types/render/composite.d.ts +2 -0
- package/dist/types/render/output-pane.d.ts +1 -0
- package/dist/types/render/render-utils.d.ts +1 -0
- package/dist/types/render/tool-card.d.ts +6 -0
- package/dist/types/render/width-aware-text.d.ts +2 -0
- package/dist/types/setup/scenes/types.d.ts +1 -0
- package/dist/types/status-line/component.d.ts +3 -0
- package/dist/types/status-line/host.d.ts +4 -1
- package/dist/types/status-line/segments.d.ts +2 -0
- package/dist/types/status-line/types.d.ts +14 -3
- package/dist/types/terminal-capabilities.d.ts +27 -35
- package/dist/types/terminal-multiplexer.d.ts +127 -14
- package/dist/types/terminal.d.ts +22 -6
- package/dist/types/theme/active-symbols.d.ts +1 -1
- package/dist/types/theme/schema.d.ts +11 -2
- package/dist/types/theme/symbols.d.ts +1 -1
- package/dist/types/theme/theme-class.d.ts +7 -0
- package/dist/types/theme/theme.d.ts +1 -1
- package/dist/types/theme/tui-adapters.d.ts +3 -0
- package/dist/types/tmux.d.ts +11 -4
- package/dist/types/tools/daemon.d.ts +1 -1
- package/dist/types/tools/eval.d.ts +22 -3
- package/dist/types/tools/glob.d.ts +4 -0
- package/dist/types/tools/native-view.d.ts +47 -0
- package/dist/types/tools/output-meta.d.ts +11 -1
- package/dist/types/tools/renderer.d.ts +37 -2
- package/dist/types/tools/streaming-output.d.ts +20 -1
- package/dist/types/tools/task.d.ts +0 -4
- package/dist/types/tools/write.d.ts +9 -2
- package/dist/types/tools/yield.d.ts +22 -0
- package/dist/types/tui.d.ts +31 -0
- package/dist/types/utils.d.ts +6 -0
- package/dist/types/vim.d.ts +19 -5
- package/package.json +13 -9
- package/src/app-keybindings.d.ts +1 -1
- package/src/app-keybindings.ts +1 -1
- package/src/apps/autoresearch-dashboard.ts +7 -3
- package/src/apps/cleanse-board.ts +2 -2
- package/src/apps/cleanse-picker.ts +1 -1
- package/src/apps/debug/log-viewer.ts +188 -72
- package/src/apps/debug/raw-sse-buffer.ts +8 -0
- package/src/apps/debug/raw-sse.ts +39 -5
- package/src/apps/git/diff-pane.ts +26 -5
- package/src/apps/git/git-tui.ts +2 -2
- package/src/apps/git/help.ts +29 -20
- package/src/apps/if-bench-board.ts +2 -2
- package/src/apps/ps-top.ts +2 -2
- package/src/apps/setup-model-picker.ts +1 -1
- package/src/autocomplete.d.ts +5 -2
- package/src/autocomplete.ts +67 -43
- package/src/charts/chart-plan.d.ts +674 -0
- package/src/charts/chart-plan.ts +5081 -0
- package/src/charts/chart-svg.d.ts +59 -0
- package/src/charts/chart-svg.ts +4657 -0
- package/src/charts/table-data.d.ts +175 -0
- package/src/charts/table-data.ts +1478 -0
- package/src/chat/advisor-message.ts +11 -0
- package/src/chat/assistant-message.d.ts +5 -0
- package/src/chat/assistant-message.ts +219 -50
- package/src/chat/chat-transcript-builder.d.ts +2 -0
- package/src/chat/chat-transcript-builder.ts +5 -3
- package/src/chat/compaction-summary-message.d.ts +1 -0
- package/src/chat/compaction-summary-message.ts +8 -0
- package/src/chat/execution-shared.d.ts +6 -5
- package/src/chat/execution-shared.ts +42 -25
- package/src/chat/fence-figure.d.ts +42 -0
- package/src/chat/fence-figure.ts +80 -0
- package/src/chat/figure-markdown.d.ts +42 -0
- package/src/chat/figure-markdown.ts +174 -0
- package/src/chat/messages.d.ts +1 -1
- package/src/chat/messages.ts +1 -1
- package/src/chat/read-tool-group.ts +6 -4
- package/src/chat/skill-message.ts +6 -0
- package/src/chat/svg-figure.d.ts +33 -0
- package/src/chat/svg-figure.ts +399 -0
- package/src/chat/svg-source.d.ts +49 -0
- package/src/chat/svg-source.ts +188 -0
- package/src/chat/table-chart.d.ts +89 -0
- package/src/chat/table-chart.ts +294 -0
- package/src/chat/tool-execution.d.ts +2 -0
- package/src/chat/tool-execution.ts +80 -6
- package/src/chat/user-message.d.ts +15 -2
- package/src/chat/user-message.ts +55 -3
- package/src/chrome/shared.ts +53 -0
- package/src/chrome/transcript-container.d.ts +6 -0
- package/src/chrome/transcript-container.ts +93 -13
- package/src/components/box.d.ts +1 -0
- package/src/components/box.ts +5 -0
- package/src/components/disclosure.d.ts +1 -0
- package/src/components/disclosure.ts +8 -0
- package/src/components/editor.d.ts +15 -4
- package/src/components/editor.ts +294 -46
- package/src/components/form.d.ts +1 -0
- package/src/components/form.ts +8 -0
- package/src/components/image.d.ts +12 -44
- package/src/components/image.ts +47 -151
- package/src/components/key-value-list.d.ts +1 -0
- package/src/components/key-value-list.ts +4 -0
- package/src/components/layout/row.d.ts +1 -0
- package/src/components/layout/row.ts +7 -0
- package/src/components/layout/stack.d.ts +1 -0
- package/src/components/layout/stack.ts +7 -0
- package/src/components/markdown.d.ts +36 -3
- package/src/components/markdown.ts +433 -318
- package/src/components/scroll-view.d.ts +1 -0
- package/src/components/scroll-view.ts +5 -0
- package/src/components/section.d.ts +1 -0
- package/src/components/section.ts +5 -0
- package/src/components/settings-list.ts +2 -0
- package/src/components/table.d.ts +1 -0
- package/src/components/table.ts +4 -0
- package/src/components/text.d.ts +1 -0
- package/src/components/text.ts +7 -0
- package/src/components/tree-view.d.ts +7 -0
- package/src/components/tree-view.ts +38 -8
- package/src/components/truncated-text.d.ts +1 -0
- package/src/components/truncated-text.ts +5 -0
- package/src/desktop-notify.ts +1 -1
- package/src/fuzzy.d.ts +29 -1
- package/src/fuzzy.ts +115 -30
- package/src/key-hint-format.d.ts +1 -1
- package/src/key-hint-format.ts +1 -1
- package/src/keybinding-matchers.d.ts +3 -0
- package/src/keybinding-matchers.ts +6 -2
- package/src/keybindings.d.ts +1 -1
- package/src/keybindings.ts +1 -1
- package/src/kitty-graphics.d.ts +2 -2
- package/src/kitty-graphics.ts +4 -4
- package/src/loop-watchdog.d.ts +8 -7
- package/src/loop-watchdog.ts +18 -13
- package/src/multiplexers/cmux.d.ts +16 -0
- package/src/multiplexers/cmux.ts +29 -0
- package/src/multiplexers/herdr.d.ts +26 -0
- package/src/multiplexers/herdr.ts +64 -0
- package/src/multiplexers/notify.d.ts +13 -0
- package/src/multiplexers/notify.ts +24 -0
- package/src/multiplexers/orca.d.ts +12 -0
- package/src/multiplexers/orca.ts +16 -0
- package/src/multiplexers/screen.d.ts +9 -0
- package/src/multiplexers/screen.ts +15 -0
- package/src/multiplexers/tmux.d.ts +29 -0
- package/src/multiplexers/tmux.ts +40 -0
- package/src/multiplexers/types.d.ts +100 -0
- package/src/multiplexers/types.ts +110 -0
- package/src/multiplexers/wmux.d.ts +12 -0
- package/src/multiplexers/wmux.ts +16 -0
- package/src/multiplexers/zellij.d.ts +12 -0
- package/src/multiplexers/zellij.ts +24 -0
- package/src/native/backend.d.ts +3 -2
- package/src/native/backend.ts +174 -18
- package/src/native/blobs.d.ts +7 -3
- package/src/native/blobs.ts +47 -12
- package/src/native/encode.d.ts +3 -4
- package/src/native/encode.ts +58 -31
- package/src/native/overlay.d.ts +5 -0
- package/src/native/overlay.ts +13 -0
- package/src/native/reconcile.ts +4 -0
- package/src/overlays/agent-hub-projection.d.ts +6 -5
- package/src/overlays/agent-hub-projection.ts +124 -13
- package/src/overlays/agent-hub-types.d.ts +9 -0
- package/src/overlays/agent-hub-types.ts +6 -0
- package/src/overlays/agent-hub.ts +44 -29
- package/src/overlays/agent-transcript-viewer.ts +91 -23
- package/src/overlays/agents-hub.ts +28 -8
- package/src/overlays/annotation-overlay.ts +293 -90
- package/src/overlays/annotation-types.ts +2 -0
- package/src/overlays/ask-dialog.ts +7 -10
- package/src/overlays/btw-history-panel.ts +12 -1
- package/src/overlays/copy-selector.ts +30 -8
- package/src/overlays/extensions/state-manager.ts +52 -12
- package/src/overlays/history-search.ts +100 -7
- package/src/overlays/hook-selector.ts +12 -5
- package/src/overlays/jobs-panel.ts +28 -46
- package/src/overlays/model-browser.ts +341 -110
- package/src/overlays/model-hub.ts +300 -49
- package/src/overlays/move-overlay.ts +28 -14
- package/src/overlays/oauth-selector.ts +54 -70
- package/src/overlays/plan-review-overlay.ts +194 -70
- package/src/overlays/plugin-settings.ts +3 -3
- package/src/overlays/report-panel.ts +2 -2
- package/src/overlays/rewind-selector.ts +86 -17
- package/src/overlays/session-observer-registry.d.ts +2 -0
- package/src/overlays/session-observer-registry.ts +10 -2
- package/src/overlays/session-selector.ts +64 -26
- package/src/overlays/settings-defs.ts +4 -3
- package/src/overlays/settings-selector.ts +33 -8
- package/src/overlays/snapcompact-shape-preview.ts +2 -3
- package/src/overlays/stats-notice.ts +1 -1
- package/src/overlays/tree-selector.ts +41 -20
- package/src/overlays/usage-dashboard.ts +100 -50
- package/src/overlays/usage-display.ts +10 -4
- package/src/prompt/attachment-chips.ts +15 -11
- package/src/prompt/composer-attachments.ts +6 -4
- package/src/prompt/composer.ts +4 -15
- package/src/prompt/custom-editor.ts +54 -26
- package/src/prompt/image-source.ts +2 -1
- package/src/prompt/interactive-context-helpers.ts +30 -18
- package/src/prompt/macos-spelling.ts +7 -0
- package/src/prompt/magic-keywords.ts +11 -2
- package/src/prompt/model-mention-autocomplete.ts +14 -14
- package/src/prompt/tips.txt +6 -5
- package/src/prompt/welcome.ts +55 -12
- package/src/prompt/word-completion.ts +38 -5
- package/src/render/composite.d.ts +2 -0
- package/src/render/composite.ts +64 -0
- package/src/render/output-pane.d.ts +1 -0
- package/src/render/output-pane.ts +6 -0
- package/src/render/render-utils.d.ts +1 -0
- package/src/render/render-utils.ts +11 -0
- package/src/render/tool-card.d.ts +6 -0
- package/src/render/tool-card.ts +15 -0
- package/src/render/width-aware-text.d.ts +2 -0
- package/src/render/width-aware-text.ts +5 -0
- package/src/setup/scenes/model.ts +2 -1
- package/src/setup/scenes/types.ts +1 -0
- package/src/status-line/component.ts +292 -78
- package/src/status-line/host.ts +4 -1
- package/src/status-line/segments.ts +40 -22
- package/src/status-line/types.ts +15 -3
- package/src/terminal-capabilities.d.ts +27 -35
- package/src/terminal-capabilities.ts +75 -189
- package/src/terminal-multiplexer.d.ts +127 -14
- package/src/terminal-multiplexer.ts +112 -33
- package/src/terminal.d.ts +22 -6
- package/src/terminal.ts +139 -37
- package/src/theme/active-symbols.d.ts +1 -1
- package/src/theme/active-symbols.ts +1 -1
- package/src/theme/schema-validation.ts +1 -0
- package/src/theme/schema.d.ts +11 -2
- package/src/theme/schema.ts +14 -1
- package/src/theme/session-color.ts +1 -7
- package/src/theme/symbols.d.ts +1 -1
- package/src/theme/symbols.ts +6 -1
- package/src/theme/theme-class.d.ts +7 -0
- package/src/theme/theme-class.ts +26 -1
- package/src/theme/theme-schema.json +5 -1
- package/src/theme/theme.d.ts +1 -1
- package/src/theme/theme.ts +8 -4
- package/src/theme/tui-adapters.d.ts +3 -0
- package/src/theme/tui-adapters.ts +68 -0
- package/src/tmux.d.ts +11 -4
- package/src/tmux.ts +47 -11
- package/src/tools/ast-edit.ts +59 -35
- package/src/tools/ast-grep.ts +35 -16
- package/src/tools/bash.ts +92 -42
- package/src/tools/daemon.d.ts +1 -1
- package/src/tools/daemon.ts +1 -1
- package/src/tools/default-renderer.ts +35 -19
- package/src/tools/edit.ts +142 -120
- package/src/tools/eval-format/index.ts +28 -2
- package/src/tools/eval-format/javascript.ts +7 -5
- package/src/tools/eval.d.ts +22 -3
- package/src/tools/eval.ts +364 -208
- package/src/tools/fetch.ts +5 -6
- package/src/tools/glob.d.ts +4 -0
- package/src/tools/glob.ts +33 -65
- package/src/tools/grep.ts +81 -48
- package/src/tools/index.ts +2 -0
- package/src/tools/lsp.ts +81 -59
- package/src/tools/mcp.ts +111 -68
- package/src/tools/native-view.d.ts +47 -0
- package/src/tools/native-view.ts +102 -1
- package/src/tools/output-meta.d.ts +11 -1
- package/src/tools/output-meta.ts +23 -3
- package/src/tools/read.ts +7 -5
- package/src/tools/renderer.d.ts +37 -2
- package/src/tools/renderer.ts +42 -2
- package/src/tools/streaming-output.d.ts +20 -1
- package/src/tools/streaming-output.ts +149 -50
- package/src/tools/task.d.ts +0 -4
- package/src/tools/task.ts +112 -59
- package/src/tools/todo.ts +119 -30
- package/src/tools/wait.ts +34 -24
- package/src/tools/web-search.ts +1 -1
- package/src/tools/write.d.ts +9 -2
- package/src/tools/write.ts +147 -95
- package/src/tools/yield.d.ts +22 -0
- package/src/tools/yield.ts +225 -0
- package/src/tui.d.ts +31 -0
- package/src/tui.ts +309 -160
- package/src/utils.d.ts +6 -0
- package/src/utils.ts +19 -0
- package/src/vim.d.ts +19 -5
- package/src/vim.ts +333 -18
- package/src/windows-input-mode.ts +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,414 +1,71 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
1
|
## [Unreleased]
|
|
4
2
|
|
|
5
|
-
## [1.
|
|
6
|
-
|
|
7
|
-
- 版本线推进至 1.1.27;本版无独立用户可见变化。
|
|
8
|
-
|
|
9
|
-
- Inline images now retire to native scrollback as soon as their transcript block finalizes instead of waiting for row pressure or shutdown, so terminals whose live-region sixel does not stick (Windows Terminal) show images in real time; the exit-time history flush remains as the fallback.
|
|
10
|
-
|
|
11
|
-
## [14.9.8] - 2026-05-12
|
|
12
|
-
|
|
13
|
-
### Added
|
|
14
|
-
|
|
15
|
-
- Added `Terminal.setProgress(active)` to emit OSC 9;4 progress sequences with a ~1s keepalive interval so Ghostty does not clear the indicator during long-running work (ports pi-mono `a900d251` + `76bc605a`)
|
|
16
|
-
- Added optional `argumentHint?: string` to `SlashCommand`; rendered before the description in the autocomplete dropdown (ports pi-mono `aa25726e`)
|
|
17
|
-
- Added `VirtualTerminal.waitForRender()` test helper for the throttled render pipeline (ports pi-mono `41377ee8`)
|
|
18
|
-
|
|
19
|
-
### Changed
|
|
20
|
-
|
|
21
|
-
- `ProcessTerminal` `columns`/`rows` getters consult `Bun.env.COLUMNS` / `Bun.env.LINES` before falling back to 80×24, so piped/non-TTY runs honour environment-provided dimensions (ports pi-mono `32f7fc6a`)
|
|
22
|
-
- `requestRender()` non-force calls are coalesced to a ~16ms frame budget; `requestRender(true)` still flushes immediately via `process.nextTick` (ports pi-mono `6f5f37f8`)
|
|
23
|
-
- `KNOWN_TERMINALS.base` / `KNOWN_TERMINALS.trueColor` default `hyperlinks: false`; tmux and screen (`TMUX` env or `TERM` starts with `tmux`/`screen`) force `hyperlinks: false` even when the outer terminal would advertise OSC 8 (adapts pi-mono `30a8a41f`)
|
|
24
|
-
- `SlashCommand.getArgumentCompletions()` may return a `Promise`; results are now awaited and non-array returns are ignored (ports pi-mono `a1e10789`)
|
|
25
|
-
- Fuzzy `@` autocomplete now follows symlinked directories via `ScanOptions.follow_links` plumbed through the native walker (ports pi-mono `780d5367`)
|
|
26
|
-
- Plain `@<query>` (no slash) fuzzy matches by basename only, so `@plan` no longer surfaces every file whose ancestor directories contain `plan` (ports pi-mono `968430f6`)
|
|
27
|
-
- Changed slash-command autocomplete list rendering to combine command hint and description in a single displayed suggestion text
|
|
28
|
-
- Changed render scheduling to throttle `requestRender` calls to roughly 60fps by batching updates
|
|
29
|
-
- Changed terminal input handling to process complete cell-size responses without buffering partial input
|
|
30
|
-
- Changed `KeyId` to accept super-modifier combinations and improve typed key-id validation
|
|
31
|
-
|
|
32
|
-
### Fixed
|
|
33
|
-
|
|
34
|
-
- Fixed editor corruption on Thai Sara Am (U+0E33) and Lao AM (U+0EB3) vowels by normalizing to their compatibility decompositions on the terminal-write path while keeping editor content logically unchanged (ports pi-mono `bc668826` + `338ce3a3` + `20ca45d5`)
|
|
35
|
-
- Fixed cell-size detection (`CSI 6;h;w t` response) to consume only exact replies, so a bare `Escape` keystroke is no longer swallowed while waiting for terminal image metadata (ports pi-mono `49c0d860`)
|
|
36
|
-
- Fixed Kitty CSI-u printable input duplicating on layouts (e.g. Italian) where the terminal also emits the raw character: the immediately-following matching codepoint is now suppressed (ports pi-mono `bdb416cb`)
|
|
37
|
-
- Fixed bracketed-paste CSI-u `Ctrl+<letter>` re-encoding (tmux popup with `extended-keys-format=csi-u`) leaking literal `[<code>;5u` into the editor; control bytes are decoded back to their literal byte before per-char filtering (ports pi-mono `d06db09a`)
|
|
38
|
-
- Fixed xterm `modifyOtherKeys` shifted printable input so uppercase letters inserted via `CSI 27;mod;codepoint~` reach the editor correctly (ports pi-mono `6b55d685`)
|
|
39
|
-
- Fixed `super`-modified Kitty shortcuts (`super+k`, `ctrl+super+enter`, …) to parse and match via the new `KITTY_MOD_SUPER` mask (ports pi-mono `ddb8454c` + `5ed46003`)
|
|
40
|
-
- Fixed `ctrl+alt+<letter>` in tmux falling through to CSI-u / `modifyOtherKeys` when the legacy `ESC<ctrl-char>` form does not match (ports pi-mono `6cf5098f`)
|
|
41
|
-
- Fixed Markdown strikethrough requiring strict `~~text~~` delimiters with non-whitespace boundaries; single tildes no longer render strikethrough (ports pi-mono `db5274b4`)
|
|
42
|
-
- Allowed `SlashCommand.getArgumentCompletions` to return asynchronous results by accepting Promise-based completions
|
|
43
|
-
- Added `argumentHint` support to slash command definitions and displayed it in command suggestion descriptions
|
|
44
|
-
- Added support for xterm `modifyOtherKeys` printable key sequences by decoding `CSI 27;mod;key~` into text input
|
|
45
|
-
- Normalized line output during rendering to correct Thai/Lao AM glyph composition for displayed text
|
|
46
|
-
- Fixed duplicated Kitty key input emissions by dropping the matching unmodified follow-up sequence after a Kitty CSI-u printable-key event
|
|
47
|
-
|
|
48
|
-
## [14.9.5] - 2026-05-12
|
|
49
|
-
|
|
50
|
-
### Fixed
|
|
51
|
-
|
|
52
|
-
- Fixed rapidly blinking cursor artifact during task execution by consolidating cursor control sequences into the synchronized output buffer ([#992](https://github.com/can1357/oh-my-pi/issues/992))
|
|
53
|
-
|
|
54
|
-
## [14.5.7] - 2026-04-29
|
|
55
|
-
|
|
56
|
-
### Fixed
|
|
57
|
-
|
|
58
|
-
- Fixed editor Ctrl+Enter handling to recognize NumLock and keypad Enter variants.
|
|
59
|
-
|
|
60
|
-
## [14.3.0] - 2026-04-25
|
|
61
|
-
|
|
62
|
-
### Fixed
|
|
63
|
-
|
|
64
|
-
- Fixed shared Markdown Mermaid fenced-block rendering to resolve diagrams from fenced source text instead of external prerender state
|
|
65
|
-
|
|
66
|
-
## [14.1.1] - 2026-04-14
|
|
67
|
-
|
|
68
|
-
### Breaking Changes
|
|
69
|
-
|
|
70
|
-
- Removed the `searchDb` constructor argument from `CombinedAutocompleteProvider`, requiring callers to use the built-in search behavior
|
|
71
|
-
|
|
72
|
-
### Changed
|
|
73
|
-
|
|
74
|
-
- Changed truncation debug logging to run only when `debugRedraw` is enabled
|
|
75
|
-
|
|
76
|
-
## [14.0.5] - 2026-04-11
|
|
77
|
-
|
|
78
|
-
### Changed
|
|
79
|
-
|
|
80
|
-
- Updated hash computation to use `Bun.hash()` instead of `Bun.hash.xxHash64()`, which may return `number` in addition to `bigint`
|
|
81
|
-
- Simplified cache key computation in Box component by removing intermediate hash updates and consolidating hash operations
|
|
82
|
-
- Wrapped native text utility functions (`sliceWithWidth`, `truncateToWidth`, `wrapTextWithAnsi`, `extractSegments`) to automatically pass the current default tab width, simplifying the API for consumers
|
|
83
|
-
- Added `getIndentationNoescape` wrapper that uses `process.cwd()` as the project root for relative file paths
|
|
84
|
-
- Re-export `getDefaultTabWidth`, `getIndentation`, and `setDefaultTabWidth` from `@linxiraos/pi-utils`; native text helpers still receive tab width via wrappers that read the JS default
|
|
85
|
-
|
|
86
|
-
## [13.16.1] - 2026-03-27
|
|
87
|
-
|
|
88
|
-
### Added
|
|
89
|
-
|
|
90
|
-
- Support for optional SearchDb parameter in CombinedAutocompleteProvider constructor for improved fuzzy search performance
|
|
91
|
-
- Fuzzy matching filter for autocomplete suggestions to improve relevance of results
|
|
92
|
-
|
|
93
|
-
### Changed
|
|
94
|
-
|
|
95
|
-
- Fuzzy discovery now applies fuzzy matching filter to results for improved relevance of autocomplete suggestions
|
|
96
|
-
- Autocomplete fuzzy discovery now accepts optional SearchDb instance for faster searches
|
|
97
|
-
|
|
98
|
-
## [13.16.0] - 2026-03-27
|
|
99
|
-
|
|
100
|
-
### Changed
|
|
101
|
-
|
|
102
|
-
- Updated tab replacement in editor text sanitization to respect configured tab width setting
|
|
103
|
-
|
|
104
|
-
## [13.15.0] - 2026-03-23
|
|
105
|
-
|
|
106
|
-
### Added
|
|
107
|
-
|
|
108
|
-
- Added `renderInlineMarkdown()` function to render inline markdown (bold, italic, code, links, strikethrough) to styled strings
|
|
109
|
-
|
|
110
|
-
### Fixed
|
|
111
|
-
|
|
112
|
-
- Fixed editor consuming user-rebound copy keys, preventing custom keybindings from working in the editor
|
|
113
|
-
|
|
114
|
-
## [13.14.1] - 2026-03-21
|
|
115
|
-
|
|
116
|
-
### Added
|
|
117
|
-
|
|
118
|
-
- Added Ctrl+_ as an additional default shortcut for undo
|
|
119
|
-
|
|
120
|
-
### Fixed
|
|
121
|
-
|
|
122
|
-
- Ensured undo functionality respects user-configured keybindings
|
|
123
|
-
|
|
124
|
-
## [13.12.0] - 2026-03-14
|
|
125
|
-
|
|
126
|
-
### Added
|
|
127
|
-
|
|
128
|
-
- Added `moveToMessageStart()` and `moveToMessageEnd()` methods to move cursor to the beginning and end of the entire message
|
|
129
|
-
|
|
130
|
-
### Fixed
|
|
131
|
-
|
|
132
|
-
- Fixed autocomplete to preserve `./` prefix when completing relative file and directory paths
|
|
133
|
-
- Fixed paste marker expansion to handle special regex replacement tokens ($1, $2, $&, $$, $`, $') literally in pasted content
|
|
134
|
-
|
|
135
|
-
## [13.11.0] - 2026-03-12
|
|
136
|
-
|
|
137
|
-
### Fixed
|
|
138
|
-
|
|
139
|
-
- Fixed OSC 11 background color detection to correctly handle partial escape sequences that arrive mid-buffer, preventing user input from being swallowed
|
|
140
|
-
- Fixed race condition where overlapping OSC 11 queries would be incorrectly cancelled by DA1 sentinels from previous queries
|
|
141
|
-
|
|
142
|
-
## [13.7.5] - 2026-03-04
|
|
143
|
-
|
|
144
|
-
### Changed
|
|
145
|
-
|
|
146
|
-
- Extracted word navigation logic into reusable `moveWordLeft` and `moveWordRight` utility functions for consistent cursor movement across components
|
|
147
|
-
|
|
148
|
-
## [13.6.2] - 2026-03-03
|
|
149
|
-
|
|
150
|
-
### Fixed
|
|
151
|
-
|
|
152
|
-
- Fixed cursor positioning when content shrinks to empty without clearOnShrink enabled
|
|
153
|
-
|
|
154
|
-
## [13.5.4] - 2026-03-01
|
|
155
|
-
|
|
156
|
-
### Fixed
|
|
157
|
-
|
|
158
|
-
- Fixed viewport repaint scrollback accounting during resize oscillation to avoid double-scrolling on height shrink and added exact-row scrollback assertions in overlay regression coverage ([#228](https://github.com/can1357/oh-my-pi/issues/228), [#234](https://github.com/can1357/oh-my-pi/issues/234))
|
|
159
|
-
|
|
160
|
-
## [13.5.3] - 2026-03-01
|
|
161
|
-
|
|
162
|
-
### Fixed
|
|
163
|
-
|
|
164
|
-
- Fixed append rendering logic to correctly handle offscreen header changes during content overflow growth, preserving scroll history integrity
|
|
165
|
-
- Fixed visible tail line updates when appending new content during viewport overflow conditions
|
|
166
|
-
- Fixed cursor positioning instability when appending content under external cursor relocation by using absolute screen addressing instead of relative cursor movement
|
|
167
|
-
|
|
168
|
-
## [13.5.2] - 2026-03-01
|
|
169
|
-
|
|
170
|
-
### Breaking Changes
|
|
171
|
-
|
|
172
|
-
- Removed `getMermaidImage` callback from MarkdownTheme; replaced with `getMermaidAscii` that accepts ASCII string instead of image data
|
|
173
|
-
- Removed mermaid module exports (`renderMermaidToPng`, `extractMermaidBlocks`, `prerenderMermaidBlocks`, `MermaidImage` interface)
|
|
174
|
-
|
|
175
|
-
### Changed
|
|
176
|
-
|
|
177
|
-
- Mermaid diagrams now render as ASCII text instead of terminal graphics protocol images
|
|
178
|
-
|
|
179
|
-
## [13.5.1] - 2026-03-01
|
|
180
|
-
|
|
181
|
-
### Fixed
|
|
182
|
-
|
|
183
|
-
- Fixed viewport shift handling to prevent stale content when mixed updates remap screen rows
|
|
184
|
-
|
|
185
|
-
## [13.5.0] - 2026-03-01
|
|
186
|
-
|
|
187
|
-
### Breaking Changes
|
|
188
|
-
|
|
189
|
-
- Removed `PI_TUI_RESIZE_CLEAR_STRATEGY`; resize behavior is no longer configurable between viewport/scrollback modes. The renderer now uses fixed semantics: width changes perform a hard reset (`3J` + full content rewrite), while height changes and diff fallbacks use viewport-scoped repainting.
|
|
190
|
-
|
|
191
|
-
### Added
|
|
192
|
-
|
|
193
|
-
- Added a new terminal regression suite in `packages/tui/test/render-regressions.test.ts` covering no-op render stability, targeted middle-line diffs, shrink cleanup, width-resize truncation without ghost rows, shrink/grow viewport tail anchoring, scrollback deduplication across forced redraws, overlay restore behavior, and rapid mutation convergence.
|
|
194
|
-
- Expanded `packages/tui/test/overlay-scroll.test.ts` with stress coverage for overflow shrink/regrow cycles, resize oscillation, overlay toggle churn, no-op render loops, and hardware-cursor-only updates while bounding scrollback growth and blank-run artifacts.
|
|
195
|
-
|
|
196
|
-
### Changed
|
|
197
|
-
|
|
198
|
-
- Refactored render orchestration to explicit `hardReset` and `viewportRepaint` paths, with targeted fallbacks for offscreen diff ranges and unsafe row deltas.
|
|
199
|
-
- Switched startup to `requestRender(true)` so the first frame always initializes renderer state with a forced full path.
|
|
200
|
-
- Replaced legacy viewport bookkeeping (`previousViewportTop`) with `viewportTopRow` tracking and consistent screen-relative cursor calculations.
|
|
201
|
-
- Updated stop-sequence cursor placement to target the visible working area and clamp to terminal bounds before final newline emission.
|
|
202
|
-
- Documented the intentional performance policy of not forcing full repaint on every viewport-top shift, relying on narrower safety guards instead.
|
|
203
|
-
|
|
204
|
-
### Fixed
|
|
205
|
-
|
|
206
|
-
- Fixed stale/duplicated terminal cursor dedup state by synchronizing `#lastCursorSequence` in all render write paths (hard reset, viewport repaint, deleted-lines clear path, append fast path, and differential path).
|
|
207
|
-
- Fixed scroll overshoot on `stop()` when content fills the viewport by clamping target row movement to valid screen rows.
|
|
208
|
-
|
|
209
|
-
## [13.4.0] - 2026-03-01
|
|
210
|
-
|
|
211
|
-
### Added
|
|
212
|
-
|
|
213
|
-
- Added `PI_TUI_RESIZE_CLEAR_STRATEGY` environment variable to control terminal behavior on resize: `viewport` (default) clears/redraws the viewport while preserving scrollback, or `scrollback` clears all history
|
|
214
|
-
|
|
215
|
-
### Changed
|
|
216
|
-
|
|
217
|
-
- Changed resize redraw behavior to use configurable clear semantics (`viewport` vs `scrollback`) while keeping full content rendering for scrollback navigation
|
|
218
|
-
|
|
219
|
-
### Fixed
|
|
220
|
-
|
|
221
|
-
- Fixed loader component rendering lines wider than terminal width, preventing text overflow and display artifacts
|
|
222
|
-
|
|
223
|
-
## [13.3.11] - 2026-02-28
|
|
224
|
-
|
|
225
|
-
### Fixed
|
|
226
|
-
|
|
227
|
-
- Restored terminal image protocol override and fallback detection for image rendering, including `PI_FORCE_IMAGE_PROTOCOL` support and Kitty fallback for screen/tmux/ghostty-style TERM environments.
|
|
228
|
-
|
|
229
|
-
## [13.3.8] - 2026-02-28
|
|
230
|
-
|
|
231
|
-
### Breaking Changes
|
|
232
|
-
|
|
233
|
-
- Changed mermaid hash type from string to bigint in `getMermaidImage` callback and `extractMermaidBlocks` return type
|
|
234
|
-
- Removed `mime-types` and `@types/mime-types` from dependencies
|
|
235
|
-
- Removed `@xterm/xterm` from dependencies
|
|
236
|
-
|
|
237
|
-
### Changed
|
|
238
|
-
|
|
239
|
-
- Updated mermaid hash computation to use `Bun.hash.xxHash64()` instead of `Bun.hash().toString(16)`
|
|
240
|
-
|
|
241
|
-
## [12.19.0] - 2026-02-22
|
|
242
|
-
|
|
243
|
-
### Added
|
|
244
|
-
|
|
245
|
-
- Added `getTopBorderAvailableWidth()` method to calculate available width for top border content accounting for border characters and padding
|
|
246
|
-
|
|
247
|
-
### Fixed
|
|
248
|
-
|
|
249
|
-
- Fixed stale viewport rows appearing when terminal height increases by triggering full re-render on height changes
|
|
250
|
-
|
|
251
|
-
## [12.18.0] - 2026-02-21
|
|
252
|
-
|
|
253
|
-
### Fixed
|
|
254
|
-
|
|
255
|
-
- Fixed viewport synchronization issue by clearing scrollback when terminal state becomes desynced during full re-renders
|
|
256
|
-
|
|
257
|
-
## [12.12.2] - 2026-02-19
|
|
258
|
-
|
|
259
|
-
### Fixed
|
|
260
|
-
|
|
261
|
-
- Fixed non-forced full re-renders clearing terminal scrollback history during streaming updates by limiting scrollback clears to explicit forced re-renders.
|
|
262
|
-
|
|
263
|
-
## [12.12.0] - 2026-02-19
|
|
264
|
-
|
|
265
|
-
### Added
|
|
266
|
-
|
|
267
|
-
- Added PageUp/PageDown navigation for editor content and autocomplete selection to jump across long wrapped inputs faster.
|
|
268
|
-
|
|
269
|
-
### Fixed
|
|
270
|
-
|
|
271
|
-
- Fixed history-entry navigation anchoring (Up opens at top, Down opens at bottom) and preserved editor scroll context when max-height changes to keep cursor movement visible in long prompts ([#99](https://github.com/can1357/oh-my-pi/issues/99)).
|
|
272
|
-
|
|
273
|
-
## [12.11.3] - 2026-02-19
|
|
3
|
+
## [1.2.0] - 2026-10-12
|
|
274
4
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
- Fixed differential deleted-line rendering when content shrinks to empty so stale first-row content is cleared reliably.
|
|
278
|
-
- Fixed incremental stale-row clearing to use erase-below semantics in synchronized output, reducing leftover-line artifacts after shrink operations.
|
|
279
|
-
|
|
280
|
-
## [12.9.0] - 2026-02-17
|
|
281
|
-
|
|
282
|
-
### Added
|
|
283
|
-
|
|
284
|
-
- Exported `getTerminalId()` function to get a stable identifier for the current terminal, with support for TTY device paths and terminal multiplexers
|
|
285
|
-
- Exported `getTtyPath()` function to resolve the TTY device path for stdin via POSIX `ttyname(3)`
|
|
286
|
-
|
|
287
|
-
## [12.5.0] - 2026-02-15
|
|
288
|
-
|
|
289
|
-
### Added
|
|
290
|
-
|
|
291
|
-
- Added `cursorOverride` and `cursorOverrideWidth` properties to customize the end-of-text cursor glyph with ANSI-styled strings
|
|
292
|
-
- Added `getUseTerminalCursor()` method to query the terminal cursor mode setting
|
|
293
|
-
|
|
294
|
-
## [11.10.0] - 2026-02-10
|
|
295
|
-
|
|
296
|
-
### Added
|
|
297
|
-
|
|
298
|
-
- Added `hint` property to autocomplete items to display dim ghost text after cursor when item is selected
|
|
299
|
-
- Added `getInlineHint()` method to `SlashCommand` interface for providing inline hint text based on argument state
|
|
300
|
-
- Added `getInlineHint()` method to `AutocompleteProvider` interface for displaying dim ghost text after cursor
|
|
301
|
-
- Added `hintStyle` theme option to customize styling of inline hint/ghost text in editor
|
|
302
|
-
|
|
303
|
-
### Changed
|
|
304
|
-
|
|
305
|
-
- Updated editor to render inline hint text as dim ghost text after cursor when autocomplete suggestions are active or provider supplies hints
|
|
306
|
-
|
|
307
|
-
## [11.8.0] - 2026-02-10
|
|
308
|
-
|
|
309
|
-
### Added
|
|
310
|
-
|
|
311
|
-
- Added Alt+Y keybinding to cycle through kill ring entries (yank-pop)
|
|
312
|
-
- Added undo support to Input component with Ctrl+Z keybinding
|
|
313
|
-
- Added kill ring support to Input component for Emacs-style kill/yank operations
|
|
314
|
-
- Added yank (Ctrl+Y) and yank-pop (Alt+Y) support to Input component
|
|
315
|
-
|
|
316
|
-
### Changed
|
|
317
|
-
|
|
318
|
-
- Changed Editor kill ring implementation to use dedicated KillRing class for better state management
|
|
319
|
-
- Changed Editor undo stack to use generic UndoStack class with automatic state cloning
|
|
320
|
-
- Changed kill/yank behavior to properly accumulate consecutive kill operations
|
|
321
|
-
- Changed Input component deletion methods to record killed text in kill ring
|
|
322
|
-
- Changed undo coalescing in Input component to group consecutive word typing into single undo units
|
|
323
|
-
|
|
324
|
-
## [11.4.1] - 2026-02-06
|
|
325
|
-
|
|
326
|
-
### Fixed
|
|
327
|
-
|
|
328
|
-
- Fixed terminal scrolling when displaying overlays after rendering large content, preventing hundreds of blank lines from being output
|
|
329
|
-
|
|
330
|
-
## [11.3.0] - 2026-02-06
|
|
5
|
+
- Added cache-release hooks for TUI components and tool cards, allowing extensions to discard derived render data without rebuilding content ([#13632](https://github.com/can1357/oh-my-pi/pull/13632) by [@iliaal](https://github.com/iliaal)).
|
|
331
6
|
|
|
332
7
|
### Breaking Changes
|
|
333
8
|
|
|
334
|
-
-
|
|
9
|
+
- **Key detection functions removed**: All `isXxx()` key detection functions (`isEnter()`, `isEscape()`, `isCtrlC()`, etc.) have been removed. Use `matchesKey(data, keyId)` instead (e.g., `matchesKey(data, "enter")`, `matchesKey(data, "ctrl+c")`). This affects hooks and custom tools that use `ctx.ui.custom()` with keyboard input handling. ([#405](https://github.com/badlogic/pi-mono/pull/405))
|
|
335
10
|
|
|
336
11
|
### Added
|
|
337
12
|
|
|
338
|
-
-
|
|
339
|
-
-
|
|
340
|
-
-
|
|
341
|
-
-
|
|
13
|
+
- Add backslash+enter newline fallback for terminals without Kitty protocol
|
|
14
|
+
- Overlay compositing via `TUI.showOverlay()` and `TUI.hideOverlay()` for `ctx.ui.custom()` with `{ overlay: true }`
|
|
15
|
+
- Kitty keyboard protocol flag 2 support for key release events (`isKeyRelease()`, `isKeyRepeat()`, `KeyEventType`)
|
|
16
|
+
- `setKittyProtocolActive()`, `isKittyProtocolActive()` for Kitty protocol state management
|
|
17
|
+
- `kittyProtocolActive` property on Terminal interface to query Kitty protocol state
|
|
18
|
+
- `Component.wantsKeyRelease` property to opt-in to key release events (default false)
|
|
19
|
+
- Input component `onEscape` callback for handling escape key presses
|
|
20
|
+
- Emergency terminal restore to prevent corrupted state on crashes
|
|
21
|
+
- Overhauled UI with welcome screen and powerline footer
|
|
22
|
+
- Theme-configurable HTML export colors
|
|
23
|
+
- `ctx.ui.theme` getter for styling status text with theme colors
|
|
24
|
+
- Added `PI_TUI_WRITE_LOG` environment variable to capture raw ANSI output for debugging
|
|
25
|
+
- 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))
|
|
26
|
+
- `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))
|
|
27
|
+
- New exported types: `OverlayAnchor`, `OverlayHandle`, `OverlayMargin`, `OverlayOptions`, `SizeValue` ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
|
|
28
|
+
- `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))
|
|
29
|
+
- **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))
|
|
30
|
+
- `EditorComponent` interface for custom editor implementations
|
|
31
|
+
- `StdinBuffer` class to split batched stdin into individual sequences (adapted from [OpenTUI](https://github.com/anomalyco/opentui), MIT license)
|
|
32
|
+
- `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))
|
|
342
33
|
|
|
343
34
|
### Changed
|
|
344
35
|
|
|
345
|
-
-
|
|
346
|
-
-
|
|
347
|
-
-
|
|
348
|
-
- Refactored full-render logic into reusable helper function to reduce code duplication across multiple render paths
|
|
349
|
-
- Changed autocomplete to include hidden paths but filter out `.git` and its contents
|
|
350
|
-
- Changed Input component to properly handle surrogate pairs in Unicode text, preventing cursor display corruption with emoji and multi-byte characters
|
|
351
|
-
- Changed Editor to use `setCursorCol()` for all cursor column updates, enabling sticky column tracking
|
|
352
|
-
- Changed Editor's vertical navigation to implement sticky column logic via `moveToVisualLine()` and `computeVerticalMoveColumn()`
|
|
353
|
-
- Changed Editor's Enter key handling to extract submit logic into `submitValue()` method for better code organization
|
|
354
|
-
- Changed SettingsList to truncate long lines to viewport width, preventing text overflow
|
|
355
|
-
- Changed Terminal's `stop()` method to drain stdin before restoring raw mode, fixing race condition where Ctrl+D could close parent shell over SSH
|
|
356
|
-
- Changed TUI rendering to add `clearOnShrink` option (controlled by `PI_CLEAR_ON_SHRINK` env var) for reducing redraws on slower terminals
|
|
357
|
-
- Changed TUI rendering to detect when extra lines exceed viewport height and trigger full re-render instead of incremental updates
|
|
36
|
+
- Moved `wrapTextWithAnsi` export to `@linxiraos/pi-natives` package
|
|
37
|
+
- Default editor `newLine` binding now uses `shift+enter` only
|
|
38
|
+
- 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).
|
|
358
39
|
|
|
359
40
|
### Fixed
|
|
360
41
|
|
|
361
|
-
-
|
|
362
|
-
- Fixed
|
|
363
|
-
- Fixed
|
|
364
|
-
- Fixed
|
|
365
|
-
- Fixed
|
|
366
|
-
- Fixed
|
|
367
|
-
- Fixed
|
|
368
|
-
- Fixed
|
|
369
|
-
-
|
|
370
|
-
-
|
|
371
|
-
-
|
|
372
|
-
-
|
|
373
|
-
-
|
|
374
|
-
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
### Added
|
|
379
|
-
|
|
380
|
-
- Introduced `terminal-capabilities.ts` module consolidating terminal detection and image protocol support
|
|
381
|
-
- Added `TerminalInfo` class with methods for detecting image lines and formatting notifications
|
|
382
|
-
- Added `NotifyProtocol` enum supporting Bell, OSC 99, and OSC 9 notification protocols
|
|
383
|
-
- Added `isNotificationSuppressed()` function to check `OMP_NOTIFICATIONS` environment variable
|
|
384
|
-
- Added `TERMINAL` constant providing detected terminal capabilities at runtime
|
|
385
|
-
|
|
386
|
-
### Changed
|
|
42
|
+
- Remove trailing space padding from Text, Markdown, and TruncatedText components when no background color is set (fixes copied text including unwanted whitespace)
|
|
43
|
+
- Fixed Ctrl+Enter sequences to insert new lines in the editor
|
|
44
|
+
- Fixed `fd` tool detection to automatically find `fd` or `fdfind` in PATH when not explicitly configured
|
|
45
|
+
- Fixed editor multi-line insertion handling and lastAction tracking ([#945](https://github.com/badlogic/pi-mono/pull/945) by [@Perlence](https://github.com/Perlence))
|
|
46
|
+
- Fixed editor word wrapping to reserve a cursor column ([#934](https://github.com/badlogic/pi-mono/pull/934) by [@Perlence](https://github.com/Perlence))
|
|
47
|
+
- 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))
|
|
48
|
+
- Fixed Kitty image ID allocation and cleanup to prevent image ID collisions between modules
|
|
49
|
+
- Fixed viewport tracking and cursor positioning for overlays and content shrink scenarios
|
|
50
|
+
- 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))
|
|
51
|
+
- Directory completions for `@` file attachments no longer add trailing space, allowing continued autocomplete into subdirectories
|
|
52
|
+
- `visibleWidth()` and `extractAnsiCode()` now handle APC escape sequences (`ESC _ ... BEL`), fixing width calculation and string slicing for strings containing cursor markers
|
|
53
|
+
- 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))
|
|
54
|
+
- Reset ANSI styles after each rendered line to prevent style leakage
|
|
55
|
+
- Cursor position tracking when content shrinks with unchanged remaining lines
|
|
56
|
+
- TUI renders with wrong dimensions after suspend/resume if terminal was resized while suspended ([#599](https://github.com/badlogic/pi-mono/issues/599))
|
|
57
|
+
- 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))
|
|
58
|
+
- `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))
|
|
387
59
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
- Changed hardware cursor environment variable from `OMP_HARDWARE_CURSOR` to `PI_HARDWARE_CURSOR`
|
|
391
|
-
- Updated environment variable access to use `getEnv()` utility function from `@linxiraos/pi-utils` for consistent handling
|
|
392
|
-
- Renamed `TERMINAL_INFO` export to `TERMINAL` for clearer API semantics
|
|
393
|
-
- Reorganized terminal image exports from `terminal-image` to `terminal-capabilities` module
|
|
394
|
-
- Updated all internal references to use `TERMINAL` instead of `TERMINAL_INFO`
|
|
60
|
+
Older entries are archived in [packages/tui/CHANGELOG.md@9caccab691ce](https://github.com/can1357/oh-my-pi/blob/9caccab691ce575007f4b6bcbaf8f944723d5457/packages/tui/CHANGELOG.md).
|
|
61
|
+
Older entries are archived in [packages/tui/CHANGELOG.md@58141d4e5fa8](https://github.com/can1357/oh-my-pi/blob/58141d4e5fa892166024e2168866c45e0baacde3/packages/tui/CHANGELOG.md).
|
|
395
62
|
|
|
396
63
|
### Removed
|
|
397
64
|
|
|
398
|
-
- Removed `
|
|
399
|
-
|
|
400
|
-
## [10.5.0] - 2026-02-04
|
|
401
|
-
|
|
402
|
-
### Fixed
|
|
403
|
-
|
|
404
|
-
- Treated inline image lines with cursor-move prefixes as image sequences to prevent width overflow crashes
|
|
65
|
+
- Removed `truncateToWidth`, `sliceWithWidth`, and `extractSegments` functions from public API (now re-exported directly from @linxiraos/pi-natives)
|
|
405
66
|
|
|
406
67
|
## [9.8.0] - 2026-02-01
|
|
407
68
|
|
|
408
|
-
### Changed
|
|
409
|
-
|
|
410
|
-
- Moved `wrapTextWithAnsi` export to `@linxiraos/pi-natives` package
|
|
411
|
-
|
|
412
69
|
### Fixed
|
|
413
70
|
|
|
414
71
|
- Improved Kitty terminal key sequence parsing to correctly handle text field codepoints in CSI-u sequences
|
|
@@ -436,7 +93,6 @@
|
|
|
436
93
|
|
|
437
94
|
### Removed
|
|
438
95
|
|
|
439
|
-
- Removed `truncateToWidth`, `sliceWithWidth`, and `extractSegments` functions from public API (now re-exported directly from @linxiraos/pi-natives)
|
|
440
96
|
- Removed `ellipsis` property from `SymbolTheme` interface
|
|
441
97
|
- Removed `extractAnsiCode` function from public API
|
|
442
98
|
|
|
@@ -621,19 +277,12 @@
|
|
|
621
277
|
- Fixed numbered list items showing "1." for all items when code blocks break list continuity
|
|
622
278
|
- Fixed width overflow protection in overlay compositing to prevent TUI crashes
|
|
623
279
|
|
|
624
|
-
## [4.7.0] - 2026-01-12
|
|
625
|
-
|
|
626
|
-
### Fixed
|
|
627
|
-
|
|
628
|
-
- Remove trailing space padding from Text, Markdown, and TruncatedText components when no background color is set (fixes copied text including unwanted whitespace)
|
|
629
|
-
|
|
630
280
|
## [4.6.0] - 2026-01-12
|
|
631
281
|
|
|
632
282
|
### Added
|
|
633
283
|
|
|
634
284
|
- Add fuzzy matching module (`fuzzyMatch`, `fuzzyFilter`) for command autocomplete
|
|
635
285
|
- Add `getExpandedText()` to editor for expanding paste markers
|
|
636
|
-
- Add backslash+enter newline fallback for terminals without Kitty protocol
|
|
637
286
|
|
|
638
287
|
### Fixed
|
|
639
288
|
|
|
@@ -642,12 +291,6 @@
|
|
|
642
291
|
- Rendering optimizations: only re-render changed lines
|
|
643
292
|
- Refactor input component to use keybindings manager
|
|
644
293
|
|
|
645
|
-
## [4.4.4] - 2026-01-11
|
|
646
|
-
|
|
647
|
-
### Fixed
|
|
648
|
-
|
|
649
|
-
- Fixed Ctrl+Enter sequences to insert new lines in the editor
|
|
650
|
-
|
|
651
294
|
## [4.2.1] - 2026-01-11
|
|
652
295
|
|
|
653
296
|
### Changed
|
|
@@ -657,7 +300,6 @@
|
|
|
657
300
|
### Fixed
|
|
658
301
|
|
|
659
302
|
- Fixed editor redraw glitch when canceling autocomplete suggestions
|
|
660
|
-
- Fixed `fd` tool detection to automatically find `fd` or `fdfind` in PATH when not explicitly configured
|
|
661
303
|
|
|
662
304
|
## [4.1.0] - 2026-01-10
|
|
663
305
|
|
|
@@ -671,17 +313,10 @@
|
|
|
671
313
|
|
|
672
314
|
- `EditorComponent` interface for custom editor implementations
|
|
673
315
|
- `StdinBuffer` class to split batched stdin into individual sequences
|
|
674
|
-
- Overlay compositing via `TUI.showOverlay()` and `TUI.hideOverlay()` for `ctx.ui.custom()` with `{ overlay: true }`
|
|
675
|
-
- Kitty keyboard protocol flag 2 support for key release events (`isKeyRelease()`, `isKeyRepeat()`, `KeyEventType`)
|
|
676
|
-
- `setKittyProtocolActive()`, `isKittyProtocolActive()` for Kitty protocol state management
|
|
677
|
-
- `kittyProtocolActive` property on Terminal interface to query Kitty protocol state
|
|
678
|
-
- `Component.wantsKeyRelease` property to opt-in to key release events (default false)
|
|
679
|
-
- Input component `onEscape` callback for handling escape key presses
|
|
680
316
|
|
|
681
317
|
### Changed
|
|
682
318
|
|
|
683
319
|
- Terminal startup now queries Kitty protocol support before enabling event reporting
|
|
684
|
-
- Default editor `newLine` binding now uses `shift+enter` only
|
|
685
320
|
|
|
686
321
|
### Fixed
|
|
687
322
|
|
|
@@ -752,10 +387,6 @@
|
|
|
752
387
|
### Added
|
|
753
388
|
|
|
754
389
|
- TabBar component for horizontal tab navigation
|
|
755
|
-
- Emergency terminal restore to prevent corrupted state on crashes
|
|
756
|
-
- Overhauled UI with welcome screen and powerline footer
|
|
757
|
-
- Theme-configurable HTML export colors
|
|
758
|
-
- `ctx.ui.theme` getter for styling status text with theme colors
|
|
759
390
|
|
|
760
391
|
### Changed
|
|
761
392
|
|
|
@@ -807,17 +438,12 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
|
|
|
807
438
|
### Added
|
|
808
439
|
|
|
809
440
|
- Added `fullRedraws` readonly property to TUI class for tracking full screen redraws
|
|
810
|
-
- Added `PI_TUI_WRITE_LOG` environment variable to capture raw ANSI output for debugging
|
|
811
441
|
|
|
812
442
|
### Fixed
|
|
813
443
|
|
|
814
444
|
- Fixed appended lines not being committed to scrollback, causing earlier content to be overwritten when viewport fills ([#954](https://github.com/badlogic/pi-mono/issues/954))
|
|
815
445
|
- Slash command menu now only triggers when the editor input is otherwise empty ([#904](https://github.com/badlogic/pi-mono/issues/904))
|
|
816
446
|
- 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))
|
|
817
|
-
- Fixed editor multi-line insertion handling and lastAction tracking ([#945](https://github.com/badlogic/pi-mono/pull/945) by [@Perlence](https://github.com/Perlence))
|
|
818
|
-
- Fixed editor word wrapping to reserve a cursor column ([#934](https://github.com/badlogic/pi-mono/pull/934) by [@Perlence](https://github.com/Perlence))
|
|
819
|
-
- 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))
|
|
820
|
-
- Fixed Kitty image ID allocation and cleanup to prevent image ID collisions between modules
|
|
821
447
|
|
|
822
448
|
## [0.49.3] - 2026-01-22
|
|
823
449
|
|
|
@@ -833,9 +459,6 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
|
|
|
833
459
|
### Fixed
|
|
834
460
|
|
|
835
461
|
- Autolinked emails no longer display redundant `(mailto:...)` suffix in markdown output ([#888](https://github.com/badlogic/pi-mono/pull/888) by [@terrorobe](https://github.com/terrorobe))
|
|
836
|
-
- Fixed viewport tracking and cursor positioning for overlays and content shrink scenarios
|
|
837
|
-
- 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))
|
|
838
|
-
- Directory completions for `@` file attachments no longer add trailing space, allowing continued autocomplete into subdirectories
|
|
839
462
|
|
|
840
463
|
## [0.49.1] - 2026-01-18
|
|
841
464
|
|
|
@@ -850,7 +473,6 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
|
|
|
850
473
|
|
|
851
474
|
- 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))
|
|
852
475
|
- 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))
|
|
853
|
-
- 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))
|
|
854
476
|
|
|
855
477
|
## [0.48.0] - 2026-01-16
|
|
856
478
|
|
|
@@ -858,10 +480,6 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
|
|
|
858
480
|
|
|
859
481
|
- `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))
|
|
860
482
|
|
|
861
|
-
### Changed
|
|
862
|
-
|
|
863
|
-
- 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).
|
|
864
|
-
|
|
865
483
|
### Fixed
|
|
866
484
|
|
|
867
485
|
- Decode Kitty CSI-u printable sequences in the editor so shifted symbol keys (e.g., `@`, `?`) work in terminals that enable Kitty keyboard protocol ([#779](https://github.com/badlogic/pi-mono/pull/779) by [@iamd3vil](https://github.com/iamd3vil))
|
|
@@ -883,8 +501,6 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
|
|
|
883
501
|
### Fixed
|
|
884
502
|
|
|
885
503
|
- 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))
|
|
886
|
-
- `visibleWidth()` and `extractAnsiCode()` now handle APC escape sequences (`ESC _ ... BEL`), fixing width calculation and string slicing for strings containing cursor markers
|
|
887
|
-
- 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))
|
|
888
504
|
|
|
889
505
|
## [0.46.0] - 2026-01-15
|
|
890
506
|
|
|
@@ -898,9 +514,6 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
|
|
|
898
514
|
|
|
899
515
|
- `OverlayOptions` API for overlay positioning and sizing with CSS-like values: `width`, `maxHeight`, `row`, `col` accept numbers (absolute) or percentage strings (e.g., `"50%"`). Also supports `minWidth`, `anchor`, `offsetX`, `offsetY`, `margin`. ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
|
|
900
516
|
- `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))
|
|
901
|
-
- `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))
|
|
902
|
-
- New exported types: `OverlayAnchor`, `OverlayHandle`, `OverlayMargin`, `OverlayOptions`, `SizeValue` ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
|
|
903
|
-
- `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))
|
|
904
517
|
|
|
905
518
|
### Fixed
|
|
906
519
|
|
|
@@ -927,30 +540,15 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
|
|
|
927
540
|
### Fixed
|
|
928
541
|
|
|
929
542
|
- 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))
|
|
930
|
-
- Reset ANSI styles after each rendered line to prevent style leakage
|
|
931
543
|
|
|
932
544
|
## [0.42.5] - 2026-01-11
|
|
933
545
|
|
|
934
546
|
### Fixed
|
|
935
547
|
|
|
936
548
|
- Reduced flicker by only re-rendering changed lines ([#617](https://github.com/badlogic/pi-mono/pull/617) by [@ogulcancelik](https://github.com/ogulcancelik))
|
|
937
|
-
- Cursor position tracking when content shrinks with unchanged remaining lines
|
|
938
|
-
- TUI renders with wrong dimensions after suspend/resume if terminal was resized while suspended ([#599](https://github.com/badlogic/pi-mono/issues/599))
|
|
939
|
-
- 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))
|
|
940
|
-
|
|
941
|
-
## [0.39.0] - 2026-01-08
|
|
942
|
-
|
|
943
|
-
### Added
|
|
944
|
-
|
|
945
|
-
- **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))
|
|
946
549
|
|
|
947
550
|
## [0.38.0] - 2026-01-08
|
|
948
551
|
|
|
949
|
-
### Added
|
|
950
|
-
|
|
951
|
-
- `EditorComponent` interface for custom editor implementations
|
|
952
|
-
- `StdinBuffer` class to split batched stdin into individual sequences (adapted from [OpenTUI](https://github.com/anomalyco/opentui), MIT license)
|
|
953
|
-
|
|
954
552
|
### Fixed
|
|
955
553
|
|
|
956
554
|
- Key presses no longer dropped when batched with other events over SSH ([#538](https://github.com/badlogic/pi-mono/pull/538))
|
|
@@ -989,18 +587,8 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
|
|
|
989
587
|
|
|
990
588
|
- Symbol key support in keybinding system: `SymbolKey` type with 32 symbol keys, `Key` constants (e.g., `Key.backtick`, `Key.comma`), updated `matchesKey()` and `parseKey()` to handle symbol input ([#450](https://github.com/badlogic/pi-mono/pull/450) by [@kaofelix](https://github.com/kaofelix))
|
|
991
589
|
|
|
992
|
-
## [0.34.0] - 2026-01-04
|
|
993
|
-
|
|
994
|
-
### Added
|
|
995
|
-
|
|
996
|
-
- `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))
|
|
997
|
-
|
|
998
590
|
## [0.33.0] - 2026-01-04
|
|
999
591
|
|
|
1000
|
-
### Breaking Changes
|
|
1001
|
-
|
|
1002
|
-
- **Key detection functions removed**: All `isXxx()` key detection functions (`isEnter()`, `isEscape()`, `isCtrlC()`, etc.) have been removed. Use `matchesKey(data, keyId)` instead (e.g., `matchesKey(data, "enter")`, `matchesKey(data, "ctrl+c")`). This affects hooks and custom tools that use `ctx.ui.custom()` with keyboard input handling. ([#405](https://github.com/badlogic/pi-mono/pull/405))
|
|
1003
|
-
|
|
1004
592
|
### Added
|
|
1005
593
|
|
|
1006
594
|
- `Editor.insertTextAtCursor(text)` method for programmatic text insertion ([#419](https://github.com/badlogic/pi-mono/issues/419))
|
|
@@ -1028,8 +616,4 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
|
|
|
1028
616
|
|
|
1029
617
|
## [0.31.1] - 2026-01-02
|
|
1030
618
|
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
- `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))
|
|
1034
|
-
|
|
1035
|
-
Older entries are archived in [packages/tui/CHANGELOG.md@9caccab691ce](https://github.com/can1357/oh-my-pi/blob/9caccab691ce575007f4b6bcbaf8f944723d5457/packages/tui/CHANGELOG.md).
|
|
619
|
+
Older entries are archived in [packages/tui/CHANGELOG.md@fa14205f838f](https://github.com/can1357/oh-my-pi/blob/fa14205f838f282fcea048c64fca74026789a492/packages/tui/CHANGELOG.md).
|