GitHub check

Whole log, 219 KB
Current runner version: '2.337.0'
Runner name: 'blacksmith-8vcpu-ubuntu-2404-k3pknlwbslcungx6'
Runner group name: 'blacksmith scale sets - blacksmith-8vcpu-ubuntu-2404'
Machine name: 'ip-172-31-73-130'
▸ GITHUB_TOKEN Permissions
Contents: read
Metadata: read
Secret source: Actions
Cache mode: write
Prepare workflow directory
Prepare all required actions
Getting action download info
Download action repository 'actions/checkout@v6' (SHA:d23441a48e516b6c34aea4fa41551a30e30af803)
Download action repository 'actions/cache@v6' (SHA:55cc8345863c7cc4c66a329aec7e433d2d1c52a9)
Setting BLACKSMITH_ACTIONS_RESULTS_URL to https://results-receiver.actions.githubusercontent.com/
Complete job name: Test
A job started hook has been configured by the self-hosted runner administrator
▸ Run '/setup.sh'
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  BLACKSMITH_CHECK_RUN_ID: 119131322090
  BLACKSMITH_JOB_DISPLAY_NAME: Test
  GITHUB_ACTIONS_CACHE_MODE: write
Logging daemon started (blacksmithd for logs)
Results daemon started (blacksmithd for results)
Background adoption and SSH setup started (PID: 3146)

----------------------------------------
View this job: https://app.blacksmith.sh/pingdotgg/runs/39572896784/jobs/119131322090
SSH Access (using your GitHub SSH key):
  ssh -p 64003 runner@blacksmith-8vcpu-ubuntu-2404-k3pknlwbslcungx6.vm.blacksmith.sh

No GitHub SSH key? Add one at:
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account

----------------------------------------

VM ID: blacksmith-8vcpu-ubuntu-2404-k3pknlwbslcungx6
Host: production-152.236.30.18-x8664
Host Agent PID: 1039140
Host Agent Git SHA: 6637acf1f
Host CPU Manufacturer: AuthenticAMD
Blacksmith Host Generation: gen 2
Petname: production-factual-albacore-c4df7c86
Region: us-east
Rootfs Version: ubuntu24-full-x64-081926
OS Version: Ubuntu 24.04.4 LTS

