@linxiraos/pi-tui 1.1.26 → 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.
Files changed (423) hide show
  1. package/CHANGELOG.md +51 -491
  2. package/README.md +13 -7
  3. package/dist/types/active-terminal.d.ts +30 -0
  4. package/dist/types/app-keybindings.d.ts +7 -2
  5. package/dist/types/apps/cleanse-board.d.ts +1 -1
  6. package/dist/types/apps/debug/log-viewer.d.ts +4 -0
  7. package/dist/types/apps/debug/raw-sse-buffer.d.ts +2 -0
  8. package/dist/types/apps/git/git-tui.d.ts +5 -4
  9. package/dist/types/apps/git/help.d.ts +3 -1
  10. package/dist/types/apps/if-bench-board.d.ts +2 -2
  11. package/dist/types/apps/setup-model-picker.d.ts +1 -1
  12. package/dist/types/autocomplete.d.ts +5 -2
  13. package/dist/types/charts/chart-plan.d.ts +674 -0
  14. package/dist/types/charts/chart-svg.d.ts +59 -0
  15. package/dist/types/charts/table-data.d.ts +175 -0
  16. package/dist/types/chat/assistant-message.d.ts +11 -1
  17. package/dist/types/chat/chat-transcript-builder.d.ts +3 -0
  18. package/dist/types/chat/compaction-summary-message.d.ts +1 -0
  19. package/dist/types/chat/execution-shared.d.ts +6 -5
  20. package/dist/types/chat/fence-figure.d.ts +42 -0
  21. package/dist/types/chat/figure-markdown.d.ts +42 -0
  22. package/dist/types/chat/messages.d.ts +1 -1
  23. package/dist/types/chat/svg-figure.d.ts +33 -0
  24. package/dist/types/chat/svg-source.d.ts +49 -0
  25. package/dist/types/chat/table-chart.d.ts +89 -0
  26. package/dist/types/chat/tool-execution.d.ts +2 -0
  27. package/dist/types/chat/user-message.d.ts +17 -4
  28. package/dist/types/chrome/shared.d.ts +9 -0
  29. package/dist/types/chrome/status-notice.d.ts +15 -3
  30. package/dist/types/chrome/transcript-container.d.ts +6 -0
  31. package/dist/types/components/box.d.ts +1 -0
  32. package/dist/types/components/disclosure.d.ts +1 -0
  33. package/dist/types/components/editor.d.ts +23 -5
  34. package/dist/types/components/form.d.ts +1 -0
  35. package/dist/types/components/image.d.ts +26 -44
  36. package/dist/types/components/input.d.ts +2 -1
  37. package/dist/types/components/key-value-list.d.ts +1 -0
  38. package/dist/types/components/layout/row.d.ts +1 -0
  39. package/dist/types/components/layout/stack.d.ts +1 -0
  40. package/dist/types/components/loader.d.ts +5 -6
  41. package/dist/types/components/markdown.d.ts +47 -5
  42. package/dist/types/components/scroll-view.d.ts +1 -0
  43. package/dist/types/components/section.d.ts +1 -0
  44. package/dist/types/components/table.d.ts +1 -0
  45. package/dist/types/components/text.d.ts +1 -0
  46. package/dist/types/components/tree-view.d.ts +7 -0
  47. package/dist/types/components/truncated-text.d.ts +1 -0
  48. package/dist/types/fuzzy.d.ts +29 -1
  49. package/dist/types/key-hint-format.d.ts +9 -1
  50. package/dist/types/keybinding-matchers.d.ts +3 -0
  51. package/dist/types/keybindings.d.ts +1 -1
  52. package/dist/types/kitty-graphics.d.ts +2 -2
  53. package/dist/types/loop-watchdog.d.ts +8 -7
  54. package/dist/types/multiplexers/cmux.d.ts +16 -0
  55. package/dist/types/multiplexers/herdr.d.ts +26 -0
  56. package/dist/types/multiplexers/notify.d.ts +13 -0
  57. package/dist/types/multiplexers/orca.d.ts +12 -0
  58. package/dist/types/multiplexers/screen.d.ts +9 -0
  59. package/dist/types/multiplexers/tmux.d.ts +29 -0
  60. package/dist/types/multiplexers/types.d.ts +100 -0
  61. package/dist/types/multiplexers/wmux.d.ts +12 -0
  62. package/dist/types/multiplexers/zellij.d.ts +12 -0
  63. package/dist/types/native/apply.d.ts +4 -3
  64. package/dist/types/native/backend.d.ts +5 -4
  65. package/dist/types/native/blobs.d.ts +7 -3
  66. package/dist/types/native/encode.d.ts +8 -6
  67. package/dist/types/native/node.d.ts +36 -5
  68. package/dist/types/native/overlay.d.ts +8 -3
  69. package/dist/types/native/settle.d.ts +4 -3
  70. package/dist/types/overlays/agent-hub-projection.d.ts +6 -5
  71. package/dist/types/overlays/agent-hub-types.d.ts +9 -0
  72. package/dist/types/overlays/agent-hub.d.ts +3 -0
  73. package/dist/types/overlays/agent-transcript-viewer.d.ts +12 -2
  74. package/dist/types/overlays/agents-hub.d.ts +9 -0
  75. package/dist/types/overlays/annotation-overlay.d.ts +19 -2
  76. package/dist/types/overlays/annotation-types.d.ts +2 -0
  77. package/dist/types/overlays/ask-dialog.d.ts +5 -2
  78. package/dist/types/overlays/btw-history-panel.d.ts +13 -1
  79. package/dist/types/overlays/copy-selector.d.ts +1 -0
  80. package/dist/types/overlays/history-search.d.ts +10 -0
  81. package/dist/types/overlays/hook-selector.d.ts +9 -4
  82. package/dist/types/overlays/hub-frame.d.ts +4 -1
  83. package/dist/types/overlays/jobs-panel.d.ts +1 -7
  84. package/dist/types/overlays/model-browser.d.ts +54 -7
  85. package/dist/types/overlays/model-hub.d.ts +37 -0
  86. package/dist/types/overlays/oauth-selector.d.ts +0 -1
  87. package/dist/types/overlays/plan-review-overlay.d.ts +3 -2
  88. package/dist/types/overlays/report-panel.d.ts +68 -0
  89. package/dist/types/overlays/rewind-selector.d.ts +1 -0
  90. package/dist/types/overlays/session-observer-registry.d.ts +2 -0
  91. package/dist/types/overlays/session-selector.d.ts +6 -2
  92. package/dist/types/overlays/settings-defs.d.ts +1 -0
  93. package/dist/types/overlays/thinking-selector.d.ts +2 -2
  94. package/dist/types/overlays/usage-dashboard.d.ts +12 -8
  95. package/dist/types/overlays/usage-display.d.ts +3 -1
  96. package/dist/types/prompt/composer-cache.d.ts +0 -16
  97. package/dist/types/prompt/composer.d.ts +18 -3
  98. package/dist/types/prompt/custom-editor.d.ts +25 -13
  99. package/dist/types/prompt/image-source.d.ts +2 -1
  100. package/dist/types/prompt/interactive-context-helpers.d.ts +5 -1
  101. package/dist/types/prompt/model-mention-autocomplete.d.ts +1 -1
  102. package/dist/types/prompt/welcome.d.ts +7 -2
  103. package/dist/types/render/composite.d.ts +2 -0
  104. package/dist/types/render/output-pane.d.ts +1 -0
  105. package/dist/types/render/render-utils.d.ts +1 -0
  106. package/dist/types/render/tool-card.d.ts +6 -0
  107. package/dist/types/render/width-aware-text.d.ts +2 -0
  108. package/dist/types/setup/scenes/types.d.ts +1 -0
  109. package/dist/types/space-hold.d.ts +40 -25
  110. package/dist/types/status-line/component.d.ts +3 -0
  111. package/dist/types/status-line/context-usage.d.ts +7 -5
  112. package/dist/types/status-line/host.d.ts +4 -1
  113. package/dist/types/status-line/segments.d.ts +2 -0
  114. package/dist/types/status-line/types.d.ts +14 -3
  115. package/dist/types/terminal-capabilities.d.ts +41 -36
  116. package/dist/types/terminal-multiplexer.d.ts +127 -14
  117. package/dist/types/terminal.d.ts +23 -16
  118. package/dist/types/theme/active-symbols.d.ts +1 -1
  119. package/dist/types/theme/schema.d.ts +11 -2
  120. package/dist/types/theme/symbols.d.ts +1 -1
  121. package/dist/types/theme/theme-class.d.ts +7 -0
  122. package/dist/types/theme/theme.d.ts +1 -1
  123. package/dist/types/theme/tui-adapters.d.ts +3 -0
  124. package/dist/types/thinking.d.ts +1 -1
  125. package/dist/types/tmux.d.ts +11 -4
  126. package/dist/types/tools/bash.d.ts +7 -2
  127. package/dist/types/tools/daemon.d.ts +1 -1
  128. package/dist/types/tools/eval.d.ts +22 -3
  129. package/dist/types/tools/glob.d.ts +4 -0
  130. package/dist/types/tools/native-view.d.ts +47 -0
  131. package/dist/types/tools/output-meta.d.ts +11 -1
  132. package/dist/types/tools/renderer.d.ts +37 -2
  133. package/dist/types/tools/streaming-output.d.ts +20 -1
  134. package/dist/types/tools/task.d.ts +2 -3
  135. package/dist/types/tools/write.d.ts +9 -2
  136. package/dist/types/tools/yield.d.ts +22 -0
  137. package/dist/types/tui.d.ts +36 -0
  138. package/dist/types/utils.d.ts +6 -0
  139. package/dist/types/vim.d.ts +19 -5
  140. package/dist/types/windows-input-mode.d.ts +33 -1
  141. package/package.json +13 -9
  142. package/src/active-terminal.d.ts +30 -0
  143. package/src/active-terminal.ts +80 -0
  144. package/src/app-keybindings.d.ts +7 -2
  145. package/src/app-keybindings.ts +7 -2
  146. package/src/apps/autoresearch-dashboard.ts +7 -3
  147. package/src/apps/cleanse-board.ts +2 -2
  148. package/src/apps/cleanse-picker.ts +1 -1
  149. package/src/apps/debug/log-viewer.ts +188 -72
  150. package/src/apps/debug/raw-sse-buffer.ts +8 -0
  151. package/src/apps/debug/raw-sse.ts +39 -5
  152. package/src/apps/git/diff-pane.ts +96 -23
  153. package/src/apps/git/git-tui.ts +23 -16
  154. package/src/apps/git/help.ts +29 -20
  155. package/src/apps/git/sidebar.ts +8 -3
  156. package/src/apps/if-bench-board.ts +2 -2
  157. package/src/apps/ps-top.ts +2 -2
  158. package/src/apps/setup-model-picker.ts +1 -1
  159. package/src/autocomplete.d.ts +5 -2
  160. package/src/autocomplete.ts +67 -43
  161. package/src/bracketed-paste.ts +10 -3
  162. package/src/charts/chart-plan.d.ts +674 -0
  163. package/src/charts/chart-plan.ts +5081 -0
  164. package/src/charts/chart-svg.d.ts +59 -0
  165. package/src/charts/chart-svg.ts +4657 -0
  166. package/src/charts/table-data.d.ts +175 -0
  167. package/src/charts/table-data.ts +1478 -0
  168. package/src/chat/advisor-message.ts +11 -0
  169. package/src/chat/assistant-message.d.ts +11 -1
  170. package/src/chat/assistant-message.ts +245 -54
  171. package/src/chat/chat-transcript-builder.d.ts +3 -0
  172. package/src/chat/chat-transcript-builder.ts +9 -3
  173. package/src/chat/compaction-summary-message.d.ts +1 -0
  174. package/src/chat/compaction-summary-message.ts +8 -0
  175. package/src/chat/execution-shared.d.ts +6 -5
  176. package/src/chat/execution-shared.ts +42 -25
  177. package/src/chat/fence-figure.d.ts +42 -0
  178. package/src/chat/fence-figure.ts +80 -0
  179. package/src/chat/figure-markdown.d.ts +42 -0
  180. package/src/chat/figure-markdown.ts +174 -0
  181. package/src/chat/messages.d.ts +1 -1
  182. package/src/chat/messages.ts +1 -1
  183. package/src/chat/read-tool-group.ts +6 -4
  184. package/src/chat/skill-message.ts +6 -0
  185. package/src/chat/svg-figure.d.ts +33 -0
  186. package/src/chat/svg-figure.ts +399 -0
  187. package/src/chat/svg-source.d.ts +49 -0
  188. package/src/chat/svg-source.ts +188 -0
  189. package/src/chat/table-chart.d.ts +89 -0
  190. package/src/chat/table-chart.ts +294 -0
  191. package/src/chat/tool-execution.d.ts +2 -0
  192. package/src/chat/tool-execution.ts +86 -7
  193. package/src/chat/user-message.d.ts +17 -4
  194. package/src/chat/user-message.ts +71 -8
  195. package/src/chrome/shared.ts +53 -0
  196. package/src/chrome/status-notice.ts +25 -7
  197. package/src/chrome/transcript-container.d.ts +6 -0
  198. package/src/chrome/transcript-container.ts +162 -19
  199. package/src/components/box.d.ts +1 -0
  200. package/src/components/box.ts +5 -0
  201. package/src/components/disclosure.d.ts +1 -0
  202. package/src/components/disclosure.ts +8 -0
  203. package/src/components/editor.d.ts +23 -5
  204. package/src/components/editor.ts +316 -47
  205. package/src/components/form.d.ts +1 -0
  206. package/src/components/form.ts +8 -0
  207. package/src/components/image.d.ts +26 -44
  208. package/src/components/image.ts +115 -152
  209. package/src/components/input.d.ts +2 -1
  210. package/src/components/input.ts +17 -7
  211. package/src/components/key-value-list.d.ts +1 -0
  212. package/src/components/key-value-list.ts +4 -0
  213. package/src/components/layout/row.d.ts +1 -0
  214. package/src/components/layout/row.ts +7 -0
  215. package/src/components/layout/stack.d.ts +1 -0
  216. package/src/components/layout/stack.ts +7 -0
  217. package/src/components/loader.d.ts +5 -6
  218. package/src/components/loader.ts +10 -17
  219. package/src/components/markdown.d.ts +47 -5
  220. package/src/components/markdown.ts +786 -303
  221. package/src/components/scroll-view.d.ts +1 -0
  222. package/src/components/scroll-view.ts +5 -0
  223. package/src/components/section.d.ts +1 -0
  224. package/src/components/section.ts +5 -0
  225. package/src/components/settings-list.ts +2 -0
  226. package/src/components/table.d.ts +1 -0
  227. package/src/components/table.ts +4 -0
  228. package/src/components/text.d.ts +1 -0
  229. package/src/components/text.ts +7 -0
  230. package/src/components/tree-view.d.ts +7 -0
  231. package/src/components/tree-view.ts +38 -8
  232. package/src/components/truncated-text.d.ts +1 -0
  233. package/src/components/truncated-text.ts +5 -0
  234. package/src/desktop-notify.ts +3 -2
  235. package/src/fuzzy.d.ts +29 -1
  236. package/src/fuzzy.ts +115 -30
  237. package/src/hotkeys-markdown.ts +9 -2
  238. package/src/key-hint-format.d.ts +9 -1
  239. package/src/key-hint-format.ts +26 -11
  240. package/src/keybinding-matchers.d.ts +3 -0
  241. package/src/keybinding-matchers.ts +6 -2
  242. package/src/keybindings.d.ts +1 -1
  243. package/src/keybindings.ts +1 -1
  244. package/src/kitty-graphics.d.ts +2 -2
  245. package/src/kitty-graphics.ts +11 -5
  246. package/src/loop-watchdog.d.ts +8 -7
  247. package/src/loop-watchdog.ts +18 -13
  248. package/src/multiplexers/cmux.d.ts +16 -0
  249. package/src/multiplexers/cmux.ts +29 -0
  250. package/src/multiplexers/herdr.d.ts +26 -0
  251. package/src/multiplexers/herdr.ts +64 -0
  252. package/src/multiplexers/notify.d.ts +13 -0
  253. package/src/multiplexers/notify.ts +24 -0
  254. package/src/multiplexers/orca.d.ts +12 -0
  255. package/src/multiplexers/orca.ts +16 -0
  256. package/src/multiplexers/screen.d.ts +9 -0
  257. package/src/multiplexers/screen.ts +15 -0
  258. package/src/multiplexers/tmux.d.ts +29 -0
  259. package/src/multiplexers/tmux.ts +40 -0
  260. package/src/multiplexers/types.d.ts +100 -0
  261. package/src/multiplexers/types.ts +110 -0
  262. package/src/multiplexers/wmux.d.ts +12 -0
  263. package/src/multiplexers/wmux.ts +16 -0
  264. package/src/multiplexers/zellij.d.ts +12 -0
  265. package/src/multiplexers/zellij.ts +24 -0
  266. package/src/native/apply.d.ts +4 -3
  267. package/src/native/apply.ts +4 -3
  268. package/src/native/backend.d.ts +5 -4
  269. package/src/native/backend.ts +199 -22
  270. package/src/native/blobs.d.ts +7 -3
  271. package/src/native/blobs.ts +47 -12
  272. package/src/native/encode.d.ts +8 -6
  273. package/src/native/encode.ts +76 -34
  274. package/src/native/node.d.ts +36 -5
  275. package/src/native/node.ts +31 -5
  276. package/src/native/overlay.d.ts +8 -3
  277. package/src/native/overlay.ts +17 -4
  278. package/src/native/reconcile.ts +16 -4
  279. package/src/native/settle.d.ts +4 -3
  280. package/src/native/settle.ts +4 -3
  281. package/src/overlays/agent-hub-projection.d.ts +6 -5
  282. package/src/overlays/agent-hub-projection.ts +124 -13
  283. package/src/overlays/agent-hub-types.d.ts +9 -0
  284. package/src/overlays/agent-hub-types.ts +6 -0
  285. package/src/overlays/agent-hub.ts +48 -29
  286. package/src/overlays/agent-transcript-viewer.ts +93 -23
  287. package/src/overlays/agents-hub.ts +28 -8
  288. package/src/overlays/annotation-overlay.ts +293 -90
  289. package/src/overlays/annotation-types.ts +2 -0
  290. package/src/overlays/ask-dialog.ts +10 -17
  291. package/src/overlays/btw-history-panel.ts +136 -39
  292. package/src/overlays/copy-selector.d.ts +1 -0
  293. package/src/overlays/copy-selector.ts +32 -8
  294. package/src/overlays/extensions/extension-dashboard.ts +4 -4
  295. package/src/overlays/extensions/state-manager.ts +52 -12
  296. package/src/overlays/history-search.ts +100 -7
  297. package/src/overlays/hook-selector.ts +12 -5
  298. package/src/overlays/hub-frame.ts +19 -1
  299. package/src/overlays/jobs-panel.ts +33 -52
  300. package/src/overlays/model-browser.ts +367 -122
  301. package/src/overlays/model-hub.ts +435 -59
  302. package/src/overlays/move-overlay.ts +28 -14
  303. package/src/overlays/oauth-selector.ts +54 -70
  304. package/src/overlays/pause-screen.ts +2 -2
  305. package/src/overlays/plan-review-overlay.ts +208 -70
  306. package/src/overlays/plugin-settings.ts +3 -3
  307. package/src/overlays/report-panel.ts +191 -0
  308. package/src/overlays/rewind-selector.ts +88 -17
  309. package/src/overlays/session-observer-registry.d.ts +2 -0
  310. package/src/overlays/session-observer-registry.ts +10 -2
  311. package/src/overlays/session-selector.ts +64 -26
  312. package/src/overlays/settings-defs.ts +5 -4
  313. package/src/overlays/settings-selector.ts +33 -8
  314. package/src/overlays/snapcompact-shape-preview.ts +2 -3
  315. package/src/overlays/stats-notice.ts +1 -1
  316. package/src/overlays/thinking-selector.ts +11 -10
  317. package/src/overlays/tree-selector.ts +41 -20
  318. package/src/overlays/usage-dashboard.ts +117 -58
  319. package/src/overlays/usage-display.ts +10 -4
  320. package/src/overlays/usage-row.ts +22 -8
  321. package/src/prompt/attachment-chips.ts +15 -11
  322. package/src/prompt/composer-attachments.ts +6 -4
  323. package/src/prompt/composer-cache.ts +7 -86
  324. package/src/prompt/composer.ts +37 -26
  325. package/src/prompt/custom-editor.ts +282 -105
  326. package/src/prompt/image-source.ts +2 -1
  327. package/src/prompt/interactive-context-helpers.ts +32 -18
  328. package/src/prompt/macos-spelling.ts +7 -0
  329. package/src/prompt/magic-keywords.ts +11 -2
  330. package/src/prompt/model-mention-autocomplete.ts +14 -14
  331. package/src/prompt/queued-messages.ts +6 -4
  332. package/src/prompt/tips.txt +13 -9
  333. package/src/prompt/welcome.ts +64 -46
  334. package/src/prompt/word-completion.ts +38 -5
  335. package/src/render/composite.d.ts +2 -0
  336. package/src/render/composite.ts +64 -0
  337. package/src/render/output-pane.d.ts +1 -0
  338. package/src/render/output-pane.ts +6 -0
  339. package/src/render/render-utils.d.ts +1 -0
  340. package/src/render/render-utils.ts +16 -1
  341. package/src/render/tool-card.d.ts +6 -0
  342. package/src/render/tool-card.ts +15 -0
  343. package/src/render/width-aware-text.d.ts +2 -0
  344. package/src/render/width-aware-text.ts +5 -0
  345. package/src/setup/scenes/model.ts +2 -1
  346. package/src/setup/scenes/types.ts +1 -0
  347. package/src/space-hold.d.ts +40 -25
  348. package/src/space-hold.ts +156 -52
  349. package/src/status-line/component.ts +292 -78
  350. package/src/status-line/context-usage.ts +21 -46
  351. package/src/status-line/host.ts +4 -1
  352. package/src/status-line/segments.ts +40 -22
  353. package/src/status-line/types.ts +15 -3
  354. package/src/terminal-capabilities.d.ts +41 -36
  355. package/src/terminal-capabilities.ts +137 -213
  356. package/src/terminal-multiplexer.d.ts +127 -14
  357. package/src/terminal-multiplexer.ts +112 -33
  358. package/src/terminal.d.ts +23 -16
  359. package/src/terminal.ts +203 -99
  360. package/src/theme/active-symbols.d.ts +1 -1
  361. package/src/theme/active-symbols.ts +1 -1
  362. package/src/theme/schema-validation.ts +1 -0
  363. package/src/theme/schema.d.ts +11 -2
  364. package/src/theme/schema.ts +14 -1
  365. package/src/theme/session-color.ts +1 -7
  366. package/src/theme/symbols.d.ts +1 -1
  367. package/src/theme/symbols.ts +11 -4
  368. package/src/theme/theme-class.d.ts +7 -0
  369. package/src/theme/theme-class.ts +26 -1
  370. package/src/theme/theme-schema.json +5 -1
  371. package/src/theme/theme.d.ts +1 -1
  372. package/src/theme/theme.ts +8 -4
  373. package/src/theme/tui-adapters.d.ts +3 -0
  374. package/src/theme/tui-adapters.ts +68 -0
  375. package/src/thinking.d.ts +1 -1
  376. package/src/thinking.ts +1 -1
  377. package/src/tmux.d.ts +11 -4
  378. package/src/tmux.ts +47 -11
  379. package/src/tools/ast-edit.ts +59 -35
  380. package/src/tools/ast-grep.ts +35 -16
  381. package/src/tools/bash.d.ts +7 -2
  382. package/src/tools/bash.ts +116 -47
  383. package/src/tools/daemon.d.ts +1 -1
  384. package/src/tools/daemon.ts +1 -1
  385. package/src/tools/default-renderer.ts +35 -19
  386. package/src/tools/edit.ts +142 -120
  387. package/src/tools/eval-format/index.ts +28 -2
  388. package/src/tools/eval-format/javascript.ts +7 -5
  389. package/src/tools/eval.d.ts +22 -3
  390. package/src/tools/eval.ts +364 -208
  391. package/src/tools/fetch.ts +5 -6
  392. package/src/tools/glob.d.ts +4 -0
  393. package/src/tools/glob.ts +33 -65
  394. package/src/tools/grep.ts +81 -48
  395. package/src/tools/index.ts +2 -0
  396. package/src/tools/lsp.ts +81 -59
  397. package/src/tools/mcp.ts +111 -68
  398. package/src/tools/native-view.d.ts +47 -0
  399. package/src/tools/native-view.ts +102 -1
  400. package/src/tools/output-meta.d.ts +11 -1
  401. package/src/tools/output-meta.ts +23 -3
  402. package/src/tools/read.ts +7 -5
  403. package/src/tools/renderer.d.ts +37 -2
  404. package/src/tools/renderer.ts +42 -2
  405. package/src/tools/streaming-output.d.ts +20 -1
  406. package/src/tools/streaming-output.ts +154 -50
  407. package/src/tools/task.d.ts +2 -3
  408. package/src/tools/task.ts +115 -62
  409. package/src/tools/todo.ts +119 -30
  410. package/src/tools/wait.ts +34 -24
  411. package/src/tools/web-search.ts +1 -1
  412. package/src/tools/write.d.ts +9 -2
  413. package/src/tools/write.ts +147 -95
  414. package/src/tools/yield.d.ts +22 -0
  415. package/src/tools/yield.ts +225 -0
  416. package/src/tui.d.ts +36 -0
  417. package/src/tui.ts +666 -217
  418. package/src/utils.d.ts +6 -0
  419. package/src/utils.ts +19 -0
  420. package/src/vim.d.ts +19 -5
  421. package/src/vim.ts +333 -18
  422. package/src/windows-input-mode.d.ts +33 -1
  423. package/src/windows-input-mode.ts +212 -6
