refactor(renderer): organize runtime clients and feature state owners (#39292)

* refactor(renderer): organize runtime clients and feature state owners

* fix(refactor): preserve incoming consumers and validation routing

* fix(refactor): consolidate defining-owner type imports
This commit is contained in:
Neil
2026-11-06 21:32:59 -08:00
committed by GitHub
parent 11cad93421
commit 97f2de9913
933 changed files with 3722 additions and 6066 deletions
+2 -4
View File
@@ -344,7 +344,6 @@
2 test-no-real-time-wait:src/renderer/src/lib/execute-open-editor-path-move.test.ts
1 test-no-real-time-wait:src/renderer/src/lib/agent-session/resume/cli-fork/native-chat-cli-fork-preparation.test.ts
1 test-no-real-time-wait:src/renderer/src/lib/orca-yaml-trust-prompt-slot-eviction.test.ts
1 test-no-real-time-wait:src/renderer/src/store/slices/github-pr-checks-fetch.test.ts
2 test-no-real-time-wait:src/renderer/src/store/slices/workspace-cleanup-removal-preflight.test.ts
1 test-no-real-time-wait:src/renderer/src/store/terminals/legacy-relay-bridged-tab-close.test.ts
2 test-no-real-time-wait:src/shared/__tests__/process-host/windows-tree-kill-late-taskkill.win32.test.ts
@@ -804,9 +803,8 @@
1 test-no-wall-clock:src/renderer/src/lib/workspace/activation/worktree-activation-emptied-workspace-reseed.test.ts
1 test-no-wall-clock:src/renderer/src/runtime/close-mirrored-editor-tab.test.ts
2 test-no-wall-clock:src/renderer/src/runtime/structured-agent-session-tab-retirement.test.ts
2 test-no-wall-clock:src/renderer/src/store/slices/github-pr-branch-linked-pr-divergence.test.ts
1 test-no-wall-clock:src/renderer/src/store/slices/github-pr-refresh-hosted-review-cache-leak.test.ts
7 test-no-wall-clock:src/renderer/src/store/slices/jira.test.ts
2 test-no-wall-clock:src/renderer/src/store/github/pull-requests/github-pr-branch-linked-pr-divergence.test.ts
7 test-no-wall-clock:src/renderer/src/store/slices/jira/jira.test.ts
1 test-no-wall-clock:src/renderer/src/store/slices/store-sleep-exact-runtime-stop.test.ts
1 test-no-wall-clock:src/renderer/src/store/slices/worktrees-always-force-delete.test.ts
6 test-no-wall-clock:src/renderer/src/store/slices/worktrees-metadata-persistence.test.ts
+106 -107
View File
@@ -3,35 +3,41 @@
# This is a RATCHET: counts may only go DOWN. Only creation flows with no source row may read
# the default host, through defaultCreationHost. Everything else routes by the owner.
# Prune after removing reads: pnpm check:focus-read-ratchet --prune
2 src/renderer/src/App.tsx
3 src/renderer/src/app-shell/ActiveWorkspaceSyncGate.tsx # existing watch selector now visible through useCallback; includes its import-path occurrence
2 src/renderer/src/app-shell/use-app-shell-services.ts
2 src/renderer/src/App.tsx
1 src/renderer/src/component-fixtures/component-fixture-explorer.tsx # dev-only fixture page seeds default settings
1 src/renderer/src/components/JiraIssueWorkspace.tsx
1 src/renderer/src/components/Landing.tsx
3 src/renderer/src/components/LinearIssueTextEditor.tsx
3 src/renderer/src/components/LinearIssueWorkspace.tsx
5 src/renderer/src/components/LinearItemDrawer.tsx
1 src/renderer/src/components/NativeChatResumeOnRestartGroups.tsx
1 src/renderer/src/components/activity/ActivityPrototypePage.tsx
1 src/renderer/src/components/activity/activity-scope-filter-controls.tsx
2 src/renderer/src/components/activity/activity-thread-actions.ts
1 src/renderer/src/components/activity/ActivityPrototypePage.tsx
1 src/renderer/src/components/activity/use-agent-pane-threads.ts
4 src/renderer/src/components/agent/AgentSettingsDialog.tsx
1 src/renderer/src/components/automations/automation-host-client.ts
1 src/renderer/src/components/automations/automations-page-fixtures.ts
1 src/renderer/src/components/automations/use-automations-page-controller.ts
1 src/renderer/src/components/automations/use-automations-page-destination-form.ts
1 src/renderer/src/components/browser-pane/browser-reopen-on-server.ts
1 src/renderer/src/components/browser-pane/ReopenBrowserPageOnServerButton.tsx
1 src/renderer/src/components/browser-pane/browser-reopen-on-server.ts
1 src/renderer/src/components/browser-pane/stream-remote/use-remote-browser-page-stream.ts
1 src/renderer/src/components/browser-pane/stream-remote/use-remote-browser-stream-activation.ts
2 src/renderer/src/components/cmd-j/quick-action-context.ts
1 src/renderer/src/components/editor/csv/csv-link-routing.ts
2 src/renderer/src/components/editor/EditorContent.tsx
1 src/renderer/src/components/editor/EditorDiffFileSurface.tsx
1 src/renderer/src/components/editor/EditorEditFileSurface.tsx
1 src/renderer/src/components/editor/EditorMarkdownFileSurface.tsx
1 src/renderer/src/components/editor/csv/csv-link-routing.ts
1 src/renderer/src/components/editor/markdown-preview/links/markdown-preview-link-actions.ts
1 src/renderer/src/components/editor/markdown-preview/links/markdown-preview-system-link-action.ts
2 src/renderer/src/components/editor/markdown/documents/useMarkdownDocuments.ts
1 src/renderer/src/components/editor/restored-editor-workspace-runtime-owner.ts
2 src/renderer/src/components/editor/useEditorPanelContentState.ts
1 src/renderer/src/components/editor/useEditorPanelFileContentLoader.ts
2 src/renderer/src/components/editor/markdown/documents/useMarkdownDocuments.ts
2 src/renderer/src/components/feature-wall/ConnectIntegrationsList.tsx
1 src/renderer/src/components/feature-wall/FeatureWallBrowserAction.tsx
1 src/renderer/src/components/feature-wall/FeatureWallSetupChecklist.tsx
@@ -40,11 +46,16 @@
2 src/renderer/src/components/feature-wall/use-integration-connection-status.ts
1 src/renderer/src/components/floating-terminal/use-floating-terminal-panel-controller.ts
1 src/renderer/src/components/floating-terminal/use-floating-terminal-panel-store-state.ts
1 src/renderer/src/components/integrations/source-control/bitbucket-credentials-dialog.tsx
1 src/renderer/src/components/integrations/source-control/bitbucket-integration-card.tsx
3 src/renderer/src/components/integrations/source-control/cli-source-control-integration-cards.tsx
1 src/renderer/src/components/integrations/source-control/source-control-preflight-card-status.ts
2 src/renderer/src/components/integrations/source-control/token-source-control-integration-cards.tsx
3 src/renderer/src/components/integrations/task-trackers/jira-integration-card.tsx
2 src/renderer/src/components/integrations/task-trackers/linear-integration-card.tsx
1 src/renderer/src/components/jira-connect-dialog.tsx
1 src/renderer/src/components/jira-user-picker.tsx
1 src/renderer/src/components/JiraIssueWorkspace.tsx
1 src/renderer/src/components/landing-preflight-runtime.ts
1 src/renderer/src/components/Landing.tsx
1 src/renderer/src/components/linear-api-key-dialog.tsx
4 src/renderer/src/components/linear-issue-project-selector.tsx
2 src/renderer/src/components/linear-issue-sub-issues.tsx
@@ -52,99 +63,86 @@
2 src/renderer/src/components/linear-item-drawer-comment-footer.tsx
15 src/renderer/src/components/linear-item-drawer-edit-controller.tsx
1 src/renderer/src/components/linear-item-drawer-edit-section.tsx
3 src/renderer/src/components/LinearIssueTextEditor.tsx
3 src/renderer/src/components/LinearIssueWorkspace.tsx
5 src/renderer/src/components/LinearItemDrawer.tsx
1 src/renderer/src/components/native-chat/NativeChatVisualFrame.tsx
1 src/renderer/src/components/NativeChatResumeOnRestartGroups.tsx
1 src/renderer/src/components/new-workspace/use-jira-source-connection.ts
7 src/renderer/src/components/new-workspace/use-linear-source-connection.ts
1 src/renderer/src/components/new-workspace/use-smart-workspace-name-field-controller.ts
1 src/renderer/src/components/new-workspace/use-smart-workspace-secondary-searches.ts
6 src/renderer/src/components/new-workspace/use-work-item-source-foundation.ts
1 src/renderer/src/components/new-workspace/use-work-item-source-search.ts
1 src/renderer/src/components/provider-accounts/provider-account-scope.ts
2 src/renderer/src/components/right-sidebar/checks-panel/review-actions/checks-panel-hosted-review-click-routing.ts
1 src/renderer/src/components/right-sidebar/source-control/sync/git-history-commit-context-menu.tsx
1 src/renderer/src/components/right-sidebar/hosted-review/creation/use-create-pull-request-base-ref-discovery.ts
1 src/renderer/src/components/right-sidebar/hosted-review/creation/useCreatePullRequestDialogFields.ts
1 src/renderer/src/components/source-control/BaseRefPicker.tsx
1 src/renderer/src/components/integrations/source-control/bitbucket-credentials-dialog.tsx
1 src/renderer/src/components/integrations/source-control/bitbucket-integration-card.tsx
2 src/renderer/src/components/settings/browser/BrowserPane.tsx
3 src/renderer/src/components/integrations/source-control/cli-source-control-integration-cards.tsx
1 src/renderer/src/lib/skill-runtime-command.ts
1 src/renderer/src/components/settings/general/GeneralPane.tsx
1 src/renderer/src/components/settings/integrations/IntegrationsPane.tsx
3 src/renderer/src/components/integrations/task-trackers/jira-integration-card.tsx
1 src/renderer/src/components/skills/setup/linear-agent-skill-install-cta.tsx
3 src/renderer/src/components/settings/skills/linear/LinearAgentSkillPane.tsx
1 src/renderer/src/components/provider-accounts/provider-account-scope.ts
4 src/renderer/src/components/settings/runtime-environments/catalog/RuntimeEnvironmentsPane.tsx
2 src/renderer/src/components/settings/setup-guide/settings-setup-guide-progress.ts
1 src/renderer/src/components/right-sidebar/source-control/sync/git-history-commit-context-menu.tsx
2 src/renderer/src/components/settings/Settings.tsx
1 src/renderer/src/components/settings/setup-guide/SettingsSetupGuidePane.tsx
2 src/renderer/src/components/settings/browser/BrowserPane.tsx
1 src/renderer/src/components/settings/general/GeneralPane.tsx
1 src/renderer/src/components/settings/general/WorkspaceDirectorySetting.tsx
1 src/renderer/src/components/settings/integrations/IntegrationsPane.tsx
1 src/renderer/src/components/settings/navigation/SettingsSidebar.tsx
1 src/renderer/src/components/settings/shortcuts/ShortcutsPane.tsx
1 src/renderer/src/components/integrations/source-control/source-control-preflight-card-status.ts
2 src/renderer/src/components/integrations/task-trackers/linear-integration-card.tsx
2 src/renderer/src/components/settings/tasks/TasksPane.tsx
2 src/renderer/src/components/integrations/source-control/token-source-control-integration-cards.tsx
2 src/renderer/src/hooks/use-integration-provider-status-refresh.ts
1 src/renderer/src/components/settings/runtime-environments/catalog/use-runtime-environment-mutation-actions.ts
2 src/renderer/src/components/settings/navigation/use-settings-navigation-model.ts
3 src/renderer/src/components/settings/page/use-settings-store-model.ts
2 src/renderer/src/components/settings/page/use-settings-terminal-model.ts
4 src/renderer/src/components/settings/runtime-environments/catalog/RuntimeEnvironmentsPane.tsx
1 src/renderer/src/components/settings/runtime-environments/catalog/use-runtime-environment-mutation-actions.ts
1 src/renderer/src/components/settings/setup-guide/SettingsSetupGuidePane.tsx
2 src/renderer/src/components/settings/setup-guide/settings-setup-guide-progress.ts
1 src/renderer/src/components/settings/shortcuts/ShortcutsPane.tsx
3 src/renderer/src/components/settings/skills/linear/LinearAgentSkillPane.tsx
2 src/renderer/src/components/settings/tasks/TasksPane.tsx
4 src/renderer/src/components/settings/tasks/use-task-source-provider-readiness.ts
1 src/renderer/src/components/settings/general/WorkspaceDirectorySetting.tsx
1 src/renderer/src/components/setup-guide/SetupGuideModal.tsx
1 src/renderer/src/components/setup-guide/SetupGuideTelemetryObserver.tsx
2 src/renderer/src/components/setup-guide/use-setup-guide-progress.ts
2 src/renderer/src/components/sidebar/workspace-actions/deletion/delete-worktree-flow.ts
1 src/renderer/src/components/sidebar/workspace-actions/deletion/DeleteWorktreeDialog.tsx
1 src/renderer/src/components/sidebar/linear-agent-skill-runtime.ts
3 src/renderer/src/components/sidebar/LinearAgentSkillSetupPrompt.tsx
2 src/renderer/src/components/sidebar/worktree-list/listing/rendered-sidebar-worktree-order.ts
1 src/renderer/src/components/sidebar/worktree-list/listing/SavedHostScopeWidenGate.tsx
1 src/renderer/src/components/sidebar/setup-script-prompt-render-state.ts
1 src/renderer/src/components/sidebar/SetupGuideSidebarEntry.tsx
1 src/renderer/src/components/sidebar/SetupScriptPromptCard.tsx
2 src/renderer/src/components/sidebar/worktree-list/controls/sidebar-host-options.ts
1 src/renderer/src/components/sidebar/project-admission/drop/sidebar-project-drop.ts
1 src/renderer/src/components/sidebar/SidebarAgentsList.tsx
1 src/renderer/src/components/sidebar/SidebarSettingsHelpMenu.tsx
1 src/renderer/src/components/sidebar/SidebarTaskNavButton.tsx
1 src/renderer/src/components/sidebar/linear-agent-skill-runtime.ts
1 src/renderer/src/components/sidebar/project-admission/drop/sidebar-project-drop.ts
2 src/renderer/src/components/sidebar/project-admission/drop/useSidebarProjectDrop.ts
2 src/renderer/src/components/sidebar/project-admission/host-selection/use-add-repo-host-selection.ts
1 src/renderer/src/components/sidebar/setup-script-prompt-render-state.ts
1 src/renderer/src/components/sidebar/workspace-actions/deletion/DeleteWorktreeDialog.tsx
2 src/renderer/src/components/sidebar/workspace-actions/deletion/delete-worktree-flow.ts
1 src/renderer/src/components/sidebar/workspace-actions/deletion/use-delete-worktree-status-hydration.ts
1 src/renderer/src/components/sidebar/worktree-list/controls/use-sidebar-host-scope-options.ts
1 src/renderer/src/components/sidebar/workspace-board/surface/use-visible-workspace-kanban-worktree-ids.ts
1 src/renderer/src/components/sidebar/workspace-board/projection/use-workspace-kanban-board-projection.ts
1 src/renderer/src/components/sidebar/workspace-card/review/use-workspace-reference-details.ts
4 src/renderer/src/components/sidebar/workspace-board/projection/workspace-board-task-status-sync.ts
1 src/renderer/src/components/sidebar/workspace-board/surface/WorkspaceKanbanDrawer.tsx
1 src/renderer/src/components/sidebar/workspace-board/surface/use-visible-workspace-kanban-worktree-ids.ts
1 src/renderer/src/components/sidebar/workspace-card/controller/use-worktree-card-controller.ts
1 src/renderer/src/components/sidebar/workspace-card/details/use-worktree-card-review-details.ts
2 src/renderer/src/components/sidebar/project-admission/drop/useSidebarProjectDrop.ts
1 src/renderer/src/components/sidebar/worktree-list/listing/visible-worktree-options-from-state.ts
2 src/renderer/src/components/sidebar/worktree-list/listing/visible-worktrees.ts
4 src/renderer/src/components/sidebar/workspace-board/projection/workspace-board-task-status-sync.ts
1 src/renderer/src/components/sidebar/worktree-list/controls/workspace-options-menu-items.tsx
1 src/renderer/src/components/sidebar/workspace-card/template/card-activity-parts.tsx # parity oracle keeps the old secondary-rows read until it is deleted
1 src/renderer/src/components/sidebar/workspace-card/review/WorkspaceAttachmentSearch.tsx
1 src/renderer/src/components/sidebar/workspace-card/review/use-workspace-reference-details.ts
2 src/renderer/src/components/sidebar/workspace-card/review/workspace-reference-details.ts
1 src/renderer/src/components/sidebar/workspace-card/review/workspace-reference-refresh-targets.ts
1 src/renderer/src/components/sidebar/workspace-card/review/WorkspaceAttachmentSearch.tsx
1 src/renderer/src/components/sidebar/workspace-board/surface/WorkspaceKanbanDrawer.tsx
1 src/renderer/src/components/sidebar/workspace-card/surface/worktree-card-secondary-rows.tsx
1 src/renderer/src/components/sidebar/worktree-list/listing/worktree-filter-visibility.ts
1 src/renderer/src/components/sidebar/workspace-card/template/card-activity-parts.tsx # parity oracle keeps the old secondary-rows read until it is deleted
1 src/renderer/src/components/sidebar/workspace-visibility/dialog/WorktreeVisibilityDialog.tsx
1 src/renderer/src/components/sidebar/workspace-visibility/dialog/worktree-visibility-host-target.ts
2 src/renderer/src/components/sidebar/worktree-list/controls/sidebar-host-options.ts
1 src/renderer/src/components/sidebar/worktree-list/controls/use-sidebar-host-scope-options.ts
1 src/renderer/src/components/sidebar/worktree-list/controls/workspace-options-menu-items.tsx
1 src/renderer/src/components/sidebar/worktree-list/listing/SavedHostScopeWidenGate.tsx
1 src/renderer/src/components/sidebar/worktree-list/listing/WorktreeList.tsx
2 src/renderer/src/components/sidebar/worktree-list/listing/rendered-sidebar-worktree-order.ts
1 src/renderer/src/components/sidebar/worktree-list/listing/use-filters.ts
1 src/renderer/src/components/sidebar/worktree-list/listing/use-section-rows.ts
1 src/renderer/src/components/sidebar/worktree-list/listing/visible-worktree-options-from-state.ts
2 src/renderer/src/components/sidebar/worktree-list/listing/visible-worktrees.ts
1 src/renderer/src/components/sidebar/worktree-list/listing/worktree-filter-visibility.ts
1 src/renderer/src/components/sidebar/worktree-list/rows/ProjectGroupDialogs.tsx
1 src/renderer/src/components/sidebar/workspace-visibility/dialog/worktree-visibility-host-target.ts
1 src/renderer/src/components/sidebar/worktree-list/listing/WorktreeList.tsx
1 src/renderer/src/components/sidebar/workspace-visibility/dialog/WorktreeVisibilityDialog.tsx
1 src/renderer/src/components/skills/SkillsPage.tsx
1 src/renderer/src/components/skills/setup/linear-agent-skill-install-cta.tsx
1 src/renderer/src/components/source-control/BaseRefPicker.tsx
1 src/renderer/src/components/status-bar/ClaudeSwitcherMenu.tsx
1 src/renderer/src/components/status-bar/CodexSwitcherMenu.tsx
2 src/renderer/src/components/status-bar/provider-account-sync-key.ts
1 src/renderer/src/components/status-bar/SshStatusSegment.tsx
1 src/renderer/src/components/status-bar/StatusBarSurface.tsx
2 src/renderer/src/components/status-bar/provider-account-sync-key.ts
1 src/renderer/src/components/status-bar/usage-provider-settings-target.ts
1 src/renderer/src/components/status-bar/use-claude-switcher-state.ts
2 src/renderer/src/components/status-bar/use-codex-switcher-controller.ts
@@ -157,8 +155,12 @@
1 src/renderer/src/components/tab-bar/web-runtime-tab-move-mirror.ts
1 src/renderer/src/components/tab-bar/windows-shell-menu-visibility.ts
3 src/renderer/src/components/tab-group/useTabGroupCreationCommands.ts
1 src/renderer/src/components/task-page/jira/task-page-jira-status-order.ts
11 src/renderer/src/components/task-page/TaskPage.tsx
2 src/renderer/src/components/task-page/jira/IssueAssigneeField.tsx
1 src/renderer/src/components/task-page/jira/task-page-jira-status-order.ts
4 src/renderer/src/components/task-page/jira/use-task-page-jira-creation-metadata.ts
4 src/renderer/src/components/task-page/jira/use-task-page-jira-issue-creation.ts
1 src/renderer/src/components/task-page/jira/use-task-page-jira-list-effects.ts
1 src/renderer/src/components/task-page/linear/Filters.tsx
4 src/renderer/src/components/task-page/linear/task-page-linear-issue-model.tsx
8 src/renderer/src/components/task-page/linear/use-task-page-linear-board.ts
@@ -167,28 +169,24 @@
4 src/renderer/src/components/task-page/linear/use-task-page-linear-issue-creation.ts
2 src/renderer/src/components/task-page/linear/use-task-page-linear-project-creation.ts
5 src/renderer/src/components/task-page/linear/use-task-page-linear-view-state.ts
11 src/renderer/src/components/task-page/TaskPage.tsx
3 src/renderer/src/components/task-page/use-task-page-detail-routing.ts
2 src/renderer/src/components/task-page/use-task-page-provider-metadata.ts
2 src/renderer/src/components/task-page/use-task-page-source-availability.ts
1 src/renderer/src/components/terminal-pane/pty-connection/pane-connection-context.ts
1 src/renderer/src/components/terminal-pane/layout/close/retire-unbound-runtime-terminal-pane.ts
1 src/renderer/src/components/terminal-pane/viewport/terminal-fit-restore.ts
1 src/renderer/src/components/terminal-pane/links/terminal-link-open-hints.ts
2 src/renderer/src/components/terminal-pane/layout/close/terminal-pane-close-admission.ts
1 src/renderer/src/components/terminal-pane/mounting/terminal-pane-mount-preparation.ts
2 src/renderer/src/components/terminal-pane/layout/close/use-terminal-pane-close-actions.ts
2 src/renderer/src/components/task-page/use-task-page-store-bindings.ts
1 src/renderer/src/components/terminal-pane/controller/use-terminal-pane-controller.ts
1 src/renderer/src/components/terminal-pane/controller/use-terminal-pane-lifecycle.ts
1 src/renderer/src/components/terminal-pane/layout/close/retire-unbound-runtime-terminal-pane.ts
2 src/renderer/src/components/terminal-pane/layout/close/terminal-pane-close-admission.ts
2 src/renderer/src/components/terminal-pane/layout/close/use-terminal-pane-close-actions.ts
1 src/renderer/src/components/terminal-pane/links/terminal-link-open-hints.ts
1 src/renderer/src/components/terminal-pane/mounting/terminal-pane-mount-preparation.ts
1 src/renderer/src/components/terminal-pane/mounting/use-terminal-pane-mount-lifecycle.ts
1 src/renderer/src/components/terminal-pane/pty-connection/pane-connection-context.ts
1 src/renderer/src/components/terminal-pane/viewport/terminal-fit-restore.ts
1 src/renderer/src/components/terminal/terminal-tab-actions.ts
2 src/renderer/src/components/terminal/terminal-tab-bulk-actions.ts
2 src/renderer/src/components/terminal/terminal-tab-create.ts
2 src/renderer/src/components/use-new-linear-issue-projects.ts
4 src/renderer/src/components/task-page/jira/use-task-page-jira-creation-metadata.ts
4 src/renderer/src/components/task-page/jira/use-task-page-jira-issue-creation.ts
1 src/renderer/src/components/task-page/jira/use-task-page-jira-list-effects.ts
2 src/renderer/src/components/task-page/use-task-page-provider-metadata.ts
2 src/renderer/src/components/task-page/use-task-page-store-bindings.ts
5 src/renderer/src/components/use-terminal-create-actions.ts
3 src/renderer/src/components/worktree-jump/use-worktree-jump-palette-controller.ts
1 src/renderer/src/components/worktree-jump/use-worktree-jump-palette-create-action.ts
@@ -206,6 +204,7 @@
1 src/renderer/src/hooks/ipc-events/settings-sidebar-ipc-bridge.ts
1 src/renderer/src/hooks/ipc-events/terminal-request-ipc-bridge.ts
1 src/renderer/src/hooks/use-active-skill-discovery-runtime-target.ts
2 src/renderer/src/hooks/use-integration-provider-status-refresh.ts
1 src/renderer/src/hooks/useActiveProjectSkillRuntime.ts
1 src/renderer/src/hooks/useEditorExternalWatch.ts
1 src/renderer/src/hooks/useInstalledAgentSkills.ts
@@ -216,37 +215,37 @@
7 src/renderer/src/hooks/useSettingsNavigationMetadata.ts
1 src/renderer/src/hooks/useUnreadDockBadge.ts
2 src/renderer/src/hooks/useWindowsTerminalCapabilityOwnerKey.ts
1 src/renderer/src/lib/client-creation-action-error.ts
2 src/renderer/src/lib/client-creation-action-policy.ts
1 src/renderer/src/lib/default-creation-host.ts # the sanctioned reader of the default host
1 src/renderer/src/lib/agent-session/launch/new-tab/launch-agent-in-new-tab.ts
6 src/renderer/src/lib/browser/navigation/http-link-destinations.ts
1 src/renderer/src/lib/browser/navigation/http-link-localhost-route.ts # extracted from http-link-routing.ts
1 src/renderer/src/lib/browser/navigation/http-link-routing.ts
1 src/renderer/src/lib/agent-session/launch/new-tab/launch-agent-in-new-tab.ts
2 src/renderer/src/lib/browser/workspace/workspace-browser-tab-open.ts
1 src/renderer/src/lib/client-creation-action-error.ts
2 src/renderer/src/lib/client-creation-action-policy.ts
1 src/renderer/src/lib/default-creation-host.ts # the sanctioned reader of the default host
1 src/renderer/src/lib/launch-ai-vault-session.ts
1 src/renderer/src/lib/work-items/linear/linear-issue-url-lookup.ts
1 src/renderer/src/lib/work-items/linear/linear-issue-write.ts
1 src/renderer/src/lib/local-preflight-context.ts
2 src/renderer/src/lib/provider-runtime-context.ts
2 src/renderer/src/lib/repo-runtime-owner.ts
1 src/renderer/src/lib/runtime-session-mirror-owners.ts
1 src/renderer/src/lib/runtime-session-mirror-targets.ts
1 src/renderer/src/lib/single-runtime-legacy-owner.ts
1 src/renderer/src/lib/skill-runtime-command.ts
1 src/renderer/src/lib/terminal-close-route.ts
4 src/renderer/src/lib/terminal-worktree-route.ts # resolveTerminalPtyOwner: teardown, close and PTY identity read spawn's attribution (round 3 F8), which retired the deprecated resolver's readers
3 src/renderer/src/lib/unread-badge-count-selector.ts
1 src/renderer/src/lib/web-runtime-worktree-terminal-after-wake.ts
2 src/renderer/src/lib/browser/workspace/workspace-browser-tab-open.ts
1 src/renderer/src/lib/work-items/linear/linear-issue-url-lookup.ts
1 src/renderer/src/lib/work-items/linear/linear-issue-write.ts
1 src/renderer/src/lib/workspace/activation/worktree-activation.ts
1 src/renderer/src/lib/worktree-jump-navigation.ts
1 src/renderer/src/lib/workspace/ownership/worktree-runtime-owner.ts # a setup terminal with no row spawns on the focused runtime
17 src/renderer/src/runtime/runtime-jira-client.ts
2 src/renderer/src/runtime/runtime-jira-summary-client.ts
1 src/renderer/src/runtime/runtime-jira-target.ts
5 src/renderer/src/runtime/runtime-jira-user-fields-client.ts
8 src/renderer/src/runtime/runtime-linear-client.ts
6 src/renderer/src/runtime/runtime-linear-issue-mutations.ts
12 src/renderer/src/runtime/runtime-linear-project-client.ts
1 src/renderer/src/lib/worktree-jump-navigation.ts
17 src/renderer/src/runtime/jira/runtime-jira-client.ts
2 src/renderer/src/runtime/jira/runtime-jira-summary-client.ts
5 src/renderer/src/runtime/jira/runtime-jira-user-fields-client.ts
8 src/renderer/src/runtime/linear/runtime-linear-client.ts
6 src/renderer/src/runtime/linear/runtime-linear-issue-client.ts
12 src/renderer/src/runtime/linear/runtime-linear-project-client.ts
5 src/renderer/src/runtime/use-runtime-session-mirror-environment-key.ts
2 src/renderer/src/runtime/web-runtime-browser-creation.ts
1 src/renderer/src/runtime/web-runtime-initial-terminal-bootstrap-dispatch.ts
@@ -258,33 +257,32 @@
2 src/renderer/src/runtime/web-session-tabs-sync/global-session-subscription.ts
1 src/renderer/src/runtime/web-session-tabs-sync/tracking-decisions.ts
3 src/renderer/src/runtime/web-session-tabs-sync/use-web-session-tabs-sync.ts
1 src/renderer/src/store/github/visible-hosted-review-refresh-targets.ts
9 src/renderer/src/store/index.ts
2 src/renderer/src/store/project-groups/project-group-mutations.ts
1 src/renderer/src/store/repos/all-host-repo-catalog-actions.ts
2 src/renderer/src/store/repos/repo-add-actions.ts
1 src/renderer/src/store/repos/repo-update.ts
1 src/renderer/src/store/repos/runtime-repo-catalog-actions.ts
16 src/renderer/src/store/slices/browser/browser-cookie-import-actions.ts
1 src/renderer/src/store/slices/browser/browser-host-actions.ts
6 src/renderer/src/store/slices/browser/browser-host-state.ts
13 src/renderer/src/store/slices/browser/browser-profile-import-actions.ts
8 src/renderer/src/store/slices/browser/browser-profile-list-actions.ts
4 src/renderer/src/store/slices/browser/browser-tab-actions.ts
1 src/renderer/src/store/slices/browser/create-browser-slice.ts
1 src/renderer/src/store/slices/browser/paired-browser-tab-creator.ts
1 src/renderer/src/store/slices/editor/actions/markdown-link-action.ts
1 src/renderer/src/store/slices/editor/actions/markdown-preview-actions.ts
1 src/renderer/src/store/slices/editor/actions/open-file-action.ts
1 src/renderer/src/store/slices/editor/actions/open-file-apply.ts
1 src/renderer/src/store/slices/browser/hosts/browser-host-actions.ts
6 src/renderer/src/store/slices/browser/hosts/browser-host-state.ts
16 src/renderer/src/store/slices/browser/profiles/browser-cookie-import-actions.ts
13 src/renderer/src/store/slices/browser/profiles/browser-profile-import-actions.ts
8 src/renderer/src/store/slices/browser/profiles/browser-profile-list-actions.ts
4 src/renderer/src/store/slices/browser/tabs/browser-tab-actions.ts
1 src/renderer/src/store/slices/browser/tabs/paired-browser-tab-creator.ts
1 src/renderer/src/store/slices/editor/create-editor-slice.ts
1 src/renderer/src/store/slices/hosted-review-cache-identity.ts
5 src/renderer/src/store/slices/jira-collection-read-actions.ts
31 src/renderer/src/store/slices/jira-connection-actions.ts
8 src/renderer/src/store/slices/jira-issue-read-actions.ts
6 src/renderer/src/store/slices/jira-read-coordination.ts
3 src/renderer/src/store/slices/jira.ts
11 src/renderer/src/store/slices/linear.ts
1 src/renderer/src/store/slices/editor/markdown/markdown-link-action.ts
1 src/renderer/src/store/slices/editor/markdown/markdown-preview-actions.ts
1 src/renderer/src/store/slices/editor/opening/open-file-action.ts
1 src/renderer/src/store/slices/editor/opening/open-file-apply.ts
1 src/renderer/src/store/slices/hosted-review/hosted-review-cache-identity.ts
1 src/renderer/src/store/slices/hosted-review/refresh/visible-hosted-review-refresh-targets.ts
5 src/renderer/src/store/slices/jira/jira-collection-read-actions.ts
32 src/renderer/src/store/slices/jira/jira-connection-actions.ts
8 src/renderer/src/store/slices/jira/jira-issue-read-actions.ts
6 src/renderer/src/store/slices/jira/jira-read-coordination.ts
3 src/renderer/src/store/slices/jira/jira.ts
2 src/renderer/src/store/slices/linear/linear-cache.ts
5 src/renderer/src/store/slices/linear/linear-custom-view-detail-actions.ts
3 src/renderer/src/store/slices/linear/linear-custom-view-issue-actions.ts
@@ -303,6 +301,7 @@
6 src/renderer/src/store/slices/linear/linear-slice-scope.ts
11 src/renderer/src/store/slices/linear/linear-slice-status-actions.ts
6 src/renderer/src/store/slices/linear/linear-team-actions.ts
11 src/renderer/src/store/slices/linear/linear.ts
2 src/renderer/src/store/slices/preflight.ts
1 src/renderer/src/store/slices/repo-host-identity.ts
1 src/renderer/src/store/slices/repo-reorder-host-split.ts
+31 -31
View File
@@ -4903,9 +4903,9 @@
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/sessions/browser-session-partition-policies.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/browser/sessions/browser-session-partition-policies.test.ts src/main/browser/document-preview/doc-preview-guest-policy.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.failure-message.test.tsx",
"pnpm exec vitest run --config config/vitest.config.ts src/main/window/main-window-webview-security.test.ts src/main/browser/document-preview/doc-preview-guest-policy.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx src/shared/doc-preview-scheme.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx src/shared/doc-preview-scheme.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.failure-message.test.tsx",
"pnpm exec vitest run --config config/vitest.config.ts src/preload/doc-preview-link-interception.test.ts src/main/browser/document-preview/doc-preview-guest-policy.test.ts src/main/window/main-window-webview-security.test.ts src/main/ipc/doc-preview-grant-ipc.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/browser/browser-preview-tool-authorization.test.ts src/main/browser/document-preview/doc-preview-guest-policy.test.ts src/main/ipc/browser/browser.test.ts",
@@ -4913,13 +4913,13 @@
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/browser/browser-preview-tool-authorization.test.ts src/main/browser/guest-lifecycle/manager/browser-manager-annotation-bridge.test.ts src/main/browser/guest-lifecycle/manager/browser-manager-guest-lifecycle.test.ts src/main/browser/backends/offscreen-browser-backend-lifecycle.test.ts src/main/browser/document-preview/doc-preview-guest-policy.test.ts src/shared/doc-preview-scheme.test.ts src/renderer/src/components/browser-pane/workspace-doc/doc-preview-document-actions.test.ts src/renderer/src/components/browser-pane/workspace-doc/use-doc-preview-guest-tools.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/doc-preview-grant-ipc.test.ts src/renderer/src/components/link-actions/LinkActionPopover.test.tsx src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/browser/browser-preview-tool-authorization.test.ts src/main/ipc/browser/browser-tab-registration-wait.test.ts src/main/ipc/doc-preview-grant-ipc.test.ts src/main/browser/guest-lifecycle/manager/browser-manager-guest-lifecycle.test.ts src/main/browser/guest-lifecycle/manager/browser-manager-annotation-bridge.test.ts src/main/browser/backends/offscreen-browser-backend-lifecycle.test.ts src/main/browser/document-preview/doc-preview-guest-policy.test.ts src/shared/doc-preview-scheme.test.ts src/renderer/src/components/browser-pane/workspace-doc/use-doc-preview-guest-tools.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-page-conversion.test.ts src/renderer/src/runtime/sync-runtime-graph-conversion-publish.test.ts src/renderer/src/lib/workspace-doc-address-input.test.ts src/shared/workspace-session/workspace-doc-history.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-page-conversion.test.ts src/renderer/src/runtime/sync-runtime-graph-conversion-publish.test.ts src/renderer/src/lib/workspace-doc-address-input.test.ts src/shared/workspace-session/workspace-doc-history.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"SKIP_BUILD=1 ORCA_E2E_WEB_CLIENT=1 ORCA_E2E_FORCE_HEADFUL=1 pnpm exec playwright test tests/e2e/paired-preview-address-bar-convergence.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1 --reporter=list",
"SKIP_BUILD=1 ORCA_E2E_WEB_CLIENT=1 ORCA_E2E_FORCE_HEADFUL=1 pnpm exec playwright test tests/e2e/paired-remote-html-preview-local-render.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1 --reporter=line",
"SKIP_BUILD=1 ORCA_E2E_WEB_CLIENT=1 ORCA_E2E_FORCE_HEADFUL=1 pnpm exec playwright test tests/e2e/paired-remote-html-preview-local-render.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1 --reporter=line --repeat-each=3",
"npx playwright test --config tests/playwright.config.ts --project=electron-headless tests/e2e/paired-remote-html-preview-local-render.spec.ts --workers=1",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/browser/client-pages/orca-runtime-browser.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/browser/client-pages/orca-runtime-browser.test.ts src/renderer/src/hooks/useIpcEvents-close-routing-browser-pages.test.ts src/renderer/src/hooks/useIpcEvents-close-routing-session-tabs.test.ts src/renderer/src/store/slices/browser.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/browser/client-pages/orca-runtime-browser.test.ts src/renderer/src/hooks/useIpcEvents-close-routing-browser-pages.test.ts src/renderer/src/hooks/useIpcEvents-close-routing-session-tabs.test.ts src/renderer/src/store/slices/browser/browser.test.ts",
"SKIP_BUILD=1 pnpm exec playwright test tests/e2e/paired-browser-create-navigation-deadline.spec.ts --config tests/playwright.config.ts --project electron-headful --workers=1",
"SKIP_BUILD=1 ORCA_E2E_FORCE_HEADFUL=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm exec playwright test tests/e2e/paired-browser-creation-reconciliation-failure.spec.ts --config tests/playwright.config.ts --project electron-headful --workers=1 --reporter=line",
"SKIP_BUILD=1 ORCA_E2E_FORCE_HEADFUL=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm exec playwright test tests/e2e/paired-browser-creation-reconciliation-failure.spec.ts --config tests/playwright.config.ts --project electron-headless --workers=1 --reporter=line"
@@ -4929,14 +4929,14 @@
"src/main/runtime/rpc/methods/browser/browser.test.ts",
"src/renderer/src/hooks/useIpcEvents-close-routing-browser-pages.test.ts",
"src/renderer/src/hooks/useIpcEvents-close-routing-session-tabs.test.ts",
"src/renderer/src/store/slices/browser.test.ts",
"src/renderer/src/store/slices/browser/browser.test.ts",
"src/main/browser/document-preview/doc-preview-grant-registry.test.ts",
"src/main/browser/document-preview/doc-preview-file-reader.test.ts",
"src/main/browser/sessions/browser-session-partition-policies.test.ts",
"src/main/browser/document-preview/doc-preview-guest-policy.test.ts",
"src/main/ipc/browser/browser-tab-registration-wait.test.ts",
"src/main/browser/document-preview/doc-preview-failure-notice.test.ts",
"src/renderer/src/store/slices/browser-workspace-doc-location.test.ts",
"src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts",
"src/preload/doc-preview-link-interception.test.ts",
"src/main/window/main-window-webview-security.test.ts",
"src/main/ipc/browser/browser-preview-tool-authorization.test.ts",
@@ -4954,7 +4954,7 @@
"src/main/ipc/doc-preview-grant-ipc.test.ts",
"src/renderer/src/components/link-actions/LinkActionPopover.test.tsx",
"src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts",
"src/renderer/src/store/slices/browser-page-conversion.test.ts",
"src/renderer/src/store/slices/browser/pages/browser-page-conversion.test.ts",
"src/renderer/src/runtime/sync-runtime-graph-conversion-publish.test.ts",
"src/renderer/src/lib/workspace-doc-address-input.test.ts",
"tests/e2e/paired-remote-html-preview-local-render.spec.ts",
@@ -4984,7 +4984,7 @@
"assertions": ["explicit cleanup cannot close a page owned by another worktree"]
},
{
"file": "src/renderer/src/store/slices/browser.test.ts",
"file": "src/renderer/src/store/slices/browser/browser.test.ts",
"assertions": [
"a requested canonical page ID is stored on the page rather than reused as its workspace ID",
"duplicate canonical page IDs are rejected before a second tab can materialize"
@@ -5077,7 +5077,7 @@
]
},
{
"file": "src/renderer/src/store/slices/browser-workspace-doc-location.test.ts",
"file": "src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts",
"assertions": [
"a document page's url is blank in the store, in the written session and after restore",
"a document navigation report leaves its URL blank, its title standing and nothing loading; its session excludes preview URLs"
@@ -5133,7 +5133,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/workspace-doc-page-pane.test.tsx src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"result": "failed",
"durationSeconds": 7,
"summary": "The adversarial pass answered the request for its own group-projection probe after this round landed, and it had measured a third observable this test was missing: the held-back group also has to leave the published layout tree, or the phone renders a split whose second pane can never hold anything. Adopted as a fourth assertion and re-run against the same sole delta, which now fails on the dangling-reference check and, with that check blinded, on the layout alone — group-left and group-right against the group-right the clean tree publishes. The two probes agreed on everything else, including that the tab list is unchanged under this mutant, which is why an assertion reading only the tab list cannot reach the site at all."
@@ -5143,7 +5143,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/workspace-doc-page-pane.test.tsx src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"result": "passed",
"durationSeconds": 3,
"summary": "The adversarial pass's four coverage findings, landed and pinned: 58/58. The third url door now keeps a document page blank and names it by its document, the group projection holds a document back from published groups as well as from the tab list, the pane's focus handoff is pinned in the widening direction as well as the narrowing one, and the handoff is re-offered when the window takes focus back."
@@ -5153,7 +5153,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/workspace-doc-page-pane.test.tsx src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"result": "failed",
"durationSeconds": 3,
"summary": "Three sole-delta mutants on the third url door, each failing only the new store test: committing the reported url onto a document page, dropping the document from the title normalizer there (which renames the tab New Tab, since a blank url is what that fallback reads), and marking a blank document page loading. The ordinary-page half of the same test passes under all three, so the door is pinned as a document-only refusal rather than as a door that writes nothing."
@@ -5163,7 +5163,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/workspace-doc-page-pane.test.tsx src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"result": "failed",
"durationSeconds": 3,
"summary": "Two sole-delta mutants on the mobile publish boundary. Dropping the document from the group projection's browser ids fails only the new grouped test — the tab list stays correct because the per-tab guard still refuses the tab, and what breaks is a published group whose order and active tab name a tab the phone is never sent. This is the survivor the adversarial pass reported: it survives the whole suite without this test, because no other test in it has tab groups. Dropping the per-tab guard instead fails only the ungrouped test, so the two halves of the boundary are pinned separately."
@@ -5173,7 +5173,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/workspace-doc-page-pane.test.tsx src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"result": "failed",
"durationSeconds": 3,
"summary": "Three sole-delta mutants widening the focus handoff, the direction the adversarial pass found uncovered: dropping the page-activity half, dropping the active-tab-type half, and dropping the active-browser-tab half each fail exactly one of the pane's refusals — the inactive page, the terminal in front, and the other browser tab respectively. The presence half of that test passes under all three, so a pane that had stopped offering focus at all would still fail rather than pass the refusals vacuously."
@@ -5183,7 +5183,7 @@
"runner": "local",
"platform": "macos",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/workspace-doc-page-pane.test.tsx src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts src/renderer/src/runtime/sync-runtime-graph-editor-diff-tabs.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx",
"result": "failed",
"durationSeconds": 3,
"summary": "One sole-delta mutant dropping the window-focus re-offer: the guest is focused once at mount and never again after the window comes back, which is the desktop gap behind it — another app taking the front leaves the preview's only route out shut until the pane remounts. It fails only the new re-offer test, and the refusing-preview case beside it stays green, so the re-offer is pinned as gated rather than unconditional."
@@ -5236,7 +5236,7 @@
"result": "passed",
"durationSeconds": 2.05,
"summary": "39/39 on the title-parity trio at the relocated path, replacing the 2026-08-27 record of the same three files, which killed five mutants as sole deltas: disabling the document branch restores New Tab for a named document, dropping the grant-URL refusal puts the scheme into the title, the tab mirror and the written session, returning New Tab instead of the file name breaks the fallback, removing the guest listener leaves the document unable to name its tab, and making the scheme test parse rather than prefix-match lets a title that merely looks like a preview URL through.",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx src/shared/doc-preview-scheme.test.ts"
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.toolbar.test.tsx src/shared/doc-preview-scheme.test.ts"
},
{
"date": "2026-08-27",
@@ -5259,7 +5259,7 @@
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/browser-pane/workspace-doc/HtmlDocPreview.failure-message.test.tsx"
},
{
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts",
"command": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts src/renderer/src/lib/file-preview.test.ts",
"date": "2026-08-27",
"runner": "local",
@@ -5286,7 +5286,7 @@
"result": "passed",
"durationSeconds": 1.54,
"summary": "10/10 on the candidate that gives a browser page a workspace-document location. The trap this is built around: page.url is read by persistence, the mobile publisher, history and the address bar, so a grant URL parked there would outlive the grant that named it and travel to readers that cannot resolve it. Creation overrides the url rather than trusting its caller, and restore re-asserts the same thing, so a session written by another build cannot carry one in. Red-green with each mutant as the sole delta: dropping the creation override writes the grant URL into the store and into the session payload; dropping the restore override brings a foreign session's grant URL back; leaving docLocation out of either browser schema strips it on load and restores the document as a blank New Tab under a strip entry that still names it (both schemas are plain z.object, and this is the trap that already cost one round on the editor schema); dropping it from the workspace build or the mirror leaves the tab entry naming a document its page has left, which the publish boundary reads; dropping the salvage-path copy loses the document when only the tab row survived; and dropping the address-bar exclusion focuses an address bar the surface does not have. The blank-url assertions are paired with a presence precondition in the same run: an ordinary tab created through the same call keeps its URL and does ask for the address bar.",
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser-workspace-doc-location.test.ts"
"currentCommand": "pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/browser/pages/browser-workspace-doc-location.test.ts"
},
{
"date": "2026-08-26",
@@ -8539,7 +8539,7 @@
"invariant": "Only an explicit user change in Settings > Remote Orca Servers > Advanced > Active Server may mutate activeRuntimeEnvironmentId. Connecting, pairing, disconnecting, selecting or revealing a workspace or terminal, browser/mobile handoff, remote navigation, and reconnect must use transient or target-owner routing and must never rewrite the durable preference. Every Add Project selected host must satisfy canSelectAddRepoHost; paired web has no local filesystem fallback, so no valid host means Browse, Clone, and Create remain disabled. Every operation stays on the host selected when it began, even if preference or catalog state changes. Generic settings mutation cannot bypass the dedicated preference IPC.",
"oracle": "Retained exact unchanged-source receipts remain the only current execution evidence. Reduced selectors have no fresh execution result. Historical pre-audit oracle account for changed sources: The retained unchanged-source receipts are the only current execution evidence; reduced-source assertions await validation. Historical oracle account (not a current claim for changed sources): The retained unchanged-source receipts are the only current execution evidence; reduced-source assertions await validation. Historical oracle account (not a current claim for changed sources): The retained unchanged-source receipts are the only current execution evidence; reduced-source assertions await validation. Historical oracle account (not a current claim for changed sources): Start with Active Server=Local desktop, connect and navigate Windows 2, then reveal a local terminal and assert it succeeds while the persisted preference remains local before and after restart. Repeat transient routing and selected-runtime Add Project operations with exact-ID host decoys and completion reordering. Separately pair the real web client to an isolated headed host, then make its sole still-listed runtime compatibility-blocked and unavailable. Require a null authoritative selection, a disabled host option, and disabled Browse, Clone, and Create actions with no local fallback. Repeat against headless serve. Run the byte-identical selector/action contract on latest main, candidate, and candidate with the eligibility seam disabled.",
"commands": [
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/runtime-environments/runtime-environments-pairing.test.ts src/renderer/src/store/slices/settings.test.ts src/renderer/src/store/slices/browser-session-host-selection.test.ts src/renderer/src/hooks/useIpcEvents-terminal-create-surfacing.test.ts src/renderer/src/web/web-preload-api-runtime-environment.test.ts --maxWorkers=1",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/runtime-environments/runtime-environments-pairing.test.ts src/renderer/src/store/slices/settings.test.ts src/renderer/src/store/slices/browser/hosts/browser-session-host-selection.test.ts src/renderer/src/hooks/useIpcEvents-terminal-create-surfacing.test.ts src/renderer/src/web/web-preload-api-runtime-environment.test.ts --maxWorkers=1",
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/lib/resolved-worktree-execution-host.test.ts src/renderer/src/lib/workspace/ownership/worktree-runtime-owner.test.ts src/renderer/src/store/slices/repos-catalog-reconciliation.test.ts src/renderer/src/store/slices/repos-project-groups.test.ts src/renderer/src/store/slices/repos-selected-owner-routing.test.ts src/renderer/src/store/slices/selected-host-active-workspace-identity.test.ts src/renderer/src/store/slices/worktrees-fetch-owner-routing.test.ts --maxWorkers=1",
"pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/sidebar/project-admission/dialog/AddRepoStartSteps.test.tsx --maxWorkers=1",
"pnpm run ensure:electron-runtime && npx playwright test tests/e2e/pr11346-selected-runtime-add.spec.ts --config tests/playwright.config.ts --project electron-headful --workers=1 --reporter=line",
@@ -8548,7 +8548,7 @@
"testFiles": [
"src/main/ipc/runtime-environments/runtime-environments-pairing.test.ts",
"src/renderer/src/store/slices/settings.test.ts",
"src/renderer/src/store/slices/browser-session-host-selection.test.ts",
"src/renderer/src/store/slices/browser/hosts/browser-session-host-selection.test.ts",
"src/renderer/src/hooks/useIpcEvents-terminal-create-surfacing.test.ts",
"src/renderer/src/web/web-preload-api-runtime-environment.test.ts",
"src/renderer/src/components/sidebar/project-admission/dialog/AddRepoStartSteps.test.tsx",
@@ -8570,7 +8570,7 @@
]
},
{
"file": "src/renderer/src/store/slices/browser-session-host-selection.test.ts",
"file": "src/renderer/src/store/slices/browser/hosts/browser-session-host-selection.test.ts",
"assertions": [
"a slower host profile response cannot overwrite the newly selected host",
"an import completion cannot refresh or overwrite a newly selected host"
@@ -14382,13 +14382,13 @@
"commands": [
"pnpm exec vitest run --config config/vitest.config.ts src/main/runtime/rpc/methods/files/files-watch-cleanup.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-unsubscribe-timeout.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watchers/filesystem-watcher.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity-wait.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/runtime-watcher-pending-assignment.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/main/runtime/rpc/methods/files/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/shared/promise-settlement-waiters.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/providers/local-pty/local-pty-provider-shutdown.test.ts src/main/daemon/providers/adapter/testing/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess/testing/pty-subprocess.test.ts src/main/daemon/sessions/testing/session.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watchers/filesystem-watcher.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/main/runtime/rpc/methods/files/files-watch-cancellation.test.ts src/renderer/src/runtime/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/providers/local-pty/local-pty-provider-shutdown.test.ts src/main/daemon/providers/adapter/testing/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess/testing/pty-subprocess.test.ts src/main/daemon/sessions/testing/session.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watchers/filesystem-watcher.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/renderer/src/runtime/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/providers/local-pty/local-pty-provider-shutdown.test.ts src/main/daemon/pty-subprocess/testing/pty-subprocess.test.ts src/main/daemon/sessions/testing/session.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/renderer/src/runtime/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/providers/local-pty/local-pty-provider-shutdown.test.ts src/main/daemon/pty-subprocess/testing/pty-subprocess.test.ts src/main/daemon/sessions/testing/session.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/renderer/src/runtime/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/providers/local-pty/local-pty-provider-shutdown.test.ts src/main/daemon/sessions/testing/session.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/renderer/src/runtime/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/renderer/src/runtime/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watchers/filesystem-watcher.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity-wait.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/runtime-watcher-pending-assignment.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/main/runtime/rpc/methods/files/files-watch-cancellation.test.ts src/renderer/src/runtime/files/watching/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/shared/promise-settlement-waiters.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/providers/local-pty/local-pty-provider-shutdown.test.ts src/main/daemon/providers/adapter/testing/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess/testing/pty-subprocess.test.ts src/main/daemon/sessions/testing/session.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watchers/filesystem-watcher.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-native-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-registry.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-child-launch.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-supervisor-capacity.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/main/runtime/rpc/methods/files/files-watch-cancellation.test.ts src/renderer/src/runtime/files/watching/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/shared/physical-exit-tracker.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/providers/local-pty/local-pty-provider-shutdown.test.ts src/main/daemon/providers/adapter/testing/daemon-pty-adapter.test.ts src/main/daemon/pty-subprocess/testing/pty-subprocess.test.ts src/main/daemon/sessions/testing/session.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watchers/filesystem-watcher.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/renderer/src/runtime/files/watching/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/providers/local-pty/local-pty-provider-shutdown.test.ts src/main/daemon/pty-subprocess/testing/pty-subprocess.test.ts src/main/daemon/sessions/testing/session.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts --reporter=dot",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/renderer/src/runtime/files/watching/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/providers/local-pty/local-pty-provider-shutdown.test.ts src/main/daemon/pty-subprocess/testing/pty-subprocess.test.ts src/main/daemon/sessions/testing/session.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/renderer/src/runtime/files/watching/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/providers/local-pty/local-pty-provider-shutdown.test.ts src/main/daemon/sessions/testing/session.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/renderer/src/runtime/files/watching/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts src/main/ipc/pty/pty-spawn-cwd-fallback.test.ts src/main/daemon/terminal-host/testing/terminal-host.test.ts src/main/daemon/terminal-host/testing/terminal-host-session-reaping-leak.test.ts",
"pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-process.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-disconnect-termination.test.ts src/main/ipc/filesystem/watcher-process/parcel-watcher-event-delivery.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-local-unsubscribe.test.ts src/main/ipc/filesystem/watchers/filesystem-watcher-wsl.test.ts src/main/ipc/worktrees-delete-pty-teardown.test.ts src/main/ipc/worktrees-orphan-directory-cleanup.test.ts src/main/ipc/worktrees-remove-preflight.test.ts src/main/workspaces/removal/watcher-removal-gate.test.ts src/main/runtime/file-watcher-host.test.ts src/main/runtime/orca-runtime-files-watch.test.ts src/main/runtime/workspaces/removal/worktree-teardown.test.ts src/main/runtime/orca-runtime.test.ts src/main/runtime/rpc/methods/files/files.test.ts src/renderer/src/runtime/files/watching/runtime-file-client-watch.test.ts src/renderer/src/web/web-runtime-client.test.ts src/shared/cross-platform-path.test.ts",
"pnpm run build:electron-vite",
"node config/scripts/diagnostics/runtime-watchers/runtime-file-watcher-resource-probe.mjs",
"node config/scripts/diagnostics/runtime-watchers/runtime-file-watcher-fault-harness.mjs",
@@ -14427,7 +14427,7 @@
"src/main/runtime/rpc/methods/files/files.test.ts",
"src/main/runtime/rpc/methods/files/files-watch-cancellation.test.ts",
"src/main/runtime/rpc/methods/files/files-watch-cleanup.test.ts",
"src/renderer/src/runtime/runtime-file-client-watch.test.ts",
"src/renderer/src/runtime/files/watching/runtime-file-client-watch.test.ts",
"src/renderer/src/web/web-runtime-client.test.ts",
"src/shared/cross-platform-path.test.ts",
"src/shared/physical-exit-tracker.test.ts",
@@ -14602,7 +14602,7 @@
]
},
{
"file": "src/renderer/src/runtime/runtime-file-client-watch.test.ts",
"file": "src/renderer/src/runtime/files/watching/runtime-file-client-watch.test.ts",
"assertions": [
"terminal watcher error and setup failure evict the shared entry before retrying callbacks run",
"an old stream end cannot evict the replacement stream, which still delivers to its listener",
+25 -25
View File
@@ -46,35 +46,35 @@
1 src/renderer/src/runtime/web-session-terminal-orphan-recovery-surface.ts
2 src/renderer/src/runtime/web-session-terminal-orphan-topology.ts
3 src/renderer/src/runtime/web-session-terminal-recovery-snapshot-validation.ts
10 src/renderer/src/store/slices/browser/browser-close-actions.ts
1 src/renderer/src/store/slices/browser/browser-hydration-actions.ts
1 src/renderer/src/store/slices/browser/browser-hydration-state.ts
5 src/renderer/src/store/slices/browser/browser-page-focus-actions.ts
2 src/renderer/src/store/slices/browser/browser-page-state-actions.ts
1 src/renderer/src/store/slices/browser/browser-tab-actions.ts
4 src/renderer/src/store/slices/browser/browser-tab-focus-actions.ts
5 src/renderer/src/store/slices/browser/browser-tab-open-view.ts # extracted from browser-tab-actions.ts
10 src/renderer/src/store/slices/browser/cleanup/browser-close-actions.ts
2 src/renderer/src/store/slices/browser/create-browser-slice.ts
9 src/renderer/src/store/slices/editor/actions/check-run-details-actions.ts
6 src/renderer/src/store/slices/editor/actions/close-file-action.ts
1 src/renderer/src/store/slices/editor/actions/git-status-actions.ts
4 src/renderer/src/store/slices/editor/actions/hydrated-editor-session-state.ts
3 src/renderer/src/store/slices/editor/actions/markdown-preview-actions.ts
3 src/renderer/src/store/slices/editor/actions/open-combined-diff.ts
1 src/renderer/src/store/slices/editor/actions/open-conflict-file.ts
6 src/renderer/src/store/slices/editor/actions/open-conflict-review.ts
3 src/renderer/src/store/slices/editor/actions/open-file-apply.ts
3 src/renderer/src/store/slices/editor/actions/open-file-mutations.ts
7 src/renderer/src/store/slices/editor/actions/open-file-state.ts
2 src/renderer/src/store/slices/editor/actions/open-history-diff.ts
1 src/renderer/src/store/slices/editor/actions/open-unstaged-diff.ts
10 src/renderer/src/store/slices/editor/actions/recently-closed-editor-tabs.ts
2 src/renderer/src/store/slices/editor/actions/rekey-open-files-action.ts
5 src/renderer/src/store/slices/editor/actions/restored-editor-owner-in-place.ts
10 src/renderer/src/store/slices/editor/actions/restored-editor-owner-transition.ts
1 src/renderer/src/store/slices/browser/hydration/browser-hydration-state.ts
5 src/renderer/src/store/slices/browser/pages/browser-page-focus-actions.ts
2 src/renderer/src/store/slices/browser/pages/browser-page-state-actions.ts
1 src/renderer/src/store/slices/browser/profiles/browser-profile-switch-actions.ts
1 src/renderer/src/store/slices/browser/tabs/browser-tab-actions.ts
4 src/renderer/src/store/slices/browser/tabs/browser-tab-focus-actions.ts
5 src/renderer/src/store/slices/browser/tabs/browser-tab-open-view.ts # extracted from browser-tab-actions.ts
9 src/renderer/src/store/slices/editor/checks/check-run-details-actions.ts
6 src/renderer/src/store/slices/editor/closing/close-file-action.ts
10 src/renderer/src/store/slices/editor/closing/recently-closed-editor-tabs.ts
3 src/renderer/src/store/slices/editor/file-ids/hydrated-editor-file-ids.ts
2 src/renderer/src/store/slices/editor/file-ids/hydrated-editor-file-selection.ts
1 src/renderer/src/store/slices/editor/file-ids/open-file-path-rekey.ts
2 src/renderer/src/store/slices/editor/file-ids/rekey-open-files-action.ts
1 src/renderer/src/store/slices/editor/git/git-status-actions.ts
3 src/renderer/src/store/slices/editor/git/open-combined-diff.ts
1 src/renderer/src/store/slices/editor/git/open-conflict-file.ts
6 src/renderer/src/store/slices/editor/git/open-conflict-review.ts
2 src/renderer/src/store/slices/editor/git/open-history-diff.ts
1 src/renderer/src/store/slices/editor/git/open-unstaged-diff.ts
4 src/renderer/src/store/slices/editor/hydration/hydrated-editor-session-state.ts
5 src/renderer/src/store/slices/editor/hydration/restored-editor-owner-in-place.ts
10 src/renderer/src/store/slices/editor/hydration/restored-editor-owner-transition.ts
3 src/renderer/src/store/slices/editor/markdown/markdown-preview-actions.ts
3 src/renderer/src/store/slices/editor/opening/open-file-apply.ts
3 src/renderer/src/store/slices/editor/opening/open-file-mutations.ts
7 src/renderer/src/store/slices/editor/opening/open-file-state.ts
4 src/renderer/src/store/slices/editor/tabs/editor-open-target-group.ts
1 src/renderer/src/store/slices/editor/tabs/workspace-editor-files.ts
2 src/renderer/src/store/slices/tab-group-reference-repair.ts
@@ -8218,7 +8218,6 @@
"src/renderer/src/runtime/editor-buffer-dirty-readers.test.ts": 1892,
"src/renderer/src/runtime/file-explorer-delete-owner-provenance.test.ts": 1878,
"src/renderer/src/runtime/focus-runtime-terminal-surface-readiness.test.ts": 329,
"src/renderer/src/runtime/github-check-details-timeout.test.ts": 58,
"src/renderer/src/runtime/host-model-catalog-snapshots.test.ts": 2348,
"src/renderer/src/runtime/host-session-mirror-hydration-frame-ordering.test.tsx": 2469,
"src/renderer/src/runtime/host-session-mirror-settle-receipt-frames.test.tsx": 2130,
@@ -8245,25 +8244,23 @@
"src/renderer/src/runtime/restored-client-hosted-browser-host-attach.test.ts": 43,
"src/renderer/src/runtime/restored-client-hosted-browser-host-restart-attach.test.ts": 474,
"src/renderer/src/runtime/runtime-client-events.test.ts": 64,
"src/renderer/src/runtime/runtime-directory-page-client.test.ts": 268,
"src/renderer/src/runtime/files/reads/runtime-directory-page-client.test.ts": 268,
"src/renderer/src/runtime/runtime-environment-pairing-refresh.test.ts": 109,
"src/renderer/src/runtime/runtime-environment-ssh-state.test.ts": 1810,
"src/renderer/src/runtime/runtime-file-client-mutation-ownership.test.ts": 536,
"src/renderer/src/runtime/runtime-file-client-search-listing.test.ts": 577,
"src/renderer/src/runtime/runtime-file-client-watch.test.ts": 497,
"src/renderer/src/runtime/runtime-file-client.test.ts": 582,
"src/renderer/src/runtime/runtime-file-import-pairing-revision.test.ts": 471,
"src/renderer/src/runtime/runtime-file-range-client.test.ts": 444,
"src/renderer/src/runtime/runtime-file-write-disk-precondition.test.ts": 478,
"src/renderer/src/runtime/runtime-git-client.test.ts": 513,
"src/renderer/src/runtime/files/search/runtime-file-client-search-listing.test.ts": 577,
"src/renderer/src/runtime/files/watching/runtime-file-client-watch.test.ts": 497,
"src/renderer/src/runtime/files/reads/runtime-file-client.test.ts": 582,
"src/renderer/src/runtime/files/imports/runtime-file-import-pairing-revision.test.ts": 471,
"src/renderer/src/runtime/files/reads/runtime-file-range-client.test.ts": 444,
"src/renderer/src/runtime/files/mutations/runtime-file-write-disk-precondition.test.ts": 478,
"src/renderer/src/runtime/source-control/git/runtime-git-client.test.ts": 513,
"src/renderer/src/runtime/runtime-host-account-sign-in-client.test.ts": 487,
"src/renderer/src/runtime/runtime-host-contact-regained.test.ts": 413,
"src/renderer/src/runtime/runtime-jira-image-client.test.ts": 214,
"src/renderer/src/runtime/runtime-jira-payload-stream.test.ts": 192,
"src/renderer/src/runtime/jira/runtime-jira-image-client.test.ts": 214,
"src/renderer/src/runtime/jira/runtime-jira-payload-stream.test.ts": 192,
"src/renderer/src/runtime/runtime-layout-client.test.ts": 165,
"src/renderer/src/runtime/runtime-legacy-recent-freshness.test.ts": 453,
"src/renderer/src/runtime/runtime-paged-file-read.test.ts": 1705,
"src/renderer/src/runtime/runtime-path-existence-queue-pairing.test.ts": 507,
"src/renderer/src/runtime/files/reads/runtime-paged-file-read.test.ts": 1705,
"src/renderer/src/runtime/runtime-quick-open-version-compatibility.test.ts": 451,
"src/renderer/src/runtime/runtime-rpc-client.test.ts": 342,
"src/renderer/src/runtime/runtime-terminal-artifact-write.test.ts": 567,
@@ -8353,13 +8350,12 @@
"src/renderer/src/store/always-mounted-selector-scan-cost.test.ts": 1727,
"src/renderer/src/store/editor-buffer-record-lifecycle.test.ts": 1794,
"src/renderer/src/store/folder-workspaces/folder-path-status-ownership.test.ts": 1809,
"src/renderer/src/store/github/check-actions-errors.test.ts": 520,
"src/renderer/src/store/github/check-details-failure-mapping.test.ts": 887,
"src/renderer/src/store/github/project-field-mutations.test.ts": 2100,
"src/renderer/src/store/github/provider-request-coalescing.test.ts": 969,
"src/renderer/src/store/github/refresh-event-noop-notification.test.ts": 1874,
"src/renderer/src/store/github/visible-hosted-review-refresh-scheduler.test.ts": 97,
"src/renderer/src/store/github/wsl-stopped-distro-poll-refusal.test.ts": 696,
"src/renderer/src/store/github/checks/check-actions-errors.test.ts": 520,
"src/renderer/src/store/github/checks/check-details-failure-mapping.test.ts": 887,
"src/renderer/src/store/github/projects/project-field-mutations.test.ts": 2100,
"src/renderer/src/store/github/requests/provider-request-coalescing.test.ts": 969,
"src/renderer/src/store/slices/hosted-review/refresh/visible-hosted-review-refresh-scheduler.test.ts": 97,
"src/renderer/src/store/github/repositories/wsl-stopped-distro-poll-refusal.test.ts": 696,
"src/renderer/src/store/host-twin-isolation.test.ts": 1889,
"src/renderer/src/store/host-twin-worktree-purge.test.ts": 1945,
"src/renderer/src/store/plugin-icon-themes.test.ts": 365,
@@ -8399,16 +8395,16 @@
"src/renderer/src/store/slices/agent-status/agent-status.test.ts": 2129,
"src/renderer/src/store/slices/all-host-catalog-settlement.test.ts": 1955,
"src/renderer/src/store/slices/ambiguous-owner-warning-worktree-removal-leak.test.ts": 2101,
"src/renderer/src/store/slices/browser-annotation-retention.test.ts": 8178,
"src/renderer/src/store/slices/browser-cleanup-close.test.ts": 1911,
"src/renderer/src/store/slices/browser-mount-admission-removal.test.ts": 1982,
"src/renderer/src/store/slices/browser-page-conversion.test.ts": 1777,
"src/renderer/src/store/slices/browser-remote-tab-creation.test.ts": 2119,
"src/renderer/src/store/slices/browser-session-host-selection.test.ts": 988,
"src/renderer/src/store/slices/browser-session-profiles.test.ts": 792,
"src/renderer/src/store/slices/browser-tab-creation-placement.test.ts": 1886,
"src/renderer/src/store/slices/browser-workspace-doc-location.test.ts": 2007,
"src/renderer/src/store/slices/browser.test.ts": 2001,
"src/renderer/src/store/slices/browser/annotations/browser-annotation-retention.test.ts": 8178,
"src/renderer/src/store/slices/browser/cleanup/browser-cleanup-close.test.ts": 1911,
"src/renderer/src/store/slices/browser/cleanup/browser-mount-admission-removal.test.ts": 1982,
"src/renderer/src/store/slices/browser/pages/browser-page-conversion.test.ts": 1777,
"src/renderer/src/store/slices/browser/hosts/browser-remote-tab-creation.test.ts": 2119,
"src/renderer/src/store/slices/browser/hosts/browser-session-host-selection.test.ts": 988,
"src/renderer/src/store/slices/browser/profiles/browser-session-profiles.test.ts": 792,
"src/renderer/src/store/slices/browser/tabs/browser-tab-creation-placement.test.ts": 1886,
"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/bulk-worktree-purge-terminal-maps-leak.test.ts": 1727,
"src/renderer/src/store/slices/cmd-j-create-actions.test.ts": 1879,
"src/renderer/src/store/slices/codex-restart-notice-lifecycle.test.ts": 1685,
@@ -8418,34 +8414,34 @@
"src/renderer/src/store/slices/detected-agents.test.ts": 643,
"src/renderer/src/store/slices/diff-comments-host-twins.test.ts": 1887,
"src/renderer/src/store/slices/diffComments.test.ts": 1896,
"src/renderer/src/store/slices/editor-branch-line-total.test.ts": 892,
"src/renderer/src/store/slices/editor-check-details-reading.test.ts": 945,
"src/renderer/src/store/slices/editor-check-details-reconstructed-owner.test.ts": 2056,
"src/renderer/src/store/slices/editor-check-details-tab-owner.test.ts": 1103,
"src/renderer/src/store/slices/editor-check-details-tabs.test.ts": 1814,
"src/renderer/src/store/slices/editor-close-background-file.test.ts": 893,
"src/renderer/src/store/slices/editor-close-document-siblings.test.ts": 1317,
"src/renderer/src/store/slices/editor-close-file-cleanup.test.ts": 2000,
"src/renderer/src/store/slices/editor-close-file-stale-active.test.ts": 1806,
"src/renderer/src/store/slices/editor-close-pinned-sibling.test.ts": 924,
"src/renderer/src/store/slices/editor-close-workspace-selection.test.ts": 1850,
"src/renderer/src/store/slices/editor-file-rename-twin-layout-owner.test.ts": 2090,
"src/renderer/src/store/slices/editor-git-status-reconciliation.test.ts": 870,
"src/renderer/src/store/slices/editor-layout-owner-records.test.ts": 2006,
"src/renderer/src/store/slices/editor-markdown-link-activation.test.ts": 953,
"src/renderer/src/store/slices/editor-markdown-view-state.test.ts": 801,
"src/renderer/src/store/slices/editor-open-diff.test.ts": 1987,
"src/renderer/src/store/slices/editor-open-link-placement.test.ts": 1987,
"src/renderer/src/store/slices/editor-preview-tab-setting.test.ts": 1952,
"src/renderer/src/store/slices/editor-read-only-tabs.test.ts": 901,
"src/renderer/src/store/slices/editor-recently-closed-tabs.test.ts": 1948,
"src/renderer/src/store/slices/editor-remote-branch-actions.test.ts": 935,
"src/renderer/src/store/slices/editor-session-duplicate-restore.test.ts": 1931,
"src/renderer/src/store/slices/editor-set-active-file-guard.test.ts": 895,
"src/renderer/src/store/slices/editor-state-worktree-purge-leak.test.ts": 1740,
"src/renderer/src/store/slices/editor-tab-layout-owner.test.ts": 1883,
"src/renderer/src/store/slices/editor-tab-placement.test.ts": 1837,
"src/renderer/src/store/slices/editor-tab-shared-project-owner.test.ts": 954,
"src/renderer/src/store/slices/editor/git/editor-branch-line-total.test.ts": 892,
"src/renderer/src/store/slices/editor/checks/editor-check-details-reading.test.ts": 945,
"src/renderer/src/store/slices/editor/checks/editor-check-details-reconstructed-owner.test.ts": 2056,
"src/renderer/src/store/slices/editor/checks/editor-check-details-tab-owner.test.ts": 1103,
"src/renderer/src/store/slices/editor/checks/editor-check-details-tabs.test.ts": 1814,
"src/renderer/src/store/slices/editor/closing/editor-close-background-file.test.ts": 893,
"src/renderer/src/store/slices/editor/closing/editor-close-document-siblings.test.ts": 1317,
"src/renderer/src/store/slices/editor/closing/editor-close-file-cleanup.test.ts": 2000,
"src/renderer/src/store/slices/editor/closing/editor-close-file-stale-active.test.ts": 1806,
"src/renderer/src/store/slices/editor/closing/editor-close-pinned-sibling.test.ts": 924,
"src/renderer/src/store/slices/editor/closing/editor-close-workspace-selection.test.ts": 1850,
"src/renderer/src/store/slices/editor/file-ids/editor-file-rename-twin-layout-owner.test.ts": 2090,
"src/renderer/src/store/slices/editor/git/editor-git-status-reconciliation.test.ts": 870,
"src/renderer/src/store/slices/editor/tabs/editor-layout-owner-records.test.ts": 2006,
"src/renderer/src/store/slices/editor/markdown/editor-markdown-link-activation.test.ts": 953,
"src/renderer/src/store/slices/editor/markdown/editor-markdown-view-state.test.ts": 801,
"src/renderer/src/store/slices/editor/git/editor-open-diff.test.ts": 1987,
"src/renderer/src/store/slices/editor/tabs/editor-open-link-placement.test.ts": 1987,
"src/renderer/src/store/slices/editor/tabs/editor-preview-tab-setting.test.ts": 1952,
"src/renderer/src/store/slices/editor/opening/editor-read-only-tabs.test.ts": 901,
"src/renderer/src/store/slices/editor/closing/editor-recently-closed-tabs.test.ts": 1948,
"src/renderer/src/store/slices/editor/git/editor-remote-branch-actions.test.ts": 935,
"src/renderer/src/store/slices/editor/hydration/editor-session-duplicate-restore.test.ts": 1931,
"src/renderer/src/store/slices/editor/focus/editor-set-active-file-guard.test.ts": 895,
"src/renderer/src/store/slices/editor/tabs/editor-state-worktree-purge-leak.test.ts": 1740,
"src/renderer/src/store/slices/editor/tabs/editor-tab-layout-owner.test.ts": 1883,
"src/renderer/src/store/slices/editor/tabs/editor-tab-placement.test.ts": 1837,
"src/renderer/src/store/slices/editor/tabs/editor-tab-shared-project-owner.test.ts": 954,
"src/renderer/src/store/slices/editor/buffers/editor-buffer-reconcile-identity.test.ts": 1775,
"src/renderer/src/store/slices/editor/buffers/editor-buffer-reconcile-joins.test.ts": 1766,
"src/renderer/src/store/slices/editor/buffers/editor-buffer-rejoin.test.ts": 1843,
@@ -8455,42 +8451,37 @@
"src/renderer/src/store/slices/folder-workspace-diff-comments.test.ts": 1042,
"src/renderer/src/store/slices/folder-workspace-owner-routed-mutations.test.ts": 1844,
"src/renderer/src/store/slices/generation-records-worktree-removal-leak.test.ts": 1612,
"src/renderer/src/store/slices/github-cache-eviction-and-bounds.test.ts": 767,
"src/renderer/src/store/slices/github-issue-state-machine.test.ts": 658,
"src/renderer/src/store/slices/github-linked-review-clear-ownership.test.ts": 891,
"src/renderer/src/store/slices/github-post-operation-owner.test.ts": 2062,
"src/renderer/src/store/slices/github-pr-branch-direct-refresh-scope.test.ts": 667,
"src/renderer/src/store/slices/github-pr-branch-fallback-results.test.ts": 658,
"src/renderer/src/store/slices/github-pr-branch-linked-pr-divergence.test.ts": 662,
"src/renderer/src/store/slices/github-pr-checks-fetch.test.ts": 766,
"src/renderer/src/store/slices/github-pr-comment-read-order.test.ts": 570,
"src/renderer/src/store/slices/github-pr-comments.test.ts": 746,
"src/renderer/src/store/slices/github-pr-host-scope.test.ts": 1030,
"src/renderer/src/store/slices/github-pr-manual-refresh-broadcast.test.ts": 693,
"src/renderer/src/store/slices/github-pr-refresh-hosted-review-cache-leak.test.ts": 772,
"src/renderer/src/store/slices/github-pr-refresh-sequences-leak.test.ts": 641,
"src/renderer/src/store/slices/github-pr-refresh-states-leak.test.ts": 1327,
"src/renderer/src/store/slices/github-pr-refresh-wsl-host-off.test.ts": 791,
"src/renderer/src/store/slices/github-pr-request-lifetime.test.ts": 1458,
"src/renderer/src/store/slices/github-project-view-tables.test.ts": 656,
"src/renderer/src/store/slices/github-provider-request-concurrency.test.ts": 644,
"src/renderer/src/store/slices/github-refresh-sweep.test.ts": 747,
"src/renderer/src/store/slices/github-repo-lookup-index.test.ts": 51,
"src/renderer/src/store/slices/github-review-thread-actions.test.ts": 574,
"src/renderer/src/store/slices/github-review-thread-rollback.test.ts": 663,
"src/renderer/src/store/slices/github-task-record-retries.test.ts": 758,
"src/renderer/src/store/slices/github-task-records.test.ts": 807,
"src/renderer/src/store/slices/github-work-items-error-envelope.test.ts": 1746,
"src/renderer/src/store/slices/github-work-items-pagination.test.ts": 1806,
"src/renderer/src/store/slices/github-work-items-runtime-routing.test.ts": 1891,
"src/renderer/src/store/slices/github-work-items-twin-cache-host.test.ts": 672,
"src/renderer/src/store/slices/hosted-review-request-lifetime.test.ts": 110,
"src/renderer/src/store/slices/hosted-review.test.ts": 320,
"src/renderer/src/store/github/issues/github-issue-state-machine.test.ts": 658,
"src/renderer/src/store/github/pull-requests/github-linked-review-clear-ownership.test.ts": 891,
"src/renderer/src/store/slices/editor/git/github-post-operation-owner.test.ts": 2062,
"src/renderer/src/store/github/pull-requests/github-pr-branch-direct-refresh-scope.test.ts": 667,
"src/renderer/src/store/github/pull-requests/github-pr-branch-fallback-results.test.ts": 658,
"src/renderer/src/store/github/pull-requests/github-pr-branch-linked-pr-divergence.test.ts": 662,
"src/renderer/src/store/github/checks/github-pr-checks-fetch.test.ts": 766,
"src/renderer/src/store/github/comments/github-pr-comment-read-order.test.ts": 570,
"src/renderer/src/store/github/comments/github-pr-comments.test.ts": 746,
"src/renderer/src/store/github/pull-requests/github-pr-host-scope.test.ts": 1030,
"src/renderer/src/store/github/refresh/github-pr-manual-refresh-broadcast.test.ts": 693,
"src/renderer/src/store/github/refresh/github-pr-refresh-states-leak.test.ts": 1327,
"src/renderer/src/store/github/repositories/github-pr-refresh-wsl-host-off.test.ts": 791,
"src/renderer/src/store/github/pull-requests/github-pr-request-lifetime.test.ts": 1458,
"src/renderer/src/store/github/projects/github-project-view-tables.test.ts": 656,
"src/renderer/src/store/github/repositories/github-repo-lookup-index.test.ts": 51,
"src/renderer/src/store/github/review-threads/github-review-thread-actions.test.ts": 574,
"src/renderer/src/store/github/review-threads/github-review-thread-rollback.test.ts": 663,
"src/renderer/src/store/github/task-records/github-task-record-retries.test.ts": 758,
"src/renderer/src/store/github/task-records/github-task-records.test.ts": 807,
"src/renderer/src/store/github/work-items/github-work-items-error-envelope.test.ts": 1746,
"src/renderer/src/store/github/work-items/github-work-items-pagination.test.ts": 1806,
"src/renderer/src/store/github/work-items/github-work-items-runtime-routing.test.ts": 1891,
"src/renderer/src/store/github/work-items/github-work-items-twin-cache-host.test.ts": 672,
"src/renderer/src/store/slices/hosted-review/hosted-review-request-lifetime.test.ts": 110,
"src/renderer/src/store/slices/hosted-review/hosted-review.test.ts": 320,
"src/renderer/src/store/slices/issue-source-preference-twin.test.ts": 1858,
"src/renderer/src/store/slices/jira-status-filter-cache.test.ts": 1770,
"src/renderer/src/store/slices/jira-web-client-status.test.ts": 1901,
"src/renderer/src/store/slices/jira.test.ts": 312,
"src/renderer/src/store/slices/linear-invalidation.test.ts": 117,
"src/renderer/src/store/slices/jira/jira-status-filter-cache.test.ts": 1770,
"src/renderer/src/store/slices/jira/jira-web-client-status.test.ts": 1901,
"src/renderer/src/store/slices/jira/jira.test.ts": 312,
"src/renderer/src/store/slices/linear/linear-invalidation.test.ts": 117,
"src/renderer/src/store/slices/local-detected-agent-state.test.ts": 596,
"src/renderer/src/store/slices/native-chat-launch-draft-teardown.test.ts": 1854,
"src/renderer/src/store/slices/new-markdown.test.ts": 1000,
@@ -27,7 +27,7 @@ export const PR_BROWSER_E2E_SOURCE_ROUTES = [
specs: ['tests/e2e/paired-preview-address-bar-convergence.spec.ts'],
matches: (file) =>
isProductSource(file) &&
/^src\/renderer\/src\/(?:components\/browser-pane\/(?:workspace-doc\/doc-preview-address-edit|navigate\/(?:workspace-doc-address-submission|use-client-hosted-page-url-submission)|assemble-chrome\/browser-address-bar-suggestions)|lib\/(?:workspace-doc-address-input|browser\/history\/browser-page-conversion-history)|store\/slices\/(?:browser-page-conversion|browser\/browser-page-conversion-actions))\.tsx?$/.test(
/^src\/renderer\/src\/(?:components\/browser-pane\/(?:workspace-doc\/doc-preview-address-edit|navigate\/(?:workspace-doc-address-submission|use-client-hosted-page-url-submission)|assemble-chrome\/browser-address-bar-suggestions)|lib\/(?:workspace-doc-address-input|browser\/history\/browser-page-conversion-history)|store\/slices\/browser\/pages\/(?:browser-page-conversion|browser-page-conversion-actions))\.tsx?$/.test(
file
)
},
@@ -567,8 +567,9 @@ function isProductBundlePath(file, extraPrefixes) {
// These shared fixtures are consumed only by unit tests.
export function isUnitTestSupportSource(file) {
return (
file === 'src/renderer/src/store/slices/editor-slice-test-harness.ts' ||
file === 'src/renderer/src/store/slices/browser-slice-test-harness.ts' ||
file === 'src/renderer/src/store/slices/editor/editor-slice-test-harness.ts' ||
file === 'src/renderer/src/store/slices/browser/browser-slice-test-harness.ts' ||
file === 'src/renderer/src/store/slices/linear/linear-slice-test-harness.ts' ||
file === 'src/renderer/src/runtime/web-runtime-session-test-harness.ts' ||
file === 'src/renderer/src/runtime/sync-runtime-graph-test-harness.ts' ||
file === 'src/renderer/src/runtime/web-session-tabs-sync-test-harness.ts' ||
@@ -54,12 +54,12 @@ describe('preview address-bar convergence E2E routing', () => {
'src/renderer/src/components/browser-pane/workspace-doc/doc-preview-address-edit.tsx',
'src/renderer/src/components/browser-pane/assemble-chrome/browser-address-bar-suggestions.ts',
'src/renderer/src/lib/workspace-doc-address-input.ts',
'src/renderer/src/store/slices/browser/browser-page-conversion-actions.ts'
'src/renderer/src/store/slices/browser/pages/browser-page-conversion-actions.ts'
])('routes %s', (path) => {
expect(selectPrE2eSpecs([path])).toContain(spec)
})
it.each([
'src/renderer/src/store/slices/browser-page-conversion.test.ts',
'src/renderer/src/store/slices/browser/pages/browser-page-conversion.test.ts',
'src/renderer/src/components/browser-pane/assemble-chrome/BrowserAddressBar.tsx'
])('does not route %s', (path) => {
expect(selectPrE2eSpecs([path])).not.toContain(spec)
@@ -101,7 +101,7 @@ describe('PR E2E gate contract', () => {
describe('GitHub Projects E2E routing', () => {
it.each([
'src/renderer/src/components/github-project/columns.ts',
'src/renderer/src/store/github/project-field-mutations.ts',
'src/renderer/src/store/github/projects/project-field-mutations.ts',
'src/main/github/project-view/project-field-mutations.ts',
'src/main/ipc/source-control/github-project-view-handlers.ts'
])('routes %s to the board spec', (file) => {
@@ -109,8 +109,8 @@ describe('GitHub Projects E2E routing', () => {
})
it('skips the board spec for unit tests and unrelated GitHub stores', () => {
for (const file of [
'src/renderer/src/store/github/project-field-mutations.test.ts',
'src/renderer/src/store/github/cache-model.ts'
'src/renderer/src/store/github/projects/project-field-mutations.test.ts',
'src/renderer/src/store/github/cache/cache-model.ts'
]) {
expect(selectPrE2eSpecs([file]), file).not.toContain('tests/e2e/github-project-board.spec.ts')
}
@@ -230,7 +230,7 @@ export const PR_E2E_SOURCE_ROUTES = [
specs: ['tests/e2e/ssh-orcad-browser-routing.spec.ts'],
matches: (file) =>
isProductSource(file) &&
/^src\/(?:main\/browser\/routing\/local-host-partitions\/local-ssh-browser|main\/ipc\/browser\.ts$|renderer\/src\/(?:lib\/(?:ssh-workspace-browser-route-eligibility|worktree-host-connection-phase)|components\/browser-pane\/use-ssh-workspace-browser-route|store\/repos\/converted-ssh-browser-pages|store\/slices\/browser\/browser-tab-actions|hooks\/ipc-events\/ssh-managed-server-state-effects))/.test(
/^src\/(?:main\/browser\/routing\/local-host-partitions\/local-ssh-browser|main\/ipc\/browser\.ts$|renderer\/src\/(?:lib\/(?:ssh-workspace-browser-route-eligibility|worktree-host-connection-phase)|components\/browser-pane\/use-ssh-workspace-browser-route|store\/repos\/converted-ssh-browser-pages|store\/slices\/browser\/tabs\/browser-tab-actions|hooks\/ipc-events\/ssh-managed-server-state-effects))/.test(
file
)
},
@@ -436,7 +436,7 @@ export const PR_E2E_SOURCE_ROUTES = [
specs: ['tests/e2e/paired-quick-open-large-tree.spec.ts'],
matches: (file) =>
isProductSource(file) &&
/^(?:src\/main\/ipc\/filesystem-(?:list-files|search-file-paths)\.ts|src\/main\/ripgrep\/bundled-ripgrep-path\.ts|src\/main\/providers\/(?:filesystem-provider-contract|ssh-filesystem-provider(?:-capabilities)?)\.ts|src\/main\/runtime\/(?:orca-runtime-files|rpc\/methods\/files)\.ts|src\/renderer\/src\/(?:components\/(?:QuickOpen|quick-open-file-list|quick-open-search)\.tsx?|runtime\/(?:runtime-file-search-client|runtime-legacy-quick-open-inventory)\.ts)|src\/shared\/(?:quick-open-(?:install-rg|path-search|transport-budget)|ripgrep-process-availability|bundled-ripgrep)\.ts)$/.test(
/^(?:src\/main\/ipc\/filesystem-(?:list-files|search-file-paths)\.ts|src\/main\/ripgrep\/bundled-ripgrep-path\.ts|src\/main\/providers\/(?:filesystem-provider-contract|ssh-filesystem-provider(?:-capabilities)?)\.ts|src\/main\/runtime\/(?:orca-runtime-files|rpc\/methods\/files)\.ts|src\/renderer\/src\/(?:components\/(?:QuickOpen|quick-open-file-list|quick-open-search)\.tsx?|runtime\/(?:files\/search\/runtime-file-search-client|runtime-legacy-quick-open-inventory)\.ts)|src\/shared\/(?:quick-open-(?:install-rg|path-search|transport-budget)|ripgrep-process-availability|bundled-ripgrep)\.ts)$/.test(
file
)
},
@@ -53,8 +53,8 @@ export const PR_EDITOR_PREVIEW_E2E_SOURCE_ROUTES = [
'src/main/ipc/filesystem/filesystem-read-handlers.ts',
'src/main/startup/privileged-custom-schemes.ts',
'src/preload/api/fs-bridge.ts',
'src/renderer/src/runtime/runtime-file-range-preview.ts',
'src/renderer/src/runtime/runtime-file-read-client.ts',
'src/renderer/src/runtime/files/reads/runtime-file-range-preview.ts',
'src/renderer/src/runtime/files/reads/runtime-file-read-client.ts',
'src/shared/file-preview-kind.ts'
].includes(file))
},
@@ -102,7 +102,7 @@ export const PR_FEATURE_AREA_E2E_SOURCE_ROUTES = [
['github-project-board'],
[
`${COMPONENTS}github-project/`,
'src/renderer/src/store/github/project-',
'src/renderer/src/store/github/projects/',
'src/main/github/project-view/',
'src/main/ipc/source-control/github-project-view-handlers.ts'
]
@@ -18,8 +18,8 @@ const structuredSessionHarness =
const unitHarnesses = [
harness,
structuredSessionHarness,
'src/renderer/src/store/slices/editor-slice-test-harness.ts',
'src/renderer/src/store/slices/browser-slice-test-harness.ts',
'src/renderer/src/store/slices/editor/editor-slice-test-harness.ts',
'src/renderer/src/store/slices/browser/browser-slice-test-harness.ts',
'src/renderer/src/runtime/web-runtime-session-test-harness.ts',
'src/renderer/src/runtime/sync-runtime-graph-test-harness.ts'
]
@@ -33,7 +33,7 @@ const supportBridges = new Set([
// Closed-saving-view save suites' rig; it builds on the autosave rig above.
'src/renderer/src/components/editor/save/queue/editor-save-closed-view.test-fixture.ts',
// Browser suites' store with main drawing their tabs; it takes the browser harness's store.
'src/renderer/src/store/slices/browser-slice-drawn-from-main.test-fixture.ts'
'src/renderer/src/store/slices/browser/browser-slice-drawn-from-main.test-fixture.ts'
])
function productConsumers(file, graph, unitFiles) {
@@ -88,7 +88,7 @@ const { replaceRuntimeEnvironmentRevisions } = await vi.importActual<{
}>('../../../renderer/src/runtime/runtime-environment-revision')
const { createTestStore } = await vi.importActual<{
createTestStore(): BrowserTestStore
}>('../../../renderer/src/store/slices/browser-slice-test-harness')
}>('../../../renderer/src/store/slices/browser/browser-slice-test-harness')
const { captureGoogleCookieClearTarget, confirmAndClearGoogleCookies } = await vi.importActual<{
captureGoogleCookieClearTarget(
hostId: string,
@@ -13,7 +13,7 @@ vi.mock('@/store', () => ({
useAppStore: { getState: mocks.getState, subscribe: mocks.subscribe }
}))
vi.mock('@/lib/web-client-location', () => ({ isWebClientLocation: mocks.web }))
vi.mock('@/store/github/visible-hosted-review-refresh-targets', () => ({
vi.mock('@/store/slices/hosted-review/refresh/visible-hosted-review-refresh-targets', () => ({
visibleHostedReviewRefreshInputsChanged: () => true,
getVisibleHostedReviewWorkspaces: () => [],
getVisibleHostedReviewRefreshTargets: () => [
@@ -2,12 +2,12 @@ import { useEffect } from 'react'
import { useAppStore } from '@/store'
import { isWindowVisible } from '@/lib/window-visibility-interval'
import { isWebClientLocation } from '@/lib/web-client-location'
import { createVisibleHostedReviewRefreshScheduler } from '@/store/github/visible-hosted-review-refresh-scheduler'
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 {
getVisibleHostedReviewRefreshTargets,
visibleHostedReviewRefreshInputsChanged
} from '@/store/github/visible-hosted-review-refresh-targets'
} from '@/store/slices/hosted-review/refresh/visible-hosted-review-refresh-targets'
export function useVisibleHostedReviewRefresh({ enabled }: { enabled: boolean }): void {
useEffect(() => {
@@ -2,11 +2,11 @@ import { useEffect, useMemo, useRef } from 'react'
import { useAppStore } from '../store'
import type { AppState } from '../store/types'
import { rightSidebarShowsPullRequestData } from '../lib/right-sidebar-visibility'
import { findWorktreeById, buildPRRefreshCandidate } from '../store/github/worktree-refresh'
import { getHostedReviewCacheKey } from '../store/slices/hosted-review-cache-identity'
import { getVisibleHostedReviewWorkspaces } from '../store/github/visible-hosted-review-refresh-targets'
import { shouldCoordinateVisibleGitHubReview } from '../store/github/visible-hosted-review-refresh-ownership'
import { getPRRefreshRuntimeRepoTarget } from '../store/github/repository-routing'
import { findWorktreeById, buildPRRefreshCandidate } from '../store/github/refresh/worktree-refresh'
import { getHostedReviewCacheKey } from '../store/slices/hosted-review/hosted-review-cache-identity'
import { getVisibleHostedReviewWorkspaces } from '../store/slices/hosted-review/refresh/visible-hosted-review-refresh-targets'
import { shouldCoordinateVisibleGitHubReview } from '../store/slices/hosted-review/refresh/visible-hosted-review-refresh-ownership'
import { getPRRefreshRuntimeRepoTarget } from '../store/github/repositories/repository-routing'
import {
reviewRefreshIntervalMs,
REVIEW_REFRESH_COOLDOWN_MS
@@ -1,5 +1,5 @@
import { describe, expect, it } from 'vitest'
import { createTestStore, makePRRefreshWorktree } from '../store/slices/github-slice-test-harness'
import { createTestStore, makePRRefreshWorktree } from '../store/github/github-slice-test-harness'
import { visibleReviewWorktreeIdsForState } from './use-visible-review-refresh-reporting'
@@ -14,7 +14,7 @@ const api = vi.hoisted(() => ({
updateMRReviewers: vi.fn(),
listLabels: vi.fn()
}))
vi.mock('@/runtime/gitlab-owner-api', () => ({ gitLabApiFor: () => api }))
vi.mock('@/runtime/repository-gitlab/gitlab-owner-api', () => ({ gitLabApiFor: () => api }))
vi.mock('sonner', () => ({ toast: { error: vi.fn(), success: vi.fn() } }))
function mr(number: number, state: GitLabWorkItem['state'] = 'opened'): GitLabWorkItem {
@@ -14,7 +14,7 @@ import {
} from '../../../shared/task-source-context'
import type { AppState } from '@/store/types'
import type * as I18n from '@/i18n/i18n'
import { getJiraReadIdentity } from '@/store/slices/jira-read-coordination'
import { getJiraReadIdentity } from '@/store/slices/jira/jira-read-coordination'
import { TooltipProvider } from '@/components/ui/tooltip'
import JiraIssueWorkspace from './JiraIssueWorkspace'
@@ -49,14 +49,16 @@ vi.mock('@/store', () => ({
readJiraStatus: store.readStatus
})
}))
vi.mock('@/runtime/runtime-jira-client', () => ({
vi.mock('@/runtime/jira/runtime-jira-detail-client', () => ({
jiraGetIssueForTarget: runtime.getIssue,
jiraListAssignableUsersForTarget: runtime.search,
jiraUpdateIssueForTarget: runtime.update,
jiraListPrioritiesForTarget: async () => [],
jiraListTransitionsForTarget: async () => [],
jiraIssueCommentsForTarget: runtime.comments,
jiraAddIssueCommentForTarget: async () => ({ ok: true }),
jiraAddIssueCommentForTarget: async () => ({ ok: true })
}))
vi.mock('@/runtime/jira/runtime-jira-user-fields-client', () => ({
jiraListAssignableUsersForTarget: runtime.search,
jiraSearchUsers: vi.fn()
}))
vi.mock('@/i18n/i18n', async (importOriginal) => ({
@@ -45,15 +45,17 @@ vi.mock('@/i18n/i18n', () => ({
translate: (_key: string, fallback: string, values?: Record<string, string>) =>
fallback.replace(/{{(\w+)}}/g, (_match, key) => values?.[key] ?? '')
}))
vi.mock('@/runtime/runtime-jira-client', () => ({
vi.mock('@/runtime/jira/runtime-jira-detail-client', () => ({
jiraGetIssueForTarget: async () => null,
jiraIssueCommentsForTarget: async () => [],
jiraListTransitionsForTarget: mocks.transitions,
jiraListPrioritiesForTarget: async () => [],
jiraListAssignableUsersForTarget: async () => [],
jiraUpdateIssueForTarget: mocks.update,
jiraAddIssueCommentForTarget: async () => ({ ok: true })
}))
vi.mock('@/runtime/jira/runtime-jira-user-fields-client', () => ({
jiraListAssignableUsersForTarget: async () => []
}))
vi.mock('@/components/ui/sheet', () => {
const Content = ({ children }: { children: ReactNode }) => <div>{children}</div>
return { Sheet: Content, SheetContent: Content, SheetTitle: Content, SheetDescription: Content }
@@ -4,7 +4,10 @@ import * as VisuallyHidden from 'radix-ui/visually-hidden'
import { Sheet, SheetContent, SheetDescription, SheetTitle } from '@/components/ui/sheet'
import { hasBoundedCommentBodyText } from '@/lib/comment-body-submit-state'
import { useAppStore } from '@/store'
import { jiraGetIssueForTarget, jiraUpdateIssueForTarget } from '@/runtime/runtime-jira-client'
import {
jiraGetIssueForTarget,
jiraUpdateIssueForTarget
} from '@/runtime/jira/runtime-jira-detail-client'
import type { JiraIssue, JiraMutationResult } from '../../../shared/jira/jira-types'
import {
getTaskSourceCacheScope,
@@ -14,7 +17,7 @@ import { translate } from '@/i18n/i18n'
import { JiraIssueMetadataBar, JiraIssueWorkspaceHeader } from './jira-issue-workspace-chrome'
import { JiraIssueCommentComposer, JiraIssueWorkspaceContent } from './jira-issue-workspace-content'
import { useJiraIssueWorkspaceActions } from './jira-issue-workspace-actions'
import { getJiraReadIdentity } from '@/store/slices/jira-read-coordination'
import { getJiraReadIdentity } from '@/store/slices/jira/jira-read-coordination'
import { defaultScopeHost } from '@/lib/default-creation-host'
import { taskSourceRuntimeTarget } from '@/lib/task-source-runtime-target'
import { getEnvironmentRuntimeContextKey } from '@/lib/provider-runtime-context'
@@ -10,7 +10,7 @@ import { useMountedRef } from '@/hooks/useMountedRef'
import { cn } from '@/lib/utils'
import { useAppStore } from '@/store'
import { getScreenSubmitShortcutLabel, isScreenSubmitShortcut } from '@/lib/screen-submit-shortcut'
import { linearUpdateIssue } from '@/runtime/runtime-linear-issue-mutations'
import { linearUpdateIssue } from '@/runtime/linear/runtime-linear-issue-client'
import type { LinearIssue } from '../../../shared/linear/issue-types'
import type { TaskSourceContext } from '../../../shared/task-source-context'
import {
@@ -11,7 +11,7 @@ import { useAppStore } from '@/store'
import { translate } from '@/i18n/i18n'
import { useAllWorktrees } from '@/store/selectors'
import type { LinearComment } from '../../../shared/linear/issue-types'
import { linearIssueComments } from '@/runtime/runtime-linear-issue-mutations'
import { linearIssueComments } from '@/runtime/linear/runtime-linear-issue-client'
import {
initLinearIssueEditState,
type LinearItemDrawerProps,
@@ -7,31 +7,38 @@ import {
getTaskSourceCacheScope,
type TaskSourceContext
} from '../../../../shared/task-source-context'
import type { JiraPatchOptions } from '../../store/slices/jira-slice-contract'
import type { JiraPatchOptions } from '../../store/slices/jira/jira-slice-contract'
import type { AppState } from '../../store/types'
import { getJiraReadIdentity } from '@/store/slices/jira-read-coordination'
import { getJiraReadIdentity } from '@/store/slices/jira/jira-read-coordination'
import type * as I18n from '@/i18n/i18n'
import type * as RuntimeJiraClient from '@/runtime/runtime-jira-client'
import type {
jiraAddIssueCommentForTarget,
jiraGetIssueForTarget,
jiraIssueCommentsForTarget,
jiraListPrioritiesForTarget,
jiraListTransitionsForTarget,
jiraUpdateIssueForTarget
} from '@/runtime/jira/runtime-jira-detail-client'
import type { jiraListAssignableUsersForTarget } from '@/runtime/jira/runtime-jira-user-fields-client'
import { TooltipProvider } from '@/components/ui/tooltip'
import JiraIssueWorkspace from '../JiraIssueWorkspace'
const runtimeMocks: {
jiraAddIssueCommentForTarget: Mock<typeof RuntimeJiraClient.jiraAddIssueCommentForTarget>
jiraGetIssueForTarget: Mock<typeof RuntimeJiraClient.jiraGetIssueForTarget>
jiraIssueCommentsForTarget: Mock<typeof RuntimeJiraClient.jiraIssueCommentsForTarget>
jiraListAssignableUsersForTarget: Mock<typeof RuntimeJiraClient.jiraListAssignableUsersForTarget>
jiraListPrioritiesForTarget: Mock<typeof RuntimeJiraClient.jiraListPrioritiesForTarget>
jiraListTransitionsForTarget: Mock<typeof RuntimeJiraClient.jiraListTransitionsForTarget>
jiraUpdateIssueForTarget: Mock<typeof RuntimeJiraClient.jiraUpdateIssueForTarget>
jiraAddIssueCommentForTarget: Mock<typeof jiraAddIssueCommentForTarget>
jiraGetIssueForTarget: Mock<typeof jiraGetIssueForTarget>
jiraIssueCommentsForTarget: Mock<typeof jiraIssueCommentsForTarget>
jiraListAssignableUsersForTarget: Mock<typeof jiraListAssignableUsersForTarget>
jiraListPrioritiesForTarget: Mock<typeof jiraListPrioritiesForTarget>
jiraListTransitionsForTarget: Mock<typeof jiraListTransitionsForTarget>
jiraUpdateIssueForTarget: Mock<typeof jiraUpdateIssueForTarget>
} = vi.hoisted(() => ({
jiraAddIssueCommentForTarget: vi.fn<typeof RuntimeJiraClient.jiraAddIssueCommentForTarget>(),
jiraGetIssueForTarget: vi.fn<typeof RuntimeJiraClient.jiraGetIssueForTarget>(),
jiraIssueCommentsForTarget: vi.fn<typeof RuntimeJiraClient.jiraIssueCommentsForTarget>(),
jiraListAssignableUsersForTarget:
vi.fn<typeof RuntimeJiraClient.jiraListAssignableUsersForTarget>(),
jiraListPrioritiesForTarget: vi.fn<typeof RuntimeJiraClient.jiraListPrioritiesForTarget>(),
jiraListTransitionsForTarget: vi.fn<typeof RuntimeJiraClient.jiraListTransitionsForTarget>(),
jiraUpdateIssueForTarget: vi.fn<typeof RuntimeJiraClient.jiraUpdateIssueForTarget>()
jiraAddIssueCommentForTarget: vi.fn<typeof jiraAddIssueCommentForTarget>(),
jiraGetIssueForTarget: vi.fn<typeof jiraGetIssueForTarget>(),
jiraIssueCommentsForTarget: vi.fn<typeof jiraIssueCommentsForTarget>(),
jiraListAssignableUsersForTarget: vi.fn<typeof jiraListAssignableUsersForTarget>(),
jiraListPrioritiesForTarget: vi.fn<typeof jiraListPrioritiesForTarget>(),
jiraListTransitionsForTarget: vi.fn<typeof jiraListTransitionsForTarget>(),
jiraUpdateIssueForTarget: vi.fn<typeof jiraUpdateIssueForTarget>()
}))
const store = vi.hoisted(() => ({
@@ -44,7 +51,17 @@ export const editState: { settings: GlobalSettings | null; serverTitle: string }
serverTitle: 'Old title'
}
vi.mock('@/runtime/runtime-jira-client', () => runtimeMocks)
vi.mock('@/runtime/jira/runtime-jira-detail-client', () => ({
jiraAddIssueCommentForTarget: runtimeMocks.jiraAddIssueCommentForTarget,
jiraGetIssueForTarget: runtimeMocks.jiraGetIssueForTarget,
jiraIssueCommentsForTarget: runtimeMocks.jiraIssueCommentsForTarget,
jiraListPrioritiesForTarget: runtimeMocks.jiraListPrioritiesForTarget,
jiraListTransitionsForTarget: runtimeMocks.jiraListTransitionsForTarget,
jiraUpdateIssueForTarget: runtimeMocks.jiraUpdateIssueForTarget
}))
vi.mock('@/runtime/jira/runtime-jira-user-fields-client', () => ({
jiraListAssignableUsersForTarget: runtimeMocks.jiraListAssignableUsersForTarget
}))
vi.mock('@/store', () => ({
useAppStore: (
selector: (
@@ -26,20 +26,20 @@ const favouriteTransport: {
resume: vi.fn()
}))
export { favouriteTransport }
vi.mock('@/runtime/runtime-jira-favourite-filters-client', () => ({
vi.mock('@/runtime/jira/runtime-jira-favourite-filters-client', () => ({
jiraListFavouriteFiltersForTarget: favouriteTransport.catalogue
}))
vi.mock('@/runtime/runtime-jira-saved-filter-state', () => ({
vi.mock('@/runtime/jira/runtime-jira-saved-filter-state', () => ({
readJiraSavedFilterState: favouriteTransport.readSaved,
mutateJiraSavedFilters: favouriteTransport.mutateSaved
}))
vi.mock('@/runtime/runtime-jira-quick-filter-state', () => ({
vi.mock('@/runtime/jira/runtime-jira-quick-filter-state', () => ({
readJiraQuickFilterState: favouriteTransport.readQuick
}))
vi.mock('@/runtime/runtime-jira-detail-client', () => ({
vi.mock('@/runtime/jira/runtime-jira-detail-client', () => ({
jiraListPrioritiesForTarget: vi.fn()
}))
vi.mock('@/runtime/runtime-jira-client', () => ({
vi.mock('@/runtime/jira/runtime-jira-client', () => ({
jiraGetProjectStatusOrder: vi.fn()
}))
@@ -1,5 +1,5 @@
import { afterEach, describe, expect, it, vi } from 'vitest'
import { makeAnnotation } from '@/store/slices/browser-annotation-test-fixture'
import { makeAnnotation } from '@/store/slices/browser/annotations/browser-annotation-test-fixture'
import type { BrowserSetAnnotationViewportBridgeArgs } from '../../../../../shared/browser-annotation-viewport-bridge'
import { syncGuestAnnotationViewportBridge } from './guest-annotation-viewport-bridge'
@@ -4,7 +4,7 @@ import { act, cleanup, renderHook } from '@testing-library/react'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type { BrowserPageAnnotation } from '../../../../../shared/browser-grab-types'
import { createTestStore } from '@/store/slices/browser-slice-test-harness'
import { createTestStore } from '@/store/slices/browser/browser-slice-test-harness'
import { useBrowserPageAnnotationSend } from './use-browser-page-annotation-send'
@@ -5,7 +5,7 @@ import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover
import { cn } from '@/lib/utils'
import { translate } from '@/i18n/i18n'
import { useAppStore } from '@/store'
import { findPage } from '@/store/slices/browser-page-records'
import { findPage } from '@/store/slices/browser/pages/browser-page-records'
import { DEFAULT_SEARCH_ENGINE, type SearchEngine } from '../../../../../shared/browser-url'
import type { BrowserPageDocLocation } from '../../../../../shared/browser-workspace-types'
import { buildBrowserAddressBarSuggestions } from './browser-address-bar-suggestions'
@@ -1,7 +1,7 @@
import { useCallback, useEffect, useMemo } from 'react'
import { useAppStore } from '@/store'
import { runtimeEnvironmentIdOrLocalUnlessTwin } from '@/lib/workspace/ownership/worktree-runtime-owner'
import { isClientHostedBrowserPageHandle } from '@/store/slices/browser'
import { isClientHostedBrowserPageHandle } from '@/store/slices/browser/hosts/browser-host-state'
import type { BrowserWorkspace as BrowserWorkspaceState } from '../../../../../shared/browser-workspace-types'
import { destroyPersistentWebview } from '../host-guest/webview-registry'
import { useBrowserAutomationVisiblePageIds } from '../host-guest/browser-automation-visibility'
@@ -1,7 +1,7 @@
import { useCallback, useMemo, useState, type KeyboardEvent } from 'react'
import { useShallow } from 'zustand/react/shallow'
import { useAppStore } from '@/store'
import { findPage } from '@/store/slices/browser-page-records'
import { findPage } from '@/store/slices/browser/pages/browser-page-records'
import {
buildOpenTabSearchBrowserPages,
selectOpenTabSearchBrowserPageState
@@ -2,7 +2,7 @@ import { useEffect } from 'react'
import { toast } from 'sonner'
import { translate } from '@/i18n/i18n'
import { useAppStore } from '@/store'
import { isClientHostedBrowserPageHandle } from '@/store/slices/browser'
import { isClientHostedBrowserPageHandle } from '@/store/slices/browser/hosts/browser-host-state'
import type {
BrowserDownloadFinishedEvent,
BrowserDownloadProgressEvent,
@@ -10,7 +10,7 @@ import type {
} from '../../../../../shared/browser-workspace-types'
import { translate } from '@/i18n/i18n'
import { useAppStore } from '@/store'
import { findWorkspace } from '@/store/slices/browser-page-records'
import { findWorkspace } from '@/store/slices/browser/pages/browser-page-records'
import {
BROWSER_GUEST_RECOVERY_ERROR_CODE,
createBrowserPageGuestRecovery,
@@ -5,7 +5,7 @@ import {
toWorktreeRelativePath
} from '../../../../../shared/terminal/links/terminal-links'
import { useAppStore } from '@/store'
import type { RuntimeFileOperationArgs } from '@/runtime/runtime-file-client-types'
import type { RuntimeFileOperationArgs } from '@/runtime/files/runtime-file-client-types'
import {
normalizeBrowserNavigationUrl,
redactKagiSessionToken
@@ -8,7 +8,7 @@ import type {
BrowserCertificateProceedResult,
BrowserPage as BrowserPageState
} from '../../../../../shared/browser-workspace-types'
import type { RemoteBrowserPageHandle } from '@/store/slices/browser'
import type { RemoteBrowserPageHandle } from '@/store/slices/browser/browser-slice-contract'
import { resolveRemoteFailureExternalUrl } from '../../../../../shared/browser-url'
import type { BrowserScreencastFrameMetadata } from '../../../../../shared/browser-screencast-protocol'
import { getRemoteBrowserFrameStyle } from './remote-browser-frame-style'
@@ -233,7 +233,8 @@ describe('HtmlDocPreview browser chrome', () => {
const { hasLiveBrowserGuest, webviewRegistry } = await import('../host-guest/webview-registry')
const { worktreeHoldsLiveBrowserGuests, selectBrowserGuestEvictionWorktreeIds } =
await import('../host-guest/browser-guest-worktree-retention')
const { destroyWorktreeBrowserGuests } = await import('@/store/slices/browser-webview-cleanup')
const { destroyWorktreeBrowserGuests } =
await import('@/store/slices/browser/cleanup/browser-webview-cleanup')
const guest = await renderPreview(container, root)
expect(hasLiveBrowserGuest('preview-1')).toBe(true)
expect(await renderPreview(container, root, { isActive: false })).toBe(guest)
@@ -11,7 +11,7 @@ import { isShareableHtmlPath } from '@/components/editor/editor-artifact-upload'
import type { DocPreviewGrantLocation } from '@/lib/doc-preview-grants'
import { fileArtifactSourceKey, type FileArtifactOwner } from '@/lib/file-artifact-source-key'
import { basename } from '@/lib/path'
import { readRuntimeFilePreview } from '@/runtime/runtime-file-read-client'
import { readRuntimeFilePreview } from '@/runtime/files/reads/runtime-file-read-client'
import { callRuntimeRpc } from '@/runtime/runtime-rpc-client'
import {
isWindowsAbsolutePathLike,
@@ -5,7 +5,7 @@ import { createRoot, type Root } from 'react-dom/client'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type { BrowserGrabPayload } from '../../../../../shared/browser-grab-types'
import { BROWSER_ANNOTATION_VIEWPORT_MESSAGE_PREFIX } from '../../../../../shared/browser-annotation-viewport-bridge'
import { makeAnnotation } from '@/store/slices/browser-annotation-test-fixture'
import { makeAnnotation } from '@/store/slices/browser/annotations/browser-annotation-test-fixture'
import { getBrowserOverlayAnchor } from '../describe-page/browser-annotation-geometry'
import { attachDocPreviewWebview } from './doc-preview-webview-attach'
@@ -1,8 +1,12 @@
import { useAppStore } from '@/store'
import { linearSearchIssuesForTarget, linearStatusForTarget } from '@/runtime/runtime-linear-client'
import { jiraSearchIssuesForTarget, jiraStatusForTarget } from '@/runtime/runtime-jira-client'
import {
linearSearchIssuesForTarget,
linearStatusForTarget
} from '@/runtime/linear/runtime-linear-client'
import { jiraSearchIssuesForTarget } from '@/runtime/jira/runtime-jira-client'
import { jiraStatusForTarget } from '@/runtime/jira/runtime-jira-project-client'
import { ipcOrRuntimeTargetForHostId } from '@/runtime/runtime-client-target'
import { gitLabApiFor } from '@/runtime/gitlab-owner-api'
import { gitLabApiFor } from '@/runtime/repository-gitlab/gitlab-owner-api'
import { resolveJiraSourceHostId } from '../../../../shared/jira/jira-source-host'
import { getJiraAccountLabel } from '@/lib/jira-account-label'
import {
@@ -1,7 +1,7 @@
import { resolveWorktreeBranchLabel } from '@/lib/worktree-default-display-name'
import { resolvePaletteRepoForWorktree } from '@/lib/workspace/search/palette-repo-resolution'
import { getGitHubPRCacheKey } from '../../../../shared/github/github-cache-key'
import { getHostedReviewCacheKey } from '@/store/slices/hosted-review-cache-identity'
import { getHostedReviewCacheKey } from '@/store/slices/hosted-review/hosted-review-cache-identity'
import type { AppState } from '@/store/types'
import type { HostedReviewInfo } from '../../../../shared/source-control/hosted-review/hosted-review-contracts'
import type { Repo } from '../../../../shared/repo-types'
@@ -18,7 +18,7 @@ import {
import { verifyPreviewLinkPopulation } from './dashboard-preview-link-population-test-fixture'
import { toast } from 'sonner'
import { runtimeStatuses } from '@/store/slices/browser-slice-test-harness'
import { runtimeStatuses } from '@/store/slices/browser/browser-slice-test-harness'
import type { openStandaloneTerminal } from '../standalone-terminal/open-standalone-terminal'
import { getDefaultSettings } from '../../../../shared/constants'
@@ -1,5 +1,5 @@
import { branchName } from '@/lib/git-utils'
import { getHostedReviewCacheKey } from '@/store/slices/hosted-review-cache-identity'
import { getHostedReviewCacheKey } from '@/store/slices/hosted-review/hosted-review-cache-identity'
import type { AppState } from '@/store/types'
import type { DashboardCardReview } from '../../../../shared/dashboard-snapshot'
import { hostedReviewInfoFromGitHubPRInfo } from '../../../../shared/source-control/hosted-review/hosted-review-github'
@@ -1,6 +1,6 @@
import React from 'react'
import { lazyWithRetry as lazy } from '@/lib/lazy-with-retry'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { GitDiffResult } from '../../../../shared/git/diff/git-diff-compare-types'
import type { GitStatusEntry } from '../../../../shared/git/status/git-status-types'
import { ConflictBanner } from './ConflictComponents'
@@ -12,7 +12,8 @@ import {
import { Button } from '@/components/ui/button'
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
import { cn } from '@/lib/utils'
import type { ConflictReviewEntry, OpenFile } from '@/store/slices/editor'
import type { ConflictReviewEntry } from '../../../../shared/editor-tab-view-types'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type {
GitConflictKind,
GitStatusEntry
@@ -10,7 +10,7 @@ import {
type SourceControlTreeNode
} from '../../../../shared/source-control/listing/source-control-tree'
import { VirtualizedList } from '@/components/virtualized-list'
import type { ConflictReviewEntry } from '@/store/slices/editor'
import type { ConflictReviewEntry } from '../../../../shared/editor-tab-view-types'
import type { GitStatusEntry } from '../../../../shared/git/status/git-status-types'
import { translate } from '@/i18n/i18n'
@@ -4,7 +4,8 @@ import { createRoot, type Root } from 'react-dom/client'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type { StoreApi } from 'zustand'
import type { AppState } from '@/store'
import type { OpenFile, PendingEditorReveal } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { PendingEditorReveal } from '@/store/slices/editor/types/pending-editor-reveal'
import type { GitStatusEntry } from '../../../../shared/git/status/git-status-types'
import { makeWorktree } from '@/store/slices/worktrees-slice-test-fixtures'
import { createEditorStore } from './autosave/editor-autosave-controller-test-fixture'
@@ -3,7 +3,8 @@ import { conflictOverviewView } from '@/store/slices/editor/buffers/editor-buffe
import { detectLanguage } from '@/lib/language-detect'
import { joinPath } from '@/lib/path'
import { useAppStore } from '@/store'
import type { OpenFile, PendingEditorReveal } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { PendingEditorReveal } from '@/store/slices/editor/types/pending-editor-reveal'
import type { GitStatusEntry } from '../../../../shared/git/status/git-status-types'
import { ConflictBanner, ConflictPlaceholderView, ConflictReviewPanel } from './ConflictComponents'
import { ImageViewer, MonacoEditor } from './editor-lazy-views'
@@ -1,7 +1,7 @@
// @vitest-environment happy-dom
import { cleanup, render } from '@testing-library/react'
import { afterEach, describe, expect, it, vi } from 'vitest'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
const lifecycle = vi.hoisted(() => ({
events: [] as string[],
@@ -1,7 +1,8 @@
import { GitGraphTab } from './git-graph/git-graph-tab'
import { useAppStore } from '@/store'
import type { ActivePluginCustomEditor } from '@/store/plugin-custom-editors'
import type { MarkdownViewMode, OpenFile, PendingEditorReveal } from '@/store/slices/editor'
import type { MarkdownViewMode, OpenFile } from '@/store/slices/editor/types/open-file'
import type { PendingEditorReveal } from '@/store/slices/editor/types/pending-editor-reveal'
import type { GitDiffResult } from '../../../../shared/git/diff/git-diff-compare-types'
import type { GitStatusEntry } from '../../../../shared/git/status/git-status-types'
import { CheckRunDetailsPanel } from './check-details/panel/CheckRunDetailsPanel'
@@ -1,6 +1,6 @@
import { DiffTooLargeNotice } from './diff/large-files/DiffTooLargeNotice'
import { translate } from '@/i18n/i18n'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { GitDiffResult } from '../../../../shared/git/diff/git-diff-compare-types'
import { getDiffContentSignature } from './diff/sections/diff-content-signature'
import { DiffViewer, ImageDiffViewer, MarkdownPreview } from './editor-lazy-views'
@@ -8,7 +8,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { RecoverableRenderErrorBoundary } from '../error-boundaries/RecoverableRenderErrorBoundary'
import { EditorEditFileSurface } from './EditorEditFileSurface'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { useMarkdownDocuments } from './markdown/documents/useMarkdownDocuments'
import type { MarkdownDocument } from '../../../../shared/filesystem-entry-types'
@@ -1,6 +1,7 @@
import { translate } from '@/i18n/i18n'
import { getConnectionIdForFile } from '@/lib/connection-context'
import type { MarkdownViewMode, OpenFile, PendingEditorReveal } from '@/store/slices/editor'
import type { MarkdownViewMode, OpenFile } from '@/store/slices/editor/types/open-file'
import type { PendingEditorReveal } from '@/store/slices/editor/types/pending-editor-reveal'
import type { GitDiffResult } from '../../../../shared/git/diff/git-diff-compare-types'
import type { GitStatusEntry } from '../../../../shared/git/status/git-status-types'
import { ChangesModeView } from './ChangesModeView'
@@ -1,7 +1,7 @@
// @vitest-environment happy-dom
import { cleanup, fireEvent, render, screen } from '@testing-library/react'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { WorktreeRuntimeOwnerState } from '@/lib/workspace/ownership/worktree-runtime-owner-state'
import {
DropdownMenu,
@@ -2,7 +2,7 @@ import { Copy, ExternalLink } from 'lucide-react'
import { DropdownMenuItem } from '@/components/ui/dropdown-menu'
import { LocalOnlyMenuHint } from '@/components/local-only-menu-hint'
import { useAppStore } from '@/store'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import { isRevealOrEditorOpenBlocked } from '@/lib/local-path-open-guard'
import {
getRevealInFileManagerLabel,
@@ -1,6 +1,6 @@
import { translate } from '@/i18n/i18n'
import { useAppStore } from '@/store'
import type { MarkdownViewMode, OpenFile } from '@/store/slices/editor'
import type { MarkdownViewMode, OpenFile } from '@/store/slices/editor/types/open-file'
import { Button } from '@/components/ui/button'
import { RICH_MARKDOWN_MAX_SIZE_BYTES } from '../../../../shared/constants'
import { formatBytes } from '../status-bar/workspace-space-format'
@@ -3,7 +3,7 @@ import { act } from 'react'
import { createRoot, type Root } from 'react-dom/client'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { useAppStore } from '@/store'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { EditorToggleValue } from './view-mode/EditorViewToggle'
import { registerEditorFrameFlush } from './save/flush/editor-pending-flush'
@@ -3,7 +3,7 @@ import { act } from 'react'
import { createRoot, type Root } from 'react-dom/client'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { useAppStore } from '@/store'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import { buildOwnedEditorFileId } from '@/store/slices/editor/file-ids/editor-file-ids'
import type { EditorToggleValue } from './view-mode/EditorViewToggle'
@@ -8,7 +8,7 @@ import {
EDITOR_PLACEMENT,
seedEditorPlacementConsumers,
drawEditorPlacementConsumers
} from '@/store/slices/editor-placement-consumers.test-fixture'
} from '@/store/slices/editor/tabs/editor-placement-consumers.test-fixture'
import type { EditorToggleValue } from './view-mode/EditorViewToggle'
vi.mock('@/runtime/runtime-rpc-client', async (original) =>
@@ -2,7 +2,7 @@ import { useMemo } from 'react'
import { ArrowDown, ArrowUp, Columns2, Eye, FileText, ListTree, Rows2 } from 'lucide-react'
import { useAppStore } from '@/store'
import { useVisibleWorktreeDiffComments } from '../diff-comments/use-visible-worktree-diff-comments'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'
import EditorViewToggle, {
CSV_VIEW_MODE_METADATA,
@@ -3,7 +3,7 @@
import { cleanup, fireEvent, render, screen } from '@testing-library/react'
import type * as I18nModule from '@/i18n/i18n'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import { EditorPanelHeaderPath } from './EditorPanelHeaderPath'
const renameFileOnDiskMock = vi.hoisted(() => vi.fn())
@@ -12,7 +12,7 @@ import {
import { useShortcutLabel } from '@/hooks/useShortcutLabel'
import { isImeCompositionKeyDown } from '@/lib/ime-composition-keyboard-event'
import { translate } from '@/i18n/i18n'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import { isVirtualEditorFile } from '@/store/slices/editor/tabs/editor-tab-content-type'
import { CLOSE_ALL_CONTEXT_MENUS_EVENT } from '@/lib/close-all-context-menus'
import { useEditorHeaderFileRename } from './editor-header-file-rename'
@@ -1,7 +1,7 @@
import { Suspense, type JSX, type Ref } from 'react'
import { useAppStore } from '@/store'
import { findWorktreeById } from '@/store/slices/worktree-helpers'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import { EditorContent } from './EditorContent'
import { EditorPanelHeader } from './EditorPanelHeader'
import { UntitledFileRenameDialog } from './UntitledFileRenameDialog'
@@ -3,7 +3,7 @@ import { cleanup, render } from '@testing-library/react'
import { useEffect } from 'react'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { buildOwnedEditorFileId } from '@/store/slices/editor/file-ids/editor-file-ids'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { WorktreeOperationRouteState } from '@/lib/worktree-operation-route'
const editorProps = vi.hoisted(() => {
@@ -4,9 +4,9 @@ import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js'
import { afterEach, expect, it, vi } from 'vitest'
import type { AppState } from '@/store/types'
import { useStore } from 'zustand'
import { createEditorStore } from '@/store/slices/editor-slice-test-harness'
import { createEditorStore } from '@/store/slices/editor/editor-slice-test-harness'
import { makeWorktree } from '@/store/slices/worktrees-slice-test-fixtures'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import { editorSelectionCache, editorViewStateCache, scrollTopCache } from '@/lib/scroll-cache'
import { getDefaultSettings } from '../../../../shared/constants'
@@ -4,16 +4,16 @@ import { cleanup, fireEvent, render, screen } from '@testing-library/react'
import type { StoreApi } from 'zustand'
import { afterEach, beforeEach, expect, it, vi } from 'vitest'
import type { AppState } from '@/store/types'
import type { OpenFile } from '@/store/slices/editor'
import { createEditorTabsStore } from '@/store/slices/editor-slice-test-harness'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import { createEditorTabsStore } from '@/store/slices/editor/editor-slice-test-harness'
import { makeWorktree } from '@/store/slices/worktrees-slice-test-fixtures'
import { getRuntimeGitRemoteFileUrl } from '@/runtime/runtime-git-working-tree-client'
import { getRuntimeGitRemoteFileUrl } from '@/runtime/source-control/git/runtime-git-working-tree-client'
import { MonacoGutterContextMenu } from './MonacoGutterContextMenu'
const storeRef = vi.hoisted((): { current?: StoreApi<AppState> } => ({}))
vi.mock('@/store', () => ({ useAppStore: { getState: () => storeRef.current?.getState() } }))
vi.mock('@/i18n/i18n', () => ({ translate: (_key: string, fallback: string) => fallback }))
vi.mock('@/runtime/runtime-git-working-tree-client', () => ({
vi.mock('@/runtime/source-control/git/runtime-git-working-tree-client', () => ({
getRuntimeGitRemoteFileUrl: vi.fn()
}))
@@ -11,7 +11,7 @@ import {
import { useAppStore } from '@/store'
import { getConnectionId } from '@/lib/connection-context'
import { findWorktreeById } from '@/store/slices/worktree-helpers'
import { getRuntimeGitRemoteFileUrl } from '@/runtime/runtime-git-working-tree-client'
import { getRuntimeGitRemoteFileUrl } from '@/runtime/source-control/git/runtime-git-working-tree-client'
import { formatPathLineReference } from './line-copy-path'
import { formatClipboardFilePath } from '@/lib/clipboard-file-path'
import { getOpenFileRevealOwner } from '@/lib/reveal-in-file-manager'
@@ -4,7 +4,7 @@ import { act } from 'react'
import { createRoot, type Root } from 'react-dom/client'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import type { ActivePluginCustomEditor } from '@/store/plugin-custom-editors'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { FileContent } from './editor-panel-content-types'
vi.mock('@/i18n/i18n', () => ({
@@ -14,7 +14,7 @@ vi.mock('@/i18n/i18n', () => ({
}))
const readRuntimeFileBytes = vi.fn()
vi.mock('@/runtime/runtime-paged-file-read', () => ({
vi.mock('@/runtime/files/reads/runtime-paged-file-read', () => ({
readRuntimeFileBytes: (...args: unknown[]) => readRuntimeFileBytes(...args)
}))
@@ -1,14 +1,14 @@
import React, { useCallback, useEffect, useState, useSyncExternalStore } from 'react'
import { translate } from '@/i18n/i18n'
import { basename } from '@/lib/path'
import { readRuntimeFileBytes } from '@/runtime/runtime-paged-file-read'
import { readRuntimeFileBytes } from '@/runtime/files/reads/runtime-paged-file-read'
import type { ActivePluginCustomEditor } from '@/store/plugin-custom-editors'
import { CUSTOM_EDITOR_DOCUMENT_MAX_BYTES } from '../../../../shared/plugins/frames/plugin-custom-editor-bridge'
import { matchPluginFile } from '../../../../shared/plugins/contributions/plugin-file-match'
import { fileTypeOfPath } from '../../../../shared/plugins/contributions/plugin-file-type'
import { formatBytes } from '../status-bar/workspace-space-format'
import { Button } from '../ui/button'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { FileContent } from './editor-panel-content-types'
import PluginCustomEditorFrame from './PluginCustomEditorFrame'
import { ExternalFileChangeBanner } from './external-changes/ExternalFileChangeBanner'
@@ -1,5 +1,5 @@
import type { AppState } from '@/store'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { RuntimeClientTarget } from '../../../../shared/runtime-client-target'
import {
findWorkspaceFileRoute,
@@ -6,18 +6,20 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { useAppStore } from '@/store'
import { getConnectionIdForFile } from '@/lib/connection-context'
import { makeWorktree, TEST_REPO } from '@/store/slices/worktrees-slice-test-fixtures'
import type { OpenFile } from '@/store/slices/editor'
import type * as RuntimeFileReadClient from '@/runtime/runtime-file-read-client'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type * as RuntimeFileReadClient from '@/runtime/files/reads/runtime-file-read-client'
import { openAiVaultSessionLogInOrca } from '../right-sidebar/ai-vault/session-actions/ai-vault-session-log-open'
import { useEditorPanelContentState } from './useEditorPanelContentState'
import type { FileContent } from './editor-panel-content-types'
const mocks = vi.hoisted(() => ({ readRuntimeFileContent: vi.fn(), toastError: vi.fn() }))
vi.mock('@/runtime/runtime-file-read-client', async (importOriginal) => ({
vi.mock('@/runtime/files/reads/runtime-file-read-client', async (importOriginal) => ({
...(await importOriginal<typeof RuntimeFileReadClient>()),
readRuntimeFileContent: mocks.readRuntimeFileContent
}))
vi.mock('@/runtime/runtime-file-watch-client', () => ({ subscribeRuntimeFileChanges: vi.fn() }))
vi.mock('@/runtime/files/watching/runtime-file-watch-client', () => ({
subscribeRuntimeFileChanges: vi.fn()
}))
vi.mock('sonner', () => ({ toast: Object.assign(vi.fn(), { error: mocks.toastError }) }))
const fsApi = {
@@ -1,12 +1,12 @@
// Use a real editor slice and isolated window/filesystem bridge across autosave suites.
import { vi } from 'vitest'
import { createStore, type StoreApi } from 'zustand/vanilla'
import '@/store/slices/editor'
import { createEditorSlice } from '@/store/slices/editor/create-editor-slice'
import { withEditorBufferRecords } from '@/store/editor-buffer-record-lifecycle'
import type { AppState } from '@/store/types'
import { makeWorktree } from '@/store/slices/worktrees-slice-test-fixtures'
import { emptyTabLayoutState } from '@/store/slices/editor-slice-test-harness'
import { emptyTabLayoutState } from '@/store/slices/editor/editor-slice-test-harness'
import { getDiskBaselineSignature } from '../../../../../shared/disk-baseline-signature'
import {
compareDiskWritePrecondition,
@@ -1,6 +1,6 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { createStore, type StoreApi } from 'zustand/vanilla'
import '@/store/slices/editor'
import { createEditorSlice } from '@/store/slices/editor/create-editor-slice'
import type { AppState } from '@/store/types'
import {
@@ -22,7 +22,7 @@ import { clearRuntimeCompatibilityCacheForTests } from '@/runtime/runtime-rpc-cl
import { getDefaultSettings } from '../../../../../shared/constants'
import { makeWorktree } from '@/store/slices/worktrees-slice-test-fixtures'
import { emptyTabLayoutState } from '../../../store/slices/editor-slice-test-harness'
import { emptyTabLayoutState } from '../../../store/slices/editor/editor-slice-test-harness'
import { withLoadedBaselines } from './editor-autosave-controller-test-fixture'
const mocks = vi.hoisted(() => ({
@@ -7,7 +7,7 @@ import { hostedReviewInfoFromGitHubPRInfo as gitHubPRToChecksPanelReview } from
import { getWorktreeGitIdentityDisplay } from '../../../../../../shared/worktree/git-identity-display'
import { useAppStore } from '@/store/index'
import { getGitHubPRCacheKey } from '../../../../../../shared/github/github-cache-key'
import { getHostedReviewCacheKey } from '@/store/slices/hosted-review-cache-identity'
import { getHostedReviewCacheKey } from '@/store/slices/hosted-review/hosted-review-cache-identity'
import { findWorktreeById } from '@/store/slices/worktree-helpers'
import type { HostedReviewInfo } from '../../../../../../shared/source-control/hosted-review/hosted-review-contracts'
import type { PRCheckDetail, PRCheckRunDetails } from '../../../../../../shared/github/check-types'
@@ -3,7 +3,7 @@ import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/re
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { TooltipProvider } from '@/components/ui/tooltip'
import { useAppStore } from '@/store/index'
import { createEditorTabsStore } from '@/store/slices/editor-slice-test-harness'
import { createEditorTabsStore } from '@/store/slices/editor/editor-slice-test-harness'
import { scrollTopCache } from '@/lib/scroll-cache'
import { CheckRunDetailsPanel } from './CheckRunDetailsPanel'
import { readingCheck, readingDetails } from '../reading/check-details-reading-fixture'
@@ -7,7 +7,7 @@ import type { PRCheckDetail, PRCheckRunDetails } from '../../../../../../shared/
import { CheckRunDetailsPanel } from './CheckRunDetailsPanel'
import { useAppStore } from '@/store/index'
import { createEditorTabsStore } from '@/store/slices/editor-slice-test-harness'
import { createEditorTabsStore } from '@/store/slices/editor/editor-slice-test-harness'
import { scrollTopCache } from '@/lib/scroll-cache'
import { readingCheck, readingDetails } from '../reading/check-details-reading-fixture'
import { StrictMode } from 'react'
@@ -4,7 +4,7 @@ import { act, cleanup, fireEvent, render, screen, within } from '@testing-librar
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { TooltipProvider } from '@/components/ui/tooltip'
import { useAppStore } from '@/store/index'
import { createEditorTabsStore } from '@/store/slices/editor-slice-test-harness'
import { createEditorTabsStore } from '@/store/slices/editor/editor-slice-test-harness'
import type { PRCheckRunDetails } from '../../../../../../shared/github/check-types'
import { readingCheck, readingDetails } from '../reading/check-details-reading-fixture'
import { CheckRunDetailsPanel } from './CheckRunDetailsPanel'
@@ -4,7 +4,7 @@ import { useAppStore } from '@/store'
import { createProgrammaticScrollMarks } from '@/hooks/programmatic-scroll-marks'
import { useWorkspaceFileBrowserActionPredicate } from '@/lib/file-preview'
import { useVisibleWorktreeDiffComments } from '../../diff-comments/use-visible-worktree-diff-comments'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import '@/lib/monaco-setup'
import type { DiffSection } from '../diff/sections/diff-section-types'
import {
@@ -4,7 +4,7 @@ import { useMemo, useRef, useState } from 'react'
import { act, cleanup, renderHook } from '@testing-library/react'
import { afterEach, expect, it, vi } from 'vitest'
import { clearCombinedDiffViewMemory } from '../remember-view/combined-diff-view-cache'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { GitStatusEntry } from '../../../../../../shared/git/status/git-status-types'
import type {
GitDiffResult,
@@ -2,7 +2,7 @@ import { getConnectionIdForFile } from '@/lib/connection-context'
import { joinPath } from '@/lib/path'
import { useAppStore } from '@/store'
import { acquireEditorFileOperation } from '@/lib/editor-file-operation-owner'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
export function acquireCombinedDiffSectionOperation(file: OpenFile, sectionPath: string) {
const operation = acquireEditorFileOperation(useAppStore.getState, file, {
@@ -3,7 +3,7 @@
import { useState } from 'react'
import { act, cleanup, renderHook } from '@testing-library/react'
import { afterEach, describe, expect, it, vi } from 'vitest'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type {
GitDiffResult,
GitDiffTextResult
@@ -2,8 +2,8 @@ import {
getRuntimeGitBranchDiff,
getRuntimeGitCommitDiff,
getRuntimeGitDiff
} from '@/runtime/runtime-git-diff-client'
import type { OpenFile } from '@/store/slices/editor'
} from '@/runtime/source-control/git/runtime-git-diff-client'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type {
GitBranchChangeEntry,
GitDiffResult
@@ -1,6 +1,6 @@
import { useCallback, useEffect } from 'react'
import type React from 'react'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type {
GitBranchChangeEntry,
GitDiffResult
@@ -1,5 +1,5 @@
import React, { useEffect, useRef } from 'react'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { GitStatusEntry } from '../../../../../../shared/git/status/git-status-types'
import {
ORCA_EDITOR_EXTERNAL_FILE_CHANGE_EVENT,
@@ -1,6 +1,6 @@
import { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react'
import type React from 'react'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { VirtualizedScrollAnchor } from '@/hooks/useVirtualizedScrollAnchor'
import type { GitStatusEntry } from '../../../../../../shared/git/status/git-status-types'
import type { DiffSection } from '../../diff/sections/diff-section-types'
@@ -1,4 +1,4 @@
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { GitBranchChangeEntry } from '../../../../../../shared/git/diff/git-diff-compare-types'
import type { GitStatusEntry } from '../../../../../../shared/git/status/git-status-types'
import type { CombinedDiffFileTreeMode } from './combined-diff-section-identity'
@@ -1,5 +1,5 @@
import React from 'react'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { GitBranchChangeEntry } from '../../../../../../shared/git/diff/git-diff-compare-types'
import type { GitStatusEntry } from '../../../../../../shared/git/status/git-status-types'
import type { DiffSection } from '../../diff/sections/diff-section-types'
@@ -1,6 +1,6 @@
import type React from 'react'
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import { getCombinedDiffCommitMessageBody } from './combined-diff-commit-message'
export function CombinedDiffCommitHeader({
@@ -1,7 +1,7 @@
import type React from 'react'
import { Button } from '@/components/ui/button'
import { translate } from '@/i18n/i18n'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
type SkippedConflicts = NonNullable<OpenFile['skippedConflicts']>
@@ -4,7 +4,7 @@ import { Button } from '@/components/ui/button'
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
import { translate } from '@/i18n/i18n'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { DiffComment } from '../../../../../../shared/diff-comment-types'
import type { DiffCommentOwner } from '@/store/diff-comment-owner'
import { DiffNotesSendMenu } from '../../diff/review/DiffNotesSendMenu'
@@ -4,7 +4,7 @@ import type React from 'react'
import { afterEach, beforeEach, expect, it, vi } from 'vitest'
import { getDiskBaselineSignature } from '../../../../../../shared/disk-baseline-signature'
import type { DiffSection } from '../../diff/sections/diff-section-types'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import { useCombinedDiffSectionActions } from './use-combined-diff-section-actions'
import { getStoredTextDiffResult } from '../../diff/large-files/large-diff-section-content'
import { useAppStore } from '@/store'
@@ -17,13 +17,13 @@ import {
} from '@/components/sidebar/workspace-creation/folder/folder-workspace-composer-submit-fixtures'
const mocks = vi.hoisted(() => ({ writeRuntimeFile: vi.fn(), diff: vi.fn() }))
vi.mock('@/runtime/runtime-git-diff-client', () => ({
vi.mock('@/runtime/source-control/git/runtime-git-diff-client', () => ({
getRuntimeGitDiff: mocks.diff,
getRuntimeGitBranchDiff: mocks.diff,
getRuntimeGitCommitDiff: mocks.diff
}))
vi.mock('@/runtime/runtime-file-mutation-client', () => ({
vi.mock('@/runtime/files/mutations/runtime-file-mutation-client', () => ({
writeRuntimeFile: mocks.writeRuntimeFile
}))
beforeEach(() => {
@@ -8,7 +8,7 @@ import {
EDITOR_PLACEMENT,
seedEditorPlacementConsumers,
drawEditorPlacementConsumers
} from '@/store/slices/editor-placement-consumers.test-fixture'
} from '@/store/slices/editor/tabs/editor-placement-consumers.test-fixture'
import type { DiffSection } from '../../diff/sections/diff-section-types'
import { useCombinedDiffSectionActions } from './use-combined-diff-section-actions'
@@ -7,7 +7,7 @@ import { detectLanguage } from '@/lib/language-detect'
import { joinPath } from '@/lib/path'
import { openFilePreviewToSide } from '@/lib/file-preview'
import type { AppState } from '@/store/types'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { GitBranchChangeEntry } from '../../../../../../shared/git/diff/git-diff-compare-types'
import { canOpenDiffSectionPreviewToSide } from '../../diff/sections/diff-section-preview'
import type { DiffSection } from '../../diff/sections/diff-section-types'
@@ -3,7 +3,7 @@ import type React from 'react'
import type { editor as monacoEditor } from 'monaco-editor'
import { useAppStore } from '@/store'
import { joinPath } from '@/lib/path'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { DiffSection } from '../../diff/sections/diff-section-types'
import { getLargeDiffRenderLimit } from '../../../../../../shared/large-diff-render-limit'
import {
@@ -3,7 +3,7 @@ import type React from 'react'
import { useMemo } from 'react'
import type { Virtualizer } from '@tanstack/react-virtual'
import { joinPath } from '@/lib/path'
import type { OpenFile } from '@/store/slices/editor'
import type { OpenFile } from '@/store/slices/editor/types/open-file'
import type { DiffComment } from '../../../../../../shared/diff-comment-types'
import type { DiffCommentOwner } from '@/store/diff-comment-owner'
import { DiffSectionItem } from '../../diff/sections/DiffSectionItem'
@@ -1,5 +1,5 @@
import { useEffect, useState } from 'react'
import { readRuntimeFileRange } from '@/runtime/runtime-file-range-client'
import { readRuntimeFileRange } from '@/runtime/files/reads/runtime-file-range-client'
import { translate } from '@/i18n/i18n'
import { detectCsvDelimiter } from './csv-parse'
import { CsvFooter, csvChosenDelimiter } from './CsvViewer'
@@ -0,0 +1,26 @@
import { describe, expect, it } from 'vitest'
import { readEditorCsvFileContent } from './csv-file-content'
import {
fsStat,
installRuntimeFileClientEnvironment
} from '@/runtime/files/runtime-file-client-test-harness'
installRuntimeFileClientEnvironment()
const localArgs = {
target: { kind: 'local' as const },
filePath: '/repo/large.csv',
relativePath: 'large.csv',
worktreeId: 'folder:workspace'
}
const snapshot = { size: 100 * 1024 * 1024, isDirectory: false, mtime: 123 }
describe('CSV file admission', () => {
it('provides a range preview for a large CSV', async () => {
fsStat.mockResolvedValue(snapshot)
expect(await readEditorCsvFileContent(localArgs)).toEqual({
content: '',
isBinary: false,
csvPreview: { readArgs: localArgs, snapshot }
})
})
})
@@ -1,9 +1,9 @@
import type { RuntimeFileReadArgs } from '@/runtime/runtime-file-client-types'
import { readRuntimeFileContent } from '@/runtime/runtime-file-read-client'
import type { RuntimeFileReadArgs } from '@/runtime/files/runtime-file-client-types'
import { readRuntimeFileContent } from '@/runtime/files/reads/runtime-file-read-client'
import {
statRuntimeReadTarget,
type RuntimeFileSnapshot
} from '@/runtime/runtime-file-range-client'
} from '@/runtime/files/reads/runtime-file-range-client'
import type { FileContent } from '../editor-panel-content-types'
import { CSV_PAGED_PREVIEW_BYTES } from './csv-file-limits'
@@ -3,7 +3,7 @@ import { CSV_MAX_PAGE_BYTES } from './csv-byte-index'
import { CsvPagedPreview } from './csv-paged-preview'
const mocks = vi.hoisted(() => ({ stat: vi.fn(), read: vi.fn(), request: vi.fn(), close: vi.fn() }))
vi.mock('@/runtime/runtime-file-range-client', () => ({
vi.mock('@/runtime/files/reads/runtime-file-range-client', () => ({
statRuntimeReadTarget: mocks.stat,
readRuntimeFileRange: mocks.read
}))
@@ -1,5 +1,8 @@
import { MAX_FILE_RANGE_READ_BYTES } from '../../../../../shared/file-range-read'
import { readRuntimeFileRange, statRuntimeReadTarget } from '@/runtime/runtime-file-range-client'
import {
readRuntimeFileRange,
statRuntimeReadTarget
} from '@/runtime/files/reads/runtime-file-range-client'
import type { CsvFilePreview } from './csv-file-content'
import {
CSV_MAX_PAGE_BYTES,
@@ -1,11 +1,13 @@
// @vitest-environment happy-dom
import { expect, it, vi } from 'vitest'
import { createEditorStore } from '@/store/slices/editor-slice-test-harness'
import { createEditorStore } from '@/store/slices/editor/editor-slice-test-harness'
import { createEditorSaveQueue } from '../save/queue/editor-save-queue'
import { canAutoSaveOpenFile } from '../autosave/editor-autosave'
const { writeFile } = vi.hoisted(() => ({ writeFile: vi.fn() }))
vi.mock('@/runtime/runtime-file-mutation-client', () => ({ writeRuntimeFile: writeFile }))
vi.mock('@/runtime/files/mutations/runtime-file-mutation-client', () => ({
writeRuntimeFile: writeFile
}))
it('blocks drafts, dirty state, autosave and explicit writes for paged previews', async () => {
const store = createEditorStore()
@@ -1,6 +1,6 @@
import type { LocalFileAccess } from '../../../../../shared/local-file-access'
import type { RuntimeFileOperationArgs } from '@/runtime/runtime-file-client-types'
import { readRuntimeFilePreview } from '@/runtime/runtime-file-read-client'
import type { RuntimeFileOperationArgs } from '@/runtime/files/runtime-file-client-types'
import { readRuntimeFilePreview } from '@/runtime/files/reads/runtime-file-read-client'
export function readLocalImagePreview(
absolutePath: string,

Some files were not shown because too many files have changed in this diff Show More