Enabling Blacksmith transparent cache
▸ Run actions/checkout@v6
with:
  sparse-checkout: /*
!/.repos/
!/apps/mobile/modules/t3-terminal/Vendor/**/*.a

  sparse-checkout-cone-mode: false
  repository: pingdotgg/t3code
  token: ***
  ssh-strict: true
  ssh-user: git
  persist-credentials: true
  clean: true
  fetch-depth: 1
  fetch-tags: false
  show-progress: true
  lfs: false
  submodules: false
  set-safe-directory: true
  allow-unsafe-pr-checkout: false
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
Syncing repository: pingdotgg/t3code
▸ Getting Git version info
Working directory is '/home/runner/_work/t3code/t3code'
[command]/usr/local/bin/git version
git version 2.55.0
Temporarily overriding HOME='/home/runner/_work/_temp/cc42c027-4a4f-4b0b-a3a8-84b56e2c7e0c' 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
Deleting the contents of '/home/runner/_work/t3code/t3code'
▸ Determining repository object format
▸ Initializing the repository
[command]/usr/local/bin/git init /home/runner/_work/t3code/t3code
hint: Using 'master' as the name for the initial branch. This default branch name
hint: will change to "main" in Git 3.0. To configure the initial branch name
hint: to use in all of your new repositories, which will suppress this warning,
hint: call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/runner/_work/t3code/t3code/.git/
[command]/usr/local/bin/git remote add origin https://github.com/pingdotgg/t3code
▸ Disabling automatic garbage collection
[command]/usr/local/bin/git config --local gc.auto 0
▸ Setting up auth
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' || :"
Removing HTTP extra header
[command]/usr/local/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
[command]/usr/local/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
Removing includeIf entries pointing to credentials config files
[command]/usr/local/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
[command]/usr/local/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
[command]/usr/local/bin/git config --file /home/runner/_work/_temp/git-credentials-e8c5d0e5-824f-4173-85b2-4810de4abcc2.config http.https://github.com/.extraheader AUTHORIZATION: basic ***
[command]/usr/local/bin/git config --local includeIf.gitdir:/home/runner/_work/t3code/t3code/.git.path /home/runner/_work/_temp/git-credentials-e8c5d0e5-824f-4173-85b2-4810de4abcc2.config
[command]/usr/local/bin/git config --local includeIf.gitdir:/home/runner/_work/t3code/t3code/.git/worktrees/*.path /home/runner/_work/_temp/git-credentials-e8c5d0e5-824f-4173-85b2-4810de4abcc2.config
[command]/usr/local/bin/git config --local includeIf.gitdir:/github/workspace/.git.path /github/runner_temp/git-credentials-e8c5d0e5-824f-4173-85b2-4810de4abcc2.config
[command]/usr/local/bin/git config --local includeIf.gitdir:/github/workspace/.git/worktrees/*.path /github/runner_temp/git-credentials-e8c5d0e5-824f-4173-85b2-4810de4abcc2.config
▸ Fetching the repository
[command]/usr/local/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --filter=blob:none --depth=1 origin +4bad93cff9fff152a6c9d38b8ca14ccadce3a500:refs/remotes/pull/22768/merge
From https://github.com/pingdotgg/t3code
 * [new ref]         4bad93cff9fff152a6c9d38b8ca14ccadce3a500 -> pull/22768/merge
▸ Determining the checkout info
▸ Setting up sparse checkout
[command]/usr/local/bin/git config core.sparseCheckout true
[command]/usr/local/bin/git rev-parse --git-path info/sparse-checkout
.git/info/sparse-checkout
▸ Checking out the ref
[command]/usr/local/bin/git checkout --progress --force refs/remotes/pull/22768/merge
Updating files:   0% (1/6222)
Updating files:   1% (63/6222)
Updating files:   2% (125/6222)
Updating files:   3% (187/6222)
Updating files:   4% (249/6222)
Updating files:   5% (312/6222)
Updating files:   6% (374/6222)
Updating files:   7% (436/6222)
Updating files:   8% (498/6222)
Updating files:   9% (560/6222)
Updating files:  10% (623/6222)
Updating files:  11% (685/6222)
Updating files:  12% (747/6222)
Updating files:  13% (809/6222)
Updating files:  14% (872/6222)
Updating files:  15% (934/6222)
Updating files:  16% (996/6222)
Updating files:  17% (1058/6222)
Updating files:  18% (1120/6222)
Updating files:  19% (1183/6222)
Updating files:  20% (1245/6222)
Updating files:  21% (1307/6222)
Updating files:  22% (1369/6222)
Updating files:  23% (1432/6222)
Updating files:  24% (1494/6222)
Updating files:  25% (1556/6222)
Updating files:  26% (1618/6222)
Updating files:  27% (1680/6222)
Updating files:  28% (1743/6222)
Updating files:  29% (1805/6222)
Updating files:  30% (1867/6222)
Updating files:  31% (1929/6222)
Updating files:  32% (1992/6222)
Updating files:  33% (2054/6222)
Updating files:  34% (2116/6222)
Updating files:  35% (2178/6222)
Updating files:  36% (2240/6222)
Updating files:  37% (2303/6222)
Updating files:  38% (2365/6222)
Updating files:  39% (2427/6222)
Updating files:  40% (2489/6222)
Updating files:  41% (2552/6222)
Updating files:  42% (2614/6222)
Updating files:  43% (2676/6222)
Updating files:  44% (2738/6222)
Updating files:  45% (2800/6222)
Updating files:  46% (2863/6222)
Updating files:  47% (2925/6222)
Updating files:  48% (2987/6222)
Updating files:  49% (3049/6222)
Updating files:  50% (3111/6222)
Updating files:  51% (3174/6222)
Updating files:  52% (3236/6222)
Updating files:  53% (3298/6222)
Updating files:  54% (3360/6222)
Updating files:  55% (3423/6222)
Updating files:  56% (3485/6222)
Updating files:  57% (3547/6222)
Updating files:  58% (3609/6222)
Updating files:  59% (3671/6222)
Updating files:  60% (3734/6222)
Updating files:  61% (3796/6222)
Updating files:  62% (3858/6222)
Updating files:  63% (3920/6222)
Updating files:  64% (3983/6222)
Updating files:  65% (4045/6222)
Updating files:  66% (4107/6222)
Updating files:  67% (4169/6222)
Updating files:  68% (4231/6222)
Updating files:  69% (4294/6222)
Updating files:  70% (4356/6222)
Updating files:  71% (4418/6222)
Updating files:  72% (4480/6222)
Updating files:  73% (4543/6222)
Updating files:  74% (4605/6222)
Updating files:  74% (4652/6222)
Updating files:  75% (4667/6222)
Updating files:  76% (4729/6222)
Updating files:  77% (4791/6222)
Updating files:  78% (4854/6222)
Updating files:  79% (4916/6222)
Updating files:  80% (4978/6222)
Updating files:  81% (5040/6222)
Updating files:  82% (5103/6222)
Updating files:  83% (5165/6222)
Updating files:  84% (5227/6222)
Updating files:  85% (5289/6222)
Updating files:  86% (5351/6222)
Updating files:  87% (5414/6222)
Updating files:  88% (5476/6222)
Updating files:  89% (5538/6222)
Updating files:  90% (5600/6222)
Updating files:  91% (5663/6222)
Updating files:  92% (5725/6222)
Updating files:  93% (5787/6222)
Updating files:  94% (5849/6222)
Updating files:  95% (5911/6222)
Updating files:  96% (5974/6222)
Updating files:  97% (6036/6222)
Updating files:  98% (6098/6222)
Updating files:  99% (6160/6222)
Updating files: 100% (6222/6222)
Updating files: 100% (6222/6222), done.
Note: switching to 'refs/remotes/pull/22768/merge'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 4bad93c Merge df7660f50966ff01f4e81c98128f7c3fb2035a45 into 6490a9e8748aef55d04d3f4f61b77fba90b4cf1b
[command]/usr/local/bin/git log -1 --format=%H
4bad93cff9fff152a6c9d38b8ca14ccadce3a500
▸ Run sudo apt-get update
sudo apt-get update
sudo apt-get install -y --no-install-recommends build-essential
command -v cc
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
Get:1 file:/etc/apt/blacksmith-ubuntu-mirrors.txt Mirrorlist [194 B]
Hit:2 http://azure.archive.ubuntu.com/ubuntu noble InRelease
Hit:6 https://packages.microsoft.com/repos/azure-cli noble InRelease
Get:3 http://azure.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Get:7 https://packages.microsoft.com/ubuntu/24.04/prod noble InRelease [3600 B]
Get:4 http://azure.archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
Get:5 http://azure.archive.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Get:8 https://dl.google.com/linux/chrome-stable/deb stable InRelease [2548 B]
Get:9 https://packages.microsoft.com/ubuntu/24.04/prod noble/main amd64 Packages [628 kB]
Get:10 https://packages.microsoft.com/ubuntu/24.04/prod noble/main arm64 Packages [565 kB]
Get:11 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [1400 kB]
Get:12 http://azure.archive.ubuntu.com/ubuntu noble-updates/main Translation-en [309 kB]
Get:13 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Components [181 kB]
Get:14 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [1706 kB]
Get:15 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe Translation-en [342 kB]
Get:16 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Components [388 kB]
Get:17 http://azure.archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Components [940 B]
Get:18 http://azure.archive.ubuntu.com/ubuntu noble-backports/main amd64 Components [5744 B]
Get:19 http://azure.archive.ubuntu.com/ubuntu noble-backports/universe amd64 Components [12.6 kB]
Get:20 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Packages [1145 kB]
Get:21 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Components [46.4 kB]
Get:22 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Packages [1222 kB]
Get:23 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Components [76.3 kB]
Get:24 https://dl.google.com/linux/chrome-stable/deb stable/main amd64 Packages [1408 B]
Fetched 8414 kB in 1s (13.6 MB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  build-essential
0 upgraded, 1 newly installed, 0 to remove and 255 not upgraded.
Need to get 4928 B of archives.
After this operation, 17.4 kB of additional disk space will be used.
Get:1 file:/etc/apt/blacksmith-ubuntu-mirrors.txt Mirrorlist [194 B]
Get:2 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 build-essential amd64 12.10ubuntu1 [4928 B]
Fetched 4928 B in 0s (43.8 kB/s)
Selecting previously unselected package build-essential.
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 207973 files and directories currently installed.)
Preparing to unpack .../build-essential_12.10ubuntu1_amd64.deb ...
Unpacking build-essential (12.10ubuntu1) ...
Setting up build-essential (12.10ubuntu1) ...

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
/usr/bin/cc
Prepare all required actions
▸ Run ./.github/actions/setup-apt-mirrors
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
##[start-action display=Run # Replace the existing Blacksmith mirror list as well as direct sources.;id=__self.__run]
▸ Run # Replace the existing Blacksmith mirror list as well as direct sources.
# Replace the existing Blacksmith mirror list as well as direct sources.
printf '%s\tpriority:%s\n' \
  https://archive.ubuntu.com/ubuntu 1 \
  https://mirrors.edge.kernel.org/ubuntu 2 \
  https://mirror.math.princeton.edu/pub/ubuntu 3 \
  | sudo tee /etc/apt/blacksmith-ubuntu-mirrors.txt > /dev/null

# APT's mirror transport retries each file against the next server.
sudo find /etc/apt -maxdepth 2 -type f \( -name '*.list' -o -name '*.sources' \) \
  -exec sed -i -E \
  's#https?://(([^/]+\.)?archive|security)\.ubuntu\.com/ubuntu/?#mirror+file:/etc/apt/blacksmith-ubuntu-mirrors.txt#g' {} +

# Move on to a fallback before an unreachable server exhausts the job.
printf '%s\n' 'Acquire::http::Timeout "15";' 'Acquire::https::Timeout "15";' \
  | sudo tee /etc/apt/apt.conf.d/80-mirror-timeouts > /dev/null
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
##[end-action id=__self.__run;outcome=success;conclusion=success;duration_ms=39]
▸ Run sudo sed -i 's|http://|https://|g' /etc/apt/blacksmith-ubuntu-mirrors.txt /etc/apt/sources.list.d/ubuntu.sources
sudo sed -i 's|http://|https://|g' /etc/apt/blacksmith-ubuntu-mirrors.txt /etc/apt/sources.list.d/ubuntu.sources
(
  set +e
  sudo apt-get update && sudo apt-get install -y libsecret-1-dev pkg-config
  echo "$?" > "$RUNNER_TEMP/apt-status"
) > "$RUNNER_TEMP/apt.log" 2>&1 < /dev/null &
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
Prepare all required actions
Getting action download info
Download action repository 'voidzero-dev/setup-vp@v1' (SHA:250f29ce396baf5e8f24498e17c0dfdebabc26eb)
▸ Run ./.github/actions/setup-ci-deps
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
##[start-action display=Resolve Vite+ version;id=__self_2.vp]
▸ Run echo "version=$(sed -nE 's/^  vite-plus: ([0-9][^ ]*)$/\1/p' pnpm-workspace.yaml)" >> "$GITHUB_OUTPUT"
echo "version=$(sed -nE 's/^  vite-plus: ([0-9][^ ]*)$/\1/p' pnpm-workspace.yaml)" >> "$GITHUB_OUTPUT"
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
##[end-action id=__self_2.vp;outcome=success;conclusion=success;duration_ms=9]
##[start-action display=Cache Vite+;id=__self_2.__actions_cache]
▸ Run actions/cache@v6
with:
  path: ~/.vite-plus
  key: vite-plus-home-v1-Linux-X64-1.3.0
  enableCrossOsArchive: false
  fail-on-cache-miss: false
  lookup-only: false
  save-always: false
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
Cache hit for: vite-plus-home-v1-Linux-X64-1.3.0
Received 101854644 of 101854644 (100.0%), 630.8 MBs/sec
Cache Size: ~97 MB (101854644 B)
[command]/usr/bin/tar -xf /home/runner/_work/_temp/0917a085-7e86-424a-a5e7-0a0c7025d9c8/cache.tzst -P -C /home/runner/_work/t3code/t3code --use-compress-program unzstd
Cache restored successfully
Cache restored from key: vite-plus-home-v1-Linux-X64-1.3.0
##[end-action id=__self_2.__actions_cache;outcome=success;conclusion=success;duration_ms=931]
##[start-action display=Setup Vite+;id=__self_2.__voidzero-dev_setup-vp]
▸ Run voidzero-dev/setup-vp@v1
with:
  node-version-file: package.json
  cache: false
  run-install: false
  sfw: false
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
Resolved Node.js version '^24.13.1' from package.json
Resolved Vite+ version '1.3.0' from package.json
Installing Vite+@1.3.0...
[command]/usr/bin/bash -c set -o pipefail; curl -fsSL --connect-timeout 5 --max-time 15 https://viteplus.dev/install.sh | bash
info: installing vite-plus@1.3.0...
info: Preparing Node.js and pnpm...
info: Installing dependencies...
✓ Dependencies installed.
Setup:
  Preparing vite-plus environment.

Created Shims:
  /home/runner/.vite-plus/bin/node
  /home/runner/.vite-plus/bin/npm
  /home/runner/.vite-plus/bin/npx
  /home/runner/.vite-plus/bin/pnpm
  /home/runner/.vite-plus/bin/pnpx
  /home/runner/.vite-plus/bin/pn
  /home/runner/.vite-plus/bin/pnx
  /home/runner/.vite-plus/bin/yarn
  /home/runner/.vite-plus/bin/yarnpkg
  /home/runner/.vite-plus/bin/bun
  /home/runner/.vite-plus/bin/bunx
  /home/runner/.vite-plus/bin/vpx
  /home/runner/.vite-plus/bin/vpr

Next Steps:
  For Bash, run:
  . "/home/runner/.vite-plus/env"

  If your ~/.bashrc does not already load Vite+, add this command for interactive non-login Bash sessions.
  Login Bash shells must also load the command through their login profile.

  Restart an already-running IDE to load its environment. Run `vp env doctor` to verify.
✓ Vite+ setup complete.
Setting up Node.js ^24.13.1 via vp env use...
[command]/home/runner/.vite-plus/bin/vp env use ^24.13.1
Using Node.js v24.22.0 (resolved from ^24.13.1)
vp v1.3.0

Local vite-plus:
  vite-plus  Not found

Tools:
  vite             Not found
  rolldown         Not found
  vitest           Not found
  oxfmt            Not found
  oxlint           Not found
  oxlint-tsgolint  Not found
  tsdown           Not found

Environment:
  Package manager  pnpm v12.14.0
  Node.js          v24.22.0 (.session-node-version)
##[end-action id=__self_2.__voidzero-dev_setup-vp;outcome=success;conclusion=success;duration_ms=1818]
##[start-action display=Resolve pnpm store path;id=__self_2.pnpm_store]
▸ Run store_path="$(vp pm cache dir)"
store_path="$(vp pm cache dir)"
echo "path=$store_path" >> "$GITHUB_OUTPUT"
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
##[end-action id=__self_2.pnpm_store;outcome=success;conclusion=success;duration_ms=435]
##[start-action display=Cache full pnpm store;id=__self_2.__actions_cache_2]
▸ Run actions/cache@v6
with:
  path: /home/runner/.local/share/pnpm/store/v11
  key: pnpm-full-v1-Linux-X64-e73850f83f24b1be2e93d2be6ac7270a9cc5f2a0ec8f29258a0db236db1df366
  restore-keys: pnpm-full-v1-Linux-X64-

  enableCrossOsArchive: false
  fail-on-cache-miss: false
  lookup-only: false
  save-always: false
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
Cache hit for: pnpm-full-v1-Linux-X64-e73850f83f24b1be2e93d2be6ac7270a9cc5f2a0ec8f29258a0db236db1df366
Received 570425344 of 974216105 (58.6%), 541.8 MBs/sec
Received 974216105 of 974216105 (100.0%), 527.9 MBs/sec
Cache Size: ~929 MB (974216105 B)
[command]/usr/bin/tar -xf /home/runner/_work/_temp/a056315a-7890-4984-baa7-7ff672ebede7/cache.tzst -P -C /home/runner/_work/t3code/t3code --use-compress-program unzstd
Cache restored successfully
Cache restored from key: pnpm-full-v1-Linux-X64-e73850f83f24b1be2e93d2be6ac7270a9cc5f2a0ec8f29258a0db236db1df366
##[end-action id=__self_2.__actions_cache_2;outcome=success;conclusion=success;duration_ms=8135]
##[start-action display=Install dependencies;id=__self_2.__run]
▸ Run vp install
vp install
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
Scope: all 33 workspace projects
? Verifying lockfile against supply-chain policies (2160 entries)...
Packages are hard linked from the content-addressable store to the virtual store.
  Content-addressable store is at: /home/runner/.local/share/pnpm/store/v11
  Virtual store is at:             node_modules/.pnpm
✓ Lockfile passes supply-chain policies (2160 entries in 2.7s)
Lockfile is up to date, resolution step is skipped
Packages: +1766
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 1766, reused 1763, downloaded 0, added 1766, done
. prepare$ effect-tsgo patch && vp config --no-agent
. prepare: Patched typescript at /home/runner/_work/t3code/t3code/node_modules/.pnpm/@typescript+typescript-linux-x64@7.0.2/node_modules/@typescript/typescript-linux-x64/lib/tsc
. prepare: Done

devDependencies:
+ @coderabbitai/config 1.1.0
+ @effect/tsgo 0.51.1
+ @shadcn/lint 0.1.5
+ @types/node 24.12.4
+ knip 6.34.0
+ tsc-rs 0.7.0
+ typescript 7.0.2
+ vite-plus 1.3.0

Done in 4.6s using pnpm v12.14.0
##[end-action id=__self_2.__run;outcome=success;conclusion=success;duration_ms=4603]
▸ Run actions/cache@v6
with:
  path: ~/.cache/electron
  key: electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309
  enableCrossOsArchive: false
  fail-on-cache-miss: false
  lookup-only: false
  save-always: false
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
Cache hit for: electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309
Received 122906203 of 122906203 (100.0%), 633.6 MBs/sec
Cache Size: ~117 MB (122906203 B)
[command]/usr/bin/tar -xf /home/runner/_work/_temp/01333cbc-560f-4c52-a7c0-890a1b37cb24/cache.tzst -P -C /home/runner/_work/t3code/t3code --use-compress-program unzstd
Cache restored successfully
Cache restored from key: electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309
▸ Run vp run --filter @t3tools/desktop ensure:electron
vp run --filter @t3tools/desktop ensure:electron
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
~/apps/desktop$ node scripts/ensure-electron-runtime.mjs ⊘ cache disabled
/home/runner/_work/t3code/t3code/node_modules/.pnpm/electron@44.9.3/node_modules/electron/dist/electron

▸ Run python3 -B .github/scripts/stage-preview-bundle.test.py
python3 -B .github/scripts/stage-preview-bundle.test.py
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
......
----------------------------------------------------------------------
Ran 6 tests in 0.004s

OK
▸ Run node --test .github/scripts/check-nightly-release.test.cjs
node --test .github/scripts/check-nightly-release.test.cjs
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
✔ allows preview releases from any branch without consulting main (0.572353ms)
✔ rejects a manual stable release from a feature branch (0.284734ms)
✔ rejects a manual nightly release from a feature branch (0.521087ms)
✔ rejects a release commit that is behind from main (0.157004ms)
✔ rejects a release commit that is diverged from main (0.072336ms)
✔ releases the first nightly when no nightly is published (0.382307ms)
✔ uses publication time, not release order or the tagged commit date (0.154259ms)
✔ ignores stable releases and drafts when checking the gap (0.084489ms)
✔ fails instead of releasing when GitHub cannot supply release state (0.118272ms)
✔ skips a candidate commit that is behind relative to the last nightly (0.149671ms)
✔ skips a candidate commit that is diverged relative to the last nightly (0.064811ms)
✔ stable releases resolve the commit of the newest published nightly (0.594464ms)
✔ stable releases derive the version from legacy nightly tags (0.150121ms)
ℹ tests 13
ℹ suites 0
ℹ pass 13
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 37.802979
▸ Run until test -s "$RUNNER_TEMP/apt-status"; do sleep 1; done
until test -s "$RUNNER_TEMP/apt-status"; do sleep 1; done
cat "$RUNNER_TEMP/apt.log"
exit "$(cat "$RUNNER_TEMP/apt-status")"
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
blacksmith: the apt mirror lists changed since the package indexes were staged; discarding the staged indexes
Get:1 file:/etc/apt/blacksmith-ubuntu-mirrors.txt Mirrorlist [151 B]
Hit:6 https://packages.microsoft.com/repos/azure-cli noble InRelease
Hit:7 https://packages.microsoft.com/ubuntu/24.04/prod noble InRelease
Hit:8 https://dl.google.com/linux/chrome-stable/deb stable InRelease
Get:2 https://archive.ubuntu.com/ubuntu noble InRelease [256 kB]
Get:3 https://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Get:4 https://archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
Get:5 https://archive.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Get:9 https://archive.ubuntu.com/ubuntu noble/main amd64 Packages [1401 kB]
Get:10 https://archive.ubuntu.com/ubuntu noble/main Translation-en [513 kB]
Get:11 https://archive.ubuntu.com/ubuntu noble/main amd64 Components [464 kB]
Get:12 https://archive.ubuntu.com/ubuntu noble/main amd64 c-n-f Metadata [30.5 kB]
Get:13 https://archive.ubuntu.com/ubuntu noble/universe amd64 Packages [15.0 MB]
Get:14 https://archive.ubuntu.com/ubuntu noble/universe Translation-en [5982 kB]
Get:15 https://archive.ubuntu.com/ubuntu noble/universe amd64 Components [3871 kB]
Get:16 https://archive.ubuntu.com/ubuntu noble/universe amd64 c-n-f Metadata [301 kB]
Get:17 https://archive.ubuntu.com/ubuntu noble/restricted amd64 Packages [93.9 kB]
Get:18 https://archive.ubuntu.com/ubuntu noble/restricted Translation-en [18.7 kB]
Get:19 https://archive.ubuntu.com/ubuntu noble/restricted amd64 c-n-f Metadata [416 B]
Get:20 https://archive.ubuntu.com/ubuntu noble/multiverse amd64 Packages [269 kB]
Get:21 https://archive.ubuntu.com/ubuntu noble/multiverse Translation-en [118 kB]
Get:22 https://archive.ubuntu.com/ubuntu noble/multiverse amd64 Components [35.0 kB]
Get:23 https://archive.ubuntu.com/ubuntu noble/multiverse amd64 c-n-f Metadata [8328 B]
Get:24 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [1400 kB]
Get:25 https://archive.ubuntu.com/ubuntu noble-updates/main Translation-en [309 kB]
Get:26 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 Components [181 kB]
Get:27 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 c-n-f Metadata [17.7 kB]
Get:28 https://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [1706 kB]
Get:29 https://archive.ubuntu.com/ubuntu noble-updates/universe Translation-en [342 kB]
Get:30 https://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Components [388 kB]
Get:31 https://archive.ubuntu.com/ubuntu noble-updates/universe amd64 c-n-f Metadata [34.9 kB]
Get:32 https://archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Packages [1805 kB]
Get:33 https://archive.ubuntu.com/ubuntu noble-updates/restricted Translation-en [411 kB]
Get:34 https://archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Components [212 B]
Get:35 https://archive.ubuntu.com/ubuntu noble-updates/restricted amd64 c-n-f Metadata [456 B]
Get:36 https://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Packages [50.7 kB]
Get:37 https://archive.ubuntu.com/ubuntu noble-updates/multiverse Translation-en [14.0 kB]
Get:38 https://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Components [940 B]
Get:39 https://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 c-n-f Metadata [656 B]
Get:40 https://archive.ubuntu.com/ubuntu noble-backports/main amd64 Packages [40.6 kB]
Get:41 https://archive.ubuntu.com/ubuntu noble-backports/main Translation-en [9172 B]
Get:42 https://archive.ubuntu.com/ubuntu noble-backports/main amd64 Components [5744 B]
Get:43 https://archive.ubuntu.com/ubuntu noble-backports/main amd64 c-n-f Metadata [368 B]
Get:44 https://archive.ubuntu.com/ubuntu noble-backports/universe amd64 Packages [31.0 kB]
Get:45 https://archive.ubuntu.com/ubuntu noble-backports/universe Translation-en [18.6 kB]
Get:46 https://archive.ubuntu.com/ubuntu noble-backports/universe amd64 Components [12.6 kB]
Get:47 https://archive.ubuntu.com/ubuntu noble-backports/universe amd64 c-n-f Metadata [1588 B]
Get:48 https://archive.ubuntu.com/ubuntu noble-backports/restricted amd64 Components [212 B]
Get:49 https://archive.ubuntu.com/ubuntu noble-backports/restricted amd64 c-n-f Metadata [116 B]
Get:50 https://archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Packages [748 B]
Get:51 https://archive.ubuntu.com/ubuntu noble-backports/multiverse Translation-en [340 B]
Get:52 https://archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Components [212 B]
Get:53 https://archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 c-n-f Metadata [116 B]
Get:54 https://archive.ubuntu.com/ubuntu noble-security/main amd64 Packages [1145 kB]
Get:55 https://archive.ubuntu.com/ubuntu noble-security/main Translation-en [231 kB]
Get:56 https://archive.ubuntu.com/ubuntu noble-security/main amd64 Components [46.4 kB]
Get:57 https://archive.ubuntu.com/ubuntu noble-security/main amd64 c-n-f Metadata [11.9 kB]
Get:58 https://archive.ubuntu.com/ubuntu noble-security/universe amd64 Packages [1222 kB]
Get:59 https://archive.ubuntu.com/ubuntu noble-security/universe Translation-en [246 kB]
Get:60 https://archive.ubuntu.com/ubuntu noble-security/universe amd64 Components [76.3 kB]
Get:61 https://archive.ubuntu.com/ubuntu noble-security/universe amd64 c-n-f Metadata [24.2 kB]
Get:62 https://archive.ubuntu.com/ubuntu noble-security/restricted amd64 Packages [1713 kB]
Get:63 https://archive.ubuntu.com/ubuntu noble-security/restricted Translation-en [392 kB]
Get:64 https://archive.ubuntu.com/ubuntu noble-security/restricted amd64 Components [212 B]
Get:65 https://archive.ubuntu.com/ubuntu noble-security/restricted amd64 c-n-f Metadata [444 B]
Get:66 https://archive.ubuntu.com/ubuntu noble-security/multiverse amd64 Packages [45.4 kB]
Get:67 https://archive.ubuntu.com/ubuntu noble-security/multiverse Translation-en [12.1 kB]
Get:68 https://archive.ubuntu.com/ubuntu noble-security/multiverse amd64 Components [208 B]
Get:69 https://archive.ubuntu.com/ubuntu noble-security/multiverse amd64 c-n-f Metadata [468 B]
Fetched 40.7 MB in 7s (5773 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
pkg-config is already the newest version (1.8.1-2build1).
The following additional packages will be installed:
  bsdextrautils bsdutils eject fdisk gir1.2-glib-2.0 gir1.2-secret-1
  libblkid-dev libblkid1 libfdisk1 libgcrypt20 libgcrypt20-dev
  libgirepository-2.0-0 libglib2.0-0t64 libglib2.0-bin libglib2.0-data
  libglib2.0-dev libglib2.0-dev-bin libgpg-error-dev libmount-dev libmount1
  libsecret-1-0 libsecret-common libselinux1-dev libsepol-dev libsmartcols1
  libuuid1 mount util-linux uuid-dev uuid-runtime
Suggested packages:
  rng-tools libgcrypt20-doc low-memory-monitor gir1.2-glib-2.0-dev
  libglib2.0-doc libxml2-utils nfs-common util-linux-extra util-linux-locales
The following NEW packages will be installed:
  gir1.2-secret-1 libblkid-dev libgcrypt20-dev libgirepository-2.0-0
  libglib2.0-dev libglib2.0-dev-bin libgpg-error-dev libmount-dev
  libsecret-1-0 libsecret-1-dev libsecret-common libselinux1-dev libsepol-dev
  uuid-dev
The following packages will be upgraded:
  bsdextrautils bsdutils eject fdisk gir1.2-glib-2.0 libblkid1 libfdisk1
  libgcrypt20 libglib2.0-0t64 libglib2.0-bin libglib2.0-data libmount1
  libsmartcols1 libuuid1 mount util-linux uuid-runtime
17 upgraded, 14 newly installed, 0 to remove and 238 not upgraded.
Need to get 8378 kB of archives.
After this operation, 23.0 MB of additional disk space will be used.
Get:1 file:/etc/apt/blacksmith-ubuntu-mirrors.txt Mirrorlist [151 B]
Get:2 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 bsdutils amd64 1:2.39.3-9ubuntu6.6 [96.4 kB]
Get:3 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 util-linux amd64 2.39.3-9ubuntu6.6 [1128 kB]
Get:4 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 mount amd64 2.39.3-9ubuntu6.6 [118 kB]
Get:5 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libsmartcols1 amd64 2.39.3-9ubuntu6.6 [66.3 kB]
Get:6 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libuuid1 amd64 2.39.3-9ubuntu6.6 [36.6 kB]
Get:7 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 uuid-runtime amd64 2.39.3-9ubuntu6.6 [33.1 kB]
Get:8 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libblkid1 amd64 2.39.3-9ubuntu6.6 [124 kB]
Get:9 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libgcrypt20 amd64 1.10.3-2ubuntu0.2 [536 kB]
Get:10 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libmount1 amd64 2.39.3-9ubuntu6.6 [134 kB]
Get:11 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 eject amd64 2.39.3-9ubuntu6.6 [26.3 kB]
Get:12 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libglib2.0-data all 2.80.0-6ubuntu3.10 [50.2 kB]
Get:13 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libglib2.0-bin amd64 2.80.0-6ubuntu3.10 [97.9 kB]
Get:14 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 gir1.2-glib-2.0 amd64 2.80.0-6ubuntu3.10 [183 kB]
Get:15 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libglib2.0-0t64 amd64 2.80.0-6ubuntu3.10 [1548 kB]
Get:16 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libfdisk1 amd64 2.39.3-9ubuntu6.6 [146 kB]
Get:17 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 bsdextrautils amd64 2.39.3-9ubuntu6.6 [73.7 kB]
Get:18 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 fdisk amd64 2.39.3-9ubuntu6.6 [122 kB]
Get:19 https://archive.ubuntu.com/ubuntu noble/main amd64 libsecret-common all 0.21.4-1build3 [4962 B]
Get:20 https://archive.ubuntu.com/ubuntu noble/main amd64 libsecret-1-0 amd64 0.21.4-1build3 [116 kB]
Get:21 https://archive.ubuntu.com/ubuntu noble/main amd64 gir1.2-secret-1 amd64 0.21.4-1build3 [9424 B]
Get:22 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libgpg-error-dev amd64 1.47-3build2.1 [128 kB]
Get:23 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libgcrypt20-dev amd64 1.10.3-2ubuntu0.2 [596 kB]
Get:24 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libgirepository-2.0-0 amd64 2.80.0-6ubuntu3.10 [73.5 kB]
Get:25 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libglib2.0-dev-bin amd64 2.80.0-6ubuntu3.10 [138 kB]
Get:26 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 uuid-dev amd64 2.39.3-9ubuntu6.6 [33.5 kB]
Get:27 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libblkid-dev amd64 2.39.3-9ubuntu6.6 [205 kB]
Get:28 https://archive.ubuntu.com/ubuntu noble/main amd64 libsepol-dev amd64 3.5-2build1 [384 kB]
Get:29 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libselinux1-dev amd64 3.5-2ubuntu2.1 [164 kB]
Get:30 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libmount-dev amd64 2.39.3-9ubuntu6.6 [14.9 kB]
Get:31 https://archive.ubuntu.com/ubuntu noble-updates/main amd64 libglib2.0-dev amd64 2.80.0-6ubuntu3.10 [1861 kB]
Get:32 https://archive.ubuntu.com/ubuntu noble/universe amd64 libsecret-1-dev amd64 0.21.4-1build3 [129 kB]
Fetched 8378 kB in 1s (11.4 MB/s)
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 207982 files and directories currently installed.)
Preparing to unpack .../bsdutils_1%3a2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking bsdutils (1:2.39.3-9ubuntu6.6) over (1:2.39.3-9ubuntu6.5) ...
Setting up bsdutils (1:2.39.3-9ubuntu6.6) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 207982 files and directories currently installed.)
Preparing to unpack .../util-linux_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking util-linux (2.39.3-9ubuntu6.6) over (2.39.3-9ubuntu6.5) ...
Setting up util-linux (2.39.3-9ubuntu6.6) ...
update-alternatives: warning: forcing reinstallation of alternative /usr/bin/less because link group pager is broken
update-alternatives: warning: skip creation of /usr/share/man/man1/pager.1.gz because associated file /usr/share/man/man1/less.1.gz (of link group pager) doesn't exist
fstrim.service is a disabled or a static unit not running, not starting it.
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 207982 files and directories currently installed.)
Preparing to unpack .../mount_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking mount (2.39.3-9ubuntu6.6) over (2.39.3-9ubuntu6.5) ...
Preparing to unpack .../libsmartcols1_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking libsmartcols1:amd64 (2.39.3-9ubuntu6.6) over (2.39.3-9ubuntu6.5) ...
Setting up libsmartcols1:amd64 (2.39.3-9ubuntu6.6) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 207982 files and directories currently installed.)
Preparing to unpack .../libuuid1_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking libuuid1:amd64 (2.39.3-9ubuntu6.6) over (2.39.3-9ubuntu6.5) ...
Setting up libuuid1:amd64 (2.39.3-9ubuntu6.6) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 207982 files and directories currently installed.)
Preparing to unpack .../uuid-runtime_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking uuid-runtime (2.39.3-9ubuntu6.6) over (2.39.3-9ubuntu6.5) ...
Preparing to unpack .../libblkid1_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking libblkid1:amd64 (2.39.3-9ubuntu6.6) over (2.39.3-9ubuntu6.5) ...
Setting up libblkid1:amd64 (2.39.3-9ubuntu6.6) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 207982 files and directories currently installed.)
Preparing to unpack .../libgcrypt20_1.10.3-2ubuntu0.2_amd64.deb ...
Unpacking libgcrypt20:amd64 (1.10.3-2ubuntu0.2) over (1.10.3-2ubuntu0.1) ...
Setting up libgcrypt20:amd64 (1.10.3-2ubuntu0.2) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 207982 files and directories currently installed.)
Preparing to unpack .../libmount1_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking libmount1:amd64 (2.39.3-9ubuntu6.6) over (2.39.3-9ubuntu6.5) ...
Setting up libmount1:amd64 (2.39.3-9ubuntu6.6) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 207982 files and directories currently installed.)
Preparing to unpack .../00-eject_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking eject (2.39.3-9ubuntu6.6) over (2.39.3-9ubuntu6.5) ...
Preparing to unpack .../01-libglib2.0-data_2.80.0-6ubuntu3.10_all.deb ...
Unpacking libglib2.0-data (2.80.0-6ubuntu3.10) over (2.80.0-6ubuntu3.8) ...
Preparing to unpack .../02-libglib2.0-bin_2.80.0-6ubuntu3.10_amd64.deb ...
Unpacking libglib2.0-bin (2.80.0-6ubuntu3.10) over (2.80.0-6ubuntu3.8) ...
Preparing to unpack .../03-gir1.2-glib-2.0_2.80.0-6ubuntu3.10_amd64.deb ...
Unpacking gir1.2-glib-2.0:amd64 (2.80.0-6ubuntu3.10) over (2.80.0-6ubuntu3.8) ...
Preparing to unpack .../04-libglib2.0-0t64_2.80.0-6ubuntu3.10_amd64.deb ...
Unpacking libglib2.0-0t64:amd64 (2.80.0-6ubuntu3.10) over (2.80.0-6ubuntu3.8) ...
Preparing to unpack .../05-libfdisk1_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking libfdisk1:amd64 (2.39.3-9ubuntu6.6) over (2.39.3-9ubuntu6.5) ...
Preparing to unpack .../06-bsdextrautils_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking bsdextrautils (2.39.3-9ubuntu6.6) over (2.39.3-9ubuntu6.5) ...
Preparing to unpack .../07-fdisk_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking fdisk (2.39.3-9ubuntu6.6) over (2.39.3-9ubuntu6.5) ...
Selecting previously unselected package libsecret-common.
Preparing to unpack .../08-libsecret-common_0.21.4-1build3_all.deb ...
Unpacking libsecret-common (0.21.4-1build3) ...
Selecting previously unselected package libsecret-1-0:amd64.
Preparing to unpack .../09-libsecret-1-0_0.21.4-1build3_amd64.deb ...
Unpacking libsecret-1-0:amd64 (0.21.4-1build3) ...
Selecting previously unselected package gir1.2-secret-1:amd64.
Preparing to unpack .../10-gir1.2-secret-1_0.21.4-1build3_amd64.deb ...
Unpacking gir1.2-secret-1:amd64 (0.21.4-1build3) ...
Selecting previously unselected package libgpg-error-dev.
Preparing to unpack .../11-libgpg-error-dev_1.47-3build2.1_amd64.deb ...
Unpacking libgpg-error-dev (1.47-3build2.1) ...
Selecting previously unselected package libgcrypt20-dev.
Preparing to unpack .../12-libgcrypt20-dev_1.10.3-2ubuntu0.2_amd64.deb ...
Unpacking libgcrypt20-dev (1.10.3-2ubuntu0.2) ...
Selecting previously unselected package libgirepository-2.0-0:amd64.
Preparing to unpack .../13-libgirepository-2.0-0_2.80.0-6ubuntu3.10_amd64.deb ...
Unpacking libgirepository-2.0-0:amd64 (2.80.0-6ubuntu3.10) ...
Selecting previously unselected package libglib2.0-dev-bin.
Preparing to unpack .../14-libglib2.0-dev-bin_2.80.0-6ubuntu3.10_amd64.deb ...
Unpacking libglib2.0-dev-bin (2.80.0-6ubuntu3.10) ...
Selecting previously unselected package uuid-dev:amd64.
Preparing to unpack .../15-uuid-dev_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking uuid-dev:amd64 (2.39.3-9ubuntu6.6) ...
Selecting previously unselected package libblkid-dev:amd64.
Preparing to unpack .../16-libblkid-dev_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking libblkid-dev:amd64 (2.39.3-9ubuntu6.6) ...
Selecting previously unselected package libsepol-dev:amd64.
Preparing to unpack .../17-libsepol-dev_3.5-2build1_amd64.deb ...
Unpacking libsepol-dev:amd64 (3.5-2build1) ...
Selecting previously unselected package libselinux1-dev:amd64.
Preparing to unpack .../18-libselinux1-dev_3.5-2ubuntu2.1_amd64.deb ...
Unpacking libselinux1-dev:amd64 (3.5-2ubuntu2.1) ...
Selecting previously unselected package libmount-dev:amd64.
Preparing to unpack .../19-libmount-dev_2.39.3-9ubuntu6.6_amd64.deb ...
Unpacking libmount-dev:amd64 (2.39.3-9ubuntu6.6) ...
Selecting previously unselected package libglib2.0-dev:amd64.
Preparing to unpack .../20-libglib2.0-dev_2.80.0-6ubuntu3.10_amd64.deb ...
Unpacking libglib2.0-dev:amd64 (2.80.0-6ubuntu3.10) ...
Selecting previously unselected package libsecret-1-dev:amd64.
Preparing to unpack .../21-libsecret-1-dev_0.21.4-1build3_amd64.deb ...
Unpacking libsecret-1-dev:amd64 (0.21.4-1build3) ...
Setting up bsdextrautils (2.39.3-9ubuntu6.6) ...
Setting up eject (2.39.3-9ubuntu6.6) ...
Setting up libglib2.0-0t64:amd64 (2.80.0-6ubuntu3.10) ...
Setting up libglib2.0-data (2.80.0-6ubuntu3.10) ...
Setting up libgpg-error-dev (1.47-3build2.1) ...
Setting up uuid-dev:amd64 (2.39.3-9ubuntu6.6) ...
Setting up libsepol-dev:amd64 (3.5-2build1) ...
Setting up gir1.2-glib-2.0:amd64 (2.80.0-6ubuntu3.10) ...
Setting up libfdisk1:amd64 (2.39.3-9ubuntu6.6) ...
Setting up mount (2.39.3-9ubuntu6.6) ...
Setting up uuid-runtime (2.39.3-9ubuntu6.6) ...
uuidd.service is a disabled or a static unit not running, not starting it.
Setting up libsecret-common (0.21.4-1build3) ...
Setting up libglib2.0-dev-bin (2.80.0-6ubuntu3.10) ...
Setting up libblkid-dev:amd64 (2.39.3-9ubuntu6.6) ...
Setting up libgirepository-2.0-0:amd64 (2.80.0-6ubuntu3.10) ...
Setting up libselinux1-dev:amd64 (3.5-2ubuntu2.1) ...
Setting up libglib2.0-bin (2.80.0-6ubuntu3.10) ...
Setting up fdisk (2.39.3-9ubuntu6.6) ...
Setting up libsecret-1-0:amd64 (0.21.4-1build3) ...
Setting up gir1.2-secret-1:amd64 (0.21.4-1build3) ...
Setting up libgcrypt20-dev (1.10.3-2ubuntu0.2) ...
Setting up libmount-dev:amd64 (2.39.3-9ubuntu6.6) ...
Setting up libglib2.0-dev:amd64 (2.80.0-6ubuntu3.10) ...
Setting up libsecret-1-dev:amd64 (0.21.4-1build3) ...
Processing triggers for libc-bin (2.39-0ubuntu8.8) ...
Processing triggers for man-db (2.12.0-4build2) ...
Not building database; man-db/auto-update is not 'true'.
Processing triggers for install-info (7.1-3build2) ...

Restarting services...
 systemctl restart irqbalance.service packagekit.service php8.3-fpm.service polkit.service rsyslog.service systemd-journald.service systemd-manager.service systemd-networkd.service systemd-resolved.service systemd-udevd.service udisks2.service
Failed to restart systemd-manager.service: Unit systemd-manager.service not found.

Service restarts being deferred:
 systemctl restart ModemManager.service
 systemctl restart dbus.service
 systemctl restart getty@tty1.service
 systemctl restart networkd-dispatcher.service
 systemctl restart serial-getty@ttyS0.service
 systemctl restart setup_and_run_blacksmith.service
 systemctl restart systemd-logind.service

No containers need to be restarted.

User sessions running outdated binaries:
 runner @ user manager service: systemd[1862]

No VM guests are running outdated hypervisor (qemu) binaries on this host.
▸ Run filters=(--filter '!t3' --filter '!@t3tools/monorepo' --filter '!@t3tools/web')
filters=(--filter '!t3' --filter '!@t3tools/monorepo' --filter '!@t3tools/web')
if [[ -n "$TEST_PACKAGES" ]]; then
  filters=()
  for package in $TEST_PACKAGES; do filters+=(--filter "$package"); done
fi
vp run --parallel --concurrency-limit 4 "${filters[@]}" test
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  GITHUB_REPO_NAME: pingdotgg/t3code
  TEST_PACKAGES: @t3tools/desktop @t3tools/mobile t3code-relay @t3tools/client-runtime @t3tools/provider-pi @t3tools/scripts
~/apps/desktop$ vp test run --passWithNoTests ⊘ cache disabled
~/packages/provider-pi$ vp test run --config ../../vite.config.ts --dir . ⊘ cache disabled
~/packages/client-runtime$ vp test run ⊘ cache disabled
~/apps/mobile$ vp test run --project unit --project react ⊘ cache disabled

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


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


 RUN  v5.0.5 /home/runner/_work/t3code/t3code/apps/mobile


 RUN  v5.0.5 /home/runner/_work/t3code/t3code/apps/desktop

 ✓ src/server/mcpExtensionSource.test.ts (21 tests) 334ms
 ✓  react  src/native/NativeHeaderToolbar.test.tsx (4 tests) 51ms
 ✓ src/preview/BrowserImport/Sources.test.ts (25 tests) 390ms
 ✓  react  src/components/ui/Dialog.android.test.tsx (1 test) 56ms
 ✓ src/server/commands.test.ts (1 test) 3ms
 ✓ src/server/mcpInjection.test.ts (3 tests) 4ms
 ✓ src/server/status.test.ts (6 tests) 49ms
 ✓ src/server/textGeneration.test.ts (1 test) 16ms
 ✓ src/server/driver.test.ts (5 tests) 97ms
 ✓  react  src/features/settings/components/BranchNamingSettings.test.tsx (4 tests) 34ms
 ✓ src/app/DesktopLinuxUrlHandler.test.ts (13 tests) 67ms
 ✓ src/authorization/layer.test.ts (23 tests) 183ms
 ✓  react  src/state/use-selected-thread-git-actions.test.tsx (1 test) 16ms
 ✓ src/state/runtime.test.ts (23 tests) 123ms
 ✓ src/connection/supervisor.test.ts (30 tests) 186ms
 ✓ src/rpc/session.test.ts (14 tests) 364ms
 ✓ src/connection/registry.test.ts (41 tests) 287ms
 ✓ src/window/DesktopWindow.test.ts (20 tests) 200ms
 ✓ src/backend/DesktopBackendConfiguration.test.ts (17 tests) 191ms
 ✓ src/preview/Manager.test.ts (55 tests) 540ms
 ✓  unit  src/lib/threadActivity.test.ts (35 tests) 107ms
 ✓ src/updates/DesktopUpdates.test.ts (27 tests) 315ms
 ✓ src/updates/DesktopRemoteUpdates.test.ts (17 tests) 369ms
 ✓ src/state/server.test.ts (19 tests) 94ms
 ✓ src/state/threads-sync.test.ts (24 tests) 334ms
 ✓ src/operations/commands.test.ts (13 tests) 37ms
 ✓ src/snapShot/DesktopSnapShot.test.ts (49 tests) 495ms
 ✓  unit  src/lib/modelOptions.test.ts (29 tests) 38ms
 ✓ src/backend/DesktopBackendManager.test.ts (7 tests) 116ms
 ✓ src/state/pullRequests.test.ts (53 tests) 1362ms
   ✓ returns a successful mutation when source invalidation stalls 1018ms
 ✓ src/voice-input/controller.test.ts (22 tests) 41ms
 ❯  unit  src/features/threads/threadListV2.test.ts (57 tests | 1 failed) 114ms
   ✓ resolveThreadListV2SnoozeMenuSelection (1)
     ✓ recomputes presets that remain available instead of using old timestamps 32ms
   ❯ resolveThreadListV2Status (4)
     ✓ presents decoded thread waits as Waiting while preserving requests and older servers 11ms
     × shows cached work from an unavailable environment as Offline, not Working 16ms
     ✓ presents an unseen completion with a command roster as ready 0ms
     ✓ presents an unseen completion with a monitor roster as waiting 0ms
   ✓ queued messages keep a settled thread active (1)
     ✓ lists the thread in the active block instead of the settled shelf 1ms
   ✓ sortThreadsForListV2 (1)
     ✓ honors a saved active order and leaves new threads above it 0ms
   ✓ getThreadListV2OrderedSection (1)
     ✓ uses each saved order and excludes settled, snoozed, and archived rows 0ms
   ✓ buildThreadListV2Items (9)
     ✓ hides snoozed threads and counts them — visibility parity with web 0ms
     ✓ moves a settled pinned thread into the settled shelf — parity with web (#7969) 0ms
     ✓ snooze hides a pinned thread and wake restores it to the pinned block 8ms
     ✓ builds snoozed rows between active and settled when the shelf is expanded 0ms
     ✓ keeps the selected thread on a collapsed shelf 5ms
     ✓ keeps snoozed threads visible on environments without the snooze capability 0ms
     ✓ partitions settled threads into a slim shelf 0ms
     ✓ keeps settled threads in the tail and filters by search query 0ms
     ✓ scopes the flat list to every environment member of a logical project 0ms
   ✓ buildThreadListV2Items settled paging (1)
     ✓ caps the settled tail at settledLimit and reports the hidden count 0ms
   ✓ buildThreadListV2Items settled sort reuse (2)
     ✓ re-sorts when a settled row is replaced, added, or removed 0ms
     ✓ recomputes when builds alternate between environments 0ms
   ✓ buildThreadListV2ListItems (2)
     ✓ leads the list with unsent drafts and queued tasks, preserving section dividers 0ms
     ✓ places queued tasks above active rows and a collapsed snoozed shelf 3ms
   ✓ pending mobile thread moves (6)
     ✓ holds active order through every intermediate key upsert 3ms
     ✓ holds pinned order through every intermediate key upsert 0ms
     ✓ keeps the action guard pending when receipts precede canonical shells 0ms
     ✓ releases for real section membership and foreign key changes 2ms
     ✓ does not hide a concurrent return to a previously confirmed key 0ms
     ✓ preserves the hold for activity but releases for a reopened sort anchor 0ms
   ✓ mobile move availability (6)
     ✓ keeps unsupported keyed active neighbors as usable anchors 3ms
     ✓ keeps unsupported keyed pinned neighbors as usable anchors 1ms
     ✓ disables active moves requiring unsupported keyless materialization 0ms
     ✓ disables pinned moves requiring unsupported keyless materialization 3ms
     ✓ reserves snoozed active keys when moving visible rows 0ms
     ✓ reserves snoozed pinned keys when moving visible rows 0ms
   ✓ thread drag destinations (4)
     ✓ moves across multiple rows while keeping hidden anchors in place 1ms
     ✓ persists a dropped active row and holds its order until confirmed 0ms
     ✓ persists a dropped pinned row and holds its order until confirmed 0ms
     ✓ refuses a drop that would need to rewrite an old server's keyless row 0ms
   ✓ allows a long drop past an old server even when both adjacent moves fail 0ms
   ✓ cross-section thread drops (5)
     ✓ inserts into an empty pinned section 1ms
     ✓ inserts into an empty active section 0ms
     ✓ places an incoming row between existing anchors without rewriting them 0ms
     ✓ rejects removed targets and unsupported incoming sources 0ms
     ✓ clears pinning, settlement and snooze when returning a parked thread to Active 0ms
   ✓ excludes subagents from navigation, search and ordering while retaining user forks 0ms
   ✓ threadListV2ListItemsAreEqual (3)
     ✓ treats rebuilt wrappers over identical rows as equal 0ms
     ✓ notices a changed wake countdown label 0ms
     ✓ notices a trailing-divider flip caused by a neighbour change 2ms
   ✓ thread list Woke marker (4)
     ✓ keeps a timer wake through a plain visit until acknowledgement reaches its timestamp 0ms
     ✓ stays hidden while snoozed, after settling, and on servers without visited tracking 0ms
     ✓ keeps an early failure wake acknowledged after the scheduled time passes 0ms
     ✓ updates a recycled row at the wake boundary even without a new shell or minute tick 3ms
   ✓ buildThreadListV2ListItems row-state stamps (2)
     ✓ stamps queued outbox messages onto the matching row and notices removal 0ms
     ✓ notices move-availability changes on card rows without a shell update 1ms
   ✓ Working section beta (3)
     ✓ folds unpinned working threads into a collapsed shelf 3ms
     ✓ orders the inbox by the latest return this device observed 0ms
     ✓ places the shelf after queued tasks and before snoozed and settled threads 0ms
 ✓ src/state/shell-sync.test.ts (6 tests) 128ms
 ✓  unit  src/state/thread-outbox.test.ts (35 tests) 112ms
 ✓ src/connection/onboarding.test.ts (13 tests) 195ms
 ✓ src/server/adapter.test.ts (83 tests) 2314ms
   ✓ PiAdapterV2 (81)
     ✓ delivers realistic MCP screenshots through the bridge, JSONL transport, and adapter 628ms

 Test Files  7 passed (7)
      Tests  120 passed (120)
   Start at  08:55:56
   Duration  5.42s (transform 51%, import 29%, tests 14%, setup 6%)

 ✓ src/state/environmentHttpAuth.test.ts (32 tests) 356ms
 ✓ src/preview/BrowserImport/ChromiumCookies.test.ts (10 tests) 283ms
 ✓ src/snapShot/snapShot.test.ts (36 tests) 49ms

~/scripts$ vp test run --config ../vite.config.ts --dir . ⊘ cache disabled
 ✓  react  src/features/settings/SettingsServerControlsRouteScreen.test.tsx (1 test) 63ms
 ✓ src/app/DesktopClerk.test.ts (15 tests) 232ms
 ✓ src/state/entities.test.ts (16 tests) 20ms
 ✓ src/backend/DesktopServerExposure.test.ts (10 tests) 320ms
 ✓ src/telemetry/DesktopTelemetryPublisher.test.ts (3 tests) 114ms

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

 ✓ src/state/orchestrationV2Projection.test.ts (13 tests) 25ms
 ✓ src/state/vcsAction.test.ts (9 tests) 70ms
 ✓ src/preview/FaviconCapture.test.ts (24 tests) 77ms
 ✓  unit  src/features/agent-awareness/remoteRegistration.test.ts (15 tests) 690ms
 ✓ src/preview/BrowserImport/FirefoxCookies.test.ts (11 tests) 226ms
 ✓ src/relay/managedRelay.test.ts (7 tests) 181ms
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
 ✓ src/state/vcs.test.ts (7 tests) 94ms
    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)

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_@react-nati_67a933692787550f91c53bd2ccbe3024/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_@react-nati_67a933692787550f91c53bd2ccbe3024/node_modules/expo-file-system/build/Paths.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_@react-nati_67a933692787550f91c53bd2ccbe3024/node_modules/expo-file-system/build/Directory.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_@react-nati_67a933692787550f91c53bd2ccbe3024/node_modules/expo-file-system/build/ExpoFileSystem.js" points to missing source files
 ✓  unit  src/lib/composerFiles.test.ts (36 tests) 114ms
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_c9eff78814d72f1a2b343eeddd0f3d24/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_c9eff78814d72f1a2b343eeddd0f3d24/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_c9eff78814d72f1a2b343eeddd0f3d24/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_c9eff78814d72f1a2b343eeddd0f3d24/node_modules/expo-modules-core/build/ts-declarations/NativeModule.js" points to missing source files
 ✓ lib/third-party-licenses.test.ts (19 tests) 87ms
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_c9eff78814d72f1a2b343eeddd0f3d24/node_modules/expo-modules-core/build/ts-declarations/SharedObject.js" points to missing source files
 ✓ src/relay/discovery.test.ts (7 tests) 110ms
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_c9eff78814d72f1a2b343eeddd0f3d24/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_c9eff78814d72f1a2b343eeddd0f3d24/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_c9eff78814d72f1a2b343eeddd0f3d24/node_modules/expo-modules-core/build/errors/CodedError.js" points to missing source files
 ✓ src/state/threads-atoms.test.ts (4 tests) 206ms
Sourcemap for "/home/runner/_work/t3code/t3code/node_modules/.pnpm/expo-modules-core@58.0.22_patch_hash=f0b0fd100550ed76e5c25b4d13eb7c9ff62825f8f197c53edf_c9eff78814d72f1a2b343eeddd0f3d24/node_modules/expo-modules-core/build/requireNativeModule.js" points to missing source files
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:
 ✓ src/snapShot/PortalCaptureShortcut.test.ts (20 tests) 85ms
Flow is not supported
1: /**
   ^
2:  * Copyright (c) Meta Platforms, Inc. and affiliates.
3:  *
 ✓ src/wsl/DesktopWslServerTree.test.ts (8 tests) 320ms
 ✓ src/state/threadCommands.test.ts (19 tests) 41ms
At file: /@fs/home/runner/_work/t3code/t3code/node_modules/.pnpm/react-native@0.88.0_@babel+core@7.29.7_@react-native+metro-config@0.88.0_@babel+core@7._5fde6f074770fbfd679b51c1f1791bf8/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@react-native+metro-config@0.88.0_@babel+core@7._5fde6f074770fbfd679b51c1f1791bf8/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_@react-native+metro-config@0.88.0_@babel+core@7._5fde6f074770fbfd679b51c1f1791bf8/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_c9eff78814d72f1a2b343eeddd0f3d24/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_c9eff78814d72f1a2b343eeddd0f3d24/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_@react-native+metro-config@0.88.0_@babel+core@7._5fde6f074770fbfd679b51c1f1791bf8/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@react-native+metro-config@0.88.0_@babel+core@7._5fde6f074770fbfd679b51c1f1791bf8/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_@react-native+metro-config@0.88.0_@babel+core@7._5fde6f074770fbfd679b51c1f1791bf8/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_c9eff78814d72f1a2b343eeddd0f3d24/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_c9eff78814d72f1a2b343eeddd0f3d24/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_@react-native+metro-config@0.88.0_@babel+core@7._5fde6f074770fbfd679b51c1f1791bf8/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@react-native+metro-config@0.88.0_@babel+core@7._5fde6f074770fbfd679b51c1f1791bf8/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_c9eff78814d72f1a2b343eeddd0f3d24/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_@types+node@24.12.4_@volar+typescript@2.4.28_esbuild_a19ae4da7ba9643262aaf5b306a7407d/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_c9eff78814d72f1a2b343eeddd0f3d24/node_modules/expo-modules-core/build/sweet/sweet/setUpJsLogger.fx.ts:2:1
  }
}

 ✓ src/settings/DesktopAppSettings.test.ts (11 tests) 154ms
 ✓ src/shell/DesktopShellEnvironment.test.ts (12 tests) 98ms
 ✓  unit  src/lib/attachmentUpload.test.ts (28 tests) 96ms
 ✓  unit  src/features/sharing/incoming-share-model.test.ts (19 tests) 39ms
 ✓ src/preview/Passkeys.test.ts (6 tests) 48ms
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 {
 ✓ src/rpc/client.test.ts (8 tests) 100ms
  _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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3276:10)
}

 ✓ notify-discord-release.test.ts (15 tests) 306ms
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',
 ✓ merge-update-manifests.test.ts (5 tests) 74ms
  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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3338:20
 ✓  unit  src/features/home/useThreadListActions.test.ts (37 tests) 78ms
      at new Promise (<anonymous>)
      at runWithCancel (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3318:20
      at new Promise (<anonymous>)
 ✓ src/device/stream.test.ts (14 tests) 51ms
      at runWithTimeout (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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/app/DesktopObservability.test.ts (4 tests) 397ms
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
[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',
 ✓ src/preview/BrowserSession.test.ts (7 tests) 48ms
    cause: Error: Draft storage unavailable
        at /home/runner/_work/t3code/t3code/apps/mobile/src/state/use-thread-outbox-drain.test.ts:335:37
 ✓  unit  src/state/use-thread-outbox-drain.test.ts (23 tests) 137ms
        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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2801:20
  }
}
 ✓ build-npm-launcher.test.ts (1 test) 1033ms
   ✓ build-npm-launcher (1)
     ✓ publishes a launcher that downloads, verifies, caches, and runs the release executable 1006ms

 ✓ src/connection/routes.test.ts (19 tests) 26ms
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',
 ✓ dev-runner.test.ts (25 tests) 271ms
  threadId: 'thread-1',
  messageId: 'message-acknowledged',
  error: {
    _tag: 'ThreadOutboxManagerError',
    operation: 'remove',
    environmentId: 'environment-1',
    threadId: 'thread-1',
    messageId: 'message-acknowledged',
    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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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',
 ✓  unit  src/state/use-composer-drafts.test.ts (74 tests) 1829ms
  fileName: 'drafts.json',
  cause: Error: disk full
   ✓ mobile composer drafts (74)
      at /home/runner/_work/t3code/t3code/apps/mobile/src/state/use-thread-outbox-drain.test.ts:583:37
     ✓ restores deleted file chips and releases undo history (uploaded: false) 762ms
 ❯ src/state/threadShell.test.ts (10 tests | 2 failed) 59ms
      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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2801:20
   ❯ v2 thread shell lists (10)
}

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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:2801:20
}

     ✓ preserves ordered reference arrays when a middle thread changes 22ms
     ✓ keeps navigation stable on hidden subagent updates and retains user forks 5ms
     ✓ counts a subagent question on its parent only while the subagent runs 1ms
     ✓ brings a parent back from Working while a nested subagent waits for approval 6ms
     ✓ leaves switched-off environments out of navigation until restored 4ms
     ✓ leaves unsupported environments out of navigation until restored 1ms
     × stops presenting cached work as Working while its environment is unavailable 4ms
     × hides a locally removed thread only while its environment is unavailable 2ms
     ✓ preserves project memberships on updates and keeps the same thread separate per environment 5ms
     ✓ keeps the quiet shell through streaming ticks and follows every change once the run stops 6ms
 ✓ legend-list-initial-reveal.test.ts (10 tests) 83ms
 ✓  unit  src/native/workspace-stack-projection.test.ts (22 tests) 25ms
 ✓ src/wsl/DesktopWslEnvironment.test.ts (17 tests) 3247ms
   ✓ WSL runtime install script (executed) (12)
     ✓ reinstalls an executable that fails --version despite a matching recorded digest 312ms
     ✓ extracts once when two installs race for the same cache 1188ms
 ✓ lib/dev-share.test.ts (5 tests) 67ms
 ✓ lib/cli-external-packages.test.ts (10 tests) 1345ms
   ✓ external package dependency closure (1)
     ✓ keeps every runtime dependency of an external package external too 1290ms
 ✓ src/state/projectGrouping.test.ts (20 tests) 24ms
 ✓ src/snapShot/CaptureShortcutConfig.test.ts (16 tests) 149ms
 ✓ src/snapShot/LinuxSnapShot.test.ts (19 tests) 180ms
 ✓ src/platform/storageDocument.test.ts (13 tests) 20ms
 ✓ src/state/fileMetadata.test.ts (11 tests) 488ms
 ✓ lib/public-config.test.ts (1 test) 14ms
 ✓  unit  src/lib/mobileTheme.test.ts (24 tests) 285ms
 ✓ mobile-native-client.test.ts (2 tests) 76ms
 ✓ update-release-package-versions.test.ts (3 tests) 111ms
 ✓  unit  src/state/use-thread-outbox-drain.permissions.test.ts (12 tests) 37ms
 ✓ src/mcpApps/host.test.ts (9 tests) 38ms
 ✓ src/state/threadRelationships.test.ts (11 tests) 16ms
 ✓ lib/resolve-catalog.test.ts (2 tests) 8ms
 ✓  unit  src/lib/attachmentDownload.test.ts (19 tests) 91ms
 ✓ src/preview/BrowserImport/SafariCookies.test.ts (9 tests) 47ms
 ✓ sync-reference-repos.test.ts (2 tests) 88ms
 ✓ src/settings/DesktopClientSettings.test.ts (7 tests) 314ms
 ✓ lib/build-target-arch.test.ts (1 test) 52ms
 ✓ mobile-showcase.test.ts (3 tests) 15ms
 ✓ src/connection/resolver.test.ts (6 tests) 174ms
 ✓ src/state/threadExecution.test.ts (11 tests) 17ms
 ✓ src/state/commandPermissions.test.ts (14 tests) 152ms
 ✓ mock-update-server.test.ts (2 tests) 339ms
 ✓ src/app/DesktopConnectionCatalogStore.test.ts (5 tests) 142ms
 ✓ src/app/DesktopLifecycle.test.ts (5 tests) 47ms
 ✓ src/state/threadHistoryMerge.test.ts (7 tests) 19ms
 ✓ src/app/DesktopCliCommand.test.ts (6 tests) 152ms
 ✓  unit  src/lib/android-workspace-navigation.test.ts (15 tests) 24ms
 ✓ src/state/threadWorkflows.test.ts (13 tests) 30ms
 ✓  unit  src/state/thread-task-permissions.test.ts (5 tests) 42ms
 ✓  unit  src/lib/composerAttachmentUploadQueue.test.ts (11 tests) 19ms
 ✓  unit  src/lib/composerContext.test.ts (15 tests) 317ms
 ✓ lib/icon-export.test.ts (1 test) 5ms
 ✓ resolve-previous-release-tag.test.ts (3 tests) 26ms
 ✓ src/window/DesktopApplicationMenu.test.ts (3 tests) 107ms
 ✓  unit  src/features/pull-requests/pullRequestList.test.ts (15 tests) 49ms
 ✓ src/snapShot/NiriSnapShot.test.ts (18 tests) 526ms
 ✓  unit  src/state/composer-attachment-uploads.test.ts (5 tests) 50ms
 ✓ src/state/shellReducer.test.ts (14 tests) 25ms
 ✓ src/connection/outdatedHostUpdate.test.ts (3 tests) 80ms
 ✓ src/snapShot/KdeSnapShot.test.ts (9 tests) 88ms
 ✓ src/state/threadSnoozed.test.ts (20 tests) 51ms
 ✓ src/state/threadSort.test.ts (21 tests) 293ms
 ✓ src/preview/BrowserImport/ChromiumKeys.test.ts (9 tests) 64ms
 ✓ src/preview/CdpRelay.test.ts (6 tests) 12ms
 ✓ src/app/DesktopPreReadyPlatform.test.ts (4 tests) 42ms
 ✓ src/settings/DesktopSavedEnvironments.test.ts (3 tests) 85ms
 ✓ build-desktop-artifact.test.ts (42 tests) 4127ms
   ✓ build-desktop-artifact (40)
     ✓ rejects overlapping builds from another process until restoration finishes 1364ms
     ✓ builds web, server and desktop with the resolved version, restores changed manifests and preserves edits to matching ones 608ms
 ✓  unit  src/features/voice-input/voiceInputSession.test.ts (13 tests) 12ms
 ✓ scripts/electron-launcher.test.mjs (7 tests) 817ms
   ✓ dev cleanup matches only the literal root argument: /tmp/t3-feature.one/apps/desktop 462ms
   ✓ dev cleanup matches only the literal root argument: /tmp/t3-feature.one [two](three)+?^${four}|back\slash*/apps/desktop 338ms
 ✓ src/backend/DesktopLocalEnvironmentAuth.test.ts (3 tests) 51ms
 ✓ src/state/projectCommands.test.ts (4 tests) 211ms
 ✓ src/platform/shellCacheEncoding.test.ts (5 tests) 234ms