package/CHANGELOG.md CHANGED
@@ -1,412 +1,71 @@
1
- # Changelog
2
-
3
1
  ## [Unreleased]
4
2
 
5
- ## [1.1.26] - 2026-10-03
6
-
7
- - 版本线推进至 1.1.26;本版无独立用户可见变化。
8
-
9
- ## [14.9.8] - 2026-05-12
10
-
11
- ### Added
12
-
13
- - 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`)
14
- - Added optional `argumentHint?: string` to `SlashCommand`; rendered before the description in the autocomplete dropdown (ports pi-mono `aa25726e`)
15
- - Added `VirtualTerminal.waitForRender()` test helper for the throttled render pipeline (ports pi-mono `41377ee8`)
16
-
17
- ### Changed
18
-
19
- - `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`)
20
- - `requestRender()` non-force calls are coalesced to a ~16ms frame budget; `requestRender(true)` still flushes immediately via `process.nextTick` (ports pi-mono `6f5f37f8`)
21
- - `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`)
22
- - `SlashCommand.getArgumentCompletions()` may return a `Promise`; results are now awaited and non-array returns are ignored (ports pi-mono `a1e10789`)
23
- - Fuzzy `@` autocomplete now follows symlinked directories via `ScanOptions.follow_links` plumbed through the native walker (ports pi-mono `780d5367`)
24
- - 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`)
25
- - Changed slash-command autocomplete list rendering to combine command hint and description in a single displayed suggestion text
26
- - Changed render scheduling to throttle `requestRender` calls to roughly 60fps by batching updates
27
- - Changed terminal input handling to process complete cell-size responses without buffering partial input
28
- - Changed `KeyId` to accept super-modifier combinations and improve typed key-id validation
29
-
30
- ### Fixed
31
-
32
- - 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`)
33
- - 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`)
34
- - 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`)
35
- - 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`)
36
- - Fixed xterm `modifyOtherKeys` shifted printable input so uppercase letters inserted via `CSI 27;mod;codepoint~` reach the editor correctly (ports pi-mono `6b55d685`)
37
- - 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`)
38
- - 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`)
39
- - Fixed Markdown strikethrough requiring strict `~~text~~` delimiters with non-whitespace boundaries; single tildes no longer render strikethrough (ports pi-mono `db5274b4`)
40
- - Allowed `SlashCommand.getArgumentCompletions` to return asynchronous results by accepting Promise-based completions
41
- - Added `argumentHint` support to slash command definitions and displayed it in command suggestion descriptions
42
- - Added support for xterm `modifyOtherKeys` printable key sequences by decoding `CSI 27;mod;key~` into text input
43
- - Normalized line output during rendering to correct Thai/Lao AM glyph composition for displayed text
44
- - Fixed duplicated Kitty key input emissions by dropping the matching unmodified follow-up sequence after a Kitty CSI-u printable-key event
45
-
46
- ## [14.9.5] - 2026-05-12
47
-
48
- ### Fixed
49
-
50
- - 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))
51
-
52
- ## [14.5.7] - 2026-04-29
53
-
54
- ### Fixed
55
-
56
- - Fixed editor Ctrl+Enter handling to recognize NumLock and keypad Enter variants.
3
+ ## [1.2.0] - 2026-10-12
57
4
 
