@pellux/goodvibes-tui 2.0.21 → 2.1.1
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/CHANGELOG.md +65 -1
- package/README.md +30 -29
- package/docs/README.md +8 -5
- package/docs/foundation-artifacts/operator-contract.json +1 -1
- package/package.json +28 -19
- package/src/cli/management.ts +5 -2
- package/src/cli/tui-startup.ts +34 -39
- package/src/core/agent-view-render.ts +157 -0
- package/src/core/approval-alert.ts +49 -11
- package/src/core/bookmark-navigation.ts +7 -1
- package/src/core/budget-breach-notifier.ts +27 -8
- package/src/core/compaction-receipt.ts +1 -1
- package/src/core/context-usage.ts +1 -1
- package/src/core/conversation-compaction-render.ts +3 -3
- package/src/core/conversation-display-only.ts +86 -0
- package/src/core/conversation-event-navigation.ts +27 -0
- package/src/core/conversation-line-cache.ts +216 -447
- package/src/core/conversation-render-context.ts +20 -27
- package/src/core/conversation-rendering.ts +157 -575
- package/src/core/conversation-splash-state.ts +6 -1
- package/src/core/conversation-types.ts +35 -0
- package/src/core/conversation-usage.ts +12 -0
- package/src/core/conversation.ts +130 -131
- package/src/core/long-task-notifier.ts +100 -31
- package/src/core/notices.ts +75 -0
- package/src/core/pairing-tailscale-gateway.ts +1 -1
- package/src/core/process-output-log.ts +143 -0
- package/src/core/rewind-receipt.ts +1 -1
- package/src/core/session-focus.ts +190 -0
- package/src/core/session-resume-core.ts +23 -81
- package/src/core/stream-event-wiring.ts +31 -5
- package/src/core/system-message-noise.ts +2 -2
- package/src/core/system-message-router.ts +16 -18
- package/src/core/turn-event-wiring.ts +272 -33
- package/src/core/work-tree-focus.ts +290 -0
- package/src/core/work-tree-fold-store.ts +143 -0
- package/src/core/work-tree-model.ts +799 -0
- package/src/core/work-tree-render.ts +384 -0
- package/src/core/work-tree-sources.ts +184 -0
- package/src/core/work-tree-wiring.ts +176 -0
- package/src/core/workstream-notification.ts +36 -6
- package/src/core/wrfc-notice-titles.ts +37 -0
- package/src/input/agents-modal-text.ts +119 -0
- package/src/input/agents-modal.ts +699 -0
- package/src/input/bookmark-modal.ts +33 -9
- package/src/input/changes-git.ts +251 -0
- package/src/input/changes-modal.ts +629 -0
- package/src/input/changes-model.ts +125 -0
- package/src/input/command-palette-types.ts +41 -0
- package/src/input/command-palette.ts +272 -0
- package/src/input/command-reference.ts +2 -2
- package/src/input/command-registry.ts +77 -35
- package/src/input/commands/acp-runtime.ts +19 -9
- package/src/input/commands/channel-runtime.ts +2 -2
- package/src/input/commands/ci-runtime.ts +1 -1
- package/src/input/commands/codebase-runtime.ts +1 -1
- package/src/input/commands/config.ts +7 -1
- package/src/input/commands/context-window.ts +25 -19
- package/src/input/commands/control-room-runtime.ts +18 -18
- package/src/input/commands/conversation-runtime.ts +0 -1
- package/src/input/commands/cost-runtime.ts +29 -20
- package/src/input/commands/diff-runtime.ts +35 -181
- package/src/input/commands/eval.ts +1 -1
- package/src/input/commands/experience-runtime.ts +3 -7
- package/src/input/commands/fresh-conversation.ts +86 -0
- package/src/input/commands/git-runtime.ts +5 -22
- package/src/input/commands/graph-runtime.ts +1 -1
- package/src/input/commands/guidance-runtime.ts +1 -1
- package/src/input/commands/health-runtime.ts +8 -9
- package/src/input/commands/hooks-runtime.ts +2 -2
- package/src/input/commands/hosted-runtime.ts +3 -3
- package/src/input/commands/incident-runtime.ts +3 -3
- package/src/input/commands/intelligence-runtime.ts +6 -9
- package/src/input/commands/knowledge.ts +2 -2
- package/src/input/commands/legacy-panel-command.ts +57 -0
- package/src/input/commands/local-auth-runtime.ts +8 -9
- package/src/input/commands/local-provider-runtime.ts +7 -4
- package/src/input/commands/local-runtime.ts +12 -15
- package/src/input/commands/local-setup-review.ts +1 -1
- package/src/input/commands/local-setup.ts +13 -19
- package/src/input/commands/memory.ts +1 -1
- package/src/input/commands/notify-runtime.ts +9 -0
- package/src/input/commands/operator-runtime.ts +10 -12
- package/src/input/commands/permissions-provenance.ts +3 -3
- package/src/input/commands/planning-runtime.ts +7 -7
- package/src/input/commands/platform-sandbox-runtime.ts +2 -2
- package/src/input/commands/platform-services-runtime.ts +1 -1
- package/src/input/commands/policy-dispatch.ts +2 -2
- package/src/input/commands/policy.ts +3 -3
- package/src/input/commands/provider.ts +1 -1
- package/src/input/commands/remote-runtime.ts +1 -1
- package/src/input/commands/review-runtime.ts +39 -94
- package/src/input/commands/rewind-runtime.ts +81 -108
- package/src/input/commands/runtime-services.ts +15 -17
- package/src/input/commands/services-runtime.ts +2 -2
- package/src/input/commands/session-content.ts +21 -5
- package/src/input/commands/session-workflow.ts +13 -38
- package/src/input/commands/settings-sync-runtime.ts +2 -2
- package/src/input/commands/shell-core.ts +19 -4
- package/src/input/commands/skills-runtime.ts +2 -2
- package/src/input/commands/status-runtime.ts +13 -0
- package/src/input/commands/subscription-runtime.ts +1 -1
- package/src/input/commands/tasks-runtime.ts +2 -8
- package/src/input/commands/work-plan-runtime.ts +4 -4
- package/src/input/commands/workstream-attempts.ts +24 -47
- package/src/input/commands/workstream-runtime.ts +2 -2
- package/src/input/commands/worktree-runtime.ts +3 -3
- package/src/input/commands.ts +3 -1
- package/src/input/composer-editor.ts +44 -0
- package/src/input/concealed-input.ts +1 -1
- package/src/input/config-modal-types.ts +20 -8
- package/src/input/config-modal.ts +106 -105
- package/src/input/confirm-dialog-types.ts +28 -0
- package/src/input/confirm-dialog.ts +70 -0
- package/src/input/delete-key-policy.ts +3 -3
- package/src/input/feed-context-factory.ts +15 -16
- package/src/input/handler-command-route.ts +7 -42
- package/src/input/handler-content-actions.ts +16 -15
- package/src/input/handler-feed-routes.ts +26 -211
- package/src/input/handler-feed.ts +68 -95
- package/src/input/handler-interactions.ts +5 -3
- package/src/input/handler-modal-routes.ts +215 -216
- package/src/input/handler-modal-stack.ts +81 -11
- package/src/input/handler-modal-token-routes.ts +4 -0
- package/src/input/handler-onboarding.ts +0 -1
- package/src/input/handler-picker-routes.ts +65 -107
- package/src/input/handler-session-view-route.ts +149 -0
- package/src/input/handler-shortcuts.ts +16 -154
- package/src/input/handler-types.ts +4 -2
- package/src/input/handler-ui-state.ts +45 -15
- package/src/input/handler-work-tree-route.ts +123 -0
- package/src/input/handler.ts +25 -70
- package/src/input/keybindings.ts +16 -71
- package/src/input/masked-entry-modal.ts +117 -0
- package/src/input/mcp-workspace.ts +48 -17
- package/src/input/model-picker-filter.ts +8 -0
- package/src/input/model-picker-open.ts +99 -0
- package/src/input/model-picker-types.ts +1 -1
- package/src/input/model-picker.ts +92 -9
- package/src/input/notifications-modal.ts +123 -0
- package/src/input/overlay-filter.ts +26 -0
- package/src/input/profile-picker-modal.ts +37 -8
- package/src/input/search.ts +3 -3
- package/src/input/selection-modal-queue.ts +2 -0
- package/src/input/selection-modal.ts +28 -16
- package/src/input/session-picker-modal.ts +33 -8
- package/src/input/settings-modal-activation.ts +7 -2
- package/src/input/settings-modal-data.ts +11 -6
- package/src/input/settings-modal-types.ts +1 -1
- package/src/input/settings-modal.ts +20 -20
- package/src/input/submission-intent.ts +1 -1
- package/src/input/submission-router.ts +4 -9
- package/src/input/surface-modal-host.ts +110 -0
- package/src/input/theme-settings-actions.ts +82 -0
- package/src/input/usage-modal.ts +183 -0
- package/src/input/views.ts +97 -0
- package/src/main.ts +175 -165
- package/src/permissions/hunk-selection.ts +1 -1
- package/src/permissions/prompt-card.ts +511 -0
- package/src/permissions/prompt.ts +59 -622
- package/src/renderer/agents-modal.ts +310 -0
- package/src/renderer/autocomplete-overlay.ts +42 -220
- package/src/renderer/back-to-bottom.ts +80 -0
- package/src/renderer/block-actions-overlay.ts +30 -48
- package/src/renderer/bookmark-modal.ts +48 -79
- package/src/renderer/changes-modal.ts +325 -0
- package/src/renderer/code-block.ts +184 -106
- package/src/renderer/command-palette.ts +93 -0
- package/src/renderer/composer-fragments.ts +4 -4
- package/src/renderer/composer.ts +146 -0
- package/src/renderer/compositor.ts +26 -160
- package/src/renderer/config-modal.ts +185 -81
- package/src/renderer/confirm-dialog.ts +50 -0
- package/src/renderer/context-inspector.ts +116 -154
- package/src/renderer/context-status-hint.ts +4 -4
- package/src/renderer/conversation-layout.ts +20 -0
- package/src/renderer/conversation-overlays.ts +94 -84
- package/src/renderer/conversation-surface.ts +19 -38
- package/src/renderer/diff-tint.ts +98 -0
- package/src/renderer/file-picker-overlay.ts +63 -90
- package/src/renderer/footer-targets.ts +38 -0
- package/src/renderer/git-status.ts +3 -4
- package/src/renderer/header-line.ts +140 -117
- package/src/renderer/help-overlay.ts +133 -219
- package/src/renderer/history-search-overlay.ts +15 -12
- package/src/renderer/lane-graph/bead.ts +800 -0
- package/src/renderer/lane-graph/glyphs.ts +134 -0
- package/src/renderer/lane-graph/layout.ts +248 -0
- package/src/renderer/lane-graph/paint.ts +537 -0
- package/src/renderer/lane-graph/semantic-memo.ts +77 -0
- package/src/renderer/layout-engine.ts +2 -57
- package/src/renderer/layout.ts +7 -13
- package/src/renderer/markdown-inline.ts +2 -1
- package/src/renderer/markdown-table.ts +17 -12
- package/src/renderer/markdown.ts +92 -34
- package/src/renderer/masked-entry-modal.ts +78 -0
- package/src/renderer/mcp-workspace.ts +166 -203
- package/src/renderer/model-workspace.ts +381 -436
- package/src/renderer/notifications-modal.ts +116 -0
- package/src/renderer/onboarding/onboarding-wizard.ts +178 -588
- package/src/renderer/process-view.ts +192 -0
- package/src/renderer/profile-picker-modal.ts +58 -110
- package/src/renderer/search-overlay.ts +6 -3
- package/src/renderer/selection-modal-overlay.ts +87 -327
- package/src/renderer/semantic-diff.ts +2 -2
- package/src/renderer/session-chips.ts +102 -0
- package/src/renderer/session-picker-modal.ts +177 -297
- package/src/renderer/settings-modal-connections.ts +14 -23
- package/src/renderer/settings-modal-context.ts +367 -0
- package/src/renderer/settings-modal-helpers.ts +6 -11
- package/src/renderer/settings-modal.ts +322 -726
- package/src/renderer/shell-surface.ts +277 -175
- package/src/renderer/shortcuts-overlay.ts +217 -0
- package/src/renderer/status-line.ts +475 -0
- package/src/renderer/surface-compose.ts +174 -0
- package/src/renderer/surface-kit-extra.ts +303 -0
- package/src/renderer/surface-kit-list.ts +366 -0
- package/src/renderer/surface-kit-parts.ts +360 -0
- package/src/renderer/surface-kit.ts +568 -0
- package/src/renderer/syntax-highlighter.ts +280 -197
- package/src/renderer/syntax-theme.ts +51 -0
- package/src/renderer/system-message.ts +0 -1
- package/src/renderer/term-caps.ts +42 -1
- package/src/renderer/terminal-bg-probe.ts +116 -19
- package/src/renderer/terminal-palette-probe.ts +322 -0
- package/src/renderer/terminal-palette-reader.ts +183 -0
- package/src/renderer/terminal-palette.ts +58 -0
- package/src/renderer/theme-mode-config.ts +16 -1
- package/src/renderer/theme.ts +234 -207
- package/src/renderer/thinking.ts +0 -1
- package/src/renderer/throbber.ts +188 -0
- package/src/renderer/toast-center.ts +119 -0
- package/src/renderer/ui-factory.ts +39 -602
- package/src/renderer/ui-primitives.ts +8 -25
- package/src/renderer/usage-modal.ts +353 -0
- package/src/renderer/user-message.ts +58 -0
- package/src/renderer/voice-capture-chip.ts +53 -0
- package/src/runtime/bootstrap-command-context.ts +0 -5
- package/src/runtime/bootstrap-command-parts.ts +38 -89
- package/src/runtime/bootstrap-core.ts +13 -15
- package/src/runtime/bootstrap-hook-bridge.ts +12 -21
- package/src/runtime/bootstrap-notifier-sync.ts +17 -1
- package/src/runtime/bootstrap-shell.ts +16 -50
- package/src/runtime/bootstrap.ts +14 -14
- package/src/runtime/client/fleet-union.ts +5 -5
- package/src/runtime/client/hosted-exit.ts +2 -2
- package/src/runtime/client/hosted-sessions.ts +1 -1
- package/src/runtime/client/spine-adoption.ts +1 -1
- package/src/runtime/context-accounting-source.ts +5 -4
- package/src/runtime/index.ts +1 -0
- package/src/runtime/notification-dispatch.ts +102 -29
- package/src/runtime/recovery-offer-wiring.ts +4 -1
- package/src/runtime/recovery-prompt.ts +31 -15
- package/src/runtime/runtime-services-types.ts +10 -6
- package/src/runtime/services.ts +17 -12
- package/src/runtime/session-continuity-hints.ts +2 -5
- package/src/runtime/session-inbound-inputs.ts +1 -1
- package/src/runtime/session-resume-liveness-confirm.ts +14 -2
- package/src/runtime/startup-typeahead-gate.ts +103 -0
- package/src/runtime/store/domains/domain-read-matrix.ts +0 -1
- package/src/runtime/store/domains/index.ts +0 -8
- package/src/runtime/store/selectors/index.ts +0 -28
- package/src/runtime/store/state.ts +0 -8
- package/src/runtime/ui-services.ts +4 -6
- package/src/runtime/usage-tracker.ts +348 -0
- package/src/runtime/wrfc-persistence.ts +4 -4
- package/src/shell/blocking-input.ts +92 -2
- package/src/shell/recovery-input-helpers.ts +1 -1
- package/src/shell/session-views.ts +539 -0
- package/src/shell/status-report.ts +86 -0
- package/src/shell/transcript-scroll.ts +68 -0
- package/src/shell/ui-openers.ts +84 -172
- package/src/shell/view-openers.ts +205 -0
- package/src/tools/wrfc-agent-guard.ts +22 -2
- package/src/utils/format-duration.ts +4 -8
- package/src/utils/splash-lines.ts +9 -1
- package/src/utils/terminal-width.ts +56 -0
- package/src/verification/live-verifier.ts +0 -10
- package/src/version.ts +1 -1
- package/src/{panels → views}/agent-inspector-shared.ts +2 -2
- package/src/{panels → views}/builtin-modals.ts +22 -21
- package/src/views/builtin-views.ts +135 -0
- package/src/{panels → views}/confirm-state.ts +9 -9
- package/src/{panels → views}/diff-review-model.ts +10 -3
- package/src/{panels → views}/eval-registry.ts +1 -1
- package/src/{panels → views}/fleet-acts.ts +49 -85
- package/src/{panels/fleet-panel-format.ts → views/fleet-format.ts} +40 -40
- package/src/{panels → views}/fleet-gateway.ts +5 -5
- package/src/{panels → views}/fleet-observed-render.ts +16 -16
- package/src/{panels → views}/fleet-read-model.ts +9 -9
- package/src/{panels/fleet-tabs.ts → views/fleet-session-tabs.ts} +13 -13
- package/src/{panels → views}/fleet-spawn.ts +33 -49
- package/src/{panels → views}/fleet-steer.ts +12 -12
- package/src/{panels → views}/fleet-stop.ts +4 -4
- package/src/{panels → views}/fleet-transcript.ts +26 -27
- package/src/{panels/fleet-panel-worktree-detail.ts → views/fleet-worktree-detail.ts} +7 -7
- package/src/{panels → views}/hosted-session-feed.ts +6 -6
- package/src/views/modal-surface-registry.ts +41 -0
- package/src/{panels → views}/modals/devices-modal.ts +2 -2
- package/src/{panels → views}/modals/hooks-modal.ts +13 -13
- package/src/{panels → views}/modals/keybindings-modal.ts +19 -27
- package/src/{panels → views}/modals/knowledge-modal.ts +6 -5
- package/src/{panels → views}/modals/local-auth-modal.ts +22 -21
- package/src/{panels → views}/modals/marketplace-modal.ts +11 -11
- package/src/{panels → views}/modals/memory-modal.ts +8 -8
- package/src/{panels → views}/modals/modal-surface-helpers.ts +15 -5
- package/src/{panels → views}/modals/pairing-modal.ts +9 -9
- package/src/{panels → views}/modals/planning-modal.ts +15 -20
- package/src/{panels → views}/modals/plugins-modal.ts +6 -6
- package/src/{panels → views}/modals/policy-modal.ts +13 -5
- package/src/{panels → views}/modals/provider-health-modal.ts +4 -4
- package/src/{panels → views}/modals/remote-modal.ts +3 -3
- package/src/{panels → views}/modals/sandbox-modal.ts +4 -4
- package/src/{panels → views}/modals/security-modal.ts +22 -16
- package/src/{panels → views}/modals/services-modal.ts +3 -3
- package/src/{panels → views}/modals/settings-sync-modal.ts +4 -4
- package/src/{panels → views}/modals/skills-modal.ts +9 -9
- package/src/{panels → views}/modals/subscription-modal.ts +3 -3
- package/src/{panels → views}/modals/work-plan-modal.ts +10 -13
- package/src/views/notifications-feed.ts +314 -0
- package/src/{panels → views}/polish-core.ts +38 -36
- package/src/{panels → views}/polish-tables.ts +35 -26
- package/src/{panels → views}/polish.ts +101 -95
- package/src/{panels → views}/project-planning-answer-actions.ts +3 -3
- package/src/{panels → views}/provider-health-routes.ts +14 -14
- package/src/{panels → views}/search-focus.ts +8 -8
- package/src/{panels → views}/session-maintenance.ts +11 -11
- package/src/views/skills-discovery.ts +159 -0
- package/src/views/view-deps.ts +80 -0
- package/src/views/view-panel-adapter.ts +53 -0
- package/src/{panels → views}/workstream-graph-render.ts +1 -1
- package/src/core/conversation-fold.ts +0 -101
- package/src/core/conversation-turn-structure.ts +0 -464
- package/src/core/conversation-user-receipts.ts +0 -42
- package/src/input/commands/operator-panel-runtime.ts +0 -186
- package/src/input/panel-integration-actions.ts +0 -33
- package/src/input/panel-mouse-geometry.ts +0 -97
- package/src/input/panel-paste-flood-guard.ts +0 -86
- package/src/panels/base-panel.ts +0 -301
- package/src/panels/builtin/agent.ts +0 -27
- package/src/panels/builtin/development.ts +0 -92
- package/src/panels/builtin/knowledge.ts +0 -12
- package/src/panels/builtin/operations.ts +0 -177
- package/src/panels/builtin/session.ts +0 -81
- package/src/panels/builtin/shared.ts +0 -357
- package/src/panels/builtin-panels.ts +0 -28
- package/src/panels/cost-tracker-panel.ts +0 -746
- package/src/panels/diff-panel.ts +0 -797
- package/src/panels/diff-review-panel.ts +0 -395
- package/src/panels/expandable-list-panel.ts +0 -189
- package/src/panels/fleet-deep-link.ts +0 -31
- package/src/panels/fleet-panel.ts +0 -799
- package/src/panels/git-panel.ts +0 -800
- package/src/panels/hosted-session-panel.ts +0 -221
- package/src/panels/index.ts +0 -21
- package/src/panels/local-auth-panel.ts +0 -478
- package/src/panels/notifications-feed.ts +0 -127
- package/src/panels/notifications-panel.ts +0 -160
- package/src/panels/panel-confirm-overlay.ts +0 -72
- package/src/panels/panel-manager.ts +0 -791
- package/src/panels/plugins-panel.ts +0 -371
- package/src/panels/scrollable-list-panel.ts +0 -498
- package/src/panels/skills-panel.ts +0 -454
- package/src/panels/token-budget-panel.ts +0 -688
- package/src/panels/types.ts +0 -191
- package/src/panels/wrfc-panel-format.ts +0 -133
- package/src/renderer/diff-view.ts +0 -134
- package/src/renderer/fleet-tab-strip.ts +0 -56
- package/src/renderer/footer-tips.ts +0 -53
- package/src/renderer/fullscreen-primitives.ts +0 -146
- package/src/renderer/fullscreen-workspace.ts +0 -194
- package/src/renderer/hint-grammar.ts +0 -52
- package/src/renderer/modal-factory.ts +0 -480
- package/src/renderer/overlay-box.ts +0 -154
- package/src/renderer/overlay-viewport.ts +0 -104
- package/src/renderer/panel-composite.ts +0 -145
- package/src/renderer/panel-workspace-bar.ts +0 -54
- package/src/renderer/process-indicator.ts +0 -163
- package/src/renderer/tab-strip.ts +0 -222
- package/src/renderer/text-layout.ts +0 -31
- package/src/renderer/tool-call.ts +0 -276
- package/src/renderer/tool-result-expanded-lines.ts +0 -48
- package/src/renderer/tool-result-summary.ts +0 -219
- package/src/runtime/diagnostics/panels/index.ts +0 -21
- package/src/runtime/diagnostics/panels/ops.ts +0 -156
- package/src/runtime/perf/panel-contracts.ts +0 -32
- package/src/runtime/store/domains/panels.ts +0 -117
- package/src/verification/verification-ledger.ts +0 -707
- /package/src/{panels → views}/memory-consolidation-gateway.ts +0 -0
- /package/src/{panels → views}/modals/modal-theme.ts +0 -0
- /package/src/{panels → views}/provider-health-domains.ts +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { InputToken } from '@pellux/goodvibes-sdk/platform/core';
|
|
2
2
|
import type { InfiniteBuffer } from '@pellux/goodvibes-terminal-shell';
|
|
3
3
|
import type { CommandContext, CommandRegistry } from './command-registry.ts';
|
|
4
|
+
import type { SurfaceModalHost } from './surface-modal-host.ts';
|
|
4
5
|
import { AutocompleteEngine } from './autocomplete.ts';
|
|
5
6
|
import { FilePickerModal } from './file-picker.ts';
|
|
6
7
|
import { ModelPickerModal } from './model-picker.ts';
|
|
@@ -11,6 +12,7 @@ import type { InputHistory, HistorySearch } from './input-history.ts';
|
|
|
11
12
|
import type { BlockMeta, ConversationManager } from '../core/conversation';
|
|
12
13
|
import { BlockActionsMenu } from '../renderer/block-actions.ts';
|
|
13
14
|
import { ContextInspectorModal } from '../renderer/context-inspector.ts';
|
|
15
|
+
import type { OverlayFilters } from './overlay-filter.ts';
|
|
14
16
|
import { BookmarkModal } from './bookmark-modal.ts';
|
|
15
17
|
import { SettingsModal } from './settings-modal.ts';
|
|
16
18
|
import type { McpWorkspace } from './mcp-workspace.ts';
|
|
@@ -27,21 +29,17 @@ import {
|
|
|
27
29
|
import {
|
|
28
30
|
handleIndicatorFocusToken,
|
|
29
31
|
handleMouseToken,
|
|
30
|
-
handlePanelFocusToken,
|
|
31
32
|
handlePromptKeyToken,
|
|
32
33
|
handlePromptTextToken,
|
|
33
|
-
type PanelMouseLayout,
|
|
34
34
|
} from './handler-feed-routes.ts';
|
|
35
|
-
import type { PanelBurstGuardState } from './panel-paste-flood-guard.ts';
|
|
36
35
|
import type { WrappedPromptInfo } from './handler-prompt-buffer.ts';
|
|
37
36
|
import { getViewportBottomLine } from '../renderer/conversation-layout.ts';
|
|
37
|
+
import { handleWorkTreeToken } from './handler-work-tree-route.ts';
|
|
38
|
+
import { handleSessionViewToken } from './handler-session-view-route.ts';
|
|
38
39
|
import { handleModalTokenRoutes } from './handler-modal-token-routes.ts';
|
|
39
40
|
import { handleCommandModeToken } from './handler-command-route.ts';
|
|
40
41
|
import { handleGlobalShortcutToken } from './handler-shortcuts.ts';
|
|
41
|
-
import type { Panel } from '../panels/types.ts';
|
|
42
|
-
import { handlePanelIntegrationAction } from './panel-integration-actions.ts';
|
|
43
42
|
import { SelectionManager } from '@pellux/goodvibes-terminal-shell';
|
|
44
|
-
import type { PanelManager } from '../panels/panel-manager.ts';
|
|
45
43
|
import type { KeybindingsManager } from './keybindings.ts';
|
|
46
44
|
import type { ModelPickerTarget } from './model-picker.ts';
|
|
47
45
|
import type { KillRing } from './kill-ring.ts';
|
|
@@ -55,7 +53,7 @@ import type { FocusTracker } from '@pellux/goodvibes-sdk/platform/runtime/operat
|
|
|
55
53
|
* **Mutable per-feed** (synced from handler at the top of every feed() call, and
|
|
56
54
|
* updated inside action closures via syncFeedContextMutableFields):
|
|
57
55
|
* - `prompt`, `cursorPos`, current text buffer state
|
|
58
|
-
* - `commandMode`, `
|
|
56
|
+
* - `commandMode`, `indicatorFocused`, focus-mode flags
|
|
59
57
|
* - `helpOverlayActive`, `helpScrollOffset`, help overlay visibility and scroll
|
|
60
58
|
* - `shortcutsOverlayActive`, `shortcutsScrollOffset`, shortcuts overlay state
|
|
61
59
|
* - `nextPasteId`, `nextImageId`, monotonically increasing ID counters
|
|
@@ -76,7 +74,7 @@ import type { FocusTracker } from '@pellux/goodvibes-sdk/platform/runtime/operat
|
|
|
76
74
|
* - `filePicker`, `modelPicker`, `onboardingWizard`,
|
|
77
75
|
* `contextInspectorModal`, `blockActionsMenu`, `searchManager`, `historySearch`,
|
|
78
76
|
* service objects constructed once
|
|
79
|
-
* - `
|
|
77
|
+
* - `keybindingsManager`, from uiServices, stable for app lifetime
|
|
80
78
|
* - `modalStack`, reference to the handler's shared array (mutated in place)
|
|
81
79
|
* - `getHistory`, `getViewportHeight`, `getScrollTop`, `scroll`, `exitApp`, stable
|
|
82
80
|
* callbacks bound in the InputHandler constructor
|
|
@@ -90,7 +88,6 @@ export interface InputFeedContext {
|
|
|
90
88
|
cursorPos: number;
|
|
91
89
|
inputScrollTop: number;
|
|
92
90
|
commandMode: boolean;
|
|
93
|
-
panelFocused: boolean;
|
|
94
91
|
indicatorFocused: boolean;
|
|
95
92
|
helpOverlayActive: boolean;
|
|
96
93
|
helpScrollOffset: number;
|
|
@@ -121,10 +118,11 @@ export interface InputFeedContext {
|
|
|
121
118
|
readonly modelPicker: ModelPickerModal;
|
|
122
119
|
readonly onboardingWizard: OnboardingWizardController;
|
|
123
120
|
readonly contextInspectorModal: ContextInspectorModal;
|
|
121
|
+
readonly overlayFilters: OverlayFilters;
|
|
124
122
|
readonly blockActionsMenu: BlockActionsMenu;
|
|
123
|
+
/** Kit modals (command palette, confirm dialog, ...): they take every key while open. */
|
|
124
|
+
readonly surfaceModals?: SurfaceModalHost;
|
|
125
125
|
readonly searchManager: SearchManager;
|
|
126
|
-
readonly panelManager: PanelManager;
|
|
127
|
-
panelMouseLayout: PanelMouseLayout | null;
|
|
128
126
|
readonly keybindingsManager: KeybindingsManager;
|
|
129
127
|
readonly modalStack: string[];
|
|
130
128
|
inputHistory: InputHistory | null;
|
|
@@ -132,14 +130,14 @@ export interface InputFeedContext {
|
|
|
132
130
|
readonly killRing: KillRing;
|
|
133
131
|
/** Terminal focus tracker, updated here from 'focus' tokens, read by the unfocused-alert notifiers in core/. */
|
|
134
132
|
readonly focusTracker: FocusTracker;
|
|
135
|
-
/** item 5, the paste-flood guard's persistent state, mutated in place across tokens by handlePanelFocusToken (see panel-paste-flood-guard.ts). Never reallocated. */
|
|
136
|
-
readonly panelBurstGuard: PanelBurstGuardState;
|
|
137
133
|
readonly getHistory: () => InfiniteBuffer;
|
|
138
134
|
readonly getViewportHeight: () => number;
|
|
139
135
|
readonly getScrollTop: () => number;
|
|
140
136
|
readonly scroll: (delta: number) => void;
|
|
141
137
|
requestRender: () => void;
|
|
142
138
|
readonly modalOpened: (name: string) => void;
|
|
139
|
+
/** The agent or process view controls (null before the shell wires them). */
|
|
140
|
+
readonly getSessionView: () => import('./handler-session-view-route.ts').SessionViewControls | null;
|
|
143
141
|
readonly handleEscape: () => void;
|
|
144
142
|
/** Deliver a concealed submission; returns true when concealed mode consumed it. */
|
|
145
143
|
readonly submitConcealedInput: (value: string) => boolean;
|
|
@@ -160,11 +158,12 @@ export interface InputFeedContext {
|
|
|
160
158
|
readonly ensureInputCursorVisible: (contentWidth?: number) => void;
|
|
161
159
|
readonly registerPaste: (content: string) => string;
|
|
162
160
|
readonly executeBlockAction: (id: string) => void;
|
|
163
|
-
readonly cyclePanelTab: (direction: 'next' | 'prev') => void;
|
|
164
|
-
readonly onPanelInputConsumed: (activePanel: Panel | null, key: string) => void;
|
|
165
161
|
readonly getWrappedPromptInfo: (contentWidth: number) => WrappedPromptInfo;
|
|
166
162
|
readonly moveCursorVertical: (direction: -1 | 1) => boolean;
|
|
167
163
|
readonly handlePathCompletion: () => boolean;
|
|
164
|
+
readonly footerTargetAt: (row: number) => import('../renderer/footer-targets.ts').FooterTarget | undefined;
|
|
165
|
+
readonly openFooterTarget: (target: import('../renderer/footer-targets.ts').FooterTarget) => void;
|
|
166
|
+
readonly bodyTopRow: () => number;
|
|
168
167
|
readonly handleBlockToggle: () => void;
|
|
169
168
|
readonly findMarkerAtPos: (pos: number) => { start: number; end: number } | null;
|
|
170
169
|
readonly cleanupMarkerRegistry: (text: string) => void;
|
|
@@ -185,31 +184,11 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
185
184
|
const lineCount = history.getLineCount();
|
|
186
185
|
const keybindings = context.keybindingsManager;
|
|
187
186
|
|
|
188
|
-
//
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
// focusPanels() call, j/k/i/K land silently in the composer until Tab. Used by
|
|
192
|
-
// the footer indicator's [Enter] and by F2 (F2 and the footer
|
|
193
|
-
// indicator both subsume the retired process modal). Mirrors the Ctrl+P
|
|
194
|
-
// panel-picker launcher (ui-openers.ts openPanelPicker).
|
|
195
|
-
const openFleetPanel = (): void => {
|
|
196
|
-
context.panelManager.open('fleet');
|
|
197
|
-
context.panelManager.focusPanels();
|
|
198
|
-
context.panelFocused = true;
|
|
187
|
+
// The footer process indicator's Enter opens the Agents modal (so does F2).
|
|
188
|
+
const openAgentsView = (): void => {
|
|
189
|
+
context.commandContext?.openAgents?.();
|
|
199
190
|
};
|
|
200
191
|
|
|
201
|
-
// Paste-ness is a per-TOKEN property, computed at the handlePanelFocusToken
|
|
202
|
-
// call below, never a per-feed character sum. The SDK tokenizer emits a
|
|
203
|
-
// bracketed paste (\x1b[?2004h, enabled in main.ts terminal init) as ONE
|
|
204
|
-
// 'text' token holding the whole payload, while discrete keystrokes, even
|
|
205
|
-
// several batched into one feed() by render-tick latency, arrive as
|
|
206
|
-
// separate 1-char 'text' tokens. The old per-feed sum misread two quick nav
|
|
207
|
-
// keystrokes (e.g. j then k in one drain) as a "burst" and yanked focus.
|
|
208
|
-
// item 5's flood guard reuses that same per-token model but adds
|
|
209
|
-
// real timing: one `now` per feed() call (not per token) is intentional,
|
|
210
|
-
// a genuine flood delivers many tokens in one drain, and they should all
|
|
211
|
-
// measure as arriving "at once", not spread across meaningless sub-ms noise.
|
|
212
|
-
const now = Date.now();
|
|
213
192
|
for (const token of tokens) {
|
|
214
193
|
// Focus-reporting tokens (CSI ?1004h) never reach the composer or any
|
|
215
194
|
// modal route, consumed here, first, unconditionally. No render needed.
|
|
@@ -223,6 +202,16 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
223
202
|
continue;
|
|
224
203
|
}
|
|
225
204
|
|
|
205
|
+
// Kit modals sit on top of everything else: focus belongs to the top one.
|
|
206
|
+
// Esc goes through the shared chain (handler-modal-stack.ts), which pops
|
|
207
|
+
// exactly one level of the host before anything else.
|
|
208
|
+
if (context.surfaceModals?.active && (token.type === 'key' || token.type === 'text')) {
|
|
209
|
+
if (token.type === 'key' && token.logicalName === 'escape') context.handleEscape();
|
|
210
|
+
else context.surfaceModals.handleToken(token);
|
|
211
|
+
context.requestRender();
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
|
|
226
215
|
const modalRoute = handleModalTokenRoutes({
|
|
227
216
|
history,
|
|
228
217
|
conversationManager: context.conversationManager,
|
|
@@ -254,6 +243,7 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
254
243
|
requestRender: context.requestRender,
|
|
255
244
|
handleEscape: context.handleEscape,
|
|
256
245
|
contextInspectorModal: context.contextInspectorModal,
|
|
246
|
+
overlayFilters: context.overlayFilters,
|
|
257
247
|
modalOpened: context.modalOpened,
|
|
258
248
|
filePicker: context.filePicker,
|
|
259
249
|
imageRegistry: context.imageRegistry,
|
|
@@ -286,19 +276,46 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
286
276
|
continue;
|
|
287
277
|
}
|
|
288
278
|
|
|
279
|
+
// An agent or process open full screen, and the session chips' Tab (handler-session-view-route.ts).
|
|
280
|
+
const sessionView = context.getSessionView();
|
|
281
|
+
const viewState = {
|
|
282
|
+
controls: sessionView,
|
|
283
|
+
prompt: context.prompt,
|
|
284
|
+
cursorPos: context.cursorPos,
|
|
285
|
+
commandMode: context.commandMode,
|
|
286
|
+
saveUndoState: context.saveUndoState,
|
|
287
|
+
requestRender: context.requestRender,
|
|
288
|
+
};
|
|
289
|
+
if (handleSessionViewToken(viewState, token)) {
|
|
290
|
+
context.prompt = viewState.prompt;
|
|
291
|
+
context.cursorPos = viewState.cursorPos;
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// The keyboard inside the work tree (Alt+Up enters, Esc leaves; see
|
|
296
|
+
// handler-work-tree-route.ts). The work tree is main's: inside a view it is not on screen.
|
|
297
|
+
if (!sessionView?.active && handleWorkTreeToken({
|
|
298
|
+
conversationManager: context.conversationManager,
|
|
299
|
+
enterMatch: token.type === 'key' && keybindings.matches('focus-work-tree', token),
|
|
300
|
+
anchorLine: getViewportBottomLine(scrollTop, viewportHeight, lineCount),
|
|
301
|
+
scrollTop: context.getScrollTop(),
|
|
302
|
+
viewportHeight,
|
|
303
|
+
scroll: context.scroll,
|
|
304
|
+
requestRender: context.requestRender,
|
|
305
|
+
onCopied: () => { /* the copy receipt is the transcript line handleBlockCopy logs */ },
|
|
306
|
+
openAgent: (id) => context.commandContext?.openSessionView?.({ kind: 'agent', id }) ?? false,
|
|
307
|
+
openProcess: (id) => context.commandContext?.openSessionView?.({ kind: 'process', id }) ?? false,
|
|
308
|
+
}, token)) {
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
|
|
289
312
|
if (token.type === 'key') {
|
|
290
|
-
//
|
|
291
|
-
//
|
|
292
|
-
// it at feed entry, so no manual "unfocus if panels vanished" patch is
|
|
293
|
-
// needed here anymore.
|
|
294
|
-
// Snapshot these four BEFORE dispatch so the write-back below can tell
|
|
295
|
-
// a pipeline-driven change (see comment there) from a stale copy.
|
|
313
|
+
// Snapshot these BEFORE dispatch so the write-back below can tell a
|
|
314
|
+
// pipeline-driven change (see comment there) from a stale copy.
|
|
296
315
|
const promptBefore = context.prompt;
|
|
297
316
|
const cursorPosBefore = context.cursorPos;
|
|
298
317
|
const commandModeBefore = context.commandMode;
|
|
299
|
-
const panelFocusedBefore = context.panelFocused;
|
|
300
318
|
const shortcutState = {
|
|
301
|
-
panelFocused: context.panelFocused,
|
|
302
319
|
prompt: context.prompt,
|
|
303
320
|
cursorPos: context.cursorPos,
|
|
304
321
|
commandMode: context.commandMode,
|
|
@@ -324,8 +341,6 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
324
341
|
handleRedo: context.handleRedo,
|
|
325
342
|
handlePaste: context.handlePaste,
|
|
326
343
|
handleEscape: context.handleEscape,
|
|
327
|
-
cyclePanelTab: context.cyclePanelTab,
|
|
328
|
-
panelManager: context.panelManager,
|
|
329
344
|
keybindingsManager: context.keybindingsManager,
|
|
330
345
|
killRing: context.killRing,
|
|
331
346
|
};
|
|
@@ -345,7 +360,6 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
345
360
|
context.prompt = context.prompt === promptBefore ? shortcutState.prompt : context.prompt;
|
|
346
361
|
context.cursorPos = context.cursorPos === cursorPosBefore ? shortcutState.cursorPos : context.cursorPos;
|
|
347
362
|
context.commandMode = context.commandMode === commandModeBefore ? shortcutState.commandMode : context.commandMode;
|
|
348
|
-
context.panelFocused = context.panelFocused === panelFocusedBefore ? shortcutState.panelFocused : context.panelFocused;
|
|
349
363
|
if (context.commandMode) {
|
|
350
364
|
if (!context.prompt.startsWith('/')) {
|
|
351
365
|
context.commandMode = false;
|
|
@@ -363,40 +377,10 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
363
377
|
}
|
|
364
378
|
}
|
|
365
379
|
|
|
366
|
-
const panelRoute = handlePanelFocusToken({
|
|
367
|
-
panelFocused: context.panelFocused,
|
|
368
|
-
commandMode: context.commandMode,
|
|
369
|
-
searchActive: context.searchManager.active,
|
|
370
|
-
autocompleteActive: !!context.autocomplete?.isActive,
|
|
371
|
-
requestRender: context.requestRender,
|
|
372
|
-
handlePathCompletion: context.handlePathCompletion,
|
|
373
|
-
cyclePanelTab: context.cyclePanelTab,
|
|
374
|
-
panelManager: context.panelManager,
|
|
375
|
-
keybindingsManager: context.keybindingsManager,
|
|
376
|
-
onPanelInputConsumed: context.onPanelInputConsumed,
|
|
377
|
-
now,
|
|
378
|
-
burstGuard: context.panelBurstGuard,
|
|
379
|
-
// Per-token paste classification (Invariant B): a paste is a single
|
|
380
|
-
// 'text' token whose value holds more than one character.
|
|
381
|
-
isPasteToken: token.type === 'text' && token.value.length > 1,
|
|
382
|
-
// One-shot honesty hint when a paste is dropped into a non-capturing
|
|
383
|
-
// focused panel (Invariant A: focus never silently flips to the composer).
|
|
384
|
-
onPasteDropped: (panelName: string) =>
|
|
385
|
-
context.commandContext?.print(
|
|
386
|
-
`paste ignored: focus is on ${panelName}; Tab returns to composer`,
|
|
387
|
-
),
|
|
388
|
-
isTurnActive: () => context.commandContext?.isGenerating?.() ?? false,
|
|
389
|
-
cancelGeneration: () => context.commandContext?.cancelGeneration?.(),
|
|
390
|
-
}, token);
|
|
391
|
-
context.panelFocused = panelRoute.panelFocused;
|
|
392
|
-
if (panelRoute.handled) {
|
|
393
|
-
continue;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
380
|
const indicatorRoute = handleIndicatorFocusToken({
|
|
397
381
|
indicatorFocused: context.indicatorFocused,
|
|
398
382
|
modalOpened: context.modalOpened,
|
|
399
|
-
|
|
383
|
+
openAgentsView,
|
|
400
384
|
requestRender: context.requestRender,
|
|
401
385
|
}, token);
|
|
402
386
|
context.indicatorFocused = indicatorRoute.indicatorFocused;
|
|
@@ -441,8 +425,6 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
441
425
|
modalStack: context.modalStack,
|
|
442
426
|
commandRegistry: context.commandRegistry,
|
|
443
427
|
commandContext: context.commandContext,
|
|
444
|
-
panelFocused: context.panelFocused,
|
|
445
|
-
panelManager: context.panelManager,
|
|
446
428
|
conversationManager: context.conversationManager,
|
|
447
429
|
requestRender: context.requestRender,
|
|
448
430
|
handleEscape: context.handleEscape,
|
|
@@ -458,7 +440,6 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
458
440
|
context.commandMode = commandState.commandMode;
|
|
459
441
|
context.prompt = commandState.prompt;
|
|
460
442
|
context.cursorPos = commandState.cursorPos;
|
|
461
|
-
context.panelFocused = commandState.panelFocused;
|
|
462
443
|
context.nextPasteId = commandState.nextPasteId;
|
|
463
444
|
context.nextImageId = commandState.nextImageId;
|
|
464
445
|
continue;
|
|
@@ -480,7 +461,7 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
480
461
|
autocomplete: context.autocomplete,
|
|
481
462
|
blockActionsMenu: { open: (block: BlockMeta) => context.blockActionsMenu.open(block) },
|
|
482
463
|
getBlockAnchorLine: () => getViewportBottomLine(scrollTop, viewportHeight, lineCount),
|
|
483
|
-
|
|
464
|
+
openAgentsView,
|
|
484
465
|
modalOpened: context.modalOpened,
|
|
485
466
|
saveUndoState: context.saveUndoState,
|
|
486
467
|
breakUndoCoalesce: context.breakUndoCoalesce,
|
|
@@ -509,8 +490,6 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
509
490
|
const mouseRoute = handleMouseToken({
|
|
510
491
|
conversationManager: context.conversationManager,
|
|
511
492
|
selection: context.selection,
|
|
512
|
-
panelManager: context.panelManager,
|
|
513
|
-
panelMouseLayout: context.panelMouseLayout,
|
|
514
493
|
mouseDownRow: context.mouseDownRow,
|
|
515
494
|
mouseDownCol: context.mouseDownCol,
|
|
516
495
|
scrollTop,
|
|
@@ -520,6 +499,9 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
520
499
|
requestRender: context.requestRender,
|
|
521
500
|
handlePaste: context.handlePaste,
|
|
522
501
|
handleCopy: context.handleCopy,
|
|
502
|
+
footerTargetAt: context.footerTargetAt,
|
|
503
|
+
openFooterTarget: context.openFooterTarget,
|
|
504
|
+
bodyTopRow: context.bodyTopRow,
|
|
523
505
|
}, token);
|
|
524
506
|
context.mouseDownRow = mouseRoute.mouseDownRow;
|
|
525
507
|
context.mouseDownCol = mouseRoute.mouseDownCol;
|
|
@@ -531,12 +513,3 @@ export function feedInputTokens(context: InputFeedContext, tokens: readonly Inpu
|
|
|
531
513
|
|
|
532
514
|
context.requestRender();
|
|
533
515
|
}
|
|
534
|
-
|
|
535
|
-
export function defaultPanelInputConsumer(
|
|
536
|
-
panelManager: PanelManager,
|
|
537
|
-
activePanel: Panel | null,
|
|
538
|
-
key: string,
|
|
539
|
-
commandContext?: CommandContext,
|
|
540
|
-
): void {
|
|
541
|
-
handlePanelIntegrationAction(panelManager, activePanel, key, commandContext);
|
|
542
|
-
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { activeTokens } from '../renderer/theme.ts';
|
|
1
2
|
import { buildProviderAccountSnapshot } from '@/runtime/index.ts';
|
|
2
3
|
import { enrichProviderAccountsSnapshot } from '../runtime/onboarding/provider-key-capture.ts';
|
|
3
4
|
import type { OnboardingWizardMode } from './onboarding/onboarding-wizard.ts';
|
|
@@ -91,7 +92,7 @@ export function handlePasteForHandler(handler: InputHandler): ReturnType<typeof
|
|
|
91
92
|
handler.nextPasteId = result.nextPasteId;
|
|
92
93
|
|
|
93
94
|
if (!result.pasted) {
|
|
94
|
-
handler.conversationManager?.log('[Paste: clipboard does not contain supported text or image data]', { fg:
|
|
95
|
+
handler.conversationManager?.log('[Paste: clipboard does not contain supported text or image data]', { fg: activeTokens().textFaint });
|
|
95
96
|
handler.requestRender();
|
|
96
97
|
}
|
|
97
98
|
return result;
|
|
@@ -270,12 +271,14 @@ export function handleEscapeForHandler(handler: InputHandler): void {
|
|
|
270
271
|
modelPicker: handler.modelPicker,
|
|
271
272
|
filePicker: handler.filePicker,
|
|
272
273
|
blockActionsMenu: handler.blockActionsMenu,
|
|
274
|
+
surfaceModals: handler.surfaceModals,
|
|
275
|
+
sessionView: handler.sessionView ?? undefined,
|
|
276
|
+
transcriptScroll: handler.transcriptScroll ?? undefined,
|
|
273
277
|
selectionModal: handler.selectionModal,
|
|
274
278
|
onboardingWizard: handler.onboardingWizard,
|
|
275
279
|
commandMode: handler.commandMode,
|
|
276
280
|
modalStack: handler.modalStack,
|
|
277
281
|
modalReturnFocus: handler.modalReturnFocus,
|
|
278
|
-
panelFocused: handler.panelFocused,
|
|
279
282
|
indicatorFocused: handler.indicatorFocused,
|
|
280
283
|
prompt: handler.prompt,
|
|
281
284
|
cursorPos: handler.cursorPos,
|
|
@@ -298,7 +301,6 @@ export function handleEscapeForHandler(handler: InputHandler): void {
|
|
|
298
301
|
handler.shortcutsOverlayActive = result.shortcutsOverlayActive;
|
|
299
302
|
handler.shortcutsScrollOffset = result.shortcutsScrollOffset;
|
|
300
303
|
handler.selectionCallback = result.selectionCallback;
|
|
301
|
-
handler.panelFocused = result.panelFocused;
|
|
302
304
|
handler.indicatorFocused = result.indicatorFocused;
|
|
303
305
|
handler.modalReturnFocus = result.modalReturnFocus;
|
|
304
306
|
}
|