stdout | src/state/serverUsage.test.ts > keeps the cached usage summary when the awaited refresh fails
[08:56:09.149] 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_cd4944dadced464493d39fdeae2eef64/node_modules/@effect/vitest/dist/internal/internal.js:26:31)'
}

 ✓  unit  src/state/pending-task-editor-writes.test.ts (5 tests) 30ms
 ✓ src/state/serverUsage.test.ts (2 tests) 93ms
 ✓ src/state/terminalSession.test.ts (9 tests) 17ms
 ✓  unit  src/features/updates/app-updates.test.ts (11 tests) 110ms
 ✓ src/snapShot/HyprlandSnapShot.test.ts (9 tests) 115ms
 ✓  unit  src/lib/composerContextClipboard.test.ts (7 tests) 74ms
 ✓  unit  src/connection/environment-cache-store.test.ts (4 tests) 45ms
 ✓  unit  src/features/threads/checkout-new-task-branch.test.ts (11 tests) 4430ms
   ✓ new-task branch checkout (11)
     ✓ switches to a free branch and clears its historical worktree path 360ms
     ✓ does not release the selection while checkout is still pending 431ms
     ✓ returns checkout failure without selecting the branch or losing dirty files 379ms
     ✓ reuses an existing worktree without switching the project checkout 366ms
     ✓ reuses an occupied picker worktree when the project root is a symlink 376ms
     ✓ resolves historical branch metadata to its worktree beyond a long query's first page 553ms
     ✓ resolves a non-origin remote to the right worktree when the remote name contains slashes 486ms
     ✓ switches to the selected remote instead of reusing a worktree tracking another remote 653ms
     ✓ rejects picker worktree reuse when project root is unsafe (nested: false) 315ms
 ✓ src/state/subagentRuntime.test.ts (11 tests) 21ms
 ✓ src/operations/commands.performance.test.ts (1 test) 290ms
 ✓ src/app/DesktopEarlyElectronStartup.test.ts (19 tests) 36ms
 ✓ src/snapShot/GnomeCaptureSetup.test.ts (11 tests) 241ms
 ✓ src/authorization/remote.test.ts (5 tests) 157ms
 ✓  unit  src/state/thread-outbox-removal.test.ts (5 tests) 9ms
 ✓ src/app/DesktopAppIdentity.test.ts (5 tests) 81ms
 ✓ src/ipc/methods/window.test.ts (5 tests) 201ms
 ✓ src/wsl/DesktopWslBackend.test.ts (1 test) 26ms
 ✓  unit  src/features/diffs/nativeReviewDiffHighlighter.test.ts (11 tests) 903ms
 ✓ src/window/ContextMenuImage.test.ts (15 tests) 122ms
 ✓  unit  src/features/threads/threadOrderAvailability.test.ts (7 tests) 734ms
   ✓ computeThreadMoveAvailability matches the reference planner (7)
     ✓ agrees across randomized sections (keys, holes, non-writable rows, hidden keys) 711ms
 ✓  unit  src/state/use-selected-thread-git-actions.test.ts (11 tests) 21ms
 ✓ src/electron/ElectronWindow.test.ts (2 tests) 19ms
 ✓ src/electron/ElectronProtocol.test.ts (3 tests) 68ms
 ✓ src/updates/releaseNotes.test.ts (8 tests) 12ms
 ✓ scripts/main-process-bundle.test.mjs (2 tests) 596ms
   ✓ loads the emitted packaged boot entry and backend cache preload 326ms
 ✓ src/state/usage.test.ts (8 tests) 73ms
 ✓ src/updates/updateMachine.test.ts (6 tests) 26ms
 ✓  unit  src/features/home/home-thread-navigation.test.ts (5 tests) 30ms
 ✓ src/work-log/commandLabel.test.ts (81 tests) 250ms
 ✓ src/state/sharedSettings.test.ts (17 tests) 46ms
 ✓ src/work-log/presentation.test.ts (19 tests) 46ms
 ✓  unit  src/lib/composerImages.test.ts (6 tests) 21ms
 ✓ src/preview/PasskeyBridge.test.ts (3 tests) 14ms
 ✓  unit  src/features/sharing/incoming-share-inbox.test.ts (10 tests) 72ms
 ✓  unit  src/native/composerEditorRevision.test.ts (17 tests) 9ms
 ✓ src/state/threadRequests.test.ts (8 tests) 36ms
 ✓ src/updates/remoteUpdateFlow.test.ts (6 tests) 36ms
 ✓ src/state/boundedThreadSnapshotHttp.test.ts (5 tests) 350ms
 ✓  unit  src/features/cloud/linkEnvironment.test.ts (3 tests) 210ms
 ✓ src/projectFaviconCache.test.ts (8 tests) 308ms
 ✓ src/device/duoViewer.test.ts (2 tests) 42ms
 ✓ src/device/duoControl.test.ts (12 tests) 23ms
 ✓ src/backend/DesktopBackendPool.test.ts (1 test) 89ms
 ✓ src/ssh/DesktopSshPasswordPrompts.test.ts (2 tests) 54ms
 ✓ knip-schemas.test.ts (1 test) 9418ms
   ✓ allows types and schemas through the real Knip CLI without hiding runtime or file findings 9413ms

 Test Files  20 passed (20)
      Tests  153 passed (153)
   Start at  08:56:02
   Duration  10.10s (tests 52%, import 24%, transform 12%, setup 11%, worker 1%)