58
- ## [14.3.0] - 2026-04-25
59
-
60
- ### Fixed
61
-
62
- - Fixed shared Markdown Mermaid fenced-block rendering to resolve diagrams from fenced source text instead of external prerender state
63
-
64
- ## [14.1.1] - 2026-04-14
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)).
65
6
 
66
7
  ### Breaking Changes
67
8
 
68
- - Removed the `searchDb` constructor argument from `CombinedAutocompleteProvider`, requiring callers to use the built-in search behavior
69
-
70
- ### Changed
71
-
72
- - Changed truncation debug logging to run only when `debugRedraw` is enabled
73
-
74
- ## [14.0.5] - 2026-04-11
75
-
76
- ### Changed
77
-
78
- - Updated hash computation to use `Bun.hash()` instead of `Bun.hash.xxHash64()`, which may return `number` in addition to `bigint`
79
- - Simplified cache key computation in Box component by removing intermediate hash updates and consolidating hash operations
80
- - Wrapped native text utility functions (`sliceWithWidth`, `truncateToWidth`, `wrapTextWithAnsi`, `extractSegments`) to automatically pass the current default tab width, simplifying the API for consumers
81
- - Added `getIndentationNoescape` wrapper that uses `process.cwd()` as the project root for relative file paths
82
- - Re-export `getDefaultTabWidth`, `getIndentation`, and `setDefaultTabWidth` from `@linxiraos/pi-utils`; native text helpers still receive tab width via wrappers that read the JS default
83
-
84
- ## [13.16.1] - 2026-03-27
85
-
86
- ### Added
87
-
88
- - Support for optional SearchDb parameter in CombinedAutocompleteProvider constructor for improved fuzzy search performance
89
- - Fuzzy matching filter for autocomplete suggestions to improve relevance of results
90
-
91
- ### Changed
92
-
93
- - Fuzzy discovery now applies fuzzy matching filter to results for improved relevance of autocomplete suggestions
94
- - Autocomplete fuzzy discovery now accepts optional SearchDb instance for faster searches
95
-
96
- ## [13.16.0] - 2026-03-27
97
-
98
- ### Changed
99
-
100
- - Updated tab replacement in editor text sanitization to respect configured tab width setting
101
-
102
- ## [13.15.0] - 2026-03-23
103
-
104
- ### Added
105
-
106
- - Added `renderInlineMarkdown()` function to render inline markdown (bold, italic, code, links, strikethrough) to styled strings
107
-
108
- ### Fixed
109
-
110
- - Fixed editor consuming user-rebound copy keys, preventing custom keybindings from working in the editor
111
-
112
- ## [13.14.1] - 2026-03-21
113
-
114
- ### Added
115
-
116
- - Added Ctrl+_ as an additional default shortcut for undo
117
-
118
- ### Fixed
119
-
120
- - Ensured undo functionality respects user-configured keybindings
121
-
122
- ## [13.12.0] - 2026-03-14
123
-
124
- ### Added
125
-
126
- - Added `moveToMessageStart()` and `moveToMessageEnd()` methods to move cursor to the beginning and end of the entire message
127
-
128
- ### Fixed
129
-
130
- - Fixed autocomplete to preserve `./` prefix when completing relative file and directory paths
131
- - Fixed paste marker expansion to handle special regex replacement tokens ($1, $2, $&, $$, $`, $') literally in pasted content
132
-
133
- ## [13.11.0] - 2026-03-12
134
-
135
- ### Fixed
136
-
137
- - Fixed OSC 11 background color detection to correctly handle partial escape sequences that arrive mid-buffer, preventing user input from being swallowed
138
- - Fixed race condition where overlapping OSC 11 queries would be incorrectly cancelled by DA1 sentinels from previous queries
139
-
140
- ## [13.7.5] - 2026-03-04
141
-
142
- ### Changed
143
-
144
- - Extracted word navigation logic into reusable `moveWordLeft` and `moveWordRight` utility functions for consistent cursor movement across components
145
-
146
- ## [13.6.2] - 2026-03-03
147
-
148
- ### Fixed
149
-
150
- - Fixed cursor positioning when content shrinks to empty without clearOnShrink enabled
151
-
152
- ## [13.5.4] - 2026-03-01
153
-
154
- ### Fixed
155
-
156
- - 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))
157
-
158
- ## [13.5.3] - 2026-03-01
159
-
160
- ### Fixed
161
-
162
- - Fixed append rendering logic to correctly handle offscreen header changes during content overflow growth, preserving scroll history integrity
163
- - Fixed visible tail line updates when appending new content during viewport overflow conditions
164
- - Fixed cursor positioning instability when appending content under external cursor relocation by using absolute screen addressing instead of relative cursor movement
165
-
166
- ## [13.5.2] - 2026-03-01
167
-
168
- ### Breaking Changes
169
-
170
- - Removed `getMermaidImage` callback from MarkdownTheme; replaced with `getMermaidAscii` that accepts ASCII string instead of image data
171
- - Removed mermaid module exports (`renderMermaidToPng`, `extractMermaidBlocks`, `prerenderMermaidBlocks`, `MermaidImage` interface)
172
-
173
- ### Changed
174
-
175
- - Mermaid diagrams now render as ASCII text instead of terminal graphics protocol images
176
-
177
- ## [13.5.1] - 2026-03-01
178
-
179
- ### Fixed
180
-
181
- - Fixed viewport shift handling to prevent stale content when mixed updates remap screen rows
182
-
183
- ## [13.5.0] - 2026-03-01
184
-
185
- ### Breaking Changes
186
-
187
- - 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.
188
-
189
- ### Added
190
-
191
- - 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.
192
- - 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.
193
-
194
- ### Changed
195
-
196
- - Refactored render orchestration to explicit `hardReset` and `viewportRepaint` paths, with targeted fallbacks for offscreen diff ranges and unsafe row deltas.
197
- - Switched startup to `requestRender(true)` so the first frame always initializes renderer state with a forced full path.
198
- - Replaced legacy viewport bookkeeping (`previousViewportTop`) with `viewportTopRow` tracking and consistent screen-relative cursor calculations.
199
- - Updated stop-sequence cursor placement to target the visible working area and clamp to terminal bounds before final newline emission.
200
- - Documented the intentional performance policy of not forcing full repaint on every viewport-top shift, relying on narrower safety guards instead.
201
-
202
- ### Fixed
203
-
204
- - 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).
205
- - Fixed scroll overshoot on `stop()` when content fills the viewport by clamping target row movement to valid screen rows.
206
-
207
- ## [13.4.0] - 2026-03-01
208
-
209
- ### Added
210
-
211
- - 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
212
-
213
- ### Changed
214
-
215
- - Changed resize redraw behavior to use configurable clear semantics (`viewport` vs `scrollback`) while keeping full content rendering for scrollback navigation
216
-
217
- ### Fixed
218
-
219
- - Fixed loader component rendering lines wider than terminal width, preventing text overflow and display artifacts
220
-
221
- ## [13.3.11] - 2026-02-28
222
-
223
- ### Fixed
224
-
225
- - 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.
226
-
227
- ## [13.3.8] - 2026-02-28
228
-
229
- ### Breaking Changes
230
-
231
- - Changed mermaid hash type from string to bigint in `getMermaidImage` callback and `extractMermaidBlocks` return type
232
- - Removed `mime-types` and `@types/mime-types` from dependencies
233
- - Removed `@xterm/xterm` from dependencies
234
-
235
- ### Changed
236
-
237
- - Updated mermaid hash computation to use `Bun.hash.xxHash64()` instead of `Bun.hash().toString(16)`
238
-
239
- ## [12.19.0] - 2026-02-22
240
-
241
- ### Added
242
-
243
- - Added `getTopBorderAvailableWidth()` method to calculate available width for top border content accounting for border characters and padding
244
-
245
- ### Fixed
246
-
247
- - Fixed stale viewport rows appearing when terminal height increases by triggering full re-render on height changes
248
-
249
- ## [12.18.0] - 2026-02-21
250
-
251
- ### Fixed
252
-
253
- - Fixed viewport synchronization issue by clearing scrollback when terminal state becomes desynced during full re-renders
254
-
255
- ## [12.12.2] - 2026-02-19
256
-
257
- ### Fixed
258
-
259
- - Fixed non-forced full re-renders clearing terminal scrollback history during streaming updates by limiting scrollback clears to explicit forced re-renders.
260
-
261
- ## [12.12.0] - 2026-02-19
262
-
263
- ### Added
264
-
265
- - Added PageUp/PageDown navigation for editor content and autocomplete selection to jump across long wrapped inputs faster.
266
-
267
- ### Fixed
268
-
269
- - 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)).
270
-
271
- ## [12.11.3] - 2026-02-19
272
-
273
- ### Fixed
274
-
275
- - Fixed differential deleted-line rendering when content shrinks to empty so stale first-row content is cleared reliably.
276
- - Fixed incremental stale-row clearing to use erase-below semantics in synchronized output, reducing leftover-line artifacts after shrink operations.
277
-
278
- ## [12.9.0] - 2026-02-17
279
-
280
- ### Added
281
-
282
- - Exported `getTerminalId()` function to get a stable identifier for the current terminal, with support for TTY device paths and terminal multiplexers
283
- - Exported `getTtyPath()` function to resolve the TTY device path for stdin via POSIX `ttyname(3)`
284
-
285
- ## [12.5.0] - 2026-02-15
286
-
287
- ### Added
288
-
289
- - Added `cursorOverride` and `cursorOverrideWidth` properties to customize the end-of-text cursor glyph with ANSI-styled strings
290
- - Added `getUseTerminalCursor()` method to query the terminal cursor mode setting
291
-
292
- ## [11.10.0] - 2026-02-10
293
-
294
- ### Added
295
-
296
- - Added `hint` property to autocomplete items to display dim ghost text after cursor when item is selected
297
- - Added `getInlineHint()` method to `SlashCommand` interface for providing inline hint text based on argument state
298
- - Added `getInlineHint()` method to `AutocompleteProvider` interface for displaying dim ghost text after cursor
299
- - Added `hintStyle` theme option to customize styling of inline hint/ghost text in editor
300
-
301
- ### Changed
302
-
303
- - Updated editor to render inline hint text as dim ghost text after cursor when autocomplete suggestions are active or provider supplies hints
304
-
305
- ## [11.8.0] - 2026-02-10
306
-
307
- ### Added
308
-
309
- - Added Alt+Y keybinding to cycle through kill ring entries (yank-pop)
310
- - Added undo support to Input component with Ctrl+Z keybinding
311
- - Added kill ring support to Input component for Emacs-style kill/yank operations
312
- - Added yank (Ctrl+Y) and yank-pop (Alt+Y) support to Input component
313
-
314
- ### Changed
315
-
316
- - Changed Editor kill ring implementation to use dedicated KillRing class for better state management
317
- - Changed Editor undo stack to use generic UndoStack class with automatic state cloning
318
- - Changed kill/yank behavior to properly accumulate consecutive kill operations
319
- - Changed Input component deletion methods to record killed text in kill ring
320
- - Changed undo coalescing in Input component to group consecutive word typing into single undo units
321
-
322
- ## [11.4.1] - 2026-02-06
323
-
324
- ### Fixed
325
-
326
- - Fixed terminal scrolling when displaying overlays after rendering large content, preventing hundreds of blank lines from being output
327
-
328
- ## [11.3.0] - 2026-02-06
329
-
330
- ### Breaking Changes
331
-
332
- - Removed `getCursorPosition()` method from Component interface and implementations, eliminating hardware cursor positioning support
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))
333
10
 
334
11
  ### Added
335
12
 
336
- - Added sticky column behavior for vertical cursor movement, preserving target column when navigating through lines of varying lengths
337
- - Added `drainInput()` method to Terminal interface to prevent Kitty key release events from leaking to parent shell over slow SSH connections
338
- - Added `setClearOnShrink()` method to control whether full re-render occurs when content shrinks below working area
339
- - Added support for hidden paths (e.g., `.pi`, `.github`) in autocomplete while excluding `.git` directories
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))
340
33
 
341
34
  ### Changed
342
35
 
343
- - Changed default value of `PI_HARDWARE_CURSOR` environment variable from implicit true to explicit `"1"` for clarity
344
- - Changed default value of `PI_CLEAR_ON_SHRINK` environment variable from implicit false to explicit `"0"` for clarity
345
- - Changed TUI to clear screen on startup to prevent shell prompts and status messages from bleeding into the first rendered frame
346
- - Refactored full-render logic into reusable helper function to reduce code duplication across multiple render paths
347
- - Changed autocomplete to include hidden paths but filter out `.git` and its contents
348
- - Changed Input component to properly handle surrogate pairs in Unicode text, preventing cursor display corruption with emoji and multi-byte characters
349
- - Changed Editor to use `setCursorCol()` for all cursor column updates, enabling sticky column tracking
350
- - Changed Editor's vertical navigation to implement sticky column logic via `moveToVisualLine()` and `computeVerticalMoveColumn()`
351
- - Changed Editor's Enter key handling to extract submit logic into `submitValue()` method for better code organization
352
- - Changed SettingsList to truncate long lines to viewport width, preventing text overflow
353
- - Changed Terminal's `stop()` method to drain stdin before restoring raw mode, fixing race condition where Ctrl+D could close parent shell over SSH
354
- - Changed TUI rendering to add `clearOnShrink` option (controlled by `PI_CLEAR_ON_SHRINK` env var) for reducing redraws on slower terminals
355
- - 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).
356
39
 
357
40
  ### Fixed
358
41
 
359
- - Fixed rendering of extra blank lines when content shrinks by improving cursor positioning logic during line deletion
360
- - Fixed cursor display position in Input component when scrolling horizontally through long text
361
- - Fixed Kitty keyboard protocol disable sequence to use safe write method, preventing potential output buffering issues
362
- - Fixed unnecessary full-screen redraws when changes occur in out-of-view components (e.g., spinners), reducing terminal scroll events and improving performance on slower connections
363
- - Fixed scrollback clearing behavior to only clear screen instead of scrollback when resizing or shrinking content, preventing loss of terminal history
364
- - Fixed `.git` directory appearing in autocomplete suggestions when filtering by prefix
365
- - Fixed cursor position corruption in Input component when displaying text with emoji and combining characters
366
- - Fixed `.git` directory appearing in autocomplete suggestions
367
- - Fixed race condition where Kitty key release events could leak to parent shell after TUI exit over slow SSH connections
368
- - Fixed Editor's word movement (Ctrl+Left/Right) to properly reset sticky column for subsequent vertical navigation
369
- - Fixed Editor's undo operation to reset sticky column state when restoring cursor position
370
- - Fixed Editor's right arrow key at end of last line to set sticky column for subsequent up/down navigation
371
- - Fixed TUI rendering to correctly detect viewport changes and avoid false full-redraws after content shrinks
372
- - Fixed Kitty protocol key parsing to prefer codepoint over base layout for Latin letters and symbols, fixing keyboard layout issues (e.g., Dvorak)
373
-
374
- ## [11.0.0] - 2026-02-05
375
-
376
- ### Added
377
-
378
- - Introduced `terminal-capabilities.ts` module consolidating terminal detection and image protocol support
379
- - Added `TerminalInfo` class with methods for detecting image lines and formatting notifications
380
- - Added `NotifyProtocol` enum supporting Bell, OSC 99, and OSC 9 notification protocols
381
- - Added `isNotificationSuppressed()` function to check `OMP_NOTIFICATIONS` environment variable
382
- - Added `TERMINAL` constant providing detected terminal capabilities at runtime
383
-
384
- ### 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))
385
59
 
386
- - Changed notification suppression environment variable from `OMP_NOTIFICATIONS` to `PI_NOTIFICATIONS`
387
- - Changed TUI write log environment variable from `OMP_TUI_WRITE_LOG` to `PI_TUI_WRITE_LOG`
388
- - Changed hardware cursor environment variable from `OMP_HARDWARE_CURSOR` to `PI_HARDWARE_CURSOR`
389
- - Updated environment variable access to use `getEnv()` utility function from `@linxiraos/pi-utils` for consistent handling
390
- - Renamed `TERMINAL_INFO` export to `TERMINAL` for clearer API semantics
391
- - Reorganized terminal image exports from `terminal-image` to `terminal-capabilities` module
392
- - 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).
393
62
 
394
63
  ### Removed
395
64
 
396
- - Removed `terminal-image` module exports from public API (functionality migrated to `terminal-capabilities`)
397
-
398
- ## [10.5.0] - 2026-02-04
399
-
400
- ### Fixed
401
-
402
- - 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)
403
66
 
404
67
  ## [9.8.0] - 2026-02-01
405
68
 
406
- ### Changed
407
-
408
- - Moved `wrapTextWithAnsi` export to `@linxiraos/pi-natives` package
409
-
410
69
  ### Fixed
411
70
 
412
71
  - Improved Kitty terminal key sequence parsing to correctly handle text field codepoints in CSI-u sequences
@@ -434,7 +93,6 @@
434
93
 
435
94
  ### Removed
436
95
 
437
- - Removed `truncateToWidth`, `sliceWithWidth`, and `extractSegments` functions from public API (now re-exported directly from @linxiraos/pi-natives)
438
96
  - Removed `ellipsis` property from `SymbolTheme` interface
439
97
  - Removed `extractAnsiCode` function from public API
440
98
 
@@ -619,19 +277,12 @@
619
277
  - Fixed numbered list items showing "1." for all items when code blocks break list continuity
620
278
  - Fixed width overflow protection in overlay compositing to prevent TUI crashes
621
279
 
622
- ## [4.7.0] - 2026-01-12
623
-
624
- ### Fixed
625
-
626
- - Remove trailing space padding from Text, Markdown, and TruncatedText components when no background color is set (fixes copied text including unwanted whitespace)
627
-
628
280
  ## [4.6.0] - 2026-01-12
629
281
 
630
282
  ### Added
631
283
 
632
284
  - Add fuzzy matching module (`fuzzyMatch`, `fuzzyFilter`) for command autocomplete
633
285
  - Add `getExpandedText()` to editor for expanding paste markers
634
- - Add backslash+enter newline fallback for terminals without Kitty protocol
635
286
 
636
287
  ### Fixed
637
288
 
@@ -640,12 +291,6 @@
640
291
  - Rendering optimizations: only re-render changed lines
641
292
  - Refactor input component to use keybindings manager
642
293
 
643
- ## [4.4.4] - 2026-01-11
644
-
645
- ### Fixed
646
-
647
- - Fixed Ctrl+Enter sequences to insert new lines in the editor
648
-
649
294
  ## [4.2.1] - 2026-01-11
650
295
 
651
296
  ### Changed
@@ -655,7 +300,6 @@
655
300
  ### Fixed
656
301
 
657
302
  - Fixed editor redraw glitch when canceling autocomplete suggestions
658
- - Fixed `fd` tool detection to automatically find `fd` or `fdfind` in PATH when not explicitly configured
659
303
 
660
304
  ## [4.1.0] - 2026-01-10
661
305
 
@@ -669,17 +313,10 @@
669
313
 
670
314
  - `EditorComponent` interface for custom editor implementations
671
315
  - `StdinBuffer` class to split batched stdin into individual sequences
672
- - Overlay compositing via `TUI.showOverlay()` and `TUI.hideOverlay()` for `ctx.ui.custom()` with `{ overlay: true }`
673
- - Kitty keyboard protocol flag 2 support for key release events (`isKeyRelease()`, `isKeyRepeat()`, `KeyEventType`)
674
- - `setKittyProtocolActive()`, `isKittyProtocolActive()` for Kitty protocol state management
675
- - `kittyProtocolActive` property on Terminal interface to query Kitty protocol state
676
- - `Component.wantsKeyRelease` property to opt-in to key release events (default false)
677
- - Input component `onEscape` callback for handling escape key presses
678
316
 
679
317
  ### Changed
680
318
 
681
319
  - Terminal startup now queries Kitty protocol support before enabling event reporting
682
- - Default editor `newLine` binding now uses `shift+enter` only
683
320
 
684
321
  ### Fixed
685
322
 
@@ -750,10 +387,6 @@
750
387
  ### Added
751
388
 
752
389
  - TabBar component for horizontal tab navigation
753
- - Emergency terminal restore to prevent corrupted state on crashes
754
- - Overhauled UI with welcome screen and powerline footer
755
- - Theme-configurable HTML export colors
756
- - `ctx.ui.theme` getter for styling status text with theme colors
757
390
 
758
391
  ### Changed
759
392
 
@@ -775,6 +408,10 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
775
408
 
776
409
  - Added `getText()` method to Text component for retrieving current text content
777
410
 
411
+ ## [1.1.26] - 2026-10-03
412
+
413
+ - 版本线推进至 1.1.26;本版无独立用户可见变化。
414
+
778
415
  ## [1.1.25] - 2026-10-03
779
416
 
780
417
  - Hyperlinks (OSC 8) are now emitted when running inside Zetawork workbench panes: the `ZETA_WORKBENCH=1` probe unlocks `fileHyperlink` output, so file links stay clickable and titles update live in the workbench's embedded terminals.
@@ -801,17 +438,12 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
801
438
  ### Added
802
439
 
803
440
  - Added `fullRedraws` readonly property to TUI class for tracking full screen redraws
804
- - Added `PI_TUI_WRITE_LOG` environment variable to capture raw ANSI output for debugging
805
441
 
806
442
  ### Fixed
807
443
 
808
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))
809
445
  - Slash command menu now only triggers when the editor input is otherwise empty ([#904](https://github.com/badlogic/pi-mono/issues/904))
810
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))
811
- - Fixed editor multi-line insertion handling and lastAction tracking ([#945](https://github.com/badlogic/pi-mono/pull/945) by [@Perlence](https://github.com/Perlence))
812
- - Fixed editor word wrapping to reserve a cursor column ([#934](https://github.com/badlogic/pi-mono/pull/934) by [@Perlence](https://github.com/Perlence))
813
- - 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))
814
- - Fixed Kitty image ID allocation and cleanup to prevent image ID collisions between modules
815
447
 
816
448
  ## [0.49.3] - 2026-01-22
817
449
 
@@ -827,9 +459,6 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
827
459
  ### Fixed
828
460
 
829
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))
830
- - Fixed viewport tracking and cursor positioning for overlays and content shrink scenarios
831
- - 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))
832
- - Directory completions for `@` file attachments no longer add trailing space, allowing continued autocomplete into subdirectories
833
462
 
834
463
  ## [0.49.1] - 2026-01-18
835
464
 
@@ -844,7 +473,6 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
844
473
 
845
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))
846
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))
847
- - 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))
848
476
 
849
477
  ## [0.48.0] - 2026-01-16
850
478
 
@@ -852,10 +480,6 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
852
480
 
853
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))
854
482
 
855
- ### Changed
856
-
857
- - 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).
858
-
859
483
  ### Fixed
860
484
 
861
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))
@@ -877,8 +501,6 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
877
501
  ### Fixed
878
502
 
879
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))
880
- - `visibleWidth()` and `extractAnsiCode()` now handle APC escape sequences (`ESC _ ... BEL`), fixing width calculation and string slicing for strings containing cursor markers
881
- - 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))
882
504
 
883
505
  ## [0.46.0] - 2026-01-15
884
506
 
@@ -892,9 +514,6 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
892
514
 
893
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))
894
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))
895
- - `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))
896
- - New exported types: `OverlayAnchor`, `OverlayHandle`, `OverlayMargin`, `OverlayOptions`, `SizeValue` ([#667](https://github.com/badlogic/pi-mono/pull/667) by [@nicobailon](https://github.com/nicobailon))
897
- - `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))
898
517
 
899
518
  ### Fixed
900
519
 
@@ -921,30 +540,15 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
921
540
  ### Fixed
922
541
 
923
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))
924
- - Reset ANSI styles after each rendered line to prevent style leakage
925
543
 
926
544
  ## [0.42.5] - 2026-01-11
927
545
 
928
546
  ### Fixed
929
547
 
930
548
  - Reduced flicker by only re-rendering changed lines ([#617](https://github.com/badlogic/pi-mono/pull/617) by [@ogulcancelik](https://github.com/ogulcancelik))
931
- - Cursor position tracking when content shrinks with unchanged remaining lines
932
- - TUI renders with wrong dimensions after suspend/resume if terminal was resized while suspended ([#599](https://github.com/badlogic/pi-mono/issues/599))
933
- - 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))
934
-
935
- ## [0.39.0] - 2026-01-08
936
-
937
- ### Added
938
-
939
- - **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))
940
549
 
941
550
  ## [0.38.0] - 2026-01-08
942
551
 
943
- ### Added
944
-
945
- - `EditorComponent` interface for custom editor implementations
946
- - `StdinBuffer` class to split batched stdin into individual sequences (adapted from [OpenTUI](https://github.com/anomalyco/opentui), MIT license)
947
-
948
552
  ### Fixed
949
553
 
950
554
  - Key presses no longer dropped when batched with other events over SSH ([#538](https://github.com/badlogic/pi-mono/pull/538))
@@ -983,18 +587,8 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
983
587
 
984
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))
985
589
 
986
- ## [0.34.0] - 2026-01-04
987
-
988
- ### Added
989
-
990
- - `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))
991
-
992
590
  ## [0.33.0] - 2026-01-04
