diff --git a/mobile/src/hooks/use-mobile-dictation.ts b/mobile/src/hooks/use-mobile-dictation.ts index 5f43ffcf0..a1028cf92 100644 --- a/mobile/src/hooks/use-mobile-dictation.ts +++ b/mobile/src/hooks/use-mobile-dictation.ts @@ -1,6 +1,3 @@ -/* oxlint-disable max-lines -- Why: mobile dictation keeps permission, recording, - * chunk upload, completion, and cancellation in one hook so native audio state - * cannot drift from the runtime RPC lifecycle. */ import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react' // Why: import from 'buffer' (the npm polyfill), not 'node:buffer' — Metro // can't resolve Node's builtin in a React Native bundle. diff --git a/src/cli/browser.test.ts b/src/cli/browser.test.ts index 7ca2c509a..83ca43d48 100644 --- a/src/cli/browser.test.ts +++ b/src/cli/browser.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: this file groups every CLI browser-command test (page targeting, profiles, waits, viewport) so test-fixture imports and the runtime-client mock stay shared in one place. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' const callMock = vi.fn() diff --git a/src/cli/handlers/file.test.ts b/src/cli/handlers/file.test.ts index fa03e286c..4e36ddbff 100644 --- a/src/cli/handlers/file.test.ts +++ b/src/cli/handlers/file.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: file CLI coverage shares one mocked runtime setup across command contracts. */ import { beforeEach, describe, expect, it, vi } from 'vitest' const callMock = vi.fn() diff --git a/src/main/agent-hooks/remote-hook-service-installers.test.ts b/src/main/agent-hooks/remote-hook-service-installers.test.ts index 3cd61db55..8a85128cd 100644 --- a/src/main/agent-hooks/remote-hook-service-installers.test.ts +++ b/src/main/agent-hooks/remote-hook-service-installers.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: this fixture verifies the shared remote hook installer fake across every managed agent so SSH regressions are caught together. */ import { describe, expect, it, vi } from 'vitest' import type { SFTPWrapper } from 'ssh2' diff --git a/src/main/attribution/terminal-attribution.test.ts b/src/main/attribution/terminal-attribution.test.ts index a051d04ca..86096168f 100644 --- a/src/main/attribution/terminal-attribution.test.ts +++ b/src/main/attribution/terminal-attribution.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: these tests exercise generated shell wrapper -scripts end-to-end, and keeping the regression fixtures adjacent makes the -attribution safety cases easier to audit. */ import { execFileSync } from 'node:child_process' import { chmodSync, diff --git a/src/main/automations/external-manager.test.ts b/src/main/automations/external-manager.test.ts index a44ad186f..dc96b9b96 100644 --- a/src/main/automations/external-manager.test.ts +++ b/src/main/automations/external-manager.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: external automation mapping and lifecycle IPC share fixtures. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { createExternalAutomation, diff --git a/src/main/browser/browser-cookie-import.test.ts b/src/main/browser/browser-cookie-import.test.ts index 767f35931..c2965e7f1 100644 --- a/src/main/browser/browser-cookie-import.test.ts +++ b/src/main/browser/browser-cookie-import.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: cookie import tests share import-time Electron mocks plus - browser-specific cookie fixtures; splitting would duplicate brittle setup. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' const { sessionFromPartitionMock, dialogShowOpenDialogMock } = vi.hoisted(() => ({ diff --git a/src/main/browser/browser-screencast-stream.test.ts b/src/main/browser/browser-screencast-stream.test.ts index 6c6be1cbc..d1fc83880 100644 --- a/src/main/browser/browser-screencast-stream.test.ts +++ b/src/main/browser/browser-screencast-stream.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: one fixture-backed file covers screencast frame, viewport, dialog, and cleanup behavior together. */ import { Buffer } from 'node:buffer' import { EventEmitter } from 'node:events' import { describe, expect, it, vi } from 'vitest' diff --git a/src/main/browser/cdp-bridge-integration.test.ts b/src/main/browser/cdp-bridge-integration.test.ts index e1992fe23..daaae6054 100644 --- a/src/main/browser/cdp-bridge-integration.test.ts +++ b/src/main/browser/cdp-bridge-integration.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: integration test covering the full browser automation pipeline end-to-end. */ import { mkdtempSync } from 'node:fs' import { tmpdir } from 'node:os' import { join } from 'node:path' diff --git a/src/main/claude-usage/store.test.ts b/src/main/claude-usage/store.test.ts index 1bd4502d2..08a76e469 100644 --- a/src/main/claude-usage/store.test.ts +++ b/src/main/claude-usage/store.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: scan gating, pricing, and automation -usage attribution share one stateful Claude usage store fixture. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import type { ClaudeUsagePersistedState } from './types' diff --git a/src/main/cli/wsl-cli-installer.test.ts b/src/main/cli/wsl-cli-installer.test.ts index 4698281ec..b9228fcb6 100644 --- a/src/main/cli/wsl-cli-installer.test.ts +++ b/src/main/cli/wsl-cli-installer.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- WSL CLI tests cover one installer state machine with shared - runner fixtures; splitting would duplicate the fake WSL filesystem setup. */ import type { CliInstallStatus } from '../../shared/cli-install-types' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/src/main/codex-usage/scanner-paths.test.ts b/src/main/codex-usage/scanner-paths.test.ts index 3f3eec442..46c10be0c 100644 --- a/src/main/codex-usage/scanner-paths.test.ts +++ b/src/main/codex-usage/scanner-paths.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: path discovery and legacy bridge scan preference cases need shared mocked homes to keep filesystem behavior realistic. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { linkSync, lstatSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs' import { tmpdir } from 'node:os' diff --git a/src/main/daemon/client.test.ts b/src/main/daemon/client.test.ts index 7d2bea915..25aaebe16 100644 --- a/src/main/daemon/client.test.ts +++ b/src/main/daemon/client.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: daemon connection, RPC, event, and disconnect behavior share one socket test harness. */ import { EventEmitter } from 'node:events' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { createServer, type Server, type Socket } from 'node:net' diff --git a/src/main/daemon/daemon-server.test.ts b/src/main/daemon/daemon-server.test.ts index ab3486677..ae017e0ef 100644 --- a/src/main/daemon/daemon-server.test.ts +++ b/src/main/daemon/daemon-server.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: daemon server RPC, auth, stream batching, and shutdown behavior share one socket/client harness; splitting would duplicate setup. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { connect, type Server, type Socket } from 'node:net' import { tmpdir } from 'node:os' diff --git a/src/main/daemon/reattach-snapshot.test.ts b/src/main/daemon/reattach-snapshot.test.ts index 8735b76be..a8bdf2524 100644 --- a/src/main/daemon/reattach-snapshot.test.ts +++ b/src/main/daemon/reattach-snapshot.test.ts @@ -1,4 +1,3 @@ -/* oxlint-disable max-lines */ import { afterEach, describe, expect, it, vi } from 'vitest' import { TerminalHost } from './terminal-host' import { HeadlessEmulator } from './headless-emulator' diff --git a/src/main/daemon/shell-ready.test.ts b/src/main/daemon/shell-ready.test.ts index af3ced5ad..b741ef057 100644 --- a/src/main/daemon/shell-ready.test.ts +++ b/src/main/daemon/shell-ready.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: shell-ready wrapper coverage keeps zsh, - bash, marker scanning, and env restoration cases in one suite so the - generated wrapper contract is reviewed as a unit. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { spawnSync } from 'node:child_process' import { tmpdir } from 'node:os' diff --git a/src/main/daemon/terminal-host.test.ts b/src/main/daemon/terminal-host.test.ts index ecc9fd116..4f92d4c1e 100644 --- a/src/main/daemon/terminal-host.test.ts +++ b/src/main/daemon/terminal-host.test.ts @@ -1,4 +1,3 @@ -/* oxlint-disable max-lines */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { Session, type SubprocessHandle } from './session' import { TerminalHost } from './terminal-host' diff --git a/src/main/git/runner-wsl-gh-fallback.test.ts b/src/main/git/runner-wsl-gh-fallback.test.ts index 4bafa9f19..3aae18243 100644 --- a/src/main/git/runner-wsl-gh-fallback.test.ts +++ b/src/main/git/runner-wsl-gh-fallback.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: WSL fallback, retry safety, and glab parity share mocks. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type * as WslModule from '../wsl' diff --git a/src/main/github/client-create-pr.test.ts b/src/main/github/client-create-pr.test.ts index d46f461b9..6c64e4b80 100644 --- a/src/main/github/client-create-pr.test.ts +++ b/src/main/github/client-create-pr.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: create-PR tests share gh/SSH mocks across - template, CLI, and error-path cases; keeping them together prevents drift. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import { readFile } from 'node:fs/promises' diff --git a/src/main/github/client-issue-source.test.ts b/src/main/github/client-issue-source.test.ts index 2b4a039b3..3daf66943 100644 --- a/src/main/github/client-issue-source.test.ts +++ b/src/main/github/client-issue-source.test.ts @@ -1,7 +1,3 @@ -/* eslint-disable max-lines -- Why: the issue-source test suite covers the -heuristic split (#1076), the partial-failure envelope (feature 1), and the -three-state preference matrix (feature 2) as one surface so a regression in -any of them blocks the same merge gate. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import type * as GhUtils from './gh-utils' diff --git a/src/main/github/client-work-items.test.ts b/src/main/github/client-work-items.test.ts index e6ce6005c..5a281ddfc 100644 --- a/src/main/github/client-work-items.test.ts +++ b/src/main/github/client-work-items.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: work-items coverage stays in one file so -the fan-out mock plumbing (issue + PR gh calls, allSettled handling) does -not drift across split files. */ import { beforeEach, describe, expect, it, vi } from 'vitest' const { diff --git a/src/main/github/project-view/internals.ts b/src/main/github/project-view/internals.ts index 52509c306..586bbaa6e 100644 --- a/src/main/github/project-view/internals.ts +++ b/src/main/github/project-view/internals.ts @@ -1,7 +1,3 @@ -/* eslint-disable max-lines -- Why: shared infrastructure for project-view — -slug validation, error classification, runGraphql/runRest, and rate-limit -synthesis. Co-located so the read and write paths observe identical -classification semantics. */ // Why: `ghExecFileAsync` (WSL-aware, retry-enabled) is the single spawn site // for gh calls. The legacy plain `execFileAsync` is NOT used here — routing // every gh call through the runner gives us transient-5xx retry, WSL path diff --git a/src/main/gitlab/issues.test.ts b/src/main/gitlab/issues.test.ts index f567936d9..edc6d2457 100644 --- a/src/main/gitlab/issues.test.ts +++ b/src/main/gitlab/issues.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: GitLab issue mutation/list coverage shares glab mocks across related endpoint cases. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import type * as GlUtils from './gl-utils' diff --git a/src/main/gitlab/merge-request-creation.test.ts b/src/main/gitlab/merge-request-creation.test.ts index cd1b5de98..b7ead7c98 100644 --- a/src/main/gitlab/merge-request-creation.test.ts +++ b/src/main/gitlab/merge-request-creation.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: MR creation tests share glab and SSH filesystem mocks across CLI, template, and duplicate-detection paths. */ import { beforeEach, describe, expect, it, vi } from 'vitest' const { diff --git a/src/main/ipc/browser.test.ts b/src/main/ipc/browser.test.ts index 98fab06f4..042140cd3 100644 --- a/src/main/ipc/browser.test.ts +++ b/src/main/ipc/browser.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: browser IPC tests share one mocked trust-boundary handler registry plus registration waiters; splitting would duplicate setup and weaken coverage. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' const { diff --git a/src/main/ipc/crash-reporting.test.ts b/src/main/ipc/crash-reporting.test.ts index 1c2059bb7..04432899a 100644 --- a/src/main/ipc/crash-reporting.test.ts +++ b/src/main/ipc/crash-reporting.test.ts @@ -1,4 +1,3 @@ -/* oxlint-disable max-lines -- Why: crash-reporting IPC tests share mocked Electron/observability handler setup; splitting would duplicate brittle IPC wiring. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import type { CrashReportRecord } from '../../shared/crash-reporting' diff --git a/src/main/ipc/diagnostics.test.ts b/src/main/ipc/diagnostics.test.ts index b30d013f6..2868fdec1 100644 --- a/src/main/ipc/diagnostics.test.ts +++ b/src/main/ipc/diagnostics.test.ts @@ -1,4 +1,3 @@ -/* oxlint-disable max-lines -- Why: diagnostics IPC tests share mocked Electron handler setup; splitting would duplicate brittle IPC wiring. */ import { readFileSync, writeFileSync } from 'node:fs' import { beforeEach, describe, expect, it, vi } from 'vitest' import type { CollectedBundle } from '../observability/bundle' diff --git a/src/main/ipc/filesystem-import.test.ts b/src/main/ipc/filesystem-import.test.ts index 01b28e1c3..fcd004dcd 100644 --- a/src/main/ipc/filesystem-import.test.ts +++ b/src/main/ipc/filesystem-import.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: import tests cover local copy, SSH routing, -symlink safety, and runtime-upload staging against one shared IPC fixture. */ import path from 'node:path' import { constants } from 'node:fs' import { Readable, Writable } from 'node:stream' diff --git a/src/main/ipc/filesystem-list-files.test.ts b/src/main/ipc/filesystem-list-files.test.ts index 9a04660ec..638775a48 100644 --- a/src/main/ipc/filesystem-list-files.test.ts +++ b/src/main/ipc/filesystem-list-files.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: one Quick Open file-list suite covers both rg and git fallback process lifecycles. */ import { describe, expect, it, vi, beforeEach } from 'vitest' const { diff --git a/src/main/ipc/filesystem-watcher.test.ts b/src/main/ipc/filesystem-watcher.test.ts index b1af20fd1..0b3b07ca0 100644 --- a/src/main/ipc/filesystem-watcher.test.ts +++ b/src/main/ipc/filesystem-watcher.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: filesystem watcher tests share module-level -state across local, WSL, and SSH lifecycle paths; keeping them together makes -closeAllWatchers cleanup regressions visible in one suite. */ import { beforeEach, describe, expect, it, vi } from 'vitest' const { handleMock, getSshFilesystemProviderMock } = vi.hoisted(() => ({ diff --git a/src/main/ipc/pty-management.test.ts b/src/main/ipc/pty-management.test.ts index c644d885d..443b356ba 100644 --- a/src/main/ipc/pty-management.test.ts +++ b/src/main/ipc/pty-management.test.ts @@ -1,7 +1,3 @@ -/* eslint-disable max-lines -- Why: covers every pty:management IPC channel -against shared mocks (electron, fs, daemon-init, DaemonPtyRouter). Splitting -across files would duplicate the vi.hoisted setup and the shared helpers, -with no meaningful ownership seam. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type { DaemonSessionInfo } from '../daemon/types' diff --git a/src/main/ipc/register-core-handlers.test.ts b/src/main/ipc/register-core-handlers.test.ts index 5ce6342c3..0b7c4e071 100644 --- a/src/main/ipc/register-core-handlers.test.ts +++ b/src/main/ipc/register-core-handlers.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: this test mirrors the complete core IPC handler registry so - duplicate-registration coverage stays tied to the one production entry point. */ import { beforeEach, describe, expect, it, vi } from 'vitest' const { diff --git a/src/main/ipc/remote-workspace-patch-queue.test.ts b/src/main/ipc/remote-workspace-patch-queue.test.ts index 6de465626..1c97ad6b7 100644 --- a/src/main/ipc/remote-workspace-patch-queue.test.ts +++ b/src/main/ipc/remote-workspace-patch-queue.test.ts @@ -1,4 +1,3 @@ -/* oxlint-disable max-lines -- Why: queue/cache regression cases share one mocked IPC harness so stale revision sequencing stays visible. */ import { ipcMain } from 'electron' import { beforeEach, describe, expect, it, vi } from 'vitest' import type { Store } from '../persistence' diff --git a/src/main/ipc/shell.test.ts b/src/main/ipc/shell.test.ts index 24ac41e2d..2e1b84290 100644 --- a/src/main/ipc/shell.test.ts +++ b/src/main/ipc/shell.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: shell IPC path validation, OS opener fallbacks, and launcher lifecycle tests share one mocked Electron/child_process boundary. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import { normalize, resolve } from 'node:path' import { pathToFileURL } from 'node:url' diff --git a/src/main/ipc/telemetry.test.ts b/src/main/ipc/telemetry.test.ts index 27c7d0cd1..40679160f 100644 --- a/src/main/ipc/telemetry.test.ts +++ b/src/main/ipc/telemetry.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: a single test file pins the IPC boundary behavior for all four telemetry handlers plus the cohort-injection invariants; splitting would fragment the threat-model coverage. */ // IPC boundary behavior for the telemetry surface. Strict type narrows must // drop obviously-malformed calls before they reach the validator (the // renderer is in the threat model). Pins the consent-mutation rate limit: diff --git a/src/main/ipc/workspace-cleanup.test.ts b/src/main/ipc/workspace-cleanup.test.ts index 6fe5320b1..af084713a 100644 --- a/src/main/ipc/workspace-cleanup.test.ts +++ b/src/main/ipc/workspace-cleanup.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: scan and IPC process-liveness tests share - hoisted Electron/git provider mocks; splitting would duplicate brittle setup. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { ipcMain } from 'electron' import type { Store } from '../persistence' diff --git a/src/main/ipc/worktree-logic.test.ts b/src/main/ipc/worktree-logic.test.ts index 7ba2350c8..219235ac9 100644 --- a/src/main/ipc/worktree-logic.test.ts +++ b/src/main/ipc/worktree-logic.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: these worktree path/name tests share a -single setup-free pure-logic module, and splitting them would make the related -edge cases harder to audit together. */ import { posix, resolve } from 'node:path' import { describe, expect, it } from 'vitest' import { diff --git a/src/main/observability/bundle.test.ts b/src/main/observability/bundle.test.ts index 539eebc70..d53271182 100644 --- a/src/main/observability/bundle.test.ts +++ b/src/main/observability/bundle.test.ts @@ -1,4 +1,3 @@ -/* oxlint-disable max-lines -- Why: diagnostics bundle fixtures cover collection, preview deletion, upload URL hardening, and byte caps as one contract surface. Splitting would duplicate the temp-file/server harness and make edge-case coverage harder to audit. */ // Bundle collection + upload tests. Upload helpers live outside bundle.ts, but // this suite keeps the diagnostic bundle contract in one place. diff --git a/src/main/observability/redactor.test.ts b/src/main/observability/redactor.test.ts index 4ad470bc7..8de266151 100644 --- a/src/main/observability/redactor.test.ts +++ b/src/main/observability/redactor.test.ts @@ -1,4 +1,3 @@ -/* oxlint-disable max-lines -- Why: the redactor has intentionally broad fixture coverage across every secret location and key-shape rule; keeping it together makes gaps visible. */ // Fixture-based test suite for the redactor. Each provider-key shape is // exercised in three locations (attribute value, span event message, // exit-status `cause`) — that's the contract telemetry-error-tracking.md diff --git a/src/main/opencode-usage/scanner.test.ts b/src/main/opencode-usage/scanner.test.ts index 6efec7beb..c4bd46aae 100644 --- a/src/main/opencode-usage/scanner.test.ts +++ b/src/main/opencode-usage/scanner.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: OpenCode scanner tests cover multiple DB schema generations and attribution boundaries together so parser regressions stay auditable. */ import { mkdtempSync, rmSync } from 'node:fs' import { tmpdir } from 'node:os' import { join } from 'node:path' diff --git a/src/main/opencode/hook-service.test.ts b/src/main/opencode/hook-service.test.ts index 9d71a25d8..2ad00cf5b 100644 --- a/src/main/opencode/hook-service.test.ts +++ b/src/main/opencode/hook-service.test.ts @@ -1,8 +1,3 @@ -/* eslint-disable max-lines -- Why: this suite covers four orthogonal regimes - (plugin source, id guards, legacy per-PTY round-trip, and overlay mode for - user-set OPENCODE_CONFIG_DIR). Splitting them across files would scatter - tightly coupled fixtures (userData mock, hooks/overlay roots) and obscure - the docs/opencode-config-dir-collision.md regression matrix. */ import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest' import { existsSync, diff --git a/src/main/project-groups/nested-repo-discovery.test.ts b/src/main/project-groups/nested-repo-discovery.test.ts index 0d016cf1c..f38e29ea5 100644 --- a/src/main/project-groups/nested-repo-discovery.test.ts +++ b/src/main/project-groups/nested-repo-discovery.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: nested scan behavior is intentionally covered in one -suite so traversal order, ignore rules, cancellation, and filesystem fixtures stay aligned. */ import { mkdtemp, mkdir, writeFile, rm, symlink } from 'node:fs/promises' import { join } from 'node:path' import { tmpdir } from 'node:os' diff --git a/src/main/providers/ssh-filesystem-provider.test.ts b/src/main/providers/ssh-filesystem-provider.test.ts index f008c380d..6d4170209 100644 --- a/src/main/providers/ssh-filesystem-provider.test.ts +++ b/src/main/providers/ssh-filesystem-provider.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: SSH filesystem provider coverage keeps relay fallback, -SFTP binary writes, watch fan-out, and provider lifecycle tests together so -transport parity regressions are visible in one suite. */ import { describe, expect, it, vi, beforeEach } from 'vitest' import { SshFilesystemProvider } from './ssh-filesystem-provider' import { JsonRpcErrorCode } from '../ssh/relay-protocol' diff --git a/src/main/runtime/mobile-subscribe-integration.test.ts b/src/main/runtime/mobile-subscribe-integration.test.ts index f2cf2587d..3d36716dd 100644 --- a/src/main/runtime/mobile-subscribe-integration.test.ts +++ b/src/main/runtime/mobile-subscribe-integration.test.ts @@ -1,4 +1,3 @@ -/* oxlint-disable max-lines -- Why: integration tests cover the full mobile subscribe lifecycle across many scenarios; splitting would scatter related assertions. */ /** * Integration tests for the server-authoritative mobile subscribe lifecycle. * Tests handleMobileSubscribe, handleMobileUnsubscribe, applyMobileDisplayMode, diff --git a/src/main/runtime/orca-runtime-browser.test.ts b/src/main/runtime/orca-runtime-browser.test.ts index b3edc6cdb..7c55f7532 100644 --- a/src/main/runtime/orca-runtime-browser.test.ts +++ b/src/main/runtime/orca-runtime-browser.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: browser runtime command tests share one -mocked BrowserManager/agent-browser bridge so page wake and registration -ordering regressions stay in one boundary-focused suite. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import type { AgentBrowserBridge } from '../browser/agent-browser-bridge' import type { RuntimeBrowserCommandHost } from './orca-runtime-browser' diff --git a/src/main/runtime/orchestration/coordinator.test.ts b/src/main/runtime/orchestration/coordinator.test.ts index 5ec2b914a..a10c4ea20 100644 --- a/src/main/runtime/orchestration/coordinator.test.ts +++ b/src/main/runtime/orchestration/coordinator.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: coordinator tests cover dispatch, DAG ordering, escalation, decision gates, concurrency, and stop — splitting by category would scatter shared setup without improving clarity. */ import { afterEach, describe, expect, it } from 'vitest' import { OrchestrationDb } from './db' import { reconcileLifecycleMessage } from './lifecycle-reconciliation' diff --git a/src/main/runtime/orchestration/db.test.ts b/src/main/runtime/orchestration/db.test.ts index 3f2c12ef2..8f43298a9 100644 --- a/src/main/runtime/orchestration/db.test.ts +++ b/src/main/runtime/orchestration/db.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: DB tests cover messages, tasks, dispatch contexts, decision gates, coordinator runs, and lifecycle in one suite to share the createDb() helper and afterEach cleanup. */ import { mkdtempSync, rmSync } from 'node:fs' import { tmpdir } from 'node:os' import { join } from 'node:path' diff --git a/src/main/runtime/rpc/methods/files.test.ts b/src/main/runtime/rpc/methods/files.test.ts index 7aea0b7c7..7282489c7 100644 --- a/src/main/runtime/rpc/methods/files.test.ts +++ b/src/main/runtime/rpc/methods/files.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: file RPC routing coverage stays together so -the dispatcher contract for read, write, mutation, and watch methods is easy to audit. */ import { describe, expect, it, vi } from 'vitest' import { RpcDispatcher } from '../dispatcher' import type { RpcRequest } from '../core' diff --git a/src/main/runtime/rpc/methods/git.test.ts b/src/main/runtime/rpc/methods/git.test.ts index 850276906..bb69dfc59 100644 --- a/src/main/runtime/rpc/methods/git.test.ts +++ b/src/main/runtime/rpc/methods/git.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: git RPC methods share one dispatcher fixture, and keeping the contract cases together makes method coverage easy to audit. */ import { describe, expect, it, vi } from 'vitest' import { RpcDispatcher } from '../dispatcher' import type { RpcRequest } from '../core' diff --git a/src/main/runtime/rpc/methods/github.test.ts b/src/main/runtime/rpc/methods/github.test.ts index 8330a1d0b..2135507c3 100644 --- a/src/main/runtime/rpc/methods/github.test.ts +++ b/src/main/runtime/rpc/methods/github.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: runtime GitHub RPC methods share one dispatcher suite so repo-scoped and Project-scoped contract coverage cannot drift. */ import { describe, expect, it, vi } from 'vitest' import { RpcDispatcher } from '../dispatcher' import type { RpcRequest } from '../core' diff --git a/src/main/runtime/rpc/methods/gitlab.test.ts b/src/main/runtime/rpc/methods/gitlab.test.ts index cb88fbff7..ca429f3d4 100644 --- a/src/main/runtime/rpc/methods/gitlab.test.ts +++ b/src/main/runtime/rpc/methods/gitlab.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: one routing test exercises the full GitLab RPC surface so provider parity regressions show up in a single contract fixture. */ import { describe, expect, it, vi } from 'vitest' import { RpcDispatcher } from '../dispatcher' import type { RpcRequest } from '../core' diff --git a/src/main/runtime/rpc/terminal-subscribe-buffer.test.ts b/src/main/runtime/rpc/terminal-subscribe-buffer.test.ts index dfd185b33..adad88dde 100644 --- a/src/main/runtime/rpc/terminal-subscribe-buffer.test.ts +++ b/src/main/runtime/rpc/terminal-subscribe-buffer.test.ts @@ -1,4 +1,3 @@ -/* oxlint-disable max-lines -- Why: terminal subscribe buffering tests share a live dispatcher harness; splitting would duplicate stream setup and weaken lifecycle coverage. */ import { describe, expect, it, vi } from 'vitest' import { RpcDispatcher } from './dispatcher' import type { RpcRequest } from './core' diff --git a/src/main/runtime/rpc/ws-transport.test.ts b/src/main/runtime/rpc/ws-transport.test.ts index 775050fe8..b9f4c94dd 100644 --- a/src/main/runtime/rpc/ws-transport.test.ts +++ b/src/main/runtime/rpc/ws-transport.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: these tests exercise one stateful transport - boundary across connection lifecycle, heartbeat, pre-auth timeout, and - shutdown behavior; splitting the setup would obscure the shared invariants. */ import { mkdtempSync } from 'node:fs' import { tmpdir } from 'node:os' import { join } from 'node:path' diff --git a/src/main/runtime/rpc/ws-transport.ts b/src/main/runtime/rpc/ws-transport.ts index 53a776f39..37f6094b5 100644 --- a/src/main/runtime/rpc/ws-transport.ts +++ b/src/main/runtime/rpc/ws-transport.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: the WebSocket transport owns connection - admission, heartbeat, pre-auth timeout, and client-id cleanup together; those - invariants are easier to audit in one transport boundary. */ // Why: the WebSocket transport enables mobile clients to connect to the Orca // runtime over the local network. When TLS cert/key are provided it uses wss:// // to prevent passive sniffing; otherwise it falls back to plain ws://. Per-device diff --git a/src/main/source-control/hosted-review-creation.test.ts b/src/main/source-control/hosted-review-creation.test.ts index e50731c85..c03447d40 100644 --- a/src/main/source-control/hosted-review-creation.test.ts +++ b/src/main/source-control/hosted-review-creation.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: hosted review creation permutations share large mocks; splitting would hide branch-specific expectations. */ import { beforeEach, describe, expect, it, vi } from 'vitest' const { diff --git a/src/main/ssh/ssh-channel-multiplexer.test.ts b/src/main/ssh/ssh-channel-multiplexer.test.ts index f0576a65f..8c56ae145 100644 --- a/src/main/ssh/ssh-channel-multiplexer.test.ts +++ b/src/main/ssh/ssh-channel-multiplexer.test.ts @@ -1,5 +1,3 @@ -/* oxlint-disable max-lines -- Why: keeps the mux protocol lifecycle harness - together across request, notification, keepalive, and disposal cases. */ import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest' import { SshChannelMultiplexer, type MultiplexerTransport } from './ssh-channel-multiplexer' import { encodeFrame, MessageType, HEADER_LENGTH, encodeKeepAliveFrame } from './relay-protocol' diff --git a/src/main/ssh/ssh-config-parser.test.ts b/src/main/ssh/ssh-config-parser.test.ts index 5999c1c96..f550c833a 100644 --- a/src/main/ssh/ssh-config-parser.test.ts +++ b/src/main/ssh/ssh-config-parser.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: SSH config parsing fixtures cover OpenSSH file parsing and ssh -G output together so import and connection resolution stay aligned. */ import { describe, expect, it, vi } from 'vitest' import { join } from 'node:path' import { parseSshConfig, sshConfigHostsToTargets, parseSshGOutput } from './ssh-config-parser' diff --git a/src/main/ssh/ssh-connection-utils.test.ts b/src/main/ssh/ssh-connection-utils.test.ts index ed10780ca..0c578cff7 100644 --- a/src/main/ssh/ssh-connection-utils.test.ts +++ b/src/main/ssh/ssh-connection-utils.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: SSH connection utility tests share mocked filesystem and environment setup across auth, proxy, and retry helpers. */ import { EventEmitter } from 'node:events' import { afterEach, describe, expect, it, vi, beforeEach } from 'vitest' import { join } from 'node:path' diff --git a/src/main/ssh/ssh-relay-native-deps-install.test.ts b/src/main/ssh/ssh-relay-native-deps-install.test.ts index 0cedf1aff..2b63b3a2d 100644 --- a/src/main/ssh/ssh-relay-native-deps-install.test.ts +++ b/src/main/ssh/ssh-relay-native-deps-install.test.ts @@ -1,8 +1,3 @@ -/* eslint-disable max-lines -- Why: pinning every layer that should have - caught the original "node-pty not available" bug (chained shell, package - ordering, probe shape, channel-failure surfacing, .bashrc-noise immunity, - platform-tagged logs) requires keeping these scenarios in one file so the - shared mock connection and exec-response fixture stay aligned. */ // Why: regression coverage for the install-probe contract. The original // "node-pty is not available" bug shipped because every layer that should // have caught it (chained shell, swallowing catch, dir-only probe) was diff --git a/src/main/ssh/ssh-relay-session-agent-hooks.integration.test.ts b/src/main/ssh/ssh-relay-session-agent-hooks.integration.test.ts index 31b357ca0..3de35a65f 100644 --- a/src/main/ssh/ssh-relay-session-agent-hooks.integration.test.ts +++ b/src/main/ssh/ssh-relay-session-agent-hooks.integration.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: this integration spec keeps the SSH relay, -agent-hook server, and replay/interrupt ordering fixtures together so regressions -cover the full mux-to-main path. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type { Store } from '../persistence' diff --git a/src/main/ssh/ssh-relay-session.test.ts b/src/main/ssh/ssh-relay-session.test.ts index aa616dd15..0dfa2edc8 100644 --- a/src/main/ssh/ssh-relay-session.test.ts +++ b/src/main/ssh/ssh-relay-session.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: relay session tests need one shared mocked -provider/multiplexer harness to cover establish, reconnect, detach, and dispose -state transitions without duplicating brittle setup. */ import { describe, it, expect, vi, beforeEach } from 'vitest' import { SshRelaySession } from './ssh-relay-session' import type { SshConnection } from './ssh-connection' diff --git a/src/main/startup/run-electron-vite-dev.test.ts b/src/main/startup/run-electron-vite-dev.test.ts index 7a30d115b..214656337 100644 --- a/src/main/startup/run-electron-vite-dev.test.ts +++ b/src/main/startup/run-electron-vite-dev.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: this integration-style wrapper suite shares - process cleanup and fake Electron CLI fixtures across related regressions. */ import { existsSync, mkdtempSync, readFileSync, readlinkSync, rmSync } from 'node:fs' import { tmpdir } from 'node:os' import { dirname, join, resolve } from 'node:path' diff --git a/src/main/terminal-history.test.ts b/src/main/terminal-history.test.ts index c5e8e2ca8..a9750bb60 100644 --- a/src/main/terminal-history.test.ts +++ b/src/main/terminal-history.test.ts @@ -1,7 +1,3 @@ -/* eslint-disable max-lines -- Why: history scoping touches shell detection, env -injection, fallback patching, WSL translation, cleanup, and GC with a TOCTOU age -guard — covering each path in one test file keeps assertions co-located with the -shared mock harness rather than splitting across files. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' const { diff --git a/src/main/window/attach-main-window-services.test.ts b/src/main/window/attach-main-window-services.test.ts index 192e6e8f7..718711b62 100644 --- a/src/main/window/attach-main-window-services.test.ts +++ b/src/main/window/attach-main-window-services.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: attachMainWindowServices centralizes main-window IPC wiring; keeping its integration-style mocks together avoids brittle cross-file setup. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import type { Store } from '../persistence' diff --git a/src/main/workspace-space-analysis.test.ts b/src/main/workspace-space-analysis.test.ts index d6b24b3df..bfee52956 100644 --- a/src/main/workspace-space-analysis.test.ts +++ b/src/main/workspace-space-analysis.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: scan, cancellation, SSH fallback, and compaction tests share temp-repo fixtures. */ import { mkdtemp, mkdir, rm, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { join } from 'node:path' diff --git a/src/relay/dispatcher.test.ts b/src/relay/dispatcher.test.ts index 5598ae46e..a87e37c60 100644 --- a/src/relay/dispatcher.test.ts +++ b/src/relay/dispatcher.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: dispatcher behavior is stateful across - primary, socket, timeout, and cancellation paths; keeping fixtures shared - makes regression tests easier to audit. */ import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest' import { RelayDispatcher } from './dispatcher' import { diff --git a/src/relay/fs-handler.test.ts b/src/relay/fs-handler.test.ts index b90a786f7..7d5354cf4 100644 --- a/src/relay/fs-handler.test.ts +++ b/src/relay/fs-handler.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: this suite covers relay filesystem RPCs, - Space scans, file watcher lifecycle edges, and cross-platform path behavior together. */ import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest' import { FsHandler } from './fs-handler' import { MAX_TEXT_FILE_SIZE } from './fs-handler-utils' diff --git a/src/relay/subprocess.test.ts b/src/relay/subprocess.test.ts index 059e5739f..4d19542b9 100644 --- a/src/relay/subprocess.test.ts +++ b/src/relay/subprocess.test.ts @@ -1,4 +1,3 @@ -/* oxlint-disable max-lines -- Why: subprocess coverage shares one bundled relay artifact; splitting this file would rebuild the same daemon bundle across suites and make these lifecycle tests slower/flakier. */ import { afterAll, beforeAll, describe, expect, it, afterEach } from 'vitest' import { existsSync, mkdtempSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs' import { rm } from 'node:fs/promises' diff --git a/src/renderer/src/components/UpdateCard.test.ts b/src/renderer/src/components/UpdateCard.test.ts index 510ec81d7..9d4b75094 100644 --- a/src/renderer/src/components/UpdateCard.test.ts +++ b/src/renderer/src/components/UpdateCard.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: the update-card behavior is easiest to verify as one - lifecycle-oriented suite because the store caching and visibility rules interact directly. */ import { createStore, type StoreApi } from 'zustand/vanilla' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { getDefaultUIState } from '../../../shared/constants' diff --git a/src/renderer/src/components/editor/editor-autosave-controller.test.ts b/src/renderer/src/components/editor/editor-autosave-controller.test.ts index 8493536a2..9d50997d9 100644 --- a/src/renderer/src/components/editor/editor-autosave-controller.test.ts +++ b/src/renderer/src/components/editor/editor-autosave-controller.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: autosave behavior depends on event wiring, - dirty drafts, remote routing, quiesce, and failure cleanup in one harness. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { createStore, type StoreApi } from 'zustand/vanilla' import { createEditorSlice } from '@/store/slices/editor' diff --git a/src/renderer/src/components/onboarding/NotificationStep.tsx b/src/renderer/src/components/onboarding/NotificationStep.tsx index 29bd0c87a..ef43e335c 100644 --- a/src/renderer/src/components/onboarding/NotificationStep.tsx +++ b/src/renderer/src/components/onboarding/NotificationStep.tsx @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: this onboarding step owns the full notification setup surface, including macOS guidance, sound choices, and upload controls. */ import { useCallback, useEffect, useRef, useState } from 'react' import { BellRing, FileAudio, Settings, Upload } from 'lucide-react' import { toast } from 'sonner' diff --git a/src/renderer/src/components/right-sidebar/source-control-dropdown-items.test.ts b/src/renderer/src/components/right-sidebar/source-control-dropdown-items.test.ts index 770aeb2e4..58f5c0643 100644 --- a/src/renderer/src/components/right-sidebar/source-control-dropdown-items.test.ts +++ b/src/renderer/src/components/right-sidebar/source-control-dropdown-items.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: the dropdown priority table is easier to audit when the row-state cases live together. */ import { describe, expect, it } from 'vitest' import { resolveDropdownItems, type DropdownActionInputs } from './source-control-dropdown-items' diff --git a/src/renderer/src/components/settings/AgentsPane.test.tsx b/src/renderer/src/components/settings/AgentsPane.test.tsx index d2915f198..2d69afaff 100644 --- a/src/renderer/src/components/settings/AgentsPane.test.tsx +++ b/src/renderer/src/components/settings/AgentsPane.test.tsx @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: Agents pane settings interactions share - store-backed queue fixtures that are easier to audit beside the UI helper coverage. */ import React from 'react' import { renderToStaticMarkup } from 'react-dom/server' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/src/renderer/src/components/settings/TerminalPane.pwsh.test.ts b/src/renderer/src/components/settings/TerminalPane.pwsh.test.ts index 070509382..a9655a416 100644 --- a/src/renderer/src/components/settings/TerminalPane.pwsh.test.ts +++ b/src/renderer/src/components/settings/TerminalPane.pwsh.test.ts @@ -1,6 +1,3 @@ -/* oxlint-disable max-lines -- Why: TerminalPane tests share a large mocked - settings harness; splitting the new Windows-shell cases would duplicate - brittle React/store mocks without improving coverage. */ import { beforeEach, describe, expect, it, vi } from 'vitest' const mockStateValues: unknown[] = [] diff --git a/src/renderer/src/components/sidebar/WorktreeCardAgents.test.tsx b/src/renderer/src/components/sidebar/WorktreeCardAgents.test.tsx index f3bd592f3..380bb9194 100644 --- a/src/renderer/src/components/sidebar/WorktreeCardAgents.test.tsx +++ b/src/renderer/src/components/sidebar/WorktreeCardAgents.test.tsx @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: this suite shares a broad mocked sidebar - harness across compact/full mode, lineage, and image-note cases. */ import { renderToStaticMarkup } from 'react-dom/server' import type { ReactNode } from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/src/renderer/src/components/sidebar/WorktreeCardAgents.tsx b/src/renderer/src/components/sidebar/WorktreeCardAgents.tsx index aa6f02d83..7bfda38d2 100644 --- a/src/renderer/src/components/sidebar/WorktreeCardAgents.tsx +++ b/src/renderer/src/components/sidebar/WorktreeCardAgents.tsx @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: this component keeps compact/full inline - agent rendering and lineage disclosure behavior together; splitting during - this bug fix would risk divergent parent-child row behavior. */ import React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react' import { useShallow } from 'zustand/react/shallow' import { useAppStore } from '@/store' diff --git a/src/renderer/src/components/sidebar/smart-attention.test.ts b/src/renderer/src/components/sidebar/smart-attention.test.ts index c4fbd18ce..96b54f9a5 100644 --- a/src/renderer/src/components/sidebar/smart-attention.test.ts +++ b/src/renderer/src/components/sidebar/smart-attention.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines */ import { describe, expect, it } from 'vitest' import { AGENT_STATUS_STALE_AFTER_MS, diff --git a/src/renderer/src/components/sidebar/smart-sort.test.ts b/src/renderer/src/components/sidebar/smart-sort.test.ts index cb61490c9..da10bf713 100644 --- a/src/renderer/src/components/sidebar/smart-sort.test.ts +++ b/src/renderer/src/components/sidebar/smart-sort.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines */ import { describe, expect, it } from 'vitest' import type { Repo, TerminalTab, Worktree } from '../../../../shared/types' import { diff --git a/src/renderer/src/components/sidebar/visible-worktrees.test.ts b/src/renderer/src/components/sidebar/visible-worktrees.test.ts index 25165df25..f403a8681 100644 --- a/src/renderer/src/components/sidebar/visible-worktrees.test.ts +++ b/src/renderer/src/components/sidebar/visible-worktrees.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines */ import { describe, expect, it } from 'vitest' import { computeClearFilterActions, diff --git a/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.test.ts b/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.test.ts index e1b96f4b9..e542f90a8 100644 --- a/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.test.ts +++ b/src/renderer/src/components/status-bar/mergeSnapshotAndSessions.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: this file co-locates tightly-coupled scenario - tests for the resource-usage merge function. Splitting them weakens the - single-source view of how snapshot + daemon-session inputs combine. */ import { describe, expect, it } from 'vitest' import type { MemorySnapshot, TerminalTab, WorktreeMemory } from '../../../../shared/types' import { mergeSnapshotAndSessions, UNATTRIBUTED_REPO_ID } from './mergeSnapshotAndSessions' diff --git a/src/renderer/src/components/tab-bar/TabBar.context-menu.test.ts b/src/renderer/src/components/tab-bar/TabBar.context-menu.test.ts index 9e313bccd..03e85f8f0 100644 --- a/src/renderer/src/components/tab-bar/TabBar.context-menu.test.ts +++ b/src/renderer/src/components/tab-bar/TabBar.context-menu.test.ts @@ -1,5 +1,3 @@ -/* oxlint-disable max-lines -- Why: keeping these mocked TabBar wiring cases - * together avoids duplicating the lightweight renderer harness. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' const appStoreSnapshot: { diff --git a/src/renderer/src/components/terminal-pane/agent-interrupt-inference.test.ts b/src/renderer/src/components/terminal-pane/agent-interrupt-inference.test.ts index 780137e11..fc4eb329c 100644 --- a/src/renderer/src/components/terminal-pane/agent-interrupt-inference.test.ts +++ b/src/renderer/src/components/terminal-pane/agent-interrupt-inference.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: this suite locks the interrupt inference state machine across several agent-specific keyboard semantics. */ import { afterEach, describe, expect, it, vi } from 'vitest' import type { AgentStatusEntry } from '../../../../shared/agent-status-types' import { diff --git a/src/renderer/src/components/terminal-pane/layout-serialization.test.ts b/src/renderer/src/components/terminal-pane/layout-serialization.test.ts index b72cc28a8..95b7bb092 100644 --- a/src/renderer/src/components/terminal-pane/layout-serialization.test.ts +++ b/src/renderer/src/components/terminal-pane/layout-serialization.test.ts @@ -1,5 +1,3 @@ -/* oxlint-disable max-lines -- Why: this test keeps split layout replay fixtures together so - * stable leaf-id migration regressions are visible in one focused suite. */ import { describe, expect, it, beforeAll, vi } from 'vitest' import type { TerminalPaneLayoutNode } from '../../../../shared/types' diff --git a/src/renderer/src/components/terminal-pane/terminal-agent-session-fork.test.ts b/src/renderer/src/components/terminal-pane/terminal-agent-session-fork.test.ts index cbbbe6850..8cd870aec 100644 --- a/src/renderer/src/components/terminal-pane/terminal-agent-session-fork.test.ts +++ b/src/renderer/src/components/terminal-pane/terminal-agent-session-fork.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: fork flow tests share a mocked store and launch harness. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import type { ManagedPane } from '@/lib/pane-manager/pane-manager' import { FLOATING_TERMINAL_WORKTREE_ID } from '../../../../shared/constants' diff --git a/src/renderer/src/components/terminal-pane/terminal-shortcut-policy.test.ts b/src/renderer/src/components/terminal-pane/terminal-shortcut-policy.test.ts index fd5c81c31..0f0c4cec3 100644 --- a/src/renderer/src/components/terminal-pane/terminal-shortcut-policy.test.ts +++ b/src/renderer/src/components/terminal-pane/terminal-shortcut-policy.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: terminal keyboard policy covers platform - * readline compatibility, pane management, and Option-as-Alt translation in - * one pure function; the cases need to stay adjacent. */ import { describe, expect, it } from 'vitest' import { resolveTerminalShortcutAction, diff --git a/src/renderer/src/components/terminal-pane/use-notification-dispatch.test.ts b/src/renderer/src/components/terminal-pane/use-notification-dispatch.test.ts index 50d3b3bab..c97252353 100644 --- a/src/renderer/src/components/terminal-pane/use-notification-dispatch.test.ts +++ b/src/renderer/src/components/terminal-pane/use-notification-dispatch.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: dispatch guards are interdependent, so these notification liveness and unread regressions stay together with one store mock. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { dispatchTerminalNotification } from './use-notification-dispatch' import type { AgentStatusEntry } from '../../../../shared/agent-status-types' diff --git a/src/renderer/src/hooks/agent-hook-completion-notifications.test.ts b/src/renderer/src/hooks/agent-hook-completion-notifications.test.ts index 9717f4ff6..d39e2aab2 100644 --- a/src/renderer/src/hooks/agent-hook-completion-notifications.test.ts +++ b/src/renderer/src/hooks/agent-hook-completion-notifications.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: notification edge cases share one module-scoped coordinator, so keeping setup and regression cases together prevents brittle cross-file mock resets. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type { ParsedAgentStatusPayload } from '../../../shared/agent-status-types' import { YOLO_TUI_AGENT_ARGS } from '../../../shared/tui-agent-permissions' diff --git a/src/renderer/src/hooks/ipc-tab-switch.test.ts b/src/renderer/src/hooks/ipc-tab-switch.test.ts index c347a2808..1a1112b41 100644 --- a/src/renderer/src/hooks/ipc-tab-switch.test.ts +++ b/src/renderer/src/hooks/ipc-tab-switch.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: tab-switch shortcut behavior is shared by - * renderer and IPC entry points; keeping terminal, sequential, across-type, - * and MRU cases together makes regressions obvious. */ import { beforeEach, describe, expect, it, vi } from 'vitest' const { getStateMock, getActiveTabNavOrderMock } = vi.hoisted(() => ({ diff --git a/src/renderer/src/lib/agent-status.test.ts b/src/renderer/src/lib/agent-status.test.ts index 5c5d5e96f..3a9215278 100644 --- a/src/renderer/src/lib/agent-status.test.ts +++ b/src/renderer/src/lib/agent-status.test.ts @@ -1,7 +1,3 @@ -/* eslint-disable max-lines -- - * Why: agent title detection is intentionally table-driven in one place so the - * supported title variants stay readable and regressions are easy to compare. - */ import { describe, expect, it, test, vi } from 'vitest' import { detectAgentStatusFromTitle, diff --git a/src/renderer/src/lib/floating-workspace-terminal-actions.test.ts b/src/renderer/src/lib/floating-workspace-terminal-actions.test.ts index 166b7df7e..d50711e66 100644 --- a/src/renderer/src/lib/floating-workspace-terminal-actions.test.ts +++ b/src/renderer/src/lib/floating-workspace-terminal-actions.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Focus, shortcut, creation, and switching cases share - * the same floating-workspace DOM/store fixtures. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { FLOATING_TERMINAL_WORKTREE_ID } from '../../../shared/constants' import type { Tab, TerminalTab } from '../../../shared/types' diff --git a/src/renderer/src/lib/launch-agent-background-session.test.ts b/src/renderer/src/lib/launch-agent-background-session.test.ts index f42f886fd..954a1314e 100644 --- a/src/renderer/src/lib/launch-agent-background-session.test.ts +++ b/src/renderer/src/lib/launch-agent-background-session.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: local/runtime launch tests share a mock harness. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import { BACKGROUND_MOUNT_TERMINAL_WORKTREE_EVENT } from '@/constants/terminal' import { createCompatibleRuntimeStatusResponseIfNeeded } from '@/runtime/runtime-compatibility-test-fixture' diff --git a/src/renderer/src/runtime/runtime-git-client.test.ts b/src/renderer/src/runtime/runtime-git-client.test.ts index 909ca60c2..72b020df4 100644 --- a/src/renderer/src/runtime/runtime-git-client.test.ts +++ b/src/renderer/src/runtime/runtime-git-client.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: runtime git routing tests share compatibility-cache and IPC stubs; splitting would hide cross-environment contract drift. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import { bulkDiscardRuntimeGitPaths, diff --git a/src/renderer/src/runtime/runtime-linear-client.test.ts b/src/renderer/src/runtime/runtime-linear-client.test.ts index 531e13660..57f182f83 100644 --- a/src/renderer/src/runtime/runtime-linear-client.test.ts +++ b/src/renderer/src/runtime/runtime-linear-client.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: runtime Linear routing cases stay together - so local preload fallback and SSH runtime transport parity are reviewed as one boundary. */ import { beforeEach, describe, expect, it, vi } from 'vitest' import { linearCreateIssue, diff --git a/src/renderer/src/runtime/sync-runtime-graph-terminal-layout.test.ts b/src/renderer/src/runtime/sync-runtime-graph-terminal-layout.test.ts index fa86f2766..6095f4e18 100644 --- a/src/renderer/src/runtime/sync-runtime-graph-terminal-layout.test.ts +++ b/src/renderer/src/runtime/sync-runtime-graph-terminal-layout.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: this file keeps terminal session publication - * fixtures together so split-pane and split-tab parity assertions do not drift. */ import { describe, expect, it } from 'vitest' import { buildMobileSessionTabSnapshots } from './sync-runtime-graph' import type { AppState } from '../store/types' diff --git a/src/renderer/src/store/slices/diffComments.test.ts b/src/renderer/src/store/slices/diffComments.test.ts index 3726098e8..e4862f129 100644 --- a/src/renderer/src/store/slices/diffComments.test.ts +++ b/src/renderer/src/store/slices/diffComments.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: this test file owns the diff-comments -slice's persistence, runtime routing, rollback, and compatibility behavior. */ import { describe, it, expect, vi, beforeEach } from 'vitest' import { create } from 'zustand' import type { AppState } from '../types' diff --git a/src/renderer/src/store/slices/hosted-review.test.ts b/src/renderer/src/store/slices/hosted-review.test.ts index 7bd6c4f3d..b5a91fe6a 100644 --- a/src/renderer/src/store/slices/hosted-review.test.ts +++ b/src/renderer/src/store/slices/hosted-review.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: hosted-review tests cover runtime routing, -hinted cache revalidation, provider discovery, and PR cache reconciliation. */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { create } from 'zustand' import type { AppState } from '../types' diff --git a/src/renderer/src/store/slices/new-markdown.test.ts b/src/renderer/src/store/slices/new-markdown.test.ts index 3a8d22eb7..b0f1ebb99 100644 --- a/src/renderer/src/store/slices/new-markdown.test.ts +++ b/src/renderer/src/store/slices/new-markdown.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines */ - import { createStore, type StoreApi } from 'zustand/vanilla' import { describe, expect, it } from 'vitest' import { createEditorSlice } from './editor' diff --git a/src/renderer/src/store/slices/terminals-hydration.test.ts b/src/renderer/src/store/slices/terminals-hydration.test.ts index e4b374231..aab9c2808 100644 --- a/src/renderer/src/store/slices/terminals-hydration.test.ts +++ b/src/renderer/src/store/slices/terminals-hydration.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: hydration regressions share store setup and session invariants that are easier to audit together. */ import { beforeEach, describe, expect, it, vi } from 'vitest' vi.mock('sonner', () => ({ toast: { info: vi.fn(), success: vi.fn(), error: vi.fn() } })) diff --git a/src/renderer/src/store/slices/workspace-cleanup.test.ts b/src/renderer/src/store/slices/workspace-cleanup.test.ts index 116ec974d..3a5199e2a 100644 --- a/src/renderer/src/store/slices/workspace-cleanup.test.ts +++ b/src/renderer/src/store/slices/workspace-cleanup.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: cleanup store tests share a Zustand store - harness and mocked window API; splitting would obscure the state transitions. */ import { create } from 'zustand' import { describe, expect, it, vi } from 'vitest' import type { AppState } from '../types' diff --git a/src/renderer/src/web/web-runtime-client.test.ts b/src/renderer/src/web/web-runtime-client.test.ts index 2e6123118..8f7e500c3 100644 --- a/src/renderer/src/web/web-runtime-client.test.ts +++ b/src/renderer/src/web/web-runtime-client.test.ts @@ -1,6 +1,3 @@ -/* eslint-disable max-lines -- Why: these tests share one mocked browser - WebSocket/E2EE transport fixture, and splitting them would obscure the - subscription lifecycle regressions they cover. */ import { describe, expect, it, vi, afterEach, beforeEach } from 'vitest' import WebSocket, { WebSocketServer } from 'ws' import { WebRuntimeClient } from './web-runtime-client' diff --git a/src/shared/telemetry-events.test.ts b/src/shared/telemetry-events.test.ts index 7b65e72b6..8abdddba6 100644 --- a/src/shared/telemetry-events.test.ts +++ b/src/shared/telemetry-events.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable max-lines -- Why: telemetry schema tests keep related event - invariants together so cross-event payload rules stay easy to audit. */ // Schema round-trip coverage for the event map. Fail-closed invariants that // must hold: agent_error is enum-only (error_message / error_stack rejected // by `.strict()`), unknown enum values fail, and any well-formed payload diff --git a/src/shared/window-shortcut-policy.test.ts b/src/shared/window-shortcut-policy.test.ts index efae35957..25e66e803 100644 --- a/src/shared/window-shortcut-policy.test.ts +++ b/src/shared/window-shortcut-policy.test.ts @@ -1,7 +1,3 @@ -/* eslint-disable max-lines -- Why: this file covers every branch of the -shortcut policy (letter chords, zoom variants, alt/shift gating, history -navigation, new-workspace tab routing). Splitting across files would -fragment the test of a single pure function. */ import { describe, expect, it } from 'vitest' import { isRecentTabSwitcherCommitRelease, diff --git a/tests/e2e/activity-agent-pane-isolation.spec.ts b/tests/e2e/activity-agent-pane-isolation.spec.ts index ee1c87c2d..fe6600f3f 100644 --- a/tests/e2e/activity-agent-pane-isolation.spec.ts +++ b/tests/e2e/activity-agent-pane-isolation.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Activity E2E keeps the setup helpers beside the split-pane, split-group, and workspace-card routing assertions they support. */ import type { Page } from '@stablyai/playwright-test' import { test, expect } from './helpers/orca-app' import { diff --git a/tests/e2e/droid-notification.spec.ts b/tests/e2e/droid-notification.spec.ts index 16dc2a69f..587252042 100644 --- a/tests/e2e/droid-notification.spec.ts +++ b/tests/e2e/droid-notification.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: this e2e shares one Electron notification spy and hook endpoint setup across related notification regressions. */ import { test, expect } from './helpers/orca-app' import type { ElectronApplication, Page } from '@stablyai/playwright-test' import { getRendererTitleLog, installRendererTitleLog } from './helpers/terminal-title-log' diff --git a/tests/e2e/onboarding.spec.ts b/tests/e2e/onboarding.spec.ts index 1fd2e1cc8..5a93391f2 100644 --- a/tests/e2e/onboarding.spec.ts +++ b/tests/e2e/onboarding.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: onboarding E2E coverage shares one first-launch wizard fixture and step helpers; splitting this file would make the linear flow harder to audit. */ /** * E2E tests for the first-launch Onboarding flow. * diff --git a/tests/e2e/setup-guide-sidebar.spec.ts b/tests/e2e/setup-guide-sidebar.spec.ts index 7e1ff7087..b01454e30 100644 --- a/tests/e2e/setup-guide-sidebar.spec.ts +++ b/tests/e2e/setup-guide-sidebar.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Why: this regression spec keeps the deterministic IPC fakes, setup-state seeding, and frame-level flash monitor together so the flicker contract is auditable in one place. */ import type { ElectronApplication, Page } from '@stablyai/playwright-test' import type { SkillDiscoveryResult } from '../../src/shared/skills' import { test, expect } from './helpers/orca-app' diff --git a/tests/e2e/ssh-localhost.spec.ts b/tests/e2e/ssh-localhost.spec.ts index d51ad2f7a..c406186d9 100644 --- a/tests/e2e/ssh-localhost.spec.ts +++ b/tests/e2e/ssh-localhost.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Localhost SSH E2E covers setup, remote PTY, hook relay, and interrupt inference in one expensive app boot. */ import os from 'node:os' import type { Page } from '@stablyai/playwright-test' diff --git a/tests/e2e/terminal-output-scheduler.spec.ts b/tests/e2e/terminal-output-scheduler.spec.ts index e4fa1cc43..014ffe9cd 100644 --- a/tests/e2e/terminal-output-scheduler.spec.ts +++ b/tests/e2e/terminal-output-scheduler.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Scheduler E2E coverage shares one booted Electron app and debug API. */ /** * E2E repro for terminal output bursts from many background tabs. * diff --git a/tests/e2e/terminal-restart-persistence.spec.ts b/tests/e2e/terminal-restart-persistence.spec.ts index cdb6a5423..19cccc43c 100644 --- a/tests/e2e/terminal-restart-persistence.spec.ts +++ b/tests/e2e/terminal-restart-persistence.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Restart persistence E2E covers separate lifecycle regressions that need real relaunches. */ /** * E2E tests for terminal scrollback persistence across clean app restarts. * diff --git a/tests/e2e/terminal-shortcuts.spec.ts b/tests/e2e/terminal-shortcuts.spec.ts index fbea6ebf1..d0243f5cc 100644 --- a/tests/e2e/terminal-shortcuts.spec.ts +++ b/tests/e2e/terminal-shortcuts.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-lines -- Terminal shortcut E2E keeps platform keyboard paths beside their shared PTY assertions. */ /** * E2E test for terminal keyboard shortcuts. *