~/infra/relay$ vp test run --config ../../vite.config.ts --dir . ⊘ cache disabled
 ✓ gnome-extension/captureFeedback.test.js (4 tests) 28ms
 ✓  unit  src/features/settings/scheduledTaskDraft.test.ts (12 tests) 75ms
 ✓ src/pullRequestQuery.test.ts (17 tests) 22ms
 ✓  unit  src/dependency-graph.test.ts (2 tests) 29ms
 ✓ src/app/DesktopAppActivation.test.ts (3 tests) 142ms
 ✓  unit  src/features/home/homeThreadList.test.ts (4 tests) 37ms
 ✓ src/providerSkills.test.ts (7 tests) 6ms
 ✓ src/snapShot/captureConfigEdit.test.ts (24 tests) 55ms
 ✓ src/window/QuitHold.test.ts (7 tests) 39ms

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/infra/relay

 ✓ src/state/threadSubagents.test.ts (7 tests) 47ms
 ✓ src/relay/managedRelayState.test.ts (4 tests) 74ms
 ✓ src/ipc/methods/wsl.test.ts (2 tests) 54ms
 ✓ src/connection/diagnosis.test.ts (7 tests) 36ms
 ✓ gnome-extension/captureService.test.js (10 tests) 35ms
stdout | src/state/preferences.test.ts > mobile preferences state > falls back to empty preferences when secure storage cannot be read
[08:56:13.821] 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_cd4944dadced464493d39fdeae2eef64/node_modules/@effect/vitest/dist/internal/internal.js:26:31)
}

 ✓  unit  src/state/preferences.test.ts (3 tests) 92ms
 ✓ src/preview/BrowserImport/BrowserImport.test.ts (3 tests) 168ms
 ✓ src/state/itemSupport.test.ts (2 tests) 10ms
 ✓  unit  src/lib/mediaActions.test.ts (10 tests) 45ms
 ✓ src/preview/serverBrowserStream.test.ts (5 tests) 21ms
 ✓ src/preview/DesktopBrowserHost.test.ts (4 tests) 44ms
 ✓ src/legacyLocalStorageMerge.test.ts (7 tests) 16ms
 ✓ src/wsl/wslPathParsing.test.ts (12 tests) 41ms
 ✓ src/app/DesktopCliShim.test.ts (4 tests) 174ms
 ✓  unit  src/state/session.test.ts (4 tests) 27ms
 ✓ src/pullRequestMarkdown.test.ts (15 tests) 42ms
 ✓ src/device/phoneViewer.test.ts (1 test) 98ms
 ✓ src/app/CodexAuthCallback.test.ts (4 tests) 203ms
