mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 09:27:29 +00:00
refactor(renderer): group startup platform and runtime owners (#40777)
* refactor(renderer): group startup platform and runtime owners * refactor(renderer): reconcile imports and retained validation metadata * test: clear runtime pairing revisions between repo generation cases
This commit is contained in:
@@ -29,7 +29,6 @@ on:
|
||||
- 'src/main/codex-usage/scanner-incremental-append.test.ts'
|
||||
- 'src/main/usage/jsonl-file-reader.test.ts'
|
||||
- 'src/main/usage/jsonl-file-snapshot.test.ts'
|
||||
- 'src/renderer/src/lib/pane-manager/pane-terminal-output-scheduler-queue-retention.test.ts'
|
||||
- 'src/main/claude-usage/scanner-incremental-append.test.ts'
|
||||
- 'src/main/claude-usage/store-checkpoint-persistence.test.ts'
|
||||
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
3 test-no-in-test-import-actual:src/renderer/src/components/terminal-pane/snapshots/remote-snapshot-alt-screen-host-chain.test.ts
|
||||
1 test-no-in-test-import-actual:src/renderer/src/hooks/useIpcEvents-agent-status-pane-teardown.test.ts
|
||||
1 test-no-in-test-import-actual:src/renderer/src/hooks/useIpcEvents-agent-status-snapshot-hydration.test.ts
|
||||
1 test-no-in-test-import-actual:src/renderer/src/lib/agent-session/launch/new-tab/agent-launch-caller-routing.test.ts
|
||||
1 test-no-polling-loop:src/main/browser/cookies/browser-cookie-import-concurrency.test.ts
|
||||
1 test-no-polling-loop:src/main/claude/claude-stop-ack-race.test.ts
|
||||
1 test-no-polling-loop:src/main/claude/claude-stream-json-connection.test.ts
|
||||
@@ -635,7 +634,7 @@
|
||||
1 test-no-wall-clock:src/renderer/src/components/native-chat/session/structured/delivery/NativeChatMessageList.unsent-message.test.tsx
|
||||
3 test-no-wall-clock:src/renderer/src/components/native-chat/surfaces/integration/NativeChatMessageList.test.tsx
|
||||
2 test-no-wall-clock:src/renderer/src/components/native-chat/tools/tasks/NativeChatStructuredSessionStatus.test.tsx
|
||||
3 test-no-wall-clock:src/renderer/src/components/sidebar/workspace-card/review/use-workspace-reference-details.test.tsx
|
||||
1 test-no-wall-clock:src/renderer/src/components/sidebar/workspace-card/review/use-workspace-reference-details.test.tsx
|
||||
1 test-no-wall-clock:src/renderer/src/components/sidebar/worktree-list/listing/WorktreeList.lineage-agent-expansion-coupling.test.tsx
|
||||
2 test-no-wall-clock:src/renderer/src/components/task-page/jira/task-page-jira-cache-selectors.test.ts
|
||||
2 test-no-wall-clock:src/renderer/src/components/terminal-pane/pty-connection/emulation/fish-color-scheme-child-stdin.node-pty.test.ts
|
||||
@@ -645,7 +644,6 @@
|
||||
1 test-no-wall-clock:src/renderer/src/components/worktree-jump/WorktreeJumpPalette.recent-tabs.behavior.test.tsx
|
||||
4 test-no-wall-clock:src/renderer/src/components/worktree-jump/WorktreeJumpPalette.recent-tabs.test.tsx
|
||||
2 test-no-wall-clock:src/renderer/src/hooks/ipc-events/agent-status-terminal-title-tab-write.test.ts
|
||||
1 test-no-wall-clock:src/renderer/src/hooks/useIpcEvents-agent-status-hook-titles.test.ts
|
||||
1 test-no-wall-clock:src/renderer/src/lib/paired-runtime-closed-tab-resume.test.ts
|
||||
2 test-no-wall-clock:src/renderer/src/lib/use-tab-agent-observed-signal-dispatch.test.tsx
|
||||
2 test-no-wall-clock:src/renderer/src/lib/wake-sleeping-agents-live-unmounted-pane.test.ts
|
||||
|
||||
@@ -707,7 +707,7 @@
|
||||
6 src/renderer/src/hooks/useVirtualizedScrollAnchor.ts
|
||||
1 src/renderer/src/lib/agent-session/launch/inventory/host-chat-program-acquisition.ts
|
||||
1 src/renderer/src/lib/files/search/quick-open-file-history.ts
|
||||
2 src/renderer/src/lib/worker-auto-close.ts
|
||||
2 src/renderer/src/runtime/agent-orchestration/worker-auto-close.ts
|
||||
1 src/renderer/src/runtime/native-chat/naming/structured-chat-name-observation.ts
|
||||
1 src/renderer/src/store/plugins/appearance/plugin-icon-themes.ts
|
||||
5 src/renderer/src/store/retained-views/app-state-view.ts
|
||||
|
||||
@@ -85,9 +85,9 @@
|
||||
1 src/renderer/src/components/terminal-pane/render-health/terminal-render-desync-sentinel.ts
|
||||
1 src/renderer/src/hooks/use-now.ts
|
||||
1 src/renderer/src/lib/agent-session/hibernation/agent-hibernation-coordinator.ts
|
||||
1 src/renderer/src/lib/crash-diagnostics.ts
|
||||
1 src/renderer/src/lib/window-visibility-interval.ts
|
||||
1 src/renderer/src/lib/worker-auto-close.ts
|
||||
1 src/renderer/src/diagnostics/crash-reporting/crash-diagnostics.ts
|
||||
1 src/renderer/src/lib/window-activity/window-visibility-interval.ts
|
||||
1 src/renderer/src/runtime/agent-orchestration/worker-auto-close.ts
|
||||
1 src/renderer/src/runtime/hosts/wsl/wsl-refused-read-watch.ts
|
||||
1 src/shared/remote-runtime/control/remote-runtime-shared-control-app-heartbeat.ts
|
||||
1 src/shared/remote-runtime/remote-runtime-socket-liveness.ts
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -4622,11 +4622,9 @@
|
||||
"src/preload/usage-provider-api.test.ts": 46,
|
||||
"src/renderer/src/app-shell/app-command-handlers-tab-rename.test.ts": 1786,
|
||||
"src/renderer/src/app-shell/shutdown-checkpoint-persist.test.ts": 65,
|
||||
"src/renderer/src/app-shell/shutdown-checkpoint-restart-lifecycle.test.ts": 210,
|
||||
"src/renderer/src/app-shell/startup-window-parity.test.ts": 2306,
|
||||
"src/renderer/src/app-shell/use-profile-state-save-delay-notice.sonner.test.tsx": 355,
|
||||
"src/renderer/src/app-shell/use-profile-state-save-delay-notice.test.tsx": 293,
|
||||
"src/renderer/src/app-shell/use-visible-hosted-review-refresh.test.tsx": 572,
|
||||
"src/renderer/src/app-shell/visible-review-reporting.test.ts": 1872,
|
||||
"src/renderer/src/app-shell/workspace-view-cross-client-sync.test.tsx": 1170,
|
||||
"src/renderer/src/app-shell/worktree-creation-chat-handoff.test.tsx": 2824,
|
||||
@@ -4711,7 +4709,6 @@
|
||||
"src/renderer/src/components/automations/runs/use-automation-runs-dashboard.test.tsx": 854,
|
||||
"src/renderer/src/components/automations/use-selected-automation-run-history.test.tsx": 2104,
|
||||
"src/renderer/src/components/browser-favicon.test.tsx": 333,
|
||||
"src/renderer/src/components/browser-pane/ClientHostedBrowserPagePane.dead-guest.test.tsx": 6219,
|
||||
"src/renderer/src/components/browser-pane/ClientHostedBrowserPagePane.drag-focus.test.tsx": 5826,
|
||||
"src/renderer/src/components/browser-pane/ClientHostedBrowserPagePane.failure-remount.test.tsx": 3085,
|
||||
"src/renderer/src/components/browser-pane/ClientHostedBrowserPagePane.markup.test.tsx": 4575,
|
||||
@@ -4808,7 +4805,6 @@
|
||||
"src/renderer/src/components/dashboard-popout/preview-terminal-box-fit-lifecycle.test.ts": 192,
|
||||
"src/renderer/src/components/dashboard-popout/preview-terminal-ime-bridge-kitty-bytes.test.ts": 479,
|
||||
"src/renderer/src/components/dashboard-popout/remote-runtime-terminal-preview-api.test.ts": 81,
|
||||
"src/renderer/src/components/dashboard-popout/use-agent-dashboard-telemetry.test.ts": 2108,
|
||||
"src/renderer/src/components/dashboard-popout/useDashboardSnapshot.test.tsx": 432,
|
||||
"src/renderer/src/components/dashboard/AgentDashboardDrawer.focus.test.tsx": 2567,
|
||||
"src/renderer/src/components/dashboard/AgentDashboardDrawer.test.tsx": 1981,
|
||||
@@ -4830,14 +4826,11 @@
|
||||
"src/renderer/src/components/diff-comments/diff-comment-popover-outside-click.test.tsx": 1889,
|
||||
"src/renderer/src/components/diff-comments/useDiffCommentDecorator.lifecycle.test.tsx": 2669,
|
||||
"src/renderer/src/components/diff-comments/useDiffCommentDecorator.range-selection.test.tsx": 1782,
|
||||
"src/renderer/src/components/editor/check-details/panel/CheckRunDetailsPanel.captured-failure.test.tsx": 2412,
|
||||
"src/renderer/src/components/editor/check-details/panel/CheckRunDetailsPanel.copy.test.tsx": 3108,
|
||||
"src/renderer/src/components/editor/check-details/panel/CheckRunDetailsPanel.log-outcomes.test.tsx": 3230,
|
||||
"src/renderer/src/components/editor/DiagramViewerModal.test.tsx": 2539,
|
||||
"src/renderer/src/components/editor/diff/sections/DiffSectionBody.word-wrap-lifecycle.test.tsx": 3036,
|
||||
"src/renderer/src/components/editor/diff/monaco-view/DiffViewer.word-wrap-lifecycle.test.tsx": 2499,
|
||||
"src/renderer/src/components/editor/EditorConflictReviewSurface.live-record.test.tsx": 1193,
|
||||
"src/renderer/src/components/editor/EditorContent.monaco-lifecycle.test.tsx": 3162,
|
||||
"src/renderer/src/components/editor/EditorEditFileSurface.monaco-containment.test.tsx": 2666,
|
||||
"src/renderer/src/components/editor/EditorFileLoadErrorView.test.tsx": 660,
|
||||
"src/renderer/src/components/editor/EditorFileLocationMenuItems.test.tsx": 846,
|
||||
@@ -4849,17 +4842,13 @@
|
||||
"src/renderer/src/components/editor/notebook/document/IpynbRendering.test.tsx": 2143,
|
||||
"src/renderer/src/components/editor/markdown-preview/surface/MarkdownPreview.link-routing.interaction.test.tsx": 1127,
|
||||
"src/renderer/src/components/editor/MediaViewer.test.tsx": 308,
|
||||
"src/renderer/src/components/editor/MermaidViewer.test.tsx": 3079,
|
||||
"src/renderer/src/components/editor/MonacoEditor.owner-view-state.test.tsx": 7073,
|
||||
"src/renderer/src/components/editor/PdfFind.test.tsx": 581,
|
||||
"src/renderer/src/components/editor/PluginBytesCustomEditorSurface.test.tsx": 641,
|
||||
"src/renderer/src/components/editor/PluginEditorNeedsDesktopNotice.test.tsx": 2107,
|
||||
"src/renderer/src/components/editor/PluginFileTypeSuggestion.test.tsx": 2062,
|
||||
"src/renderer/src/components/editor/rich-markdown/instance/RichMarkdownEditor.focus-leave.test.tsx": 4927,
|
||||
"src/renderer/src/components/editor/rich-markdown/instance/RichMarkdownErrorBoundary.lazy-chunk.test.tsx": 367,
|
||||
"src/renderer/src/components/editor/ai-vault-session-log-content.test.tsx": 1899,
|
||||
"src/renderer/src/components/editor/check-details/actions/check-annotation-path.test.ts": 53,
|
||||
"src/renderer/src/components/editor/check-details/reading/check-details-reading-viewport.test.ts": 259,
|
||||
"src/renderer/src/components/editor/model-lifetime/retention/closed-editor-model-lifetime.test.ts": 7921,
|
||||
"src/renderer/src/components/editor/model-lifetime/retention/closed-editor-model-shell.test.tsx": 4492,
|
||||
"src/renderer/src/components/editor/model-lifetime/retention/closed-editor-tab-disposal.test.ts": 121,
|
||||
@@ -4963,7 +4952,6 @@
|
||||
"src/renderer/src/components/editor/monaco-programmatic-sync.test.ts": 46,
|
||||
"src/renderer/src/components/editor/pdf-orca-media-range-transport.test.ts": 282,
|
||||
"src/renderer/src/components/editor/pdf-view-position.test.ts": 74,
|
||||
"src/renderer/src/components/editor/pdf-viewer-failed-load-recovery.test.tsx": 2363,
|
||||
"src/renderer/src/components/editor/pdf-viewer-zoom-ownership.test.tsx": 789,
|
||||
"src/renderer/src/components/editor/plugin-custom-editor-host.test.ts": 480,
|
||||
"src/renderer/src/components/editor/rich-markdown/raw-source/raw-markdown-html-line-break.test.ts": 2188,
|
||||
@@ -5034,7 +5022,6 @@
|
||||
"src/renderer/src/components/editor/use-monaco-editor-mount.cursor-owner.test.tsx": 1332,
|
||||
"src/renderer/src/components/editor/use-monaco-editor-mount.stale-cache.test.tsx": 877,
|
||||
"src/renderer/src/components/editor/use-monaco-reveal-scheduler.test.tsx": 273,
|
||||
"src/renderer/src/components/editor/use-pdf-viewer-find-shortcut.test.tsx": 907,
|
||||
"src/renderer/src/components/editor/use-preserve-section-during-external-edit.test.tsx": 268,
|
||||
"src/renderer/src/components/editor/rich-markdown/tables/use-rich-markdown-table-context-menu.test.tsx": 2238,
|
||||
"src/renderer/src/components/editor/external-changes/useEditorPanelExternalContentEvents.test.tsx": 2018,
|
||||
@@ -5042,7 +5029,6 @@
|
||||
"src/renderer/src/components/editor/useEditorPanelHostUnresolvedContentState.test.tsx": 1952,
|
||||
"src/renderer/src/components/editor/notebook/kernel/useIpynbCellExecution.test.tsx": 695,
|
||||
"src/renderer/src/components/editor/notebook/document/useIpynbDocumentEditing.test.tsx": 2192,
|
||||
"src/renderer/src/components/editor/notebook/document/useIpynbScrollRestoration.test.tsx": 323,
|
||||
"src/renderer/src/components/editor/rich-markdown/links/useLinkBubble.test.tsx": 493,
|
||||
"src/renderer/src/components/editor/rich-markdown/images/useLocalImagePick.test.tsx": 1319,
|
||||
"src/renderer/src/components/editor/document-images/useLocalImageSrc.test.ts": 736,
|
||||
@@ -5066,11 +5052,7 @@
|
||||
"src/renderer/src/components/emulator-pane/emulator-screen-stream-content.test.tsx": 408,
|
||||
"src/renderer/src/components/emulator-pane/use-emulator-pane-session.test.tsx": 1968,
|
||||
"src/renderer/src/components/emulator-pane/use-mobile-emulator-tab-intro-actions.test.tsx": 1828,
|
||||
"src/renderer/src/components/error-boundaries/RecoverableRenderErrorBoundary.lazy-chunk.test.tsx": 451,
|
||||
"src/renderer/src/components/error-boundaries/RecoverableRenderErrorBoundary.never-landed-reload.test.tsx": 449,
|
||||
"src/renderer/src/components/feature-tips/ChatUiHereCornerCard.test.tsx": 2798,
|
||||
"src/renderer/src/components/feature-tips/ChatUiHereFeatureTipVisual.test.tsx": 1093,
|
||||
"src/renderer/src/components/feature-tips/ChatUiHereTip.test.tsx": 6788,
|
||||
"src/renderer/src/components/feature-tips/feature-tip-modal-state.test.ts": 244,
|
||||
"src/renderer/src/components/feature-wall/FeatureWallSetupWorkflowActions.test.tsx": 2028,
|
||||
"src/renderer/src/components/feature-wall/FullDiskAccessSetupPrompt.test.ts": 466,
|
||||
@@ -5215,7 +5197,6 @@
|
||||
"src/renderer/src/components/native-chat/attachments/intake/native-chat-composer-drop-scope.test.tsx": 1409,
|
||||
"src/renderer/src/components/native-chat/attachments/intake/native-chat-composer-ime-file-drop.test.tsx": 1326,
|
||||
"src/renderer/src/components/native-chat/drafts/native-chat-composer-prompt-recall.test.tsx": 1724,
|
||||
"src/renderer/src/components/native-chat/composer/focus/native-chat-composer-reveal-focus.test.tsx": 526,
|
||||
"src/renderer/src/components/native-chat/attachments/intake/native-chat-composer-workspace-file-drop.test.tsx": 1166,
|
||||
"src/renderer/src/components/native-chat/drafts/native-chat-draft-retention.test.ts": 1415,
|
||||
"src/renderer/src/components/native-chat/attachments/intake/native-chat-external-attachments-destination.test.tsx": 951,
|
||||
@@ -5279,7 +5260,6 @@
|
||||
"src/renderer/src/components/native-chat/conversation/projection/use-native-chat-context-clear-floor.test.tsx": 271,
|
||||
"src/renderer/src/components/native-chat/pane/actions/use-native-chat-context-menu.targets.test.tsx": 3071,
|
||||
"src/renderer/src/components/native-chat/attachments/intake/use-native-chat-external-attachments.test.tsx": 797,
|
||||
"src/renderer/src/components/native-chat/viewport/find/use-native-chat-find.test.tsx": 1458,
|
||||
"src/renderer/src/components/native-chat/session/status/use-native-chat-hook-status.test.ts": 1927,
|
||||
"src/renderer/src/components/native-chat/host-access/use-native-chat-host-outage.test.tsx": 2131,
|
||||
"src/renderer/src/components/native-chat/drafts/use-native-chat-launch-draft-adoption.test.tsx": 319,
|
||||
@@ -5328,7 +5308,6 @@
|
||||
"src/renderer/src/components/new-workspace/use-recent-project-ids.test.ts": 1730,
|
||||
"src/renderer/src/components/new-workspace/use-smart-workspace-name-field-foundation.source.test.tsx": 2290,
|
||||
"src/renderer/src/components/new-workspace/work-item-source-selection.test.ts": 1736,
|
||||
"src/renderer/src/components/onboarding/OnboardingInlineCommandTerminal.command-finished.test.tsx": 681,
|
||||
"src/renderer/src/components/onboarding/OnboardingLanguageLoading.test.tsx": 2167,
|
||||
"src/renderer/src/components/onboarding/onboarding-feature-setup.test.ts": 76,
|
||||
"src/renderer/src/components/pet/pet-blob-cache.test.ts": 64,
|
||||
@@ -5392,7 +5371,6 @@
|
||||
"src/renderer/src/components/right-sidebar/ai-vault/scanning/ai-vault-panel-session-list-request.test.tsx": 3044,
|
||||
"src/renderer/src/components/right-sidebar/ai-vault/search/ai-vault-search-session.test.ts": 201,
|
||||
"src/renderer/src/components/right-sidebar/ai-vault/accounts/ai-vault-session-account-render.test.tsx": 2885,
|
||||
"src/renderer/src/components/right-sidebar/ai-vault/scanning/ai-vault-session-conditional-refresh-hook.test.tsx": 2370,
|
||||
"src/renderer/src/components/right-sidebar/ai-vault/session-list/ai-vault-session-filters.test.ts": 105,
|
||||
"src/renderer/src/components/right-sidebar/ai-vault/scope/ai-vault-session-projects.test.ts": 117,
|
||||
"src/renderer/src/components/right-sidebar/ai-vault/scanning/ai-vault-session-refresh.test.ts": 2034,
|
||||
@@ -5408,7 +5386,6 @@
|
||||
"src/renderer/src/components/right-sidebar/checks-panel/gitlab-review-client.test.ts": 321,
|
||||
"src/renderer/src/components/right-sidebar/checks-panel/comments/review-comment-markdown.test.tsx": 2171,
|
||||
"src/renderer/src/components/right-sidebar/checks-panel/refresh/use-checks-panel-manual-refresh-recovery.test.tsx": 2909,
|
||||
"src/renderer/src/components/right-sidebar/checks-panel/refresh/use-checks-panel-polling.test.tsx": 2189,
|
||||
"src/renderer/src/lib/repository-refresh/coalesced-poll-runner.test.ts": 61,
|
||||
"src/renderer/src/components/right-sidebar/file-explorer/mutations/file-explorer-delete-undo-precondition.test.tsx": 2023,
|
||||
"src/renderer/src/components/right-sidebar/file-explorer/tree/file-explorer-dir-pages.test.ts": 1767,
|
||||
@@ -5430,7 +5407,6 @@
|
||||
"src/renderer/src/components/right-sidebar/plugin-panels/health/plugin-panel-watchdog.test.ts": 116,
|
||||
"src/renderer/src/components/right-sidebar/checks-panel/comments/pr-comments-ai-launch-ack.test.ts": 118,
|
||||
"src/renderer/src/components/right-sidebar/checks-panel/comments/pr-comments-list-selection.test.tsx": 3290,
|
||||
"src/renderer/src/components/right-sidebar/right-sidebar-titlebar-drag-regions.render.test.tsx": 1044,
|
||||
"src/renderer/src/components/right-sidebar/source-control/ai/runSourceControlAgentActionStart.test.ts": 1917,
|
||||
"src/renderer/src/components/right-sidebar/source-control/review/source-control-create-pr-intent-flow.test.ts": 71,
|
||||
"src/renderer/src/components/right-sidebar/source-control/review/source-control-manual-review-url.test.ts": 77,
|
||||
@@ -5475,7 +5451,6 @@
|
||||
"src/renderer/src/components/settings/browser/BrowserSitePermissionsSetting.test.tsx": 739,
|
||||
"src/renderer/src/components/settings/browser/BrowserUserAgentSetting.test.tsx": 2325,
|
||||
"src/renderer/src/components/settings/chat/ChatNamingSetting.test.tsx": 2454,
|
||||
"src/renderer/src/components/settings/chat/ChatPermissionSetting.test.tsx": 834,
|
||||
"src/renderer/src/components/settings/chat/ChatSettingsSection.test.tsx": 2718,
|
||||
"src/renderer/src/lib/skills/runtime/skill-runtime-command.test.ts": 1670,
|
||||
"src/renderer/src/components/settings/virtual-machines/recipes/EphemeralVmsPane.test.tsx": 1025,
|
||||
@@ -5488,7 +5463,6 @@
|
||||
"src/renderer/src/components/settings/advanced/network/NodeDistMirrorDialog.test.tsx": 2412,
|
||||
"src/renderer/src/components/plugins/list/PluginsSettingsSection.lifecycle.test.tsx": 5402,
|
||||
"src/renderer/src/components/settings/runtime-environments/pairing/RuntimePairingGeneratorForm.test.tsx": 461,
|
||||
"src/renderer/src/components/settings/session-history/SessionHistorySettingsPane.test.tsx": 1474,
|
||||
"src/renderer/src/components/settings/appearance/fonts/FontAutocomplete.test.tsx": 1202,
|
||||
"src/renderer/src/components/settings/form-controls/SettingsFormControls.segmented-control.test.tsx": 730,
|
||||
"src/renderer/src/components/settings/shortcuts/ShortcutFilterRail.test.ts": 273,
|
||||
@@ -5503,7 +5477,6 @@
|
||||
"src/renderer/src/components/settings/TerminalAppearanceSection.ghostty.test.ts": 549,
|
||||
"src/renderer/src/components/settings/terminal/appearance/TerminalContrastSetting.test.tsx": 798,
|
||||
"src/renderer/src/components/settings/terminal/session-management/TerminalLimitSetting.test.tsx": 1015,
|
||||
"src/renderer/src/components/settings/terminal/TerminalPane.section-lifetime.test.tsx": 1237,
|
||||
"src/renderer/src/components/settings/developer-permissions/TerminalTccAttributionNotice.test.tsx": 401,
|
||||
"src/renderer/src/components/settings/voice/VoiceMicrophoneSetting.test.tsx": 957,
|
||||
"src/renderer/src/components/settings/voice/VoicePane.test.tsx": 1042,
|
||||
@@ -5538,7 +5511,6 @@
|
||||
"src/renderer/src/components/session-search/use-session-search-status.test.tsx": 477,
|
||||
"src/renderer/src/components/settings/accounts/usage/use-zcode-plan-credentials.test.tsx": 880,
|
||||
"src/renderer/src/components/setup-guide/SetupGuideModal.mount-gating.test.tsx": 2348,
|
||||
"src/renderer/src/components/shared/MacFolderAccessFixDialog.test.tsx": 1356,
|
||||
"src/renderer/src/components/shared/kill-all-terminal-surfaces.test.ts": 1925,
|
||||
"src/renderer/src/components/shared/useDaemonActions.test.tsx": 332,
|
||||
"src/renderer/src/components/sidebar/host-admission/ssh/AddRemoteHostDialog.config-picker.test.tsx": 1178,
|
||||
@@ -5560,7 +5532,6 @@
|
||||
"src/renderer/src/components/sidebar/SeveredTerminalDaemonBanner.test.tsx": 574,
|
||||
"src/renderer/src/components/sidebar/Sidebar.test.tsx": 833,
|
||||
"src/renderer/src/components/sidebar/SidebarAgentsList.test.tsx": 2985,
|
||||
"src/renderer/src/components/sidebar/sidebar-feedback/SidebarFeedbackDialog.test.tsx": 2529,
|
||||
"src/renderer/src/components/sidebar/StalledTerminalDaemonBanner.test.tsx": 320,
|
||||
"src/renderer/src/components/sidebar/workspace-board/viewport/WorkspaceKanbanLaneGrid.test.tsx": 360,
|
||||
"src/renderer/src/components/sidebar/workspace-card/surface/WorktreeCard.single-reference-details.test.tsx": 2032,
|
||||
@@ -5663,7 +5634,6 @@
|
||||
"src/renderer/src/components/stats/usage-daily-chart.test.tsx": 333,
|
||||
"src/renderer/src/components/stats/usage-overview-model.test.ts": 364,
|
||||
"src/renderer/src/components/status-bar/ClaudeSwitcherMenu.owner-lifetime.test.tsx": 2317,
|
||||
"src/renderer/src/components/status-bar/PortsStatusSegment.render-stability.test.tsx": 2161,
|
||||
|
||||
"src/renderer/src/components/status-bar/SshStatusSegment.large-host-list.test.tsx": 1838,
|
||||
"src/renderer/src/components/status-bar/StatusBarUsageChangeNotices.test.tsx": 785,
|
||||
@@ -5685,7 +5655,6 @@
|
||||
"src/renderer/src/components/status-bar/use-resource-pty-actions.test.tsx": 879,
|
||||
"src/renderer/src/components/status-bar/use-resource-usage-derived-model.test.tsx": 742,
|
||||
"src/renderer/src/components/tab-bar/CopyTabIdMenuItem.test.tsx": 428,
|
||||
"src/renderer/src/components/tab-bar/NativeChatNamingFailure.test.tsx": 1062,
|
||||
"src/renderer/src/components/tab-bar/TabBarCreateEntry.search.test.tsx": 3224,
|
||||
"src/renderer/src/components/tab-bar/TabBarItemRow.test.tsx": 2116,
|
||||
"src/renderer/src/components/tab-bar/TabBarQuickCommandItem.test.tsx": 384,
|
||||
@@ -5808,7 +5777,6 @@
|
||||
"src/renderer/src/components/terminal-pane/layout/close/pending-pane-close-confirmation.test.ts": 4695,
|
||||
"src/renderer/src/components/terminal-pane/layout/close/pending-runtime-pane-close.test.ts": 3487,
|
||||
"src/renderer/src/components/terminal-pane/layout/close/pending-split-close.test.ts": 4680,
|
||||
"tests/e2e/terminal-agent-pane-launch.unit.test.ts": 8045,
|
||||
"src/renderer/src/components/terminal-pane/snapshots/pty-buffer-serializer.test.ts": 53,
|
||||
"src/renderer/src/components/terminal-pane/pty-connection/agent-identity/pty-connection-command-finished-late-done.test.ts": 10940,
|
||||
"src/renderer/src/components/terminal-pane/pty-connection/tests/pty-connection-completion-and-notification.test.ts": 18380,
|
||||
@@ -5856,7 +5824,6 @@
|
||||
"src/renderer/src/components/terminal-pane/pty-connection/host-ownership/unserved-ssh-pane-bridge.test.ts": 70,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/delivery/pty-dispatcher-delivery-resync.test.ts": 85,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/delivery/pty-dispatcher-pi-routing.test.ts": 1362,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/delivery/pty-dispatcher-push-reattach.test.ts": 108,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/input/pty-input-write-queue.test.ts": 787,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/delivery/pty-model-restore-channel.test.ts": 44,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/output/pty-output-processor-program-activity.test.ts": 160,
|
||||
@@ -5893,7 +5860,6 @@
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-query-reply-immediate.test.ts": 1556,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/recovery/remote-runtime-pty-recovery-state.test.ts": 85,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-transport-activation-inventory-fallback.test.ts": 1311,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-transport-attach-subscription.test.ts": 2346,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-transport-create-handoff.test.ts": 14353,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-transport-create-outcome-recovery.test.ts": 2041,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/remote-runtime/remote-runtime-pty-transport-empty-initial-snapshot.test.ts": 1491,
|
||||
@@ -5994,10 +5960,8 @@
|
||||
"src/renderer/src/components/terminal-pane/layout/reconciliation/terminal-pane-frame-reconciliation.test.ts": 903,
|
||||
"src/renderer/src/components/terminal-pane/host-state/terminal-pane-host-state-memo.test.ts": 4534,
|
||||
"src/renderer/src/components/terminal-pane/mounting/terminal-pane-mount-bootstrap.test.ts": 1723,
|
||||
"src/renderer/src/components/terminal-pane/render-health/recovery/terminal-pane-recovery-unsettled-fallback.test.ts": 831,
|
||||
"src/renderer/src/components/terminal-pane/render-health/recovery/terminal-pane-recovery.test.ts": 949,
|
||||
"src/renderer/src/components/terminal-pane/layout/split/terminal-pane-split-request-routing.test.ts": 2015,
|
||||
"src/renderer/src/components/terminal-pane/pty-transport/recovery/terminal-pane-surface-ownership.test.ts": 426,
|
||||
"src/renderer/src/components/terminal-pane/layout/detach/terminal-pane-tab-detach-main-commit.test.ts": 2090,
|
||||
"src/renderer/src/components/terminal-pane/layout/detach/terminal-pane-tab-detach-main-move.test.ts": 2147,
|
||||
"src/renderer/src/components/terminal-pane/parking/verdict/terminal-park-verdict-flip-telemetry.test.ts": 123,
|
||||
@@ -6187,7 +6151,6 @@
|
||||
"src/renderer/src/hooks/useImmediateMutation.test.ts": 618,
|
||||
"src/renderer/src/hooks/skills/discovery/useInstalledAgentSkills.react.test.tsx": 2093,
|
||||
"src/renderer/src/hooks/useIpcEvents-agent-status-connection-attribution.test.ts": 5510,
|
||||
"src/renderer/src/hooks/useIpcEvents-agent-status-hook-titles.test.ts": 5621,
|
||||
"src/renderer/src/hooks/useIpcEvents-agent-status-pane-teardown.test.ts": 5268,
|
||||
"src/renderer/src/hooks/useIpcEvents-agent-status-queue-ordering.test.ts": 3680,
|
||||
"src/renderer/src/hooks/useIpcEvents-agent-status-snapshot-hydration.test.ts": 7403,
|
||||
@@ -6204,7 +6167,6 @@
|
||||
"src/renderer/src/hooks/useIpcEvents-runtime-environment-selectors.test.ts": 530,
|
||||
"src/renderer/src/hooks/useIpcEvents-session-tab-close-request.test.ts": 2252,
|
||||
"src/renderer/src/hooks/useIssueMetadata.test.tsx": 344,
|
||||
"src/renderer/src/hooks/useMacTccAttributionSeveredNotice.test.tsx": 2358,
|
||||
"src/renderer/src/hooks/useMetadataListRequest.test.tsx": 266,
|
||||
"src/renderer/src/hooks/useModalReturnFocus.test.tsx": 1938,
|
||||
"src/renderer/src/hooks/clipboard/primary-selection/usePrimarySelectionPaste.terminal-native-paste.test.tsx": 388,
|
||||
@@ -6240,8 +6202,6 @@
|
||||
"src/renderer/src/lib/agent-session/hibernation/agent-hibernation-pane-age.test.ts": 41,
|
||||
"src/renderer/src/lib/agent-session/hibernation/agent-hibernation-planner.test.ts": 341,
|
||||
"src/renderer/src/lib/agent-session/hibernation/agent-hibernation-runtime-liveness-race.test.ts": 1914,
|
||||
"src/renderer/src/lib/agent-session/launch/new-tab/agent-launch-caller-prompt-transport.test.ts": 1326,
|
||||
"src/renderer/src/lib/agent-session/launch/new-tab/agent-launch-caller-routing.test.ts": 1266,
|
||||
"src/renderer/src/lib/agent-session/launch/pane/agent-launch-pane-verdict-application.test.ts": 1869,
|
||||
"src/renderer/src/lib/agent-session/launch/routing/agent-launch-route-input.test.ts": 1659,
|
||||
"src/renderer/src/lib/agent-session/launch/routing/agent-launch-route-registered-agents.test.ts": 1749,
|
||||
@@ -6312,7 +6272,6 @@
|
||||
"src/renderer/src/lib/source-control/review/comments/comment-body-submit-state.test.ts": 55,
|
||||
"src/renderer/src/lib/composer-submit-cancellation.test.ts": 41,
|
||||
"src/renderer/src/lib/workspace/ownership/connection-context.test.ts": 1817,
|
||||
"src/renderer/src/lib/crash-diagnostics.test.ts": 176,
|
||||
"src/renderer/src/lib/create-untitled-markdown.test.ts": 566,
|
||||
"src/renderer/src/lib/desktop-created-server-tabs.test.ts": 1933,
|
||||
"src/renderer/src/lib/workspace/ownership/direct-ssh-target-scope.test.ts": 48,
|
||||
@@ -6324,8 +6283,7 @@
|
||||
"src/renderer/src/runtime/repo-hooks/ensure-hooks-confirmed.test.ts": 799,
|
||||
"src/renderer/src/lib/simulator/tabs/ensure-simulator-tab-behavior.test.ts": 3601,
|
||||
"src/renderer/src/runtime/hosts/platform/execution-host-facts.test.ts": 1796,
|
||||
"src/renderer/src/lib/feature-education-telemetry.test.ts": 52,
|
||||
"src/renderer/src/lib/feedback-image-attachments.test.ts": 557,
|
||||
"src/renderer/src/components/sidebar/sidebar-feedback/feedback-image-attachments.test.ts": 557,
|
||||
"src/renderer/src/lib/files/search/file-search-selection.test.ts": 51,
|
||||
"src/renderer/src/lib/finished-agent-resume-resurrection.test.ts": 1872,
|
||||
"src/renderer/src/components/terminal-pane/parking/retention/foreground-terminal-tabs.test.ts": 55,
|
||||
@@ -6351,10 +6309,7 @@
|
||||
"src/renderer/src/lib/workspace/creation/work-item/launch-work-item-direct-accepted.test.tsx": 2754,
|
||||
"src/renderer/src/lib/workspace/creation/work-item/launch-work-item-direct-defaults.test.ts": 1594,
|
||||
"src/renderer/src/lib/workspace/creation/work-item/launch-work-item-direct-setup.test.tsx": 3435,
|
||||
"src/renderer/src/lib/lazy-chunk-recovery-reload.test.ts": 246,
|
||||
"src/renderer/src/lib/lazy-with-retry.never-landed-reload.test.ts": 194,
|
||||
"src/renderer/src/lib/lazy-with-retry.preload.test.tsx": 208,
|
||||
"src/renderer/src/lib/lazy-with-retry.test.ts": 282,
|
||||
"src/renderer/src/app-shell/startup/lazy-with-retry.never-landed-reload.test.ts": 194,
|
||||
"src/renderer/src/lib/work-items/linear/linear-board-drag-payload.test.ts": 58,
|
||||
"src/renderer/src/lib/work-items/linear/linear-issue-workspace-attachment.test.ts": 99,
|
||||
"src/renderer/src/lib/link-source-local-open-owner.test.ts": 433,
|
||||
@@ -6384,7 +6339,6 @@
|
||||
"src/renderer/src/lib/pane-manager/pane-cursor-blink-suspension.test.ts": 429,
|
||||
"src/renderer/src/lib/pane-manager/pane-drag-window-blur.test.ts": 618,
|
||||
"src/renderer/src/lib/pane-manager/pane-fit-resize-observer.test.ts": 94,
|
||||
"src/renderer/src/lib/pane-manager/pane-fit.test.ts": 166,
|
||||
"src/renderer/src/lib/pane-manager/pane-inline-image-recovery.test.ts": 61,
|
||||
"src/renderer/src/lib/pane-manager/pane-inline-images.test.ts": 74,
|
||||
"src/renderer/src/lib/pane-manager/pane-layout-geometry-apply.test.ts": 897,
|
||||
@@ -6394,11 +6348,6 @@
|
||||
"src/renderer/src/lib/pane-manager/pane-terminal-foreground-render-settle.test.ts": 43,
|
||||
"src/renderer/src/lib/pane-manager/pane-terminal-mouse-wheel.test.ts": 88,
|
||||
"src/renderer/src/lib/pane-manager/pane-terminal-output-queue-chunks.test.ts": 44,
|
||||
"src/renderer/src/lib/pane-manager/pane-terminal-output-scheduler-ack-credit.test.ts": 173,
|
||||
"src/renderer/src/lib/pane-manager/pane-terminal-output-scheduler-disposed-writes.test.ts": 121,
|
||||
"src/renderer/src/lib/pane-manager/pane-terminal-output-scheduler-queue-retention.test.ts": 301,
|
||||
"src/renderer/src/lib/pane-manager/pane-terminal-output-scheduler-synchronized-frames.test.ts": 213,
|
||||
"src/renderer/src/lib/pane-manager/pane-terminal-output-scheduler.test.ts": 236,
|
||||
"src/renderer/src/lib/pane-manager/pane-tree-equalization-parity.test.ts": 182,
|
||||
"src/renderer/src/lib/pane-manager/pane-tree-equalization-scaling.test.ts": 239,
|
||||
"src/renderer/src/lib/pane-manager/pane-tree-match-moves.test.ts": 662,
|
||||
@@ -6415,7 +6364,6 @@
|
||||
"src/renderer/src/lib/pane-manager/terminal-indic-cluster-ranges.test.ts": 50,
|
||||
"src/renderer/src/lib/pane-manager/terminal-kitty-file-reader.test.ts": 83,
|
||||
"src/renderer/src/lib/pane-manager/terminal-ligatures-addon.test.ts": 59,
|
||||
"src/renderer/src/lib/pane-manager/terminal-link-provider-guard.test.ts": 48,
|
||||
"src/renderer/src/lib/pane-manager/terminal-linkifier-hover-reset-on-write.test.ts": 59,
|
||||
"src/renderer/src/lib/pane-manager/terminal-mouse-encoding-tracker.test.ts": 95,
|
||||
"src/renderer/src/lib/pane-manager/terminal-mouse-report-finite-coordinates.test.ts": 272,
|
||||
@@ -6433,7 +6381,6 @@
|
||||
"src/renderer/src/lib/pane-manager/xterm-instance-disposed.test.ts": 57,
|
||||
"src/renderer/src/lib/pane-manager/xterm-parse-barrier.test.ts": 154,
|
||||
"src/renderer/src/lib/pane-manager/xterm-user-scrolling-contract.test.ts": 1266,
|
||||
"src/renderer/src/lib/pane-manager/xterm-write-callback-guard.test.ts": 53,
|
||||
"src/renderer/src/components/terminal-pane/session-restore/spawn-deferral/pane-spawn-deferral-drain.test.ts": 61,
|
||||
"src/renderer/src/components/terminal-pane/mounting/parked-terminal-host-hydration.test.ts": 274,
|
||||
"src/renderer/src/lib/text-input/paste/paste-payload-metadata.test.ts": 53,
|
||||
@@ -6448,15 +6395,10 @@
|
||||
"src/renderer/src/lib/workspace/creation/project-clone-url-prefill.test.ts": 61,
|
||||
"src/renderer/src/lib/workspace/creation/project-host-workspace-target.jira-mapping.test.ts": 76,
|
||||
"src/renderer/src/lib/workspace/creation/project-host-workspace-target.test.ts": 92,
|
||||
"src/renderer/src/lib/react-commit-cascade-observer.react185.test.tsx": 285,
|
||||
"src/renderer/src/lib/react-commit-cascade-observer.test.ts": 189,
|
||||
"src/renderer/src/lib/react-commit-cascade-telemetry.test.ts": 159,
|
||||
"src/renderer/src/lib/react-error-boundary-reporting.test.ts": 55,
|
||||
"src/renderer/src/lib/editor/file-operations/remap-open-editor-tabs-for-path-change.test.ts": 2178,
|
||||
"src/renderer/src/lib/rename-user-named-tab-access.test.ts": 2804,
|
||||
"src/renderer/src/lib/renderer-agent-status-observation-ingress.test.ts": 81,
|
||||
"src/renderer/src/lib/renderer-app-platform.test.ts": 197,
|
||||
"src/renderer/src/lib/renderer-memory-profile.test.ts": 70,
|
||||
"src/renderer/src/diagnostics/memory/renderer-memory-profile.test.ts": 70,
|
||||
"src/renderer/src/lib/repo-search.test.ts": 54,
|
||||
"src/renderer/src/lib/repo-slug-cache.test.ts": 52,
|
||||
"src/renderer/src/lib/repo-slug-index.test.ts": 2240,
|
||||
@@ -6479,7 +6421,6 @@
|
||||
"src/renderer/src/lib/script-textarea-rows.test.ts": 93,
|
||||
"src/renderer/src/lib/session-write-subscriber-acknowledgment.test.ts": 1823,
|
||||
"src/renderer/src/lib/session-write-subscriber.test.ts": 1882,
|
||||
"src/renderer/src/lib/shutdown-checkpoint-guard.test.ts": 209,
|
||||
"src/renderer/src/lib/sidebar-ended-creations.test.ts": 1889,
|
||||
"src/renderer/src/lib/sidebar-pending-layer.test.ts": 338,
|
||||
"src/renderer/src/lib/sidebar-shadow/workspace-activity-shadow.test.ts": 1728,
|
||||
@@ -6490,7 +6431,7 @@
|
||||
"src/renderer/src/lib/simulator/tabs/simulator-tab-palette-activation.test.ts": 1903,
|
||||
"src/renderer/src/lib/source-control/remote/source-control-remote-error.test.ts": 340,
|
||||
"src/renderer/src/lib/ssh-config-passive-sync.test.ts": 1513,
|
||||
"src/renderer/src/lib/state-collection-byte-estimate.test.ts": 86,
|
||||
"src/renderer/src/diagnostics/memory/state-collection-byte-estimate.test.ts": 86,
|
||||
"src/renderer/src/lib/agent-session/launch/structured-agent-session-launch-draft.test.ts": 1042,
|
||||
"src/renderer/src/lib/agent-session/launch/structured-agent-session-launch-prerequisites.test.ts": 2427,
|
||||
"src/renderer/src/lib/agent-session/options/structured-agent-session-selection-lifetime.test.tsx": 2947,
|
||||
@@ -6515,8 +6456,6 @@
|
||||
"src/renderer/src/lib/use-tab-agent-opencode-native-title.test.ts": 2093,
|
||||
"src/renderer/src/lib/use-tab-agent.test.ts": 1961,
|
||||
"src/renderer/src/lib/wake-sleeping-agents-live-unmounted-pane.test.ts": 2432,
|
||||
"src/renderer/src/lib/window-visibility-interval.test.ts": 48,
|
||||
"src/renderer/src/lib/window-visibility-timeout-poller.test.ts": 207,
|
||||
"src/renderer/src/runtime/hosts/capabilities/windows-terminal-capabilities-race.test.ts": 450,
|
||||
"src/renderer/src/lib/workspace/activation/workspace-activation-path-gate.test.ts": 2107,
|
||||
"src/renderer/src/lib/browser/workspace/workspace-browser-tab-open-placement.test.ts": 1996,
|
||||
@@ -6625,11 +6564,6 @@
|
||||
"src/renderer/src/runtime/browser/creation/web-runtime-browser-creation-placement.test.ts": 1927,
|
||||
"src/renderer/src/runtime/browser/creation/web-runtime-browser-link-open.test.ts": 2217,
|
||||
"src/renderer/src/runtime/browser/creation/web-runtime-browser-link-session.test.ts": 1964,
|
||||
"src/renderer/src/runtime/browser/creation/web-runtime-session-browser-create-split-placement.test.ts": 949,
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/closing/web-runtime-session-tab-activate-close.test.ts": 1426,
|
||||
"src/renderer/src/runtime/hosted-terminals/actions/web-runtime-session-terminal-pane-delegation.test.ts": 1341,
|
||||
"src/renderer/src/runtime/hosted-terminals/creation/web-runtime-session-terminal-workspace-routing.test.ts": 768,
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/inventory/web-runtime-session.test.ts": 743,
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/closing/web-session-close-replay.test.ts": 1119,
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/placement/web-session-open-files-batch-equivalence.test.ts": 1478,
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/identity/web-session-restored-placeholder-identity.test.ts": 985,
|
||||
@@ -6638,7 +6572,6 @@
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/subscriptions/web-session-tabs-stream-end-resubscribe.test.tsx": 2282,
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/agent-status/web-session-tabs-sync-agent-status.test.ts": 987,
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/placement/web-session-tabs-sync-browser-tabs.test.ts": 925,
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/subscriptions/web-session-tabs-sync-completion-on-reveal.test.tsx": 2249,
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/identity/web-session-tabs-sync-cross-runtime-worktree.test.ts": 964,
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/placement/web-session-tabs-sync-editor-ownership.test.ts": 1902,
|
||||
"src/renderer/src/runtime/web-session-tabs-sync/placement/web-session-tabs-sync-editor-tabs.test.ts": 1073,
|
||||
@@ -6732,7 +6665,6 @@
|
||||
"src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts": 2007,
|
||||
"src/renderer/src/store/slices/browser/browser.test.ts": 2001,
|
||||
"src/renderer/src/store/slices/worktrees/teardown/bulk-worktree-purge-terminal-maps-leak.test.ts": 1727,
|
||||
"src/renderer/src/store/workspaces/creation/active-workspace-create-actions.test.ts": 1879,
|
||||
"src/renderer/src/store/terminals/codex-restart-notice-lifecycle.test.ts": 1685,
|
||||
"src/renderer/src/store/slices/tabs/content-tabs-from-main-frames.test.ts": 2025,
|
||||
"src/renderer/src/store/slices/tabs/content-tabs-paired-server-workspace.test.ts": 1923,
|
||||
@@ -8009,7 +7941,6 @@
|
||||
"tests/e2e/terminal-binding-crash-hydration.unit.test.ts": 1769,
|
||||
"tests/e2e/terminal-foreground-confirmation.unit.test.ts": 644,
|
||||
"tests/e2e/terminal-perf-presentation.unit.test.ts": 60,
|
||||
"tests/e2e/web-runtime-session-terminal-host-authority.unit.test.ts": 1061,
|
||||
"tests/e2e/worktree-status-warning.unit.test.ts": 2331,
|
||||
"tests/tools/branch-line-total-renderer.test.mjs": 1222,
|
||||
"tests/tools/omp-close-lifecycle.test.mjs": 403,
|
||||
|
||||
@@ -27,8 +27,6 @@ const NODE_RUNTIME_INCLUDE = [
|
||||
'src/main/browser/extensions/native-messaging/browser-extension-native-host-process-backpressure.test.ts',
|
||||
'src/main/daemon/providers/lifecycle/testing/daemon-init-provider-installation.test.ts',
|
||||
'src/renderer/src/components/terminal-pane/pty-transport/input/pty-input-write-queue.test.ts',
|
||||
'src/renderer/src/lib/react-commit-cascade-observer.test.ts',
|
||||
'src/renderer/src/lib/react-commit-cascade-telemetry.test.ts',
|
||||
// Asserts payloads are collected; Bun's GC scans the stack conservatively and may keep one alive.
|
||||
'src/shared/ws-inbound-message-queue.test.ts',
|
||||
'src/renderer/src/lib/agent-session/history/title-sync/ai-vault-tab-title-sync-inputs.test.ts',
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
"../src/cli/runtime/runtime-pid-liveness.ts",
|
||||
"../src/renderer/src/store/slices/worktrees/create/worktree-create-payload.ts",
|
||||
"../src/renderer/src/runtime/repo-hooks/orca-hook-trust.ts",
|
||||
"../src/renderer/src/lib/sha256.ts",
|
||||
"../src/renderer/src/components/native-chat/native-chat-resolution-receipt.ts",
|
||||
"../src/renderer/src/components/native-chat/structured-agent-question-projection.ts",
|
||||
"../src/renderer/src/components/native-chat/subagents/native-chat-subagent-delegation.ts",
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
"exclude": [
|
||||
"../src/renderer/src/lib/agent-session/launch/new-tab/launch-agent-in-new-tab-main-surface.test.ts",
|
||||
"../src/renderer/src/components/task-page/linear/task-page-linear-detail-query.test.tsx",
|
||||
"../tests/e2e/terminal-agent-pane-launch.unit.test.ts",
|
||||
"../src/renderer/src/runtime/provider-accounts/observations/provider-account-observation.test-fixture.ts",
|
||||
"../src/shared/**/*.test.ts",
|
||||
"../src/shared/**/*.test.tsx",
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
"../src/main/runtime/orchestration/terminal-authority/structured-sessions/structured-chat-coordinator-mail.test.ts",
|
||||
"../src/main/runtime/rpc/methods/orchestration/orchestration-check-ambiguous-caller.test.ts",
|
||||
"../src/renderer/src/components/task-page/linear/task-page-linear-detail-query.test.tsx",
|
||||
"../tests/e2e/terminal-agent-pane-launch.unit.test.ts",
|
||||
"../src/renderer/src/runtime/observed-provider-accounts.test.tsx",
|
||||
"../src/renderer/src/components/status-bar/ClaudeSwitcherMenu.observation.test.tsx",
|
||||
"../src/renderer/src/runtime/provider-accounts/observations/provider-account-observation.test-fixture.ts",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"exclude": [
|
||||
"../src/renderer/src/lib/agent-session/launch/new-tab/launch-agent-in-new-tab-main-surface.test.ts",
|
||||
"../src/renderer/src/components/task-page/linear/task-page-linear-detail-query.test.tsx",
|
||||
"../tests/e2e/terminal-agent-pane-launch.unit.test.ts",
|
||||
"../src/renderer/src/runtime/provider-accounts/observations/provider-account-observation.test-fixture.ts"
|
||||
],
|
||||
"compilerOptions": {
|
||||
|
||||
@@ -17,7 +17,6 @@ const contracts = [
|
||||
'src/main/codex-usage/scanner-incremental-append.test.ts',
|
||||
'src/main/usage/jsonl-file-reader.test.ts',
|
||||
'src/main/usage/jsonl-file-snapshot.test.ts',
|
||||
'src/renderer/src/lib/pane-manager/pane-terminal-output-scheduler-queue-retention.test.ts',
|
||||
'config/scripts/static-analysis/oxlint-contracts/app-store-performance-plugin.test.mjs',
|
||||
'config/scripts/static-analysis/oxlint-contracts/quadratic-buffer-concat-plugin.test.mjs',
|
||||
'src/main/claude-usage/scanner-incremental-append.test.ts',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Suspense } from 'react'
|
||||
import { lazyWithRetry as lazy } from '@/lib/lazy-with-retry'
|
||||
import { lazyWithRetry as lazy } from '@/app-shell/startup/lazy-with-retry'
|
||||
import { AgentHibernationGate } from '../components/AgentHibernationGate'
|
||||
import { AiVaultTabTitleSyncGate } from '../components/AiVaultTabTitleSyncGate'
|
||||
import RetainedAgentsSyncGate from '../components/dashboard/RetainedAgentsSyncGate'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Suspense, type JSX } from 'react'
|
||||
import type { TopLevelView } from '../../../shared/ui-chrome-types'
|
||||
import { lazyWithRetry as lazy } from '@/lib/lazy-with-retry'
|
||||
import { lazyWithRetry as lazy } from '@/app-shell/startup/lazy-with-retry'
|
||||
import { CodexSharedSettingsNoticeCard } from '../components/CodexSharedSettingsNoticeCard'
|
||||
import { NotificationCardStack } from '../components/NotificationCardStack'
|
||||
import { StarNagCard } from '../components/StarNagCard'
|
||||
|
||||
@@ -4,7 +4,7 @@ import { OnboardingLanguageLoading } from '../components/onboarding/OnboardingLa
|
||||
import { useLanguageReadiness } from '../i18n/language-readiness'
|
||||
import { memo, Suspense } from 'react'
|
||||
import { createPortal } from 'react-dom'
|
||||
import { lazyWithRetry as lazy } from '@/lib/lazy-with-retry'
|
||||
import { lazyWithRetry as lazy } from '@/app-shell/startup/lazy-with-retry'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { RecoverableRenderErrorBoundary } from '../components/error-boundaries/RecoverableRenderErrorBoundary'
|
||||
import NewWorkspaceComposerModal from '../components/NewWorkspaceComposerModal'
|
||||
@@ -20,7 +20,7 @@ import { ZoomOverlay } from '../components/ZoomOverlay'
|
||||
import { WslMoveDialogHost } from '../components/wsl-move/WslMoveDialog'
|
||||
import { MacosUpdateRequirementHost } from '../components/macos-update-requirement/MacosUpdateRequirementHost'
|
||||
import { shouldRenderPetOverlay } from '../components/pet/pet-overlay-visibility'
|
||||
import { useAppStore } from '../store'
|
||||
import { useAppStore } from '../store/index'
|
||||
import type { UpdateStatus } from '../../../shared/update-status-types'
|
||||
import { useLazyModalMounts } from './use-lazy-modal-mounts'
|
||||
import { AppNotificationCards } from './AppNotificationCards'
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { memo, Suspense, useCallback, useRef } from 'react'
|
||||
import { lazyWithRetry as lazy } from '@/lib/lazy-with-retry'
|
||||
import { lazyWithRetry as lazy } from '@/app-shell/startup/lazy-with-retry'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { useAppStore } from '@/store'
|
||||
import { useAppStore } from '@/store/index'
|
||||
import { usePluginViewCaptureStore } from '@/store/plugins/capture/plugin-view-capture'
|
||||
import { pendingCreationOpensNativeChat } from '@/lib/workspace/creation/pending-worktree-creation'
|
||||
import { showsFloatingRightSidebarToggle } from '@/lib/right-sidebar-visibility'
|
||||
import Sidebar from '../components/Sidebar'
|
||||
import RightSidebar from '../components/right-sidebar'
|
||||
import RightSidebar from '../components/right-sidebar/index'
|
||||
import { RecoverableRenderErrorBoundary } from '../components/error-boundaries/RecoverableRenderErrorBoundary'
|
||||
import { FloatingTerminalToggleButton } from '../components/floating-terminal/FloatingTerminalToggleButton'
|
||||
import { TerminalWorkbenchContainer } from '../components/TerminalWorkbenchContainer'
|
||||
|
||||
@@ -16,10 +16,10 @@ import {
|
||||
deleteHoveredWorkspaceImmediately,
|
||||
resolveHoveredWorkspaceDeleteTarget
|
||||
} from '../components/sidebar/workspace-actions/deletion/hovered-workspace-delete'
|
||||
import { useAppStore } from '../store'
|
||||
import { useAppStore } from '../store/index'
|
||||
import type { usePluginCommands } from '@/store/plugins/catalog/plugin-contribution-catalog'
|
||||
import { isGitRepoKind } from '../../../shared/repo-kind'
|
||||
import { openPluginsSettings } from '@/lib/open-plugins-settings'
|
||||
import { openPluginsSettings } from '@/components/settings/navigation/open-plugins-settings'
|
||||
import { resolveActiveTabRenameTarget } from './active-tab-rename-target'
|
||||
import { createPluginsSettingsShortcutHandler } from './plugin-settings-shortcut-handler'
|
||||
import type {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { WindowMaterial, WindowMaterialHost } from '../../../../shared/window-material'
|
||||
import { getRendererAppPlatform } from '../../lib/renderer-app-platform'
|
||||
import { getRendererAppPlatform } from '../platform/renderer-app-platform'
|
||||
|
||||
let material: WindowMaterial | undefined
|
||||
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
import {
|
||||
formatClientEnvironmentFooter,
|
||||
type ClientEnvironmentInfo
|
||||
} from '../../../shared/client-environment-info'
|
||||
} from '../../../../shared/client-environment-info'
|
||||
import { getRendererAppPlatform } from './renderer-app-platform'
|
||||
|
||||
export async function resolveClientEnvironmentInfo(): Promise<ClientEnvironmentInfo> {
|
||||
+2
-2
@@ -2,8 +2,8 @@ import {
|
||||
parseExecutionHostId,
|
||||
toRuntimeExecutionHostId,
|
||||
type ExecutionHostId
|
||||
} from '../../../shared/execution-host'
|
||||
import { isPairedWebClientWindow } from './desktop-window-chrome'
|
||||
} from '../../../../shared/execution-host'
|
||||
import { isPairedWebClientWindow } from '../../lib/desktop-window-chrome'
|
||||
|
||||
type HostRouteState = { runtimeEnvironments?: readonly { id: string }[] }
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
import type {
|
||||
ActiveRightSidebarTab,
|
||||
RightSidebarExplorerView
|
||||
} from '../../../shared/ui-chrome-types'
|
||||
} from '../../../../shared/ui-chrome-types'
|
||||
import type { OpenFile } from '@/store/slices/editor/types/open-file'
|
||||
|
||||
const MAC_APP_DATA_SEGMENT_RE = /(^|\/)Library\/(Containers|Group Containers)\//
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { PersistedUIState } from '../../../shared/persisted-ui-state-types'
|
||||
import { formatShutdownCheckpointFailureReason } from '../../../shared/renderer-shutdown-events'
|
||||
import type { WorkspaceSessionHostSnapshot } from '../lib/workspace/persistence/workspace-session-host-persistence'
|
||||
import { recordRendererCrashBreadcrumb } from '../lib/crash-breadcrumb-recorder'
|
||||
import { recordRendererCrashBreadcrumb } from '../diagnostics/crash-reporting/crash-breadcrumb-recorder'
|
||||
|
||||
export type ShutdownCheckpointStageArgs = {
|
||||
sessions: WorkspaceSessionHostSnapshot[]
|
||||
|
||||
@@ -1,142 +0,0 @@
|
||||
// @vitest-environment happy-dom
|
||||
import { afterEach, describe, expect, it, vi } from 'vitest'
|
||||
import {
|
||||
ORCA_APP_RESTART_ABORTED_EVENT,
|
||||
ORCA_APP_RESTART_STARTED_EVENT,
|
||||
ORCA_UPDATER_QUIT_AND_INSTALL_ABORTED_EVENT,
|
||||
ORCA_UPDATER_QUIT_AND_INSTALL_STARTED_EVENT
|
||||
} from '../../../shared/updater-renderer-events'
|
||||
import {
|
||||
ORCA_RENDERER_SHUTDOWN_CHECKPOINT_ABORTED_EVENT,
|
||||
ORCA_RENDERER_UNLOAD_PREVENTED_EVENT
|
||||
} from '../../../shared/renderer-shutdown-events'
|
||||
import { prepareRendererForAppRestart } from '../../../shared/renderer-restart-preparation'
|
||||
import {
|
||||
createShutdownCheckpointBeforeUnloadHandler,
|
||||
createShutdownCheckpointGuard
|
||||
} from '../lib/shutdown-checkpoint-guard'
|
||||
import {
|
||||
isIntentionalAppRestartInProgress,
|
||||
registerUpdaterBeforeUnloadBypass
|
||||
} from '../lib/updater-beforeunload'
|
||||
import {
|
||||
createShutdownCheckpointPersist,
|
||||
type ShutdownCheckpointPersistDeps
|
||||
} from './shutdown-checkpoint-persist'
|
||||
|
||||
type LifecycleHarness = {
|
||||
cleanup: () => void
|
||||
prepare: () => Promise<void>
|
||||
stageBeforeUnloadSync: ReturnType<typeof vi.fn>
|
||||
}
|
||||
|
||||
type LifecycleHarnessOverrides = Partial<
|
||||
Pick<ShutdownCheckpointPersistDeps, 'buildSessionSnapshots' | 'hasDirtyOpenFiles'>
|
||||
>
|
||||
|
||||
function createLifecycleHarness(
|
||||
startedEventName: string,
|
||||
abortedEventName: string,
|
||||
overrides: LifecycleHarnessOverrides = {}
|
||||
): LifecycleHarness {
|
||||
const stageBeforeUnloadSync = vi.fn((args: { sessions: unknown[] }) => {
|
||||
if (args.sessions.length > 0) {
|
||||
throw new Error('deterministic full-stage failure')
|
||||
}
|
||||
})
|
||||
const persist = createShutdownCheckpointPersist({
|
||||
shouldCaptureSession: () => true,
|
||||
captureTerminalBuffers: vi.fn(),
|
||||
captureSleepingAgentSessions: vi.fn(),
|
||||
buildSessionSnapshots: () => [{ state: { activeTabId: 't1' } }] as never,
|
||||
buildUiPatch: () => ({ activeView: 'workspace' }) as never,
|
||||
hasDirtyOpenFiles: () => false,
|
||||
isDegradableShutdownInProgress: isIntentionalAppRestartInProgress,
|
||||
stageBeforeUnloadSync,
|
||||
...overrides
|
||||
})
|
||||
const guard = createShutdownCheckpointGuard(persist.run, persist.abandonAttempt)
|
||||
const checkpoint = createShutdownCheckpointBeforeUnloadHandler(guard)
|
||||
const cleanupRestartTracking = registerUpdaterBeforeUnloadBypass()
|
||||
window.addEventListener('beforeunload', checkpoint)
|
||||
window.addEventListener(
|
||||
ORCA_RENDERER_SHUTDOWN_CHECKPOINT_ABORTED_EVENT,
|
||||
guard.abortAfterCheckpointFailure
|
||||
)
|
||||
window.addEventListener(abortedEventName, guard.abandonAttempt)
|
||||
window.addEventListener(ORCA_RENDERER_UNLOAD_PREVENTED_EVENT, guard.abandonAttempt)
|
||||
return {
|
||||
stageBeforeUnloadSync,
|
||||
prepare: () =>
|
||||
prepareRendererForAppRestart(window, {
|
||||
startedEventName,
|
||||
abortedEventName,
|
||||
awaitCheckpoint: () => Promise.resolve()
|
||||
}),
|
||||
cleanup: () => {
|
||||
cleanupRestartTracking()
|
||||
window.removeEventListener('beforeunload', checkpoint)
|
||||
window.removeEventListener(
|
||||
ORCA_RENDERER_SHUTDOWN_CHECKPOINT_ABORTED_EVENT,
|
||||
guard.abortAfterCheckpointFailure
|
||||
)
|
||||
window.removeEventListener(abortedEventName, guard.abandonAttempt)
|
||||
window.removeEventListener(ORCA_RENDERER_UNLOAD_PREVENTED_EVENT, guard.abandonAttempt)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
describe('shutdown checkpoint restart lifecycle', () => {
|
||||
const cleanupFns: (() => void)[] = []
|
||||
|
||||
afterEach(() => {
|
||||
cleanupFns.splice(0).forEach((cleanup) => cleanup())
|
||||
vi.restoreAllMocks()
|
||||
})
|
||||
|
||||
it.each([
|
||||
{
|
||||
lifecycle: 'app restart',
|
||||
startedEventName: ORCA_APP_RESTART_STARTED_EVENT,
|
||||
abortedEventName: ORCA_APP_RESTART_ABORTED_EVENT
|
||||
},
|
||||
{
|
||||
lifecycle: 'updater install',
|
||||
startedEventName: ORCA_UPDATER_QUIT_AND_INSTALL_STARTED_EVENT,
|
||||
abortedEventName: ORCA_UPDATER_QUIT_AND_INSTALL_ABORTED_EVENT
|
||||
}
|
||||
])(
|
||||
'preserves retry-then-degrade across a checkpoint-caused $lifecycle abort',
|
||||
async ({ startedEventName, abortedEventName }) => {
|
||||
vi.spyOn(console, 'error').mockImplementation(() => {})
|
||||
const harness = createLifecycleHarness(startedEventName, abortedEventName)
|
||||
cleanupFns.push(harness.cleanup)
|
||||
|
||||
await expect(harness.prepare()).rejects.toThrow('deterministic full-stage failure')
|
||||
expect(isIntentionalAppRestartInProgress()).toBe(false)
|
||||
await expect(harness.prepare()).resolves.toBeUndefined()
|
||||
|
||||
expect(harness.stageBeforeUnloadSync).toHaveBeenCalledTimes(3)
|
||||
expect(harness.stageBeforeUnloadSync).toHaveBeenLastCalledWith({
|
||||
sessions: [],
|
||||
ui: { activeView: 'workspace' }
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
it('abandons retry state when a later restart attempt is independently canceled', async () => {
|
||||
vi.spyOn(console, 'error').mockImplementation(() => {})
|
||||
const harness = createLifecycleHarness(
|
||||
ORCA_APP_RESTART_STARTED_EVENT,
|
||||
ORCA_APP_RESTART_ABORTED_EVENT
|
||||
)
|
||||
cleanupFns.push(harness.cleanup)
|
||||
|
||||
await expect(harness.prepare()).rejects.toThrow('deterministic full-stage failure')
|
||||
window.dispatchEvent(new Event(ORCA_APP_RESTART_STARTED_EVENT))
|
||||
window.dispatchEvent(new Event(ORCA_APP_RESTART_ABORTED_EVENT))
|
||||
await expect(harness.prepare()).rejects.toThrow('deterministic full-stage failure')
|
||||
|
||||
expect(harness.stageBeforeUnloadSync).toHaveBeenCalledTimes(2)
|
||||
})
|
||||
})
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
import { toast } from 'sonner'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { consumeShutdownCheckpointFailureReason } from '../../../shared/renderer-shutdown-events'
|
||||
import { consumeShutdownCheckpointFailureReason } from '../../../../shared/renderer-shutdown-events'
|
||||
|
||||
export function showShutdownCheckpointFailureToast(
|
||||
canceledAction: 'quit' | 'reload' = 'quit'
|
||||
+2
-2
@@ -4,8 +4,8 @@ import {
|
||||
ORCA_RENDERER_SHUTDOWN_CHECKPOINT_FAILED_EVENT,
|
||||
ORCA_RENDERER_UNLOAD_PREVENTED_EVENT,
|
||||
publishShutdownCheckpointFailureReason
|
||||
} from '../../../shared/renderer-shutdown-events'
|
||||
import { recordRendererCrashBreadcrumb } from './crash-breadcrumb-recorder'
|
||||
} from '../../../../shared/renderer-shutdown-events'
|
||||
import { recordRendererCrashBreadcrumb } from '../../diagnostics/crash-reporting/crash-breadcrumb-recorder'
|
||||
|
||||
export type ShutdownCheckpointGuard = {
|
||||
persistOnce: () => boolean
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
import type { PersistedUIState } from '../../../shared/persisted-ui-state-types'
|
||||
import type { TopLevelView } from '../../../shared/ui-chrome-types'
|
||||
import type { PersistedUIState } from '../../../../shared/persisted-ui-state-types'
|
||||
import type { TopLevelView } from '../../../../shared/ui-chrome-types'
|
||||
|
||||
type ActiveViewUnloadState = {
|
||||
activeView: TopLevelView
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createE2EConfig } from '../../../shared/e2e-config'
|
||||
import { createE2EConfig } from '../../../../shared/e2e-config'
|
||||
|
||||
const rendererE2EExposeStore = String(import.meta.env.VITE_EXPOSE_STORE) === 'true'
|
||||
// The paired API installs after module initialization; read the build-gated test URL before caching configuration.
|
||||
+3
-3
@@ -1,9 +1,9 @@
|
||||
import { prepareRendererForAppRestart } from '../../../shared/renderer-restart-preparation'
|
||||
import { ORCA_RENDERER_UNLOAD_PREVENTED_EVENT } from '../../../shared/renderer-shutdown-events'
|
||||
import { prepareRendererForAppRestart } from '../../../../shared/renderer-restart-preparation'
|
||||
import { ORCA_RENDERER_UNLOAD_PREVENTED_EVENT } from '../../../../shared/renderer-shutdown-events'
|
||||
import {
|
||||
ORCA_APP_RESTART_ABORTED_EVENT,
|
||||
ORCA_APP_RESTART_STARTED_EVENT
|
||||
} from '../../../shared/updater-renderer-events'
|
||||
} from '../../../../shared/updater-renderer-events'
|
||||
|
||||
// Bare reloads are vetoed by dirty tabs; restart preparation backs them up first.
|
||||
|
||||
+2
-2
@@ -5,8 +5,8 @@ import {
|
||||
DEFAULT_SHOW_SLEEPING_WORKSPACES,
|
||||
DEFAULT_STATUS_BAR_ITEMS,
|
||||
DEFAULT_WORKTREE_CARD_PROPERTIES
|
||||
} from '../../../shared/constants'
|
||||
import type { PersistedUIState } from '../../../shared/persisted-ui-state-types'
|
||||
} from '../../../../shared/constants'
|
||||
import type { PersistedUIState } from '../../../../shared/persisted-ui-state-types'
|
||||
|
||||
export function hydratePersistedUIAfterStartupRead({
|
||||
persistedUI,
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
import type { UpdateCheckOptions } from '../../../shared/update-status-types'
|
||||
import { getShortcutPlatform } from './keyboard/shortcut-platform'
|
||||
import type { UpdateCheckOptions } from '../../../../shared/update-status-types'
|
||||
import { getShortcutPlatform } from '../../lib/keyboard/shortcut-platform'
|
||||
|
||||
type UpdateCheckClickEvent = Pick<MouseEvent, 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey'>
|
||||
|
||||
+2
-6
@@ -3,15 +3,11 @@ import {
|
||||
ORCA_APP_RESTART_STARTED_EVENT,
|
||||
ORCA_UPDATER_QUIT_AND_INSTALL_ABORTED_EVENT,
|
||||
ORCA_UPDATER_QUIT_AND_INSTALL_STARTED_EVENT
|
||||
} from '../../../shared/updater-renderer-events'
|
||||
import { ORCA_RENDERER_SHUTDOWN_CHECKPOINT_ABORTED_EVENT } from '../../../shared/renderer-shutdown-events'
|
||||
} from '../../../../shared/updater-renderer-events'
|
||||
import { ORCA_RENDERER_SHUTDOWN_CHECKPOINT_ABORTED_EVENT } from '../../../../shared/renderer-shutdown-events'
|
||||
|
||||
let intentionalAppRestartInProgress = false
|
||||
|
||||
export function isUpdaterQuitAndInstallInProgress(): boolean {
|
||||
return isIntentionalAppRestartInProgress()
|
||||
}
|
||||
|
||||
export function isIntentionalAppRestartInProgress(): boolean {
|
||||
return intentionalAppRestartInProgress
|
||||
}
|
||||
+98
-34
@@ -1,99 +1,163 @@
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import type { LinuxPackageCommandUnavailableReason } from '../../../shared/update-status-types'
|
||||
import type { LinuxPackageCommandUnavailableReason } from '../../../../shared/update-status-types'
|
||||
import {
|
||||
UPDATER_FAILURE_COPY as EN,
|
||||
UPDATER_FAILURE_COPY,
|
||||
type UpdaterFailureCode
|
||||
} from '../../../shared/updater-failure-copy'
|
||||
} from '../../../../shared/updater-failure-copy'
|
||||
|
||||
type Param = (name: string) => string | null
|
||||
type CountParam = (name: string) => number | null
|
||||
|
||||
// null = required params missing; caller shows the host's English message.
|
||||
const COPY: Record<UpdaterFailureCode, (param: Param, count: CountParam) => string | null> = {
|
||||
releaseNotReady: () => translate('updates.failure.releaseNotReady', EN.releaseNotReady),
|
||||
releaseNotReady: () =>
|
||||
translate('updates.failure.releaseNotReady', UPDATER_FAILURE_COPY.releaseNotReady),
|
||||
updateServerUnreachable: () =>
|
||||
translate('updates.failure.updateServerUnreachable', EN.updateServerUnreachable),
|
||||
translate(
|
||||
'updates.failure.updateServerUnreachable',
|
||||
UPDATER_FAILURE_COPY.updateServerUnreachable
|
||||
),
|
||||
channelUnsupportedPlatform: (param) => {
|
||||
const channel = param('channel')
|
||||
return channel === null
|
||||
? null
|
||||
: translate('updates.failure.channelUnsupportedPlatform', EN.channelUnsupportedPlatform, {
|
||||
channel
|
||||
})
|
||||
: translate(
|
||||
'updates.failure.channelUnsupportedPlatform',
|
||||
UPDATER_FAILURE_COPY.channelUnsupportedPlatform,
|
||||
{
|
||||
channel
|
||||
}
|
||||
)
|
||||
},
|
||||
unsignedDevChannel: (param) => {
|
||||
const channel = param('channel')
|
||||
return channel === null
|
||||
? null
|
||||
: translate('updates.failure.unsignedDevChannel', EN.unsignedDevChannel, { channel })
|
||||
: translate('updates.failure.unsignedDevChannel', UPDATER_FAILURE_COPY.unsignedDevChannel, {
|
||||
channel
|
||||
})
|
||||
},
|
||||
linuxPackageMissing: () =>
|
||||
translate('updates.failure.linuxPackageMissing', EN.linuxPackageMissing),
|
||||
translate('updates.failure.linuxPackageMissing', UPDATER_FAILURE_COPY.linuxPackageMissing),
|
||||
linuxPackageNotRegular: () =>
|
||||
translate('updates.failure.linuxPackageNotRegular', EN.linuxPackageNotRegular),
|
||||
translate(
|
||||
'updates.failure.linuxPackageNotRegular',
|
||||
UPDATER_FAILURE_COPY.linuxPackageNotRegular
|
||||
),
|
||||
linuxPackageHashMismatch: () =>
|
||||
translate('updates.failure.linuxPackageHashMismatch', EN.linuxPackageHashMismatch),
|
||||
translate(
|
||||
'updates.failure.linuxPackageHashMismatch',
|
||||
UPDATER_FAILURE_COPY.linuxPackageHashMismatch
|
||||
),
|
||||
linuxPackageReadFailed: () =>
|
||||
translate('updates.failure.linuxPackageReadFailed', EN.linuxPackageReadFailed),
|
||||
linuxPackageNoSudo: () => translate('updates.failure.linuxPackageNoSudo', EN.linuxPackageNoSudo),
|
||||
translate(
|
||||
'updates.failure.linuxPackageReadFailed',
|
||||
UPDATER_FAILURE_COPY.linuxPackageReadFailed
|
||||
),
|
||||
linuxPackageNoSudo: () =>
|
||||
translate('updates.failure.linuxPackageNoSudo', UPDATER_FAILURE_COPY.linuxPackageNoSudo),
|
||||
linuxPackageNoPackageManager: () =>
|
||||
translate('updates.failure.linuxPackageNoPackageManager', EN.linuxPackageNoPackageManager),
|
||||
translate(
|
||||
'updates.failure.linuxPackageNoPackageManager',
|
||||
UPDATER_FAILURE_COPY.linuxPackageNoPackageManager
|
||||
),
|
||||
linuxPackageInvalidPath: () =>
|
||||
translate('updates.failure.linuxPackageInvalidPath', EN.linuxPackageInvalidPath),
|
||||
translate(
|
||||
'updates.failure.linuxPackageInvalidPath',
|
||||
UPDATER_FAILURE_COPY.linuxPackageInvalidPath
|
||||
),
|
||||
linuxPackageMarkerUnusable: () =>
|
||||
translate('updates.failure.linuxPackageMarkerUnusable', EN.linuxPackageMarkerUnusable),
|
||||
translate(
|
||||
'updates.failure.linuxPackageMarkerUnusable',
|
||||
UPDATER_FAILURE_COPY.linuxPackageMarkerUnusable
|
||||
),
|
||||
linuxPackageExternallyManaged: () =>
|
||||
translate('updates.failure.linuxPackageExternallyManaged', EN.linuxPackageExternallyManaged),
|
||||
translate(
|
||||
'updates.failure.linuxPackageExternallyManaged',
|
||||
UPDATER_FAILURE_COPY.linuxPackageExternallyManaged
|
||||
),
|
||||
linuxPackageManualInstall: () =>
|
||||
translate('updates.failure.linuxPackageManualInstall', EN.linuxPackageManualInstall),
|
||||
translate(
|
||||
'updates.failure.linuxPackageManualInstall',
|
||||
UPDATER_FAILURE_COPY.linuxPackageManualInstall
|
||||
),
|
||||
linuxPackageMetadataUnusable: () =>
|
||||
translate('updates.failure.linuxPackageMetadataUnusable', EN.linuxPackageMetadataUnusable),
|
||||
translate(
|
||||
'updates.failure.linuxPackageMetadataUnusable',
|
||||
UPDATER_FAILURE_COPY.linuxPackageMetadataUnusable
|
||||
),
|
||||
unknownReleaseChannel: (param) => {
|
||||
const channel = param('channel')
|
||||
return channel === null
|
||||
? null
|
||||
: translate('updates.failure.unknownReleaseChannel', EN.unknownReleaseChannel, { channel })
|
||||
: translate(
|
||||
'updates.failure.unknownReleaseChannel',
|
||||
UPDATER_FAILURE_COPY.unknownReleaseChannel,
|
||||
{ channel }
|
||||
)
|
||||
},
|
||||
invalidReleaseTag: (param) => {
|
||||
const tag = param('tag')
|
||||
return tag === null
|
||||
? null
|
||||
: translate('updates.failure.invalidReleaseTag', EN.invalidReleaseTag, { tag })
|
||||
: translate('updates.failure.invalidReleaseTag', UPDATER_FAILURE_COPY.invalidReleaseTag, {
|
||||
tag
|
||||
})
|
||||
},
|
||||
releaseRepoNotFound: (param) => {
|
||||
const repo = param('repo')
|
||||
return repo === null
|
||||
? null
|
||||
: translate('updates.failure.releaseRepoNotFound', EN.releaseRepoNotFound, { repo })
|
||||
: translate('updates.failure.releaseRepoNotFound', UPDATER_FAILURE_COPY.releaseRepoNotFound, {
|
||||
repo
|
||||
})
|
||||
},
|
||||
releaseListFailed: (param, count) => {
|
||||
const channel = param('channel')
|
||||
const status = count('status')
|
||||
return channel === null || status === null
|
||||
? null
|
||||
: translate('updates.failure.releaseListFailed', EN.releaseListFailed, { channel, status })
|
||||
: translate('updates.failure.releaseListFailed', UPDATER_FAILURE_COPY.releaseListFailed, {
|
||||
channel,
|
||||
status
|
||||
})
|
||||
},
|
||||
releaseListUnreadable: (param) => {
|
||||
const channel = param('channel')
|
||||
return channel === null
|
||||
? null
|
||||
: translate('updates.failure.releaseListUnreadable', EN.releaseListUnreadable, { channel })
|
||||
: translate(
|
||||
'updates.failure.releaseListUnreadable',
|
||||
UPDATER_FAILURE_COPY.releaseListUnreadable,
|
||||
{ channel }
|
||||
)
|
||||
},
|
||||
rateLimitedSoon: () => translate('updates.failure.rateLimitedSoon', EN.rateLimitedSoon),
|
||||
rateLimitedSoon: () =>
|
||||
translate('updates.failure.rateLimitedSoon', UPDATER_FAILURE_COPY.rateLimitedSoon),
|
||||
rateLimitedSoonSignedOut: () =>
|
||||
translate('updates.failure.rateLimitedSoonSignedOut', EN.rateLimitedSoonSignedOut),
|
||||
translate(
|
||||
'updates.failure.rateLimitedSoonSignedOut',
|
||||
UPDATER_FAILURE_COPY.rateLimitedSoonSignedOut
|
||||
),
|
||||
rateLimitedInMinute: () =>
|
||||
translate('updates.failure.rateLimitedInMinute', EN.rateLimitedInMinute),
|
||||
translate('updates.failure.rateLimitedInMinute', UPDATER_FAILURE_COPY.rateLimitedInMinute),
|
||||
rateLimitedInMinuteSignedOut: () =>
|
||||
translate('updates.failure.rateLimitedInMinuteSignedOut', EN.rateLimitedInMinuteSignedOut),
|
||||
translate(
|
||||
'updates.failure.rateLimitedInMinuteSignedOut',
|
||||
UPDATER_FAILURE_COPY.rateLimitedInMinuteSignedOut
|
||||
),
|
||||
rateLimitedInMinutes: (_param, count) => {
|
||||
const minutes = count('count')
|
||||
return minutes === null
|
||||
? null
|
||||
: translate('updates.failure.rateLimitedInMinutes', EN.rateLimitedInMinutes, {
|
||||
count: minutes,
|
||||
defaultValue_one: 'GitHub rate limit reached. Try again in about {{count}} minute.'
|
||||
})
|
||||
: translate(
|
||||
'updates.failure.rateLimitedInMinutes',
|
||||
UPDATER_FAILURE_COPY.rateLimitedInMinutes,
|
||||
{
|
||||
count: minutes,
|
||||
defaultValue_one: 'GitHub rate limit reached. Try again in about {{count}} minute.'
|
||||
}
|
||||
)
|
||||
},
|
||||
rateLimitedInMinutesSignedOut: (_param, count) => {
|
||||
const minutes = count('count')
|
||||
@@ -101,7 +165,7 @@ const COPY: Record<UpdaterFailureCode, (param: Param, count: CountParam) => stri
|
||||
? null
|
||||
: translate(
|
||||
'updates.failure.rateLimitedInMinutesSignedOut',
|
||||
EN.rateLimitedInMinutesSignedOut,
|
||||
UPDATER_FAILURE_COPY.rateLimitedInMinutesSignedOut,
|
||||
{
|
||||
count: minutes,
|
||||
defaultValue_one:
|
||||
@@ -1,12 +1,12 @@
|
||||
import { useEffect } from 'react'
|
||||
import { useAppStore } from '../store'
|
||||
import { useAppStore } from '../store/index'
|
||||
import { ORCA_LAYOUT_OWNER_IS_MAIN } from '../../../shared/layout-owner-switch'
|
||||
import { createSessionWriteSubscriber } from '../lib/workspace/persistence/session-write-subscriber'
|
||||
import { buildActiveViewUnloadPatch } from '../lib/active-view-persist'
|
||||
import { buildActiveViewUnloadPatch } from './startup/active-view-persist'
|
||||
import {
|
||||
isIntentionalAppRestartInProgress,
|
||||
registerUpdaterBeforeUnloadBypass
|
||||
} from '../lib/updater-beforeunload'
|
||||
} from './updates/updater-beforeunload'
|
||||
import {
|
||||
buildWorkspaceSessionPayload,
|
||||
shouldPersistWorkspaceSession
|
||||
@@ -18,8 +18,8 @@ import {
|
||||
import {
|
||||
createShutdownCheckpointBeforeUnloadHandler,
|
||||
createShutdownCheckpointGuard
|
||||
} from '../lib/shutdown-checkpoint-guard'
|
||||
import { showShutdownCheckpointFailureToast } from '../lib/shutdown-checkpoint-failure-toast'
|
||||
} from './shutdown/shutdown-checkpoint-guard'
|
||||
import { showShutdownCheckpointFailureToast } from './shutdown/shutdown-checkpoint-failure-toast'
|
||||
import { isPairedWebClientWindow } from '../lib/desktop-window-chrome'
|
||||
import { createShutdownCheckpointPersist } from './shutdown-checkpoint-persist'
|
||||
import { shutdownBufferCaptures } from '../components/terminal-pane/snapshots/shutdown-buffer-captures'
|
||||
|
||||
@@ -3,7 +3,7 @@ import { useEffect, useRef } from 'react'
|
||||
import { restoreLocalStructuredChatsAtStartup } from '@/runtime/native-chat/local-sessions/local-structured-chats'
|
||||
import { syncZoomCSSVar } from '@/lib/ui-zoom'
|
||||
import { installCodexDetachedPaneRestartExecutor } from '@/components/terminal-pane/account-restart/detached/codex-detached-pane-restart-scheduler'
|
||||
import { useAppStore } from '../store'
|
||||
import { useAppStore } from '../store/index'
|
||||
import { reconcileHydratedWorkspaceTabModels } from './reconcile-hydrated-workspace-tab-models'
|
||||
import { useStartupActions } from './use-app-startup-actions'
|
||||
import { waitForNativeChatDraftsAtStartup } from './native-chat-draft-startup'
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
collectFolderWorkspaceKeysFromSession,
|
||||
collectWorktreeHydrationRepoIdsFromSession
|
||||
} from '../lib/workspace/persistence/workspace-session-hydration-keys'
|
||||
import { hydratePersistedUIAfterStartupRead } from '../lib/startup-ui-hydration'
|
||||
import { hydratePersistedUIAfterStartupRead } from './startup/startup-ui-hydration'
|
||||
import {
|
||||
logRendererStartupDiagnostic,
|
||||
timeRendererStartupStep,
|
||||
|
||||
@@ -13,8 +13,8 @@ import {
|
||||
trackCmdJPaletteFeatureTipShown,
|
||||
trackOrcaCliFeatureTipShown
|
||||
} from '../components/feature-tips/feature-tip-telemetry'
|
||||
import { useAppStore } from '../store'
|
||||
import { isWebClientLocation } from '../lib/web-client-location'
|
||||
import { useAppStore } from '../store/index'
|
||||
import { isWebClientLocation } from './platform/web-client-location'
|
||||
import type { OnboardingState } from '../../../shared/onboarding-state-types'
|
||||
|
||||
export type OnboardingGate = ReturnType<typeof useOnboardingAndFeatureTips>
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
// @vitest-environment happy-dom
|
||||
import { cleanup, renderHook } from '@testing-library/react'
|
||||
import { afterEach, expect, it, vi } from 'vitest'
|
||||
import { useVisibleHostedReviewRefresh } from './use-visible-hosted-review-refresh'
|
||||
|
||||
const mocks = vi.hoisted(() => ({
|
||||
refresh: vi.fn(async () => true),
|
||||
getState: vi.fn(() => ({})),
|
||||
subscribe: vi.fn(() => vi.fn()),
|
||||
web: vi.fn(() => false)
|
||||
}))
|
||||
vi.mock('@/store', () => ({
|
||||
useAppStore: { getState: mocks.getState, subscribe: mocks.subscribe }
|
||||
}))
|
||||
vi.mock('@/lib/web-client-location', () => ({ isWebClientLocation: mocks.web }))
|
||||
vi.mock('@/store/slices/hosted-review/refresh/visible-hosted-review-refresh-targets', () => ({
|
||||
visibleHostedReviewRefreshInputsChanged: () => true,
|
||||
getVisibleHostedReviewWorkspaces: () => [],
|
||||
getVisibleHostedReviewRefreshTargets: () => [
|
||||
{
|
||||
key: 'review',
|
||||
revision: 'head',
|
||||
selected: true,
|
||||
intervalMs: 60_000,
|
||||
fetchedAt: null,
|
||||
refresh: mocks.refresh
|
||||
}
|
||||
]
|
||||
}))
|
||||
afterEach(() => {
|
||||
cleanup()
|
||||
vi.useRealTimers()
|
||||
vi.restoreAllMocks()
|
||||
})
|
||||
|
||||
it('waits for workspace readiness and stops timers/subscription when disabled', async () => {
|
||||
vi.useFakeTimers()
|
||||
vi.spyOn(document, 'visibilityState', 'get').mockReturnValue('visible')
|
||||
const hook = renderHook(({ enabled }) => useVisibleHostedReviewRefresh({ enabled }), {
|
||||
initialProps: { enabled: false }
|
||||
})
|
||||
await vi.advanceTimersByTimeAsync(600_000)
|
||||
expect(mocks.refresh).not.toHaveBeenCalled()
|
||||
expect(mocks.subscribe).not.toHaveBeenCalled()
|
||||
hook.rerender({ enabled: true })
|
||||
await vi.advanceTimersByTimeAsync(0)
|
||||
expect(mocks.refresh).toHaveBeenCalledOnce()
|
||||
const unsubscribe = mocks.subscribe.mock.results[0].value
|
||||
hook.rerender({ enabled: false })
|
||||
expect(unsubscribe).toHaveBeenCalledOnce()
|
||||
expect(vi.getTimerCount()).toBe(0)
|
||||
await vi.advanceTimersByTimeAsync(600_000)
|
||||
expect(mocks.refresh).toHaveBeenCalledOnce()
|
||||
})
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useEffect } from 'react'
|
||||
import { useAppStore } from '@/store'
|
||||
import { isWindowVisible } from '@/lib/window-visibility-interval'
|
||||
import { isWebClientLocation } from '@/lib/web-client-location'
|
||||
import { useAppStore } from '@/store/index'
|
||||
import { isWindowVisible } from '@/lib/window-activity/window-visibility-interval'
|
||||
import { isWebClientLocation } from '@/app-shell/platform/web-client-location'
|
||||
import { createVisibleHostedReviewRefreshScheduler } from '@/store/slices/hosted-review/refresh/visible-hosted-review-refresh-scheduler'
|
||||
import { getWorkspaceReferenceRefreshTargets } from '@/components/sidebar/workspace-card/review/workspace-reference-refresh-targets'
|
||||
import {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useEffect } from 'react'
|
||||
import { scheduleAfterInputQuiet } from '@/lib/input-quiet-scheduler'
|
||||
import { lazyWithPreload } from '@/lib/lazy-with-retry'
|
||||
import { scheduleAfterInputQuiet } from '@/lib/window-activity/input-quiet-scheduler'
|
||||
import { lazyWithPreload } from '@/app-shell/startup/lazy-with-retry'
|
||||
|
||||
export const WorktreeJumpPalette = lazyWithPreload(
|
||||
() => import('../components/worktree-jump/WorktreeJumpPalette')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { recordRendererCrashBreadcrumb } from '@/lib/crash-breadcrumb-recorder'
|
||||
import { recordRendererCrashBreadcrumb } from '@/diagnostics/crash-reporting/crash-breadcrumb-recorder'
|
||||
|
||||
/** Why a finished agent turn did not mark its workspace unread. */
|
||||
export type AgentFinishDropCause =
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
|
||||
export type AgentProgressRingTone = 'working' | 'attention'
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import React from 'react'
|
||||
import { MessageCircleQuestion } from 'lucide-react'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
|
||||
// Share the question glyph and --agent-question token across sidebar, tabs, dashboard and kanban; callers choose size.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import React from 'react'
|
||||
import { Activity, CircleCheck, CircleDashed } from 'lucide-react'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { useUiLanguageRevision } from '@/i18n/use-ui-language-revision'
|
||||
import { AgentQuestionIcon } from '@/components/AgentQuestionIcon'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import React from 'react'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { observeOffscreenAnimation } from '@/lib/offscreen-animation-pause'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { observeOffscreenAnimation } from '@/lib/window-activity/offscreen-animation-pause'
|
||||
|
||||
const SPINNER_ANIMATION_NAME = 'agent-spinner-rotate'
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useEffect } from 'react'
|
||||
import { startAiVaultTabTitleSync } from '@/lib/agent-session/history/title-sync/ai-vault-tab-title-sync'
|
||||
import { scheduleAfterInputQuiet } from '@/lib/input-quiet-scheduler'
|
||||
import { useAppStore } from '@/store'
|
||||
import { scheduleAfterInputQuiet } from '@/lib/window-activity/input-quiet-scheduler'
|
||||
import { useAppStore } from '@/store/index'
|
||||
|
||||
const TITLE_SYNC_DELAY_MS = 1_000
|
||||
const TITLE_SYNC_QUIET_MS = 1_500
|
||||
|
||||
@@ -2,7 +2,7 @@ import React from 'react'
|
||||
import { GitCommitHorizontal } from 'lucide-react'
|
||||
import { Badge } from '@/components/ui/badge'
|
||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import type { WorktreeGitIdentityDisplay } from '../../../shared/worktree/git-identity-display'
|
||||
|
||||
type DetachedHeadDisplay = Extract<WorktreeGitIdentityDisplay, { kind: 'detached' }>
|
||||
|
||||
@@ -4,7 +4,11 @@ import { useState } from 'react'
|
||||
import { X } from 'lucide-react'
|
||||
|
||||
import { Button } from './ui/button'
|
||||
import { acknowledgeBanner, PRIVACY_URL, setOptIn as telemetrySetOptIn } from '../lib/telemetry'
|
||||
import {
|
||||
acknowledgeBanner,
|
||||
PRIVACY_URL,
|
||||
setOptIn as telemetrySetOptIn
|
||||
} from '../diagnostics/telemetry/telemetry'
|
||||
import { useMountedRef } from '@/hooks/useMountedRef'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { openAppHttpLink } from '@/lib/browser/navigation/app-http-link-open'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useEffect, useEffectEvent, useMemo, useRef, useState } from 'react'
|
||||
import { AlertTriangle, ExternalLink, FolderPlus, GitBranchPlus, Star, X } from 'lucide-react'
|
||||
import { cn } from '../lib/utils'
|
||||
import { useAppStore } from '../store'
|
||||
import { cn } from '../lib/class-names'
|
||||
import { useAppStore } from '../store/index'
|
||||
import { isGitRepoKind } from '../../../shared/repo-kind'
|
||||
import type { Repo } from '../../../shared/repo-types'
|
||||
import {
|
||||
|
||||
@@ -14,11 +14,11 @@ import {
|
||||
} from '@/components/editor/rich-markdown/document/rich-markdown-source-transport'
|
||||
import { LinearIssueMarkdownToolbar } from '@/components/LinearIssueMarkdownToolbar'
|
||||
import { RichMarkdownTableControls } from '@/components/editor/rich-markdown/tables/RichMarkdownTableControls'
|
||||
import { isScreenSubmitShortcut } from '@/lib/screen-submit-shortcut'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { isScreenSubmitShortcut } from '@/lib/keyboard/screen-submit-shortcut'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { useAppStore } from '@/store'
|
||||
import { useAppStore } from '@/store/index'
|
||||
import {
|
||||
getRichMarkdownSpellcheckAttribute,
|
||||
useRichMarkdownSpellcheckAttribute
|
||||
|
||||
@@ -17,7 +17,7 @@ import {
|
||||
} from 'lucide-react'
|
||||
|
||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
|
||||
|
||||
@@ -7,9 +7,12 @@ import { toast } from 'sonner'
|
||||
|
||||
import { LinearIssueMarkdownDescriptionEditor } from '@/components/LinearIssueMarkdownDescriptionEditor'
|
||||
import { useMountedRef } from '@/hooks/useMountedRef'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { useAppStore } from '@/store'
|
||||
import { getScreenSubmitShortcutLabel, isScreenSubmitShortcut } from '@/lib/screen-submit-shortcut'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useAppStore } from '@/store/index'
|
||||
import {
|
||||
getScreenSubmitShortcutLabel,
|
||||
isScreenSubmitShortcut
|
||||
} from '@/lib/keyboard/screen-submit-shortcut'
|
||||
import { linearUpdateIssue } from '@/runtime/linear/runtime-linear-issue-client'
|
||||
import type { LinearIssue } from '../../../shared/linear/issue-types'
|
||||
import type { TaskSourceContext } from '../../../shared/work-items/task-source-context'
|
||||
|
||||
@@ -7,7 +7,7 @@ import type {
|
||||
import { UpdateErrorCardContent } from './UpdateErrorCardContent'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { linuxPackageCommandUnavailableText } from '@/lib/updater-message-copy'
|
||||
import { linuxPackageCommandUnavailableText } from '@/app-shell/updates/updater-message-copy'
|
||||
import { useMountedRef } from '@/hooks/useMountedRef'
|
||||
|
||||
function copiedNote(packageFileName: string): string {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import React from 'react'
|
||||
import { Hourglass, Loader2 } from 'lucide-react'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
|
||||
// Reduced motion uses an hourglass rather than a stuck spinner. Hide it only when motion is allowed; hidden plus motion-reduce:block left it hidden.
|
||||
export function LoadingSpinner({ className }: { className?: string }): React.JSX.Element {
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
import React from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { toast } from 'sonner'
|
||||
import { useAppStore } from '@/store'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { useAppStore } from '@/store/index'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { getAgentCatalog } from '@/lib/agent-catalog/agent-catalog'
|
||||
import { getScreenSubmitModifierLabel } from '@/lib/screen-submit-shortcut'
|
||||
import { getScreenSubmitModifierLabel } from '@/lib/keyboard/screen-submit-shortcut'
|
||||
import { resolveProjectCloneUrlPrefill } from '@/lib/workspace/creation/project-clone-url-prefill'
|
||||
import { useContextualTour } from '@/components/contextual-tours/use-contextual-tour'
|
||||
import {
|
||||
AddRemoteHostDialog,
|
||||
type AddRemoteHostMode
|
||||
} from '@/components/sidebar/host-admission/ssh/AddRemoteHostDialog'
|
||||
import { lazyWithRetry } from '@/lib/lazy-with-retry'
|
||||
import { lazyWithRetry } from '@/app-shell/startup/lazy-with-retry'
|
||||
import type * as SetProjectLocationDialogModule from '@/components/new-workspace/SetProjectLocationDialog'
|
||||
import { unwrapRuntimeRpcResult } from '@/runtime/rpc/calls/runtime-rpc-result'
|
||||
import { withUiConnectTimeout } from '@/ssh/ssh-connect-ui-timeout'
|
||||
|
||||
@@ -13,7 +13,7 @@ import { agentChoicePending } from '@/lib/agent-session/launch/inventory/host-ch
|
||||
import type { AgentLaunchSurface } from '@/lib/agent-session/launch/routing/agent-session-launch-plan'
|
||||
import React, { Suspense, useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import { useAppStore } from '@/store/index'
|
||||
import { lazyWithRetry } from '@/lib/lazy-with-retry'
|
||||
import { lazyWithRetry } from '@/app-shell/startup/lazy-with-retry'
|
||||
import {
|
||||
Dialog,
|
||||
DialogContent,
|
||||
@@ -35,7 +35,7 @@ import {
|
||||
} from '@/lib/workspace/creation/quick-workspace-agent-selection'
|
||||
import { useAgentsOfferedForLaunch } from '@/lib/agent-session/launch/inventory/host-chat-program-acquisition'
|
||||
import { shouldAllowComposerEnterSubmitTarget } from '@/lib/workspace/creation/new-workspace-enter-guard'
|
||||
import { isScreenSubmitShortcut } from '@/lib/screen-submit-shortcut'
|
||||
import { isScreenSubmitShortcut } from '@/lib/keyboard/screen-submit-shortcut'
|
||||
import type { TuiAgent } from '../../../shared/agent-launch/catalog/tui-agent'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
|
||||
@@ -3,8 +3,8 @@ import { toast } from 'sonner'
|
||||
import { Button } from './ui/button'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { useAppStore } from '../store'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useAppStore } from '../store/index'
|
||||
|
||||
async function copySignInLink(link: string): Promise<void> {
|
||||
try {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
|
||||
function KeyCap({
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Suspense } from 'react'
|
||||
import { lazyWithRetry as lazy } from '@/lib/lazy-with-retry'
|
||||
import { lazyWithRetry as lazy } from '@/app-shell/startup/lazy-with-retry'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import type { TerminalController } from './use-terminal-controller'
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { useEffect, useState } from 'react'
|
||||
import { BookOpen, ChevronDown, CircleUserRound, Files, Smartphone, X } from 'lucide-react'
|
||||
import { useAppStore } from '../store'
|
||||
import { useAppStore } from '../store/index'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { Button } from './ui/button'
|
||||
import { Card } from './ui/card'
|
||||
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from './ui/collapsible'
|
||||
|
||||
@@ -2,11 +2,11 @@ import { useCallback, useEffect, useRef, useState } from 'react'
|
||||
import { X } from 'lucide-react'
|
||||
import type { ChangelogData } from '../../../shared/update-status-types'
|
||||
import { usePrefersReducedMotion } from '@/hooks/usePrefersReducedMotion'
|
||||
import { useAppStore } from '../store'
|
||||
import { useAppStore } from '../store/index'
|
||||
import { Card } from './ui/card'
|
||||
import { Button } from './ui/button'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { updaterMessageText } from '@/lib/updater-message-copy'
|
||||
import { updaterMessageText } from '@/app-shell/updates/updater-message-copy'
|
||||
import { UpdateCardStateContent } from './maintenance/update-card/UpdateCardStateContent'
|
||||
import { buildUpdateCardErrorModel } from './maintenance/update-card/update-card-error-model'
|
||||
import {
|
||||
|
||||
@@ -10,10 +10,10 @@ import {
|
||||
} from '@/components/ui/context-menu'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { useTranslate, type Translate } from '@/i18n/use-translate'
|
||||
import { CLOSE_ALL_CONTEXT_MENUS_EVENT } from '@/lib/close-all-context-menus'
|
||||
import { CLOSE_ALL_CONTEXT_MENUS_EVENT } from '@/lib/overlay-interaction/close-all-context-menus'
|
||||
import { formatClipboardFilePath } from '@/lib/clipboard/clipboard-file-path'
|
||||
import { getWorktreeRowLocalPathOpenOwner } from '@/lib/workspace/ownership/worktree-row-open-in-owner'
|
||||
import { useAppStore } from '@/store'
|
||||
import { useAppStore } from '@/store/index'
|
||||
import {
|
||||
clearActivityThread,
|
||||
clearCompletedActivity,
|
||||
|
||||
@@ -3,7 +3,7 @@ import { ChevronDown } from 'lucide-react'
|
||||
import { AgentStateDot } from '@/components/AgentStateDot'
|
||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
|
||||
import { useNow } from '@/hooks/use-now'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { formatShortTimeAgo } from '@/lib/short-time-ago'
|
||||
import { RepoBadgeMark } from '@/components/repo/RepoBadgeLabel'
|
||||
import type { Repo } from '../../../../shared/repo-types'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React from 'react'
|
||||
import { MessageSquareText, TerminalSquare } from 'lucide-react'
|
||||
import { AgentTypeIcon } from '@/components/agent/icons/agent-type-icon'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { EventRepoBadge, ThreadAgentStateIndicator } from './activity-thread-controls'
|
||||
import type { ActivityTerminalPortalSlotId, AgentPaneThread } from './activity-thread-types'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React, { useCallback, useMemo } from 'react'
|
||||
import { Cloud, Copy, FolderGit2, GitBranch, Laptop, LocateFixed, Server } from 'lucide-react'
|
||||
import { toast } from 'sonner'
|
||||
import { useAppStore } from '@/store'
|
||||
import { useAppStore } from '@/store/index'
|
||||
import { RepoBadgeMark } from '@/components/repo/RepoBadgeLabel'
|
||||
import { AgentTypeIcon } from '@/components/agent/icons/agent-type-icon'
|
||||
import { formatAgentTypeLabel } from '../../../../shared/agent-status/presentation/agent-type-label'
|
||||
@@ -11,7 +11,7 @@ import { translate } from '@/i18n/i18n'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { formatClipboardFilePath } from '@/lib/clipboard/clipboard-file-path'
|
||||
import { getWorktreeRowLocalPathOpenOwner } from '@/lib/workspace/ownership/worktree-row-open-in-owner'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import {
|
||||
getExecutionHostLabel,
|
||||
getWorktreeExecutionHostId,
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
useVirtualizer,
|
||||
type Range
|
||||
} from '@tanstack/react-virtual'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { ActivityThreadListToolbar } from './activity-thread-list-toolbar'
|
||||
import {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type React from 'react'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
|
||||
export function ActivityThreadListResizeHandle({
|
||||
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
} from '@/components/ui/select'
|
||||
import { Toggle } from '@/components/ui/toggle'
|
||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { ActivityThreadOptionsMenu } from './activity-thread-controls'
|
||||
import type {
|
||||
|
||||
@@ -4,7 +4,7 @@ import { AgentTypeIcon } from '@/components/agent/icons/agent-type-icon'
|
||||
import { formatAgentTypeLabel } from '../../../../shared/agent-status/presentation/agent-type-label'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { useUiLanguageRevision } from '@/i18n/use-ui-language-revision'
|
||||
import '../sidebar/workspace-card/activity/worktree-card-empty-inputs'
|
||||
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
getAgentPickerCommandValue,
|
||||
searchAgentPickerEntries
|
||||
} from '@/lib/agent-catalog/agent-picker-search'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import type { TuiAgent } from '../../../../shared/agent-launch/catalog/tui-agent'
|
||||
import * as state from './agent-combobox-command-state'
|
||||
import {
|
||||
|
||||
@@ -2,7 +2,7 @@ import { terminalPendingLabel } from '../tab-bar/new-tab-agent-menu-model'
|
||||
import { useImperativeHandle, useRef, type Ref } from 'react'
|
||||
import { CornerDownLeft, MessageSquare, SquareTerminal } from 'lucide-react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { ShortcutKeyCombo } from '@/components/ShortcutKeyCombo'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { useTranslate, type Translate } from '@/i18n/use-translate'
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
} from '@/components/ui/command'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { agentModelChoiceChips } from './launch-settings/agent-model-choice-chips'
|
||||
import { isScreenSubmitShortcut } from '@/lib/screen-submit-shortcut'
|
||||
import { isScreenSubmitShortcut } from '@/lib/keyboard/screen-submit-shortcut'
|
||||
import { isImeOwnedKeyboardEvent } from '@/lib/text-input/ime/ime-composition-keyboard-event'
|
||||
import { AgentDefaultArgsInput } from './launch-settings/AgentLaunchDefaultsEditor'
|
||||
import { NativeChatSessionOptionRows } from '../native-chat/session/options/controls/NativeChatSessionOptionRows'
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import { useAppStateValue, useAppStateViewActive } from '@/store/retained-views/app-state-view'
|
||||
import React, { useCallback } from 'react'
|
||||
import { useAppStore } from '@/store'
|
||||
import { getOverlayFocusOwners, overlayFocusContains } from '@/lib/overlay-focus-ownership'
|
||||
import { useAppStore } from '@/store/index'
|
||||
import {
|
||||
getOverlayFocusOwners,
|
||||
overlayFocusContains
|
||||
} from '@/lib/overlay-interaction/overlay-focus-ownership'
|
||||
import {
|
||||
Dialog,
|
||||
DialogContent,
|
||||
@@ -15,7 +18,7 @@ import {
|
||||
isWindowsTerminalCapabilityHost,
|
||||
useLocalWindowsTerminalCapabilities
|
||||
} from '@/runtime/hosts/capabilities/windows-terminal-capabilities'
|
||||
import { isWebClientLocation } from '@/lib/web-client-location'
|
||||
import { isWebClientLocation } from '@/app-shell/platform/web-client-location'
|
||||
import { useWindowsTerminalCapabilityOwnerKey } from '@/hooks/useWindowsTerminalCapabilityOwnerKey'
|
||||
import { resolveSettingsHostScope } from '@/components/settings/host-scope/settings-host-scope'
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import React from 'react'
|
||||
import { MessageSquare, SquareTerminal } from 'lucide-react'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
|
||||
type AgentSurfaceLaunchButtonProps = Omit<React.ComponentProps<'button'>, 'children' | 'title'> & {
|
||||
title: string
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
ContextMenuItem,
|
||||
ContextMenuTrigger
|
||||
} from '@/components/ui/context-menu'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
|
||||
type ItemRenderArgs = {
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
rowLabel,
|
||||
rowTitle
|
||||
} from '@/components/tab-bar/tab-agent-row-presentation'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { useTranslate, type Translate } from '@/i18n/use-translate'
|
||||
import type { TuiAgent } from '../../../../shared/agent-launch/catalog/tui-agent'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React from 'react'
|
||||
import { cn } from '../../../lib/utils'
|
||||
import { cn } from '../../../lib/class-names'
|
||||
|
||||
export function PiIcon({
|
||||
size = 14,
|
||||
|
||||
@@ -19,7 +19,7 @@ import { useIntlLocale, useTranslate } from '@/i18n/use-translate'
|
||||
import { AgentIcon } from '@/components/agent/icons/AgentIcon'
|
||||
import { buildFontFamily } from '../../../../../shared/monospace-font-family'
|
||||
import { resolveEffectiveTerminalAppearance } from '@/lib/terminal-theme'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
|
||||
// The tip's chat miniature, finished and denser so it fits a tile; nothing here animates.
|
||||
const CHAT_SCALE: CSSProperties & { '--chat-font-size': string } = { '--chat-font-size': '10px' }
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useTranslate } from '../../../i18n/use-translate'
|
||||
import { cn } from '../../../lib/utils'
|
||||
import { cn } from '../../../lib/class-names'
|
||||
import { ChevronDown } from 'lucide-react'
|
||||
import { Button } from '../../ui/button'
|
||||
import { Label } from '../../ui/label'
|
||||
|
||||
@@ -3,12 +3,12 @@ import { Loader2 } from 'lucide-react'
|
||||
import type { ArtifactListItem } from '../../../../shared/artifacts/artifacts'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { clampArtifactListSearchQuery, filterArtifactsBySearchQuery } from './artifact-list-search'
|
||||
import { ArtifactListRows } from './ArtifactListRows'
|
||||
import { ArtifactListTableHeader } from './ArtifactListTableHeader'
|
||||
import { ArtifactListToolbar } from './ArtifactListToolbar'
|
||||
import { LIST_TABLE_CONTAINER_CLASS } from '@/lib/list-table-layout'
|
||||
import { LIST_TABLE_CONTAINER_CLASS } from '@/lib/list-interaction/list-table-layout'
|
||||
|
||||
export function ArtifactCollection({
|
||||
artifacts,
|
||||
|
||||
@@ -19,8 +19,11 @@ import {
|
||||
} from '@/components/ui/dropdown-menu'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
import { useIntlLocale, useTranslate, type Translate } from '@/i18n/use-translate'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { isPortaledRowMenuClick, isRowActivationKey } from '@/lib/list-row-interaction'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import {
|
||||
isPortaledRowMenuClick,
|
||||
isRowActivationKey
|
||||
} from '@/lib/list-interaction/list-row-interaction'
|
||||
import {
|
||||
artifactName,
|
||||
artifactTypeLabel,
|
||||
@@ -34,7 +37,7 @@ import {
|
||||
LIST_TABLE_ROW_CLASS,
|
||||
LIST_TABLE_ROW_DIVIDER_CLASS,
|
||||
LIST_TABLE_ROW_SELECTED_CLASS
|
||||
} from '@/lib/list-table-layout'
|
||||
} from '@/lib/list-interaction/list-table-layout'
|
||||
|
||||
type ArtifactRowAction = {
|
||||
key: string
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Search, X } from 'lucide-react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Input } from '@/components/ui/input'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
|
||||
export function ArtifactListSearchField({
|
||||
query,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { ARTIFACTS_TABLE_GRID_CLASS } from './artifacts-table-layout'
|
||||
import { LIST_TABLE_HEADER_CLASS } from '@/lib/list-table-layout'
|
||||
import { LIST_TABLE_HEADER_CLASS } from '@/lib/list-interaction/list-table-layout'
|
||||
|
||||
export function ArtifactListTableHeader(): React.JSX.Element {
|
||||
const t = useTranslate()
|
||||
|
||||
@@ -2,7 +2,7 @@ import { RefreshCw } from 'lucide-react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { ArtifactListSearchField } from './ArtifactListSearchField'
|
||||
|
||||
export function ArtifactListToolbar({
|
||||
|
||||
@@ -5,8 +5,8 @@ import { Button } from '@/components/ui/button'
|
||||
import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from '@/components/ui/popover'
|
||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { useAppStore } from '@/store'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useAppStore } from '@/store/index'
|
||||
import { ArtifactPublishedLinkPanel } from './ArtifactPublishedLinkPanel'
|
||||
import { getPublishedArtifactLink } from './artifact-published-link-client'
|
||||
import { publishArtifactFromSurface } from './artifact-publish-flow'
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Check, Copy, ExternalLink, Loader2, RefreshCw } from 'lucide-react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { copyArtifactLink, openArtifactInBrowser } from './artifact-link-actions'
|
||||
|
||||
export function ArtifactPublishedLinkPanel({
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { ARTIFACTS_TABLE_GRID_CLASS } from './artifacts-table-layout'
|
||||
import { LIST_TABLE_CONTAINER_CLASS, LIST_TABLE_HEADER_CLASS } from '@/lib/list-table-layout'
|
||||
import {
|
||||
LIST_TABLE_CONTAINER_CLASS,
|
||||
LIST_TABLE_HEADER_CLASS
|
||||
} from '@/lib/list-interaction/list-table-layout'
|
||||
|
||||
function SkeletonBar({ className }: { className?: string }): React.JSX.Element {
|
||||
return <div className={cn('animate-pulse rounded bg-muted/60', className)} />
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import React from 'react'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { AUTOMATIONS_TABLE_GRID_CLASS } from './listing/automations-table-layout'
|
||||
import {
|
||||
LIST_TABLE_CONTAINER_CLASS,
|
||||
LIST_TABLE_HEADER_CLASS,
|
||||
LIST_TABLE_STICKY_HEADER_CELL_CLASS,
|
||||
LIST_TABLE_STICKY_ROW_CELL_CLASS
|
||||
} from '@/lib/list-table-layout'
|
||||
} from '@/lib/list-interaction/list-table-layout'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
|
||||
function SkeletonBar({ className }: { className?: string }): React.JSX.Element {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React from 'react'
|
||||
import { CheckCircle2, CircleAlert } from 'lucide-react'
|
||||
import { Input } from '@/components/ui/input'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { describeAutomationSchedule } from '../../../../../shared/automations/scheduling/automation-schedules'
|
||||
import { getAutomationCronExpressionFields } from '../../../../../shared/automations/scheduling/automation-schedule-parsing'
|
||||
import { formatUiAutomationScheduleDescriptor } from '../details/automation-schedule-label'
|
||||
|
||||
@@ -7,7 +7,7 @@ import { isMonacoFindWidgetOpen } from '@/components/editor/monaco-find-widget'
|
||||
import { monacoTypographyOptions } from '@/lib/editor/appearance/editor-typography'
|
||||
import { useEditorTypography } from '@/hooks/use-editor-typography'
|
||||
import '@/lib/editor/monaco/monaco-setup'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { buildAutomationPromptEditorOptions } from './automation-editor-prompt-options'
|
||||
import { useMonacoTheme } from '@/hooks/use-monaco-theme'
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import { useAppStore } from '@/store/index'
|
||||
import { isGitRepoKind } from '../../../../../shared/repo-kind'
|
||||
import { getRepoExecutionHostId } from '../../../../../shared/execution-host'
|
||||
import { isRepoSearchQueryTooLarge, searchRepos } from '@/lib/repo-search'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useMountedRef } from '@/hooks/useMountedRef'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { projectHostCountLabel } from '@/components/project-host-count-label'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import {
|
||||
Select,
|
||||
SelectContent,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React from 'react'
|
||||
import { Check, ChevronDown } from 'lucide-react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
import { getVisibleAutomationSetupDecision } from './automation-setup-decision'
|
||||
import type { AutomationDraft } from './AutomationEditorDialog'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ImeInput } from '@/lib/text-input/ime/ime-text-field'
|
||||
import React from 'react'
|
||||
import { Clock } from 'lucide-react'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
|
||||
const TIME_SHELL_CLASS =
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
CommandList
|
||||
} from '@/components/ui/command'
|
||||
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { cn } from '@/lib/class-names'
|
||||
import type { Worktree } from '../../../../../shared/worktree/types'
|
||||
import { useTranslate } from '@/i18n/use-translate'
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user