@linxiraos/pi-tui 1.1.19 → 1.1.22

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 (493) hide show
  1. package/CHANGELOG.md +402 -2
  2. package/THIRD-PARTY-NOTICES.txt +3 -40
  3. package/dist/types/app-keybindings.d.ts +2 -17
  4. package/dist/types/apps/git/git-tui.d.ts +2 -2
  5. package/dist/types/apps/ps-data.d.ts +1 -1
  6. package/dist/types/apps/ps-top.d.ts +1 -1
  7. package/dist/types/autocomplete.d.ts +18 -3
  8. package/dist/types/chat/chat-transcript-builder.d.ts +1 -1
  9. package/dist/types/chat/image-loading.d.ts +24 -0
  10. package/dist/types/chat/read-tool-group.d.ts +3 -3
  11. package/dist/types/chat/thinking-display.d.ts +2 -0
  12. package/dist/types/chat/transcript-entry.d.ts +9 -0
  13. package/dist/types/chat/user-message.d.ts +4 -1
  14. package/dist/types/chrome/keybinding-hints.d.ts +16 -10
  15. package/dist/types/chrome/transcript-container.d.ts +24 -3
  16. package/dist/types/components/editor.d.ts +16 -2
  17. package/dist/types/components/input.d.ts +16 -0
  18. package/dist/types/components/settings-list.d.ts +3 -12
  19. package/dist/types/glyph-protocol.d.ts +62 -0
  20. package/dist/types/index.d.ts +1 -0
  21. package/dist/types/key-hint-format.d.ts +29 -0
  22. package/dist/types/keys.d.ts +2 -1
  23. package/dist/types/kitty-graphics.d.ts +1 -1
  24. package/dist/types/loop-watchdog.d.ts +9 -0
  25. package/dist/types/overlays/agent-hub.d.ts +2 -7
  26. package/dist/types/overlays/agent-transcript-viewer.d.ts +2 -2
  27. package/dist/types/overlays/agents-hub.d.ts +7 -4
  28. package/dist/types/overlays/annotation-overlay.d.ts +30 -0
  29. package/dist/types/overlays/annotation-types.d.ts +84 -0
  30. package/dist/types/overlays/btw-history-panel.d.ts +4 -1
  31. package/dist/types/overlays/btw-panel.d.ts +0 -1
  32. package/dist/types/overlays/copy-selector.d.ts +30 -2
  33. package/dist/types/overlays/copy-targets.d.ts +2 -0
  34. package/dist/types/overlays/history-search.d.ts +0 -2
  35. package/dist/types/overlays/login-dialog.d.ts +0 -1
  36. package/dist/types/overlays/logout-account-selector.d.ts +0 -1
  37. package/dist/types/overlays/model-browser.d.ts +24 -3
  38. package/dist/types/overlays/model-hub.d.ts +2 -2
  39. package/dist/types/overlays/model-picker.d.ts +3 -4
  40. package/dist/types/overlays/move-overlay.d.ts +7 -0
  41. package/dist/types/overlays/oauth-selector.d.ts +3 -6
  42. package/dist/types/overlays/reset-usage-selector.d.ts +14 -3
  43. package/dist/types/overlays/rewind-selector.d.ts +6 -3
  44. package/dist/types/overlays/settings-defs.d.ts +5 -0
  45. package/dist/types/overlays/tree-selector.d.ts +0 -2
  46. package/dist/types/overlays/usage-dashboard.d.ts +17 -2
  47. package/dist/types/overlays/usage-display.d.ts +16 -1
  48. package/dist/types/prompt/composer-attachments.d.ts +7 -0
  49. package/dist/types/prompt/composer-cache.d.ts +34 -16
  50. package/dist/types/prompt/composer-hints.d.ts +42 -0
  51. package/dist/types/prompt/composer.d.ts +30 -23
  52. package/dist/types/prompt/custom-editor.d.ts +13 -28
  53. package/dist/types/prompt/gradient-highlight.d.ts +2 -2
  54. package/dist/types/prompt/image-source.d.ts +27 -0
  55. package/dist/types/prompt/macos-spelling.d.ts +7 -16
  56. package/dist/types/prompt/magic-keywords.d.ts +49 -10
  57. package/dist/types/prompt/model-mention-autocomplete.d.ts +4 -1
  58. package/dist/types/prompt/prompt-action-autocomplete.d.ts +4 -1
  59. package/dist/types/prompt/prose-gate.d.ts +24 -0
  60. package/dist/types/prompt/video.d.ts +7 -11
  61. package/dist/types/prompt/welcome.d.ts +7 -29
  62. package/dist/types/prompt/word-completion.d.ts +46 -0
  63. package/dist/types/render/render-utils.d.ts +3 -1
  64. package/dist/types/render/width-aware-text.d.ts +6 -0
  65. package/dist/types/setup/scenes/glyph.d.ts +6 -1
  66. package/dist/types/setup/scenes/sign-in.d.ts +9 -9
  67. package/dist/types/setup/scenes/types.d.ts +0 -26
  68. package/dist/types/space-hold.d.ts +45 -0
  69. package/dist/types/status-line/component.d.ts +15 -4
  70. package/dist/types/status-line/context-usage.d.ts +3 -1
  71. package/dist/types/status-line/host.d.ts +2 -0
  72. package/dist/types/status-line/metrics.d.ts +0 -1
  73. package/dist/types/status-line/startup.d.ts +38 -0
  74. package/dist/types/status-line/types.d.ts +9 -2
  75. package/dist/types/stdin-buffer.d.ts +12 -0
  76. package/dist/types/terminal-capabilities.d.ts +19 -7
  77. package/dist/types/terminal.d.ts +32 -0
  78. package/dist/types/theme/active-symbols.d.ts +12 -0
  79. package/dist/types/theme/color.d.ts +1 -0
  80. package/dist/types/theme/mermaid-cache.d.ts +6 -8
  81. package/dist/types/theme/session-color.d.ts +3 -3
  82. package/dist/types/theme/shimmer.d.ts +1 -1
  83. package/dist/types/theme/symbols.d.ts +1 -1
  84. package/dist/types/theme/theme-class.d.ts +1 -2
  85. package/dist/types/tmux.d.ts +8 -0
  86. package/dist/types/tools/bash.d.ts +7 -0
  87. package/dist/types/tools/cfg-render.d.ts +37 -0
  88. package/dist/types/tools/cfg-url.d.ts +16 -0
  89. package/dist/types/tools/daemon.d.ts +46 -0
  90. package/dist/types/tools/eval.d.ts +16 -9
  91. package/dist/types/tools/find.d.ts +82 -0
  92. package/dist/types/tools/hub.d.ts +5 -1
  93. package/dist/types/tools/irc.d.ts +30 -0
  94. package/dist/types/tools/line-ranges.d.ts +1 -1
  95. package/dist/types/tools/mcp.d.ts +3 -1
  96. package/dist/types/tools/output-meta.d.ts +4 -1
  97. package/dist/types/tools/proc-render.d.ts +27 -0
  98. package/dist/types/tools/read.d.ts +18 -4
  99. package/dist/types/tools/result-card.d.ts +20 -0
  100. package/dist/types/tools/task-yield-assembly.d.ts +10 -2
  101. package/dist/types/tools/task.d.ts +8 -0
  102. package/dist/types/tools/url-scheme-host.d.ts +29 -0
  103. package/dist/types/tools/vibe.d.ts +4 -0
  104. package/dist/types/tools/wait.d.ts +131 -0
  105. package/dist/types/tools/web-search-types.d.ts +90 -0
  106. package/dist/types/tools/web-search.d.ts +1 -164
  107. package/dist/types/tools/write.d.ts +6 -0
  108. package/dist/types/tools/xd-url.d.ts +8 -0
  109. package/dist/types/tools/xdev.d.ts +9 -1
  110. package/dist/types/tui.d.ts +11 -5
  111. package/dist/types/utils.d.ts +2 -0
  112. package/dist/types/windows-altgr.d.ts +54 -0
  113. package/package.json +11 -10
  114. package/src/app-keybindings.d.ts +380 -0
  115. package/src/app-keybindings.ts +11 -104
  116. package/src/apps/autoresearch-dashboard.ts +10 -3
  117. package/src/apps/debug/log-viewer.ts +3 -2
  118. package/src/apps/debug/protocol-probe.ts +1 -1
  119. package/src/apps/debug/raw-sse.ts +2 -1
  120. package/src/apps/git/git-tui.ts +37 -128
  121. package/src/apps/live-visualizer.ts +2 -1
  122. package/src/apps/ps-data.ts +1 -1
  123. package/src/apps/ps-top.ts +35 -76
  124. package/src/autocomplete.d.ts +154 -0
  125. package/src/autocomplete.ts +42 -7
  126. package/src/bracketed-paste.d.ts +51 -0
  127. package/src/chat/advisor-message.d.ts +11 -0
  128. package/src/chat/assistant-message.d.ts +106 -0
  129. package/src/chat/assistant-message.ts +219 -61
  130. package/src/chat/background-tan-message.d.ts +9 -0
  131. package/src/chat/bash-execution.d.ts +47 -0
  132. package/src/chat/cache-invalidation-marker.d.ts +50 -0
  133. package/src/chat/chat-transcript-builder.d.ts +50 -0
  134. package/src/chat/chat-transcript-builder.ts +9 -5
  135. package/src/chat/collab-prompt-message.d.ts +10 -0
  136. package/src/chat/compaction-summary-message.d.ts +54 -0
  137. package/src/chat/compaction-summary-message.ts +13 -33
  138. package/src/chat/custom-message.d.ts +10 -0
  139. package/src/chat/display-preferences.d.ts +13 -0
  140. package/src/chat/eval-execution.d.ts +29 -0
  141. package/src/chat/execution-shared.d.ts +51 -0
  142. package/src/chat/execution-shared.ts +7 -11
  143. package/src/chat/extension-types.d.ts +28 -0
  144. package/src/chat/image-loading.d.ts +70 -0
  145. package/src/chat/image-loading.ts +81 -0
  146. package/src/chat/late-diagnostics-message.d.ts +21 -0
  147. package/src/chat/messages.d.ts +189 -0
  148. package/src/chat/reaction.d.ts +30 -0
  149. package/src/chat/read-tool-group.d.ts +67 -0
  150. package/src/chat/read-tool-group.ts +8 -9
  151. package/src/chat/served-model-marker.d.ts +47 -0
  152. package/src/chat/skill-message.d.ts +33 -0
  153. package/src/chat/skill-title-input.d.ts +14 -0
  154. package/src/chat/thinking-display.d.ts +14 -0
  155. package/src/chat/thinking-display.ts +73 -11
  156. package/src/chat/tool-execution.d.ts +138 -0
  157. package/src/chat/tool-execution.ts +81 -41
  158. package/src/chat/transcript-browser.d.ts +93 -0
  159. package/src/chat/transcript-entry.d.ts +54 -0
  160. package/src/chat/transcript-entry.ts +16 -0
  161. package/src/chat/transcript-outline.d.ts +86 -0
  162. package/src/chat/transcript-render-helpers.d.ts +92 -0
  163. package/src/chat/transcript-render-helpers.ts +3 -3
  164. package/src/chat/ttsr-notification.ts +4 -3
  165. package/src/chat/user-message.d.ts +55 -0
  166. package/src/chat/user-message.ts +18 -8
  167. package/src/chrome/context-thresholds.d.ts +10 -0
  168. package/src/chrome/diff.d.ts +14 -0
  169. package/src/chrome/dynamic-border.d.ts +16 -0
  170. package/src/chrome/error-block.d.ts +17 -0
  171. package/src/chrome/keybinding-hints.d.ts +46 -0
  172. package/src/chrome/keybinding-hints.ts +38 -13
  173. package/src/chrome/message-divider.d.ts +22 -0
  174. package/src/chrome/message-frame.d.ts +52 -0
  175. package/src/chrome/overlay-box.d.ts +74 -0
  176. package/src/chrome/tool-activity.d.ts +17 -0
  177. package/src/chrome/transcript-container.d.ts +150 -0
  178. package/src/chrome/transcript-container.ts +379 -98
  179. package/src/chrome/transcript-status.d.ts +12 -0
  180. package/src/chrome/visual-truncate.d.ts +19 -0
  181. package/src/components/box.d.ts +33 -0
  182. package/src/components/cancellable-loader.d.ts +23 -0
  183. package/src/components/composer/band.d.ts +2 -0
  184. package/src/components/composer/borderless.d.ts +8 -0
  185. package/src/components/composer/box.d.ts +2 -0
  186. package/src/components/composer/claude.d.ts +8 -0
  187. package/src/components/composer/field.d.ts +3 -0
  188. package/src/components/composer/index.d.ts +10 -0
  189. package/src/components/composer/pi.d.ts +2 -0
  190. package/src/components/composer/rail.d.ts +3 -0
  191. package/src/components/composer/registry.d.ts +19 -0
  192. package/src/components/composer/rule.d.ts +7 -0
  193. package/src/components/composer/types.d.ts +96 -0
  194. package/src/components/disclosure.d.ts +42 -0
  195. package/src/components/editor.d.ts +287 -0
  196. package/src/components/editor.ts +265 -89
  197. package/src/components/form.d.ts +130 -0
  198. package/src/components/image.d.ts +207 -0
  199. package/src/components/image.ts +25 -9
  200. package/src/components/input.d.ts +43 -0
  201. package/src/components/input.ts +103 -30
  202. package/src/components/key-value-list.d.ts +24 -0
  203. package/src/components/layout/geometry.d.ts +73 -0
  204. package/src/components/layout/row.d.ts +55 -0
  205. package/src/components/layout/split-pane.d.ts +80 -0
  206. package/src/components/layout/stack.d.ts +50 -0
  207. package/src/components/loader.d.ts +33 -0
  208. package/src/components/loader.ts +37 -17
  209. package/src/components/markdown.d.ts +112 -0
  210. package/src/components/markdown.ts +129 -63
  211. package/src/components/menu-selection.d.ts +71 -0
  212. package/src/components/metric.d.ts +44 -0
  213. package/src/components/progress-bar.d.ts +36 -0
  214. package/src/components/scroll-view.d.ts +98 -0
  215. package/src/components/scroll-viewport.d.ts +46 -0
  216. package/src/components/section.d.ts +19 -0
  217. package/src/components/select-list.d.ts +124 -0
  218. package/src/components/settings-list.d.ts +153 -0
  219. package/src/components/settings-list.ts +14 -40
  220. package/src/components/spacer.d.ts +13 -0
  221. package/src/components/tab-bar.d.ts +91 -0
  222. package/src/components/tab-bar.ts +2 -1
  223. package/src/components/table.d.ts +32 -0
  224. package/src/components/text.d.ts +29 -0
  225. package/src/components/tree-view.d.ts +130 -0
  226. package/src/components/truncated-text.d.ts +12 -0
  227. package/src/components/wizard-step.d.ts +60 -0
  228. package/src/debug-server.d.ts +27 -0
  229. package/src/debug-server.ts +4 -1
  230. package/src/deccara.d.ts +49 -0
  231. package/src/desktop-notify.d.ts +52 -0
  232. package/src/editor-component.d.ts +38 -0
  233. package/src/fuzzy.d.ts +48 -0
  234. package/src/glyph-protocol.d.ts +62 -0
  235. package/src/glyph-protocol.ts +143 -0
  236. package/src/hotkeys-markdown.ts +14 -17
  237. package/src/i18n.d.ts +32 -0
  238. package/src/index.d.ts +53 -0
  239. package/src/index.ts +2 -0
  240. package/src/key-hint-format.d.ts +29 -0
  241. package/src/key-hint-format.ts +122 -0
  242. package/src/keybinding-matchers.d.ts +35 -0
  243. package/src/keybindings.d.ts +202 -0
  244. package/src/keys.d.ts +211 -0
  245. package/src/keys.ts +2 -1
  246. package/src/kill-ring.d.ts +20 -0
  247. package/src/kitty-graphics.d.ts +76 -0
  248. package/src/kitty-graphics.ts +2 -2
  249. package/src/lang-from-path.d.ts +9 -0
  250. package/src/latex-block.d.ts +8 -0
  251. package/src/latex-to-unicode.d.ts +41 -0
  252. package/src/loop-watchdog.d.ts +58 -0
  253. package/src/loop-watchdog.ts +38 -10
  254. package/src/mouse.d.ts +72 -0
  255. package/src/overlays/advisor-config.ts +72 -112
  256. package/src/overlays/agent-hub.ts +78 -193
  257. package/src/overlays/agent-transcript-viewer.ts +18 -34
  258. package/src/overlays/agents-hub.ts +92 -249
  259. package/src/overlays/annotation-overlay.ts +1158 -0
  260. package/src/overlays/annotation-types.ts +78 -0
  261. package/src/overlays/ask-dialog.ts +33 -60
  262. package/src/overlays/bordered-loader.ts +2 -1
  263. package/src/overlays/btw-history-panel.ts +41 -102
  264. package/src/overlays/btw-panel.ts +17 -30
  265. package/src/overlays/cleanse-panel.ts +9 -19
  266. package/src/overlays/codex-reset-fireworks.ts +7 -13
  267. package/src/overlays/composer-shape-preview.ts +3 -1
  268. package/src/overlays/copy-selector.ts +76 -99
  269. package/src/overlays/copy-targets.ts +3 -3
  270. package/src/overlays/extensions/extension-dashboard.ts +7 -7
  271. package/src/overlays/history-search.ts +9 -29
  272. package/src/overlays/hook-editor.ts +7 -2
  273. package/src/overlays/hook-input.ts +2 -1
  274. package/src/overlays/hook-selector.ts +5 -1
  275. package/src/overlays/login-dialog.ts +20 -42
  276. package/src/overlays/logout-account-selector.ts +9 -14
  277. package/src/overlays/mcp-add-wizard.ts +121 -190
  278. package/src/overlays/model-browser.ts +147 -25
  279. package/src/overlays/model-hub.ts +269 -227
  280. package/src/overlays/model-picker.ts +43 -50
  281. package/src/overlays/move-overlay.ts +9 -14
  282. package/src/overlays/oauth-selector.ts +8 -14
  283. package/src/overlays/omfg-panel.ts +16 -39
  284. package/src/overlays/pause-screen.ts +15 -21
  285. package/src/overlays/plan-review-overlay.ts +257 -84
  286. package/src/overlays/plan-save-overlay.ts +5 -8
  287. package/src/overlays/plugin-settings.ts +41 -125
  288. package/src/overlays/reset-usage-selector.ts +87 -49
  289. package/src/overlays/rewind-selector.ts +245 -32
  290. package/src/overlays/session-info-overlay.ts +5 -8
  291. package/src/overlays/session-selector.ts +30 -45
  292. package/src/overlays/settings-defs.ts +7 -0
  293. package/src/overlays/settings-selector.ts +38 -68
  294. package/src/overlays/tree-selector.d.ts +92 -0
  295. package/src/overlays/tree-selector.ts +48 -78
  296. package/src/overlays/usage-dashboard.ts +247 -68
  297. package/src/overlays/usage-display.ts +74 -1
  298. package/src/overlays/usage-row.d.ts +17 -0
  299. package/src/prompt/composer-attachments.d.ts +78 -0
  300. package/src/prompt/composer-attachments.ts +54 -7
  301. package/src/prompt/composer-cache.ts +219 -197
  302. package/src/prompt/composer-hints.ts +75 -0
  303. package/src/prompt/composer.ts +136 -143
  304. package/src/prompt/custom-editor.ts +64 -149
  305. package/src/prompt/gradient-highlight.d.ts +32 -0
  306. package/src/prompt/gradient-highlight.ts +3 -3
  307. package/src/prompt/image-format.d.ts +4 -0
  308. package/src/prompt/image-references.d.ts +26 -0
  309. package/src/prompt/image-source.ts +52 -0
  310. package/src/prompt/macos-spelling.ts +24 -159
  311. package/src/prompt/magic-keywords.d.ts +65 -0
  312. package/src/prompt/magic-keywords.ts +120 -21
  313. package/src/prompt/markdown-prose.d.ts +15 -0
  314. package/src/prompt/markdown-prose.ts +2 -2
  315. package/src/prompt/model-mention-autocomplete.ts +22 -10
  316. package/src/prompt/model-mention-syntax.d.ts +24 -0
  317. package/src/prompt/orchestrate.ts +1 -1
  318. package/src/prompt/prompt-action-autocomplete.ts +9 -2
  319. package/src/prompt/prose-gate.ts +87 -0
  320. package/src/prompt/skill-tokens.d.ts +13 -0
  321. package/src/prompt/tips.txt +10 -8
  322. package/src/prompt/ultrathink.ts +1 -1
  323. package/src/prompt/video.ts +10 -20
  324. package/src/prompt/welcome.ts +94 -107
  325. package/src/prompt/word-completion.ts +205 -0
  326. package/src/prompt/workflow.ts +1 -1
  327. package/src/render/code-cell.d.ts +51 -0
  328. package/src/render/file-list.d.ts +22 -0
  329. package/src/render/hyperlink.d.ts +80 -0
  330. package/src/render/index.d.ts +16 -0
  331. package/src/render/output-block.d.ts +54 -0
  332. package/src/render/output-pane.d.ts +80 -0
  333. package/src/render/render-utils.d.ts +314 -0
  334. package/src/render/render-utils.ts +48 -27
  335. package/src/render/sixel.d.ts +21 -0
  336. package/src/render/status-line.d.ts +23 -0
  337. package/src/render/tool-card.d.ts +71 -0
  338. package/src/render/tree-list.d.ts +29 -0
  339. package/src/render/types.d.ts +17 -0
  340. package/src/render/utils.d.ts +43 -0
  341. package/src/render/width-aware-text.d.ts +29 -0
  342. package/src/render/width-aware-text.ts +9 -0
  343. package/src/setup/scenes/composer.ts +6 -13
  344. package/src/setup/scenes/glyph.ts +9 -2
  345. package/src/setup/scenes/model.ts +7 -14
  346. package/src/setup/scenes/sign-in.ts +33 -81
  347. package/src/setup/scenes/theme.ts +1 -0
  348. package/src/setup/scenes/types.ts +0 -27
  349. package/src/setup/wizard-overlay.ts +2 -0
  350. package/src/setup/wizard.ts +1 -1
  351. package/src/space-hold.d.ts +45 -0
  352. package/src/space-hold.ts +143 -0
  353. package/src/status-line/component.ts +379 -194
  354. package/src/status-line/context-usage.ts +15 -3
  355. package/src/status-line/host.ts +2 -0
  356. package/src/status-line/metrics.ts +3 -21
  357. package/src/status-line/segments.ts +98 -87
  358. package/src/status-line/startup.ts +181 -0
  359. package/src/status-line/types.ts +9 -2
  360. package/src/stdin-buffer.d.ts +81 -0
  361. package/src/stdin-buffer.ts +32 -4
  362. package/src/symbols.d.ts +25 -0
  363. package/src/terminal-capabilities.d.ts +405 -0
  364. package/src/terminal-capabilities.ts +73 -20
  365. package/src/terminal-multiplexer.d.ts +20 -0
  366. package/src/terminal.d.ts +312 -0
  367. package/src/terminal.ts +257 -22
  368. package/src/theme/active-symbols.d.ts +12 -0
  369. package/src/theme/active-symbols.ts +20 -0
  370. package/src/theme/color.d.ts +25 -0
  371. package/src/theme/color.ts +15 -0
  372. package/src/theme/defaults/index.d.ts +9489 -0
  373. package/src/theme/glyph-bundle.json +824 -0
  374. package/src/theme/index.d.ts +4 -0
  375. package/src/theme/loader.d.ts +23 -0
  376. package/src/theme/mermaid-cache.d.ts +24 -0
  377. package/src/theme/mermaid-cache.ts +97 -29
  378. package/src/theme/schema.d.ts +25 -0
  379. package/src/theme/session-color.d.ts +43 -0
  380. package/src/theme/session-color.ts +26 -4
  381. package/src/theme/shimmer.d.ts +44 -0
  382. package/src/theme/shimmer.ts +55 -76
  383. package/src/theme/symbols.d.ts +34 -0
  384. package/src/theme/symbols.ts +89 -8
  385. package/src/theme/theme-class.d.ts +298 -0
  386. package/src/theme/theme-class.ts +29 -13
  387. package/src/theme/theme.d.ts +111 -0
  388. package/src/theme/theme.ts +2 -0
  389. package/src/theme/tui-adapters.d.ts +30 -0
  390. package/src/theme/tui-adapters.ts +14 -1
  391. package/src/tmux.d.ts +14 -0
  392. package/src/tmux.ts +38 -0
  393. package/src/tools/agent-tree.d.ts +36 -0
  394. package/src/tools/ask.d.ts +67 -0
  395. package/src/tools/ast-edit.d.ts +53 -0
  396. package/src/tools/ast-grep.d.ts +52 -0
  397. package/src/tools/bash-interactive.ts +2 -1
  398. package/src/tools/bash.d.ts +110 -0
  399. package/src/tools/bash.ts +68 -15
  400. package/src/tools/cfg-render.d.ts +37 -0
  401. package/src/tools/cfg-render.ts +117 -0
  402. package/src/tools/cfg-url.d.ts +16 -0
  403. package/src/tools/cfg-url.ts +30 -0
  404. package/src/tools/daemon.d.ts +46 -0
  405. package/src/tools/daemon.ts +51 -0
  406. package/src/tools/debug.d.ts +60 -0
  407. package/src/tools/default-renderer.d.ts +24 -0
  408. package/src/tools/edit.d.ts +158 -0
  409. package/src/tools/edit.ts +110 -29
  410. package/src/tools/eval-format/index.d.ts +5 -0
  411. package/src/tools/eval-format/index.ts +1 -0
  412. package/src/tools/eval-format/javascript.d.ts +2 -0
  413. package/src/tools/eval-format/python.d.ts +2 -0
  414. package/src/tools/eval.d.ts +101 -0
  415. package/src/tools/eval.ts +31 -16
  416. package/src/tools/fetch.d.ts +42 -0
  417. package/src/tools/find.d.ts +82 -0
  418. package/src/tools/find.ts +269 -0
  419. package/src/tools/gh-format.d.ts +8 -0
  420. package/src/tools/github.d.ts +144 -0
  421. package/src/tools/glob.d.ts +44 -0
  422. package/src/tools/goal.d.ts +42 -0
  423. package/src/tools/grep.d.ts +64 -0
  424. package/src/tools/grouped-file-output.d.ts +71 -0
  425. package/src/tools/hashline-format.d.ts +28 -0
  426. package/src/tools/hub.ts +9 -3
  427. package/src/tools/index.d.ts +4 -0
  428. package/src/tools/index.ts +4 -2
  429. package/src/tools/irc.d.ts +30 -0
  430. package/src/tools/irc.ts +33 -0
  431. package/src/tools/json-tree.d.ts +59 -0
  432. package/src/tools/line-ranges.d.ts +29 -0
  433. package/src/tools/line-ranges.ts +13 -3
  434. package/src/tools/list-limit.d.ts +15 -0
  435. package/src/tools/lsp.d.ts +72 -0
  436. package/src/tools/mcp.d.ts +83 -0
  437. package/src/tools/mcp.ts +3 -1
  438. package/src/tools/memory.d.ts +67 -0
  439. package/src/tools/output-meta.d.ts +154 -0
  440. package/src/tools/output-meta.ts +13 -3
  441. package/src/tools/proc-render.d.ts +27 -0
  442. package/src/tools/proc-render.ts +270 -0
  443. package/src/tools/read.d.ts +153 -0
  444. package/src/tools/read.ts +118 -56
  445. package/src/tools/renderer.d.ts +98 -0
  446. package/src/tools/report-tool-issue.d.ts +8 -0
  447. package/src/tools/resolve.d.ts +47 -0
  448. package/src/tools/result-card.d.ts +20 -0
  449. package/src/tools/result-card.ts +36 -0
  450. package/src/tools/streaming-output.d.ts +282 -0
  451. package/src/tools/streaming-output.ts +79 -16
  452. package/src/tools/subprocess.d.ts +24 -0
  453. package/src/tools/task-repair-args.d.ts +53 -0
  454. package/src/tools/task-yield-assembly.d.ts +28 -0
  455. package/src/tools/task-yield-assembly.ts +34 -8
  456. package/src/tools/task.d.ts +433 -0
  457. package/src/tools/task.ts +40 -14
  458. package/src/tools/terminal-output.d.ts +8 -0
  459. package/src/tools/think.d.ts +13 -0
  460. package/src/tools/todo.d.ts +118 -0
  461. package/src/tools/tool-errors.d.ts +7 -0
  462. package/src/tools/url-scheme-host.d.ts +29 -0
  463. package/src/tools/url-scheme-host.ts +42 -0
  464. package/src/tools/vibe.d.ts +124 -0
  465. package/src/tools/vibe.ts +15 -2
  466. package/src/tools/wait.d.ts +131 -0
  467. package/src/tools/wait.ts +595 -0
  468. package/src/tools/web-search-types.d.ts +90 -0
  469. package/src/tools/web-search-types.ts +99 -0
  470. package/src/tools/web-search.d.ts +36 -0
  471. package/src/tools/web-search.ts +1 -166
  472. package/src/tools/write.d.ts +82 -0
  473. package/src/tools/write.ts +120 -1
  474. package/src/tools/xd-url.d.ts +21 -0
  475. package/src/tools/xd-url.ts +9 -0
  476. package/src/tools/xdev.d.ts +60 -0
  477. package/src/tools/xdev.ts +9 -1
  478. package/src/ttyid.d.ts +9 -0
  479. package/src/tui.d.ts +435 -0
  480. package/src/tui.ts +237 -165
  481. package/src/utils.d.ts +116 -0
  482. package/src/utils.ts +79 -0
  483. package/src/vim.d.ts +94 -0
  484. package/src/windows-altgr.d.ts +54 -0
  485. package/src/windows-altgr.ts +227 -0
  486. package/dist/types/chat/read-target.d.ts +0 -4
  487. package/dist/types/overlays/tiny-title-download-progress.d.ts +0 -21
  488. package/dist/types/setup/scenes/providers.d.ts +0 -3
  489. package/dist/types/setup/scenes/web-search.d.ts +0 -22
  490. package/src/chat/read-target.ts +0 -7
  491. package/src/overlays/tiny-title-download-progress.ts +0 -104
  492. package/src/setup/scenes/providers.ts +0 -120
  493. package/src/setup/scenes/web-search.ts +0 -182