stdout | src/lib/storage.test.ts > mobile connection storage > loads legacy preferences when SQLite is unavailable
[08:56:15.004] WARN (#16): 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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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
[08:56:15.024] WARN (#17): 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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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
[08:56:15.030] WARN (#17): 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_@types+node@24.12.4_@vitest+browser-playwright@5.0.5_@vitest+browser-previ_019bbfd5875992f40681882cbbeca0d1/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:227: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 (6 tests) 98ms
 ✓ src/linuxSecretStorage.test.ts (7 tests) 17ms
 ✓  unit  src/features/threads/thread-provider-instance.test.ts (3 tests) 47ms
 ✓ src/state/threadFeedback.test.ts (5 tests) 23ms
 ✓ src/connection/presentation.test.ts (4 tests) 34ms
 ✓  unit  src/features/projects/AddProjectScreen.test.ts (3 tests) 87ms
 ✓ src/permissions/MacPermissionHelper.test.ts (1 test) 27ms
 ✓  unit  src/features/agent-awareness/liveActivityPreferences.test.ts (3 tests) 46ms
 ✓ src/ipc/methods/notificationBadge.test.ts (1 test) 137ms
 ✓  unit  src/features/threads/thread-feed-live-follow.test.ts (18 tests) 30ms
 ✓ src/snapShot/RegionSnapShot.test.ts (4 tests) 38ms
 ✓  unit  src/features/cloud/dpop.test.ts (5 tests) 389ms
 ✓ src/state/projectEntities.test.ts (2 tests) 41ms
 ✓ src/pullRequestLinkInput.test.ts (14 tests) 36ms
 ✓ src/device/avcConfig.test.ts (8 tests) 38ms
 ✓ src/ipc/methods/preview.test.ts (5 tests) 74ms
 ✓ src/handoff.test.ts (8 tests) 13ms
 ✓  unit  src/features/settings/settings-scoped-server.test.ts (5 tests) 22ms
 ✓ src/preview/GuestInput.test.ts (4 tests) 28ms
 ✓ src/app/DesktopWebLinks.test.ts (2 tests) 43ms
 ✓ src/ipc/methods/snapShot.test.ts (3 tests) 71ms
 ✓ src/backend/tailscaleEndpointProvider.test.ts (3 tests) 64ms
 ✓ src/device/phoneScene.test.ts (8 tests) 285ms
 ✓ scripts/verify-preload-bundle.test.mjs (7 tests) 134ms
 ✓ src/electron/ElectronShell.test.ts (5 tests) 30ms
 ✓ src/preview/BrowserImport/CookieDatabase.test.ts (2 tests) 113ms
 ✓ src/platform/orchestrationCache.test.ts (3 tests) 125ms
 ✓ src/threadPullRequestCompatibility.test.ts (10 tests) 29ms
 ✓ scripts/browser-secret-native.test.mjs (10 tests) 1964ms
   ✓ bundled libsecret helper (10)
     ✓ builds an executable for the requested architecture into a staged resource directory 836ms
 ✓  unit  src/features/pull-requests/pullRequestStack.test.ts (8 tests) 28ms
 ✓ ../../native/kde-snap-shot/src/activate.test.ts (2 tests) 30ms
 ✓ src/preview/PickedElementPayload.test.ts (2 tests) 26ms
 ✓ src/operations/projects.test.ts (6 tests) 25ms
 ✓ src/reviewGuideTour.test.ts (7 tests) 35ms
 ✓  unit  src/widgets/subscriptionUsageSnapshot.test.ts (5 tests) 98ms
 ✓ src/snapShot/NativeCaptureFeedback.test.ts (2 tests) 132ms
 ✓  unit  src/features/review/reviewCommentSelection.test.ts (6 tests) 37ms
 ✓  unit  src/features/settings/environment-maintenance.test.ts (7 tests) 99ms
 ✓ src/state/usageProgress.test.ts (4 tests) 34ms
 ✓ src/preview/BrowserImport/SafariPermission.test.ts (2 tests) 138ms
 ✓  unit  src/features/review/reviewModel.test.ts (5 tests) 31ms
 ✓ src/device/duoScene.test.ts (2 tests) 65ms
 ✓ src/device/phoneInteraction.test.ts (4 tests) 38ms
 ✓ src/snapShot/SnapShotAccessibilityProcess.test.ts (3 tests) 30ms
 ✓ src/state/attachments.test.ts (3 tests) 33ms
 ✓  unit  src/features/threads/thread-settings-sheet-state.test.ts (5 tests) 35ms
 ✓  unit  src/features/voice-input/lazyVoiceRecorder.test.ts (3 tests) 14ms
 ✓ src/device/model.test.ts (4 tests) 15ms
 ✓  unit  src/lib/protectedData.test.ts (3 tests) 608ms
   ✓ protected storage startup (3)
     ✓ keeps a locked background launch usable after activation without rebuilding its runtime 578ms
 ✓ src/state/filesystem.test.ts (8 tests) 15ms
 ✓ src/electron/WindowsForegroundFocusThread.test.ts (2 tests) 59ms
 ✓ src/electron/WindowsForeground.test.ts (3 tests) 19ms
 ✓  unit  src/state/remote-environment-projections.test.ts (1 test) 28ms
 ✓ src/preview/BrowserImport/LinuxBrowserSecret.test.ts (1 test) 159ms
 ✓ src/app/DesktopUserData.test.ts (2 tests) 199ms
 ✓ src/app/DesktopEnvironment.test.ts (2 tests) 47ms
 ✓ src/app/DesktopAppActivationBroker.test.ts (3 tests) 21ms
 ✓ src/connection/errors.test.ts (5 tests) 13ms
 ✓ src/state/presentation.test.ts (1 test) 48ms
 ✓ src/t3ToolSummary.test.ts (3 tests) 12ms
 ✓ src/permissions/MacSettingsWindow.test.ts (2 tests) 28ms
 ✓ gnome-extension/feedbackGeometry.test.js (7 tests) 6ms
 ✓  unit  src/features/review/nativeReviewDiffAdapter.test.ts (2 tests) 939ms
   ✓ buildNativeReviewDiffData row bound (1)
     ✓ caps each huge file excerpt while preserving full counts and ordinary files 891ms
 ✓ src/preview/WebviewPreferences.test.ts (2 tests) 12ms
 ✓ src/ipc/methods/localEnvironment.test.ts (1 test) 39ms
 ✓ src/environments/ManagedEndpointProvider.test.ts (31 tests) 113ms
 ✓ ../../native/kde-snap-shot/src/feedbackGeometry.test.ts (2 tests) 31ms
 ✓ src/snapShot/WindowsCaptureFeedback.test.ts (1 test) 5ms
 ✓ src/mediaSource.test.ts (9 tests) 26ms
 ✓ src/app/DesktopPreReadyFileSystem.test.ts (1 test) 72ms
 ✓ src/environments/ManagedEndpointReaper.test.ts (17 tests) 279ms
 ✓ src/work-log/toolPresentation.test.ts (4 tests) 7ms
 ✓ src/preview/AnnotationKeyboard.test.ts (1 test) 11ms
 ✓ src/preview/RecordingInput.test.ts (2 tests) 13ms
 ✓ src/state/threadSearch.test.ts (4 tests) 59ms
 ✓  unit  src/features/usage/UsageLimitsSection.test.ts (2 tests) 16ms
 ✓ src/state/turnItemPresentation.test.ts (2 tests) 20ms
stdout | plugins/withAndroidFbjniVersion.test.mjs > withAndroidFbjniVersion > applies the force through the registered app config
[react-native-pdf-jsi] Remember to install peer dependencies:
  - react-native-blob-util
  - @react-native-async-storage/async-storage
  - react-native-nitro-modules (required for the Nitro JSI path; the React Native bridge is used when it is not linked)
✅ Clerk iOS plugin loaded
✅ Clerk Android plugin loaded

 ✓  unit  plugins/withAndroidFbjniVersion.test.mjs (4 tests) 2632ms
   ✓ withAndroidFbjniVersion (4)
     ✓ applies the force through the registered app config 2540ms
 ✓ src/preview/AnnotationIds.test.ts (1 test) 15ms
 ✓ src/connection/compatibility.test.ts (4 tests) 40ms
 ✓ src/device/modelScene.test.ts (2 tests) 41ms
 ✓ src/ipc/methods/sshEnvironment.test.ts (1 test) 34ms

 Test Files  103 passed (103)
      Tests  834 passed (834)
   Start at  08:55:56
   Duration  26.39s (import 48%, transform 25%, setup 14%, tests 12%, worker 1%)

     Import  519 modules were evaluated 6414 times · 70.36s total, 48% of tracked time
             ~7.03s 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/device/streamFrames.test.ts (1 test) 17ms
 ✓  unit  src/state/edit-pending-thread-message.test.ts (4 tests) 22ms
 ✓  unit  src/features/threads/new-task-project-selection.test.ts (5 tests) 17ms

 ✓  unit  src/lib/pdfPreview.test.ts (12 tests) 37ms
 ✓ src/promptLinks.test.ts (3 tests) 15ms
 ✓ src/environments/EnvironmentConnector.test.ts (12 tests) 507ms
 ✓  unit  src/features/agent-awareness/notificationNavigation.test.ts (6 tests) 32ms
 ✓ src/state/providerInstanceDisplay.test.ts (10 tests) 12ms
 ✓ src/state/serverConfigProjection.test.ts (2 tests) 8ms
 ✓  unit  src/state/thread-order.test.ts (4 tests) 5ms
 ✓  unit  src/features/pull-requests/pullRequestDiffPages.test.ts (3 tests) 16ms
 ✓  unit  src/state/assets.test.ts (4 tests) 12ms
 ✓ src/device/deviceMotion.test.ts (2 tests) 15ms
 ✓  unit  src/features/workspace/android-workspace-navigation-colors.test.ts (9 tests) 90ms
 ✓ src/state/queryPersistence.test.ts (3 tests) 23ms
 ✓ src/state/customSnooze.test.ts (11 tests) 12ms
 ✓ src/state/threadInbox.test.ts (2 tests) 10ms
 ✓ src/errors/safeLog.test.ts (2 tests) 8ms
 ✓  unit  src/lib/projectFaviconRequests.test.ts (4 tests) 3ms
 ✓  unit  src/state/pending-thread-creation.test.ts (4 tests) 2ms
 ✓ src/state/usageAccess.test.ts (8 tests) 9ms
 ✓ src/filePreview.test.ts (3 tests) 118ms
 ✓ src/state/auth.test.ts (2 tests) 3ms
 ✓ src/userMessage.test.ts (3 tests) 7ms
 ✓ src/errors/transport.test.ts (3 tests) 10ms
 ✓  unit  src/features/connection/environmentSections.test.ts (3 tests) 6ms
 ✓ src/mediaReference.test.ts (7 tests) 20ms
 ✓ src/relay/errorPresentation.test.ts (3 tests) 14ms
 ✓ src/state/threadHistoryController.test.ts (1 test) 12ms
 ✓ src/agentActivity/FcmDeliveries.test.ts (29 tests) 122ms
 ✓ src/device/androidFoldScene.test.ts (1 test) 32ms
 ✓  unit  src/state/attachments.test.ts (2 tests) 21ms
 ✓  unit  src/features/shortcuts/appShortcuts.test.ts (7 tests) 21ms
 ✓ src/device/duoSnap.test.ts (1 test) 7ms
 ✓ src/http/Api.test.ts (27 tests) 213ms
 ✓  unit  src/lib/atomic-file.test.ts (4 tests) 10ms
 ✓ src/state/assets.test.ts (1 test) 9ms
 ✓ src/agentActivity/ApnsDeliveries.test.ts (36 tests) 382ms
 ✓ src/hooks/HookForwarder.test.ts (17 tests) 385ms
 ✓ src/markdownImages.test.ts (7 tests) 11ms
 ✓  unit  src/state/workspace-connection-atoms.test.ts (1 test) 28ms
 ✓ src/errors/errorTrace.test.ts (2 tests) 2ms
 ✓  unit  src/state/use-thread-pr.test.ts (6 tests) 4ms
 ✓ src/state/commandOutput.test.ts (1 test) 6ms
 ✓ src/work-log/scrollAnchor.test.ts (1 test) 6ms
 ✓  unit  src/features/workspace/workspace-tabs-state.test.ts (4 tests) 13ms
 ✓ src/environment/endpoint.test.ts (1 test) 2ms
 ✓  unit  src/features/pull-requests/pullRequestFileFilters.test.ts (4 tests) 22ms
 ✓  unit  src/features/terminal/useTerminalGridSync.test.ts (1 test) 27ms
 ✓ src/secretRequest.test.ts (2 tests) 7ms
 ✓  unit  src/lib/localAttachmentPreview.test.ts (4 tests) 14ms
 ✓ src/agentActivity/AgentActivityPublisher.test.ts (10 tests) 22ms
 ✓  unit  src/lib/reserved-regions.test.ts (5 tests) 27ms
 ✓ src/state/archivedThreads.test.ts (1 test) 30ms

⎯⎯⎯⎯⎯⎯⎯ Failed Tests 2 ⎯⎯⎯⎯⎯⎯⎯

 FAIL  src/state/threadShell.test.ts > v2 thread shell lists > stops presenting cached work as Working while its environment is unavailable
AssertionError: expected undefined to be false // Object.is equality

- Expected:
 ✓  unit  src/persistence/mobile-database.test.ts (3 tests) 12ms
false

+ Received:

undefined
 Test Files  1 failed | 116 passed (117)

      Tests  2 failed | 1097 passed (1099)
 ❯ src/state/threadShell.test.ts:273:57
   Start at  08:55:56
    271|     const dispose = registry.mount(shell);
    272|     expect(isThreadWorking(registry.get(shell)!)).toBe(true);
    273|     expect(registry.get(shell)?.environmentUnavailable).toBe(false);
       |                                                         ^
    274|
    275|     registry.set(environmentAvailableAtom(environmentId), false);

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/2]⎯

 FAIL  src/state/threadShell.test.ts > v2 thread shell lists > hides a locally removed thread only while its environment is unavailable
AssertionError: expected [ 'environment-v2', …(1) ] to deeply equal [ 'environment-v2' ]

- Expected
+ Received

  [
    "environment-v2",
+   "remote-environment-v2",
  ]

 ❯ src/state/threadShell.test.ts:296:30
    294|       { environmentId: remoteEnvironmentId, threadId: v2ThreadShell.id…
    295|     ]);
    296|     expect(environmentsOf()).toEqual([environmentId]);
       |                              ^
    297|
    298|     // The original environment owns the thread again once it reconnec…

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/2]⎯

   Duration  29.85s (import 55%, transform 27%, setup 12%, tests 6%, worker 1%)

     Import  486 modules were evaluated 8554 times · 93.96s total, 55% of tracked time
             ~10.59s 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


