GitHub check

256 KB of 384 KB loaded Download the full log (384 KB)
128 KB of earlier output not loaded
m) 4ms
 โœ“  unit  src/lib/modelOptions.test.ts (29 tests) 14ms
 โœ“ src/electron/WindowsForeground.test.ts (3 tests) 9ms
 โœ“ src/environments/CloudflareApiPause.test.ts (1 test) 5ms

 Test Files  32 passed (32)
      Tests  276 passed (276)
   Start at  00:57:47
   Duration  13.41s (import 79%, transform 12%, setup 5%, tests 4%)


~/packages/source-control-github$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“ src/app/DesktopEnvironment.test.ts (2 tests) 20ms
 โœ“ gnome-extension/feedbackGeometry.test.js (7 tests) 3ms
 โœ“ src/app/DesktopAppActivationBroker.test.ts (3 tests) 8ms
 โœ“ src/permissions/MacSettingsWindow.test.ts (2 tests) 5ms
 โœ“ src/app/DesktopUserData.test.ts (2 tests) 70ms
 โœ“  react  src/features/settings/SettingsServerControlsRouteScreen.test.tsx (1 test) 38ms
 โœ“ src/preview/WebviewPreferences.test.ts (2 tests) 2ms
stderr | src/state/use-composer-drafts.test.ts > mobile composer drafts > restores deleted file chips and releases undo history (uploaded: false)
[composer-attachments] could not remove local file TypeError: file.delete is not a function
    at removePersistedComposerAttachmentFile (/home/runner/_work/t3code/t3code/apps/mobile/src/lib/composerImages.ts:223:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
    at releaseUnusedComposerAttachmentFiles (/home/runner/_work/t3code/t3code/apps/mobile/src/state/use-composer-drafts.ts:924:5)
 โœ“ src/snapShot/WindowsCaptureFeedback.test.ts (1 test) 7ms

Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-file-system@58.0.9_expo@58.0.14_react-native@0.88.0_@babel+core@7.29.7_supports-co_dba9ef97a37b898651a8aa6fe892beee/node_modules/expo-file-system/build/index.js" points to missing source files
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-file-system@58.0.9_expo@58.0.14_react-native@0.88.0_@babel+core@7.29.7_supports-co_dba9ef97a37b898651a8aa6fe892beee/node_modules/expo-file-system/build/Paths.js" points to missing source files
 โœ“ src/preview/RecordingInput.test.ts (2 tests) 2ms
 โœ“ ../../native/kde-snap-shot/src/feedbackGeometry.test.ts (2 tests) 19ms
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-file-system@58.0.9_expo@58.0.14_react-native@0.88.0_@babel+core@7.29.7_supports-co_dba9ef97a37b898651a8aa6fe892beee/node_modules/expo-file-system/build/Directory.js" points to missing source files

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/source-control-github

 โœ“ src/ipc/methods/localEnvironment.test.ts (1 test) 11ms
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-file-system@58.0.9_expo@58.0.14_react-native@0.88.0_@babel+core@7.29.7_supports-co_dba9ef97a37b898651a8aa6fe892beee/node_modules/expo-file-system/build/ExpoFileSystem.js" points to missing source files
 โœ“ src/app/DesktopPreReadyFileSystem.test.ts (1 test) 28ms
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/index.js" points to missing source files
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/ts-declarations/global.js" points to missing source files
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/ts-declarations/EventEmitter.js" points to missing source files
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/ts-declarations/NativeModule.js" points to missing source files
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/ts-declarations/SharedObject.js" points to missing source files
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/ts-declarations/SharedRef.js" points to missing source files
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/sweet/setUpJsLogger.fx.js" points to missing source files
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/errors/CodedError.js" points to missing source files
 โœ“ src/preview/AnnotationIds.test.ts (1 test) 10ms
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/requireNativeModule.js" points to missing source files
 โœ“ src/preview/AnnotationKeyboard.test.ts (1 test) 2ms
 โœ“  unit  src/features/agent-awareness/remoteRegistration.test.ts (15 tests) 282ms
stderr | src/state/use-composer-drafts.test.ts > mobile composer drafts > restores deleted file chips and releases undo history (uploaded: false)
[composer-attachments] could not remove local file Error [RolldownError]: Parse failure: Parse failed with 1 error:
Flow is not supported
1: /**
   ^
2:  * Copyright (c) Meta Platforms, Inc. and affiliates.
3:  *
At file: /@fs/home/runner/_work/t3code/t3code/node_modules/.pnpm/react-native@0.88.0_@babel+core@7.29.7_supports-color@8.1.1__@react-native+metro-config_4bbd3f1473e0b719a3b6bb196a69f292/node_modules/react-native/index.js:1:0
    at error (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/shared/logs-D6uA606S.mjs:166:24)
    at normalizeParseError (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/parse-ast-index.mjs:25:9)
    at wrap (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/parse-ast-index.mjs:5:39)
    at parseAstAsync (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/parse-ast-index.mjs:54:9)
    at async ssrTransformScript (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/chunks/node.js:21140:9)
    at async loadAndTransform (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/chunks/node.js:25564:64) {
  cause: undefined,
  __vitest_rollup_error__: {
    plugin: undefined,
    id: '/@fs/home/runner/_work/t3code/t3code/node_modules/.pnpm/react-native@0.88.0_@babel+core@7.29.7_supports-color@8.1.1__@react-native+metro-config_4bbd3f1473e0b719a3b6bb196a69f292/node_modules/react-native/index.js',
    loc: {
      line: 1,
      column: 0,
      file: '/@fs/home/runner/_work/t3code/t3code/node_modules/.pnpm/react-native@0.88.0_@babel+core@7.29.7_supports-color@8.1.1__@react-native+metro-config_4bbd3f1473e0b719a3b6bb196a69f292/node_modules/react-native/index.js'
    },
    frame: '1  |  /**\n' +
      '   |  ^\n' +
      '2  |   * Copyright (c) Meta Platforms, Inc. and affiliates.\n' +
      '3  |   *'
  },
  runnerError: Error: RunnerError
      at reviveInvokeError (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:553:64)
      at Object.invoke (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:568:33)
      at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
      at async VitestModuleRunner.getModuleInformation (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1217:7)
      at async request (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1234:83)
      at /home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/requireNativeModule.ts:1:1
      at async VitestModuleEvaluator._runInlinedModule (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/module-evaluator.js:261:4)
      at async VitestModuleRunner.directRequest (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1277:59)
      at async VitestModuleRunner.cachedRequest (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1184:73)
      at /home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/sweet/sweet/setUpJsLogger.fx.ts:2:1
}
[composer-attachments] could not remove local file Error [RolldownError]: Parse failure: Parse failed with 1 error:
Flow is not supported
1: /**
   ^
2:  * Copyright (c) Meta Platforms, Inc. and affiliates.
3:  *
At file: /@fs/home/runner/_work/t3code/t3code/node_modules/.pnpm/react-native@0.88.0_@babel+core@7.29.7_supports-color@8.1.1__@react-native+metro-config_4bbd3f1473e0b719a3b6bb196a69f292/node_modules/react-native/index.js:1:0
    at error (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/shared/logs-D6uA606S.mjs:166:24)
    at normalizeParseError (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/parse-ast-index.mjs:25:9)
    at wrap (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/parse-ast-index.mjs:5:39)
    at parseAstAsync (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/parse-ast-index.mjs:54:9)
    at async ssrTransformScript (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/chunks/node.js:21140:9)
    at async loadAndTransform (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/chunks/node.js:25564:64) {
  cause: undefined,
  __vitest_rollup_error__: {
    plugin: undefined,
    id: '/@fs/home/runner/_work/t3code/t3code/node_modules/.pnpm/react-native@0.88.0_@babel+core@7.29.7_supports-color@8.1.1__@react-native+metro-config_4bbd3f1473e0b719a3b6bb196a69f292/node_modules/react-native/index.js',
    loc: {
      line: 1,
      column: 0,
      file: '/@fs/home/runner/_work/t3code/t3code/node_modules/.pnpm/react-native@0.88.0_@babel+core@7.29.7_supports-color@8.1.1__@react-native+metro-config_4bbd3f1473e0b719a3b6bb196a69f292/node_modules/react-native/index.js'
    },
    frame: '1  |  /**\n' +
      '   |  ^\n' +
      '2  |   * Copyright (c) Meta Platforms, Inc. and affiliates.\n' +
      '3  |   *'
  },
  runnerError: Error: RunnerError
      at reviveInvokeError (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:553:64)
      at Object.invoke (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:568:33)
      at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
      at async VitestModuleRunner.getModuleInformation (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1217:7)
      at async request (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1234:83)
      at /home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/requireNativeModule.ts:1:1
      at async VitestModuleEvaluator._runInlinedModule (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/module-evaluator.js:261:4)
      at async VitestModuleRunner.directRequest (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1277:59)
      at async VitestModuleRunner.cachedRequest (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1184:73)
      at /home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/sweet/sweet/setUpJsLogger.fx.ts:2:1
}

stderr | src/state/use-composer-drafts.test.ts > mobile composer drafts > restores deleted file chips and releases undo history (uploaded: true)
[composer-attachments] could not verify incoming share ownership {
  _tag: 'IncomingShareStorageError',
  operation: 'load',
  shareId: null,
  cause: Error [RolldownError]: Parse failure: Parse failed with 1 error:
  Flow is not supported
  1: /**
     ^
  2:  * Copyright (c) Meta Platforms, Inc. and affiliates.
  3:  *
  At file: /@fs/home/runner/_work/t3code/t3code/node_modules/.pnpm/react-native@0.88.0_@babel+core@7.29.7_supports-color@8.1.1__@react-native+metro-config_4bbd3f1473e0b719a3b6bb196a69f292/node_modules/react-native/index.js:1:0
      at error (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/shared/logs-D6uA606S.mjs:166:24)
      at normalizeParseError (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/parse-ast-index.mjs:25:9)
      at wrap (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/parse-ast-index.mjs:5:39)
      at parseAstAsync (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/rolldown/parse-ast-index.mjs:54:9)
      at async ssrTransformScript (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/chunks/node.js:21140:9)
      at async loadAndTransform (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/chunks/node.js:25564:64) {
    cause: undefined,
    __vitest_rollup_error__: {
      plugin: undefined,
      id: '/@fs/home/runner/_work/t3code/t3code/node_modules/.pnpm/react-native@0.88.0_@babel+core@7.29.7_supports-color@8.1.1__@react-native+metro-config_4bbd3f1473e0b719a3b6bb196a69f292/node_modules/react-native/index.js',
      loc: [Object],
      frame: '1  |  /**\n' +
        '   |  ^\n' +
        '2  |   * Copyright (c) Meta Platforms, Inc. and affiliates.\n' +
        '3  |   *'
    },
    runnerError: Error: RunnerError
        at reviveInvokeError (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:553:64)
        at Object.invoke (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:568:33)
        at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
        at async VitestModuleRunner.getModuleInformation (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1217:7)
        at async request (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1234:83)
        at /home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/requireNativeModule.ts:1:1
        at async VitestModuleEvaluator._runInlinedModule (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/module-evaluator.js:261:4)
        at async VitestModuleRunner.directRequest (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1277:59)
        at async VitestModuleRunner.cachedRequest (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1184:73)
        at /home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_6a1c9e707e4caac0e11bcdf133fd5ef6/node_modules/expo-modules-core/build/sweet/sweet/setUpJsLogger.fx.ts:2:1
  }
}

 โœ“ src/ipc/methods/sshEnvironment.test.ts (1 test) 5ms

 Test Files  103 passed (103)
      Tests  839 passed (839)
   Start at  00:57:45
   Duration  16.16s (import 47%, transform 26%, tests 14%, setup 12%, worker 1%)

     Import  520 modules were evaluated 6430 times ยท 44.31s total, 47% of tracked time
             ~4.44s faster with isolate: false โ€” shared modules are evaluated once per worker instead of once per file
             learn more: https://vitest.dev/guide/improving-performance#test-isolation


~/packages/provider-cursor$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“  unit  src/lib/composerFiles.test.ts (36 tests) 38ms
stderr | src/state/use-composer-drafts.test.ts > mobile composer drafts > preserves saved drafts and attachment files when the draft read fails
[composer-drafts] failed to hydrate drafts {
  _tag: 'ComposerDraftPersistenceError',
  operation: 'read',
 โœ“  unit  src/lib/attachmentUpload.test.ts (28 tests) 15ms
  directory: 'composer-drafts',
  fileName: 'drafts.json',
  cause: Error: storage unavailable
      at /home/runner/_work/t3code/t3code/apps/mobile/src/state/use-composer-drafts.test.ts:1977:45
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2886:64
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:1632:35
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2801:26
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3338:20
      at new Promise (<anonymous>)
      at runWithCancel (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3333:10)
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3318:20
      at new Promise (<anonymous>)
      at runWithTimeout (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3276:10)
}

stderr | src/state/use-composer-drafts.test.ts > mobile composer drafts > preserves saved drafts and attachment files when the draft read fails
[composer-drafts] failed to hydrate drafts {
  _tag: 'ComposerDraftPersistenceError',
  operation: 'read',
  directory: 'composer-drafts',
  fileName: 'drafts.json',
  cause: Error: storage unavailable
      at /home/runner/_work/t3code/t3code/apps/mobile/src/state/use-composer-drafts.test.ts:1977:45
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2886:64
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:1632:35
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2801:26
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3338:20
      at new Promise (<anonymous>)
      at runWithCancel (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3333:10)
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3318:20
      at new Promise (<anonymous>)
      at runWithTimeout (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3276:10)
}

stderr | src/state/use-composer-drafts.test.ts > mobile composer drafts > preserves saved drafts and attachment files when the draft decode fails
[composer-drafts] failed to hydrate drafts {
  _tag: 'ComposerDraftPersistenceError',
  operation: 'decode',
  directory: 'composer-drafts',
  fileName: 'drafts.json',
  cause: {
    _tag: 'SchemaError',
    message: 'Expected 1\n  at ["schemaVersion"]'
  }
}

stderr | src/state/use-composer-drafts.test.ts > mobile composer drafts > preserves saved drafts and attachment files when the draft decode fails
[composer-drafts] failed to hydrate drafts {
  _tag: 'ComposerDraftPersistenceError',
  operation: 'decode',
  directory: 'composer-drafts',
  fileName: 'drafts.json',
  cause: {
    _tag: 'SchemaError',
    message: 'Expected 1\n  at ["schemaVersion"]'
  }
}

 โœ“ src/server/SourceControlRateLimit.test.ts (6 tests) 34ms

stderr | src/state/use-thread-outbox-drain.test.ts > thread outbox drain delivery cleanup > removes an acknowledged outbox item even when the sign-out archive write fails
 Test Files  5 passed (5)
      Tests  49 passed (49)
   Start at  00:57:59
   Duration  1.74s (transform 48%, import 29%, setup 19%, tests 3%, worker 1%)
[thread-outbox] could not update sign-out snapshot after delivery {

  messageId: 'archive-write-failure',
  error: {
    _tag: 'ComposerDraftPersistenceError',
    operation: 'write',
    directory: 'composer-drafts',
    fileName: 'drafts.json',
    cause: Error: Draft storage unavailable
        at /home/runner/_work/t3code/t3code/apps/mobile/src/state/use-thread-outbox-drain.test.ts:335:37
        at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
        at async file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2801:20
  }
}

stderr | src/state/use-thread-outbox-drain.test.ts > thread outbox drain delivery cleanup > retries only cleanup after an acknowledged send removal fails
[thread-outbox] failed to remove acknowledged queued message {
  environmentId: 'environment-1',
  threadId: 'thread-1',
  messageId: 'message-acknowledged',
  error: {
    _tag: 'ThreadOutboxManagerError',
    operation: 'remove',
    environmentId: 'environment-1',
 โœ“  unit  src/features/sharing/incoming-share-model.test.ts (19 tests) 15ms
    threadId: 'thread-1',

    messageId: 'message-acknowledged',
~/packages/provider-pi$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
    cause: Error: storage unavailable
        at /home/runner/_work/t3code/t3code/apps/mobile/src/state/use-thread-outbox-drain.test.ts:399:55
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:1632:35
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2801:26
 โœ“  unit  src/state/use-thread-outbox-drain.test.ts (23 tests) 88ms
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3338:20
        at new Promise (<anonymous>)
        at runWithCancel (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3333:10)
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3318:20
        at new Promise (<anonymous>)
        at runWithTimeout (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3276:10)
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3904:64
  }
}

stderr | src/state/use-thread-outbox-drain.test.ts > thread outbox delivered creation recovery > retries a failed removal without duplicating recovered draft content
[thread-outbox] could not remove recovered pending task Error: storage unavailable
    at /home/runner/_work/t3code/t3code/apps/mobile/src/state/use-thread-outbox-drain.test.ts:557:30
    at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:1632:35
    at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2801:26
    at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3338:20
    at new Promise (<anonymous>)
    at runWithCancel (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3333:10)
    at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3318:20
    at new Promise (<anonymous>)
    at runWithTimeout (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3276:10)
    at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3904:64

stderr | src/state/use-thread-outbox-drain.test.ts > thread outbox delivered creation recovery > keeps the queue entry when the recovered draft cannot persist
[thread-outbox] could not hand an edited pending task to the composer {
  _tag: 'ComposerDraftPersistenceError',
  operation: 'write',
  directory: 'composer-drafts',
  fileName: 'drafts.json',
  cause: Error: disk full
      at /home/runner/_work/t3code/t3code/apps/mobile/src/state/use-thread-outbox-drain.test.ts:583:37
      at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
      at async file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2801:20
}

stderr | src/state/use-thread-outbox-drain.test.ts > thread outbox recovery rollback > rolls a failed recovery merge back so the retry cannot duplicate the text
[thread-outbox] failed to persist a recovery rollback {
  _tag: 'ComposerDraftPersistenceError',
  operation: 'write',
  directory: 'composer-drafts',
  fileName: 'drafts.json',
  cause: Error: disk full
      at /home/runner/_work/t3code/t3code/apps/mobile/src/state/use-thread-outbox-drain.test.ts:733:37
      at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
      at async file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2801:20
}

stderr | src/state/use-thread-outbox-drain.test.ts > thread outbox recovery rollback > rolls a failed recovery merge back so the retry cannot duplicate the text
[thread-outbox] failed to restore an undeliverable message {
  _tag: 'ComposerDraftPersistenceError',
  operation: 'write',
  directory: 'composer-drafts',
  fileName: 'drafts.json',
  cause: Error: disk full
      at /home/runner/_work/t3code/t3code/apps/mobile/src/state/use-thread-outbox-drain.test.ts:733:37
      at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
      at async file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2801:20
}

 โœ“  unit  src/state/use-composer-drafts.test.ts (74 tests) 700ms
   โœ“ mobile composer drafts (74)
     โœ“ restores deleted file chips and releases undo history (uploaded: false) 308ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/provider-cursor

 โœ“  unit  src/native/workspace-stack-projection.test.ts (24 tests) 31ms
 โœ“ src/server/gitHubPullRequestJson.test.ts (50 tests) 67ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/provider-pi

 โœ“  unit  src/features/home/useThreadListActions.test.ts (37 tests) 29ms
 โœ“ src/server/skills.test.ts (5 tests) 195ms
 โœ“  unit  src/lib/mobileTheme.test.ts (24 tests) 81ms
 โœ“  unit  src/features/pull-requests/pullRequestList.test.ts (18 tests) 42ms
 โœ“  unit  src/state/use-thread-outbox-drain.permissions.test.ts (12 tests) 27ms
 โœ“  unit  src/lib/android-workspace-navigation.test.ts (17 tests) 27ms
 โœ“ src/server/mcpExtensionSource.test.ts (24 tests) 269ms
 โœ“  unit  src/state/thread-task-permissions.test.ts (7 tests) 39ms
 โœ“ src/server/GitHubRest.test.ts (8 tests) 93ms
 โœ“  unit  src/lib/composerContext.test.ts (16 tests) 93ms
 โœ“ src/server/gitHubGraphQlClient.test.ts (9 tests) 207ms
 โœ“  unit  src/lib/attachmentDownload.test.ts (19 tests) 56ms
 โœ“ src/server/githubStackActions.test.ts (9 tests) 129ms
 โœ“  unit  src/lib/composerAttachmentUploadQueue.test.ts (11 tests) 28ms
 โœ“ src/server/accountUsage.test.ts (9 tests) 867ms
 โœ“ src/server/GitHubPullRequestProvider.test.ts (23 tests) 104ms
 โœ“  unit  src/features/threads/thread-feed-live-follow.test.ts (28 tests) 12ms
 โœ“ src/server/usageLimits.test.ts (9 tests) 114ms
 โœ“ src/shared/definition.test.ts (9 tests) 15ms
 โœ“  unit  src/features/voice-input/voiceInputSession.test.ts (13 tests) 48ms
 โœ“ src/server/commands.test.ts (1 test) 5ms
 โœ“ src/server/auth.test.ts (10 tests) 47ms
 โœ“ src/server/mcpInjection.test.ts (3 tests) 15ms
 โœ“ src/server/GitHubPullRequestApi.test.ts (105 tests) 1047ms
   โœ“ GitHubPullRequestApi.layer (104)
     โœ“ keeps the pull request being ticked through, not the one looked up first 416ms
 โœ“ src/server/textGeneration.test.ts (8 tests) 118ms
 โœ“  unit  src/lib/composerContextClipboard.test.ts (7 tests) 50ms
 โœ“  unit  src/state/composer-attachment-uploads.test.ts (5 tests) 35ms
 โœ“  unit  src/features/updates/app-updates.test.ts (11 tests) 79ms
 โœ“ src/server/GitHubCredentials.test.ts (5 tests) 53ms
 โœ“ src/server/GitHubPullRequestProvider.credential.test.ts (1 test) 94ms
 โœ“ src/server/gitHubChangeRequestTemplate.test.ts (10 tests) 1484ms
 โœ“  unit  src/connection/environment-cache-store.test.ts (4 tests) 67ms
 โœ“ src/server/transportFailure.test.ts (10 tests) 8ms
 โœ“ src/server/status.test.ts (8 tests) 63ms
 โœ“ src/server/accountCache.test.ts (2 tests) 6ms
 โœ“ src/server/CursorAgentSdk.test.ts (1 test) 27ms
 โœ“ src/server/textGeneration.test.ts (1 test) 21ms
 โœ“  unit  src/state/pending-task-editor-writes.test.ts (5 tests) 16ms
 โœ“ src/server/status.test.ts (6 tests) 134ms
 โœ“ src/server/adapter.test.ts (18 tests) 145ms
 โœ“  unit  src/features/home/home-thread-navigation.test.ts (6 tests) 13ms
 โœ“ src/server/driver.test.ts (2 tests) 155ms
 โœ“ src/server/driver.test.ts (5 tests) 135ms
 โœ“ src/server/GitHubQuota.test.ts (4 tests) 24ms
 โœ“ src/server/credentialStore.test.ts (5 tests) 76ms
 โœ“ src/server/gitHubMediaFetch.test.ts (2 tests) 16ms
 โœ“  unit  src/features/threads/checkout-new-task-branch.test.ts (11 tests) 2970ms
   โœ“ new-task branch checkout (11)
     โœ“ switches to a free branch and clears its historical worktree path 339ms
     โœ“ resolves historical branch metadata to its worktree beyond a long query's first page 318ms
     โœ“ resolves a non-origin remote to the right worktree when the remote name contains slashes 356ms
     โœ“ switches to the selected remote instead of reusing a worktree tracking another remote 585ms
 โœ“ src/server/CursorSdk.test.ts (2 tests) 11ms
 โœ“ src/shared/referenceAutolinks.test.ts (4 tests) 7ms
 โœ“  unit  src/state/use-selected-thread-git-actions.test.ts (11 tests) 13ms
 โœ“  unit  src/features/threads/threadOrderAvailability.test.ts (7 tests) 352ms
   โœ“ computeThreadMoveAvailability matches the reference planner (7)
     โœ“ agrees across randomized sections (keys, holes, non-writable rows, hidden keys) 350ms
 โœ“ src/server/gitHubDiscovery.test.ts (4 tests) 11ms
 โœ“ src/server/CursorSdkCatalog.test.ts (1 test) 6ms

 Test Files  14 passed (14)
      Tests  90 passed (90)
   Start at  00:58:01
   Duration  3.90s (transform 43%, import 40%, tests 8%, setup 8%)

 โœ“ src/server/gitHubPullRequests.test.ts (3 tests) 5ms

~/packages/ssh$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“ src/server/GitHubSourceControlProvider.test.ts (30 tests) 2149ms
   โœ“ keeps Enterprise operations on the selected remote: git@code.example.test:team/project.git 667ms
   โœ“ keeps Enterprise operations on the selected remote: ssh://git@code.example.test/team/project.git 662ms
   โœ“ keeps Enterprise operations on the selected remote: https://code.example.test/team/project.git 631ms
 โœ“ src/server/gitHubRepositoryResolution.test.ts (3 tests) 3ms
 โœ“  unit  src/state/thread-outbox-removal.test.ts (5 tests) 15ms
 โœ“  unit  src/features/cloud/linkEnvironment.test.ts (3 tests) 63ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/ssh

 โœ“  unit  src/lib/composerImages.test.ts (6 tests) 6ms
 โœ“  unit  src/features/sharing/incoming-share-inbox.test.ts (10 tests) 24ms
 โœ“  unit  src/native/composerEditorRevision.test.ts (17 tests) 9ms
 โœ“  unit  src/features/workspace/workspace-tabs-state.test.ts (15 tests) 6ms
 โœ“ src/auth.test.ts (2 tests) 26ms
stdout | src/command.test.ts > ssh command > preserves process output: default head
[00:58:06.418] WARN (#40): ssh.command.failed {
  alias: 'synthetic-fixture',
  hostname: 'synthetic-fixture',
  username: null,
  port: null,
  command: [
    'ssh',
    '-o',
    'BatchMode=yes',
    '-o',
    'ConnectTimeout=10',
    '--',
    'synthetic-fixture'
  ],
  exitCode: 1,
  stdout: 'HEAD\n' +
    'verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbo\n' +
    '[truncated]',
  stderr: ''
}

stdout | src/command.test.ts > ssh command > preserves process output: opt-in tail
[00:58:06.453] WARN (#53): ssh.command.failed {
  alias: 'synthetic-fixture',
  hostname: 'synthetic-fixture',
  username: null,
  port: null,
  command: [
    'ssh',
    '-o',
    'BatchMode=yes',
    '-o',
    'ConnectTimeout=10',
    '--',
    'synthetic-fixture'
  ],
  exitCode: 1,
  stdout: '[truncated]\n' +
    'bose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix verbose-prefix {"credential":"[redacted]"}\n' +
    'PANIC: emulator SDK is broken\n',
  stderr: 'stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure stderr failure '
}

 โœ“ src/config.test.ts (4 tests) 27ms
 โœ“ src/command.test.ts (7 tests) 134ms
 โœ“ src/server/githubStackRebase.test.ts (3 tests) 1989ms
   โœ“ cascadeRebaseStack (3)
     โœ“ moves each layer's own commits onto the rebased layer below it 878ms
     โœ“ refuses to overwrite a layer pushed after it was reviewed 515ms
     โœ“ stops at a conflicting layer and leaves it untouched 586ms

 Test Files  18 passed (18)
      Tests  282 passed (282)
   Start at  00:58:01
   Duration  5.46s (import 37%, transform 32%, tests 25%, setup 6%)

     Import  199 modules were evaluated 1789 times ยท 10.98s total, 37% of tracked time
             ~630ms faster with isolate: false โ€” shared modules are evaluated once per worker instead of once per file
             learn more: https://vitest.dev/guide/improving-performance#test-isolation

 โœ“  unit  src/features/home/homeThreadList.test.ts (4 tests) 18ms

~/packages/provider-opencode$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“  unit  src/dependency-graph.test.ts (2 tests) 5ms
stdout | src/lib/storage.test.ts > mobile connection storage > loads legacy preferences when SQLite is unavailable
[00:58:06.594] WARN (#20): Database unavailable; loading fallback preferences. {
  cause: {
    _tag: 'MobileDatabaseError',
    operation: 'load-preferences',
    cause: Error: database unavailable
        at Object.<anonymous> (/home/runner/_work/t3code/t3code/apps/mobile/src/lib/storage.test.ts:49:33)
        at Object.Mock [as getFirstAsync] (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/spy.DDMXghXv.js:353:40)
        at try (/home/runner/_work/t3code/t3code/apps/mobile/src/persistence/mobile-database.ts:431:18)
        at MixedScheduler.<anonymous> (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:785:7)
        at ~effect/Effect/evaluate (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:804:38)
        at FiberImpl.runLoop (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:453:97)
        at FiberImpl.evaluate (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:402:23)
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2474:9
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2526:19
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2537:31
  }
}

stdout | src/lib/storage.test.ts > mobile connection storage > falls back to secure storage when SQLite cannot save preferences
[00:58:06.601] WARN (#21): Database unavailable; loading fallback preferences. {
  cause: {
    _tag: 'MobileDatabaseError',
    operation: 'load-preferences',
    cause: Error: database unavailable
        at Object.<anonymous> (/home/runner/_work/t3code/t3code/apps/mobile/src/lib/storage.test.ts:49:33)
        at Object.Mock [as getFirstAsync] (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/spy.DDMXghXv.js:353:40)
        at try (/home/runner/_work/t3code/t3code/apps/mobile/src/persistence/mobile-database.ts:431:18)
        at MixedScheduler.<anonymous> (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:785:7)
        at ~effect/Effect/evaluate (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:804:38)
        at FiberImpl.runLoop (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:453:97)
        at FiberImpl.evaluate (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:402:23)
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2474:9
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2526:19
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2537:31
  }
}

stdout | src/lib/storage.test.ts > mobile connection storage > falls back to secure storage when SQLite cannot save preferences
[00:58:06.602] WARN (#21): Database unavailable; saving preferences to secure storage. {
  cause: {
    _tag: 'MobileDatabaseError',
    operation: 'save-preferences',
    cause: Error: database unavailable
        at Object.<anonymous> (/home/runner/_work/t3code/t3code/apps/mobile/src/lib/storage.test.ts:59:33)
        at Object.Mock [as runAsync] (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/spy.DDMXghXv.js:353:40)
        at try (/home/runner/_work/t3code/t3code/apps/mobile/src/persistence/mobile-database.ts:441:20)
        at MixedScheduler.<anonymous> (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:785:7)
        at ~effect/Effect/evaluate (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:804:38)
        at FiberImpl.runLoop (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:453:97)
        at FiberImpl.evaluate (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:402:23)
        at AsyncResource.runInAsyncScope (node:async_hooks:226:14)
        at FiberImpl.evaluate (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:396:27)
        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:808:17
  }
}

 โœ“  unit  src/lib/storage.test.ts (8 tests) 38ms
 โœ“ src/tunnel.test.ts (7 tests) 91ms

 Test Files  4 passed (4)
      Tests  20 passed (20)
   Start at  00:58:05
   Duration  727ms (import 39%, transform 29%, setup 16%, tests 15%, worker 1%)


~/packages/effect-codex-app-server$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“  unit  src/features/settings/scheduledTaskDraft.test.ts (12 tests) 8ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/provider-opencode

 โœ“  unit  src/lib/layout.test.ts (15 tests) 5ms
stdout | src/state/preferences.test.ts > mobile preferences state > falls back to empty preferences when secure storage cannot be read
[00:58:06.775] WARN (#35): Could not load mobile preferences. {
  _tag: 'MobilePreferencesLoadError',
  cause: Error: secure storage unavailable
      at /home/runner/_work/t3code/t3code/apps/mobile/src/state/preferences.test.ts:181:20
      at Generator.next (<anonymous>)
      at ~effect/Effect/successCont (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:979:28)
      at ~effect/Effect/evaluate (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:991:25)
      at FiberImpl.runLoop (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:453:97)
      at FiberImpl.evaluate (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:402:23)
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2474:9
      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2526:19
      at Module.<anonymous> (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2537:31)
      at Array.<anonymous> (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@effect+vitest@4.0.5_patch_hash=2731c9c3761c595f25ddc625a7d61ca376b389d5b3049ecb837c894_729be65b0f3c6bde0309e4457c6d9256/node_modules/@effect/vitest/dist/internal/internal.js:26:31)
}

 โœ“  unit  src/state/preferences.test.ts (3 tests) 26ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/effect-codex-app-server

 โœ“ src/server/adapter.test.ts (87 tests) 2072ms
   โœ“ PiAdapterV2 (85)
     โœ“ delivers realistic MCP screenshots through the bridge, JSONL transport, and adapter 416ms

 Test Files  7 passed (7)
      Tests  127 passed (127)
   Start at  00:58:02
   Duration  5.06s (transform 52%, import 29%, tests 15%, setup 4%)


~/packages/shared$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“  unit  src/state/session.test.ts (4 tests) 13ms
 โœ“  unit  src/lib/mediaActions.test.ts (10 tests) 15ms
 โœ“  unit  src/features/threads/thread-provider-instance.test.ts (3 tests) 25ms
 โœ“ src/_internal/shared.test.ts (4 tests) 13ms
 โœ“  unit  src/features/projects/AddProjectScreen.test.ts (3 tests) 26ms
 โœ“ src/_internal/stdio.test.ts (1 test) 12ms
 โœ“  unit  src/features/settings/settings-scoped-server.test.ts (5 tests) 20ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/shared

 โœ“  unit  src/features/workspace/workspace-tab-navigation.test.ts (9 tests) 5ms
 โœ“  unit  src/features/agent-awareness/liveActivityPreferences.test.ts (3 tests) 19ms
 โœ“  unit  src/features/cloud/dpop.test.ts (5 tests) 133ms
 โœ“  unit  src/features/pull-requests/pullRequestStack.test.ts (8 tests) 13ms
 โœ“ src/paletteSearch.test.ts (34 tests) 92ms
 โœ“  unit  src/features/threads/new-task-project-selection.test.ts (9 tests) 4ms
 โœ“ src/protocol.test.ts (17 tests) 139ms
 โœ“  unit  src/features/settings/environment-maintenance.test.ts (7 tests) 35ms
 โœ“ src/shell.test.ts (42 tests | 2 skipped) 127ms
 โœ“  unit  src/features/review/reviewCommentSelection.test.ts (6 tests) 11ms
 โœ“ src/schema.test.ts (4 tests) 23ms
 โœ“  unit  src/widgets/subscriptionUsageSnapshot.test.ts (5 tests) 33ms
 โœ“ src/client.test.ts (2 tests) 184ms
 โœ“ src/relayClient.test.ts (14 tests) 236ms

 Test Files  5 passed (5)
      Tests  28 passed (28)
   Start at  00:58:07
   Duration  1.82s (transform 56%, import 27%, setup 9%, tests 7%)

 โœ“  unit  src/features/review/reviewModel.test.ts (5 tests) 7ms

~/packages/provider-core$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“  unit  src/features/threads/thread-route-state.test.ts (5 tests) 6ms
 โœ“  unit  src/features/threads/thread-settings-sheet-state.test.ts (5 tests) 5ms
 โœ“  unit  src/lib/markdownHtml.test.ts (8 tests) 86ms
stdout | src/server/OpenCodeServerLedger.test.ts > OpenCodeServerLedger observing as linux > stops an OpenCode server group left by a server that died
[00:58:09.215] INFO (#4): Stopping an OpenCode server left by a previous T3 Code server { pid: 12780, port: 4096 }


 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/provider-core

 โœ“  unit  src/lib/protectedData.test.ts (3 tests) 175ms
stdout | src/server/OpenCodeServerLedger.test.ts > OpenCodeServerLedger observing as linux > records a group whose spawned wrapper already exited
[00:58:09.318] INFO (#265): Stopping an OpenCode server left by a previous T3 Code server { pid: 12809, port: 4096 }

 โœ“ src/server/usage.test.ts (5 tests) 367ms
   โœ“ readOpenCodeUsage (4)
     โœ“ bounds raw history allocations while counting every eligible message once 303ms
 โœ“ src/nodeSqliteClient.test.ts (17 tests) 367ms
 โœ“  unit  src/features/voice-input/lazyVoiceRecorder.test.ts (3 tests) 20ms
 โœ“  unit  src/state/remote-environment-projections.test.ts (1 test) 16ms
 โœ“  unit  src/features/diffs/nativeReviewDiffHighlighter.test.ts (3 tests) 20ms
 โœ“ src/server/textGeneration.test.ts (9 tests) 106ms
 โœ“ src/observability.test.ts (18 tests) 331ms
stdout | src/server/OpenCodeServerLedger.test.ts > OpenCodeServerLedger observing as darwin > stops an OpenCode server group left by a server that died
[00:58:09.754] INFO (#311): Stopping an OpenCode server left by a previous T3 Code server { pid: 12940, port: 4096 }

 โœ“ src/server/usageLimits.test.ts (7 tests) 22ms
 โœ“ src/server/status.test.ts (35 tests) 500ms
 โœ“  unit  src/features/pull-requests/pullRequestDiffPages.test.ts (4 tests) 19ms
 โœ“  unit  src/lib/reserved-regions.test.ts (7 tests) 5ms
 โœ“ src/server/adapter.test.ts (31 tests) 384ms
stdout | src/server/OpenCodeServerLedger.test.ts > OpenCodeServerLedger observing as darwin > records a group whose spawned wrapper already exited
[00:58:10.032] INFO (#333): Stopping an OpenCode server left by a previous T3 Code server { pid: 12981, port: 4096 }

 โœ“ src/otelEnvironment.test.ts (31 tests) 114ms
 โœ“ src/usageMerge.test.ts (17 tests) 37ms
 โœ“ src/usageLimits.test.ts (38 tests) 99ms
 โœ“ src/composerContextLegacy.test.ts (36 tests) 100ms
 โœ“ src/server/ModelCatalog.test.ts (4 tests) 3ms
 โœ“  unit  src/features/review/nativeReviewDiffAdapter.test.ts (2 tests) 736ms
   โœ“ buildNativeReviewDiffData row bound (1)
     โœ“ caps each huge file excerpt while preserving full counts and ordinary files 693ms
 โœ“  unit  src/features/usage/UsageLimitsSection.test.ts (2 tests) 3ms
 โœ“ src/serverSettings.test.ts (38 tests) 22ms
 โœ“ src/projectSettings.test.ts (20 tests) 38ms
 โœ“ src/markdownMath.test.ts (44 tests) 312ms
 โœ“  unit  src/state/edit-pending-thread-message.test.ts (4 tests) 26ms
 โœ“ src/server/OpenCodeServerOwner.test.ts (4 tests) 63ms
 โœ“  unit  src/features/threads/pending-thread-feed.test.ts (6 tests) 7ms
 โœ“  unit  src/lib/pdfPreview.test.ts (12 tests) 21ms
 โœ“ src/server/driver.test.ts (8 tests) 492ms
 โœ“ src/server/versionProbe.test.ts (9 tests) 97ms
 โœ“ src/server/v2/OpenCode2Server.test.ts (7 tests) 1624ms
   โœ“ OpenCode2Server spawned server (1)
     โœ“ is ready once /api/info accepts the generated password 1267ms
 โœ“  unit  src/state/use-thread-pr.test.ts (7 tests) 4ms
 โœ“ src/atomicWrite.test.ts (7 tests) 110ms
 โœ“ src/server/OpenCodeRuntime.cliParsers.test.ts (9 tests) 18ms
 โœ“ src/dpop.test.ts (9 tests) 187ms
 โœ“  unit  src/features/agent-awareness/notificationNavigation.test.ts (6 tests) 25ms
 โœ“ src/orchestrationV2PendingBackgroundWork.test.ts (20 tests) 13ms
 โœ“  unit  src/state/thread-order.test.ts (4 tests) 8ms
 โœ“  unit  src/features/workspace/android-workspace-navigation-colors.test.ts (9 tests) 55ms
 โœ“ src/server/OpenCodeServerLedger.test.ts (11 tests) 2448ms
   โœ“ OpenCode server startup (1)
     โœ“ stops the group when interrupted while the server is being recorded 1018ms
 โœ“ src/git.test.ts (28 tests) 22ms
 โœ“ src/composerContextReferences.test.ts (17 tests) 26ms
 โœ“ src/server/notification.test.ts (4 tests) 5ms
 โœ“ src/server/attachmentPrompt.test.ts (2 tests) 11ms
 โœ“ src/assistantCitations.test.ts (20 tests) 62ms
 โœ“ src/server/OpenCodeRuntime.inventory.test.ts (4 tests) 522ms
   โœ“ OpenCodeRuntime inventory (4)
     โœ“ drops oversized CLI skill output without losing the model inventory 475ms
 โœ“  unit  src/lib/adaptive-navigation.test.ts (8 tests) 14ms
 โœ“ src/server/failure.test.ts (10 tests) 41ms
 โœ“  unit  src/features/connection/environmentSections.test.ts (3 tests) 15ms
 โœ“ src/mcpApp.test.ts (14 tests) 1107ms
   โœ“ mcpAppFromToolItem (4)
     โœ“ reads the app from both the stored output and its compact wire form 1071ms
 โœ“ src/server/providerAuthFlow.test.ts (17 tests) 189ms
 โœ“ src/server/managedProvider.test.ts (9 tests) 60ms
 โœ“ src/server/v2/OpenCode2Client.test.ts (1 test) 132ms
 โœ“  unit  src/state/assets.test.ts (4 tests) 10ms
 โœ“ src/server/snapshotProbe.test.ts (7 tests) 46ms
 โœ“ src/KeyedCoalescingWorker.test.ts (4 tests) 50ms
 โœ“ src/preview.test.ts (23 tests) 21ms
 โœ“  unit  src/state/pending-thread-creation.test.ts (4 tests) 15ms
 โœ“ src/server/OpenCodeRuntime.environment.test.ts (3 tests) 58ms
 โœ“ src/server/openCode2Catalog.test.ts (3 tests) 96ms
 โœ“ src/composerInlineTokens.test.ts (34 tests) 66ms
 โœ“ src/server/instanceEnvironment.test.ts (4 tests) 9ms
 โœ“  unit  src/lib/projectFaviconRequests.test.ts (4 tests) 18ms
 โœ“ src/server/OpenCodeRuntime.permissions.test.ts (8 tests) 12ms

 Test Files  15 passed (15)
      Tests  147 passed (147)
   Start at  00:58:06
   Duration  5.82s (transform 37%, import 37%, tests 20%, setup 5%)

     Import  245 modules were evaluated 1751 times ยท 12.78s total, 37% of tracked time
             ~627ms faster with isolate: false โ€” shared modules are evaluated once per worker instead of once per file
             learn more: https://vitest.dev/guide/improving-performance#test-isolation

 โœ“ src/server/maintenanceResolver.test.ts (52 tests) 383ms
 โœ“ src/model.test.ts (10 tests) 16ms
 โœ“ src/toolOutput.test.ts (12 tests) 24ms
 โœ“ src/server/mcpSession.test.ts (2 tests) 8ms
 โœ“ src/server/processGroup.test.ts (2 tests) 16ms

~/packages/provider-acp$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“ src/markdownLinks.test.ts (34 tests) 14ms
 โœ“ src/server/collectStreamText.test.ts (2 tests) 31ms
 โœ“ src/codexMarkdownDirectives.test.ts (22 tests) 136ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/provider-acp

 โœ“ src/nodeRuntime.test.ts (10 tests) 1048ms
   โœ“ Node runtime selection (8)
     โœ“ finds a newly installed runtime immediately after a failed lookup 407ms
     โœ“ uses node.exe even when Windows batch wrappers appear first on PATH 541ms
 โœ“ src/server/mcpToolPresentation.test.ts (4 tests) 11ms
 โœ“  unit  src/state/attachments.test.ts (2 tests) 25ms
 โœ“ src/server/threadTitleContext.test.ts (2 tests) 16ms
 โœ“ src/agentAwareness.test.ts (22 tests) 12ms
 โœ“ src/DrainableWorker.test.ts (3 tests) 29ms
 โœ“  unit  src/state/workspace-connection-atoms.test.ts (1 test) 22ms
 โœ“ src/terminalOutput.test.ts (16 tests) 868ms
   โœ“ appendTerminalOutput (8)
     โœ“ stays bounded across many appends of huge output, including one endless line 837ms
 โœ“  unit  src/features/shortcuts/appShortcuts.test.ts (7 tests) 10ms
 โœ“ src/server/textGenerationUtils.test.ts (3 tests) 25ms
 โœ“ src/imageDimensions.test.ts (8 tests) 12ms
 โœ“ src/server/sessionConfig.test.ts (6 tests) 3ms
 โœ“ src/server/textGenerationPrompts.test.ts (1 test) 3ms

 Test Files  17 passed (17)
      Tests  132 passed (132)
   Start at  00:58:09
   Duration  4.33s (transform 47%, import 39%, setup 10%, tests 4%, worker 1%)

     Import  177 modules were evaluated 1006 times ยท 8.84s total, 39% of tracked time
             ~285ms faster with isolate: false โ€” shared modules are evaluated once per worker instead of once per file
             learn more: https://vitest.dev/guide/improving-performance#test-isolation

 โœ“ src/server/stderr.test.ts (2 tests) 13ms

~/packages/provider-grok$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“  unit  src/lib/markdownMedia.test.ts (12 tests) 17ms
 โœ“ src/htmlRender.test.ts (11 tests) 14ms
 โœ“ src/remote.test.ts (10 tests) 18ms
 โœ“ src/composerContextLegacySend.test.ts (8 tests) 36ms
 โœ“  unit  src/lib/atomic-file.test.ts (4 tests) 6ms
 โœ“  unit  src/lib/composerChipPresentation.test.ts (3 tests) 94ms
 โœ“ src/promptLinks.test.ts (8 tests) 17ms
 โœ“ src/KeyedLock.test.ts (4 tests) 19ms
 โœ“ src/server/clientPolicy.test.ts (13 tests) 32ms
 โœ“ src/logging.test.ts (3 tests) 78ms
 โœ“  unit  src/features/pull-requests/pullRequestFileFilters.test.ts (4 tests) 17ms
 โœ“  unit  src/features/terminal/useTerminalGridSync.test.ts (1 test) 24ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/provider-grok

 โœ“ src/composerContextClipboard.test.ts (6 tests) 351ms
   โœ“ composerContextClipboard (6)
     โœ“ round-trips selections larger than two million characters 330ms
 โœ“  unit  src/lib/localAttachmentPreview.test.ts (4 tests) 6ms
 โœ“  unit  src/features/threads/new-task-context-presentation.test.ts (9 tests) 4ms
 โœ“ src/server/mcpOverAcpBridge.test.ts (3 tests) 110ms
 โœ“ src/schemaJson.test.ts (8 tests) 15ms
 โœ“  unit  src/persistence/mobile-database.test.ts (3 tests) 29ms
 โœ“ src/server/runtimeModel.test.ts (47 tests) 577ms
 โœ“  unit  src/features/terminal/useTerminalLifecycle.test.ts (3 tests) 38ms
 โœ“  unit  src/lib/copyTextWithHaptic.test.ts (5 tests) 45ms
 โœ“ src/orchestrationV2BoundedSnapshot.test.ts (3 tests) 11ms
 โœ“  unit  src/lib/enrichedLinkPresentation.test.ts (5 tests) 15ms
 โœ“ src/devHome.test.ts (5 tests) 79ms
 โœ“ src/codexAuthHandoff.test.ts (6 tests) 17ms
stdout | src/server/clientTerminals.test.ts > AcpClientTerminals > kills long-running commands and rejects released terminal handles
[00:58:14.920] WARN (#53): ACP client terminal operation failed {
  operation: 'terminal/output',
  detail: "ACP terminal/output received an unknown terminal ID 't3-term-1'."
}

 โœ“ src/threadLinks.test.ts (8 tests) 20ms
 โœ“ src/server/usage.test.ts (9 tests) 20ms
 โœ“ src/orchestrationTiming.test.ts (11 tests) 3ms
 โœ“  unit  src/features/pull-requests/pullRequestDiffComments.test.ts (4 tests) 7ms
 โœ“ src/Net.test.ts (4 tests) 32ms
stdout | src/server/clientTerminals.test.ts > AcpClientTerminals > reserves terminal capacity across concurrent creates
[00:58:15.202] WARN (#122): ACP client terminal operation failed {
  operation: 'terminal/create',
  detail: 'ACP terminal/create exceeded the limit of 16 concurrent terminals.'
}

 โœ“ src/threadFindText.test.ts (8 tests) 122ms
 โœ“ src/gitPatchPath.test.ts (22 tests) 12ms
 โœ“  unit  src/persistence/mobile-storage.test.ts (3 tests) 9ms
 โœ“  unit  src/connection/storage.test.ts (3 tests) 27ms
 โœ“ src/hostClassification.test.ts (10 tests) 5ms
 โœ“  unit  src/connection/background-activity.test.ts (3 tests) 6ms
 โœ“ src/path.test.ts (11 tests) 6ms
 โœ“  unit  src/features/workspace/navigation-tab-order.test.ts (6 tests) 4ms
 โœ“ src/fileLinks.test.ts (18 tests) 13ms
 โœ“  unit  src/lib/videoThumbnails.test.ts (2 tests) 20ms
 โœ“ src/composerTrigger.test.ts (25 tests) 22ms
 โœ“ src/semver.test.ts (7 tests) 4ms
 โœ“  unit  src/features/threads/threadQueueControlPresentation.test.ts (7 tests) 12ms
 โœ“ src/composerPullRequestMatches.test.ts (3 tests) 8ms
 โœ“ src/relayTracing.test.ts (2 tests) 17ms
 โœ“ src/toolActivity.test.ts (4 tests) 7ms
 โœ“ src/server/nativeLogging.test.ts (3 tests) 28ms
 โœ“ src/codexArtifactTemplates.test.ts (9 tests) 7ms
 โœ“  unit  src/state/workspaceModel.test.ts (2 tests) 3ms
 โœ“ src/orchestrationV2Timeline.test.ts (12 tests) 11ms
 โœ“ src/markdownPipeline.test.ts (3 tests) 63ms
 โœ“  unit  src/lib/composerAttachmentFiles.test.ts (12 tests) 4ms
 โœ“ src/server/xaiAcpExtension.test.ts (52 tests) 74ms
 โœ“ src/codexFileCitations.test.ts (5 tests) 5ms
 โœ“  unit  src/features/threads/fileChipMenu.test.ts (9 tests) 21ms
 โœ“ src/cliArgs.test.ts (8 tests) 14ms
 โœ“ src/filePreview.test.ts (13 tests) 24ms
 โœ“ src/cliRelease.test.ts (3 tests) 4ms
 โœ“  unit  src/lib/microphonePriority.test.ts (4 tests) 18ms
 โœ“ src/relayAuth.test.ts (2 tests) 8ms
 โœ“ src/connectAuth.test.ts (3 tests) 3ms
 โœ“ src/searchRanking.test.ts (3 tests) 3ms
 โœ“ src/desktopBootstrapToken.test.ts (3 tests) 8ms
 โœ“  unit  src/features/threads/use-composer-command-menu.test.ts (3 tests) 9ms
 โœ“  unit  src/features/pull-requests/pullRequestStatus.test.ts (4 tests) 9ms
 โœ“  unit  src/features/threads/thread-settings-options.test.ts (4 tests) 14ms
 โœ“ src/cloneUrl.test.ts (3 tests) 6ms
 โœ“  unit  src/connection/migration.test.ts (2 tests) 18ms
 โœ“ src/delimitedPreview.test.ts (8 tests) 837ms
   โœ“ delimited file previews (8)
     โœ“ bounds rows, columns and cell length and reports partial content 812ms
 โœ“ src/favicon.test.ts (6 tests) 2ms
 โœ“ src/usageFormat.test.ts (4 tests) 26ms
 โœ“ src/oauthScope.test.ts (3 tests) 3ms
 โœ“  unit  src/features/settings/autoSettleSettingsSync.test.ts (3 tests) 5ms
 โœ“ src/schemaYaml.test.ts (2 tests) 16ms
 โœ“  unit  src/features/terminal/terminalMenu.test.ts (5 tests) 18ms
 โœ“ src/desktopAppControl.test.ts (2 tests) 8ms
 โœ“ src/thirdPartyLicenses.test.ts (2 tests) 2ms
 โœ“ src/server/skills.test.ts (10 tests) 79ms
 โœ“ src/t3McpToolPresentation.test.ts (2 tests) 31ms
 โœ“ src/server/acpSupport.test.ts (8 tests) 11ms
 โœ“  unit  src/features/home/workspace-connection-status.test.ts (3 tests) 8ms
 โœ“ src/AgentScope.test.ts (1 test) 11ms
 โœ“ src/providerAuthReturnUrl.test.ts (5 tests) 8ms
 โœ“ src/relayUrl.test.ts (4 tests) 8ms
 โœ“ src/threadSearch.test.ts (2 tests) 4ms
 โœ“  unit  src/lib/markdownLinks.test.ts (8 tests) 8ms
 โœ“ src/video.test.ts (2 tests) 5ms
 โœ“  unit  src/native/voiceTranscription.ios.test.ts (1 test) 10ms
 โœ“ src/relayJwt.test.ts (1 test) 3ms
 โœ“ src/changedFileKind.test.ts (5 tests) 12ms
 โœ“  unit  src/lib/projectFaviconDatabaseCache.test.ts (3 tests) 4ms
 โœ“ src/telemetryId.test.ts (1 test) 3ms
 โœ“ src/t3ProjectFile.test.ts (2 tests) 3ms
 โœ“ src/terminalLabels.test.ts (2 tests) 3ms
 โœ“  unit  src/features/pull-requests/pullRequestAgentTasks.test.ts (3 tests) 2ms
 โœ“ src/relaySigning.test.ts (1 test) 2ms

 Test Files  86 passed (86)
      Tests  987 passed | 2 skipped (989)
   Start at  00:58:07
   Duration  9.88s (import 41%, transform 28%, setup 16%, tests 14%, worker 1%)

     Import  342 modules were evaluated 2424 times ยท 21.91s total, 41% of tracked time
             ~1.90s faster with isolate: false โ€” shared modules are evaluated once per worker instead of once per file
             learn more: https://vitest.dev/guide/improving-performance#test-isolation

 โœ“  unit  src/lib/projectIcon.test.ts (5 tests) 4ms

~/packages/provider-muse$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“  unit  src/features/devices/threadDevicePreviews.test.ts (2 tests) 2ms
 โœ“  unit  src/features/terminal/terminalInput.test.ts (7 tests) 4ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/provider-muse

 โœ“ src/server/driver.test.ts (4 tests) 79ms
 โœ“  unit  src/state/queries.filesystem.test.ts (1 test) 3ms

 Test Files  5 passed (5)
      Tests  83 passed (83)
   Start at  00:58:14
   Duration  3.78s (transform 61%, import 31%, setup 6%, tests 2%)


~/oxlint-plugin-t3code$ vp test run --config ../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“  unit  src/features/terminal/terminalLaunchContext.test.ts (3 tests) 2ms
 โœ“  unit  src/features/threads/worktree-setup-state.test.ts (4 tests) 2ms
 โœ“  unit  src/features/pull-requests/pullRequestNavigation.test.ts (3 tests) 13ms
 โœ“  unit  src/features/terminal/terminalPaste.test.ts (2 tests) 3ms
 โœ“  unit  src/lib/appLinking.test.ts (17 tests) 10ms
 โœ“  unit  src/state/thread-provider-switching.test.ts (4 tests) 6ms
stdout | src/server/clientTerminals.test.ts > AcpClientTerminals > bounds unreleased terminal handles without invalidating existing ids
[00:58:18.353] WARN (#192): ACP client terminal operation failed {
  operation: 'terminal/create',
  detail: 'ACP terminal/create exceeded the limit of 64 unreleased terminals.'
}

 โœ“ src/server/usageLimits.test.ts (4 tests) 8ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/oxlint-plugin-t3code

 โœ“  unit  src/features/terminal/useTerminalSurfaceBuffer.test.ts (2 tests) 19ms
stdout | src/server/clientTerminals.test.ts > AcpClientTerminals > rejects terminal handles from a different ACP session
[00:58:18.676] WARN (#482): ACP client terminal operation failed {
  operation: 'terminal/output',
  detail: "ACP terminal/output received an unknown terminal ID 't3-term-1'."
}
[00:58:18.677] WARN (#483): ACP client terminal operation failed {
  operation: 'terminal/wait_for_exit',
  detail: "ACP terminal/wait_for_exit received an unknown terminal ID 't3-term-1'."
}
[00:58:18.677] WARN (#484): ACP client terminal operation failed {
  operation: 'terminal/kill',
  detail: "ACP terminal/kill received an unknown terminal ID 't3-term-1'."
}
[00:58:18.677] WARN (#485): ACP client terminal operation failed {
  operation: 'terminal/release',
  detail: "ACP terminal/release received an unknown terminal ID 't3-term-1'."
}

 โœ“ src/server/clientTerminals.test.ts (13 tests) 4151ms
   โœ“ AcpClientTerminals (12)
     โœ“ bounds unreleased terminal handles without invalidating existing ids 3146ms

 Test Files  7 passed (7)
      Tests  87 passed (87)
   Start at  00:58:13
   Duration  5.59s (tests 44%, transform 32%, import 17%, setup 8%)

 โœ“  unit  src/lib/device-type.test.ts (3 tests) 6ms

~/packages/client-runtime$ vp test run โŠ˜ cache disabled
 โœ“ src/server/sdk.test.ts (12 tests) 228ms
 โœ“  unit  src/lib/projectThreadStartTurn.test.ts (3 tests) 3ms
 โœ“ src/server/itemPresentation.test.ts (6 tests) 38ms
 โœ“  unit  src/features/pull-requests/pullRequestActions.test.ts (3 tests) 10ms
 โœ“  unit  src/features/threads/thread-route-hydration.test.ts (3 tests) 5ms
 โœ“  unit  src/state/queued-run-edit.test.ts (3 tests) 31ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/client-runtime

 โœ“  unit  src/features/keyboard/commandPaletteItems.test.ts (2 tests) 20ms
 โœ“  unit  src/features/settings/scheduled-task-editor-state.test.ts (3 tests) 7ms
 โœ“  unit  src/features/files/filePath.test.ts (7 tests) 5ms
 โœ“ src/server/protocol.test.ts (1 test) 2ms
 โœ“  unit  src/features/layout/deferred-navigation.test.ts (3 tests) 2ms
 โœ“  unit  src/features/cloud/managedRelayLayer.test.ts (1 test) 84ms
 โœ“ src/server/modelCatalog.test.ts (1 test) 8ms
 โœ“  unit  src/features/home/thread-dismissal.test.ts (3 tests) 4ms
 โœ“ src/server/usage.test.ts (12 tests) 85ms
 โœ“  unit  src/features/pull-requests/pullRequestActivityFilter.test.ts (1 test) 3ms
 โœ“ src/server/maintenance.test.ts (3 tests) 135ms
 โœ“ src/server/textGeneration.test.ts (8 tests) 88ms
 โœ“  unit  src/features/devices/device-stream-document.test.ts (11 tests) 12ms
 โœ“  unit  src/features/sharing/incoming-share-presentation.test.ts (2 tests) 8ms
 โœ“  unit  src/features/threads/provider-catalog-refresh.test.ts (2 tests) 10ms
 โœ“ src/server/status.test.ts (3 tests) 366ms
 โœ“ src/server/adapter.test.ts (39 tests) 290ms

 Test Files  10 passed (10)
      Tests  89 passed (89)
   Start at  00:58:17
   Duration  2.88s (transform 53%, import 33%, tests 8%, setup 6%)

 โœ“  unit  src/features/cloud/CloudAuthProvider.test.ts (1 test) 3ms

~/packages/effect-acp$ vp test run --config ../../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“  unit  src/features/diagnostics/crash-log-model.test.ts (2 tests) 5ms
 โœ“  unit  src/lib/markdownTableBreaks.test.ts (5 tests) 60ms
 โœ“  unit  src/features/observability/tracing.test.ts (1 test) 69ms
 โœ“  unit  src/features/pull-requests/pullRequestEnvironmentFallback.test.ts (3 tests) 2ms
 โœ“  unit  scripts/generate-uniwind-themes.test.ts (1 test) 30ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/packages/effect-acp

 โœ“  unit  src/lib/nativeTheme.test.ts (12 tests) 50ms
 โœ“  unit  src/lib/highlights.test.ts (2 tests) 30ms
 โœ“  unit  src/lib/assetImageSource.test.ts (3 tests) 8ms
 โœ“  unit  src/lib/markdownMediaSource.test.ts (3 tests) 8ms
 โœ“ src/_internal/stdio.test.ts (1 test) 46ms
 โœ“  unit  src/features/pull-requests/pullRequestAutolinks.test.ts (4 tests) 38ms
 โœ“  unit  src/features/sharing/incoming-share-storage.test.ts (1 test) 12ms
 โœ“ src/schema.test.ts (2 tests) 5ms
 โœ“ src/errors.test.ts (6 tests) 74ms
 โœ“  unit  src/features/connection/pairing.test.ts (5 tests) 11ms
 โœ“  unit  src/lib/connection.test.ts (1 test) 6ms
 โœ“  unit  src/lib/markdownInlineFileLinks.test.ts (4 tests) 38ms
 โœ“  unit  src/features/settings/SettingsRouteScreen.logic.test.ts (2 tests) 2ms
 โœ“ src/agent.test.ts (6 tests) 160ms
 โœ“ src/authorization/layer.test.ts (23 tests) 407ms
 โœ“  unit  src/state/asset-url-state.test.ts (3 tests) 2ms
 โœ“  unit  src/lib/wideMarkdownBlocks.test.ts (2 tests) 19ms
 โœ“  unit  src/features/home/swipe-row-activation.test.ts (3 tests) 2ms
 โœ“  unit  src/features/pull-requests/botBadgeImages.test.ts (1 test) 7ms
 โœ“  unit  src/lib/serialized-async-queue.test.ts (2 tests) 3ms
 โœ“ src/state/runtime.test.ts (23 tests) 116ms
 โœ“  unit  src/lib/openExternalUrl.test.ts (1 test) 23ms
 โœ“  unit  src/features/usage/usageEnvironmentSelection.test.ts (4 tests) 2ms
 โœ“ src/connection/supervisor.test.ts (35 tests) 460ms
 โœ“  unit  scripts/generate-highlights.test.ts (1 test) 29ms
 โœ“  unit  src/features/pull-requests/pullRequestDescription.test.ts (1 test) 32ms
 โœ“  unit  src/features/threads/composerSendPresentation.test.ts (2 tests) 11ms
 โœ“ src/rpc/session.test.ts (14 tests) 742ms
 โœ“ src/connection/registry.test.ts (41 tests) 658ms
 โœ“  unit  src/features/sharing/incoming-share-native.test.ts (2 tests) 4ms
 โœ“  unit  src/features/diffs/nativeReviewDiffSurface.test.ts (1 test) 191ms
 โœ“  unit  src/features/pull-requests/pullRequestDescriptionContent.test.ts (1 test) 3ms
 โœ“ src/protocol.test.ts (21 tests) 1786ms
   โœ“ effect-acp protocol (21)
     โœ“ propagates the real child exit code when the input stream ends 912ms
     โœ“ does not emit a second process-exit error after a decode failure 632ms
 โœ“  unit  src/features/threads/threadContentPresentation.test.ts (2 tests) 2ms
 โœ“ src/state/pullRequests.test.ts (56 tests) 1602ms
   โœ“ returns a successful mutation when source invalidation stalls 1018ms
 โœ“  unit  src/features/cloud/managedRelayTokenStore.test.ts (1 test) 49ms
 โœ“  unit  src/features/pull-requests/pullRequestReviewDrafts.test.ts (1 test) 2ms
 โœ“  unit  src/features/threads/subagent-card-presentation.test.ts (1 test) 2ms
 โœ“ src/state/server.test.ts (19 tests) 119ms
 โœ“ src/state/threads-sync.test.ts (37 tests) 573ms
 โœ“  unit  src/lib/filePreviewGallery.test.ts (1 test) 24ms
 โœ“ src/voice-input/controller.test.ts (22 tests) 42ms
 โœ“  unit  src/state/queries.test.ts (1 test) 24ms
 โœ“  unit  src/features/threads/customSnoozeDate.test.ts (2 tests) 2ms
 โœ“ src/operations/commands.test.ts (14 tests) 86ms
 โœ“  unit  src/state/thread-composer-error.test.ts (1 test) 6ms
 โœ“ src/state/shell-sync.test.ts (6 tests) 137ms
 โœ“  unit  src/features/prompt-links/prompt-link-model.test.ts (1 test) 17ms
 โœ“ src/state/vcs.test.ts (9 tests) 149ms
 โœ“  unit  src/features/pull-requests/pullRequestMediaSource.test.ts (1 test) 23ms
 โœ“  unit  src/features/browser/previewPromptText.test.ts (3 tests) 3ms
 โœ“  unit  src/features/cloud/publicConfig.test.ts (1 test) 8ms
 โœ“ src/state/environmentHttpAuth.test.ts (32 tests) 319ms
 โœ“  unit  src/lib/nativeComposerTheme.test.ts (1 test) 8ms
 โœ“  unit  src/features/projects/AddProjectScreen.logic.test.ts (1 test) 2ms
 โœ“  unit  src/lib/mobileThemeRuntime.test.ts (1 test) 2ms
 โœ“ src/state/orchestrationV2Projection.test.ts (15 tests) 36ms
 โœ“  unit  src/lib/http-response.test.ts (1 test) 3ms
 โœ“ src/connection/onboarding.test.ts (13 tests) 133ms
 โœ“  unit  src/lib/foreground-handoff.test.ts (1 test) 2ms
 โœ“  unit  src/lib/filePreview.test.ts (4 tests) 2ms
 โœ“  unit  src/features/threads/threadMessageJump.test.ts (1 test) 9ms
 โœ“  unit  src/features/threads/projectThreadCreationValidation.test.ts (2 tests) 2ms
 โœ“ src/state/entities.test.ts (16 tests) 29ms
 โœ“  unit  src/lib/appearancePreferences.test.ts (1 test) 2ms
 โœ“  unit  src/features/settings/lib/legal-document-url.test.ts (2 tests) 6ms
 โœ“ src/state/vcsAction.test.ts (9 tests) 31ms
 โœ“ src/relay/discovery.test.ts (7 tests) 56ms
 โœ“  unit  src/features/keyboard/hardwareKeyboardCommands.test.ts (2 tests) 2ms
 โœ“ src/state/threadCommands.test.ts (22 tests) 77ms
 โœ“ src/relay/managedRelay.test.ts (7 tests) 119ms
 โœ“ src/threadPullRequests.test.ts (23 tests) 18ms
 โœ“ src/state/threads-atoms.test.ts (4 tests) 249ms
 โœ“ src/connection/routes.test.ts (19 tests) 25ms
 โœ“ src/rpc/client.test.ts (8 tests) 104ms
 โœ“ src/platform/storageDocument.test.ts (13 tests) 46ms
 โœ“ src/device/stream.test.ts (14 tests) 24ms
 โœ“ src/sourceControlClients.test.ts (35 tests) 10ms
 โœ“ src/state/threadShell.test.ts (9 tests) 52ms
 โœ“ src/state/projectGrouping.test.ts (20 tests) 15ms
 โœ“ rules/no-real-time-wait-in-tests.test.ts (16 tests) 9949ms
   โœ“ t3code/no-real-time-wait-in-tests (15)
     โœ“ allows TestClock-driven sleeps and timeout safety nets (1)
       โœ“ passes 837ms
     โœ“ ignores sleeps inside strings and child-process script templates (1)
       โœ“ passes 488ms
     โœ“ ignores shared helpers in files that drive the TestClock (1)
       โœ“ passes 594ms
     โœ“ ignores bare setTimeout callbacks outside promise executors (1)
       โœ“ passes 404ms
     โœ“ reports Effect.sleep under it.live (1)
       โœ“ reports the rule diagnostic 525ms
     โœ“ reports retry schedules under curried testers (1)
       โœ“ reports the rule diagnostic 602ms
     โœ“ reports Effect.delay under plain it (1)
       โœ“ reports the rule diagnostic 552ms
     โœ“ reports it.effect inside an excludeTestServices layer as a real-clock wait (1)
       โœ“ reports the rule diagnostic 883ms
     โœ“ reports it.effect sleeps in files that never adjust the TestClock (1)
       โœ“ reports the rule diagnostic 626ms
     โœ“ reports polling helpers even when the file drives the TestClock (1)
       โœ“ reports the rule diagnostic 516ms
     โœ“ reports promise-wrapped setTimeout in vitest tests (1)
       โœ“ reports the rule diagnostic 729ms
     โœ“ reports promise-wrapped setTimeout under it.effect as a mixed clock (1)
       โœ“ reports the rule diagnostic 630ms
     โœ“ reports TestClock sleeps when TestClock.adjust appears only in a comment (1)
       โœ“ reports the rule diagnostic 730ms
     โœ“ reports timers hidden in module-level helpers (1)
       โœ“ reports the rule diagnostic 647ms
     โœ“ reports awaited timers/promises sleeps (1)
       โœ“ reports the rule diagnostic 568ms
   โœ“ ignores non-test files (1)
     โœ“ passes 575ms
 โœ“ src/state/fileMetadata.test.ts (11 tests) 158ms
 โœ“ rules/no-polling-loop-in-tests.test.ts (16 tests) 10388ms
   โœ“ t3code/no-polling-loop-in-tests (15)
     โœ“ allows a fixed-count flush followed by unrelated error handling (1)
       โœ“ passes 533ms
     โœ“ allows a fixed-N flush with a literal bound (1)
       โœ“ passes 610ms
     โœ“ allows a fixed-N while flush with a counter bound (1)
       โœ“ passes 715ms
     โœ“ allows a fixed-N do-while flush against a named bound (1)
       โœ“ passes 725ms
     โœ“ allows a loop that takes from a queue (1)
       โœ“ passes 657ms
     โœ“ ignores waits inside nested callbacks (1)
       โœ“ passes 582ms
     โœ“ reports a budgeted yieldNow poll that dies after the loop (1)
       โœ“ reports the rule diagnostic 655ms
     โœ“ reports a while loop spinning on a predicate (1)
       โœ“ reports the rule diagnostic 756ms
     โœ“ reports a while loop bounded by a length predicate (1)
       โœ“ reports the rule diagnostic 692ms
     โœ“ reports a comparison against an identifier the loop never advances (1)
       โœ“ reports the rule diagnostic 827ms
     โœ“ reports a for loop bounded by a length predicate (1)
       โœ“ reports the rule diagnostic 912ms
     โœ“ reports a sleep poll with a counter bound and an early return (1)
       โœ“ reports the rule diagnostic 540ms
     โœ“ reports a microtask poll keyed on the loop condition (1)
       โœ“ reports the rule diagnostic 507ms
     โœ“ reports an awaited setTimeout poll (1)
       โœ“ reports the rule diagnostic 581ms
     โœ“ reports an awaited Promise.resolve poll that breaks (1)
       โœ“ reports the rule diagnostic 453ms
   โœ“ ignores non-test files (1)
     โœ“ passes 606ms
 โœ“ src/state/commandPermissions.test.ts (14 tests) 59ms
 โœ“ src/connection/resolver.test.ts (6 tests) 38ms
 โœ“ src/state/threadRelationships.test.ts (11 tests) 11ms
 โœ“ rules/no-test-timeout-or-unreasoned-skip.test.ts (16 tests) 10489ms
   โœ“ t3code/no-test-timeout-or-unreasoned-skip (13)
     โœ“ allows tests without overrides, conditional skips, and waitFor timeouts (1)
       โœ“ passes 657ms
     โœ“ allows a skip with a quarantine issue or a GitHub issue URL (1)
       โœ“ passes 774ms
     โœ“ reports a numeric timeout on it.effect (1)
       โœ“ reports the rule diagnostic 605ms
     โœ“ reports a timeout through .each and .skipIf chains (1)
       โœ“ reports the rule diagnostic 533ms
     โœ“ reports retry options, options-first timeouts, and hook timeouts (1)
       โœ“ reports the rule diagnostic 690ms
     โœ“ reports vi.setConfig timeouts (1)
       โœ“ reports the rule diagnostic 747ms
     โœ“ reports a skip whose comment has no issue (1)
       โœ“ reports the rule diagnostic 780ms
     โœ“ reports todo, only, and the x/f aliases (1)
       โœ“ reports the rule diagnostic 937ms
     โœ“ flags an options-object timeout when the callback is a reference (1)
       โœ“ reports the rule diagnostic 520ms
     โœ“ allows a computed skip option, which is a platform gate like skipIf (1)
       โœ“ passes 645ms
     โœ“ flags the suite alias and option-object skips (1)
       โœ“ reports the rule diagnostic 813ms
     โœ“ flags a skip option without a quarantine issue (1)
       โœ“ reports the rule diagnostic 666ms
     โœ“ flags a bracket-access skip without a quarantine issue (1)
       โœ“ reports the rule diagnostic 560ms
   โœ“ still flags an option-object skip in a live file (1)
     โœ“ reports the rule diagnostic 431ms
   โœ“ allows timeouts in opt-in live provider suites (1)
     โœ“ passes 474ms
   โœ“ ignores non-test files (1)
     โœ“ passes 608ms
 โœ“ src/state/threadExecution.test.ts (11 tests) 10ms
 โœ“ src/state/threadWorkflows.test.ts (21 tests) 15ms
 โœ“ src/authorization/remote.test.ts (8 tests) 43ms
 โœ“ src/state/threadHistoryMerge.test.ts (7 tests) 16ms
 โœ“ src/mcpApps/host.test.ts (9 tests) 33ms
 โœ“ src/connection/outdatedHostUpdate.test.ts (3 tests) 58ms
 โœ“ src/state/shellReducer.test.ts (14 tests) 20ms
 โœ“ src/client.test.ts (27 tests) 7684ms
   โœ“ effect-acp client (20)
     โœ“ transforms fragmented stdout before parsing and preserves UTF-8 946ms
     โœ“ preserves stdout transform errors without logging rejected input 653ms
     โœ“ reports idle child termination and rejects later requests and notifications 696ms
     โœ“ initializes, prompts, receives updates, and handles permission requests 968ms
     โœ“ returns structured invalid params without exposing values from typed extension request payloads 889ms
     โœ“ preserves ACP v2 structured diff semantics 640ms
     โœ“ does not turn unsupported ACP v2 auth methods into agent login 505ms
     โœ“ preserves registry env-var authentication extensions 516ms
     โœ“ replays buffered notifications to handlers registered after they arrive 571ms
     โœ“ routes MCP-over-ACP connect, message, notification, and disconnect callbacks 575ms
     โœ“ preserves future content and session-update variants 515ms

 Test Files  6 passed (6)
      Tests  63 passed (63)
   Start at  00:58:21
   Duration  9.53s (tests 55%, transform 22%, import 17%, setup 6%)

 โœ“ src/state/threadDetail.test.ts (14 tests) 37ms

~/scripts$ vp test run --config ../vite.config.ts --dir . โŠ˜ cache disabled
 โœ“ src/state/threadSnoozed.test.ts (20 tests) 48ms
 โœ“ src/state/threadSort.test.ts (21 tests) 223ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/scripts

stdout | src/state/serverUsage.test.ts > keeps the cached usage summary when the awaited refresh fails
[00:58:31.190] WARN (#49): Could not refresh slow usage sources. {
  errorType: 'error',
  errorName: 'UsageReadError',
  errorTag: 'UsageReadError',
  stack: '    at /home/runner/_work/t3code/t3code/packages/client-runtime/src/state/serverUsage.test.ts:289:21\n' +
    '    at Generator.next (<anonymous>)\n' +
    '    at ~effect/Effect/successCont (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:979:28)\n' +
    '    at ~effect/Effect/evaluate (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:991:25)\n' +
    '    at FiberImpl.runLoop (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:453:97)\n' +
    '    at FiberImpl.evaluate (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:402:23)\n' +
    '    at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2474:9\n' +
    '    at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2526:19\n' +
    '    at Module.<anonymous> (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:2537:31)\n' +
    '    at Array.<anonymous> (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@effect+vitest@4.0.5_patch_hash=2731c9c3761c595f25ddc625a7d61ca376b389d5b3049ecb837c894_729be65b0f3c6bde0309e4457c6d9256/node_modules/@effect/vitest/dist/internal/internal.js:26:31)'
}

 โœ“ src/state/serverUsage.test.ts (2 tests) 78ms
 โœ“ src/state/projectCommands.test.ts (4 tests) 127ms
 โœ“ src/platform/shellCacheEncoding.test.ts (5 tests) 171ms
 โœ“ lib/third-party-licenses.test.ts (19 tests) 146ms
 โœ“ src/state/terminalSession.test.ts (9 tests) 29ms
 โœ“ src/operations/commands.performance.test.ts (1 test) 199ms
 โœ“ src/state/threadRequests.test.ts (10 tests) 16ms
 โœ“ src/state/subagentRuntime.test.ts (11 tests) 44ms
 โœ“ notify-discord-release.test.ts (15 tests) 138ms
 โœ“ src/work-log/commandLabel.test.ts (61 tests) 82ms
 โœ“ src/state/usage.test.ts (8 tests) 36ms
 โœ“ src/state/boundedThreadSnapshotHttp.test.ts (5 tests) 113ms
 โœ“ rules/require-disposable-render.test.ts (22 tests) 13573ms
   โœ“ t3code/require-disposable-render (22)
     โœ“ allows the disposable helper (1)
       โœ“ passes 889ms
     โœ“ rejects react-dom/client (1)
       โœ“ reports the rule diagnostic 620ms
     โœ“ rejects act from react (1)
       โœ“ reports the rule diagnostic 513ms
     โœ“ rejects a renamed act from react (1)
       โœ“ reports the rule diagnostic 651ms
     โœ“ rejects setting the act environment (1)
       โœ“ reports the rule diagnostic 502ms
     โœ“ rejects setting the act environment by computed key (1)
       โœ“ reports the rule diagnostic 649ms
     โœ“ rejects stubbing the act environment (1)
       โœ“ reports the rule diagnostic 746ms
     โœ“ rejects userEvent wrapped in act from react (1)
       โœ“ reports the rule diagnostic 893ms
     โœ“ rejects userEvent wrapped in the render helper's act (1)
       โœ“ reports the rule diagnostic 677ms
     โœ“ rejects userEvent wrapped in a renamed render helper act (1)
       โœ“ reports the rule diagnostic 713ms
     โœ“ rejects a renamed userEvent wrapped in act (1)
       โœ“ reports the rule diagnostic 686ms
     โœ“ rejects a locator click wrapped in act (1)
       โœ“ reports the rule diagnostic 491ms
     โœ“ rejects React.act from a namespace import (1)
       โœ“ reports the rule diagnostic 398ms
     โœ“ rejects userEvent wrapped in React.act (1)
       โœ“ reports the rule diagnostic 439ms
     โœ“ allows act around a DOM click and userEvent in a function act only defines (1)
       โœ“ passes 611ms
     โœ“ rejects lifecycle hooks through a test runner namespace (1)
       โœ“ reports the rule diagnostic 545ms
     โœ“ rejects importing lifecycle hooks from the test runner (1)
       โœ“ reports the rule diagnostic 555ms
     โœ“ rejects afterEach (1)
       โœ“ reports the rule diagnostic 418ms
     โœ“ rejects beforeAll (1)
       โœ“ reports the rule diagnostic 409ms
     โœ“ allows lifecycle hooks outside browser tests (1)
       โœ“ passes 654ms
     โœ“ allows importing lifecycle hooks outside browser tests (1)
       โœ“ passes 722ms
     โœ“ still rejects react-dom/client in unit tests (1)
       โœ“ reports the rule diagnostic 739ms
 โœ“ merge-update-manifests.test.ts (5 tests) 46ms
 โœ“ dev-runner.test.ts (32 tests) 217ms
 โœ“ legend-list-initial-reveal.test.ts (10 tests) 61ms
 โœ“ src/projectFaviconCache.test.ts (8 tests) 334ms
   โœ“ project favicon image loader (3)
     โœ“ downscales large bitmaps and refuses large vector icons 304ms
 โœ“ src/state/threadSearch.test.ts (9 tests) 71ms
 โœ“ update-release-package-versions.test.ts (3 tests) 75ms
 โœ“ lib/cli-external-packages.test.ts (10 tests) 896ms
   โœ“ external package dependency closure (1)
     โœ“ keeps every runtime dependency of an external package external too 829ms
 โœ“ lib/dev-share.test.ts (5 tests) 27ms
 โœ“ build-npm-launcher.test.ts (1 test) 1086ms
   โœ“ build-npm-launcher (1)
     โœ“ publishes a launcher that downloads, verifies, caches, and runs the release executable 1082ms
 โœ“ src/device/duoViewer.test.ts (2 tests) 28ms
 โœ“ src/device/duoControl.test.ts (12 tests) 23ms
 โœ“ lib/public-config.test.ts (1 test) 7ms
 โœ“ src/pullRequestQuery.test.ts (17 tests) 13ms
 โœ“ rules/prefer-effect-fn.test.ts (23 tests) 14832ms
   โœ“ t3code/prefer-effect-fn (23)
     โœ“ allows inline programs and layer construction (1)
       โœ“ passes 734ms
     โœ“ allows named functions and deliberate untraced functions (1)
       โœ“ passes 726ms
     โœ“ allows inline combinator callbacks (1)
       โœ“ passes 671ms
     โœ“ allows inline option and error callbacks (1)
       โœ“ passes 808ms
     โœ“ allows reference default-value callbacks (1)
       โœ“ passes 538ms
     โœ“ reports service members named onSome (1)
       โœ“ reports the rule diagnostic 646ms
     โœ“ reports service members named onNone (1)
       โœ“ reports the rule diagnostic 823ms
     โœ“ reports service members named onSuccess (1)
       โœ“ reports the rule diagnostic 572ms
     โœ“ reports service members named onFailure (1)
       โœ“ reports the rule diagnostic 608ms
     โœ“ reports service members named defaultValue (1)
       โœ“ reports the rule diagnostic 727ms
     โœ“ does not mistake other namespaces or shadowed locals for Effect (1)
       โœ“ passes 965ms
     โœ“ leaves functions with synchronous setup for manual review (1)
       โœ“ passes 613ms
     โœ“ reports a named arrow wrapper (1)
       โœ“ reports the rule diagnostic 438ms
     โœ“ reports a block-bodied wrapper (1)
       โœ“ reports the rule diagnostic 434ms
     โœ“ reports a declaration with pipe transforms (1)
       โœ“ reports the rule diagnostic 451ms
     โœ“ reports a function expression (1)
       โœ“ reports the rule diagnostic 558ms
     โœ“ reports service members (1)
       โœ“ reports the rule diagnostic 488ms
     โœ“ reports class fields (1)
       โœ“ reports the rule diagnostic 491ms
     โœ“ recognizes namespace aliases (1)
       โœ“ reports the rule diagnostic 474ms
     โœ“ recognizes bare-package Effect imports (1)
       โœ“ reports the rule diagnostic 600ms
     โœ“ recognizes a direct gen import (1)
       โœ“ reports the rule diagnostic 844ms
     โœ“ reports class methods (1)
       โœ“ reports the rule diagnostic 857ms
     โœ“ allows getters that expose an effect value (1)
       โœ“ passes 708ms
 โœ“ src/work-log/presentation.test.ts (18 tests) 24ms
 โœ“ src/relay/managedRelayState.test.ts (4 tests) 70ms
 โœ“ mobile-native-client.test.ts (2 tests) 90ms
 โœ“ rules/no-mobile-uniwind-theme-escape-hatches.test.ts (24 tests) 14942ms
   โœ“ t3code/no-mobile-uniwind-theme-escape-hatches (24)
     โœ“ allows semantic mobile theme classes (1)
       โœ“ passes 612ms
     โœ“ allows unrelated functions with legacy hook names (1)
       โœ“ passes 513ms
     โœ“ allows unrelated imports with legacy hook names (1)
       โœ“ passes 728ms
     โœ“ allows erased type-only theme imports (1)
       โœ“ passes 527ms
     โœ“ allows appearance words in ordinary copy (1)
       โœ“ passes 716ms
     โœ“ does not conflate shadowed Uniwind namespaces (1)
       โœ“ passes 662ms
     โœ“ allows reviewed native interop boundaries (1)
       โœ“ passes 661ms
     โœ“ still reports appearance variants in reviewed interop boundaries (1)
       โœ“ reports the rule diagnostic 581ms
     โœ“ reports new React theme subscriptions (1)
       โœ“ reports the rule diagnostic 898ms
     โœ“ reports the retired theme color hook (1)
       โœ“ reports the rule diagnostic 708ms
     โœ“ reports guarded hooks imported with TypeScript extensions (1)
       โœ“ reports the rule diagnostic 524ms
     โœ“ reports unreviewed native interop subscriptions (1)
       โœ“ reports the rule diagnostic 610ms
     โœ“ reports appearance variants in string literals (1)
       โœ“ reports the rule diagnostic 511ms
     โœ“ reports appearance variants in template literals (1)
       โœ“ reports the rule diagnostic 409ms
     โœ“ reports escaped appearance variants in template literals (1)
       โœ“ reports the rule diagnostic 523ms
     โœ“ reports appearance variants through nested class-map indirection (1)
       โœ“ reports the rule diagnostic 476ms
     โœ“ reports appearance variants passed to class builders (1)
       โœ“ reports the rule diagnostic 557ms
     โœ“ reports negative and important appearance variants (1)
       โœ“ reports the rule diagnostic 558ms
     โœ“ reports namespace CSS variable subscriptions (1)
       โœ“ reports the rule diagnostic 573ms
     โœ“ reports destructured namespace CSS variable subscriptions (1)
       โœ“ reports the rule diagnostic 669ms
     โœ“ reports aliased namespace CSS variable subscriptions (1)
       โœ“ reports the rule diagnostic 645ms
     โœ“ reports object-rest namespace CSS variable subscriptions (1)
       โœ“ reports the rule diagnostic 563ms
     โœ“ reports namespace access to the retired theme hook (1)
       โœ“ reports the rule diagnostic 757ms
     โœ“ reports destructured namespace access to the retired theme hook (1)
       โœ“ reports the rule diagnostic 918ms
 โœ“ sync-reference-repos.test.ts (2 tests) 78ms
 โœ“ lib/resolve-catalog.test.ts (2 tests) 14ms
 โœ“ src/handoff.test.ts (15 tests) 12ms
 โœ“ src/state/threadSubagents.test.ts (7 tests) 34ms
 โœ“ mock-update-server.test.ts (2 tests) 120ms
 โœ“ mobile-showcase.test.ts (3 tests) 12ms
 โœ“ resolve-previous-release-tag.test.ts (3 tests) 6ms
 โœ“ lib/build-target-arch.test.ts (1 test) 48ms
 โœ“ lib/icon-export.test.ts (1 test) 2ms
 โœ“ src/pullRequestMarkdown.test.ts (17 tests) 6ms
 โœ“ src/pullRequestLinkInput.test.ts (15 tests) 23ms
 โœ“ mobile-native-static-check.test.ts (2 tests) 13ms
 โœ“ src/connection/diagnosis.test.ts (7 tests) 8ms
 โœ“ src/connection/presentation.test.ts (4 tests) 11ms
 โœ“ src/state/itemSupport.test.ts (2 tests) 2ms
 โœ“ src/state/presentation.test.ts (3 tests) 23ms
 โœ“ src/preview/serverBrowserStream.test.ts (5 tests) 9ms
 โœ“ src/device/phoneViewer.test.ts (1 test) 32ms
 โœ“ src/device/avcConfig.test.ts (8 tests) 10ms
 โœ“ build-desktop-artifact.test.ts (42 tests) 3395ms
   โœ“ build-desktop-artifact (40)
     โœ“ rejects overlapping builds from another process until restoration finishes 1001ms
     โœ“ builds web, server and desktop with the resolved version, restores changed manifests and preserves edits to matching ones 439ms
 โœ“ src/providerSkills.test.ts (6 tests) 3ms
 โœ“ src/state/projectEntities.test.ts (2 tests) 20ms
 โœ“ src/platform/orchestrationCache.test.ts (3 tests) 39ms
 โœ“ src/state/threadFeedback.test.ts (4 tests) 9ms
 โœ“ src/operations/projects.test.ts (6 tests) 7ms
 โœ“ src/threadPullRequestCompatibility.test.ts (10 tests) 10ms
 โœ“ src/device/phoneScene.test.ts (8 tests) 82ms
 โœ“ src/changeRequestLinks.test.ts (6 tests) 5ms
 โœ“ src/reviewGuideTour.test.ts (7 tests) 9ms
 โœ“ src/device/phoneInteraction.test.ts (4 tests) 10ms
 โœ“ src/device/duoScene.test.ts (2 tests) 42ms
 โœ“ src/device/model.test.ts (4 tests) 10ms
 โœ“ src/state/usageProgress.test.ts (4 tests) 7ms
 โœ“ src/state/attachments.test.ts (3 tests) 6ms
 โœ“ src/state/filesystem.test.ts (8 tests) 5ms
 โœ“ src/t3ToolSummary.test.ts (3 tests) 3ms
 โœ“ src/connection/errors.test.ts (5 tests) 17ms
 โœ“ rules/require-suppression-reason.test.ts (13 tests) 7942ms
   โœ“ t3code/require-suppression-reason (13)
     โœ“ allows a directive with a -- reason (1)
       โœ“ passes 456ms
     โœ“ allows a directive explained by the comment above (1)
       โœ“ passes 589ms
     โœ“ allows stacked directives under one explanation (1)
       โœ“ passes 619ms
     โœ“ allows a TypeScript directive followed by its reason (1)
       โœ“ passes 700ms
     โœ“ allows a directive in a JSX comment with a reason (1)
       โœ“ passes 581ms
     โœ“ ignores enable directives (1)
       โœ“ passes 835ms
     โœ“ reports a lint directive without a reason (1)
       โœ“ reports the rule diagnostic 753ms
     โœ“ reports a file-level directive without a reason (1)
       โœ“ reports the rule diagnostic 609ms
     โœ“ reports a TypeScript directive without a reason (1)
       โœ“ reports the rule diagnostic 649ms
     โœ“ does not count a comment separated by a blank line (1)
       โœ“ reports the rule diagnostic 513ms
     โœ“ allows an empty comment line between the reason and the directive (1)
       โœ“ passes 568ms
     โœ“ does not count an empty comment above (1)
       โœ“ reports the rule diagnostic 603ms
     โœ“ does not count a trailing comment on the code line above (1)
       โœ“ reports the rule diagnostic 440ms
 โœ“ src/state/sharedSettings.test.ts (9 tests) 22ms
 โœ“ src/mediaSource.test.ts (8 tests) 8ms
 โœ“ src/connection/compatibility.test.ts (4 tests) 6ms
 โœ“ src/state/turnItemPresentation.test.ts (2 tests) 8ms
 โœ“ src/state/providerInstanceDisplay.test.ts (10 tests) 11ms
 โœ“ src/work-log/toolPresentation.test.ts (4 tests) 3ms
 โœ“ src/device/streamFrames.test.ts (1 test) 24ms
 โœ“ src/device/modelScene.test.ts (2 tests) 18ms
 โœ“ knip-schemas.test.ts (1 test) 6742ms
   โœ“ allows types and schemas through the real Knip CLI without hiding runtime or file findings 6741ms

 Test Files  21 passed (21)
      Tests  162 passed (162)
   Start at  00:58:31
   Duration  7.33s (tests 53%, import 22%, transform 14%, setup 10%, worker 1%)

    Isolate  21 workers spawned ยท ~186ms startup each (spawn + environment, per file)
             at least ~372ms faster with isolate: false โ€” reuses workers across files instead of one per file

 โœ“ src/state/gitActions.test.ts (3 tests) 3ms

 โœ“ src/promptLinks.test.ts (3 tests) 2ms
 โœ“ src/state/queryPersistence.test.ts (3 tests) 19ms
 โœ“ src/state/serverConfigProjection.test.ts (2 tests) 12ms
 โœ“ src/device/deviceMotion.test.ts (2 tests) 12ms
 โœ“ rules/no-test-in-loop.test.ts (8 tests) 4592ms
   โœ“ t3code/no-test-in-loop (7)
     โœ“ allows it.each and it.effect.each (1)
       โœ“ passes 658ms
     โœ“ allows loops inside a test body (1)
       โœ“ passes 587ms
     โœ“ ignores node:test files, which have no .each (1)
       โœ“ passes 532ms
     โœ“ reports it inside a for...of loop (1)
       โœ“ reports the rule diagnostic 488ms
     โœ“ reports it.effect inside a for loop nested in describe (1)
       โœ“ reports the rule diagnostic 451ms
     โœ“ reports test inside a for...in loop (1)
       โœ“ reports the rule diagnostic 711ms
     โœ“ reports a describe inside a loop once, not the tests inside it (1)
       โœ“ reports the rule diagnostic 512ms
   โœ“ ignores non-test files (1)
     โœ“ passes 634ms
 โœ“ src/state/customSnooze.test.ts (11 tests) 13ms
 โœ“ src/state/threadInbox.test.ts (2 tests) 3ms
 โœ“ src/threadReference.test.ts (5 tests) 3ms
 โœ“ src/state/usageAccess.test.ts (8 tests) 3ms
 โœ“ rules/no-frame-waits-in-browser-tests.test.ts (16 tests) 9615ms
   โœ“ t3code/no-frame-waits-in-browser-tests (16)
     โœ“ allows retrying assertions and the full fake timer set (1)
       โœ“ passes 592ms
     โœ“ allows requestAnimationFrame inside mocks (1)
       โœ“ passes 522ms
     โœ“ allows timers outside a promise executor and other listeners (1)
       โœ“ passes 484ms
     โœ“ rejects a nextFrame helper (1)
       โœ“ reports the rule diagnostic 672ms
     โœ“ rejects requestAnimationFrame as the executor (1)
       โœ“ reports the rule diagnostic 777ms
     โœ“ rejects window.requestAnimationFrame (1)
       โœ“ reports the rule diagnostic 586ms
     โœ“ allows a pass-through frame executor inside a mock implementation (1)
       โœ“ passes 759ms
     โœ“ rejects setTimeout passed straight through as the promise executor (1)
       โœ“ reports the rule diagnostic 809ms
     โœ“ rejects setTimeout inside a promise executor (1)
       โœ“ reports the rule diagnostic 537ms
     โœ“ rejects setInterval inside a promise executor (1)
       โœ“ reports the rule diagnostic 563ms
     โœ“ rejects transitionend listeners (1)
       โœ“ reports the rule diagnostic 549ms
     โœ“ rejects animationend listeners (1)
       โœ“ reports the rule diagnostic 562ms
     โœ“ rejects vi.useFakeTimers (1)
       โœ“ reports the rule diagnostic 528ms
     โœ“ rejects a partial fakeTimers set (1)
       โœ“ reports the rule diagnostic 589ms
     โœ“ rejects a partial vi.useFakeTimers set (1)
       โœ“ reports the rule diagnostic 493ms
     โœ“ ignores files that are not browser tests (1)
       โœ“ passes 552ms
 โœ“ src/state/auth.test.ts (2 tests) 3ms
 โœ“ src/errors/safeLog.test.ts (2 tests) 5ms
 โœ“ src/filePreview.test.ts (3 tests) 51ms
 โœ“ src/userMessage.test.ts (3 tests) 3ms
 โœ“ src/markdownImages.test.ts (12 tests) 21ms
 โœ“ src/state/threadHistoryController.test.ts (1 test) 15ms
 โœ“ src/work-log/itemDetail.test.ts (2 tests) 12ms
 โœ“ src/errors/transport.test.ts (3 tests) 11ms
 โœ“ src/mediaReference.test.ts (7 tests) 3ms
 โœ“ src/relay/errorPresentation.test.ts (3 tests) 3ms
 โœ“ src/device/duoSnap.test.ts (1 test) 18ms
 โœ“ src/device/androidFoldScene.test.ts (1 test) 43ms
 โœ“ src/composerThreadItems.test.ts (1 test) 3ms
 โœ“ src/secretRequest.test.ts (2 tests) 2ms
 โœ“ src/state/assets.test.ts (1 test) 19ms
 โœ“ src/device/renderScheduler.test.ts (1 test) 8ms
 โœ“ src/state/commandOutput.test.ts (1 test) 3ms
 โœ“ src/errors/errorTrace.test.ts (2 tests) 6ms
 โœ“ src/work-log/scrollAnchor.test.ts (1 test) 2ms
 โœ“ src/environment/endpoint.test.ts (1 test) 2ms
 โœ“ src/state/archivedThreads.test.ts (1 test) 5ms

 Test Files  126 passed (126)
      Tests  1220 passed (1220)
   Start at  00:58:19
   Duration  21.22s (import 48%, transform 33%, setup 10%, tests 8%)

     Import  511 modules were evaluated 9671 times ยท 60.98s total, 48% of tracked time
             ~6.97s faster with isolate: false โ€” shared modules are evaluated once per worker instead of once per file
             learn more: https://vitest.dev/guide/improving-performance#test-isolation


 โœ“ rules/no-raw-mcp-registration.test.ts (20 tests) 11449ms
   โœ“ t3code/no-raw-mcp-registration (20)
     โœ“ allows the rest of effect/ai and type-only McpServer imports (1)
       โœ“ passes 585ms
     โœ“ reports importing McpServer from effect/ai (1)
       โœ“ reports the rule diagnostic 485ms
     โœ“ reports importing McpServer under another name (1)
       โœ“ reports the rule diagnostic 609ms
     โœ“ reports a namespace import of effect/ai (1)
       โœ“ reports the rule diagnostic 525ms
     โœ“ reports importing the McpServer module directly (1)
       โœ“ reports the rule diagnostic 790ms
     โœ“ reports re-exporting McpServer (1)
       โœ“ reports the rule diagnostic 798ms
     โœ“ reports re-exporting all of effect/ai (1)
       โœ“ reports the rule diagnostic 757ms
     โœ“ reports a dynamic import of the McpServer module (1)
       โœ“ reports the rule diagnostic 633ms
     โœ“ reports a dynamic import written as a template (1)
       โœ“ reports the rule diagnostic 619ms
     โœ“ reports McpServer.toolkit (1)
       โœ“ reports the rule diagnostic 623ms
     โœ“ reports McpServer.resource and McpServer.prompt (1)
       โœ“ reports the rule diagnostic 593ms
     โœ“ reports addTool on the McpServer service (1)
       โœ“ reports the rule diagnostic 534ms
     โœ“ reports a registration method read without calling it (1)
       โœ“ reports the rule diagnostic 577ms
     โœ“ reports a registration function taken by destructuring (1)
       โœ“ reports the rule diagnostic 606ms
     โœ“ reports a registration method taken by destructuring (1)
       โœ“ reports the rule diagnostic 602ms
     โœ“ lets tests import McpServer to build a server (1)
       โœ“ passes 573ms
     โœ“ reports a registration in a test (1)
       โœ“ reports the rule diagnostic 455ms
     โœ“ reports a test importing McpServer under another name (1)
       โœ“ reports the rule diagnostic 393ms
     โœ“ reports a test importing effect/ai as a namespace (1)
       โœ“ reports the rule diagnostic 368ms
 โœ“ rules/no-inline-schema-compile.test.ts (6 tests) 2225ms
   โœ“ t3code/no-inline-schema-compile (6)
     โœ“ allows schema compilers hoisted to module scope (1)
       โœ“ passes 564ms
     โœ“ allows factory helpers that return a precompiled decoder (1)
       โœ“ passes 420ms
     โœ“ allows schema construction helpers that use encode transformations (1)
       โœ“ passes 315ms
     โœ“ reports schema compilers inside function bodies (1)
       โœ“ reports the rule diagnostic 308ms
     โœ“ reports inline schema literals as high confidence findings (1)
       โœ“ reports the rule diagnostic 306ms
 โœ“ rules/no-wall-clock-in-tests.test.ts (8 tests) 2800ms
   โœ“ t3code/no-wall-clock-in-tests (7)
     โœ“ ignores a computed member with a variable key (1)
       โœ“ passes 492ms
     โœ“ allows fixed dates and readings that seed mocks (1)
       โœ“ passes 458ms
     โœ“ reports elapsed-time measurement (1)
       โœ“ reports the rule diagnostic 316ms
     โœ“ reports new Date() with no arguments (1)
       โœ“ reports the rule diagnostic 308ms
     โœ“ reports a reading outside the mock's arguments (1)
       โœ“ reports the rule diagnostic 308ms
   โœ“ ignores non-test files (1)
     โœ“ passes 313ms
 โœ“ rules/no-manual-effect-runtime-in-tests.test.ts (17 tests) 7772ms
   โœ“ t3code/no-manual-effect-runtime-in-tests (14)
     โœ“ allows @effect/vitest effect tests (1)
       โœ“ passes 746ms
     โœ“ reports Effect.runCallback (1)
       โœ“ reports the rule diagnostic 664ms
     โœ“ reports Effect.runCallbackWith (1)
       โœ“ reports the rule diagnostic 481ms
     โœ“ reports Effect.runFork (1)
       โœ“ reports the rule diagnostic 481ms
     โœ“ reports Effect.runForkWith (1)
       โœ“ reports the rule diagnostic 573ms
     โœ“ reports Effect.runPromise (1)
       โœ“ reports the rule diagnostic 602ms
     โœ“ reports Effect.runPromiseExit (1)
       โœ“ reports the rule diagnostic 398ms
     โœ“ reports Effect.runPromiseExitWith (1)
       โœ“ reports the rule diagnostic 577ms
     โœ“ reports Effect.runPromiseWith (1)
       โœ“ reports the rule diagnostic 489ms
     โœ“ reports Effect.runSync (1)
       โœ“ reports the rule diagnostic 517ms
     โœ“ reports Effect.runSyncExit (1)
       โœ“ reports the rule diagnostic 483ms
     โœ“ reports Effect.runSyncExitWith (1)
       โœ“ reports the rule diagnostic 303ms
   โœ“ allows production runtime boundaries (1)
     โœ“ passes 305ms
 โœ“ rules/no-unscoped-has.test.ts (42 tests) 23524ms
   โœ“ t3code/no-unscoped-has (24)
     โœ“ allows :has() on the element itself (1)
       โœ“ passes 481ms
     โœ“ allows :has() anchored to an attribute (1)
       โœ“ passes 609ms
     โœ“ allows :has() inside :not() on the element itself (1)
       โœ“ passes 831ms
     โœ“ allows built-in has-* variants (1)
       โœ“ passes 540ms
     โœ“ allows a sibling selector without :has() (1)
       โœ“ passes 708ms
     โœ“ ignores prose mentioning :has() (1)
       โœ“ passes 543ms
     โœ“ ignores :has() inside an arbitrary value (1)
       โœ“ passes 618ms
     โœ“ allows a negated :has() on the element itself (1)
       โœ“ passes 743ms
     โœ“ allows :has() on a group or peer element (1)
       โœ“ passes 645ms
     โœ“ allows a selector list whose own branch is anchored (1)
       โœ“ passes 847ms
     โœ“ ignores :has() text in quoted attribute values (1)
       โœ“ passes 560ms
     โœ“ allows a selector without & on the element itself (1)
       โœ“ passes 572ms
     โœ“ reports a sibling :has() with nothing anchoring it (1)
       โœ“ reports the rule diagnostic 635ms
     โœ“ reports a descendant :has() with nothing anchoring it (1)
       โœ“ reports the rule diagnostic 560ms
     โœ“ reports a universal :has() ancestor (1)
       โœ“ reports the rule diagnostic 648ms
     โœ“ reports :has() whose only anchor is negated (1)
       โœ“ reports the rule diagnostic 535ms
     โœ“ reports uppercase :HAS() (1)
       โœ“ reports the rule diagnostic 370ms
     โœ“ reports a selector-list branch borrowing another branch's anchor (1)
       โœ“ reports the rule diagnostic 460ms
     โœ“ reports an unanchored branch inside :is() (1)
       โœ“ reports the rule diagnostic 456ms
     โœ“ reports an unanchored :has() inside a named group variant (1)
       โœ“ reports the rule diagnostic 435ms
     โœ“ reports a :has() on an ancestor of a selector without & (1)
       โœ“ reports the rule diagnostic 750ms
     โœ“ reports a :has() on an ancestor of a group (1)
       โœ“ reports the rule diagnostic 811ms
     โœ“ reports an in-* ancestor :has() (1)
       โœ“ reports the rule diagnostic 886ms
     โœ“ reports :has() anchored to the document root (1)
       โœ“ reports the rule diagnostic 610ms
   โœ“ t3code/no-outset-state-indicators (18)
     โœ“ valid: inset state rings (1)
       โœ“ inset state rings (1)
         โœ“ passes 557ms
     โœ“ valid: an unconditional inset (1)
       โœ“ an unconditional inset (1)
         โœ“ passes 731ms
     โœ“ valid: an inset in a sibling composer argument (1)
       โœ“ an inset in a sibling composer argument (1)
         โœ“ passes 617ms
     โœ“ valid: an inset in a nested conditional composer (1)
       โœ“ an inset in a nested conditional composer (1)
         โœ“ passes 576ms
     โœ“ valid: outlines covered by the inward default (1)
       โœ“ outlines covered by the inward default (1)
         โœ“ passes 599ms
     โœ“ valid: wider outlines with a matching inward offset (1)
       โœ“ wider outlines with a matching inward offset (1)
         โœ“ passes 755ms
     โœ“ valid: arbitrary pixel outlines with a matching inward offset (1)
       โœ“ arbitrary pixel outlines with a matching inward offset (1)
         โœ“ passes 627ms
     โœ“ valid: arbitrary outline colors (1)
       โœ“ arbitrary outline colors (1)
         โœ“ passes 574ms
     โœ“ valid: decorative rings without a state (1)
       โœ“ decorative rings without a state (1)
         โœ“ passes 538ms
     โœ“ valid: prose (1)
       โœ“ prose (1)
         โœ“ passes 476ms
     โœ“ invalid: state rings without an inset (1)
       โœ“ state rings without an inset (1)
         โœ“ reports the rule diagnostic 432ms
     โœ“ invalid: an inset from another state (1)
       โœ“ an inset from another state (1)
         โœ“ reports the rule diagnostic 337ms
     โœ“ invalid: an inset from another conditional branch (1)
       โœ“ an inset from another conditional branch (1)
         โœ“ reports the rule diagnostic 305ms
     โœ“ invalid: an inset passed to another function (1)
       โœ“ an inset passed to another function (1)
         โœ“ reports the rule diagnostic 322ms
     โœ“ invalid: arbitrary state ring widths (1)
       โœ“ arbitrary state ring widths (1)
         โœ“ reports the rule diagnostic 313ms
 โœ“ rules/no-hermes-unsupported-apis.test.ts (22 tests) 10188ms
   โœ“ t3code/no-hermes-unsupported-apis (22)
     โœ“ allows in-place sort on a copy (1)
       โœ“ passes 682ms
     โœ“ allows in-place reverse on a copy (1)
       โœ“ passes 661ms
     โœ“ allows other ES2023 methods Hermes ships (1)
       โœ“ passes 670ms
     โœ“ ignores property reads that are not calls (1)
       โœ“ passes 449ms
     โœ“ reports toSorted (1)
       โœ“ reports the rule diagnostic 499ms
     โœ“ reports toReversed in a chain (1)
       โœ“ reports the rule diagnostic 503ms
     โœ“ reports toSpliced via computed access with a copy-then-splice remediation (1)
       โœ“ reports the rule diagnostic 647ms
     โœ“ reports a static template-literal property name (1)
       โœ“ reports the rule diagnostic 679ms
     โœ“ ignores a template-literal property with substitutions (1)
       โœ“ passes 506ms
     โœ“ allows supported Intl constructors (1)
       โœ“ passes 526ms
     โœ“ allows feature detection (1)
       โœ“ passes 534ms
     โœ“ allows unrelated Segmenter constructors (1)
       โœ“ passes 608ms
     โœ“ ignores dynamic computed names (1)
       โœ“ passes 446ms
     โœ“ reports new Intl.Segmenter(undefined, { granularity: 'grapheme' }) (1)
       โœ“ reports the rule diagnostic 362ms
     โœ“ reports new Intl['Segmenter']() (1)
       โœ“ reports the rule diagnostic 305ms
     โœ“ reports new Intl[`Segmenter`]() (1)
       โœ“ reports the rule diagnostic 313ms
     โœ“ reports new globalThis.Intl.Segmenter() (1)
       โœ“ reports the rule diagnostic 304ms
     โœ“ reports Intl.Segmenter?.() (1)
       โœ“ reports the rule diagnostic 305ms
 โœ“ rules/no-global-process-runtime.test.ts (9 tests) 2591ms
   โœ“ t3code/no-global-process-runtime (9)
     โœ“ allows unrelated node os imports (1)
       โœ“ passes 301ms
 โœ“ rules/no-rpc-permission-bypass.test.ts (16 tests) 5637ms
   โœ“ blocks direct session calls (1)
     โœ“ reports the rule diagnostic 617ms
   โœ“ blocks extracting the raw client (1)
     โœ“ reports the rule diagnostic 476ms
   โœ“ blocks replacing the permission guard (1)
     โœ“ reports the rule diagnostic 536ms
   โœ“ blocks namespace guard access (1)
     โœ“ reports the rule diagnostic 545ms
   โœ“ blocks raw protocol imports (1)
     โœ“ reports the rule diagnostic 306ms
   โœ“ allows public typed RPC helpers (1)
     โœ“ passes 301ms
 โœ“ rules/namespace-node-imports.test.ts (5 tests) 1552ms
   โœ“ t3code/namespace-node-imports (5)
     โœ“ allows canonical Node namespaces (1)
       โœ“ passes 319ms
     โœ“ reports default imports (1)
       โœ“ reports the rule diagnostic 320ms
     โœ“ reports non-canonical namespace aliases (1)
       โœ“ reports the rule diagnostic 320ms
 โœ“ rules/no-mobile-pull-request-glyph-literals.test.ts (10 tests) 3079ms
   โœ“ t3code/no-mobile-pull-request-glyph-literals (10)
     โœ“ allows unrelated symbols and copy that mentions pull requests (1)
       โœ“ passes 313ms
     โœ“ reports a pull request glyph in a JSX attribute (1)
       โœ“ reports the rule diagnostic 309ms
     โœ“ reports glyphs in platform symbol objects (1)
       โœ“ reports the rule diagnostic 313ms
     โœ“ reports an Android-only pull request glyph (1)
       โœ“ reports the rule diagnostic 317ms
     โœ“ allows merge as an ordinary string outside an android symbol slot (1)
       โœ“ passes 322ms
     โœ“ reports an Android-only pull request glyph written as a template literal (1)
       โœ“ reports the rule diagnostic 353ms
 โœ“ rules/prefer-catch-tags.test.ts (6 tests) 1876ms
   โœ“ t3code/prefer-catch-tags (6)
     โœ“ allows Effect.catchTags (1)
       โœ“ passes 351ms
     โœ“ ignores catchTag on other modules (1)
       โœ“ passes 308ms
     โœ“ reports Effect.catchTag (1)
       โœ“ reports the rule diagnostic 321ms
     โœ“ reports a named catchTag import (1)
       โœ“ reports the rule diagnostic 316ms
 โœ“ rules/no-native-title-tooltip.test.ts (11 tests) 3099ms
 โœ“ rules/no-em-dash-copy.test.ts (5 tests) 1349ms
   โœ“ t3code/no-em-dash-copy (5)
     โœ“ allows hyphens and en dashes (1)
       โœ“ passes 334ms
 โœ“ rules/no-hookless-use-function.test.ts (9 tests) 2251ms
   โœ“ t3code/no-hookless-use-function (9)
     โœ“ allows a hook that calls useState (1)
       โœ“ passes 311ms
     โœ“ allows a hook that calls a member hook (1)
       โœ“ passes 301ms
 โœ“ rules/no-manual-memo.test.ts (14 tests) 3745ms
   โœ“ t3code/no-manual-memo (11)
     โœ“ allows other React members (1)
       โœ“ passes 309ms
     โœ“ reports useCallback (1)
       โœ“ reports the rule diagnostic 300ms
 โœ“ rules/no-dom-test-environment.test.ts (12 tests) 2680ms
   โœ“ t3code/no-dom-test-environment (12)
     โœ“ allows browser tests (1)
       โœ“ passes 329ms

 Test Files  25 passed (25)
      Tests  366 passed (366)
   Start at  00:58:18
   Duration  28.85s (tests 96%, import 2%, setup 1%)


 โœ“  unit  src/reactCompilerCoverage.test.ts (930 tests) 49950ms
   โœ“ React Compiler coverage (930)
     โœ“ Metro's transformer applies the compiler 1335ms
     โœ“ compiles src/components/ComposerContextSheet.tsx 430ms
     โœ“ compiles src/components/MediaVideoPlayer.tsx 353ms
     โœ“ compiles src/components/ui/AndroidAnchoredMenu.tsx 306ms
     โœ“ compiles src/features/connection/CloudEnvironmentRows.tsx 340ms
     โœ“ compiles src/features/connection/ConnectionEnvironmentRow.tsx 327ms
     โœ“ compiles src/features/connection/ConnectionsNewRouteScreen.tsx 455ms
     โœ“ compiles src/features/devices/DevicePreviewRouteScreen.tsx 303ms
     โœ“ compiles src/features/files/AttachmentFileScreen.tsx 358ms
     โœ“ compiles src/features/files/ThreadFilesRouteScreen.tsx 883ms
     โœ“ compiles src/features/files/useFileTreeEntries.ts 314ms
     โœ“ compiles src/features/home/HomeScreen.tsx 1084ms
     โœ“ compiles src/features/home/thread-swipe-actions.tsx 791ms
     โœ“ compiles src/features/home/useThreadListActions.ts 537ms
     โœ“ compiles src/features/keyboard/CommandPalette.tsx 434ms
     โœ“ compiles src/features/layout/AdaptiveWorkspaceLayout.tsx 1270ms
     โœ“ compiles src/features/layout/createWorkspaceStackNavigator.ios.tsx 514ms
     โœ“ compiles src/features/projects/AddProjectScreen.tsx 833ms
     โœ“ compiles src/features/pull-requests/PullRequestFiles.tsx 406ms
     โœ“ compiles src/features/pull-requests/PullRequestRouteScreen.tsx 1414ms
     โœ“ compiles src/features/pull-requests/PullRequestsScreen.tsx 385ms
     โœ“ compiles src/features/review/ReviewSheet.tsx 440ms
     โœ“ compiles src/features/settings/SettingsScheduledTasksRouteScreen.tsx 425ms
     โœ“ compiles src/features/terminal/ThreadTerminalRouteScreen.tsx 374ms
     โœ“ compiles src/features/threads/NewTaskDraftScreen.tsx 688ms
     โœ“ compiles src/features/threads/ThreadComposer.tsx 544ms
     โœ“ compiles src/features/threads/ThreadDetailScreen.tsx 882ms
     โœ“ compiles src/features/threads/ThreadFeed.tsx 768ms
     โœ“ compiles src/features/threads/new-task-flow-provider.tsx 407ms
     โœ“ compiles src/features/threads/thread-work-log.tsx 354ms
     โœ“ caches the thread feed derivation 782ms

 Test Files  201 passed (201)
      Tests  2253 passed (2253)
   Start at  00:57:54
   Duration  61.74s (import 37%, tests 27%, transform 24%, setup 9%, environment 3%)


---
vp run: 27/27 successful. (Run `vp run --last-details` for full details)
Post job cleanup.
Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
Post job cleanup.
##[start-action display=Cache full pnpm store;id=__7b25e9e3-7221-4f5e-a13d-a4713e5e47ac.__actions_cache]
Post job cleanup.
Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-fe33cf74552d68b43bd4929ad8f74b63f776b4470e2e3533f781441d5e4f188c, not saving cache.
##[end-action id=__7b25e9e3-7221-4f5e-a13d-a4713e5e47ac.__actions_cache;outcome=success;conclusion=success;duration_ms=95]
##[start-action display=Cache Vite+;id=__7b25e9e3-7221-4f5e-a13d-a4713e5e47ac.vp_cache]
Post job cleanup.
Cache hit occurred on the primary key vite-plus-home-v2-Linux-X64-1.3.0-node26.12.1-pnpm@12.14.0, not saving cache.
##[end-action id=__7b25e9e3-7221-4f5e-a13d-a4713e5e47ac.vp_cache;outcome=success;conclusion=success;duration_ms=65]
Post job cleanup.
[command]/usr/local/bin/git version
git version 2.55.0
Temporarily overriding HOME='/home/runner/_work/_temp/899156a4-390a-4ed3-b40b-c7a0ee3af27e' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
Removing SSH command configuration
[command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/usr/local/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
Warning: The process '/usr/local/bin/git' failed with exit code 128
A job completed hook has been configured by the self-hosted runner administrator
โ–ธ Run '/job_completed.sh'
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 163
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 387
  BLACKSMITH_CHECK_RUN_ID: 121035461009
  BLACKSMITH_JOB_DISPLAY_NAME: Test
  GITHUB_ACTIONS_CACHE_MODE: write
Docker container cache not activated, skipping hash computation.
No active SSH sessions detected. Proceeding with shutdown immediately.
Cleaning up orphan processes