@agi-fans/dsh-tui 0.21.0 → 0.23.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 +26 -0
- package/lib/CHANGELOG.md +356 -1
- package/lib/chrome/box.d.ts +32 -18
- package/lib/chrome/box.js +131 -132
- package/lib/chrome/box.js.map +1 -1
- package/lib/chrome/code-highlight.d.ts +15 -0
- package/lib/chrome/code-highlight.js +61 -5
- package/lib/chrome/code-highlight.js.map +1 -1
- package/lib/chrome/command-output.d.ts +28 -2
- package/lib/chrome/command-output.js +106 -4
- package/lib/chrome/command-output.js.map +1 -1
- package/lib/chrome/goal-bar.js +1 -1
- package/lib/chrome/goal-bar.js.map +1 -1
- package/lib/chrome/main-screen-renderer.d.ts +16 -0
- package/lib/chrome/main-screen-renderer.js +57 -8
- package/lib/chrome/main-screen-renderer.js.map +1 -1
- package/lib/chrome/markdown.d.ts +3 -3
- package/lib/chrome/markdown.js +101 -32
- package/lib/chrome/markdown.js.map +1 -1
- package/lib/chrome/md-style.d.ts +5 -2
- package/lib/chrome/md-style.js +13 -4
- package/lib/chrome/md-style.js.map +1 -1
- package/lib/chrome/relative-time.d.ts +17 -0
- package/lib/chrome/relative-time.js +36 -0
- package/lib/chrome/relative-time.js.map +1 -1
- package/lib/chrome/renderer.d.ts +37 -1
- package/lib/chrome/renderer.js.map +1 -1
- package/lib/chrome/secret-mask.d.ts +35 -0
- package/lib/chrome/secret-mask.js +180 -0
- package/lib/chrome/secret-mask.js.map +1 -0
- package/lib/chrome/status-config.d.ts +161 -51
- package/lib/chrome/status-config.js +237 -126
- package/lib/chrome/status-config.js.map +1 -1
- package/lib/chrome/status-line.d.ts +6 -5
- package/lib/chrome/status-line.js +110 -68
- package/lib/chrome/status-line.js.map +1 -1
- package/lib/chrome/terminal-colors.d.ts +85 -0
- package/lib/chrome/terminal-colors.js +230 -0
- package/lib/chrome/terminal-colors.js.map +1 -0
- package/lib/chrome/terminal-images.d.ts +9 -1
- package/lib/chrome/terminal-images.js +27 -4
- package/lib/chrome/terminal-images.js.map +1 -1
- package/lib/chrome/theme.d.ts +38 -10
- package/lib/chrome/theme.js +537 -542
- package/lib/chrome/theme.js.map +1 -1
- package/lib/chrome/tool-renderers.js +69 -13
- package/lib/chrome/tool-renderers.js.map +1 -1
- package/lib/chrome/tools-list.d.ts +1 -4
- package/lib/chrome/tools-list.js +1 -41
- package/lib/chrome/tools-list.js.map +1 -1
- package/lib/commands/auth-account.d.ts +9 -0
- package/lib/commands/auth-account.js +202 -0
- package/lib/commands/auth-account.js.map +1 -0
- package/lib/commands/auth-ids.d.ts +25 -0
- package/lib/commands/auth-ids.js +27 -0
- package/lib/commands/auth-ids.js.map +1 -0
- package/lib/commands/auth-input.d.ts +34 -0
- package/lib/commands/auth-input.js +96 -0
- package/lib/commands/auth-input.js.map +1 -0
- package/lib/commands/auth-providers.d.ts +39 -0
- package/lib/commands/auth-providers.js +125 -0
- package/lib/commands/auth-providers.js.map +1 -0
- package/lib/commands/auth.d.ts +12 -20
- package/lib/commands/auth.js +264 -627
- package/lib/commands/auth.js.map +1 -1
- package/lib/commands/btw.d.ts +13 -1
- package/lib/commands/btw.js +37 -104
- package/lib/commands/btw.js.map +1 -1
- package/lib/commands/diff.js +23 -112
- package/lib/commands/diff.js.map +1 -1
- package/lib/commands/export.d.ts +0 -1
- package/lib/commands/export.js +98 -57
- package/lib/commands/export.js.map +1 -1
- package/lib/commands/files.d.ts +17 -1
- package/lib/commands/files.js +68 -114
- package/lib/commands/files.js.map +1 -1
- package/lib/commands/integrations.d.ts +12 -1
- package/lib/commands/integrations.js +120 -23
- package/lib/commands/integrations.js.map +1 -1
- package/lib/commands/jobs-browser.d.ts +3 -0
- package/lib/commands/jobs-browser.js +152 -0
- package/lib/commands/jobs-browser.js.map +1 -0
- package/lib/commands/jobs.d.ts +12 -8
- package/lib/commands/jobs.js +65 -14
- package/lib/commands/jobs.js.map +1 -1
- package/lib/commands/model.d.ts +3 -0
- package/lib/commands/model.js +223 -114
- package/lib/commands/model.js.map +1 -1
- package/lib/commands/open-external.d.ts +2 -0
- package/lib/commands/open-external.js +19 -0
- package/lib/commands/open-external.js.map +1 -0
- package/lib/commands/permission.js +70 -60
- package/lib/commands/permission.js.map +1 -1
- package/lib/commands/plugins.js +427 -68
- package/lib/commands/plugins.js.map +1 -1
- package/lib/commands/schedule-catalog.d.ts +12 -0
- package/lib/commands/schedule-catalog.js +41 -0
- package/lib/commands/schedule-catalog.js.map +1 -0
- package/lib/commands/schedule-history.d.ts +4 -0
- package/lib/commands/schedule-history.js +62 -0
- package/lib/commands/schedule-history.js.map +1 -0
- package/lib/commands/schedule.d.ts +16 -9
- package/lib/commands/schedule.js +226 -162
- package/lib/commands/schedule.js.map +1 -1
- package/lib/commands/session-configuration.d.ts +3 -0
- package/lib/commands/session-configuration.js +58 -32
- package/lib/commands/session-configuration.js.map +1 -1
- package/lib/commands/session.js +118 -97
- package/lib/commands/session.js.map +1 -1
- package/lib/commands/terminal.d.ts +14 -8
- package/lib/commands/terminal.js +32 -185
- package/lib/commands/terminal.js.map +1 -1
- package/lib/commands/trajectory.js +4 -1
- package/lib/commands/trajectory.js.map +1 -1
- package/lib/definition.d.ts +226 -29
- package/lib/definition.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/input/actions.d.ts +51 -0
- package/lib/input/actions.js +123 -0
- package/lib/input/actions.js.map +1 -0
- package/lib/input/composer-files.d.ts +2 -0
- package/lib/input/composer-files.js +13 -3
- package/lib/input/composer-files.js.map +1 -1
- package/lib/input/editor.d.ts +0 -10
- package/lib/input/editor.js +11 -9
- package/lib/input/editor.js.map +1 -1
- package/lib/input/image-paste.d.ts +12 -1
- package/lib/input/image-paste.js +86 -1
- package/lib/input/image-paste.js.map +1 -1
- package/lib/input/key-test.d.ts +5 -0
- package/lib/input/key-test.js +19 -0
- package/lib/input/key-test.js.map +1 -0
- package/lib/input/keybindings-config.d.ts +12 -5
- package/lib/input/keybindings-config.js +30 -57
- package/lib/input/keybindings-config.js.map +1 -1
- package/lib/input/keys.d.ts +18 -0
- package/lib/input/keys.js +42 -4
- package/lib/input/keys.js.map +1 -1
- package/lib/input/wheel-scroll.d.ts +46 -0
- package/lib/input/wheel-scroll.js +69 -0
- package/lib/input/wheel-scroll.js.map +1 -0
- package/lib/locale/index.d.ts +6 -0
- package/lib/locale/index.js +32 -0
- package/lib/locale/index.js.map +1 -0
- package/lib/locale/prompt.d.ts +4 -0
- package/lib/locale/prompt.js +24 -0
- package/lib/locale/prompt.js.map +1 -0
- package/lib/locale/zh.d.ts +1114 -0
- package/lib/locale/zh.js +1115 -0
- package/lib/locale/zh.js.map +1 -0
- package/lib/prompt-intents.d.ts +186 -0
- package/lib/prompt-intents.js +131 -0
- package/lib/prompt-intents.js.map +1 -0
- package/lib/runtime/account-settings.d.ts +18 -0
- package/lib/runtime/account-settings.js +241 -0
- package/lib/runtime/account-settings.js.map +1 -0
- package/lib/runtime/agent-profile.d.ts +3 -3
- package/lib/runtime/agent-profile.js +4 -4
- package/lib/runtime/agent-profile.js.map +1 -1
- package/lib/runtime/btw-policy.js +2 -1
- package/lib/runtime/btw-policy.js.map +1 -1
- package/lib/runtime/btw.js +1 -2
- package/lib/runtime/btw.js.map +1 -1
- package/lib/runtime/cancellable.d.ts +75 -0
- package/lib/runtime/cancellable.js +76 -0
- package/lib/runtime/cancellable.js.map +1 -0
- package/lib/runtime/composer-images.d.ts +2 -2
- package/lib/runtime/composer-images.js +7 -6
- package/lib/runtime/composer-images.js.map +1 -1
- package/lib/runtime/composer-shell.d.ts +17 -2
- package/lib/runtime/composer-shell.js +133 -41
- package/lib/runtime/composer-shell.js.map +1 -1
- package/lib/runtime/file-browser.d.ts +19 -0
- package/lib/runtime/file-browser.js +291 -0
- package/lib/runtime/file-browser.js.map +1 -0
- package/lib/runtime/file-recovery-review.d.ts +0 -1
- package/lib/runtime/file-recovery-review.js +29 -30
- package/lib/runtime/file-recovery-review.js.map +1 -1
- package/lib/runtime/file-recovery-store.js +5 -1
- package/lib/runtime/file-recovery-store.js.map +1 -1
- package/lib/runtime/file-review.d.ts +6 -9
- package/lib/runtime/file-review.js +92 -8
- package/lib/runtime/file-review.js.map +1 -1
- package/lib/runtime/help-reader.d.ts +12 -0
- package/lib/runtime/help-reader.js +50 -0
- package/lib/runtime/help-reader.js.map +1 -0
- package/lib/runtime/hook-settings.d.ts +2 -2
- package/lib/runtime/human-interaction.js +1 -1
- package/lib/runtime/human-interaction.js.map +1 -1
- package/lib/runtime/model-catalog-editor.d.ts +12 -0
- package/lib/runtime/model-catalog-editor.js +215 -0
- package/lib/runtime/model-catalog-editor.js.map +1 -0
- package/lib/runtime/model-settings.d.ts +11 -0
- package/lib/runtime/model-settings.js +404 -0
- package/lib/runtime/model-settings.js.map +1 -0
- package/lib/runtime/plain-tui.d.ts +2 -0
- package/lib/runtime/plain-tui.js +7 -1
- package/lib/runtime/plain-tui.js.map +1 -1
- package/lib/runtime/plugin-settings.d.ts +4 -1
- package/lib/runtime/plugin-settings.js +170 -92
- package/lib/runtime/plugin-settings.js.map +1 -1
- package/lib/runtime/prompt-browser.d.ts +9 -0
- package/lib/runtime/prompt-browser.js +19 -0
- package/lib/runtime/prompt-browser.js.map +1 -0
- package/lib/runtime/provider-local.d.ts +80 -38
- package/lib/runtime/provider-local.js +2280 -683
- package/lib/runtime/provider-local.js.map +1 -1
- package/lib/runtime/reference-reader.d.ts +15 -0
- package/lib/runtime/reference-reader.js +78 -0
- package/lib/runtime/reference-reader.js.map +1 -0
- package/lib/runtime/runner.js +42 -39
- package/lib/runtime/runner.js.map +1 -1
- package/lib/runtime/session-runtime.js +1 -1
- package/lib/runtime/session-runtime.js.map +1 -1
- package/lib/runtime/settings-draft.d.ts +21 -0
- package/lib/runtime/settings-draft.js +166 -0
- package/lib/runtime/settings-draft.js.map +1 -0
- package/lib/runtime/settings-preferences.js +1 -1
- package/lib/runtime/settings-preferences.js.map +1 -1
- package/lib/runtime/startup-notices.d.ts +0 -1
- package/lib/runtime/startup-notices.js +35 -4
- package/lib/runtime/startup-notices.js.map +1 -1
- package/lib/runtime/subagent-model-selection.js +2 -1
- package/lib/runtime/subagent-model-selection.js.map +1 -1
- package/lib/runtime/subagent-settings.d.ts +14 -0
- package/lib/runtime/subagent-settings.js +288 -0
- package/lib/runtime/subagent-settings.js.map +1 -0
- package/lib/runtime/terminal-modes.d.ts +47 -0
- package/lib/runtime/terminal-modes.js +86 -0
- package/lib/runtime/terminal-modes.js.map +1 -0
- package/lib/runtime/terminal-notifications.d.ts +6 -5
- package/lib/runtime/terminal-notifications.js +17 -16
- package/lib/runtime/terminal-notifications.js.map +1 -1
- package/lib/runtime/terminal-probe.d.ts +38 -0
- package/lib/runtime/terminal-probe.js +46 -0
- package/lib/runtime/terminal-probe.js.map +1 -0
- package/lib/runtime/terminal-session.d.ts +57 -0
- package/lib/runtime/terminal-session.js +164 -0
- package/lib/runtime/terminal-session.js.map +1 -0
- package/lib/runtime/tool-presentation.js.map +1 -1
- package/lib/runtime/tool-reader.d.ts +5 -0
- package/lib/runtime/tool-reader.js +27 -0
- package/lib/runtime/tool-reader.js.map +1 -0
- package/lib/runtime/web-settings.d.ts +14 -0
- package/lib/runtime/web-settings.js +339 -0
- package/lib/runtime/web-settings.js.map +1 -0
- package/lib/session/command-attachments.d.ts +17 -0
- package/lib/session/command-attachments.js +50 -0
- package/lib/session/command-attachments.js.map +1 -0
- package/lib/session/context-diagnostics.d.ts +16 -0
- package/lib/session/context-diagnostics.js +15 -0
- package/lib/session/context-diagnostics.js.map +1 -1
- package/lib/session/external-agents.d.ts +3 -1
- package/lib/session/external-agents.js +35 -10
- package/lib/session/external-agents.js.map +1 -1
- package/lib/session/generation-continuation.d.ts +11 -0
- package/lib/session/generation-continuation.js +34 -0
- package/lib/session/generation-continuation.js.map +1 -0
- package/lib/session/goal-controls.d.ts +5 -0
- package/lib/session/goal-controls.js +81 -0
- package/lib/session/goal-controls.js.map +1 -0
- package/lib/session/interaction-adapter.d.ts +7 -3
- package/lib/session/interaction-adapter.js +125 -54
- package/lib/session/interaction-adapter.js.map +1 -1
- package/lib/session/message-queue.d.ts +2 -0
- package/lib/session/message-queue.js +102 -17
- package/lib/session/message-queue.js.map +1 -1
- package/lib/session/package-metadata.d.ts +8 -0
- package/lib/session/package-metadata.js +8 -0
- package/lib/session/package-metadata.js.map +1 -1
- package/lib/session/pending-inputs.d.ts +30 -0
- package/lib/session/pending-inputs.js +183 -0
- package/lib/session/pending-inputs.js.map +1 -0
- package/lib/session/session-configuration.js +1 -1
- package/lib/session/session-configuration.js.map +1 -1
- package/lib/session/session-controller.d.ts +42 -24
- package/lib/session/session-controller.js +534 -106
- package/lib/session/session-controller.js.map +1 -1
- package/lib/session/session-tree.d.ts +2 -0
- package/lib/session/session-tree.js +2 -0
- package/lib/session/session-tree.js.map +1 -1
- package/lib/session/subagent-roster.d.ts +1 -0
- package/lib/session/subagent-roster.js +16 -5
- package/lib/session/subagent-roster.js.map +1 -1
- package/lib/session/subagent-tracker.d.ts +2 -0
- package/lib/session/subagent-tracker.js +18 -0
- package/lib/session/subagent-tracker.js.map +1 -1
- package/lib/session/tui-settings.d.ts +48 -15
- package/lib/session/tui-settings.js +75 -34
- package/lib/session/tui-settings.js.map +1 -1
- package/lib/session/workflow-projection.d.ts +2 -1
- package/lib/session/workflow-projection.js +34 -4
- package/lib/session/workflow-projection.js.map +1 -1
- package/lib/views/autocomplete.d.ts +28 -9
- package/lib/views/autocomplete.js +90 -70
- package/lib/views/autocomplete.js.map +1 -1
- package/lib/views/context-overview.d.ts +4 -0
- package/lib/views/context-overview.js +43 -0
- package/lib/views/context-overview.js.map +1 -0
- package/lib/views/copy-targets.d.ts +18 -15
- package/lib/views/copy-targets.js +35 -60
- package/lib/views/copy-targets.js.map +1 -1
- package/lib/views/document-reader.d.ts +10 -1
- package/lib/views/document-reader.js +76 -9
- package/lib/views/document-reader.js.map +1 -1
- package/lib/views/event-views.js +71 -17
- package/lib/views/event-views.js.map +1 -1
- package/lib/views/file-actions.js +21 -0
- package/lib/views/file-actions.js.map +1 -1
- package/lib/views/file-browser.d.ts +98 -0
- package/lib/views/file-browser.js +120 -0
- package/lib/views/file-browser.js.map +1 -0
- package/lib/views/history-search.js +19 -25
- package/lib/views/history-search.js.map +1 -1
- package/lib/views/hotkey-format.d.ts +3 -2
- package/lib/views/hotkey-format.js +4 -3
- package/lib/views/hotkey-format.js.map +1 -1
- package/lib/views/hotkeys.d.ts +7 -1
- package/lib/views/hotkeys.js +59 -37
- package/lib/views/hotkeys.js.map +1 -1
- package/lib/views/list-navigation.d.ts +62 -0
- package/lib/views/list-navigation.js +73 -0
- package/lib/views/list-navigation.js.map +1 -0
- package/lib/views/list-view.d.ts +99 -0
- package/lib/views/list-view.js +170 -0
- package/lib/views/list-view.js.map +1 -0
- package/lib/views/prompt-selector.d.ts +54 -4
- package/lib/views/prompt-selector.js +349 -162
- package/lib/views/prompt-selector.js.map +1 -1
- package/lib/views/session-files.d.ts +1 -2
- package/lib/views/session-files.js +1 -11
- package/lib/views/session-files.js.map +1 -1
- package/lib/views/settings-list.d.ts +16 -9
- package/lib/views/settings-list.js +171 -315
- package/lib/views/settings-list.js.map +1 -1
- package/lib/views/tool-actions.d.ts +16 -0
- package/lib/views/tool-actions.js +29 -0
- package/lib/views/tool-actions.js.map +1 -0
- package/lib/views/trajectory-timeline.d.ts +71 -0
- package/lib/views/trajectory-timeline.js +143 -0
- package/lib/views/trajectory-timeline.js.map +1 -0
- package/lib/views/trajectory.d.ts +36 -4
- package/lib/views/trajectory.js +842 -190
- package/lib/views/trajectory.js.map +1 -1
- package/lib/views/transcript-render.d.ts +132 -38
- package/lib/views/transcript-render.js +792 -260
- package/lib/views/transcript-render.js.map +1 -1
- package/lib/views/transcript-search.d.ts +39 -6
- package/lib/views/transcript-search.js +46 -11
- package/lib/views/transcript-search.js.map +1 -1
- package/lib/views/transcript-types.d.ts +64 -5
- package/lib/views/transcript-types.js +23 -11
- package/lib/views/transcript-types.js.map +1 -1
- package/lib/views/workflow.d.ts +16 -0
- package/lib/views/workflow.js +42 -0
- package/lib/views/workflow.js.map +1 -0
- package/package.json +74 -90
- package/lib/chrome/welcome-tips.d.ts +0 -11
- package/lib/chrome/welcome-tips.js +0 -44
- package/lib/chrome/welcome-tips.js.map +0 -1
- package/lib/commands/advisor.d.ts +0 -15
- package/lib/commands/advisor.js +0 -200
- package/lib/commands/advisor.js.map +0 -1
- package/lib/commands/loop.d.ts +0 -52
- package/lib/commands/loop.js +0 -307
- package/lib/commands/loop.js.map +0 -1
- package/lib/commands/rate.d.ts +0 -33
- package/lib/commands/rate.js +0 -212
- package/lib/commands/rate.js.map +0 -1
- package/lib/commands/steer.d.ts +0 -5
- package/lib/commands/steer.js +0 -24
- package/lib/commands/steer.js.map +0 -1
- package/lib/commands/worktree.d.ts +0 -5
- package/lib/commands/worktree.js +0 -103
- package/lib/commands/worktree.js.map +0 -1
- package/lib/runtime/terminal-reader.d.ts +0 -11
- package/lib/runtime/terminal-reader.js +0 -87
- package/lib/runtime/terminal-reader.js.map +0 -1
- package/lib/session/steering.d.ts +0 -3
- package/lib/session/steering.js +0 -9
- package/lib/session/steering.js.map +0 -1
- package/lib/views/agent-hub.d.ts +0 -32
- package/lib/views/agent-hub.js +0 -209
- package/lib/views/agent-hub.js.map +0 -1
- package/lib/views/copy-selector.d.ts +0 -54
- package/lib/views/copy-selector.js +0 -170
- package/lib/views/copy-selector.js.map +0 -1
package/LICENSE
CHANGED
|
@@ -19,3 +19,29 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
The adapted Mocha and Latte palette colors are from Catppuccin (https://catppuccin.com).
|
|
26
|
+
|
|
27
|
+
MIT License
|
|
28
|
+
|
|
29
|
+
Copyright (c) 2021 Catppuccin
|
|
30
|
+
|
|
31
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
32
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
33
|
+
in the Software without restriction, including without limitation the rights
|
|
34
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
35
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
36
|
+
furnished to do so, subject to the following conditions:
|
|
37
|
+
|
|
38
|
+
The above copyright notice and this permission notice shall be included in all
|
|
39
|
+
copies or substantial portions of the Software.
|
|
40
|
+
|
|
41
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
42
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
43
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
44
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
45
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
46
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
47
|
+
SOFTWARE.
|
package/lib/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,359 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.23.0] - 2026-11-06
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Model selection shows ready providers while slower catalogs load, keeps the picker responsive during refresh, and discards results after closing or starting a newer refresh.
|
|
14
|
+
|
|
15
|
+
- Session Library loads additional content-search matches and preserves the list after a failed resume or cancelled migration.
|
|
16
|
+
|
|
17
|
+
- Plugin discovery supports loading more results, per-source retries and cancellable loading feedback. Successful sources and previously loaded results remain available when another source fails.
|
|
18
|
+
|
|
19
|
+
- Selected tools offer a clickable action menu; selected text offers Copy and Quote buttons. Read tool actions copy or quote retained source ranges without display line numbers or wrapping.
|
|
20
|
+
|
|
21
|
+
- Keybindings includes Test keys to inspect terminal input without running shortcuts or editing drafts. Standard F1–F12 terminal sequences and modifiers are recognized.
|
|
22
|
+
|
|
23
|
+
- Alt+A opens actions for the current tool: copy its command or result, or view declared files. Terminal command copying also supports PowerShell and provider-declared terminal calls.
|
|
24
|
+
|
|
25
|
+
- Alt+Y appends selected text as a Markdown quote without sending, preserving the draft and attachments and leaving copy-on-select unchanged.
|
|
26
|
+
|
|
27
|
+
- Search file previews offer each matching line separately, retain its snippet, and open at the selected line while preserving the transcript reading position.
|
|
28
|
+
|
|
29
|
+
- Process arrows support mouse expansion alongside keyboard navigation. Titles and paths remain selectable, and dragging from an arrow into text selects without toggling.
|
|
30
|
+
|
|
31
|
+
- Alt+G and Settings → General → Current goal open live goal controls for editing, pausing, resuming and confirmed clearing. The goal bar distinguishes saved active goals awaiting authorization from armed continuation; stale edits retain their draft and exhausted goals explain the round limit.
|
|
32
|
+
|
|
33
|
+
- `/mcp` offers selectable registration diagnostics, startup errors, available tools, and the session’s latest ten MCP calls, including programmatic sub-calls. Refresh preserves the previous snapshot on failure; live connection and authentication status remain unavailable in the published Harness API.
|
|
34
|
+
|
|
35
|
+
- `/schedule` supports pause, resume and immediate delivery without moving the next occurrence, live task state, and paginated delivery history. Busy tasks and minimum run intervals are explained; failed refreshes preserve loaded records and concurrent edits cannot silently overwrite newer changes. Task details use compact spacing, and card lists reduce visible choices to make room for details and the footer in short terminals.
|
|
36
|
+
|
|
37
|
+
- DeepSeek account settings show profile and separate recharge/bonus balances, support refresh, browser sign-in cancellation and confirmed sign-out, and open account model selection directly. Account requests follow the UI language; live credential changes clear stale details and expiry notices are not replayed.
|
|
38
|
+
|
|
39
|
+
- Web search and fetch settings share one staged editor with live provider choices, availability labels, result and request limits, and write-only legacy credentials. Apply saves provider settings before switching routes and retains unfinished changes for retry.
|
|
40
|
+
|
|
41
|
+
- Model lists support individual add, delete and keyboard reordering, with editable names, token capacities and input types. Custom APIs expose schema-defined reasoning levels and API values; edits remain in the provider draft until Apply.
|
|
42
|
+
|
|
43
|
+
- Settings → Models manages provider credentials, endpoints and model lists, with catalog adoption, custom APIs and scoped deletion. Drafts survive save failures, existing model options are retained, and provider edits keep the selected model.
|
|
44
|
+
|
|
45
|
+
- Workflow runs are selectable in the shared agent roster. Browse live phases and members with filtering and folding, then open eligible running local children without losing the composer draft.
|
|
46
|
+
|
|
47
|
+
- Subagent views support their own Message Queue through Alt+Q or `/queue`, including editing, withdrawal, reordering and Queue-to-Steer transfer. Alt+Up recalls a child’s latest next-turn message, retaining drafts and attachments across navigation.
|
|
48
|
+
|
|
49
|
+
- Continuable subagents support the same Queue/Steer input preference and attachment delivery as the parent. Their accepted messages appear in the inspected transcript, and local approval requests identify the child that needs a decision.
|
|
50
|
+
|
|
51
|
+
- Enter while running can default to Queue or Steer, with a matching composer hint. Explicit shortcuts keep their meaning, and direct steering accepts images and files with failed submissions restored as unsent drafts.
|
|
52
|
+
|
|
53
|
+
- Message Queue can promote an accepted next-turn message to next-step steering with Alt+S while a turn runs, retaining its identity, text, images and files. Failed transfers return to the queue, or to an unsent draft if the queue cannot be restored.
|
|
54
|
+
|
|
55
|
+
- Independent UI and response languages: English or Simplified Chinese interface text switches immediately, while responses can follow the UI from the next turn. New profiles default to Follow UI; existing response preferences and terminal history are preserved.
|
|
56
|
+
|
|
57
|
+
- Settings exposes default access and Agent presets for new sessions, separately from current-session controls. Plugin configuration is also available from `/plugins`.
|
|
58
|
+
- `/agent creator` and the Plugins menu open Creator to author Harness plugins, preserving session drafts without sending a prompt or changing the default Agent preset.
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
|
|
62
|
+
- Long-session recovery avoids repeated history scans. Markdown previews reuse their layout while scrolling, unwrapped source readers format only visible rows when panning, and streaming replies reuse unchanged Markdown blocks and padded lines.
|
|
63
|
+
|
|
64
|
+
- Slash completion and Help share localized command search, including common Chinese task keywords. Settings show scope and save behavior in a fixed location, with pending-change counts in staged forms.
|
|
65
|
+
|
|
66
|
+
- Plugin configuration and bundle pages return through their parent lists with filters and selection preserved. Discover retains search results through cancellation, incompatibility and retry, and plugin operation results stay beside their controls with full logs available on demand. Agent composition opens in a searchable, copyable reader.
|
|
67
|
+
|
|
68
|
+
- MCP, job, schedule and Session Library lists retain browsing filters across details and actions. Session search feedback stays in the library.
|
|
69
|
+
|
|
70
|
+
- Native plugin installation status opens in a structured reader with refresh, copying and return to the selected action. Integration menus show a compact summary with full guidance under Usage notes.
|
|
71
|
+
|
|
72
|
+
- Tools, model favorites and plugin-entry browsing retain filters and selection while navigating details or taking actions. Plugin entries offer scrollable, copyable descriptions, load state and diagnostics, including read-only entries.
|
|
73
|
+
|
|
74
|
+
- Interactive export retains the format and destination after a save error so the path can be corrected and retried.
|
|
75
|
+
|
|
76
|
+
- Choice lists support mouse selection, wheel navigation and clickable actions while preserving text selection. Session Library uses Alt+R to rename and Alt+P to pin without interrupting search.
|
|
77
|
+
|
|
78
|
+
- `/tools` provides a searchable catalog and complete descriptions. MCP browsing adds server entries with tool counts and recent calls. Jobs and stored text attachments open directly in their readers, with actions available alongside the content.
|
|
79
|
+
|
|
80
|
+
- Model pickers support Alt+F to toggle favorites and Alt+A to browse them. `/model favorites` opens the picker, and the model-switch scope is shown before selection.
|
|
81
|
+
|
|
82
|
+
- `/export` guides format and path selection and offers Open and Copy path after completion. All export formats protect existing files, and `/export markdown` correctly uses the default Markdown filename.
|
|
83
|
+
|
|
84
|
+
- `/context` opens a live occupancy and session overview with responsive charts, searchable details, session ID copying, and access to compaction. Text-reader action buttons support mouse clicks.
|
|
85
|
+
|
|
86
|
+
- Help offers a filterable command picker that inserts commands for review, with searchable shortcut sections including Diff controls. Changelog offers release and category navigation. Command outputs support click-to-expand and a searchable reader with section navigation, page and diagnostic-field copying, and restored reading positions. Session and context summaries prioritize current settings and occupancy.
|
|
87
|
+
|
|
88
|
+
- Diff review keeps file navigation beside the comparison on wide terminals, with change status, line deltas, filtering, remembered reading positions, clickable file rows and independent wheel scrolling. Narrow terminals retain a single-pane reader, text remains selectable, and secondary actions are grouped in a keyboard-accessible menu. Missing turn comparisons are explicit instead of falling back to current content; untracked files show additions.
|
|
89
|
+
|
|
90
|
+
- Trajectory uses readable summaries, folded context and nested calls, a wider detail pane, and Overview/Input/Result/Raw sections. Click and wheel navigation preserve text selection; keyboard focus, full-screen details, copying, problem filtering and slow-call navigation make long runs easier to inspect. Timing bars explicitly show accumulated durations without counting enclosed PTC calls twice.
|
|
91
|
+
|
|
92
|
+
- Refined dark and light palettes based on Catppuccin Mocha and Latte, with blue interaction accents, readable comments and thinking text, and neutral tool details. Theme choices remain dark, light and system.
|
|
93
|
+
|
|
94
|
+
- Markdown uses quieter heading markers, code-language labels and fewer table dividers. Known hyperlink-capable terminals compact long named web links while preserving full targets and original copied Markdown; other terminals keep visible addresses.
|
|
95
|
+
|
|
96
|
+
- Long tool details keep their title in the viewport’s existing context row. Home returns to the current tool title, and closing then reopening a tool restores its reading position within the same inspection and layout.
|
|
97
|
+
|
|
98
|
+
- Expanded tools show readable commands, file contents, diffs and search results on quiet detail surfaces; Alt+O retains complete parameters and results. Process indentation is consistent, Thinking previews follow the latest stable paragraph, and the return-to-latest control is less prominent.
|
|
99
|
+
|
|
100
|
+
- Thinking and tool calls start as compact, individually expandable rows. Ctrl+O browses live or completed work with arrow keys and Enter; Esc returns to the composer. Completed turns retain every assistant reply and failure fact, and items under inspection stay open through completion. Existing explicit thinking preferences are retained.
|
|
101
|
+
|
|
102
|
+
- Skills appear as `/<name>` with localized markers for user-only invocation. Requests can carry ordered images and files. Commands take precedence over same-named skills, which remain invocable within a sentence. The `/skill:<name>` spelling is no longer supported.
|
|
103
|
+
|
|
104
|
+
- `/jobs` offers a live searchable list, progress and terminal reasons, confirmed stopping, and a following output reader. Observing stdout, stderr and narration leaves the model’s output cursor untouched; retention gaps and view clipping are explicit, and browsing yields to approvals.
|
|
105
|
+
|
|
106
|
+
- Compaction keeps the composer editable and queues new messages until it finishes. Saved summaries expand with Ctrl+O, remain readable after resume, and appear once without a duplicate command result. Closing inspection folds expanded outputs again.
|
|
107
|
+
|
|
108
|
+
- `Alt+R` and `/continue` continue eligible failed model generations without duplicating the original prompt. The shortcut requires an empty composer and preserves drafts; `/retry` explicitly resends the latest human prompt with its ordered images and files. Resume preserves continuation eligibility without automatic replay.
|
|
109
|
+
|
|
110
|
+
- Typed slash commands now admit staged files as well as images, including during a running turn. Commands that reject attachments keep the complete draft instead of sending the slash text to the model; pasted literal text and explicit Steer remain messages. Mixed attachment order survives retries and queue recall; TUI submission segments now include file entries.
|
|
111
|
+
|
|
112
|
+
- Plan mode gives the empty composer a planning hint and separates optional revision feedback from the approval decision.
|
|
113
|
+
|
|
114
|
+
- Shell and tool parallelism settings now stage edits and inheritance resets until Apply, retain drafts after save failures, and reject stale writes. Shell keeps readable units and validates limits before they can fail a command.
|
|
115
|
+
|
|
116
|
+
- Subagent settings combine delegation limits and model choices in one draft, with Apply, cancellation, inheritance resets, catalog refresh and retry, and independent recovery from partial save failures.
|
|
117
|
+
|
|
118
|
+
- TUI integrators receive steering through `readInput()` with `TuiSubmission.delivery: 'steer'`; the text-only `setSteerHandler` callback is removed. Consumers must route the delivery intent through the corresponding Harness entry.
|
|
119
|
+
|
|
120
|
+
- Running input distinguishes Steer for the next step, Queue for the next turn, and submissions awaiting acceptance, with localized queue controls and brief consumption feedback.
|
|
121
|
+
|
|
122
|
+
- The bottom status footer and its preview keep English labels in every UI language. Status settings use clearer metric names, explain disabled metrics and narrow-width hiding, and preview the session-title toggle with labelled example data.
|
|
123
|
+
|
|
124
|
+
- Settings groups Harness controls under General, Models, Agent presets and Plugins, with appearance, input and status-line preferences together under Terminal.
|
|
125
|
+
- `/model` selection uses the selected model's default reasoning effort, matching Harness. Use `/model reasoning` to change it explicitly; saved favorites retain their explicit effort.
|
|
126
|
+
- The built-in `cordis` preset is displayed as Creator; its configuration and session identity remain `cordis`.
|
|
127
|
+
|
|
128
|
+
- The pinned DeepSeek Harness cohort moves from `0.2.1-rc.5` to `0.2.2-rc.1` across all 145 runtime packages, and the `examples/hello` fixture follows it. Cordis moves to `4.1.0`, the loader family to `1.1.0`, the timer to `1.2.0`, and Schemastery to `3.19.0`, because the new cohort declares those as peers and refuses to resolve against `4.0.5`.
|
|
129
|
+
|
|
130
|
+
- Model selection now belongs to the Session. The Harness records a durable `modelSelection` projection and hands every Agent its own `model` reader, so omdsh no longer keeps a selection beside the Agent: `/model`, resume, forks, and side consultations read and record through that one source. A resumed session therefore keeps the model it recorded instead of adopting the model the TUI was showing, which is the Harness's documented resume behaviour.
|
|
131
|
+
|
|
132
|
+
- Tool execution left the tool registry for explicit executor plugins. The deployment mounts the native executor, the `code` preset mounts the PTC executor in its own scope, and side consultations inherit native instead of declaring a presentation. Because a tool registers into the Agent scope its preset composes, the model-facing `workflow_run` tool now lives in the native presets rather than deployment-wide: the PTC preset simply never registers it, instead of denying a name its own scope could no longer see.
|
|
133
|
+
|
|
134
|
+
- `/schedule` follows the reshaped reminder contract: an edit is one closed request (`patch` plus the `updatedAt` the editor read), listing is by recorded involvement rather than a single owning session, a paused reminder reads as paused with the instant it will fire, and recurrence can now be an RFC 5545 rule.
|
|
135
|
+
|
|
136
|
+
- Subagent model discovery is its own opt-in, so the sampled delegation variant asks for `modelDiscovery` explicitly; the model-selectable child fields are requested by `modelSelection`.
|
|
137
|
+
|
|
138
|
+
- `omdsh exec` disables the Harness module watcher. A one-shot run never observes a reload, and on a fresh home its first-boot refresh stays pending while the loader shuts down, which leaves the timer service waiting on the refresh that is waiting for the timer.
|
|
139
|
+
|
|
140
|
+
### Fixed
|
|
141
|
+
|
|
142
|
+
- The website’s terminal illustration follows the compact Header and folded turn presentation, and its performance cards use the November 2026 report.
|
|
143
|
+
|
|
144
|
+
- The website’s language switch on the 404 page opens the Chinese homepage.
|
|
145
|
+
|
|
146
|
+
- Shell output sharing confirms accepted delivery, preserves captured output after failure and retries delivery without rerunning the command. Failed and unknown commands restore their input for correction.
|
|
147
|
+
|
|
148
|
+
- Multi-select questions preserve supplementary text and punctuation in option labels, and restore both choices and text when navigating between questions.
|
|
149
|
+
|
|
150
|
+
- Model provider and Web settings can load current configuration while retaining drafts and resolving field conflicts before saving.
|
|
151
|
+
|
|
152
|
+
- Model selection keeps the live status accurate when saving the default fails and offers a retry. Model browsing retains healthy providers and supports refreshing failed catalogs.
|
|
153
|
+
|
|
154
|
+
- Settings drafts can load concurrent changes and resolve conflicting fields without re-entering edits. DeepSeek API-key sign-in can retry validation or storage in place.
|
|
155
|
+
|
|
156
|
+
- Custom provider setup retains non-secret drafts when stepping back and retries invalid fields in place. Approval rules return through Access with inline revocation feedback, and export actions remain available after copying, opening or an action failure.
|
|
157
|
+
|
|
158
|
+
- Browsing approval rules or cancelling Full access confirmation preserves the persistent composer Shell. Shell cleanup happens after confirming an Access change.
|
|
159
|
+
|
|
160
|
+
- Plugin configuration opens with the required Settings and Credentials service scopes, including native integration settings reached from Bundles.
|
|
161
|
+
|
|
162
|
+
- List previews reserve indentation before wrapping, keeping long text and Markdown aligned. Filter cursors stay on the input row when questions, diagnostics or previews wrap.
|
|
163
|
+
|
|
164
|
+
- Text readers accept mouse-wheel and trackpad scrolling, with drag selection and copying. Scrolling stays within the preview and restores the conversation position on close; live source readers pause when scrolled.
|
|
165
|
+
|
|
166
|
+
- Trajectory correctly associates native and PTC tool results, including failures and empty outputs, and loads tool schemas from request headers. Finished calls no longer remain live; interrupted calls and partial history do not invent successful results or durations. Detail scrolling stops at its bounds and can move back immediately after End. Selecting text in a full-screen view no longer paints chat content over the selection.
|
|
167
|
+
|
|
168
|
+
- Markdown headings, quotes and nested emphasis retain their styles after inline code and links.
|
|
169
|
+
|
|
170
|
+
- Copy and quote feedback temporarily overrides process-navigation hints; tool action menus identify the command or file.
|
|
171
|
+
|
|
172
|
+
- Expanded tool details have top and bottom breathing room. Terminal results no longer receive inferred shell syntax colors, and Read keeps line numbers aligned independently of wrapped source text.
|
|
173
|
+
|
|
174
|
+
- Process disclosures accept clicks across the left gutter and tolerate small pointer movements and streaming preview updates, while text selection and stale-layout protection remain intact.
|
|
175
|
+
|
|
176
|
+
- Replacing a session cancels its visible and queued questions and approvals, including local child approvals. Late answers cannot approve actions, send rejection notes, or save rules after cancellation.
|
|
177
|
+
|
|
178
|
+
- Local pending input stays with its original session and survives restart with attachments and delivery intent. Recovered entries wait for confirmation in Message Queue; recorded Harness message identities prevent accepted input from returning. Failed sends restore to the originating session, and recalling a queue entry retains newer input across navigation and exit.
|
|
179
|
+
|
|
180
|
+
- Harness plan reviews open the full scrolling reader, keep revision text such as `Approve` from approving a plan, and preserve feedback drafts when returning to review. Cancelling a pending mode change no longer displays the opposite Plan state.
|
|
181
|
+
|
|
182
|
+
- Filterable lists show a plain placeholder that disappears when typing, without a persistent search glyph; the caret follows the insertion point when editing a query.
|
|
183
|
+
|
|
184
|
+
- Provider sign-in badges and other list statuses align to the same right edge, including mixed-length labels and narrow terminals.
|
|
185
|
+
|
|
186
|
+
- Selector scroll hints follow the interface language.
|
|
187
|
+
|
|
188
|
+
- Quitting the interactive terminal no longer waits indefinitely for background workflows or subagents. Piped input still waits for accepted work to finish.
|
|
189
|
+
|
|
190
|
+
- Tree selectors translate navigation hints with the interface language and no longer offer Enter on headings or unavailable rows.
|
|
191
|
+
|
|
192
|
+
- Workflow updates now reach the terminal roster, including runs with no local child rows. Runs abandoned at a crash or fork boundary display Interrupted; ordinary turn completion does not mark background runs as finished.
|
|
193
|
+
|
|
194
|
+
- Free-text prompts, including queued-message edits, no longer show an unrelated empty-list or no-match warning.
|
|
195
|
+
|
|
196
|
+
- Subagent shortcuts target the inspected child, Ctrl-C leaves parent turns and Shell commands running, and failed or cancelled submissions return to the original child draft. Stopped children no longer appear as failed, continuable idle children show Ready, and roster selection stays with the same child when rows reorder.
|
|
197
|
+
|
|
198
|
+
- Interrupting a turn preserves all accepted Queue and Steer messages and attachments instead of clearing the inbox. Interrupted queue edits return to the original session draft; editing a waiting image message sends the revised text instead of stale image-placement text.
|
|
199
|
+
|
|
200
|
+
### Removed
|
|
201
|
+
|
|
202
|
+
- Startup Tips, leaving a compact logo, product name, version and slogan.
|
|
203
|
+
|
|
204
|
+
- `/session`; current-session information is available in `/context`.
|
|
205
|
+
|
|
206
|
+
## [0.22.0] - 2026-10-31
|
|
207
|
+
|
|
208
|
+
### Added
|
|
209
|
+
|
|
210
|
+
- `previewFormat` on a prompt option, and `disabled` on a row. The first ends a real ambiguity: the same `preview` field was rendered as markdown by the tree page and as plain text by the composer card, so an option read differently depending on which surface opened it — markdown is now opt-in and plain is the only default. The second is for a row that groups others: focusable, dimmed, and carrying no answer, so Enter on it stays put instead of closing the surface with a value nobody chose.
|
|
211
|
+
|
|
212
|
+
- Reaching a `/trajectory` detail pane no longer costs the scroll: `↑`/`↓` and the mouse wheel scroll the open pane instead of moving the record selection under the reader.
|
|
213
|
+
|
|
214
|
+
- `/trajectory` opens with a timing overview: one bar per lane — model, tools, other — showing where the wall clock went, with each lane's share and duration. The numbers were already in the ledger, but a reader asking why a turn took sixteen minutes had to open each record and add them up. It is a fixed-width bar rather than the desktop client's draggable timeline, because the useful reading is a proportion and a proportion needs no interaction; the span is the recorded activity, not the session wall clock, so idle time between turns cannot shrink every lane.
|
|
215
|
+
|
|
216
|
+
- Four named prompt intents — `ask`, `choose`, `confirm`, and `read` — alongside the existing `prompt` service. `TuiPrompt` had grown to forty-six optional fields, so every new surface added one: a caller wanting free text had to know that omitting `options` means input and that `allowCustom: false` is what makes a list non-editable. The intents are measured from the 196 existing call sites (109 free text, 45 lists, 14 document readers) and compile to the same request, so the escape hatch stays for the surfaces that genuinely combine several. Call sites migrate as they are touched: 28 so far (worktree, attach, session search and labels, reminders, credentials, access selection, code review, plugin management).
|
|
217
|
+
|
|
218
|
+
- `Alt+Enter` queues the composer draft behind the running turn, and `Alt+Up` recalls the latest queued message for editing. `Enter` keeps meaning "next turn".
|
|
219
|
+
|
|
220
|
+
- `Ctrl+L` opens model and reasoning selection, `Shift+Tab` cycles the reasoning effort, and `Ctrl+T` shows or hides thinking across the transcript. Thinking is visible by default and collapses to a one-line `Thinking: …` summary that keeps its first line.
|
|
221
|
+
|
|
222
|
+
- `Ctrl+Shift+F` searches the current transcript. `Ctrl+F` still does when the composer is empty and keeps moving the caret when it is not.
|
|
223
|
+
|
|
224
|
+
- `Ctrl+G` edits the prompt in the configured editor, alongside the existing `Ctrl+X`.
|
|
225
|
+
|
|
226
|
+
- A `system` theme derives its surfaces and text color from the colors the terminal reports about itself, so the TUI sits on the terminal's own background and follows a light terminal. It is selectable in Settings; `dark` stays the default. On terminals that support color-scheme notifications, `system` also follows a light/dark switch mid-session.
|
|
227
|
+
|
|
228
|
+
- On terminals that support the Kitty keyboard protocol, omdsh enables unambiguous key reporting so `Alt` and `Ctrl` shortcuts are recognized reliably, including inside full-screen overlays.
|
|
229
|
+
|
|
230
|
+
- The composer's activity reports a pending provider retry (`Retrying in 4s`) and how long a compaction has been running.
|
|
231
|
+
|
|
232
|
+
- `Alt+M` opens the newest image in the conversation — a pasted attachment or a `read_image` result — in the full-screen preview when the composer has no draft image.
|
|
233
|
+
|
|
234
|
+
- Inline image detection recognizes Herdr, Rex, Ghostty, WezTerm, Warp and iTerm2, `OMDSH_IMAGE_PROTOCOL=kitty|iterm2|none` overrides detection, and `omdsh doctor` reports the detected protocol.
|
|
235
|
+
|
|
236
|
+
### Changed
|
|
237
|
+
|
|
238
|
+
- `/trajectory` now reads as three levels — turn, step, record — the shape the desktop client settled on, instead of one flat list. A turn rule states how many steps it folded and how long it took, a step header marks one model request and lists the tools a folded `c` hid, and each record ends with what it cost: `12.4K→812` and `4.3s` for a model request, duration for everything else. The `T1·1` location column is gone, since the headers now say where a row is.
|
|
239
|
+
|
|
240
|
+
- The ledger header states turns, steps and wall time instead of `12 records · 6 requests · 9 calls`, and counts errors and warnings only when there are some.
|
|
241
|
+
|
|
242
|
+
- The timing overview appears once a run has more than one step, and hides while searching. Two rows restating the single request below them was the chrome this view exists to replace.
|
|
243
|
+
|
|
244
|
+
- A record's detail section list is derived from the record: only sections with content are offered, so `Tab` no longer steps through `No tool schema recorded.`. The reader's last section is remembered and restored when returning to that record, and the active one is marked with `›` so it stays identifiable on a terminal without colour.
|
|
245
|
+
|
|
246
|
+
- Detail sections are drawn for what they hold instead of everything being printed as code. Facts are label/value rows, a model's answer and a user's message are rendered as Markdown — its reasoning under a `Thinking` label, its answer under `Answer` — and payloads and tool results stay code with syntax highlighting. Timing and token usage moved from their own section into the summary, where a reader looks first.
|
|
247
|
+
|
|
248
|
+
- Code in the detail pane is numbered only once a line is too long for the pane, and the numbers count source lines: a wrapped continuation leaves the column blank instead of claiming to be another line.
|
|
249
|
+
|
|
250
|
+
- Record durations use the status line's precision, so the overview can no longer read `0s` beside a row that says `0.4s`.
|
|
251
|
+
|
|
252
|
+
- `c` folds the tool calls inside every step, not only subtool calls.
|
|
253
|
+
|
|
254
|
+
- The Codex and Claude Code subagent bundles stay disabled until explicitly enabled, and the documentation now says why: the Codex bundle pins its own `@openai/codex` at 0.153.4, independent of the CLI on `PATH` and unchanged by any DSH release, and it has no human approval channel. Enabling an external agent is a deliberate act, not a default.
|
|
255
|
+
|
|
256
|
+
- The pinned DeepSeek Harness cohort moves from `0.2.1-rc.3` to `0.2.1-rc.5` across all 145 runtime packages, and the `examples/hello` fixture follows it. No API changes reached this codebase: typecheck, the full suite, and all three PTY smokes pass unchanged. The one real adjustment was the fixture itself — the compatibility check refused it while it still declared `rc.3`, which is the check doing its job.
|
|
257
|
+
|
|
258
|
+
- The `/copy` picker is the same composer card as every other list. It had been the last bespoke overlay with its own key model: nine hotkey rows of its own, and a filter that stayed inactive until `/` — so a typed letter did nothing and `Space` copied instead of typing a space. Typing filters now, `Enter` copies, and the selected row's payload is the preview.
|
|
259
|
+
|
|
260
|
+
- A finished `/btw` answer folds into the transcript when its pane closes, as one `/btw <question>` line with the answer behind `Ctrl+O`. Closing the pane used to be the only way to reclaim the screen height, and it cost the text; now the reader never has to choose. A consultation left before it answers records nothing, and the block is local presentation — the session log is untouched, so a resumed session does not carry it, exactly like any other command output.
|
|
261
|
+
|
|
262
|
+
- The Session Tree opens as a block above the composer instead of taking the whole screen. Double-Esc is a rewind gesture, and the conversation being rewound — the thing the reader needs to see while choosing a point in it — used to disappear behind the tree. It is bounded to a little over half the terminal, matching how pi mounts its tree selector. `Ctrl+↑`/`Ctrl+↓` now scroll the preview they always claimed to.
|
|
263
|
+
|
|
264
|
+
- `/btw <question>` asks at once and answers in its own pane docked above the composer, streaming as it arrives, scrolled with the arrow keys, and closed with Esc — which also stops the consultation instead of leaving it running unseen. The exchange belongs to a conversation that is not this one, so it occupies the pane rather than a row of the conversation being read, and closing it returns the session exactly as it was. A bare `/btw` prints `Usage: /btw <your question>` instead of opening a prompt: a second way to ask the same command would need learning as well. Gone with the pane are the topic library, the progress card, and the five-item menu.
|
|
265
|
+
|
|
266
|
+
- The finished `/btw` answer appears in the `/copy` picker as `Side answer`, with the question as its label. The pane is not a transcript row, so without this the answer could be read but not taken anywhere.
|
|
267
|
+
|
|
268
|
+
- `/help`, `/tools` and `/changelog` are transcript results again, and any command result longer than twelve rows folds behind one line with the rest on `Ctrl+O`. They had been moved into a reader to stop sixty rows landing in immutable scrollback; that traded one interruption for another, since the conversation disappeared while you looked something up. Folding keeps both: one line in the conversation, the whole page behind the key.
|
|
269
|
+
|
|
270
|
+
- Six more reports stopped opening a surface: saved recovery reports, the file-recovery result, integration status, session content search, approval-rule details, and agent composition. They print into the transcript and fold when long, so reading a status no longer covers the menu it was opened from.
|
|
271
|
+
|
|
272
|
+
- Approvals and plan review stay on the card that asks for the decision: the requested action, its reason, the exact matching rule and the plan itself are the card's detail, so the decision no longer sits behind a full-screen page. Scope confirmation for a remembered rule keeps its preview on the same card.
|
|
273
|
+
|
|
274
|
+
### Removed
|
|
275
|
+
|
|
276
|
+
- The `@agi-fans/oh-my-dsh/advisor` export, which pointed at a module the advisor removal had already deleted, and an unreferenced launcher file left beside it. A published export that resolves to nothing is a crash for anyone who imports it.
|
|
277
|
+
|
|
278
|
+
### Removed
|
|
279
|
+
|
|
280
|
+
- `TuiPrompt.presentation`'s `fullscreen-list` became `fullscreen-tree`'s sibling `card`. A list stopped taking the screen when the composer card learned to window its rows, filter by typing and preview the selected row, so the value described a behaviour it no longer had — in an API whose whole point is being readable at the call site.
|
|
281
|
+
|
|
282
|
+
- `TuiPrompt.optionLayout` and the `choose` intent's `fullscreen` and `spacious` options are gone. `optionLayout` was written in eight places and read in none; `fullscreen` and `spacious` only ever existed to set it, so their two branches could not do anything either.
|
|
283
|
+
|
|
284
|
+
- The Agent Hub is gone, and its one irreplaceable action moved into the subagent roster: `↓` on an empty composer selects a row, `↑`/`↓` moves, and `Enter` opens that child's transcript. The hub existed because it was the only trigger for `#openInspect` — a missing key binding, not a layout requirement — and paid for it with a full screen, its own nine-row key table, `Alt+A`, a `T` tree toggle and a wide/narrow two-pane layout. Everything it was the only view of now has a home: the roster is the list, an external child (which keeps no local transcript) prints its status and recent activity as a fold-able result, and recorded workflow runs appear as a line at the top of the roster.
|
|
285
|
+
|
|
286
|
+
- The advisor is gone: `consult_advisor`, `/advisor`, its Integrations setting, and the 810 lines that composed them. It reached the same ACP transport as a Codex or Claude Code subagent, but handed the second model only a question the primary agent wrote plus a context slice it chose — so the advisor answered from a summary of the problem rather than the problem. Claude Code's advisor reads the full conversation because it runs server-side; a local version would have to serialize that itself, at the cost of choosing what to drop. What it did uniquely — ask for an opinion without giving away the ability to act — stays reachable by delegating a read-only subagent instead.
|
|
287
|
+
|
|
288
|
+
- `/steer` and `/todo` are gone. Steering is `Alt+S` on the draft, which is the same handler without typing a six-character prefix; the todo list is already drawn live above the composer, and printing a copy into immutable scrollback produced a list that was stale the moment it appeared.
|
|
289
|
+
|
|
290
|
+
- `/copy text|code|cmd|output` lost its kinds. `text` meant "the default", so it was a no-op parameter, and the other three named a row the picker already shows with its content, language and size: the reader had to recall a word to skip a keystroke. `/copy` opens the picker; `Alt+C` still copies a selection when there is one.
|
|
291
|
+
|
|
292
|
+
- `/tree` is gone: double `Esc` already opened the same Session Tree controller, so the command was a second name for a gesture the shortcut list already documents. Reach it with `Esc` twice on an empty composer.
|
|
293
|
+
|
|
294
|
+
- `/review`. It resolved a Git target and injected a fixed prompt — the resolution was its only real work, and the prompt itself is something every reader who reviews code already has their own version of, either as a Skill or as habit. A fixed template cannot be better than the reader's own, and by the scope principle in `docs/design/philosophy.md` a capability whose need is not demonstrated is maintenance cost. `/diff` remains: it shows the changes, which is the part a terminal uniquely owns.
|
|
295
|
+
|
|
296
|
+
- `/rate` and the `dsh-message-feedback` service behind it. The feedback it recorded was log-only: nothing read it, exported it, or sent it anywhere, so a reader who filed a judgment took a four-step flow to write a record with no consumer. This is the scope principle in `docs/design/philosophy.md` applied — a capability with no path to being used is maintenance cost, not a feature.
|
|
297
|
+
|
|
298
|
+
- `Notifications → Terminal activity`, the opt-in OSC 9 busy/idle indicator. It reported the same lifecycle as Terminal status through a weaker protocol that carried no state, and it cost a keepalive write on every second of a running turn. A terminal tab that answers OSC 7501 already shows what omdsh is doing.
|
|
299
|
+
|
|
300
|
+
- `/attachments`. `/attach` without a path now opens the same list with an **Add a file** entry at the top, so reviewing what this session attached and attaching something new are one surface rather than two commands to keep apart. A `/attach <path>` invocation and a bare `/attach` in a pipe both behave as before.
|
|
301
|
+
|
|
302
|
+
### Fixed
|
|
303
|
+
|
|
304
|
+
- `verbose` gives the session's totals a third footer line — Time on the left, Activity on the right — so the line above it no longer has to shed them on a narrow terminal. The line appears only once the line above is whole: priority is still global, so nothing below a dropped latency appears above it.
|
|
305
|
+
|
|
306
|
+
- Turning Telemetry off now reclaims its rows instead of leaving them blank; a session without projected stats yet keeps the reserved line, so the composer does not step up when the first numbers arrive.
|
|
307
|
+
|
|
308
|
+
- The status footer puts occupancy back on the left and cost on the right. `Ctx` and `Cache` hold the left edge; Tokens, Latency, Time and Activity answer from the right, so the same number sits in the same place from session to session instead of the whole row running from the left margin.
|
|
309
|
+
|
|
310
|
+
- The densities are cumulative again. `minimal` is occupancy (Context and Cache), `standard` adds latency (`TTFT · tok/s`), and `verbose` adds Tokens, Time and Activity with long labels and the detailed context form. On a narrow terminal the visible set is now a prefix of that order: Activity goes before Time, and Time before Latency, rather than a wider group being skipped so a narrower one behind it could fit.
|
|
311
|
+
|
|
312
|
+
- `Space` on a footer part no longer changes a different part's behaviour. Toggling one took the rendered footer and stored everything it did not show as an explicit hiding, so afterwards `verbose` showed exactly what `standard` had — one switch silently freezing another. Hiding is now a delta from the density, and adding a part the density omits is its own delta, so `Space` on a part the density leaves out finally does something.
|
|
313
|
+
|
|
314
|
+
- A footer switch no longer flips back on its own. The preferences handed to the settings rows carried the density alone, so any session refresh that reseeded the overlay — which happens on every projection update — redrew the parts the reader had just hidden as `shown`. The document now travels whole, deltas included.
|
|
315
|
+
|
|
316
|
+
- The `Path` row in Settings is labelled `Path` again instead of printing its own description at full width across the row.
|
|
317
|
+
|
|
318
|
+
- Diff line numbers no longer step sideways down a hunk. The gutter carried the old and the new number in two sub-columns, so a removal printed its number in the left one and the addition under it in the right one; with one digit each that read as a rendering fault. Each row now states one number on one column — the side it belongs to.
|
|
319
|
+
|
|
320
|
+
- A step's duration stays on its own line. The padding was counted in string length, so a CJK step label — one character, two cells — pushed the duration onto the next row.
|
|
321
|
+
|
|
322
|
+
- The Session Tree page draws each option's description and its badge in the option's own tone. Both were dropped when tree rows moved onto this renderer, so a full-screen tree lost an agent's phase colour and its elapsed time — the two things that tell two similar-looking nodes apart.
|
|
323
|
+
|
|
324
|
+
- A filterable card now draws the query it is filtering on, with what it kept (`⌕ build · 1/1`); a query that matches nothing says so and stops advertising `Enter`; a truncated preview ends with `… N more lines`; and `Esc` clears an active filter before it closes the list, which only the session tree used to do. All four were lost when lists stopped being full-screen pages — the page printed the query, the empty state and the paged preview, and the card did not.
|
|
325
|
+
|
|
326
|
+
- A run the reader stops stays open instead of folding under them. Interrupting is an action taken while watching that work, so collapsing it at that moment took the rows out from under the reader — and, because a fold shortens the document, left the live viewport starting inside rows already committed to native history. Those rows cannot be repainted, so the screen began with a band of empty rows and, when the boundary landed inside the startup header, a `Tips:` line with no logo above it. The run now keeps its rows until the next submission, which is the point at which the reader has moved on; a turn that ended on its own conclusion still folds immediately, because its summary describes something that finished.
|
|
327
|
+
|
|
328
|
+
- A short conversation sits next to the composer instead of the top of the screen, and the header stays where it is. The slack now lives between the header and the conversation: a fold shortens the conversation into that slack, so neither the header nor the newest rows move. The first attempt put the slack above the whole frame, which kept the newest rows still but dragged the header to the bottom the moment a message arrived. The transcript used to hug the top and leave its spare rows between the last line and the composer, so folding a run — which shortens the transcript — opened a wide gap in the middle of the screen and shifted nothing the reader was actually looking at. The spare rows are now above the document, which keeps the newest rows where they were when something above them folds. A session with no conversation yet still opens with the header at the top, because with nothing to anchor to the composer the header is the first thing to read.
|
|
329
|
+
|
|
330
|
+
- A successful tool card on the `system` theme no longer turns pale green. Its fill was a fixed-weight mix of the terminal's own green into the background, so the card's lightness was the terminal's choice: a terminal reporting a bright green produced a fill at 11.7% relative luminance instead of the shipped 4.4%, and dimmed text on it fell to 3.33:1. The three state fills are now held at a target luminance and take only their hue from the terminal, capped so a card stays a surface rather than a swatch. On the same terminal the successful fill lands at 4.48% with every card ink at or above 4.6:1.
|
|
331
|
+
|
|
332
|
+
- The pending card on the `system` theme was the lightest of the three, inverting the state order. It is now the quietest fill, and it keeps the background's own tint instead of flattening to the foreground's grey.
|
|
333
|
+
|
|
334
|
+
- A `system` theme on a light terminal no longer washes out its secondary text. `dim` and `muted` were mixed from the foreground toward the background at a fixed weight, which brightens the ink on a dark host but fades it toward the page on paper: `dim` on a light terminal's cards measured 1.75:1, and on a white one 1.64:1. `dim` is now solved against the card fills it is actually drawn on, reproducing the hierarchy the shipped palettes reached (3.64:1 on light where they reach 3.59:1, 3.30:1 on dark where they reach 3.30:1). `muted` simply inherits the palette's swatch, which both shipped themes already set equal to `toolOutput`.
|
|
335
|
+
|
|
336
|
+
- A `system` theme keeps its card fills light on a light terminal, and the alternating successful surface is a slight step above the primary one instead of jumping to a brightness no card should reach.
|
|
337
|
+
|
|
338
|
+
- A running turn keeps the access level on the composer's right corner. The activity row was assembled from `fillWidth + 4`, a constant left over from the four-cell corner pair this composer no longer draws, so every running frame was one cell too wide; the renderer truncated the overflow, which is the right-hand rule, and the badge printed as `workspace write…`. The frame is now measured from the pieces it actually prints.
|
|
339
|
+
|
|
340
|
+
- A `!` command's card shows only what that line produced and carries a state fill. It used to render the whole persistent-shell scrollback, so the command's own echo appeared a second time under the `$ command` header, output from earlier `!` lines was replayed, and the trailing prompt the shell paints after every line stayed in the card. The card now projects from a line-count baseline taken before the command is sent, drops the trailing prompt, and uses the composer's Shell ink with the pending/success/failure fills a tool card uses.
|
|
341
|
+
|
|
342
|
+
- The `@` mention menu no longer flashes while typing or deleting. Every keystroke cleared it because its search is debounced, so the list vanished for the whole debounce-plus-search interval and reappeared afterwards. The rows already on screen describe the token being extended, so they now stay until a real result replaces them.
|
|
343
|
+
|
|
344
|
+
- A wrapped line keeps its style on every row. `wrapText` attached escape sequences to the following glyph but never reopened them after a line break, so a long bold command showed its ink on the first row and plain text on the rest. Every painted wrap now uses the restabilizing variant, which tracks the active foreground, weight, slant, underline, inverse, and hyperlink across the break.
|
|
345
|
+
|
|
346
|
+
- A tool card now shows its state on every terminal, not only on a truecolor one. Pending, successful, and failed cards had three near-black fills that 256-color and 16-color terminals quantized onto the same entry, so a failed call looked exactly like a successful one. The three fills are resolved as a group now, and the failing card keeps a fill of its own.
|
|
347
|
+
|
|
348
|
+
- A tool card's output is syntax highlighted, and its command line is not. The command stays one bold ink so the reader recognizes their own intent at a glance; the colour belongs to the output they actually have to read. Output used to be coloured one line at a time, so a multi-line payload kept only its first row highlighted, and tokens the highlighter had no colour for fell back to the terminal's default ink, which made a highlighted block read as mostly plain text. Both are fixed: the payload is highlighted as one block, and every token is painted.
|
|
349
|
+
|
|
350
|
+
- A Markdown heading's level is visible again: `#` and `##` carry weight and an underline, deeper levels keep their marker. Block quotes and horizontal rules use their own `mdQuoteBorder` and `mdHr` inks instead of borrowing the component border colour, and quoted prose is set in italic.
|
|
351
|
+
|
|
352
|
+
- Image preview and the Harness attachment store load the same `sharp`, so a duplicate libvips warning no longer appears in the middle of the screen.
|
|
353
|
+
|
|
354
|
+
- Terminal replies that arrive together no longer leak fragments such as `[?62;22c` into the composer, and an unrecognized control sequence is discarded whole.
|
|
355
|
+
|
|
356
|
+
- A background job's settlement line is separated from the command output by a blank row.
|
|
357
|
+
|
|
358
|
+
- Every terminal mode omdsh enables — bracketed paste, focus and mouse reporting, and the keyboard protocol — is given back while `Ctrl+Z` or an external editor owns the terminal, and when the process exits without shutting down cleanly, so the shell and the editor receive their usual input.
|
|
359
|
+
|
|
360
|
+
- Closing the terminal window shuts omdsh down cleanly — the session is saved and terminal handlers run — instead of the process being killed by SIGHUP.
|
|
361
|
+
|
|
9
362
|
## [0.21.0] - 2026-10-19
|
|
10
363
|
|
|
11
364
|
### Added
|
|
@@ -629,7 +982,9 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic
|
|
|
629
982
|
- Preserved terminal-cell alignment and right padding for long commands, CJK text, emoji, ANSI styling, and narrow viewports.
|
|
630
983
|
- Stabilized incremental rendering, transcript scrolling, cursor placement, tool-output folding, and queued input during active turns.
|
|
631
984
|
|
|
632
|
-
[Unreleased]: https://github.com/agi-fans/oh-my-dsh/compare/v0.
|
|
985
|
+
[Unreleased]: https://github.com/agi-fans/oh-my-dsh/compare/v0.23.0...HEAD
|
|
986
|
+
[0.23.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.22.0...v0.23.0
|
|
987
|
+
[0.22.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.21.0...v0.22.0
|
|
633
988
|
[0.21.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.20.0...v0.21.0
|
|
634
989
|
[0.20.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.19.0...v0.20.0
|
|
635
990
|
[0.19.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.18.0...v0.19.0
|
package/lib/chrome/box.d.ts
CHANGED
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
* @module @agi-fans/dsh-tui
|
|
5
5
|
*/
|
|
6
6
|
import { type Theme, type ThemeColor } from './theme.ts';
|
|
7
|
-
import type { MotionMode } from '../session/tui-settings.ts';
|
|
8
|
-
import { type WelcomeTip } from './welcome-tips.ts';
|
|
9
7
|
/** Visual state that drives border + fill color. */
|
|
10
8
|
export type BoxState = 'idle' | 'info' | 'running' | 'ok' | 'error' | 'warning';
|
|
11
9
|
/** Options for a rounded output block (tool / notice). */
|
|
@@ -28,26 +26,17 @@ export interface FramedBlockOptions {
|
|
|
28
26
|
* OMP `renderOutputBlock`: `╭─── header ────╮` / padded body / `╰────╯`.
|
|
29
27
|
*/
|
|
30
28
|
export declare function renderFramedBlock(options: FramedBlockOptions, theme: Theme): string[];
|
|
31
|
-
/**
|
|
29
|
+
/** Header inputs. */
|
|
32
30
|
export interface WelcomeOptions {
|
|
33
31
|
width: number;
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
/** Kept for callers that already resolve it; the compact header does not print it. */
|
|
33
|
+
model?: string;
|
|
34
|
+
/** Kept for callers that already resolve it; the compact header does not print it. */
|
|
36
35
|
reasoningEffort?: string;
|
|
37
36
|
version: string;
|
|
38
37
|
appName: string;
|
|
39
|
-
recentSessions?: readonly {
|
|
40
|
-
id: string;
|
|
41
|
-
title: string;
|
|
42
|
-
createdAt: number;
|
|
43
|
-
updatedAt?: number;
|
|
44
|
-
}[];
|
|
45
|
-
/** Per-process hint sample; defaults to a deterministic catalog prefix for pure callers. */
|
|
46
|
-
tips?: readonly WelcomeTip[];
|
|
47
38
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Two-column welcome card: gradient DeepSeek logo + tips, titled `app vversion`.
|
|
50
|
-
*/
|
|
39
|
+
/** Startup logo, name, version and slogan, stacked when the terminal is narrow. */
|
|
51
40
|
export declare function renderWelcome(options: WelcomeOptions, theme: Theme): string[];
|
|
52
41
|
/** Editor chrome inputs. */
|
|
53
42
|
export interface EditorOptions {
|
|
@@ -58,11 +47,38 @@ export interface EditorOptions {
|
|
|
58
47
|
/** Optional right-aligned cap on the top border (permission mode). */
|
|
59
48
|
statusRight?: string;
|
|
60
49
|
border: ThemeColor;
|
|
50
|
+
/**
|
|
51
|
+
* Activity drawn in the top border instead of as a row above the editor.
|
|
52
|
+
*
|
|
53
|
+
* The composer is where the reader is looking while they wait, so a spinner
|
|
54
|
+
* that sits on its own row above the box costs a line and reads as a separate
|
|
55
|
+
* component. `label` is empty only when the caller wants the spinner alone,
|
|
56
|
+
* which is what a narrow terminal degrades to.
|
|
57
|
+
*/
|
|
58
|
+
activity?: EditorActivity;
|
|
59
|
+
/** Animation frame, forwarded to the activity's shimmer when it has one. */
|
|
60
|
+
spinnerFrame?: number;
|
|
61
|
+
/**
|
|
62
|
+
* One line of confirmation drawn in the bottom border.
|
|
63
|
+
*
|
|
64
|
+
* Replaced rather than appended: what a key just did is a reading of the last
|
|
65
|
+
* action, not a record of the conversation, so it belongs to the frame that
|
|
66
|
+
* is already on screen.
|
|
67
|
+
*/
|
|
68
|
+
note?: string;
|
|
61
69
|
/** Dim ghost text painted after the caret (slash-arg hint). */
|
|
62
70
|
inlineHint?: string;
|
|
63
71
|
/** Paint one wrapped input slice without changing its visible width. */
|
|
64
72
|
paintInput?: (text: string, sourceStart: number) => string;
|
|
65
73
|
}
|
|
74
|
+
/** One in-flight activity shown in the composer's top border. */
|
|
75
|
+
export interface EditorActivity {
|
|
76
|
+
/** Spinner frame, already resolved by the caller; `-1` stops the animation. */
|
|
77
|
+
readonly frame: string;
|
|
78
|
+
readonly label: string;
|
|
79
|
+
/** Whether the label is painted with the driving shimmer. */
|
|
80
|
+
readonly shimmer?: boolean;
|
|
81
|
+
}
|
|
66
82
|
/** Editor frame plus a cursor offset relative to the editor's first row. */
|
|
67
83
|
export interface EditorFrame {
|
|
68
84
|
lines: string[];
|
|
@@ -78,5 +94,3 @@ export interface EditorFrame {
|
|
|
78
94
|
export declare function renderEditor(options: EditorOptions, theme: Theme): EditorFrame;
|
|
79
95
|
/** DeepSeek Harness-aligned label shown while the model is driving a turn. */
|
|
80
96
|
export declare const DEEP_DRIVING_LABEL = "Deep Driving";
|
|
81
|
-
/** Activity row that sits above the editor while a turn is in flight. */
|
|
82
|
-
export declare function renderWorking(theme: Theme, spinnerFrame: number, action?: string, width?: number, motion?: MotionMode): string[];
|