993
591
 
994
- ### Breaking Changes
995
-
996
- - **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))
997
-
998
592
  ### Added
999
593
 
1000
594
  - `Editor.insertTextAtCursor(text)` method for programmatic text insertion ([#419](https://github.com/badlogic/pi-mono/issues/419))
@@ -1022,38 +616,4 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
1022
616
 
1023
617
  ## [0.31.1] - 2026-01-02
1024
618
 
1025
- ### Fixed
1026
-
1027
- - `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))
1028
-
1029
- ## [0.31.0] - 2026-01-02
1030
-
1031
- ### Added
1032
-
1033
- - `isShiftCtrlO()` key detection function for Shift+Ctrl+O (Kitty protocol)
1034
- - `isShiftCtrlD()` key detection function for Shift+Ctrl+D (Kitty protocol)
1035
- - `TUI.onDebug` callback for global debug key handling (Shift+Ctrl+D)
1036
- - `wrapTextWithAnsi()` utility now exported (wraps text to width, preserving ANSI codes)
1037
-
1038
- ### Changed
1039
-
1040
- - README.md completely rewritten with accurate component documentation, theme interfaces, and examples
1041
- - `visibleWidth()` reimplemented with grapheme-based width calculation, 10x faster on Bun and ~15% faster on Node ([#369](https://github.com/badlogic/pi-mono/pull/369) by [@nathyong](https://github.com/nathyong))
1042
-
1043
- ### Fixed
1044
-
1045
- - Markdown component now renders HTML tags as plain text instead of silently dropping them ([#359](https://github.com/badlogic/pi-mono/issues/359))
1046
- - Crash in `visibleWidth()` and grapheme iteration when encountering undefined code points ([#372](https://github.com/badlogic/pi-mono/pull/372) by [@HACKE-RC](https://github.com/HACKE-RC))
1047
- - ZWJ emoji sequences (rainbow flag, family, etc.) now render with correct width instead of being split into multiple characters ([#369](https://github.com/badlogic/pi-mono/pull/369) by [@nathyong](https://github.com/nathyong))
1048
-
1049
- ## [0.29.0] - 2025-12-25
1050
-
1051
- ### Added
1052
-
1053
- - **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](https://github.com/badlogic/pi-mono/pull/307) by [@mitsuhiko](https://github.com/mitsuhiko))
1054
- - **Word navigation for Input component**: Added Ctrl+Left/Right and Alt+Left/Right support for word-by-word cursor movement. ([#306](https://github.com/badlogic/pi-mono/pull/306) by [@kim0](https://github.com/kim0))
1055
- - **Full Unicode input**: Input component now accepts Unicode characters beyond ASCII. ([#306](https://github.com/badlogic/pi-mono/pull/306) by [@kim0](https://github.com/kim0))
1056
-
1057
- ### Fixed
1058
-
1059
- - **Readline-style Ctrl+W**: Now skips trailing whitespace before deleting the preceding word, matching standard readline behavior. ([#306](https://github.com/badlogic/pi-mono/pull/306) by [@kim0](https://github.com/kim0))
619
+ Older entries are archived in [packages/tui/CHANGELOG.md@fa14205f838f](https://github.com/can1357/oh-my-pi/blob/fa14205f838f282fcea048c64fca74026789a492/packages/tui/CHANGELOG.md).