Error: AssertionError: expected undefined to be false // Object.is equality

- Expected:
false

+ Received:
undefined

 ❯ src/state/threadShell.test.ts:273:57



Error: AssertionError: expected [ 'environment-v2', …(1) ] to deeply equal [ 'environment-v2' ]

- Expected
+ Received

  [
    "environment-v2",
+   "remote-environment-v2",
  ]

 ❯ src/state/threadShell.test.ts:296:30





---
vp run: 3/6 successful. (Run `vp run --last-details` for full details)
Error: Process completed with exit code 1.
Post job cleanup.
##[start-action display=Cache full pnpm store;id=__0443403f-6803-418e-976a-8faf7bc6adc2.__actions_cache_2]
##[end-action id=__0443403f-6803-418e-976a-8faf7bc6adc2.__actions_cache_2;outcome=skipped;conclusion=skipped;duration_ms=0]
##[start-action display=Setup Vite+;id=__0443403f-6803-418e-976a-8faf7bc6adc2.__voidzero-dev_setup-vp]
##[end-action id=__0443403f-6803-418e-976a-8faf7bc6adc2.__voidzero-dev_setup-vp;outcome=skipped;conclusion=skipped;duration_ms=0]
##[start-action display=Cache Vite+;id=__0443403f-6803-418e-976a-8faf7bc6adc2.__actions_cache]
##[end-action id=__0443403f-6803-418e-976a-8faf7bc6adc2.__actions_cache;outcome=skipped;conclusion=skipped;duration_ms=0]
Post job cleanup.
[command]/usr/local/bin/git version
git version 2.55.0
Temporarily overriding HOME='/home/runner/_work/_temp/45a06cbd-123a-4024-ba75-65a50e48c165' 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: 207
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 410
  BLACKSMITH_CHECK_RUN_ID: 119131322090
  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
Terminate orphan process: pid (10087) (MainThread)
Terminate orphan process: pid (11091) (MainThread)
Terminate orphan process: pid (11097) (MainThread)