From 9db3efad33a76a12f9ecb73336c85a999c3a6ee2 Mon Sep 17 00:00:00 2001 From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> Date: Sat, 29 Aug 2026 08:17:00 -0700 Subject: [PATCH] test(shared): ban vi.mock factory keys that name no export of the mocked module A `vi.mock` key that matches no export of the module it names is not a stub, it is a comment. The registry serves it to nobody, production keeps calling the real function, and the suite goes green for a reason its author did not intend. Nothing caught this before: a factory is a plain object literal so it typechecks, nothing warns at runtime, and the only tell is to make the key throw and notice that nothing happens. The guard reads each factory's keys with the same oxc parser the bundler uses and compares them against the mocked module's real exports, following `export *`. A module whose exports cannot be fully enumerated is skipped rather than half-checked, so the guard never accuses a key it did not actually see. It convicted 86 sites across 73 suites on this commit, in eight clusters: 56 scheduleTerminalWebglAtlasRecovery on terminal-webgl-atlas-recovery 8 isSshPtyNotFoundError on ssh-pty-provider 7 isSshPtyIdentityMismatchError on ssh-pty-provider 3 answerStartupTerminalColorQueriesForPty on ipc/pty 4 BASE_REF_SEARCH_ARGS, filterBaseRefSearchOutput on git/repo 4 classifyProjectError, rateLimitedError, noteRateLimitSpend, rateLimitGuard 1 runWithFreshOrcaCloudSessionMock on profile-cloud-session-refresh 3 relative paths with no module behind them at all Each was confirmed dead by making the key throw on any access: 908 tests across the affected suites stayed green. The renamed symbols are repointed at the real export; the ones that exist nowhere are deleted; the three wrong paths are corrected. Deleting a key is behaviour-preserving by construction -- the real implementation was already the one running. The webgl cluster is the sharpest case: terminal-webgl-atlas-recovery's own test already asserted the module must NOT export `scheduleTerminalWebglAtlasRecovery`, and 56 suites went on mocking that name anyway. Nothing connected the two. --- .../github/project-view/mutations.test.ts | 6 +- .../register-core-handlers.test.ts | 2 +- .../ipc/repos-add-linked-worktree.test.ts | 2 +- .../ipc/repos-remote-client-events.test.ts | 4 +- src/main/ipc/repos-sparse-presets.test.ts | 4 +- .../profile-cloud-org-members-service.test.ts | 1 - .../ssh-relay-orphan-abandon-paths.test.ts | 3 +- .../ssh-relay-session-data-delivery.test.ts | 2 - .../ssh/ssh-relay-session-incarnation.test.ts | 3 +- .../ssh-relay-session-managed-hooks.test.ts | 2 - ...elay-session-reconnect-incarnation.test.ts | 5 +- ...-relay-session-recovery-durability.test.ts | 2 - .../ssh-relay-session-recovery-races.test.ts | 2 - .../ssh/ssh-relay-session-relay-loss.test.ts | 2 - .../ssh-relay-session-terminal-error.test.ts | 2 - src/main/ssh/ssh-relay-session.test.ts | 4 - ...r-cookie-import-google-disclosure.test.tsx | 2 +- ...-color-scheme-child-stdin.node-pty.test.ts | 2 +- ...ty-connection-agent-session-resume.test.ts | 6 +- ...nnection-cold-restore-agent-resume.test.ts | 6 +- ...ty-connection-cold-restore-repaint.test.ts | 6 +- ...ection-cold-restore-resume-command.test.ts | 6 +- ...onnection-command-finished-cleanup.test.ts | 6 +- ...-connection-daemon-snapshot-replay.test.ts | 6 +- ...tion-deferred-reattach-live-output.test.ts | 6 +- ...connection-deferred-ssh-passphrase.test.ts | 6 +- ...nnection-direct-ssh-reattach-retry.test.ts | 6 +- ...-connection-direct-ssh-spawn-retry.test.ts | 6 +- ...onnection-foreground-agent-routing.test.ts | 6 +- ...nnection-foreground-agent-sampling.test.ts | 6 +- ...on-foreground-routing-confirmation.test.ts | 6 +- ...y-connection-foreground-write-path.test.ts | 6 +- .../pty-connection-fresh-spawn-guards.test.ts | 6 +- .../pty-connection-hibernation-wake.test.ts | 6 +- ...y-connection-hidden-atlas-recovery.test.ts | 8 +- ...tion-hidden-backlog-reconciliation.test.ts | 6 +- ...connection-hidden-backlog-snapshot.test.ts | 6 +- ...ty-connection-hidden-codex-queries.test.ts | 6 +- ...ty-connection-hidden-delivery-gate.test.ts | 6 +- ...y-connection-hidden-output-restore.test.ts | 6 +- ...tion-hidden-query-snapshot-restore.test.ts | 6 +- ...ction-hidden-snapshot-live-overlap.test.ts | 6 +- ...ion-hidden-snapshot-resize-signals.test.ts | 6 +- ...nection-hidden-tui-snapshot-replay.test.ts | 6 +- ...n-hook-completion-bell-arbitration.test.ts | 6 +- ...ction-hook-completion-side-effects.test.ts | 6 +- ...y-connection-hook-idle-arbitration.test.ts | 6 +- ...pty-connection-interrupt-inference.test.ts | 6 +- ...nection-main-side-effect-authority.test.ts | 6 +- ...connection-mode-2031-subscriptions.test.ts | 6 +- ...ction-notification-settings-gating.test.ts | 6 +- ...pty-connection-parked-ssh-snapshot.test.ts | 6 +- .../pty-connection-pty-exit-teardown.test.ts | 6 +- ...-connection-queued-startup-consume.test.ts | 6 +- .../pty-connection-reattach-binding.test.ts | 6 +- ...pty-connection-reattach-mode-reset.test.ts | 6 +- ...y-connection-remote-runtime-attach.test.ts | 6 +- ...y-connection-renderer-risk-repaint.test.ts | 8 +- ...connection-replay-payload-handling.test.ts | 6 +- ...ection-restored-baseline-shortfall.test.ts | 6 +- ...ection-runtime-owner-spawn-routing.test.ts | 6 +- .../pty-connection-session-liveness.test.ts | 6 +- .../pty-connection-setup-split-spawn.test.ts | 6 +- ...-connection-sleeping-resume-banner.test.ts | 6 +- ...nection-ssh-startup-draft-delivery.test.ts | 6 +- ...-connection-stalled-hidden-restore.test.ts | 6 +- ...onnection-startup-command-delivery.test.ts | 6 +- ...-connection-task-complete-dispatch.test.ts | 6 +- ...y-connection-terminal-input-gating.test.ts | 6 +- ...ty-connection-typed-agent-identity.test.ts | 6 +- ...-connection-visibility-resume-size.test.ts | 6 +- ...pty-connection-windows-cjk-repaint.test.ts | 8 +- ...-connection-windows-keyboard-reset.test.ts | 6 +- src/shared/dead-mock-key-ban.test.ts | 208 ++++++++++++++++++ src/shared/source-scan/module-export-names.ts | 145 ++++++++++++ 75 files changed, 532 insertions(+), 207 deletions(-) create mode 100644 src/shared/dead-mock-key-ban.test.ts create mode 100644 src/shared/source-scan/module-export-names.ts diff --git a/src/main/github/project-view/mutations.test.ts b/src/main/github/project-view/mutations.test.ts index 4876f6da14b..06d2a22da35 100644 --- a/src/main/github/project-view/mutations.test.ts +++ b/src/main/github/project-view/mutations.test.ts @@ -28,14 +28,12 @@ vi.mock('./internals', () => ({ stdout: '' }), ghExecFileAsync: ghExecFileAsyncMock, - rateLimitGuard: () => ({ blocked: false }), - noteRateLimitSpend: vi.fn(), + repositoryRateLimitGuard: repositoryRateLimitGuardMock, noteRepositoryRateLimitSpend: noteRepositoryRateLimitSpendMock, projectHostAuthenticationError: projectHostAuthenticationErrorMock, projectGhExecOptions: (host?: string) => ({ host: host ?? 'github.com' }), - classifyProjectError: (stderr: string) => ({ type: 'unknown', message: stderr }), - rateLimitedError: () => ({ type: 'rate_limited', message: 'rate limited' }), + runGraphql: runGraphqlMock, runRest: runRestMock, validateSlugArgs: (owner: string, repo: string) => diff --git a/src/main/ipc/register-core-handlers/register-core-handlers.test.ts b/src/main/ipc/register-core-handlers/register-core-handlers.test.ts index 5648cca0219..b540341833d 100644 --- a/src/main/ipc/register-core-handlers/register-core-handlers.test.ts +++ b/src/main/ipc/register-core-handlers/register-core-handlers.test.ts @@ -140,7 +140,7 @@ vi.mock('electron', () => ({ } })) -vi.mock('../../shared/runtime-environment-store', () => ({ +vi.mock('../../../shared/runtime-environment-store', () => ({ listEnvironments: listEnvironmentsMock })) diff --git a/src/main/ipc/repos-add-linked-worktree.test.ts b/src/main/ipc/repos-add-linked-worktree.test.ts index de9da98ae38..8517266e0c7 100644 --- a/src/main/ipc/repos-add-linked-worktree.test.ts +++ b/src/main/ipc/repos-add-linked-worktree.test.ts @@ -52,7 +52,7 @@ vi.mock('../git/repo', () => ({ searchBaseRefs: vi.fn().mockResolvedValue([]) })) -vi.mock('../repo-detection', () => ({ +vi.mock('../repo-icon-autodetect', () => ({ detectRepoIconAndUpstream: detectRepoIconAndUpstreamMock })) diff --git a/src/main/ipc/repos-remote-client-events.test.ts b/src/main/ipc/repos-remote-client-events.test.ts index 8d8064f49d7..b244b2de54c 100644 --- a/src/main/ipc/repos-remote-client-events.test.ts +++ b/src/main/ipc/repos-remote-client-events.test.ts @@ -30,9 +30,7 @@ vi.mock('../git/repo', () => ({ isGitRepo: vi.fn().mockReturnValue(true), getRepoName: vi.fn().mockImplementation((path: string) => path.split('/').pop()), getBaseRefDefault: vi.fn().mockResolvedValue('origin/main'), - searchBaseRefs: vi.fn().mockResolvedValue([]), - BASE_REF_SEARCH_ARGS: ['for-each-ref'], - filterBaseRefSearchOutput: vi.fn().mockReturnValue([]) + searchBaseRefs: vi.fn().mockResolvedValue([]) })) vi.mock('./registered-worktree-roots-cache', () => ({ invalidateAuthorizedRootsCache: vi.fn() })) diff --git a/src/main/ipc/repos-sparse-presets.test.ts b/src/main/ipc/repos-sparse-presets.test.ts index 8de69f63255..1b3bf7aea83 100644 --- a/src/main/ipc/repos-sparse-presets.test.ts +++ b/src/main/ipc/repos-sparse-presets.test.ts @@ -37,9 +37,7 @@ vi.mock('../git/repo', () => ({ isGitRepo: vi.fn().mockReturnValue(true), getRepoName: vi.fn().mockImplementation((path: string) => path.split('/').pop()), getBaseRefDefault: vi.fn().mockResolvedValue('origin/main'), - searchBaseRefs: vi.fn().mockResolvedValue([]), - BASE_REF_SEARCH_ARGS: ['for-each-ref'], - filterBaseRefSearchOutput: vi.fn().mockReturnValue([]) + searchBaseRefs: vi.fn().mockResolvedValue([]) })) vi.mock('./registered-worktree-roots-cache', () => ({ diff --git a/src/main/orca-profiles/profile-cloud-org-members-service.test.ts b/src/main/orca-profiles/profile-cloud-org-members-service.test.ts index 8d4011d79ff..86535ab90a3 100644 --- a/src/main/orca-profiles/profile-cloud-org-members-service.test.ts +++ b/src/main/orca-profiles/profile-cloud-org-members-service.test.ts @@ -28,7 +28,6 @@ vi.mock('electron', () => ({ })) vi.mock('./profile-cloud-session-refresh', () => ({ - runWithFreshOrcaCloudSessionMock, runWithFreshOrcaCloudSession: runWithFreshOrcaCloudSessionMock })) diff --git a/src/main/ssh/ssh-relay-orphan-abandon-paths.test.ts b/src/main/ssh/ssh-relay-orphan-abandon-paths.test.ts index 9d08ac7da0f..de106a66083 100644 --- a/src/main/ssh/ssh-relay-orphan-abandon-paths.test.ts +++ b/src/main/ssh/ssh-relay-orphan-abandon-paths.test.ts @@ -78,8 +78,7 @@ vi.mock('../ipc/pty', () => ({ deletePtyOwnership: vi.fn(), setPtyOwnership: vi.fn(), restorePtyIncarnation: vi.fn(), - isCurrentPtyExit: vi.fn(() => true), - answerStartupTerminalColorQueriesForPty: vi.fn((_id: string, data: string) => data) + isCurrentPtyExit: vi.fn(() => true) })) vi.mock('../providers/ssh-filesystem-dispatch', () => ({ registerSshFilesystemProvider: vi.fn(), diff --git a/src/main/ssh/ssh-relay-session-data-delivery.test.ts b/src/main/ssh/ssh-relay-session-data-delivery.test.ts index 2eca6802f28..93cf7613b98 100644 --- a/src/main/ssh/ssh-relay-session-data-delivery.test.ts +++ b/src/main/ssh/ssh-relay-session-data-delivery.test.ts @@ -65,8 +65,6 @@ vi.mock('../agent-hooks/remote-managed-hook-installers', () => ({ })) vi.mock('../providers/ssh-pty-provider', () => ({ - isSshPtyNotFoundError: vi.fn().mockReturnValue(false), - isSshPtyIdentityMismatchError: vi.fn().mockReturnValue(false), SshPtyProvider: class MockSshPtyProvider { onData = vi.fn().mockImplementation((handler) => { ptyDataHandlerRef.current = handler diff --git a/src/main/ssh/ssh-relay-session-incarnation.test.ts b/src/main/ssh/ssh-relay-session-incarnation.test.ts index 129a98b3ebc..fac6ec5bbb9 100644 --- a/src/main/ssh/ssh-relay-session-incarnation.test.ts +++ b/src/main/ssh/ssh-relay-session-incarnation.test.ts @@ -76,8 +76,7 @@ vi.mock('../ipc/pty', () => ({ deletePtyOwnership: vi.fn(), setPtyOwnership: vi.fn(), restorePtyIncarnation: vi.fn(), - isCurrentPtyExit: vi.fn(() => true), - answerStartupTerminalColorQueriesForPty: vi.fn((_id: string, data: string) => data) + isCurrentPtyExit: vi.fn(() => true) })) vi.mock('../providers/ssh-filesystem-dispatch', () => ({ registerSshFilesystemProvider: vi.fn(), diff --git a/src/main/ssh/ssh-relay-session-managed-hooks.test.ts b/src/main/ssh/ssh-relay-session-managed-hooks.test.ts index 93723965f92..0caa74c637d 100644 --- a/src/main/ssh/ssh-relay-session-managed-hooks.test.ts +++ b/src/main/ssh/ssh-relay-session-managed-hooks.test.ts @@ -31,8 +31,6 @@ vi.mock('./ssh-channel-multiplexer', () => ({ } })) vi.mock('../providers/ssh-pty-provider', () => ({ - isSshPtyNotFoundError: vi.fn(() => false), - isSshPtyIdentityMismatchError: vi.fn(() => false), SshPtyProvider: class MockSshPtyProvider { onData = vi.fn().mockReturnValue(() => {}) onReplay = vi.fn().mockReturnValue(() => {}) diff --git a/src/main/ssh/ssh-relay-session-reconnect-incarnation.test.ts b/src/main/ssh/ssh-relay-session-reconnect-incarnation.test.ts index 3eebb3574b3..d0914cbe54d 100644 --- a/src/main/ssh/ssh-relay-session-reconnect-incarnation.test.ts +++ b/src/main/ssh/ssh-relay-session-reconnect-incarnation.test.ts @@ -81,8 +81,6 @@ vi.mock('../agent-hooks/remote-managed-hook-installers', () => ({ installRemoteManagedAgentHooks: vi.fn() })) vi.mock('../providers/ssh-pty-provider', () => ({ - isSshPtyNotFoundError: (error: unknown) => String(error).includes('not found'), - isSshPtyIdentityMismatchError: (error: unknown) => String(error).includes('identity mismatch'), SshPtyProvider: class MockSshPtyProvider { onData = vi.fn().mockReturnValue(() => {}) onReplay = vi.fn().mockReturnValue(() => {}) @@ -110,8 +108,7 @@ vi.mock('../ipc/pty', () => ({ deletePtyOwnership: vi.fn(), setPtyOwnership: vi.fn(), restorePtyIncarnation: vi.fn(), - isCurrentPtyExit: vi.fn(() => true), - answerStartupTerminalColorQueriesForPty: vi.fn((_id: string, data: string) => data) + isCurrentPtyExit: vi.fn(() => true) })) vi.mock('../providers/ssh-filesystem-dispatch', () => ({ registerSshFilesystemProvider: vi.fn(), diff --git a/src/main/ssh/ssh-relay-session-recovery-durability.test.ts b/src/main/ssh/ssh-relay-session-recovery-durability.test.ts index ed0136f9110..d5bf04dd983 100644 --- a/src/main/ssh/ssh-relay-session-recovery-durability.test.ts +++ b/src/main/ssh/ssh-relay-session-recovery-durability.test.ts @@ -53,8 +53,6 @@ vi.mock('../agent-hooks/remote-managed-hook-installers', () => ({ })) vi.mock('../providers/ssh-pty-provider', () => ({ - isSshPtyNotFoundError: vi.fn().mockReturnValue(false), - isSshPtyIdentityMismatchError: vi.fn().mockReturnValue(false), SshPtyProvider: class MockSshPtyProvider { onData = vi.fn().mockReturnValue(() => {}) onReplay = vi.fn().mockReturnValue(() => {}) diff --git a/src/main/ssh/ssh-relay-session-recovery-races.test.ts b/src/main/ssh/ssh-relay-session-recovery-races.test.ts index 26dd798ac5a..49081f6d30c 100644 --- a/src/main/ssh/ssh-relay-session-recovery-races.test.ts +++ b/src/main/ssh/ssh-relay-session-recovery-races.test.ts @@ -63,8 +63,6 @@ vi.mock('./ssh-channel-multiplexer', () => ({ } })) vi.mock('../providers/ssh-pty-provider', () => ({ - isSshPtyNotFoundError: vi.fn().mockReturnValue(false), - isSshPtyIdentityMismatchError: vi.fn().mockReturnValue(false), SshPtyProvider: class MockSshPtyProvider { onData = vi.fn().mockImplementation((handler) => { ptyDataHandlerRef.current = handler diff --git a/src/main/ssh/ssh-relay-session-relay-loss.test.ts b/src/main/ssh/ssh-relay-session-relay-loss.test.ts index 5053426131d..e716b665cd1 100644 --- a/src/main/ssh/ssh-relay-session-relay-loss.test.ts +++ b/src/main/ssh/ssh-relay-session-relay-loss.test.ts @@ -86,8 +86,6 @@ vi.mock('./ssh-channel-multiplexer', () => ({ })) vi.mock('../providers/ssh-pty-provider', () => ({ - isSshPtyNotFoundError: () => false, - isSshPtyIdentityMismatchError: () => false, SshPtyProvider: class MockSshPtyProvider { onData = vi.fn().mockReturnValue(() => {}) onReplay = vi.fn().mockReturnValue(() => {}) diff --git a/src/main/ssh/ssh-relay-session-terminal-error.test.ts b/src/main/ssh/ssh-relay-session-terminal-error.test.ts index 9bb14618319..7f7d6504d77 100644 --- a/src/main/ssh/ssh-relay-session-terminal-error.test.ts +++ b/src/main/ssh/ssh-relay-session-terminal-error.test.ts @@ -40,8 +40,6 @@ vi.mock('./ssh-channel-multiplexer', () => { }) vi.mock('../providers/ssh-pty-provider', () => ({ - isSshPtyNotFoundError: (err: unknown) => - (err instanceof Error ? err.message : String(err)).includes('not found'), SshPtyProvider: class MockSshPtyProvider { onData = vi.fn().mockReturnValue(() => {}) onReplay = vi.fn().mockReturnValue(() => {}) diff --git a/src/main/ssh/ssh-relay-session.test.ts b/src/main/ssh/ssh-relay-session.test.ts index 570fca21fd4..98804b247a8 100644 --- a/src/main/ssh/ssh-relay-session.test.ts +++ b/src/main/ssh/ssh-relay-session.test.ts @@ -61,10 +61,6 @@ vi.mock('./ssh-channel-multiplexer', () => { }) vi.mock('../providers/ssh-pty-provider', () => ({ - isSshPtyNotFoundError: (err: unknown) => - (err instanceof Error ? err.message : String(err)).includes('not found'), - isSshPtyIdentityMismatchError: (err: unknown) => - (err instanceof Error ? err.message : String(err)).includes('identity mismatch'), SshPtyProvider: class MockSshPtyProvider { onData = vi.fn().mockReturnValue(() => {}) onReplay = vi.fn().mockReturnValue(() => {}) diff --git a/src/renderer/src/components/browser-cookie-import-google-disclosure.test.tsx b/src/renderer/src/components/browser-cookie-import-google-disclosure.test.tsx index b7c210c3818..ab766f93873 100644 --- a/src/renderer/src/components/browser-cookie-import-google-disclosure.test.tsx +++ b/src/renderer/src/components/browser-cookie-import-google-disclosure.test.tsx @@ -16,7 +16,7 @@ vi.mock('@/components/ui/dropdown-menu', () => dropdownMenuStubs()) vi.mock('../ui/dropdown-menu', () => dropdownMenuStubs()) vi.mock('@/components/ui/popover', () => popoverStubs()) vi.mock('@/store', () => ({ useAppStore: appStoreStub() })) -vi.mock('../../store', () => ({ useAppStore: appStoreStub() })) +vi.mock('../store', () => ({ useAppStore: appStoreStub() })) vi.mock('sonner', () => ({ toast: { success: vi.fn(), error: vi.fn() } })) import { BrowserCookieImportDisclosure } from './BrowserCookieImportDisclosure' diff --git a/src/renderer/src/components/terminal-pane/fish-color-scheme-child-stdin.node-pty.test.ts b/src/renderer/src/components/terminal-pane/fish-color-scheme-child-stdin.node-pty.test.ts index b3b949addbe..0c4d7ce6cf9 100644 --- a/src/renderer/src/components/terminal-pane/fish-color-scheme-child-stdin.node-pty.test.ts +++ b/src/renderer/src/components/terminal-pane/fish-color-scheme-child-stdin.node-pty.test.ts @@ -61,7 +61,7 @@ let transportFactoryQueue: unknown[] = [] vi.mock('@/runtime/sync-runtime-graph', () => ({ scheduleRuntimeGraphSync: vi.fn() })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery: vi.fn() + scheduleImagePasteWebglAtlasRecovery: vi.fn() })) vi.mock('@/lib/codex-stale-pane-sweep', () => ({ notifyCodexPaneBoundForStaleSweep: vi.fn() })) vi.mock('sonner', () => ({ toast: { info: vi.fn() } })) diff --git a/src/renderer/src/components/terminal-pane/pty-connection-agent-session-resume.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-agent-session-resume.test.ts index c93294ba2f9..e0872eab5e2 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-agent-session-resume.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-agent-session-resume.test.ts @@ -22,14 +22,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -51,7 +51,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-agent-resume.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-agent-resume.test.ts index 35b37855238..26ac95271cd 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-agent-resume.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-agent-resume.test.ts @@ -21,14 +21,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -50,7 +50,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-repaint.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-repaint.test.ts index a1c71fdbce4..c228c1c3e31 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-repaint.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-repaint.test.ts @@ -29,14 +29,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -58,7 +58,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-resume-command.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-resume-command.test.ts index 89bcc7254d1..36f011524a0 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-resume-command.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-cold-restore-resume-command.test.ts @@ -22,14 +22,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -51,7 +51,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-command-finished-cleanup.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-command-finished-cleanup.test.ts index 5a6de84e03c..a7365b4aeb1 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-command-finished-cleanup.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-command-finished-cleanup.test.ts @@ -30,14 +30,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -59,7 +59,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-daemon-snapshot-replay.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-daemon-snapshot-replay.test.ts index 2a20be95575..60c97b2c752 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-daemon-snapshot-replay.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-daemon-snapshot-replay.test.ts @@ -28,14 +28,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -57,7 +57,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-deferred-reattach-live-output.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-deferred-reattach-live-output.test.ts index fa110cdfe0e..b19a5fe0307 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-deferred-reattach-live-output.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-deferred-reattach-live-output.test.ts @@ -22,14 +22,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -51,7 +51,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-deferred-ssh-passphrase.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-deferred-ssh-passphrase.test.ts index 72b51ac3d01..6d30e58caf2 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-deferred-ssh-passphrase.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-deferred-ssh-passphrase.test.ts @@ -22,14 +22,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -51,7 +51,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-direct-ssh-reattach-retry.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-direct-ssh-reattach-retry.test.ts index 34cea763cd7..ab083c0fcff 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-direct-ssh-reattach-retry.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-direct-ssh-reattach-retry.test.ts @@ -22,14 +22,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -51,7 +51,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-direct-ssh-spawn-retry.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-direct-ssh-spawn-retry.test.ts index 410f8afac54..e1c52784484 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-direct-ssh-spawn-retry.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-direct-ssh-spawn-retry.test.ts @@ -18,14 +18,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -47,7 +47,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-foreground-agent-routing.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-foreground-agent-routing.test.ts index 8ec26ef0cea..e0a6d6f39d8 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-foreground-agent-routing.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-foreground-agent-routing.test.ts @@ -29,14 +29,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -58,7 +58,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-foreground-agent-sampling.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-foreground-agent-sampling.test.ts index 50e1b4a0f8b..337795cfa67 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-foreground-agent-sampling.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-foreground-agent-sampling.test.ts @@ -30,14 +30,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -59,7 +59,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-foreground-routing-confirmation.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-foreground-routing-confirmation.test.ts index fd46a623242..e888512e0e4 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-foreground-routing-confirmation.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-foreground-routing-confirmation.test.ts @@ -28,14 +28,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -57,7 +57,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-foreground-write-path.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-foreground-write-path.test.ts index 743f06f6f42..d31b3b1d25f 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-foreground-write-path.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-foreground-write-path.test.ts @@ -22,14 +22,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -51,7 +51,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-fresh-spawn-guards.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-fresh-spawn-guards.test.ts index acbced67212..64abc2e72db 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-fresh-spawn-guards.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-fresh-spawn-guards.test.ts @@ -20,14 +20,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -49,7 +49,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hibernation-wake.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hibernation-wake.test.ts index 8577c08ea1e..e69d125e85a 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hibernation-wake.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hibernation-wake.test.ts @@ -19,14 +19,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -48,7 +48,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hidden-atlas-recovery.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hidden-atlas-recovery.test.ts index 6e6dc136b52..6982da39603 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hidden-atlas-recovery.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hidden-atlas-recovery.test.ts @@ -19,14 +19,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -48,7 +48,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ @@ -130,7 +130,7 @@ function createDeps(overrides: Record = {}) { function expectNoGlobalAtlasRecovery(): void { // Why: the removed output path requested recovery 200ms before its global reset ran. - expect(scheduleTerminalWebglAtlasRecovery).not.toHaveBeenCalled() + expect(scheduleImagePasteWebglAtlasRecovery).not.toHaveBeenCalled() expect(resetAndRefreshAllTerminalWebglAtlases).not.toHaveBeenCalled() } diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hidden-backlog-reconciliation.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hidden-backlog-reconciliation.test.ts index c08315150ac..0bf54c5ad99 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hidden-backlog-reconciliation.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hidden-backlog-reconciliation.test.ts @@ -19,14 +19,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -48,7 +48,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hidden-backlog-snapshot.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hidden-backlog-snapshot.test.ts index a54c78f87de..1d17b8b1c1d 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hidden-backlog-snapshot.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hidden-backlog-snapshot.test.ts @@ -29,7 +29,7 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, @@ -37,7 +37,7 @@ const { presentPaneViewportPreservingSynchronizedOutput } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -65,7 +65,7 @@ vi.mock('@/lib/pane-manager/pane-webgl-renderer', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hidden-codex-queries.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hidden-codex-queries.test.ts index fe18699c20d..c09f05cde9a 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hidden-codex-queries.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hidden-codex-queries.test.ts @@ -26,14 +26,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -55,7 +55,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hidden-delivery-gate.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hidden-delivery-gate.test.ts index 645c522fcfc..30972228f8c 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hidden-delivery-gate.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hidden-delivery-gate.test.ts @@ -19,14 +19,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -48,7 +48,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hidden-output-restore.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hidden-output-restore.test.ts index 5835e55fff7..8bf3706dd60 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hidden-output-restore.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hidden-output-restore.test.ts @@ -20,14 +20,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -49,7 +49,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hidden-query-snapshot-restore.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hidden-query-snapshot-restore.test.ts index 7351a7f7456..193c78c4224 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hidden-query-snapshot-restore.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hidden-query-snapshot-restore.test.ts @@ -18,14 +18,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -47,7 +47,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hidden-snapshot-live-overlap.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hidden-snapshot-live-overlap.test.ts index 157066f306e..68e52b4834a 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hidden-snapshot-live-overlap.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hidden-snapshot-live-overlap.test.ts @@ -18,14 +18,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -47,7 +47,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hidden-snapshot-resize-signals.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hidden-snapshot-resize-signals.test.ts index f5745fbdc37..0415cdd5cc1 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hidden-snapshot-resize-signals.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hidden-snapshot-resize-signals.test.ts @@ -18,14 +18,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -47,7 +47,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hidden-tui-snapshot-replay.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hidden-tui-snapshot-replay.test.ts index d9e64472adc..a9538df53ac 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hidden-tui-snapshot-replay.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hidden-tui-snapshot-replay.test.ts @@ -18,14 +18,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -47,7 +47,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hook-completion-bell-arbitration.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hook-completion-bell-arbitration.test.ts index 74ef53788f8..c685054a650 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hook-completion-bell-arbitration.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hook-completion-bell-arbitration.test.ts @@ -26,14 +26,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -55,7 +55,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hook-completion-side-effects.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hook-completion-side-effects.test.ts index 865f1158997..8742461e823 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hook-completion-side-effects.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hook-completion-side-effects.test.ts @@ -31,14 +31,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -60,7 +60,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-hook-idle-arbitration.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-hook-idle-arbitration.test.ts index 956cca98943..b4278753c65 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-hook-idle-arbitration.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-hook-idle-arbitration.test.ts @@ -22,14 +22,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -51,7 +51,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-interrupt-inference.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-interrupt-inference.test.ts index 4b1f376b773..8296eadd1e4 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-interrupt-inference.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-interrupt-inference.test.ts @@ -20,14 +20,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -49,7 +49,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-main-side-effect-authority.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-main-side-effect-authority.test.ts index 25b4027c545..ae5ace1a651 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-main-side-effect-authority.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-main-side-effect-authority.test.ts @@ -24,14 +24,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -53,7 +53,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-mode-2031-subscriptions.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-mode-2031-subscriptions.test.ts index c517a3c63c7..9420ffd7a6e 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-mode-2031-subscriptions.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-mode-2031-subscriptions.test.ts @@ -18,14 +18,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -47,7 +47,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-notification-settings-gating.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-notification-settings-gating.test.ts index 9297bb51955..1b181f671c8 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-notification-settings-gating.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-notification-settings-gating.test.ts @@ -21,14 +21,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -50,7 +50,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-parked-ssh-snapshot.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-parked-ssh-snapshot.test.ts index 39191d5d36a..9d62dc8807a 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-parked-ssh-snapshot.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-parked-ssh-snapshot.test.ts @@ -27,14 +27,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -56,7 +56,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-pty-exit-teardown.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-pty-exit-teardown.test.ts index a577488b3e6..e3ed9063463 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-pty-exit-teardown.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-pty-exit-teardown.test.ts @@ -22,14 +22,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -51,7 +51,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-queued-startup-consume.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-queued-startup-consume.test.ts index a09e1584567..077bc31da54 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-queued-startup-consume.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-queued-startup-consume.test.ts @@ -17,14 +17,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -43,7 +43,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ resetAndRefreshAllTerminalWebglAtlases })) -vi.mock('./terminal-webgl-atlas-recovery', () => ({ scheduleTerminalWebglAtlasRecovery })) +vi.mock('./terminal-webgl-atlas-recovery', () => ({ scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ useAppStore: { diff --git a/src/renderer/src/components/terminal-pane/pty-connection-reattach-binding.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-reattach-binding.test.ts index 047ab764814..5770f1f3a8d 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-reattach-binding.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-reattach-binding.test.ts @@ -21,14 +21,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -50,7 +50,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-reattach-mode-reset.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-reattach-mode-reset.test.ts index 99c54dad2eb..2d629903a35 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-reattach-mode-reset.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-reattach-mode-reset.test.ts @@ -38,14 +38,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -67,7 +67,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-remote-runtime-attach.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-remote-runtime-attach.test.ts index 23ec29e6323..d1418862bb4 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-remote-runtime-attach.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-remote-runtime-attach.test.ts @@ -25,14 +25,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -54,7 +54,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-renderer-risk-repaint.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-renderer-risk-repaint.test.ts index a96c5eea47e..4c4d53ea695 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-renderer-risk-repaint.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-renderer-risk-repaint.test.ts @@ -19,14 +19,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -48,7 +48,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ @@ -130,7 +130,7 @@ function createDeps(overrides: Record = {}) { function expectNoGlobalAtlasRecovery(): void { // Why: the removed output path requested recovery 200ms before its global reset ran. - expect(scheduleTerminalWebglAtlasRecovery).not.toHaveBeenCalled() + expect(scheduleImagePasteWebglAtlasRecovery).not.toHaveBeenCalled() expect(resetAndRefreshAllTerminalWebglAtlases).not.toHaveBeenCalled() } diff --git a/src/renderer/src/components/terminal-pane/pty-connection-replay-payload-handling.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-replay-payload-handling.test.ts index 559060108ee..5762bc5a860 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-replay-payload-handling.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-replay-payload-handling.test.ts @@ -36,14 +36,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -65,7 +65,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-restored-baseline-shortfall.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-restored-baseline-shortfall.test.ts index 5ac0a49fcb6..4d4d6c7c25b 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-restored-baseline-shortfall.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-restored-baseline-shortfall.test.ts @@ -18,14 +18,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -45,7 +45,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-runtime-owner-spawn-routing.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-runtime-owner-spawn-routing.test.ts index 668b9328942..b80537dbc9e 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-runtime-owner-spawn-routing.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-runtime-owner-spawn-routing.test.ts @@ -21,14 +21,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -50,7 +50,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-session-liveness.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-session-liveness.test.ts index 1d9da05fdcc..4fd68c9ff03 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-session-liveness.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-session-liveness.test.ts @@ -23,14 +23,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -52,7 +52,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-setup-split-spawn.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-setup-split-spawn.test.ts index c61fb188caf..e5d5616b5df 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-setup-split-spawn.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-setup-split-spawn.test.ts @@ -20,14 +20,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -49,7 +49,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-sleeping-resume-banner.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-sleeping-resume-banner.test.ts index f6d0457e76a..0d024b6444b 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-sleeping-resume-banner.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-sleeping-resume-banner.test.ts @@ -20,14 +20,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -49,7 +49,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-ssh-startup-draft-delivery.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-ssh-startup-draft-delivery.test.ts index 2538c9e0cec..25bffa52723 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-ssh-startup-draft-delivery.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-ssh-startup-draft-delivery.test.ts @@ -23,14 +23,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -52,7 +52,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-stalled-hidden-restore.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-stalled-hidden-restore.test.ts index d4c2ffd6745..3649762b91e 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-stalled-hidden-restore.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-stalled-hidden-restore.test.ts @@ -20,14 +20,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -49,7 +49,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-startup-command-delivery.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-startup-command-delivery.test.ts index 969bf836594..025ae98b61a 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-startup-command-delivery.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-startup-command-delivery.test.ts @@ -22,14 +22,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -51,7 +51,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-task-complete-dispatch.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-task-complete-dispatch.test.ts index 410c252adc8..90334b74b5a 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-task-complete-dispatch.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-task-complete-dispatch.test.ts @@ -27,14 +27,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -56,7 +56,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-terminal-input-gating.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-terminal-input-gating.test.ts index 7853d305145..b09afd04cc9 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-terminal-input-gating.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-terminal-input-gating.test.ts @@ -25,14 +25,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -54,7 +54,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-typed-agent-identity.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-typed-agent-identity.test.ts index 119e61e121e..b7cd7f75973 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-typed-agent-identity.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-typed-agent-identity.test.ts @@ -24,14 +24,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -53,7 +53,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-visibility-resume-size.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-visibility-resume-size.test.ts index 2432e380069..919bb104d18 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-visibility-resume-size.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-visibility-resume-size.test.ts @@ -19,14 +19,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -48,7 +48,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/renderer/src/components/terminal-pane/pty-connection-windows-cjk-repaint.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-windows-cjk-repaint.test.ts index 36ff881de7c..8103a022a5c 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-windows-cjk-repaint.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-windows-cjk-repaint.test.ts @@ -22,14 +22,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -51,7 +51,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ @@ -133,7 +133,7 @@ function createDeps(overrides: Record = {}) { function expectNoGlobalAtlasRecovery(): void { // Why: the removed output path requested recovery 200ms before its global reset ran. - expect(scheduleTerminalWebglAtlasRecovery).not.toHaveBeenCalled() + expect(scheduleImagePasteWebglAtlasRecovery).not.toHaveBeenCalled() expect(resetAndRefreshAllTerminalWebglAtlases).not.toHaveBeenCalled() } diff --git a/src/renderer/src/components/terminal-pane/pty-connection-windows-keyboard-reset.test.ts b/src/renderer/src/components/terminal-pane/pty-connection-windows-keyboard-reset.test.ts index 471e237a200..74998862dff 100644 --- a/src/renderer/src/components/terminal-pane/pty-connection-windows-keyboard-reset.test.ts +++ b/src/renderer/src/components/terminal-pane/pty-connection-windows-keyboard-reset.test.ts @@ -26,14 +26,14 @@ import { const { resetAndRefreshAllTerminalWebglAtlases, - scheduleTerminalWebglAtlasRecovery, + scheduleImagePasteWebglAtlasRecovery, scheduleRuntimeGraphSync, shouldSeedCacheTimerOnInitialTitle, toastInfo, notifyCodexPaneBoundForStaleSweep } = vi.hoisted(() => ({ resetAndRefreshAllTerminalWebglAtlases: vi.fn(), - scheduleTerminalWebglAtlasRecovery: vi.fn(), + scheduleImagePasteWebglAtlasRecovery: vi.fn(), scheduleRuntimeGraphSync: vi.fn(), shouldSeedCacheTimerOnInitialTitle: vi.fn(() => false), toastInfo: vi.fn(), @@ -55,7 +55,7 @@ vi.mock('@/lib/pane-manager/pane-manager-registry', async (importOriginal) => ({ })) vi.mock('./terminal-webgl-atlas-recovery', () => ({ - scheduleTerminalWebglAtlasRecovery + scheduleImagePasteWebglAtlasRecovery })) vi.mock('@/store', () => ({ diff --git a/src/shared/dead-mock-key-ban.test.ts b/src/shared/dead-mock-key-ban.test.ts new file mode 100644 index 00000000000..e676a0279ec --- /dev/null +++ b/src/shared/dead-mock-key-ban.test.ts @@ -0,0 +1,208 @@ +import { resolve } from 'node:path' +import { beforeAll, describe, expect, it } from 'vitest' +import type { parseAst as ParseAstFn } from 'vite' with { 'resolution-mode': 'import' } +import type { AstNode, ParseProgram } from './source-scan/module-export-names' +import { readExportedNames, resolveRelativeModule } from './source-scan/module-export-names' +import { scanSourceTree } from './source-scan/source-tree-scan' + +// Dynamic import: vite is ESM-only and this file typechecks under tsconfig.tc.cli.json's node16/CJS. +let parseAst: typeof ParseAstFn + +beforeAll(async () => { + ;({ parseAst } = await import('vite')) +}) + +/** + * Ban `vi.mock` factory keys that name nothing the mocked module exports. + * + * A key that matches no export is not a stub -- it is a comment. The module + * registry serves it to nobody, production keeps calling the real function, and + * the suite goes green for a reason its author did not intend. Nothing else + * catches this: it typechecks (a factory is a plain object literal), it does not + * warn at runtime, and the tell only shows if you make the key throw and notice + * that nothing happens. + * + * It found 83 such keys across 73 suites on the commit that introduced it, + * in seven clusters. The two largest were symbols that had been renamed or moved + * out of the mocked module, leaving eight SSH-relay suites and 56 terminal-pane + * suites each carrying a stub that had never once been reached. + */ + +type MockCall = { specifier: string; keys: string[] } + +/** Unwraps a factory to the object literal it yields, or null if not statically known. */ +function factoryObject(node: AstNode | undefined): AstNode | null { + let current: AstNode | undefined = node + if (current?.type === 'ArrowFunctionExpression' || current?.type === 'FunctionExpression') { + // A concise arrow body is one node; a block body is a statement list. + current = Array.isArray(current.body) ? undefined : current.body + if (current?.type === 'BlockStatement') { + const statements = Array.isArray(current.body) ? current.body : [] + current = statements.findLast((statement) => statement.type === 'ReturnStatement')?.argument + } + } + const TRANSPARENT = [ + 'TSAsExpression', + 'ParenthesizedExpression', + 'AwaitExpression', + 'TSSatisfiesExpression' + ] + while (current && TRANSPARENT.includes(current.type)) { + current = current.expression ?? current.argument + } + return current?.type === 'ObjectExpression' ? current : null +} + +/** + * Every statically readable `vi.mock`/`vi.doMock` in a file. + * + * A factory whose keys cannot all be read -- a computed key, or a returned + * identifier -- is dropped whole rather than half-checked, so the guard never + * accuses a key it did not actually see. + */ +function readMockCalls(program: { body: AstNode[] }): MockCall[] { + const calls: MockCall[] = [] + const stack: unknown[] = [program] + while (stack.length > 0) { + const node = stack.pop() + if (!node || typeof node !== 'object') { + continue + } + if (Array.isArray(node)) { + stack.push(...node) + continue + } + const candidate = node as AstNode + const callee = candidate.callee + if ( + candidate.type === 'CallExpression' && + callee?.type === 'MemberExpression' && + callee.object?.name === 'vi' && + (callee.property?.name === 'mock' || callee.property?.name === 'doMock') + ) { + calls.push(...readMockCall(candidate)) + } + stack.push(...Object.values(candidate as Record)) + } + return calls +} + +function readMockCall(call: AstNode): MockCall[] { + const args = call.arguments ?? [] + const target = args[0] + // `vi.mock(import('./x'), ...)` names its module through an import expression. + const specifier = target?.type === 'Literal' ? target.value : target?.source?.value + const object = factoryObject(args[1]) + if (typeof specifier !== 'string' || !object) { + return [] + } + const keys: string[] = [] + for (const property of object.properties ?? []) { + // A spread carries the real module's exports through; its own keys are not ours to judge. + if (property.type === 'SpreadElement') { + continue + } + const key = property.computed ? undefined : (property.key?.name ?? property.key?.value) + if (typeof key !== 'string') { + return [] + } + keys.push(key) + } + return [{ specifier, keys }] +} + +describe('dead vi.mock factory keys', () => { + const repoRoot = resolve(__dirname, '..', '..') + const offenders: string[] = [] + const phantomPaths: string[] = [] + const unparseable: string[] = [] + let filesScanned = 0 + let mockCallsSeen = 0 + let mockCallsChecked = 0 + + beforeAll(() => { + const scanned = scanSourceTree(resolve(repoRoot, 'src'), { includeTests: true }) + filesScanned = scanned.length + // One pass to hold every file's text, so a mocked module is readable whether or + // not the walk has reached it yet. + const sources = new Map(scanned.map((file) => [file.path, file.source])) + const parse: ParseProgram = (file) => + parseAst(sources.get(file) ?? '', { + lang: file.endsWith('.tsx') ? 'tsx' : 'ts' + }) as unknown as { body: AstNode[] } + const exportCache = new Map>() + const exportsOf = (file: string): ReturnType => { + const cached = exportCache.get(file) + if (cached) { + return cached + } + const read = readExportedNames(file, parse) + exportCache.set(file, read) + return read + } + + for (const file of scanned) { + if (!/vi\.(?:mock|doMock)\s*\(/.test(file.source)) { + continue + } + let program: { body: AstNode[] } + try { + program = parse(file.path) + } catch { + // Fail closed: a file the guard cannot read is not a file the guard cleared. + unparseable.push(file.relativePath) + continue + } + for (const call of readMockCalls(program)) { + mockCallsSeen += 1 + const target = resolveRelativeModule(file.path, call.specifier) + if (!target) { + // A relative path that resolves to nothing is the same bug one level up: + // the whole factory is dead, not just a key. `?asset`-style specifiers are + // resolved by a bundler plugin, not by the filesystem, so they are exempt. + if (call.specifier.startsWith('.') && !call.specifier.includes('?')) { + phantomPaths.push(`${file.relativePath}: vi.mock('${call.specifier}')`) + } + continue + } + const { names, complete } = exportsOf(target) + if (!complete) { + continue + } + mockCallsChecked += 1 + for (const key of call.keys.filter((name) => !names.has(name))) { + offenders.push(`${file.relativePath}: vi.mock('${call.specifier}') key '${key}'`) + } + } + } + }) + + it('scans a plausible amount of the tree', () => { + // Counting what the filter saw, not just what it reported: a broken walk or a + // regressed AST shape would make every assertion below vacuously green. + expect(filesScanned).toBeGreaterThan(5000) + expect(mockCallsSeen).toBeGreaterThan(2000) + expect(mockCallsChecked).toBeGreaterThan(1000) + }) + + it('parses every file that mocks a module', () => { + expect(unparseable).toEqual([]) + }) + + it('mocks no relative path that resolves to no module', () => { + expect( + phantomPaths, + 'This vi.mock names a relative path with no module behind it, so the whole factory is ' + + 'inert and the real module loads. Correct the path.' + ).toEqual([]) + }) + + it('has no factory key that the mocked module does not export', () => { + expect( + offenders, + 'This vi.mock key matches no export of that module, so the mock never applies and the ' + + 'real implementation runs. Point it at the module that actually exports the symbol, ' + + 'fix the name, or delete the key.' + ).toEqual([]) + }) +}) diff --git a/src/shared/source-scan/module-export-names.ts b/src/shared/source-scan/module-export-names.ts new file mode 100644 index 00000000000..b2436e13f22 --- /dev/null +++ b/src/shared/source-scan/module-export-names.ts @@ -0,0 +1,145 @@ +import { existsSync, statSync } from 'node:fs' +import { dirname, resolve } from 'node:path' + +/** + * The set of names a module actually exports, read from its source. + * + * Why source and not a dynamic import: the modules a test mocks are the ones + * with side effects at import time -- Electron handles, native bindings, a + * relay socket -- so importing them to enumerate their exports is exactly what + * the mock existed to avoid. + */ + +export type AstNode = { + type: string + name?: string + value?: unknown + computed?: boolean + declaration?: AstNode + declarations?: { id?: { name?: string } }[] + specifiers?: { exported?: { name?: string; value?: string } }[] + exported?: { name?: string } | null + source?: { value?: string } + id?: { name?: string } + key?: { name?: string; value?: unknown } + properties?: AstNode[] + arguments?: AstNode[] + callee?: AstNode + object?: AstNode + property?: AstNode + expression?: AstNode + argument?: AstNode + /** An array on a Program or BlockStatement, a single node on a concise arrow body. */ + body?: AstNode | AstNode[] +} + +export type ParseProgram = (filePath: string) => { body: AstNode[] } + +/** Extensions tried for a relative specifier, in resolution order. */ +const CANDIDATE_SUFFIXES = ['.ts', '.tsx', '/index.ts', '/index.tsx'] + +/** + * A relative specifier resolved to a file in the tree, or null. + * + * Bare specifiers return null on purpose: a package's exports are not ours to + * read, and guessing at them would be the wrong kind of confident. + */ +export function resolveRelativeModule(fromFile: string, specifier: string): string | null { + if (!specifier.startsWith('.')) { + return null + } + // A `.js` specifier is the TS `node16` spelling of a `.ts` file on disk. + const base = resolve(dirname(fromFile), specifier.replace(/\.js$/, '')) + if (existsSync(base) && statSync(base).isFile()) { + return base + } + return CANDIDATE_SUFFIXES.map((suffix) => base + suffix).find((path) => existsSync(path)) ?? null +} + +export type ModuleExports = { + names: Set + /** + * False when some export could not be enumerated -- an unparseable file, a + * destructured `export const`, or an `export *` through a package. Callers + * must skip an incomplete module rather than report its keys as unknown, + * because a partial set turns every real export it missed into a false + * accusation. + */ + complete: boolean +} + +function collectDeclarationNames(declaration: AstNode, into: ModuleExports): void { + if (declaration.type === 'VariableDeclaration') { + for (const declarator of declaration.declarations ?? []) { + if (declarator.id?.name) { + into.names.add(declarator.id.name) + } else { + into.complete = false + } + } + return + } + if (declaration.id?.name) { + into.names.add(declaration.id.name) + return + } + into.complete = false +} + +/** Follows `export * from './x'` so a barrel reports what it really re-exports. */ +export function readExportedNames( + file: string, + parse: ParseProgram, + seen = new Set() +): ModuleExports { + if (seen.has(file)) { + return { names: new Set(), complete: true } + } + seen.add(file) + let program: { body: AstNode[] } + try { + program = parse(file) + } catch { + return { names: new Set(), complete: false } + } + const result: ModuleExports = { names: new Set(), complete: true } + for (const statement of program.body) { + if (statement.type === 'ExportDefaultDeclaration') { + result.names.add('default') + continue + } + if (statement.type === 'ExportNamedDeclaration') { + if (statement.declaration) { + collectDeclarationNames(statement.declaration, result) + } + for (const specifier of statement.specifiers ?? []) { + const name = specifier.exported?.name ?? specifier.exported?.value + if (name) { + result.names.add(name) + } else { + result.complete = false + } + } + continue + } + if (statement.type !== 'ExportAllDeclaration') { + continue + } + // `export * as ns from '...'` contributes one name, not the target's set. + if (statement.exported?.name) { + result.names.add(statement.exported.name) + continue + } + const target = resolveRelativeModule(file, statement.source?.value ?? '') + if (!target) { + result.complete = false + continue + } + const reExported = readExportedNames(target, parse, seen) + for (const name of reExported.names) { + result.names.add(name) + } + result.complete &&= reExported.complete + } + return result +}