package/CHANGELOG.md CHANGED
@@ -2,9 +2,405 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
- ## [1.1.19] - 2026-09-22
5
+ ## [1.1.22] - 2026-09-30
6
6
 
7
- - 版本线推进;本版无独立用户可见变化。
7
+ - CLI bin 命名(zeta-c)相关键位提示文案对齐;组件 API 无破坏。
8
+ - header 支持 `setHeader` 扩展挂点(产品常驻入口圆角按钮),`theme.boxRound` 制表符绘制。
9
+
10
+ ## [14.9.8] - 2026-05-12
11
+
12
+ ### Added
13
+
14
+ - 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`)
15
+ - Added optional `argumentHint?: string` to `SlashCommand`; rendered before the description in the autocomplete dropdown (ports pi-mono `aa25726e`)
16
+ - Added `VirtualTerminal.waitForRender()` test helper for the throttled render pipeline (ports pi-mono `41377ee8`)
17
+
18
+ ### Changed
19
+
20
+ - `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`)
21
+ - `requestRender()` non-force calls are coalesced to a ~16ms frame budget; `requestRender(true)` still flushes immediately via `process.nextTick` (ports pi-mono `6f5f37f8`)
22
+ - `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`)
23
+ - `SlashCommand.getArgumentCompletions()` may return a `Promise`; results are now awaited and non-array returns are ignored (ports pi-mono `a1e10789`)
24
+ - Fuzzy `@` autocomplete now follows symlinked directories via `ScanOptions.follow_links` plumbed through the native walker (ports pi-mono `780d5367`)
25
+ - 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`)
26
+ - Changed slash-command autocomplete list rendering to combine command hint and description in a single displayed suggestion text
27
+ - Changed render scheduling to throttle `requestRender` calls to roughly 60fps by batching updates
28
+ - Changed terminal input handling to process complete cell-size responses without buffering partial input
29
+ - Changed `KeyId` to accept super-modifier combinations and improve typed key-id validation
30
+
31
+ ### Fixed
32
+
33
+ - 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`)
34
+ - 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`)
35
+ - 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`)
36
+ - 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`)
37
+ - Fixed xterm `modifyOtherKeys` shifted printable input so uppercase letters inserted via `CSI 27;mod;codepoint~` reach the editor correctly (ports pi-mono `6b55d685`)
38
+ - 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`)
39
+ - 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`)
40
+ - Fixed Markdown strikethrough requiring strict `~~text~~` delimiters with non-whitespace boundaries; single tildes no longer render strikethrough (ports pi-mono `db5274b4`)
41
+ - Allowed `SlashCommand.getArgumentCompletions` to return asynchronous results by accepting Promise-based completions
42
+ - Added `argumentHint` support to slash command definitions and displayed it in command suggestion descriptions
43
+ - Added support for xterm `modifyOtherKeys` printable key sequences by decoding `CSI 27;mod;key~` into text input
44
+ - Normalized line output during rendering to correct Thai/Lao AM glyph composition for displayed text
45
+ - Fixed duplicated Kitty key input emissions by dropping the matching unmodified follow-up sequence after a Kitty CSI-u printable-key event
46
+
47
+ ## [14.9.5] - 2026-05-12
48
+
49
+ ### Fixed
50
+
51
+ - 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))
52
+
53
+ ## [14.5.7] - 2026-04-29
54
+
55
+ ### Fixed
56
+
57
+ - Fixed editor Ctrl+Enter handling to recognize NumLock and keypad Enter variants.
58
+
59
+ ## [14.3.0] - 2026-04-25
60
+
61
+ ### Fixed
62
+
63
+ - Fixed shared Markdown Mermaid fenced-block rendering to resolve diagrams from fenced source text instead of external prerender state
64
+
65
+ ## [14.1.1] - 2026-04-14
66
+
67
+ ### Breaking Changes
68
+
69
+ - Removed the `searchDb` constructor argument from `CombinedAutocompleteProvider`, requiring callers to use the built-in search behavior
70
+
71
+ ### Changed
72
+
73
+ - Changed truncation debug logging to run only when `debugRedraw` is enabled
74
+
75
+ ## [14.0.5] - 2026-04-11
76
+
77
+ ### Changed
78
+
79
+ - Updated hash computation to use `Bun.hash()` instead of `Bun.hash.xxHash64()`, which may return `number` in addition to `bigint`
80
+ - Simplified cache key computation in Box component by removing intermediate hash updates and consolidating hash operations
81
+ - Wrapped native text utility functions (`sliceWithWidth`, `truncateToWidth`, `wrapTextWithAnsi`, `extractSegments`) to automatically pass the current default tab width, simplifying the API for consumers
82
+ - Added `getIndentationNoescape` wrapper that uses `process.cwd()` as the project root for relative file paths
83
+ - Re-export `getDefaultTabWidth`, `getIndentation`, and `setDefaultTabWidth` from `@linxiraos/pi-utils`; native text helpers still receive tab width via wrappers that read the JS default
84
+
85
+ ## [13.16.1] - 2026-03-27
86
+
87
+ ### Added
88
+
89
+ - Support for optional SearchDb parameter in CombinedAutocompleteProvider constructor for improved fuzzy search performance
90
+ - Fuzzy matching filter for autocomplete suggestions to improve relevance of results
91
+
92
+ ### Changed
93
+
94
+ - Fuzzy discovery now applies fuzzy matching filter to results for improved relevance of autocomplete suggestions
95
+ - Autocomplete fuzzy discovery now accepts optional SearchDb instance for faster searches
96
+
97
+ ## [13.16.0] - 2026-03-27
98
+
99
+ ### Changed
100
+
101
+ - Updated tab replacement in editor text sanitization to respect configured tab width setting
102
+
103
+ ## [13.15.0] - 2026-03-23
104
+
105
+ ### Added
106
+
107
+ - Added `renderInlineMarkdown()` function to render inline markdown (bold, italic, code, links, strikethrough) to styled strings
108
+
109
+ ### Fixed
110
+
111
+ - Fixed editor consuming user-rebound copy keys, preventing custom keybindings from working in the editor
112
+
113
+ ## [13.14.1] - 2026-03-21
114
+
115
+ ### Added
116
+
117
+ - Added Ctrl+_ as an additional default shortcut for undo
118
+
119
+ ### Fixed
120
+
121
+ - Ensured undo functionality respects user-configured keybindings
122
+
123
+ ## [13.12.0] - 2026-03-14
124
+
125
+ ### Added
126
+
127
+ - Added `moveToMessageStart()` and `moveToMessageEnd()` methods to move cursor to the beginning and end of the entire message
128
+
129
+ ### Fixed
130
+
131
+ - Fixed autocomplete to preserve `./` prefix when completing relative file and directory paths
132
+ - Fixed paste marker expansion to handle special regex replacement tokens ($1, $2, $&, $$, $`, $') literally in pasted content
133
+
134
+ ## [13.11.0] - 2026-03-12
135
+
136
+ ### Fixed
137
+
138
+ - Fixed OSC 11 background color detection to correctly handle partial escape sequences that arrive mid-buffer, preventing user input from being swallowed
139
+ - Fixed race condition where overlapping OSC 11 queries would be incorrectly cancelled by DA1 sentinels from previous queries
140
+
141
+ ## [13.7.5] - 2026-03-04
142
+
143
+ ### Changed
144
+
145
+ - Extracted word navigation logic into reusable `moveWordLeft` and `moveWordRight` utility functions for consistent cursor movement across components
146
+
147
+ ## [13.6.2] - 2026-03-03
148
+
149
+ ### Fixed
150
+
151
+ - Fixed cursor positioning when content shrinks to empty without clearOnShrink enabled
152
+
153
+ ## [13.5.4] - 2026-03-01
154
+
155
+ ### Fixed
156
+
157
+ - 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))
158
+
159
+ ## [13.5.3] - 2026-03-01
160
+
161
+ ### Fixed
162
+
163
+ - Fixed append rendering logic to correctly handle offscreen header changes during content overflow growth, preserving scroll history integrity
164
+ - Fixed visible tail line updates when appending new content during viewport overflow conditions
165
+ - Fixed cursor positioning instability when appending content under external cursor relocation by using absolute screen addressing instead of relative cursor movement
166
+
167
+ ## [13.5.2] - 2026-03-01
168
+
169
+ ### Breaking Changes
170
+
171
+ - Removed `getMermaidImage` callback from MarkdownTheme; replaced with `getMermaidAscii` that accepts ASCII string instead of image data
172
+ - Removed mermaid module exports (`renderMermaidToPng`, `extractMermaidBlocks`, `prerenderMermaidBlocks`, `MermaidImage` interface)
173
+
174
+ ### Changed
175
+
176
+ - Mermaid diagrams now render as ASCII text instead of terminal graphics protocol images
177
+
178
+ ## [13.5.1] - 2026-03-01
179
+
180
+ ### Fixed
181
+
182
+ - Fixed viewport shift handling to prevent stale content when mixed updates remap screen rows
183
+
184
+ ## [13.5.0] - 2026-03-01
185
+
186
+ ### Breaking Changes
187
+
188
+ - 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.
189
+
190
+ ### Added
191
+
192
+ - 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.
193
+ - 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.
194
+
195
+ ### Changed
196
+
197
+ - Refactored render orchestration to explicit `hardReset` and `viewportRepaint` paths, with targeted fallbacks for offscreen diff ranges and unsafe row deltas.
198
+ - Switched startup to `requestRender(true)` so the first frame always initializes renderer state with a forced full path.
199
+ - Replaced legacy viewport bookkeeping (`previousViewportTop`) with `viewportTopRow` tracking and consistent screen-relative cursor calculations.
200
+ - Updated stop-sequence cursor placement to target the visible working area and clamp to terminal bounds before final newline emission.
201
+ - Documented the intentional performance policy of not forcing full repaint on every viewport-top shift, relying on narrower safety guards instead.
202
+
203
+ ### Fixed
204
+
205
+ - 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).
206
+ - Fixed scroll overshoot on `stop()` when content fills the viewport by clamping target row movement to valid screen rows.
207
+
208
+ ## [13.4.0] - 2026-03-01
209
+
210
+ ### Added
211
+
212
+ - 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
213
+
214
+ ### Changed
215
+
216
+ - Changed resize redraw behavior to use configurable clear semantics (`viewport` vs `scrollback`) while keeping full content rendering for scrollback navigation
217
+
218
+ ### Fixed
219
+
220
+ - Fixed loader component rendering lines wider than terminal width, preventing text overflow and display artifacts
221
+
222
+ ## [13.3.11] - 2026-02-28
223
+
224
+ ### Fixed
225
+
226
+ - 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.
227
+
228
+ ## [13.3.8] - 2026-02-28
229
+
230
+ ### Breaking Changes
231
+
232
+ - Changed mermaid hash type from string to bigint in `getMermaidImage` callback and `extractMermaidBlocks` return type
233
+ - Removed `mime-types` and `@types/mime-types` from dependencies
234
+ - Removed `@xterm/xterm` from dependencies
235
+
236
+ ### Changed
237
+
238
+ - Updated mermaid hash computation to use `Bun.hash.xxHash64()` instead of `Bun.hash().toString(16)`
239
+
240
+ ## [12.19.0] - 2026-02-22
241
+
242
+ ### Added
243
+
244
+ - Added `getTopBorderAvailableWidth()` method to calculate available width for top border content accounting for border characters and padding
245
+
246
+ ### Fixed
247
+
248
+ - Fixed stale viewport rows appearing when terminal height increases by triggering full re-render on height changes
249
+
250
+ ## [12.18.0] - 2026-02-21
251
+
252
+ ### Fixed
253
+
254
+ - Fixed viewport synchronization issue by clearing scrollback when terminal state becomes desynced during full re-renders
255
+
256
+ ## [12.12.2] - 2026-02-19
257
+
258
+ ### Fixed
259
+
260
+ - Fixed non-forced full re-renders clearing terminal scrollback history during streaming updates by limiting scrollback clears to explicit forced re-renders.
261
+
262
+ ## [12.12.0] - 2026-02-19
263
+
264
+ ### Added
265
+
266
+ - Added PageUp/PageDown navigation for editor content and autocomplete selection to jump across long wrapped inputs faster.
267
+
268
+ ### Fixed
269
+
270
+ - 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)).
271
+
272
+ ## [12.11.3] - 2026-02-19
273
+
274
+ ### Fixed
275
+
276
+ - Fixed differential deleted-line rendering when content shrinks to empty so stale first-row content is cleared reliably.
277
+ - Fixed incremental stale-row clearing to use erase-below semantics in synchronized output, reducing leftover-line artifacts after shrink operations.
278
+
279
+ ## [12.9.0] - 2026-02-17
280
+
281
+ ### Added
282
+
283
+ - Exported `getTerminalId()` function to get a stable identifier for the current terminal, with support for TTY device paths and terminal multiplexers
284
+ - Exported `getTtyPath()` function to resolve the TTY device path for stdin via POSIX `ttyname(3)`
285
+
286
+ ## [12.5.0] - 2026-02-15
287
+
288
+ ### Added
289
+
290
+ - Added `cursorOverride` and `cursorOverrideWidth` properties to customize the end-of-text cursor glyph with ANSI-styled strings
291
+ - Added `getUseTerminalCursor()` method to query the terminal cursor mode setting
292
+
293
+ ## [11.10.0] - 2026-02-10
294
+
295
+ ### Added
296
+
297
+ - Added `hint` property to autocomplete items to display dim ghost text after cursor when item is selected
298
+ - Added `getInlineHint()` method to `SlashCommand` interface for providing inline hint text based on argument state
299
+ - Added `getInlineHint()` method to `AutocompleteProvider` interface for displaying dim ghost text after cursor
300
+ - Added `hintStyle` theme option to customize styling of inline hint/ghost text in editor
301
+
302
+ ### Changed
303
+
304
+ - Updated editor to render inline hint text as dim ghost text after cursor when autocomplete suggestions are active or provider supplies hints
305
+
306
+ ## [11.8.0] - 2026-02-10
307
+
308
+ ### Added
309
+
310
+ - Added Alt+Y keybinding to cycle through kill ring entries (yank-pop)
311
+ - Added undo support to Input component with Ctrl+Z keybinding
312
+ - Added kill ring support to Input component for Emacs-style kill/yank operations
313
+ - Added yank (Ctrl+Y) and yank-pop (Alt+Y) support to Input component
314
+
315
+ ### Changed
316
+
317
+ - Changed Editor kill ring implementation to use dedicated KillRing class for better state management
318
+ - Changed Editor undo stack to use generic UndoStack class with automatic state cloning
319
+ - Changed kill/yank behavior to properly accumulate consecutive kill operations
320
+ - Changed Input component deletion methods to record killed text in kill ring
321
+ - Changed undo coalescing in Input component to group consecutive word typing into single undo units
322
+
323
+ ## [11.4.1] - 2026-02-06
324
+
325
+ ### Fixed
326
+
327
+ - Fixed terminal scrolling when displaying overlays after rendering large content, preventing hundreds of blank lines from being output
328
+
329
+ ## [11.3.0] - 2026-02-06
330
+
331
+ ### Breaking Changes
332
+
333
+ - Removed `getCursorPosition()` method from Component interface and implementations, eliminating hardware cursor positioning support
334
+
335
+ ### Added
336
+
337
+ - Added sticky column behavior for vertical cursor movement, preserving target column when navigating through lines of varying lengths
338
+ - Added `drainInput()` method to Terminal interface to prevent Kitty key release events from leaking to parent shell over slow SSH connections
339
+ - Added `setClearOnShrink()` method to control whether full re-render occurs when content shrinks below working area
340
+ - Added support for hidden paths (e.g., `.pi`, `.github`) in autocomplete while excluding `.git` directories
341
+
342
+ ### Changed
343
+
344
+ - Changed default value of `PI_HARDWARE_CURSOR` environment variable from implicit true to explicit `"1"` for clarity
345
+ - Changed default value of `PI_CLEAR_ON_SHRINK` environment variable from implicit false to explicit `"0"` for clarity
346
+ - Changed TUI to clear screen on startup to prevent shell prompts and status messages from bleeding into the first rendered frame
347
+ - Refactored full-render logic into reusable helper function to reduce code duplication across multiple render paths
348
+ - Changed autocomplete to include hidden paths but filter out `.git` and its contents
349
+ - Changed Input component to properly handle surrogate pairs in Unicode text, preventing cursor display corruption with emoji and multi-byte characters
350
+ - Changed Editor to use `setCursorCol()` for all cursor column updates, enabling sticky column tracking
351
+ - Changed Editor's vertical navigation to implement sticky column logic via `moveToVisualLine()` and `computeVerticalMoveColumn()`
352
+ - Changed Editor's Enter key handling to extract submit logic into `submitValue()` method for better code organization
353
+ - Changed SettingsList to truncate long lines to viewport width, preventing text overflow
354
+ - Changed Terminal's `stop()` method to drain stdin before restoring raw mode, fixing race condition where Ctrl+D could close parent shell over SSH
355
+ - Changed TUI rendering to add `clearOnShrink` option (controlled by `PI_CLEAR_ON_SHRINK` env var) for reducing redraws on slower terminals
356
+ - Changed TUI rendering to detect when extra lines exceed viewport height and trigger full re-render instead of incremental updates
357
+
358
+ ### Fixed
359
+
360
+ - Fixed rendering of extra blank lines when content shrinks by improving cursor positioning logic during line deletion
361
+ - Fixed cursor display position in Input component when scrolling horizontally through long text
362
+ - Fixed Kitty keyboard protocol disable sequence to use safe write method, preventing potential output buffering issues
363
+ - 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
364
+ - Fixed scrollback clearing behavior to only clear screen instead of scrollback when resizing or shrinking content, preventing loss of terminal history
365
+ - Fixed `.git` directory appearing in autocomplete suggestions when filtering by prefix
366
+ - Fixed cursor position corruption in Input component when displaying text with emoji and combining characters
367
+ - Fixed `.git` directory appearing in autocomplete suggestions
368
+ - Fixed race condition where Kitty key release events could leak to parent shell after TUI exit over slow SSH connections
369
+ - Fixed Editor's word movement (Ctrl+Left/Right) to properly reset sticky column for subsequent vertical navigation
370
+ - Fixed Editor's undo operation to reset sticky column state when restoring cursor position
371
+ - Fixed Editor's right arrow key at end of last line to set sticky column for subsequent up/down navigation
372
+ - Fixed TUI rendering to correctly detect viewport changes and avoid false full-redraws after content shrinks
373
+ - Fixed Kitty protocol key parsing to prefer codepoint over base layout for Latin letters and symbols, fixing keyboard layout issues (e.g., Dvorak)
374
+
375
+ ## [11.0.0] - 2026-02-05
376
+
377
+ ### Added
378
+
379
+ - Introduced `terminal-capabilities.ts` module consolidating terminal detection and image protocol support
380
+ - Added `TerminalInfo` class with methods for detecting image lines and formatting notifications
381
+ - Added `NotifyProtocol` enum supporting Bell, OSC 99, and OSC 9 notification protocols
382
+ - Added `isNotificationSuppressed()` function to check `OMP_NOTIFICATIONS` environment variable
383
+ - Added `TERMINAL` constant providing detected terminal capabilities at runtime
384
+
385
+ ### Changed
386
+
387
+ - Changed notification suppression environment variable from `OMP_NOTIFICATIONS` to `PI_NOTIFICATIONS`
388
+ - Changed TUI write log environment variable from `OMP_TUI_WRITE_LOG` to `PI_TUI_WRITE_LOG`
389
+ - Changed hardware cursor environment variable from `OMP_HARDWARE_CURSOR` to `PI_HARDWARE_CURSOR`
390
+ - Updated environment variable access to use `getEnv()` utility function from `@linxiraos/pi-utils` for consistent handling
391
+ - Renamed `TERMINAL_INFO` export to `TERMINAL` for clearer API semantics
392
+ - Reorganized terminal image exports from `terminal-image` to `terminal-capabilities` module
393
+ - Updated all internal references to use `TERMINAL` instead of `TERMINAL_INFO`
394
+
395
+ ### Removed
396
+
397
+ - Removed `terminal-image` module exports from public API (functionality migrated to `terminal-capabilities`)
398
+
399
+ ## [10.5.0] - 2026-02-04
400
+
401
+ ### Fixed
402
+
403
+ - Treated inline image lines with cursor-move prefixes as image sequences to prevent width overflow crashes
8
404
 
9
405
  ## [9.8.0] - 2026-02-01
10
406
 
@@ -380,6 +776,10 @@ Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mon
380
776
 
381
777
  - Added `getText()` method to Text component for retrieving current text content
382
778
 
779
+ ## [1.1.19] - 2026-09-22
780
+
781
+ - 版本线推进;本版无独立用户可见变化。
782
+
383
783
  ## [1.1.18] - 2026-09-22
384
784
 
385
785
  - 新增宿主可注入文本层:`setTuiTextSource` / `tuiText` / `tuiTextFmt`——内联英文为永久 fallback,宿主(coding-agent)注入活翻译代理,面板文本随 `/language` 即时切换;pi-tui 独立使用零依赖。
@@ -78,8 +78,8 @@ below.
78
78
  uutils coreutils (https://github.com/uutils/coreutils), MIT
79
79
  --------------------------------------------------------------------------------
80
80
  Covers: base32, base64, basename, cat, cksum (shared checksum machinery),
81
- b2sum, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, comm, cut,
82
- date, dirname, head, hostname, ln, ls, mkdir, mktemp, mv, nproc, paste,
81
+ b2sum, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, comm, cp,
82
+ cut, date, dirname, head, hostname, ln, ls, mkdir, mktemp, mv, nproc, paste,
83
83
  printenv, readlink, realpath, rm, seq, sort, stat, tac, tail, tee, touch, tr,
84
84
  truncate, uname, uniq, wc, whoami, yes.
85
85
 
@@ -293,7 +293,7 @@ MIT License
293
293
  Copyright (c) 2026 Sander Land
294
294
  (measured tokenizer vocabulary data, reconstruction model, and reference
295
295
  implementation: https://github.com/sanderland/ctok)
296
- Copyright (c) 2026 Can Bölük and the Oh My Pi contributors
296
+ Copyright (c) 2026 Can Bölük and the omp contributors
297
297
  Copyright (c) 2026 Stencil Labs, Inc.
298
298
  (Rust implementation and the compact binary vocabulary encoding in
299
299
  crates/pi-natives/src/utok/claude)
@@ -335,43 +335,6 @@ This license allows the work and adaptations of it to be shared and used
335
335
  commercially, as long as it is attributed to Poppy Works. The font is bundled
336
336
  here (crates/pi-natives/src/fonts/Silver.ttf) as a CJK/Unicode bitmap fallback.
337
337
 
338
- -------------------------------------------------------------------------------
339
- packages/utils/src/vendor/mermaid-ascii/NOTICE
340
-
341
- This directory contains an in-house Mermaid-diagram-to-ASCII renderer adapted
342
- from beautiful-mermaid (https://github.com/lukilabs/beautiful-mermaid), used
343
- under the MIT License.
344
-
345
- Copyright (c) 2026 Craft Docs
346
-
347
- Only the ASCII rendering pipeline is ported (flowchart/state, sequence, class,
348
- ER, and xychart diagrams); the SVG renderer and its `elkjs` graph-layout
349
- dependency, the browser entry point, and the SVG theme/style modules were
350
- dropped. Terminal display width is reimplemented on `Bun.stringWidth`, and
351
- inline label formatting (HTML tags, markdown emphasis) is reduced to plain text
352
- for ASCII output. Layout and edge-routing logic is preserved faithfully so
353
- ASCII output matches the upstream package.
354
-
355
- MIT License
356
-
357
- Permission is hereby granted, free of charge, to any person obtaining a copy
358
- of this software and associated documentation files (the "Software"), to deal
359
- in the Software without restriction, including without limitation the rights
360
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
361
- copies of the Software, and to permit persons to whom the Software is
362
- furnished to do so, subject to the following conditions:
363
-
364
- The above copyright notice and this permission notice shall be included in all
365
- copies or substantial portions of the Software.
366
-
367
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
368
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
369
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
370
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
371
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
372
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
373
- SOFTWARE.
374
-
375
338
  -------------------------------------------------------------------------------
376
339
  packages/coding-agent/src/markit/NOTICE
377
340
 
@@ -372,24 +372,9 @@ export declare class KeybindingsManager extends TuiKeybindingsManager {
372
372
  * Get the effective resolved bindings (defaults + user overrides).
373
373
  */
374
374
  getEffectiveConfig(): KeybindingsConfig;
375
- /**
376
- * Get display string for a keybinding (e.g., "ctrl+c/escape").
377
- */
375
+ /** Display string for a keybinding's keys (see {@link formatKeyHints}); empty when unbound. */
378
376
  getDisplayString(keybinding: Keybinding): string;
379
377
  }
380
- /** Pin the platform used to render modifier labels (test seam). */
381
- export declare function setKeyHintPlatform(platform: NodeJS.Platform | undefined): void;
382
- /** Platform currently used for key-hint rendering. */
383
- export declare function keyHintPlatform(): NodeJS.Platform;
384
- type Modifier = "ctrl" | "shift" | "alt" | "super";
385
- /**
386
- * Human label for a modifier, using each platform's own key names. `ctrl` and
387
- * `shift` are the same everywhere; `alt`/`super` become `Option`/`Cmd` on macOS.
388
- */
389
- export declare function modifierLabel(mod: Modifier, platform?: NodeJS.Platform): string;
390
- /** Format a key chord with human-readable, platform-aware modifier labels. */
391
- export declare function formatKeyHint(key: KeyId): string;
392
- /** Format alternative key chords as slash-separated human-readable hints. */
393
- export declare function formatKeyHints(keys: KeyId | KeyId[]): string;
378
+ export * from "./key-hint-format.js";
394
379
  export type { Keybinding, KeybindingsConfig, KeyId };
395
380
  export { migrateKeybindingsConfigFile };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `zeta git` — fullscreen repository TUI.
2
+ * `omp git` — fullscreen repository TUI.
3
3
  *
4
4
  * Layout: header (file path, encoding, stage-file button, close), toolbar
5
5
  * (scope chip, file/diff toggle, hunk navigation, hunk/inline/split view
@@ -62,5 +62,5 @@ export interface GitTuiHost {
62
62
  * slash command). Resolves when the user closes it; the caller restores focus.
63
63
  */
64
64
  export declare function showGitOverlay(ui: TUI, host: GitTuiHost): Promise<void>;
65
- /** Run the fullscreen git TUI standalone (`zeta git`) until the user quits. */
65
+ /** Run the fullscreen git TUI standalone (`omp git`) until the user quits. */
66
66
  export declare function runGitTui(host: GitTuiHost): Promise<void>;
@@ -1,4 +1,4 @@
1
- import type { DaemonSnapshot, DaemonSpec, DaemonState } from "../tools/hub.js";
1
+ import type { DaemonSnapshot, DaemonSpec, DaemonState } from "../tools/daemon.js";
2
2
  /** One broker scope: a project runtime dir or a machine-global service dir. */
3
3
  export interface PsScope {
4
4
  kind: "project" | "global";
@@ -1,5 +1,5 @@
1
1
  import { type Component, TUI } from "../tui.js";
2
- import type { DaemonSnapshot, DaemonSpec } from "../tools/hub.js";
2
+ import type { DaemonSnapshot, DaemonSpec } from "../tools/daemon.js";
3
3
  import { type PsScope, type PsScopeReport, type PsTarget } from "./ps-data.js";
4
4
  /** Options accepted by the interactive monitor: scope selection from the list flags. */
5
5
  export interface PsTopOptions extends PsTarget {
@@ -15,6 +15,12 @@ export declare function findTrailingSlashCommandStart(text: string): number | nu
15
15
  export declare function isDirectoryCompletionValue(value: string): boolean;
16
16
  /** Ranked-tier subsequence match ("wig" ~ "skill:wig"); distinct from fuzzy.ts's word-local engine. */
17
17
  export declare function subsequenceMatch(query: string, target: string): boolean;
18
+ /**
19
+ * Whether an `@` file completion `value` still fits the live `@` token.
20
+ * The editor narrows a stale `@` list with this while a fresh search runs;
21
+ * mirrors the subsequence filter `getSuggestions` applies to fuzzy results.
22
+ */
23
+ export declare function atCompletionMatches(token: string, value: string): boolean;
18
24
  /** Ranked-tier subsequence score (100/80/60/40−gaps·5); higher is better, 0 is no match. */
19
25
  export declare function subsequenceScore(query: string, target: string): number;
20
26
  export interface AutocompleteItem {
@@ -43,8 +49,14 @@ export interface SlashCommand {
43
49
  getInlineHint?(argumentText: string): string | null;
44
50
  }
45
51
  export interface AutocompleteProvider {
46
- /** Get autocomplete suggestions for current text/cursor position. Expensive providers SHOULD stop when `signal` aborts. */
47
- getSuggestions(lines: string[], cursorLine: number, cursorCol: number, signal?: AbortSignal): Promise<{
52
+ /**
53
+ * Get autocomplete suggestions for current text/cursor position. Expensive providers SHOULD stop when `signal` aborts.
54
+ * Slow providers MAY report interim suggestions through `onPartial` before resolving; the resolved value supersedes them.
55
+ */
56
+ getSuggestions(lines: string[], cursorLine: number, cursorCol: number, signal?: AbortSignal, onPartial?: (suggestions: {
57
+ items: AutocompleteItem[];
58
+ prefix: string;
59
+ }) => void): Promise<{
48
60
  items: AutocompleteItem[];
49
61
  prefix: string;
50
62
  } | null>;
@@ -114,7 +126,10 @@ export declare function midPromptSkillTokenMatches(lowerToken: string, name: str
114
126
  export declare class CombinedAutocompleteProvider implements AutocompleteProvider {
115
127
  #private;
116
128
  constructor(commands?: CommandEntry[], basePath?: string, options?: CombinedAutocompleteOptions);
117
- getSuggestions(lines: string[], cursorLine: number, cursorCol: number, signal?: AbortSignal): Promise<{
129
+ getSuggestions(lines: string[], cursorLine: number, cursorCol: number, signal?: AbortSignal, onPartial?: (suggestions: {
130
+ items: AutocompleteItem[];
131
+ prefix: string;
132
+ }) => void): Promise<{
118
133
  items: AutocompleteItem[];
119
134
  prefix: string;
120
135
  } | null>;
@@ -5,7 +5,7 @@
5
5
  * viewer ({@link AgentTranscriptViewer}) to render a parked subagent / advisor /
6
6
  * collab-guest transcript that has no live session.
7
7
  *
8
- * Unlike the old incremental hub sync, {@link ChatTranscriptBuilder.rebuild}
8
+ * Unlike incremental transcript sync, {@link ChatTranscriptBuilder.rebuild}
9
9
  * always discards prior components and rebuilds the whole transcript from the
10
10
  * supplied entries. Re-rendering a growing transcript is therefore O(n) in the
11
11
  * entry count, but it cannot duplicate or misorder rows the way incremental
@@ -43,4 +43,28 @@ export declare class InvalidImageDataError extends Error {
43
43
  export declare function imageDecodeFailureReason(image: ImageContent): Promise<string | null>;
44
44
  /** Converts an image to PNG, rejecting when the runtime cannot decode or encode it. */
45
45
  export declare function convertImageToPng(image: ImageContent): Promise<ImageContent>;
46
+ /**
47
+ * Content-addressed identity of an image payload, stable across components and
48
+ * transcript rebuilds. Callers key their own per-image state by this instead of
49
+ * positional ids like `${toolCallId}:${index}`, which go stale when the images
50
+ * behind a position are replaced.
51
+ */
52
+ export declare function imagePayloadKey(image: ImageContent): string;
53
+ /**
54
+ * The PNG conversion of `image` when one is still resident, else `undefined`.
55
+ * Synchronous so renderers can use an already-converted image on the spot
56
+ * instead of scheduling another async re-render.
57
+ */
58
+ export declare function cachedPngConversion(image: ImageContent): ImageContent | undefined;
59
+ /**
60
+ * Converts `image` to PNG at most once per distinct payload: concurrent callers
61
+ * share one in-flight conversion and later callers hit {@link pngCache}.
62
+ * Kitty-graphics renderers use this because `convertImageToPng` is a full
63
+ * decode plus re-encode, and the same image is delivered repeatedly (read-result
64
+ * replay) and rebuilt from scratch on resume, rewind, and `/tree` navigation.
65
+ *
66
+ * Rejections are not cached — a payload that failed to decode is retried by the
67
+ * next caller, matching {@link convertImageToPng}'s contract.
68
+ */
69
+ export declare function convertImageToPngShared(image: ImageContent): Promise<ImageContent>;
46
70
  export declare function ensureSupportedImageInput(image: ImageContent): Promise<ImageContent | null>;
@@ -7,9 +7,9 @@ export declare function readArgsHaveTarget(args: unknown): boolean;
7
7
  /**
8
8
  * Whether a read collapses into the compact {@link ReadToolGroupComponent}
9
9
  * rather than a full tool execution. Filesystem/external targets always
10
- * collapse; other internal URLs (`skill://`, `agent://`, …) render full so
11
- * their resolved content is visible. `xd://` device reads are the exception —
12
- * they list devices/docs and read better in the compact grouped view.
10
+ * collapse; registered internal-URL schemes render full so their resolved
11
+ * content is visible, unless their spec declares `compactTranscript`
12
+ * (device listings/docs read better in the compact grouped view).
13
13
  */
14
14
  export declare function readArgsCollapseIntoGroup(args: unknown): boolean;
15
15
  /**
@@ -1,4 +1,6 @@
1
1
  import type { AgentMessage } from "@linxiraos/pi-agent-core";
2
+ /** Drop every memo slot so the next call recomputes from scratch. Tests only. */
3
+ export declare function resetThinkingDisplayCacheForTests(): void;
2
4
  export declare function canonicalizeMessage(text: string | null | undefined): string;
3
5
  /**
4
6
  * Thinking text prepared for display. Both modes drop empty `<!-- -->`
@@ -31,6 +31,15 @@ export declare function transcriptEntryMessage(entry: TranscriptEntryLike): Agen
31
31
  export declare function isUserRequestEntry(entry: TranscriptEntryLike | {
32
32
  type: string;
33
33
  }): boolean;
34
+ /**
35
+ * Recent transcript tail starting at a user-request boundary, so tool calls
36
+ * and results stay together. ChatTranscriptBuilder drops a tool result whose
37
+ * initiating call was sliced away, so a tail of orphaned results can leave
38
+ * the picker without any target.
39
+ *
40
+ * A whole user turn may exceed `limit`; paginate rendering if one turn grows too large.
41
+ */
42
+ export declare function recentTranscriptEntries(entries: TranscriptEntryLike[], limit?: number): TranscriptEntryLike[];
34
43
  /** Editable user request text, preserving skill invocation syntax. */
35
44
  export declare function userTurnDraft(entry: TranscriptEntryLike): string | undefined;
36
45
  /** Extract text blocks verbatim, optionally separating block boundaries. */