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.
- package/LICENSE +21 -0
- package/NOTICE +6 -0
- package/README.md +230 -2
- package/extensions/omt/backgrounds/0e510bdcc47eb90cf2fa0f5570a86ed2a3f551e18d0b08ca45a293a154adf812.rgba.gz +0 -0
- package/extensions/omt/backgrounds/222ac02b85615211803ec625cbf6a3fd4154375f369e605acf13e5e40f6e36d1.rgba.gz +0 -0
- package/extensions/omt/backgrounds/3255c23dc6a8ddba0ab0dfa8ac60fab4853e9415c36fe3b15d6a5f505bb996f5.rgba.gz +0 -0
- package/extensions/omt/backgrounds/3d09c99598f43cdd2bbd9ce0e2bd769df6e6189477873f30a33660d9824a317b.rgba.gz +0 -0
- package/extensions/omt/backgrounds/66146b9165c65e4023e9b52f9c4b8a27c01122e73b8aa3a8341075426715da8b.rgba.gz +0 -0
- package/extensions/omt/backgrounds/682d774668506b1a94362fa33f7ac58ba5b97707a487df72aad1754c87d77a83.rgba.gz +0 -0
- package/extensions/omt/backgrounds/7bbff9f7013843e297b7d100ea44d201f8075f97f7585fed40e718c8c7454648.rgba.gz +0 -0
- package/extensions/omt/backgrounds/844b6f6ae3eea05d8dea45f27c60dfc6da48f70add065e95bb1c4d57009d6079.rgba.gz +0 -0
- package/extensions/omt/backgrounds/bc0d2be67532f411ab30669311c5ba6bf829de5912cec14566eff354314e1df4.rgba.gz +0 -0
- package/extensions/omt/backgrounds/catalog.json +214 -0
- package/extensions/omt/backgrounds/cb25b2f915f3f24aa32c6da01290ac7378e37f69caa6577f8ba7a6ef1c6e788a.rgba.gz +0 -0
- package/extensions/omt/backgrounds/ffcac98ac467e5ae84a4a591b0eb74b9dab42da3b11a922f7a948b0763e45e31.rgba.gz +0 -0
- package/extensions/omt/core/config.ts +764 -0
- package/extensions/omt/core/motion.ts +176 -0
- package/extensions/omt/core/native-ui.ts +672 -0
- package/extensions/omt/core/theme.ts +20 -0
- package/extensions/omt/core/usage.ts +31 -0
- package/extensions/omt/features/accessibility/index.ts +2 -0
- package/extensions/omt/features/accessibility/model.ts +254 -0
- package/extensions/omt/features/accessibility/types.ts +16 -0
- package/extensions/omt/features/accessibility/view.ts +392 -0
- package/extensions/omt/features/adaptive-layout/index.ts +263 -0
- package/extensions/omt/features/adaptive-layout/types.ts +17 -0
- package/extensions/omt/features/advanced-composer/index.ts +485 -0
- package/extensions/omt/features/advanced-composer/store.ts +113 -0
- package/extensions/omt/features/advanced-composer/types.ts +25 -0
- package/extensions/omt/features/agent-fleet/index.ts +5 -0
- package/extensions/omt/features/agent-fleet/model.ts +86 -0
- package/extensions/omt/features/agent-fleet/store.ts +157 -0
- package/extensions/omt/features/agent-fleet/types.ts +38 -0
- package/extensions/omt/features/agent-fleet/view.ts +203 -0
- package/extensions/omt/features/approval-ux/index.ts +2 -0
- package/extensions/omt/features/approval-ux/model.ts +381 -0
- package/extensions/omt/features/approval-ux/types.ts +33 -0
- package/extensions/omt/features/approval-ux/view.ts +270 -0
- package/extensions/omt/features/backgrounds/assets/index.ts +419 -0
- package/extensions/omt/features/backgrounds/assets/manifest.ts +155 -0
- package/extensions/omt/features/backgrounds/capabilities/index.ts +163 -0
- package/extensions/omt/features/backgrounds/compositor/index.ts +239 -0
- package/extensions/omt/features/backgrounds/compositor/scale.ts +40 -0
- package/extensions/omt/features/backgrounds/index.ts +11 -0
- package/extensions/omt/features/backgrounds/integration.ts +605 -0
- package/extensions/omt/features/backgrounds/managed.ts +115 -0
- package/extensions/omt/features/backgrounds/motion/index.ts +76 -0
- package/extensions/omt/features/backgrounds/pi.ts +118 -0
- package/extensions/omt/features/backgrounds/renderers/cell.ts +508 -0
- package/extensions/omt/features/backgrounds/renderers/chafa.ts +520 -0
- package/extensions/omt/features/backgrounds/renderers/procedural.ts +203 -0
- package/extensions/omt/features/backgrounds/scenes/art.ts +198 -0
- package/extensions/omt/features/backgrounds/scenes/curated.ts +871 -0
- package/extensions/omt/features/backgrounds/scenes/index.ts +588 -0
- package/extensions/omt/features/backgrounds/scenes/procedural.ts +3 -0
- package/extensions/omt/features/command-palette/index.ts +2 -0
- package/extensions/omt/features/command-palette/model.ts +453 -0
- package/extensions/omt/features/command-palette/types.ts +21 -0
- package/extensions/omt/features/command-palette/view.ts +388 -0
- package/extensions/omt/features/conversation-navigator/index.ts +9 -0
- package/extensions/omt/features/conversation-navigator/model.ts +643 -0
- package/extensions/omt/features/conversation-navigator/types.ts +31 -0
- package/extensions/omt/features/conversation-navigator/view.ts +380 -0
- package/extensions/omt/features/doctor/index.ts +2 -0
- package/extensions/omt/features/doctor/model.ts +379 -0
- package/extensions/omt/features/doctor/types.ts +34 -0
- package/extensions/omt/features/doctor/view.ts +270 -0
- package/extensions/omt/features/editor/index.ts +178 -0
- package/extensions/omt/features/footer/index.ts +398 -0
- package/extensions/omt/features/git-explorer/index.ts +2 -0
- package/extensions/omt/features/git-explorer/model.ts +557 -0
- package/extensions/omt/features/git-explorer/types.ts +38 -0
- package/extensions/omt/features/git-explorer/view.ts +668 -0
- package/extensions/omt/features/header/index.ts +317 -0
- package/extensions/omt/features/multi-view-tabs/index.ts +215 -0
- package/extensions/omt/features/multi-view-tabs/types.ts +23 -0
- package/extensions/omt/features/omt-adapters/index.ts +64 -0
- package/extensions/omt/features/omt-adapters/model.ts +944 -0
- package/extensions/omt/features/omt-adapters/store.ts +422 -0
- package/extensions/omt/features/omt-adapters/types.ts +203 -0
- package/extensions/omt/features/omt-dialogs/block-actions.ts +804 -0
- package/extensions/omt/features/omt-dialogs/index.ts +43 -0
- package/extensions/omt/features/omt-dialogs/model-picker.ts +821 -0
- package/extensions/omt/features/omt-dialogs/model.ts +606 -0
- package/extensions/omt/features/omt-dialogs/notification-history.ts +493 -0
- package/extensions/omt/features/omt-dialogs/pet-picker.ts +833 -0
- package/extensions/omt/features/omt-dialogs/presentation.ts +25 -0
- package/extensions/omt/features/omt-dialogs/resume-dialog.ts +889 -0
- package/extensions/omt/features/omt-dialogs/settings-hub.ts +1623 -0
- package/extensions/omt/features/omt-dialogs/theme-picker.ts +1019 -0
- package/extensions/omt/features/omt-dialogs/trajectory-dialog.ts +926 -0
- package/extensions/omt/features/omt-dialogs/tree-dialog.ts +1123 -0
- package/extensions/omt/features/omt-dialogs/types.ts +331 -0
- package/extensions/omt/features/omt-dialogs/view.ts +2850 -0
- package/extensions/omt/features/prompt-queue/index.ts +463 -0
- package/extensions/omt/features/prompt-queue/store.ts +82 -0
- package/extensions/omt/features/prompt-queue/types.ts +27 -0
- package/extensions/omt/features/scrollback-mode/index.ts +2 -0
- package/extensions/omt/features/scrollback-mode/model.ts +45 -0
- package/extensions/omt/features/scrollback-mode/types.ts +18 -0
- package/extensions/omt/features/scrollback-mode/view.ts +568 -0
- package/extensions/omt/features/session-manager-ui/index.ts +9 -0
- package/extensions/omt/features/session-manager-ui/model.ts +882 -0
- package/extensions/omt/features/session-manager-ui/types.ts +37 -0
- package/extensions/omt/features/session-manager-ui/view.ts +488 -0
- package/extensions/omt/features/session-tree/index.ts +11 -0
- package/extensions/omt/features/session-tree/model.ts +404 -0
- package/extensions/omt/features/session-tree/types.ts +31 -0
- package/extensions/omt/features/session-tree/view.ts +434 -0
- package/extensions/omt/features/settings-ui/index.ts +450 -0
- package/extensions/omt/features/sidebar/index.ts +236 -0
- package/extensions/omt/features/sidebar/model.ts +860 -0
- package/extensions/omt/features/sidebar/observations.ts +10 -0
- package/extensions/omt/features/sidebar/pet-anim.ts +871 -0
- package/extensions/omt/features/sidebar/pet-picker.ts +321 -0
- package/extensions/omt/features/sidebar/pet.ts +637 -0
- package/extensions/omt/features/sidebar/sidepanels.ts +2081 -0
- package/extensions/omt/features/sidebar/tasks.ts +209 -0
- package/extensions/omt/features/sidebar/team.ts +149 -0
- package/extensions/omt/features/sidebar/types.ts +218 -0
- package/extensions/omt/features/sidebar/view.ts +969 -0
- package/extensions/omt/features/smart-notifications/index.ts +456 -0
- package/extensions/omt/features/smart-notifications/store.ts +84 -0
- package/extensions/omt/features/smart-notifications/toast-model.ts +29 -0
- package/extensions/omt/features/smart-notifications/toast-view.ts +24 -0
- package/extensions/omt/features/smart-notifications/toasts.ts +86 -0
- package/extensions/omt/features/smart-notifications/types.ts +29 -0
- package/extensions/omt/features/thinking/index.ts +198 -0
- package/extensions/omt/features/tool-inspector/index.ts +2 -0
- package/extensions/omt/features/tool-inspector/model.ts +434 -0
- package/extensions/omt/features/tool-inspector/types.ts +28 -0
- package/extensions/omt/features/tool-inspector/view.ts +494 -0
- package/extensions/omt/features/tools/group-renderer.ts +71 -0
- package/extensions/omt/features/tools/groups.ts +149 -0
- package/extensions/omt/features/tools/index.ts +98 -0
- package/extensions/omt/features/user-message/index.ts +110 -0
- package/extensions/omt/features/wallpaper-viewer/index.ts +465 -0
- package/extensions/omt/index.ts +2 -0
- package/extensions/omt/integration/actions.ts +493 -0
- package/extensions/omt/integration/appearance.ts +38 -0
- package/extensions/omt/integration/command-presentation.ts +11 -0
- package/extensions/omt/integration/commands.ts +607 -0
- package/extensions/omt/integration/contracts.ts +30 -0
- package/extensions/omt/integration/dialogs.ts +497 -0
- package/extensions/omt/integration/host-theme.ts +117 -0
- package/extensions/omt/integration/layout.ts +126 -0
- package/extensions/omt/integration/runtime.ts +360 -0
- package/extensions/omt/integration/sidebar-actions.ts +41 -0
- package/extensions/omt/integration/status.ts +4 -0
- package/extensions/omt/integration/trajectory.ts +35 -0
- package/extensions/omt/presets/index.ts +114 -0
- package/extensions/omt/presets/minimal/background.ts +22 -0
- package/extensions/omt/presets/minimal/footer.ts +116 -0
- package/extensions/omt/presets/minimal/motion.ts +11 -0
- package/extensions/omt/presets/minimal/preset.ts +22 -0
- package/extensions/omt/presets/minimal/tools.ts +180 -0
- package/extensions/omt/presets/native/background.ts +22 -0
- package/extensions/omt/presets/native/motion.ts +9 -0
- package/extensions/omt/presets/native/preset.ts +22 -0
- package/extensions/omt/presets/omt-clean/assistant.ts +26 -0
- package/extensions/omt/presets/omt-clean/background.ts +22 -0
- package/extensions/omt/presets/omt-clean/editor.ts +24 -0
- package/extensions/omt/presets/omt-clean/footer.ts +26 -0
- package/extensions/omt/presets/omt-clean/motion.ts +19 -0
- package/extensions/omt/presets/omt-clean/preset.ts +22 -0
- package/extensions/omt/presets/omt-clean/rendering.ts +149 -0
- package/extensions/omt/presets/omt-clean/tools.ts +252 -0
- package/extensions/omt/presets/omt-clean/user-message.ts +19 -0
- package/extensions/omt/presets/omt-clean/working.ts +7 -0
- package/extensions/omt/presets/omt-ember/assistant.ts +23 -0
- package/extensions/omt/presets/omt-ember/background.ts +22 -0
- package/extensions/omt/presets/omt-ember/editor.ts +12 -0
- package/extensions/omt/presets/omt-ember/footer.ts +27 -0
- package/extensions/omt/presets/omt-ember/motion.ts +21 -0
- package/extensions/omt/presets/omt-ember/preset.ts +22 -0
- package/extensions/omt/presets/omt-ember/rendering.ts +29 -0
- package/extensions/omt/presets/omt-ember/tools.ts +181 -0
- package/extensions/omt/presets/omt-ember/user-message.ts +18 -0
- package/extensions/omt/presets/omt-ember/working.ts +27 -0
- package/extensions/omt/presets/omt-rail/assistant.ts +25 -0
- package/extensions/omt/presets/omt-rail/background.ts +22 -0
- package/extensions/omt/presets/omt-rail/editor.ts +16 -0
- package/extensions/omt/presets/omt-rail/footer.ts +17 -0
- package/extensions/omt/presets/omt-rail/motion.ts +16 -0
- package/extensions/omt/presets/omt-rail/preset.ts +22 -0
- package/extensions/omt/presets/omt-rail/rendering.ts +132 -0
- package/extensions/omt/presets/omt-rail/tools.ts +144 -0
- package/extensions/omt/presets/omt-rail/user-message.ts +14 -0
- package/extensions/omt/presets/omt-rail/working.ts +8 -0
- package/extensions/omt/presets/omt-signature/assistant.ts +225 -0
- package/extensions/omt/presets/omt-signature/background.ts +22 -0
- package/extensions/omt/presets/omt-signature/editor.ts +320 -0
- package/extensions/omt/presets/omt-signature/footer.ts +94 -0
- package/extensions/omt/presets/omt-signature/message-model.ts +474 -0
- package/extensions/omt/presets/omt-signature/motion.ts +24 -0
- package/extensions/omt/presets/omt-signature/palette.ts +1200 -0
- package/extensions/omt/presets/omt-signature/preset.ts +32 -0
- package/extensions/omt/presets/omt-signature/primitives.ts +531 -0
- package/extensions/omt/presets/omt-signature/rendering.ts +362 -0
- package/extensions/omt/presets/omt-signature/tools.ts +344 -0
- package/extensions/omt/presets/omt-signature/user-message.ts +88 -0
- package/extensions/omt/presets/omt-signature/working.ts +28 -0
- package/extensions/omt/presets/shared/assistant.ts +213 -0
- package/extensions/omt/presets/shared/custom-tools.ts +165 -0
- package/extensions/omt/presets/shared/editor-prompt.ts +22 -0
- package/extensions/omt/presets/shared/editor.ts +298 -0
- package/extensions/omt/presets/shared/footer-format.ts +13 -0
- package/extensions/omt/presets/shared/footer.ts +54 -0
- package/extensions/omt/presets/shared/rendering.ts +32 -0
- package/extensions/omt/presets/shared/style.ts +108 -0
- package/extensions/omt/presets/shared/tool-helpers.ts +169 -0
- package/extensions/omt/presets/shared/tools.ts +34 -0
- package/extensions/omt/presets/shared/types.ts +56 -0
- package/extensions/omt/presets/shared/user-message.ts +23 -0
- package/extensions/omt/presets/shared/working.ts +58 -0
- package/extensions/omt/ui/modal.ts +173 -0
- 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
package/README.md
CHANGED
|
@@ -1,3 +1,231 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">Oh My TUI</h1>
|
|
2
2
|
|
|
3
|
-
|
|
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
|
+

|
|
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
|
+
|  |  |
|
|
106
|
+
|
|
107
|
+
<details>
|
|
108
|
+
<summary>Watch live palette browsing</summary>
|
|
109
|
+
|
|
110
|
+

|
|
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
|
+
|  |  |
|
|
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
|
+
|  |  |
|
|
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.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
+
}
|
|
Binary file
|