oh-my-tui 0.0.0-stage → 0.1.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 (217) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +6 -0
  3. package/README.md +230 -2
  4. package/extensions/omt/backgrounds/0e510bdcc47eb90cf2fa0f5570a86ed2a3f551e18d0b08ca45a293a154adf812.rgba.gz +0 -0
  5. package/extensions/omt/backgrounds/222ac02b85615211803ec625cbf6a3fd4154375f369e605acf13e5e40f6e36d1.rgba.gz +0 -0
  6. package/extensions/omt/backgrounds/3255c23dc6a8ddba0ab0dfa8ac60fab4853e9415c36fe3b15d6a5f505bb996f5.rgba.gz +0 -0
  7. package/extensions/omt/backgrounds/3d09c99598f43cdd2bbd9ce0e2bd769df6e6189477873f30a33660d9824a317b.rgba.gz +0 -0
  8. package/extensions/omt/backgrounds/66146b9165c65e4023e9b52f9c4b8a27c01122e73b8aa3a8341075426715da8b.rgba.gz +0 -0
  9. package/extensions/omt/backgrounds/682d774668506b1a94362fa33f7ac58ba5b97707a487df72aad1754c87d77a83.rgba.gz +0 -0
  10. package/extensions/omt/backgrounds/7bbff9f7013843e297b7d100ea44d201f8075f97f7585fed40e718c8c7454648.rgba.gz +0 -0
  11. package/extensions/omt/backgrounds/844b6f6ae3eea05d8dea45f27c60dfc6da48f70add065e95bb1c4d57009d6079.rgba.gz +0 -0
  12. package/extensions/omt/backgrounds/bc0d2be67532f411ab30669311c5ba6bf829de5912cec14566eff354314e1df4.rgba.gz +0 -0
  13. package/extensions/omt/backgrounds/catalog.json +214 -0
  14. package/extensions/omt/backgrounds/cb25b2f915f3f24aa32c6da01290ac7378e37f69caa6577f8ba7a6ef1c6e788a.rgba.gz +0 -0
  15. package/extensions/omt/backgrounds/ffcac98ac467e5ae84a4a591b0eb74b9dab42da3b11a922f7a948b0763e45e31.rgba.gz +0 -0
  16. package/extensions/omt/core/config.ts +764 -0
  17. package/extensions/omt/core/motion.ts +176 -0
  18. package/extensions/omt/core/native-ui.ts +672 -0
  19. package/extensions/omt/core/theme.ts +20 -0
  20. package/extensions/omt/core/usage.ts +31 -0
  21. package/extensions/omt/features/accessibility/index.ts +2 -0
  22. package/extensions/omt/features/accessibility/model.ts +254 -0
  23. package/extensions/omt/features/accessibility/types.ts +16 -0
  24. package/extensions/omt/features/accessibility/view.ts +392 -0
  25. package/extensions/omt/features/adaptive-layout/index.ts +263 -0
  26. package/extensions/omt/features/adaptive-layout/types.ts +17 -0
  27. package/extensions/omt/features/advanced-composer/index.ts +485 -0
  28. package/extensions/omt/features/advanced-composer/store.ts +113 -0
  29. package/extensions/omt/features/advanced-composer/types.ts +25 -0
  30. package/extensions/omt/features/agent-fleet/index.ts +5 -0
  31. package/extensions/omt/features/agent-fleet/model.ts +86 -0
  32. package/extensions/omt/features/agent-fleet/store.ts +157 -0
  33. package/extensions/omt/features/agent-fleet/types.ts +38 -0
  34. package/extensions/omt/features/agent-fleet/view.ts +203 -0
  35. package/extensions/omt/features/approval-ux/index.ts +2 -0
  36. package/extensions/omt/features/approval-ux/model.ts +381 -0
  37. package/extensions/omt/features/approval-ux/types.ts +33 -0
  38. package/extensions/omt/features/approval-ux/view.ts +270 -0
  39. package/extensions/omt/features/backgrounds/assets/index.ts +419 -0
  40. package/extensions/omt/features/backgrounds/assets/manifest.ts +155 -0
  41. package/extensions/omt/features/backgrounds/capabilities/index.ts +163 -0
  42. package/extensions/omt/features/backgrounds/compositor/index.ts +239 -0
  43. package/extensions/omt/features/backgrounds/compositor/scale.ts +40 -0
  44. package/extensions/omt/features/backgrounds/index.ts +11 -0
  45. package/extensions/omt/features/backgrounds/integration.ts +605 -0
  46. package/extensions/omt/features/backgrounds/managed.ts +115 -0
  47. package/extensions/omt/features/backgrounds/motion/index.ts +76 -0
  48. package/extensions/omt/features/backgrounds/pi.ts +118 -0
  49. package/extensions/omt/features/backgrounds/renderers/cell.ts +508 -0
  50. package/extensions/omt/features/backgrounds/renderers/chafa.ts +520 -0
  51. package/extensions/omt/features/backgrounds/renderers/procedural.ts +203 -0
  52. package/extensions/omt/features/backgrounds/scenes/art.ts +198 -0
  53. package/extensions/omt/features/backgrounds/scenes/curated.ts +871 -0
  54. package/extensions/omt/features/backgrounds/scenes/index.ts +588 -0
  55. package/extensions/omt/features/backgrounds/scenes/procedural.ts +3 -0
  56. package/extensions/omt/features/command-palette/index.ts +2 -0
  57. package/extensions/omt/features/command-palette/model.ts +453 -0
  58. package/extensions/omt/features/command-palette/types.ts +21 -0
  59. package/extensions/omt/features/command-palette/view.ts +388 -0
  60. package/extensions/omt/features/conversation-navigator/index.ts +9 -0
  61. package/extensions/omt/features/conversation-navigator/model.ts +643 -0
  62. package/extensions/omt/features/conversation-navigator/types.ts +31 -0
  63. package/extensions/omt/features/conversation-navigator/view.ts +380 -0
  64. package/extensions/omt/features/doctor/index.ts +2 -0
  65. package/extensions/omt/features/doctor/model.ts +379 -0
  66. package/extensions/omt/features/doctor/types.ts +34 -0
  67. package/extensions/omt/features/doctor/view.ts +270 -0
  68. package/extensions/omt/features/editor/index.ts +178 -0
  69. package/extensions/omt/features/footer/index.ts +398 -0
  70. package/extensions/omt/features/git-explorer/index.ts +2 -0
  71. package/extensions/omt/features/git-explorer/model.ts +557 -0
  72. package/extensions/omt/features/git-explorer/types.ts +38 -0
  73. package/extensions/omt/features/git-explorer/view.ts +668 -0
  74. package/extensions/omt/features/header/index.ts +317 -0
  75. package/extensions/omt/features/multi-view-tabs/index.ts +215 -0
  76. package/extensions/omt/features/multi-view-tabs/types.ts +23 -0
  77. package/extensions/omt/features/omt-adapters/index.ts +64 -0
  78. package/extensions/omt/features/omt-adapters/model.ts +944 -0
  79. package/extensions/omt/features/omt-adapters/store.ts +422 -0
  80. package/extensions/omt/features/omt-adapters/types.ts +203 -0
  81. package/extensions/omt/features/omt-dialogs/block-actions.ts +804 -0
  82. package/extensions/omt/features/omt-dialogs/index.ts +43 -0
  83. package/extensions/omt/features/omt-dialogs/model-picker.ts +821 -0
  84. package/extensions/omt/features/omt-dialogs/model.ts +606 -0
  85. package/extensions/omt/features/omt-dialogs/notification-history.ts +493 -0
  86. package/extensions/omt/features/omt-dialogs/pet-picker.ts +833 -0
  87. package/extensions/omt/features/omt-dialogs/presentation.ts +25 -0
  88. package/extensions/omt/features/omt-dialogs/resume-dialog.ts +889 -0
  89. package/extensions/omt/features/omt-dialogs/settings-hub.ts +1623 -0
  90. package/extensions/omt/features/omt-dialogs/theme-picker.ts +1019 -0
  91. package/extensions/omt/features/omt-dialogs/trajectory-dialog.ts +926 -0
  92. package/extensions/omt/features/omt-dialogs/tree-dialog.ts +1123 -0
  93. package/extensions/omt/features/omt-dialogs/types.ts +331 -0
  94. package/extensions/omt/features/omt-dialogs/view.ts +2850 -0
  95. package/extensions/omt/features/prompt-queue/index.ts +463 -0
  96. package/extensions/omt/features/prompt-queue/store.ts +82 -0
  97. package/extensions/omt/features/prompt-queue/types.ts +27 -0
  98. package/extensions/omt/features/scrollback-mode/index.ts +2 -0
  99. package/extensions/omt/features/scrollback-mode/model.ts +45 -0
  100. package/extensions/omt/features/scrollback-mode/types.ts +18 -0
  101. package/extensions/omt/features/scrollback-mode/view.ts +568 -0
  102. package/extensions/omt/features/session-manager-ui/index.ts +9 -0
  103. package/extensions/omt/features/session-manager-ui/model.ts +882 -0
  104. package/extensions/omt/features/session-manager-ui/types.ts +37 -0
  105. package/extensions/omt/features/session-manager-ui/view.ts +488 -0
  106. package/extensions/omt/features/session-tree/index.ts +11 -0
  107. package/extensions/omt/features/session-tree/model.ts +404 -0
  108. package/extensions/omt/features/session-tree/types.ts +31 -0
  109. package/extensions/omt/features/session-tree/view.ts +434 -0
  110. package/extensions/omt/features/settings-ui/index.ts +450 -0
  111. package/extensions/omt/features/sidebar/index.ts +236 -0
  112. package/extensions/omt/features/sidebar/model.ts +860 -0
  113. package/extensions/omt/features/sidebar/observations.ts +10 -0
  114. package/extensions/omt/features/sidebar/pet-anim.ts +871 -0
  115. package/extensions/omt/features/sidebar/pet-picker.ts +321 -0
  116. package/extensions/omt/features/sidebar/pet.ts +637 -0
  117. package/extensions/omt/features/sidebar/sidepanels.ts +2081 -0
  118. package/extensions/omt/features/sidebar/tasks.ts +209 -0
  119. package/extensions/omt/features/sidebar/team.ts +149 -0
  120. package/extensions/omt/features/sidebar/types.ts +218 -0
  121. package/extensions/omt/features/sidebar/view.ts +969 -0
  122. package/extensions/omt/features/smart-notifications/index.ts +456 -0
  123. package/extensions/omt/features/smart-notifications/store.ts +84 -0
  124. package/extensions/omt/features/smart-notifications/toast-model.ts +29 -0
  125. package/extensions/omt/features/smart-notifications/toast-view.ts +24 -0
  126. package/extensions/omt/features/smart-notifications/toasts.ts +86 -0
  127. package/extensions/omt/features/smart-notifications/types.ts +29 -0
  128. package/extensions/omt/features/thinking/index.ts +198 -0
  129. package/extensions/omt/features/tool-inspector/index.ts +2 -0
  130. package/extensions/omt/features/tool-inspector/model.ts +434 -0
  131. package/extensions/omt/features/tool-inspector/types.ts +28 -0
  132. package/extensions/omt/features/tool-inspector/view.ts +494 -0
  133. package/extensions/omt/features/tools/group-renderer.ts +71 -0
  134. package/extensions/omt/features/tools/groups.ts +149 -0
  135. package/extensions/omt/features/tools/index.ts +98 -0
  136. package/extensions/omt/features/user-message/index.ts +110 -0
  137. package/extensions/omt/features/wallpaper-viewer/index.ts +465 -0
  138. package/extensions/omt/index.ts +2 -0
  139. package/extensions/omt/integration/actions.ts +493 -0
  140. package/extensions/omt/integration/appearance.ts +38 -0
  141. package/extensions/omt/integration/command-presentation.ts +11 -0
  142. package/extensions/omt/integration/commands.ts +607 -0
  143. package/extensions/omt/integration/contracts.ts +30 -0
  144. package/extensions/omt/integration/dialogs.ts +497 -0
  145. package/extensions/omt/integration/host-theme.ts +117 -0
  146. package/extensions/omt/integration/layout.ts +126 -0
  147. package/extensions/omt/integration/runtime.ts +360 -0
  148. package/extensions/omt/integration/sidebar-actions.ts +41 -0
  149. package/extensions/omt/integration/status.ts +4 -0
  150. package/extensions/omt/integration/trajectory.ts +35 -0
  151. package/extensions/omt/presets/index.ts +114 -0
  152. package/extensions/omt/presets/minimal/background.ts +22 -0
  153. package/extensions/omt/presets/minimal/footer.ts +116 -0
  154. package/extensions/omt/presets/minimal/motion.ts +11 -0
  155. package/extensions/omt/presets/minimal/preset.ts +22 -0
  156. package/extensions/omt/presets/minimal/tools.ts +180 -0
  157. package/extensions/omt/presets/native/background.ts +22 -0
  158. package/extensions/omt/presets/native/motion.ts +9 -0
  159. package/extensions/omt/presets/native/preset.ts +22 -0
  160. package/extensions/omt/presets/omt-clean/assistant.ts +26 -0
  161. package/extensions/omt/presets/omt-clean/background.ts +22 -0
  162. package/extensions/omt/presets/omt-clean/editor.ts +24 -0
  163. package/extensions/omt/presets/omt-clean/footer.ts +26 -0
  164. package/extensions/omt/presets/omt-clean/motion.ts +19 -0
  165. package/extensions/omt/presets/omt-clean/preset.ts +22 -0
  166. package/extensions/omt/presets/omt-clean/rendering.ts +149 -0
  167. package/extensions/omt/presets/omt-clean/tools.ts +252 -0
  168. package/extensions/omt/presets/omt-clean/user-message.ts +19 -0
  169. package/extensions/omt/presets/omt-clean/working.ts +7 -0
  170. package/extensions/omt/presets/omt-ember/assistant.ts +23 -0
  171. package/extensions/omt/presets/omt-ember/background.ts +22 -0
  172. package/extensions/omt/presets/omt-ember/editor.ts +12 -0
  173. package/extensions/omt/presets/omt-ember/footer.ts +27 -0
  174. package/extensions/omt/presets/omt-ember/motion.ts +21 -0
  175. package/extensions/omt/presets/omt-ember/preset.ts +22 -0
  176. package/extensions/omt/presets/omt-ember/rendering.ts +29 -0
  177. package/extensions/omt/presets/omt-ember/tools.ts +181 -0
  178. package/extensions/omt/presets/omt-ember/user-message.ts +18 -0
  179. package/extensions/omt/presets/omt-ember/working.ts +27 -0
  180. package/extensions/omt/presets/omt-rail/assistant.ts +25 -0
  181. package/extensions/omt/presets/omt-rail/background.ts +22 -0
  182. package/extensions/omt/presets/omt-rail/editor.ts +16 -0
  183. package/extensions/omt/presets/omt-rail/footer.ts +17 -0
  184. package/extensions/omt/presets/omt-rail/motion.ts +16 -0
  185. package/extensions/omt/presets/omt-rail/preset.ts +22 -0
  186. package/extensions/omt/presets/omt-rail/rendering.ts +132 -0
  187. package/extensions/omt/presets/omt-rail/tools.ts +144 -0
  188. package/extensions/omt/presets/omt-rail/user-message.ts +14 -0
  189. package/extensions/omt/presets/omt-rail/working.ts +8 -0
  190. package/extensions/omt/presets/omt-signature/assistant.ts +225 -0
  191. package/extensions/omt/presets/omt-signature/background.ts +22 -0
  192. package/extensions/omt/presets/omt-signature/editor.ts +320 -0
  193. package/extensions/omt/presets/omt-signature/footer.ts +94 -0
  194. package/extensions/omt/presets/omt-signature/message-model.ts +474 -0
  195. package/extensions/omt/presets/omt-signature/motion.ts +24 -0
  196. package/extensions/omt/presets/omt-signature/palette.ts +1200 -0
  197. package/extensions/omt/presets/omt-signature/preset.ts +32 -0
  198. package/extensions/omt/presets/omt-signature/primitives.ts +531 -0
  199. package/extensions/omt/presets/omt-signature/rendering.ts +362 -0
  200. package/extensions/omt/presets/omt-signature/tools.ts +344 -0
  201. package/extensions/omt/presets/omt-signature/user-message.ts +88 -0
  202. package/extensions/omt/presets/omt-signature/working.ts +28 -0
  203. package/extensions/omt/presets/shared/assistant.ts +213 -0
  204. package/extensions/omt/presets/shared/custom-tools.ts +165 -0
  205. package/extensions/omt/presets/shared/editor-prompt.ts +22 -0
  206. package/extensions/omt/presets/shared/editor.ts +298 -0
  207. package/extensions/omt/presets/shared/footer-format.ts +13 -0
  208. package/extensions/omt/presets/shared/footer.ts +54 -0
  209. package/extensions/omt/presets/shared/rendering.ts +32 -0
  210. package/extensions/omt/presets/shared/style.ts +108 -0
  211. package/extensions/omt/presets/shared/tool-helpers.ts +169 -0
  212. package/extensions/omt/presets/shared/tools.ts +34 -0
  213. package/extensions/omt/presets/shared/types.ts +56 -0
  214. package/extensions/omt/presets/shared/user-message.ts +23 -0
  215. package/extensions/omt/presets/shared/working.ts +58 -0
  216. package/extensions/omt/ui/modal.ts +173 -0
  217. package/package.json +65 -4
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Oh My TUI contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/NOTICE ADDED
@@ -0,0 +1,6 @@
1
+ Third-Party Notices
2
+
3
+ Pitago
4
+ Portions of Oh My TUI are adapted from Pitago (https://github.com/cavaldos/pitago).
5
+ Copyright (c) 2026 cavaldos.
6
+ Licensed under the MIT License; see LICENSE for the license terms.
package/README.md CHANGED
@@ -1,3 +1,231 @@
1
- # Temporary Holding Version
1
+ <h1 align="center">Oh My TUI</h1>
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ <p align="center">
4
+ A new look for Pi. The same native agent underneath.
5
+ </p>
6
+
7
+ <p align="center">
8
+ <a href="https://github.com/minkhoaa/oh-my-tui/actions/workflows/ci.yml"><img src="https://github.com/minkhoaa/oh-my-tui/actions/workflows/ci.yml/badge.svg" alt="Verification status"></a>
9
+ <a href="https://pi.dev"><img src="https://img.shields.io/badge/Pi-extension-blue?style=flat-square" alt="Pi extension"></a>
10
+ <a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node.js-%3E%3D22.19.0-green?style=flat-square" alt="Node.js 22.19.0 or newer"></a>
11
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-purple?style=flat-square" alt="MIT license"></a>
12
+ </p>
13
+
14
+ <p align="center">
15
+ <a href="#installation">Install</a> ·
16
+ <a href="#quick-start">Quick start</a> ·
17
+ <a href="#showcase">Showcase</a> ·
18
+ <a href="#commands">Commands</a> ·
19
+ <a href="#contributing">Contribute</a>
20
+ </p>
21
+
22
+ ![Oh My TUI Signature interface with a framed composer, session dashboard, and animated companion](media/01-hero-signature.png)
23
+
24
+ **Oh My TUI (OMT)** is a presentation-focused extension for [Pi](https://pi.dev). It brings visual presets, a session dashboard, richer tool output, and interactive navigation to your terminal—without replacing Pi's agent runtime.
25
+
26
+ ## Features
27
+
28
+ - **Make it yours.** Choose from six presentation presets, color palettes, surface styles, and optional animated backgrounds.
29
+ - **Keep your session in view.** A right dock shows model details, token usage, workspace status, and an animated companion. Its Agents tab displays available subagent activity.
30
+ - **Read less noise.** Styled messages, folded tool cards, diff previews, and expandable reasoning make long sessions easier to scan.
31
+ - **Find what you need.** Open settings, search the command palette, inspect tool execution, browse Git changes, or navigate saved sessions and conversation branches.
32
+ - **Stay native.** Pi owns execution, model context, tools, sessions, and keybindings. OMT adds no model-facing prompts, tool definitions, or model requests.
33
+
34
+ ## Installation
35
+
36
+ ### Requirements
37
+
38
+ - [Pi](https://pi.dev) 1.5.0 or newer, installed separately.
39
+ - [Node.js](https://nodejs.org) 22.19.0 or newer.
40
+ - An interactive terminal for OMT's visual interfaces. True-color support is recommended.
41
+ - Optional: `ffmpeg` on `PATH` for importing custom backgrounds. Built-in scenes and bundled backgrounds do not require it.
42
+
43
+ ### From source
44
+
45
+ To try OMT from a local checkout:
46
+
47
+ ```sh
48
+ git clone https://github.com/minkhoaa/oh-my-tui.git
49
+ cd oh-my-tui
50
+ npm ci --ignore-scripts
51
+ npm run pi:dev
52
+ ```
53
+
54
+ `pi:dev` launches Pi with `extensions/omt/index.ts` loaded for that run. Do not load an installed copy of OMT alongside it.
55
+
56
+ ### From npm
57
+
58
+ The npm installation command will be available once the package is published:
59
+
60
+ ```sh
61
+ pi install npm:oh-my-tui
62
+ ```
63
+
64
+ To remove an npm-installed copy:
65
+
66
+ ```sh
67
+ pi remove npm:oh-my-tui
68
+ ```
69
+
70
+ ## Quick start
71
+
72
+ Inside Pi, start with:
73
+
74
+ ```text
75
+ /omt settings
76
+ ```
77
+
78
+ Use the settings hub to explore themes, surfaces, and sidebar preferences. Then try:
79
+
80
+ ```text
81
+ /omt palette
82
+ /omt sidebar
83
+ /omt git
84
+ ```
85
+
86
+ OMT starts with the **Signature** preset. To switch presets or try one without changing your saved default:
87
+
88
+ ```text
89
+ /omt theme clean
90
+ /omt theme ember --session
91
+ ```
92
+
93
+ Saved configuration lives in `omt.json` inside Pi's agent directory. Preset commands save the selected preset by default; `--session` makes the change temporary. Use `/omt save` to persist current configuration overrides.
94
+
95
+ ## Showcase
96
+
97
+ Screenshots show a configured Pi environment. Installed extensions, model names, workspace data, and available integrations will vary with your setup.
98
+
99
+ ### Settings and live themes
100
+
101
+ Open `/omt settings` to browse configuration and installed resources. The Theme section previews color palettes and background surfaces as you browse.
102
+
103
+ | Settings hub | Themes and surfaces |
104
+ | :---: | :---: |
105
+ | ![Settings hub showing sections, plugins, and details](media/02-settings-hub.png) | ![Theme settings with color palette and surface choices](media/03-settings-palettes.png) |
106
+
107
+ <details>
108
+ <summary>Watch live palette browsing</summary>
109
+
110
+ ![Browsing color palettes with live interface previews](media/omt-palette-browsing.gif)
111
+
112
+ </details>
113
+
114
+ ### Dashboard and companions
115
+
116
+ Open `/omt sidebar` for a scrollable session dashboard, or `/omt sidebar on` to enable the persistent companion view. Signature uses a right dock in supported fullscreen layouts and a compact companion otherwise.
117
+
118
+ Choose a companion with `/omt pet`, or press `p` in the dashboard to cycle pets.
119
+
120
+ | Session dashboard | Companion animation |
121
+ | :---: | :---: |
122
+ | ![Dashboard with session details, token metrics, and workspace information](media/04-sidebar-dashboard.png) | ![Cycling animated companions in the dashboard](media/omt-pet-animation.gif) |
123
+
124
+ ### Command palette and Git explorer
125
+
126
+ Use `/omt palette` to search OMT actions. Open `/omt git` to inspect working tree changes and unified diffs without leaving Pi.
127
+
128
+ | Command palette | Git explorer |
129
+ | :---: | :---: |
130
+ | ![Searchable command palette with OMT actions](media/05-command-palette.png) | ![Git explorer showing changed files and a unified diff](media/06-git-explorer.png) |
131
+
132
+ ## Presets
133
+
134
+ Switch with `/omt theme <name>`. Short aliases such as `clean`, `ember`, and `rail` are also accepted.
135
+
136
+ | Preset | Style |
137
+ | :--- | :--- |
138
+ | `omt-signature` | Default OMT presentation with a framed composer, dashboard dock, and companion. |
139
+ | `omt-clean` | Clean, restrained styling. |
140
+ | `omt-ember` | Warm, retro-inspired colors. |
141
+ | `omt-rail` | Gutter rails and structured visual accents. |
142
+ | `minimal` | Compact presentation with fewer visual elements. |
143
+ | `native` | Restore native Pi presentation. |
144
+
145
+ Presets control the overall presentation; Signature palettes and surfaces customize its colors and background. Use `/omt theme` to open theme selection.
146
+
147
+ ## Commands
148
+
149
+ Enter these commands inside Pi, not your shell. Use `/omt palette` or command completion to discover more actions.
150
+
151
+ | Command | Action |
152
+ | :--- | :--- |
153
+ | `/omt settings` | Open the settings hub. |
154
+ | `/omt palette` | Search OMT actions. |
155
+ | `/omt theme [name]` | Open theme selection or switch presets. |
156
+ | `/omt save` | Save current configuration overrides as defaults. |
157
+ | `/omt on` / `/omt off` | Enable or disable OMT presentation. |
158
+ | `/omt <component> on` / `/omt <component> off` | Toggle `editor`, `messages`, `tools`, `footer`, or `thinking`. |
159
+ | `/omt sidebar` | Open the scrollable dashboard. |
160
+ | `/omt sidebar on` / `/omt sidebar off` | Show or hide the dock or compact companion. |
161
+ | `/omt pet` | Choose a companion and its visual style. |
162
+ | `/omt inspect` | Inspect session trajectory and tool execution. |
163
+ | `/omt git` | Browse working tree changes and diffs. |
164
+ | `/omt session` | Browse and search saved sessions. |
165
+ | `/omt tree` | Navigate conversation branches. |
166
+ | `/omt model` | Open the model picker using Pi's model registry. |
167
+ | `/omt queue` | Open the prompt queue manager. |
168
+ | `/omt notifications` | View session notification history. |
169
+ | `/omt shortcuts` | Show shortcut help. |
170
+ | `/omt doctor` | Inspect environment and compatibility diagnostics. |
171
+ | `/omt background off` | Disable background effects. |
172
+
173
+ ## Native behavior and compatibility
174
+
175
+ OMT changes presentation, not the agent contract:
176
+
177
+ - **Pi retains ownership** of prompt construction, model streaming, tool schemas, complete tool output, context calculations, and session storage. Native editing, paste, autocomplete, attachments, and keybindings remain Pi's responsibility.
178
+ - **Presentation does not rewrite history.** Tool folding and reasoning previews affect display, not the content sent to the model or stored in sessions. Grouped tool cards can expand to show individual calls.
179
+ - **Other extensions keep their surfaces.** OMT avoids replacing an editor, footer, tool renderer, or layout owned by another extension. Cleanup restores only hooks OMT owns; callbacks become inert when ownership is lost.
180
+ - **Layout support is detected at runtime.** The Signature dock uses Pi's exported `HStack` and `setLayoutRoot` APIs, preserving the native root as its left child and reserving 34 columns on the right when supported and wide enough. Unsupported layouts fall back rather than replacing native rendering.
181
+ - **Integrations are optional.** MCP, LSP, and subagent information reflects available host state and telemetry; OMT does not install or run those services. Floating notifications keep their history in `/omt notifications` without shifting the conversation layout.
182
+
183
+ If a view is unavailable, run `/omt doctor`. For a simpler interface, try `/omt theme minimal`; use `/omt theme native` to return to Pi's presentation.
184
+
185
+ ## Development
186
+
187
+ ```sh
188
+ npm ci --ignore-scripts
189
+ npm run verify
190
+ npm pack --dry-run
191
+ ```
192
+
193
+ - `npm run verify` runs TypeScript checking and the test suite.
194
+ - `npm pack --dry-run` checks the publishable package contents.
195
+ - `npm run pi:dev` launches the local extension for interactive development.
196
+
197
+ ### Isolated terminal checks
198
+
199
+ For presentation changes, also run the offline PTY smoke workflow on a Unix-like system with Python 3 and Pi on `PATH`:
200
+
201
+ ```sh
202
+ python3 test/isolated-ui.py --output /tmp/omt-ui-captures
203
+ ```
204
+
205
+ The script uses temporary home, agent, and session directories with offline mode enabled. It exercises regular and fullscreen layouts, session transitions, dashboard scrolling, pets, resizing, preset switching, draft input, and shutdown without submitting model prompts. ANSI captures, plain text, and JSON summaries are written to the output directory.
206
+
207
+ ### Screenshot capture
208
+
209
+ `npm run capture` regenerates the showcase assets in `media/`. This is a desktop-specific helper, not a headless test: it requires a running Pi session in a remote-control-enabled Kitty terminal, Hyprland, `grim`, and `ffmpeg`.
210
+
211
+ The helper sends commands to the live session, changes presets, starts new sessions, switches workspace focus, and overwrites existing captures. Use a dedicated capture session and review [`scripts/capture-screens.mjs`](scripts/capture-screens.mjs) before running it. The target socket and workspaces can be configured through `KITTY_SOCKET`, `TARGET_WORKSPACE`, and `RETURN_WORKSPACE`.
212
+
213
+ ## Contributing
214
+
215
+ Bug reports, fixes, themes, and accessibility improvements are welcome.
216
+
217
+ 1. [Open an issue](https://github.com/minkhoaa/oh-my-tui/issues) to discuss larger changes before implementing them.
218
+ 2. Fork the repository and create a focused branch.
219
+ 3. Keep changes in the presentation layer. Do not modify Pi core, installed dependencies, native prompts, or session formats.
220
+ 4. Add or update tests, run the development checks above, and include isolated terminal evidence for UI changes.
221
+ 5. Open a pull request explaining the change, how it was tested, and any compatibility limitations. Include screenshots or a short recording for visible changes.
222
+
223
+ For bug reports, include your OMT, Pi, and Node.js versions; terminal and operating system; active preset; relevant extensions; reproduction steps; and `/omt doctor` output. Redact credentials, private paths, and conversation content before sharing captures.
224
+
225
+ See the [changelog](CHANGELOG.md) for release notes.
226
+
227
+ ## License and acknowledgments
228
+
229
+ [MIT](LICENSE) © Oh My TUI contributors.
230
+
231
+ Built for [Pi](https://pi.dev). Portions are adapted from [Pitago](https://github.com/cavaldos/pitago) by cavaldos, also licensed under MIT. See [NOTICE](NOTICE) for attribution.
@@ -0,0 +1,214 @@
1
+ {
2
+ "version": 1,
3
+ "backgrounds": [
4
+ {
5
+ "alias": "moonlit",
6
+ "source": "docs/moonlit.gif",
7
+ "framesSha256": "84ad6dfa33e790aefdaa298a3ef388f7cdf999ad38b7fd8b64910495d8ebe6f1",
8
+ "metadata": {
9
+ "version": 1,
10
+ "id": "ffcac98ac467e5ae84a4a591b0eb74b9dab42da3b11a922f7a948b0763e45e31",
11
+ "name": "Moonlit",
12
+ "kind": "animation",
13
+ "format": "gif",
14
+ "sourceBytes": 558715,
15
+ "width": 160,
16
+ "height": 90,
17
+ "frameCount": 40,
18
+ "frameMs": 100,
19
+ "loops": 0,
20
+ "importedAt": "2026-11-09T10:08:07+07:00"
21
+ }
22
+ },
23
+ {
24
+ "alias": "cloud-drift",
25
+ "source": "docs/cloud-drift.gif",
26
+ "framesSha256": "9e17bf6ea75694e952f4d9523303df513bafb96d2254355c3c277b42f1cec90f",
27
+ "metadata": {
28
+ "version": 1,
29
+ "id": "0e510bdcc47eb90cf2fa0f5570a86ed2a3f551e18d0b08ca45a293a154adf812",
30
+ "name": "Cloud Drift",
31
+ "kind": "animation",
32
+ "format": "gif",
33
+ "sourceBytes": 1142629,
34
+ "width": 160,
35
+ "height": 90,
36
+ "frameCount": 40,
37
+ "frameMs": 100,
38
+ "loops": 0,
39
+ "importedAt": "2026-11-09T10:08:07+07:00"
40
+ }
41
+ },
42
+ {
43
+ "alias": "honu-lagoon",
44
+ "source": "docs/honu-lagoon.gif",
45
+ "framesSha256": "9a696273411ab8d9ef4a5fa6e337c68a58b4956f9e2dd705edf13f1e67977188",
46
+ "metadata": {
47
+ "version": 1,
48
+ "id": "682d774668506b1a94362fa33f7ac58ba5b97707a487df72aad1754c87d77a83",
49
+ "name": "Honu Lagoon",
50
+ "kind": "animation",
51
+ "format": "gif",
52
+ "sourceBytes": 345786,
53
+ "width": 160,
54
+ "height": 90,
55
+ "frameCount": 40,
56
+ "frameMs": 100,
57
+ "loops": 0,
58
+ "importedAt": "2026-11-09T10:08:07+07:00"
59
+ }
60
+ },
61
+ {
62
+ "alias": "koi-pond",
63
+ "source": "docs/koi-pond.gif",
64
+ "framesSha256": "62ed52ce716199304efc4f0a0326a92bd8d5e7b605a4ecaf3bd16fa5b10eb727",
65
+ "metadata": {
66
+ "version": 1,
67
+ "id": "66146b9165c65e4023e9b52f9c4b8a27c01122e73b8aa3a8341075426715da8b",
68
+ "name": "Koi Pond",
69
+ "kind": "animation",
70
+ "format": "gif",
71
+ "sourceBytes": 584054,
72
+ "width": 160,
73
+ "height": 90,
74
+ "frameCount": 40,
75
+ "frameMs": 100,
76
+ "loops": 0,
77
+ "importedAt": "2026-11-09T10:08:07+07:00"
78
+ }
79
+ },
80
+ {
81
+ "alias": "jellyfish",
82
+ "source": "docs/jellyfish.gif",
83
+ "framesSha256": "4b9f59dcb60b7bef101286ad110074cefe491de794b2265cafcb1f04cd46e464",
84
+ "metadata": {
85
+ "version": 1,
86
+ "id": "222ac02b85615211803ec625cbf6a3fd4154375f369e605acf13e5e40f6e36d1",
87
+ "name": "Jellyfish",
88
+ "kind": "animation",
89
+ "format": "gif",
90
+ "sourceBytes": 783902,
91
+ "width": 160,
92
+ "height": 90,
93
+ "frameCount": 40,
94
+ "frameMs": 100,
95
+ "loops": 0,
96
+ "importedAt": "2026-11-09T10:08:07+07:00"
97
+ }
98
+ },
99
+ {
100
+ "alias": "lantern-night",
101
+ "source": "docs/lantern-night.gif",
102
+ "framesSha256": "60d134778e268a7380f5f8da86c5a98fe0a7238ddd90262c475026ac0d256a81",
103
+ "metadata": {
104
+ "version": 1,
105
+ "id": "7bbff9f7013843e297b7d100ea44d201f8075f97f7585fed40e718c8c7454648",
106
+ "name": "Lantern Night",
107
+ "kind": "animation",
108
+ "format": "gif",
109
+ "sourceBytes": 1016391,
110
+ "width": 160,
111
+ "height": 90,
112
+ "frameCount": 40,
113
+ "frameMs": 100,
114
+ "loops": 0,
115
+ "importedAt": "2026-11-09T10:08:07+07:00"
116
+ }
117
+ },
118
+ {
119
+ "alias": "fireflies",
120
+ "source": "docs/fireflies.gif",
121
+ "framesSha256": "590256aab1c20a0b135dbf189f1de9f1ee4e0da87b9e9dd8d89a7f21ea45d9ac",
122
+ "metadata": {
123
+ "version": 1,
124
+ "id": "cb25b2f915f3f24aa32c6da01290ac7378e37f69caa6577f8ba7a6ef1c6e788a",
125
+ "name": "Fireflies",
126
+ "kind": "animation",
127
+ "format": "gif",
128
+ "sourceBytes": 1182918,
129
+ "width": 160,
130
+ "height": 90,
131
+ "frameCount": 40,
132
+ "frameMs": 100,
133
+ "loops": 0,
134
+ "importedAt": "2026-11-09T10:08:07+07:00"
135
+ }
136
+ },
137
+ {
138
+ "alias": "neon-rain",
139
+ "source": "docs/neon-rain.gif",
140
+ "framesSha256": "25e537a2a05c5584515f34535f64d36f8a6bec29b09024c2279af64665bcecef",
141
+ "metadata": {
142
+ "version": 1,
143
+ "id": "bc0d2be67532f411ab30669311c5ba6bf829de5912cec14566eff354314e1df4",
144
+ "name": "Neon Rain",
145
+ "kind": "animation",
146
+ "format": "gif",
147
+ "sourceBytes": 334446,
148
+ "width": 160,
149
+ "height": 90,
150
+ "frameCount": 40,
151
+ "frameMs": 100,
152
+ "loops": 0,
153
+ "importedAt": "2026-11-09T10:08:07+07:00"
154
+ }
155
+ },
156
+ {
157
+ "alias": "sakura-dusk",
158
+ "source": "docs/sakura-dusk.gif",
159
+ "framesSha256": "f1f3c521fd1902ddbaa8d5f1fbc50ed0b4bce0d1fc5fc796545bbc272870926e",
160
+ "metadata": {
161
+ "version": 1,
162
+ "id": "844b6f6ae3eea05d8dea45f27c60dfc6da48f70add065e95bb1c4d57009d6079",
163
+ "name": "Sakura Dusk",
164
+ "kind": "animation",
165
+ "format": "gif",
166
+ "sourceBytes": 453135,
167
+ "width": 160,
168
+ "height": 90,
169
+ "frameCount": 40,
170
+ "frameMs": 100,
171
+ "loops": 0,
172
+ "importedAt": "2026-11-09T10:08:07+07:00"
173
+ }
174
+ },
175
+ {
176
+ "alias": "snow-cabin",
177
+ "source": "docs/snow-cabin.gif",
178
+ "framesSha256": "c7adffa45a30b6ec0701dbf18e485b48ecc0b4279a04c5290814618450e7b2e9",
179
+ "metadata": {
180
+ "version": 1,
181
+ "id": "3255c23dc6a8ddba0ab0dfa8ac60fab4853e9415c36fe3b15d6a5f505bb996f5",
182
+ "name": "Snow Cabin",
183
+ "kind": "animation",
184
+ "format": "gif",
185
+ "sourceBytes": 198710,
186
+ "width": 160,
187
+ "height": 90,
188
+ "frameCount": 40,
189
+ "frameMs": 100,
190
+ "loops": 0,
191
+ "importedAt": "2026-11-09T10:08:07+07:00"
192
+ }
193
+ },
194
+ {
195
+ "alias": "star-voyage",
196
+ "source": "docs/star-voyage.gif",
197
+ "framesSha256": "8d0201efb222e38612fb0ec4dcfd4b3240d039786168ab996d19a69ef0545851",
198
+ "metadata": {
199
+ "version": 1,
200
+ "id": "3d09c99598f43cdd2bbd9ce0e2bd769df6e6189477873f30a33660d9824a317b",
201
+ "name": "Star Voyage",
202
+ "kind": "animation",
203
+ "format": "gif",
204
+ "sourceBytes": 193901,
205
+ "width": 160,
206
+ "height": 90,
207
+ "frameCount": 40,
208
+ "frameMs": 100,
209
+ "loops": 0,
210
+ "importedAt": "2026-11-09T10:08:07+07:00"
211
+ }
212
+ }
213
+ ]
214
+ }