diff --git a/.github/actions/install-node-dependencies/action.yml b/.github/actions/install-node-dependencies/action.yml
index 6aecef6e152..7bf1d8cd43b 100644
--- a/.github/actions/install-node-dependencies/action.yml
+++ b/.github/actions/install-node-dependencies/action.yml
@@ -2,6 +2,10 @@ name: Install Node dependencies
description: Installs the Node toolchain and repository dependencies for CI jobs, with optional Electron archive caching.
inputs:
+ cache-pnpm-verification:
+ description: Restore pnpm's policy-checked lockfile verification record on Linux.
+ required: false
+ default: 'true'
native-runtime:
description: Native runtime to prepare after the script-free install (none, node, or electron).
required: false
@@ -24,6 +28,15 @@ inputs:
default: 'false'
outputs:
+ verification-cache-hit:
+ description: Whether pnpm's verification record was restored.
+ value: ${{ steps.verification-cache-restore.outputs.cache-hit }}
+ verification-cache-path:
+ description: The small pnpm-owned verification record, without registry metadata.
+ value: ${{ steps.verification-cache.outputs.path }}
+ verification-cache-key:
+ description: Exact verification record key, also used by the isolated PR benchmark.
+ value: ${{ steps.verification-cache.outputs.key }}
node-version:
description: Resolved Node.js version used for the install.
value: ${{ steps.requested-node.outputs.node-version || steps.default-node.outputs.node-version }}
@@ -86,6 +99,25 @@ runs:
path: ${{ steps.pnpm-store.outputs.path }}
key: node-cache-${{ runner.os }}-${{ steps.pnpm-store.outputs.arch }}-pnpm-${{ hashFiles(inputs.cache-dependency-path) }}
+ - name: Resolve pnpm verification cache
+ id: verification-cache
+ if: runner.os == 'Linux' && inputs.cache-pnpm-verification == 'true'
+ shell: bash
+ env:
+ POLICY_HASH: ${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', '.npmrc') }}
+ run: |
+ printf 'path=%s/lockfile-verified.jsonl\n' "$(pnpm cache path)" >> "$GITHUB_OUTPUT"
+ printf 'key=pnpm-verification-v1-%s-%s-%s-%s\n' "$RUNNER_OS" "$RUNNER_ARCH" "$(pnpm --version)" "$POLICY_HASH" >> "$GITHUB_OUTPUT"
+
+ - name: Restore pnpm verification record
+ id: verification-cache-restore
+ if: steps.verification-cache.outputs.key != ''
+ continue-on-error: true
+ uses: actions/cache/restore@v5
+ with:
+ path: ${{ steps.verification-cache.outputs.path }}
+ key: ${{ steps.verification-cache.outputs.key }}
+
- name: Validate native runtime
shell: bash
env:
@@ -120,6 +152,15 @@ runs:
git -C "$GITHUB_WORKSPACE" diff --exit-code -- package.json pnpm-lock.yaml pnpm-workspace.yaml
fi
+ # pnpm checks the cached record's policy and validity; never bypass verification.
+ - name: Save pnpm verification record on main
+ if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' && steps.verification-cache.outputs.key != '' && steps.verification-cache-restore.outputs.cache-hit != 'true'
+ continue-on-error: true
+ uses: actions/cache/save@v5
+ with:
+ path: ${{ steps.verification-cache.outputs.path }}
+ key: ${{ steps.verification-cache.outputs.key }}
+
- name: Resolve Electron package cache
id: electron-package-cache
if: inputs.native-runtime == 'electron' || inputs.cache-electron-package == 'true'
@@ -140,12 +181,19 @@ runs:
printf 'version=%s\n' "$(node -p "require('./node_modules/electron/package.json').version")" >> "$GITHUB_OUTPUT"
- name: Cache Electron package archive
- if: inputs.native-runtime == 'electron' || inputs.cache-electron-package == 'true'
+ if: (github.event_name != 'pull_request' || runner.os != 'Linux') && steps.electron-package-cache.outputs.version != ''
uses: actions/cache@v5
with:
path: ${{ steps.electron-package-cache.outputs.cache-root }}
key: electron-package-${{ runner.os }}-${{ runner.arch }}-${{ steps.electron-package-cache.outputs.version }}
+ - name: Restore Electron package archive without saving
+ if: github.event_name == 'pull_request' && runner.os == 'Linux' && steps.electron-package-cache.outputs.version != ''
+ uses: actions/cache/restore@v5
+ with:
+ path: ${{ steps.electron-package-cache.outputs.cache-root }}
+ key: electron-package-${{ runner.os }}-${{ runner.arch }}-${{ steps.electron-package-cache.outputs.version }}
+
# Why cached: `--ignore-scripts` leaves node-pty without build/Release, so
# ensure-native-runtime node-gyp-compiles it in every job that asks for a runtime.
# The artifacts are ABI-bound, so the key carries the target runtime, the resolved
diff --git a/.github/actions/prepare-xterm-dependencies/action.yml b/.github/actions/prepare-xterm-dependencies/action.yml
new file mode 100644
index 00000000000..8fa54bd85ae
--- /dev/null
+++ b/.github/actions/prepare-xterm-dependencies/action.yml
@@ -0,0 +1,33 @@
+name: Restore xterm build dependencies
+description: Reuse installed dependencies for the pinned upstream checkout.
+outputs:
+ cache-key:
+ description: Exact dependency cache key.
+ value: ${{ steps.restore.outputs.cache-primary-key }}
+ cache-hit:
+ description: Whether the exact installed dependency cache was restored.
+ value: ${{ steps.restore.outputs.cache-hit }}
+runs:
+ using: composite
+ steps:
+ - id: runtime
+ shell: bash
+ run: |
+ . /etc/os-release
+ echo "image=$ID-$VERSION_ID" >> "$GITHUB_OUTPUT"
+ echo "node=$(node --version)" >> "$GITHUB_OUTPUT"
+ - id: restore
+ uses: actions/cache/restore@v5
+ with:
+ path: |
+ ${{ runner.temp }}/xterm-patch-build/upstream/.git
+ ${{ runner.temp }}/xterm-patch-build/upstream/node_modules
+ key: xterm-dependencies-v1-${{ runner.os }}-${{ steps.runtime.outputs.image }}-${{ runner.arch }}-${{ steps.runtime.outputs.node }}-${{ hashFiles('config/patches/xterm-upstream.json', 'config/scripts/regenerate-xterm-patches.mjs', 'config/scripts/xterm-patch-text.mjs', '.github/actions/prepare-xterm-dependencies/action.yml') }}
+ - name: Restore download cache on an installed-dependency miss
+ if: steps.restore.outputs.cache-hit != 'true'
+ uses: actions/cache/restore@v5
+ with:
+ path: |
+ ~/.npm
+ ${{ runner.temp }}/xterm-patch-build/upstream/.git
+ key: xterm-upstream-${{ hashFiles('config/patches/xterm-upstream.json') }}
diff --git a/.github/workflows/bun-profile-tests.yml b/.github/workflows/bun-profile-tests.yml
index e579782c651..5fae18f2f84 100644
--- a/.github/workflows/bun-profile-tests.yml
+++ b/.github/workflows/bun-profile-tests.yml
@@ -2,6 +2,7 @@ name: Bun profile persistence
on:
pull_request:
+ types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'src/**'
- 'config/**'
@@ -17,6 +18,8 @@ on:
- '.github/actions/install-node-dependencies/**'
- '.github/workflows/bun-profile-tests.yml'
workflow_dispatch:
+ schedule:
+ - cron: '30 11 * * *'
permissions:
contents: read
@@ -32,6 +35,8 @@ jobs:
timeout-minutes: 5
outputs:
should_run: ${{ steps.scope.outputs.should_run }}
+ qualification: ${{ steps.scope.outputs.qualification }}
+ runners: ${{ steps.scope.outputs.runners }}
steps:
- uses: actions/checkout@v6
with:
@@ -56,7 +61,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- os: [ubuntu-22.04, ubuntu-24.04-arm, macos-14, macos-15-intel, windows-2022, windows-11-arm]
+ os: ${{ fromJSON(needs.changes.outputs.runners || '["ubuntu-22.04","ubuntu-24.04-arm","macos-14","macos-15-intel","windows-2022","windows-11-arm"]') }}
runs-on: ${{ matrix.os }}
timeout-minutes: 20
env:
@@ -82,9 +87,12 @@ jobs:
node out/orcad/orcad.js --orcad-profile-state-preflight 00000000-0000-4000-8000-000000000018
linux_glibc_floor:
- needs: changes
- # Missing/failed detection runs the full matrix; manual runs remain unconditional.
- if: ${{ !cancelled() && needs.changes.outputs.should_run != 'false' }}
+ needs: [changes, persistence]
+ # A failed smoke already blocks qualification; missing scope still selects every platform.
+ if: >-
+ ${{ !cancelled() && needs.persistence.result == 'success' &&
+ needs.changes.outputs.should_run != 'false' &&
+ needs.changes.outputs.qualification != 'false' }}
strategy:
fail-fast: false
matrix:
@@ -107,9 +115,12 @@ jobs:
- run: pnpm test:bun:profile --artifact
linux_musl:
- needs: changes
- # Missing/failed detection runs the full matrix; manual runs remain unconditional.
- if: ${{ !cancelled() && needs.changes.outputs.should_run != 'false' }}
+ needs: [changes, persistence]
+ # A failed smoke already blocks qualification; missing scope still selects every platform.
+ if: >-
+ ${{ !cancelled() && needs.persistence.result == 'success' &&
+ needs.changes.outputs.should_run != 'false' &&
+ needs.changes.outputs.qualification != 'false' }}
strategy:
fail-fast: false
matrix:
diff --git a/.github/workflows/ci-cache-warmup.yml b/.github/workflows/ci-cache-warmup.yml
index 9eb64a242d7..7309f7e3912 100644
--- a/.github/workflows/ci-cache-warmup.yml
+++ b/.github/workflows/ci-cache-warmup.yml
@@ -54,6 +54,10 @@ jobs:
with:
native-runtime: node
node-version: '24'
+ cache-electron-package: 'true'
+
+ - name: Populate shared Electron archive
+ run: node config/scripts/install-electron-package-binary.mjs
- uses: ./.github/actions/prepare-git-compatibility
@@ -83,6 +87,9 @@ jobs:
with:
native-runtime: node
node-version: '24'
+ cache-electron-package: 'true'
+ - name: Populate shared Electron archive
+ run: node config/scripts/install-electron-package-binary.mjs
- name: Verify native cache is usable
run: node config/scripts/ensure-native-runtime.mjs --check-only
diff --git a/.github/workflows/ci-closed-pr-caches.yml b/.github/workflows/ci-closed-pr-caches.yml
new file mode 100644
index 00000000000..38cf5803a14
--- /dev/null
+++ b/.github/workflows/ci-closed-pr-caches.yml
@@ -0,0 +1,33 @@
+name: Clean closed PR caches
+
+on:
+ pull_request_target:
+ types: [closed]
+
+permissions:
+ actions: write
+
+jobs:
+ clean:
+ runs-on: ubuntu-latest
+ timeout-minutes: 5
+ steps:
+ # No checkout: this runs trusted default-branch code, including for fork PRs.
+ - uses: actions/github-script@v8
+ with:
+ script: |
+ const ref = `refs/pull/${context.payload.pull_request.number}/merge`
+ const caches = await github.paginate(github.rest.actions.getActionsCacheList, {
+ ...context.repo, ref, per_page: 100
+ })
+ for (const cache of caches) {
+ if (cache.ref !== ref) throw new Error(`Unexpected cache ref: ${cache.ref}`)
+ try {
+ await github.rest.actions.deleteActionsCacheById({
+ ...context.repo, cache_id: cache.id
+ })
+ } catch (error) {
+ if (error.status !== 404) throw error
+ }
+ }
+ core.info(`Removed ${caches.length} caches scoped to ${ref}`)
diff --git a/.github/workflows/ci-pnpm-verification-pilot.yml b/.github/workflows/ci-pnpm-verification-pilot.yml
new file mode 100644
index 00000000000..2a35a52fcd0
--- /dev/null
+++ b/.github/workflows/ci-pnpm-verification-pilot.yml
@@ -0,0 +1,65 @@
+name: pnpm verification cache pilot
+
+on:
+ pull_request:
+ paths: ['.github/workflows/ci-pnpm-verification-pilot.yml']
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+concurrency:
+ group: pnpm-verification-pilot-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+env:
+ ORCA_BACKGROUND_LAUNCH: '1'
+
+jobs:
+ seed:
+ strategy:
+ matrix:
+ runner: [ubuntu-latest, ubuntu-24.04-arm]
+ runs-on: ${{ matrix.runner }}
+ timeout-minutes: 15
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+ - uses: ./.github/actions/install-node-dependencies
+ id: deps
+ # PR caches are scoped to the PR merge ref; main never restores them.
+ - uses: actions/cache/save@v5
+ if: steps.deps.outputs.verification-cache-hit != 'true'
+ with:
+ path: ${{ steps.deps.outputs.verification-cache-path }}
+ key: ${{ steps.deps.outputs.verification-cache-key }}
+
+ measure:
+ needs: seed
+ name: measure ${{ matrix.runner }} sample ${{ matrix.sample }} cache ${{ matrix.cache }}
+ strategy:
+ fail-fast: false
+ max-parallel: 4
+ matrix:
+ runner: [ubuntu-latest, ubuntu-24.04-arm]
+ sample: [1, 2, 3]
+ cache: ['false', 'true']
+ runs-on: ${{ matrix.runner }}
+ timeout-minutes: 15
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+ - uses: ./.github/actions/install-node-dependencies
+ id: deps
+ with:
+ cache-pnpm-verification: ${{ matrix.cache }}
+ - name: Validate treatment and frozen install
+ env:
+ CACHE_ENABLED: ${{ matrix.cache }}
+ CACHE_HIT: ${{ steps.deps.outputs.verification-cache-hit }}
+ run: |
+ if [ "$CACHE_ENABLED" = true ]; then test "$CACHE_HIT" = true; fi
+ git diff --exit-code -- package.json pnpm-lock.yaml pnpm-workspace.yaml
+ node -e "require.resolve('vitest'); require.resolve('electron')"
diff --git a/.github/workflows/ci-runner-demand.yml b/.github/workflows/ci-runner-demand.yml
new file mode 100644
index 00000000000..966813a65e4
--- /dev/null
+++ b/.github/workflows/ci-runner-demand.yml
@@ -0,0 +1,33 @@
+name: CI runner demand
+
+on:
+ schedule:
+ - cron: '23 4 * * *'
+ workflow_dispatch:
+
+permissions:
+ contents: read
+ actions: read
+
+concurrency:
+ group: ci-runner-demand
+ cancel-in-progress: false
+
+jobs:
+ report:
+ runs-on: ubuntu-slim
+ timeout-minutes: 15
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ sparse-checkout: config/scripts
+ persist-credentials: false
+ - name: Measure the previous complete 24 hours
+ env:
+ GH_TOKEN: ${{ github.token }}
+ run: node config/scripts/ci-runner-demand.mjs
+ - uses: actions/upload-artifact@v7
+ with:
+ name: ci-runner-demand-${{ github.run_id }}
+ path: ci-demand/
+ retention-days: 30
diff --git a/.github/workflows/ci-xterm-cache.yml b/.github/workflows/ci-xterm-cache.yml
new file mode 100644
index 00000000000..fada7ea8cab
--- /dev/null
+++ b/.github/workflows/ci-xterm-cache.yml
@@ -0,0 +1,55 @@
+name: Shared xterm dependency cache
+on:
+ push:
+ branches: [main]
+ paths:
+ - '.github/workflows/ci-xterm-cache.yml'
+ - '.github/actions/prepare-xterm-dependencies/**'
+ - 'config/patches/xterm-upstream.json'
+ - 'config/scripts/regenerate-xterm-patches.mjs'
+ - 'config/scripts/xterm-patch-text.mjs'
+ - 'package.json'
+ # Refresh after Node patch releases or cache eviction without rebuilding on hits.
+ schedule:
+ - cron: '17 5 * * *'
+ workflow_dispatch:
+permissions:
+ contents: read
+concurrency:
+ group: xterm-cache-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+env:
+ ORCA_BACKGROUND_LAUNCH: '1'
+jobs:
+ seed:
+ if: github.ref == 'refs/heads/main'
+ runs-on: ubuntu-24.04-arm
+ timeout-minutes: 10
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+ - uses: actions/setup-node@v6
+ with:
+ node-version-file: package.json
+ package-manager-cache: false
+ - uses: ./.github/actions/prepare-xterm-dependencies
+ id: cache
+ - name: Verify and populate dependencies
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: node config/scripts/regenerate-xterm-patches.mjs --check --work-dir="$RUNNER_TEMP/xterm-patch-build"
+ - uses: actions/cache/save@v5
+ if: steps.cache.outputs.cache-hit != 'true'
+ with:
+ path: |
+ ${{ runner.temp }}/xterm-patch-build/upstream/.git
+ ${{ runner.temp }}/xterm-patch-build/upstream/node_modules
+ key: ${{ steps.cache.outputs.cache-key }}
+ - name: Preserve fallback downloads
+ if: steps.cache.outputs.cache-hit != 'true'
+ uses: actions/cache/save@v5
+ with:
+ path: |
+ ~/.npm
+ ${{ runner.temp }}/xterm-patch-build/upstream/.git
+ key: xterm-upstream-${{ hashFiles('config/patches/xterm-upstream.json') }}
diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml
index ad9c1ee5139..4177b141d8a 100644
--- a/.github/workflows/e2e.yml
+++ b/.github/workflows/e2e.yml
@@ -32,9 +32,8 @@ on:
required: false
type: string
schedule:
- # Why: GitHub cron uses UTC; these slots map to 10am and 3pm
- # America/Phoenix for the default-branch E2E run.
- - cron: '0 17,22 * * *'
+ # One complete daily reference run; targeted PR coverage remains unchanged.
+ - cron: '0 17 * * *'
jobs:
build:
@@ -201,7 +200,14 @@ jobs:
node config/scripts/ci-e2e-shard-plan.mjs --verify ci-shards/assignment.json ci-shards/selected-discovery.json
- name: Run E2E tests (${{ matrix.shard_name }})
- run: xvfb-run --auto-servernum bash .github/scripts/e2e-with-window-manager.sh env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 ORCA_E2E_WEB_CLIENT=1 ORCA_RELAY_PATH="$GITHUB_WORKSPACE/out/relay" pnpm run test:e2e --test-list=ci-shards/selected.txt
+ env:
+ PLAYWRIGHT_JSON_OUTPUT_FILE: ci-shards/results.json
+ run: xvfb-run --auto-servernum bash .github/scripts/e2e-with-window-manager.sh env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 ORCA_E2E_WEB_CLIENT=1 ORCA_RELAY_PATH="$GITHUB_WORKSPACE/out/relay" pnpm run test:e2e --test-list=ci-shards/selected.txt --reporter=list,json
+
+ - name: Summarize E2E failures
+ if: always()
+ continue-on-error: true
+ run: node config/scripts/ci-e2e-failure-summary.mjs ci-shards/results.json
- name: Upload E2E shard assignment
if: always()
diff --git a/.github/workflows/mobile.yml b/.github/workflows/mobile.yml
index fa532c9814d..7ec322b0203 100644
--- a/.github/workflows/mobile.yml
+++ b/.github/workflows/mobile.yml
@@ -61,7 +61,10 @@ concurrency:
jobs:
verify:
if: github.event_name == 'pull_request'
- runs-on: ubuntu-latest
+ # Why ARM: 209s of this job is Vitest and nothing here needs x86: no Android SDK, emulator, gradle,
+ # Hermes or Watchman, no docker, and no artifacts. The Gemfile.lock lists the generic `ruby`
+ # platform, so frozen bundler installs without an aarch64-linux entry.
+ runs-on: ubuntu-24.04-arm
env:
# Why: an unfrozen bundler silently re-resolves when Gemfile.lock drifts
@@ -177,7 +180,8 @@ jobs:
recording-pin:
name: RPC recording pin
- runs-on: ubuntu-latest
+ # Why ARM: pure Node plus git; the golden comparison masks `platform`.
+ runs-on: ubuntu-24.04-arm
defaults:
run:
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index 1313b2e5266..27fc5215044 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -1,5 +1,5 @@
name: PR Checks
-run-name: 'PR ${{ github.event.pull_request.number }} | source ${{ github.sha }} | workflow ${{ github.workflow_sha }}'
+run-name: "PR ${{ github.event.pull_request.number }} | source ${{ github.sha }} | workflow ${{ github.workflow_sha }} | unit ${{ github.event.pull_request.draft && vars.ORCA_UNIT_SELECTION_MODE == 'selected' && 'selected' || 'full' }}"
on:
pull_request:
@@ -59,12 +59,15 @@ jobs:
- name: Checkout
uses: actions/checkout@v6
with:
- # Why blob:none: full history is needed for the merge-base diff, but historical
- # file contents are not. Blobs are ~89% of this repo's pack, and Git fetches the
- # few this job actually reads on demand.
- fetch-depth: 0
+ # Why depth 50 and not 0: every diff below resolves to HEAD^1, so only the merge commit
+ # and a little slack are needed. Fetching all 8127 refs' commit graph cost ~20s here and
+ # is charged to the start of all 22 jobs, since they all need this one.
+ # Why blob:none stays: the sparse tree below is ~7 files, so there are no blobs to
+ # materialize and no promisor refetch. Measured 9.5s -> 1.6s against 20.7s today.
+ fetch-depth: 50
filter: blob:none
sparse-checkout: |
+ /config/scripts/git-pull-request-diff-base.mjs
/package.json
/README.md
/docs/readme/
@@ -79,8 +82,9 @@ jobs:
- name: Reject new root-level files and folders
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
- HEAD_SHA: ${{ github.event.pull_request.head.sha }}
- run: node .github/scripts/check-root-directory-entries.mjs "$BASE_SHA" "$HEAD_SHA"
+ run: |
+ DIFF_BASE="$(node config/scripts/git-pull-request-diff-base.mjs "$BASE_SHA")"
+ node .github/scripts/check-root-directory-entries.mjs "$DIFF_BASE" HEAD
# The full Git index retains link targets outside the sparse working tree.
- name: Check README local links
@@ -99,12 +103,15 @@ jobs:
id: filter
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
- HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
set -euo pipefail
+ # Why HEAD^1 and not --merge-base: HEAD is the pull request merge commit, so its first
+ # parent is the base side already. Computing a merge base instead would require the
+ # payload base SHA to be in the graph, which is what forced a full-history checkout.
+ DIFF_BASE="$(node config/scripts/git-pull-request-diff-base.mjs "$BASE_SHA")"
# Why --no-renames: name-only rename detection can report only the destination.
# A code file moved under docs/ must still expose its code-side deletion.
- CHANGED="$(git diff --name-only --no-renames --diff-filter=ACDMR --merge-base "$BASE_SHA" "$HEAD_SHA")"
+ CHANGED="$(git diff --name-only --no-renames --diff-filter=ACDMR "$DIFF_BASE" HEAD)"
echo "Changed paths:"
printf '%s\n' "$CHANGED"
printf '%s\n' "$CHANGED" | node config/scripts/pr-code-change-scope.mjs | tee -a "$GITHUB_OUTPUT"
@@ -116,8 +123,8 @@ jobs:
run: |
set -euo pipefail
BASE="${{ github.event.pull_request.base.sha }}"
- HEAD="${{ github.event.pull_request.head.sha }}"
- CHANGED="$(git diff --name-only --diff-filter=AMCR --merge-base "$BASE" "$HEAD")"
+ DIFF_BASE="$(node config/scripts/git-pull-request-diff-base.mjs "$BASE")"
+ CHANGED="$(git diff --name-only --diff-filter=AMCR "$DIFF_BASE" HEAD)"
# Source routes are executable contracts so a test can prove exact
# authorities, exclusions, and sentinels without evaluating workflow shell.
TEST_FILES_JSON="$(printf '%s\n' "$CHANGED" | node config/scripts/pr-e2e-source-routing.mjs)"
@@ -131,7 +138,7 @@ jobs:
# trigger on IME source rather than on a spec name in some route's list.
NATIVE_IME_SOURCE_CHANGED="$(printf '%s\n' "$CHANGED" | node config/scripts/pr-e2e-source-routing.mjs --native-ime-source)"
echo "native_ime_source_changed=$NATIVE_IME_SOURCE_CHANGED" >> "$GITHUB_OUTPUT"
- WSL_CHANGED="$(git diff --name-only --no-renames --diff-filter=ACDMR --merge-base "$BASE" "$HEAD")"
+ WSL_CHANGED="$(git diff --name-only --no-renames --diff-filter=ACDMR "$DIFF_BASE" HEAD)"
WSL_SOURCE_CHANGED="$(printf '%s\n' "$WSL_CHANGED" | node config/scripts/pr-e2e-source-routing.mjs --wsl-source)"
echo "wsl_source_changed=$WSL_SOURCE_CHANGED" >> "$GITHUB_OUTPUT"
echo "Native IME source changed: $NATIVE_IME_SOURCE_CHANGED"
@@ -148,20 +155,35 @@ jobs:
name: static analysis
needs: [code_paths]
if: needs.code_paths.outputs.static_analysis == 'true'
- runs-on: ubuntu-latest
+ # Why ARM: measured 128s against 172s on ubuntu-latest, with every compute step faster --
+ # type-aware 24s->15s, anti-slop 28->19s, localization extraction 67->46s, the orcad smoke
+ # 39->14s. Both lint engines ship linux-arm64 and the Bun target follows process.arch, so
+ # the whole toolchain resolves. Free for public repositories, same as the typecheck job.
+ runs-on: ubuntu-24.04-arm
steps:
- name: Checkout
uses: actions/checkout@v6
with:
- # Why blob:none: full history is needed for the merge-base diff, but historical
- # file contents are not. Blobs are ~89% of this repo's pack, and Git fetches the
- # few this job actually reads on demand.
- fetch-depth: 0
- filter: blob:none
+ # Why depth 50: the gates below diff against HEAD^1, so no merge base is computed and
+ # the payload base SHA need not be in the graph.
+ # Why no blob:none here, unlike code_paths: this job checks out all 30,226 files, and
+ # the filter then forces a second promisor fetch of nearly every blob. Measured 23s
+ # blobless against ~11s without it.
+ fetch-depth: 50
persist-credentials: false
+ # Why two guarded installs: the mixed root+mobile store entry is 537 MB against
+ # 321 MB for root alone, and restoring it costs 8.6s against 4.6s. Most PRs skip the
+ # mobile install below, so they were paying 216 MB for packages they never link. The
+ # root-only key is also the one the hourly warmer reseeds. Only one of these runs.
- uses: ./.github/actions/install-node-dependencies
+ if: needs.code_paths.outputs.mobile_dependencies != 'true'
+ with:
+ native-runtime: node
+
+ - uses: ./.github/actions/install-node-dependencies
+ if: needs.code_paths.outputs.mobile_dependencies == 'true'
with:
native-runtime: node
cache-dependency-path: |
@@ -218,9 +240,9 @@ jobs:
- name: Check VM runtime rollback compatibility
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
- HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
- if git diff --quiet --merge-base "$BASE_SHA" "$HEAD_SHA" -- \
+ DIFF_BASE="$(node config/scripts/git-pull-request-diff-base.mjs "$BASE_SHA")"
+ if git diff --quiet "$DIFF_BASE" HEAD -- \
src/shared/ephemeral-vm-runtime-store.ts \
src/shared/ephemeral-vm-runtime-feature-store.ts \
src/shared/ephemeral-vm-runtime-rollback-projection.ts \
@@ -252,10 +274,10 @@ jobs:
background: true
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
- HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
# Detection failures run the full check; renames retain the removed input path.
- if git diff --name-only --no-renames -z --merge-base "$BASE_SHA" "$HEAD_SHA" > "$RUNNER_TEMP/localization-changes" &&
+ DIFF_BASE="$(node config/scripts/git-pull-request-diff-base.mjs "$BASE_SHA")"
+ if git diff --name-only --no-renames -z "$DIFF_BASE" HEAD > "$RUNNER_TEMP/localization-changes" &&
scope="$(node config/scripts/localization-extraction-change-scope.mjs "$RUNNER_TEMP/localization-changes")" && [ "$scope" = false ]; then
echo "Localization extraction inputs are unchanged."
else
@@ -268,11 +290,11 @@ jobs:
- name: Boot orcad and round-trip a terminal
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
- HEAD_SHA: ${{ github.event.pull_request.head.sha }}
ORCA_BACKGROUND_LAUNCH: '1'
run: |
# Detection failures run the smoke; renames retain the removed input path.
- if git diff --name-only --no-renames -z --merge-base "$BASE_SHA" "$HEAD_SHA" > "$RUNNER_TEMP/orcad-smoke-changes" &&
+ DIFF_BASE="$(node config/scripts/git-pull-request-diff-base.mjs "$BASE_SHA")"
+ if git diff --name-only --no-renames -z "$DIFF_BASE" HEAD > "$RUNNER_TEMP/orcad-smoke-changes" &&
scope="$(node config/scripts/orcad-terminal-smoke-change-scope.mjs "$RUNNER_TEMP/orcad-smoke-changes")" && [ "$scope" = false ]; then
echo "Orcad terminal smoke inputs are unchanged."
else
@@ -413,7 +435,8 @@ jobs:
name: Codex index-heal contract
needs: [code_paths]
if: needs.code_paths.outputs.codex_index_heal_contract == 'true'
- runs-on: ubuntu-latest
+ # Why ARM: @openai/codex ships @openai/codex-linux-arm64.
+ runs-on: ubuntu-24.04-arm
env:
CODEX_CLI_VERSION: '0.150.1'
@@ -448,7 +471,10 @@ jobs:
name: xterm patch sync
needs: [code_paths]
if: needs.code_paths.outputs.xterm_patch_sync == 'true'
- runs-on: ubuntu-latest
+ # Why ARM: the patch check rebuilds 4 packages x 2 builds and byte-compares against the
+ # checked-in bundles. Those were generated on Linux x64 and reproduce byte-for-byte on
+ # darwin-arm64, so the output is neither host-arch nor host-OS dependent.
+ runs-on: ubuntu-24.04-arm
steps:
- name: Checkout
@@ -456,21 +482,14 @@ jobs:
with:
persist-credentials: false
- - uses: ./.github/actions/install-node-dependencies
-
- # Why: the check rebuilds every package in the manifest from a pinned upstream
- # commit — @xterm/xterm and its three addons, each built twice (once unmodified to
- # prove the toolchain still reproduces the published bundles, once patched). Caching
- # the npm metadata and the shallow clone keeps the repeated cost to the builds
- # themselves; the key is the manifest, so a commit, package or toolchain bump
- # invalidates it.
- - name: Restore upstream xterm build inputs
- uses: actions/cache@v5
+ # The generator uses Node built-ins and installs its own upstream toolchain.
+ - uses: actions/setup-node@v6
with:
- path: |
- ~/.npm
- ${{ runner.temp }}/xterm-patch-build/upstream/.git
- key: xterm-upstream-${{ hashFiles('config/patches/xterm-upstream.json') }}
+ node-version-file: package.json
+ package-manager-cache: false
+
+ # Rebuild both pristine and patched bundles; reuse only the pinned toolchain.
+ - uses: ./.github/actions/prepare-xterm-dependencies
- name: Verify xterm patches match the pinned upstream build
env:
@@ -481,7 +500,8 @@ jobs:
name: shell contracts
needs: [code_paths]
if: needs.code_paths.outputs.shell_contracts == 'true'
- runs-on: ubuntu-latest
+ # Why ARM: fish 4.x is published for noble/arm64 and zsh is in the arm64 archive.
+ runs-on: ubuntu-24.04-arm
# Why: this job's cost is almost entirely package download, and a stalled mirror has
# no wall-clock bound of its own. A successful run finishes in ~4.5 minutes, so this
# is generous; it exists so a wedge fails the job instead of holding the whole run
@@ -620,16 +640,19 @@ jobs:
node-version: '24'
test:
- needs: [code_paths, test_native_cache]
+ needs: [code_paths, test_native_cache, static_analysis, typecheck]
# Honor cancellation while allowing the optional native-cache primer to skip.
if: >-
!cancelled() &&
needs.code_paths.outputs.test == 'true' &&
+ needs.static_analysis.result == 'success' &&
+ needs.typecheck.result == 'success' &&
(needs.test_native_cache.result == 'success' || needs.test_native_cache.result == 'skipped')
uses: ./.github/workflows/unit-tests.yml
with:
node_versions: '["24"]'
runner: ubuntu-24.04-arm
+ selection_mode: ${{ vars.ORCA_UNIT_SELECTION_MODE || 'shadow' }}
# Why a separate job: the test needs a real Chrome, and the sharded `test` matrix
# would pay for it on every shard to run one file in whichever shard it landed in.
@@ -751,7 +774,8 @@ jobs:
name: cross-version wire compatibility
needs: [code_paths]
if: needs.code_paths.outputs.cross-version-wire == 'true'
- runs-on: ubuntu-latest
+ # Why ARM: source-only: tagged checkout plus in-process vitest, no docker or browser.
+ runs-on: ubuntu-24.04-arm
steps:
# Why fetch-depth 0: the harness extracts the newest release tag to skew
@@ -783,6 +807,7 @@ jobs:
tests/e2e/cross-version-wire/cross-version-agent-session-wire.unit.test.ts
tests/e2e/cross-version-wire/cross-version-worktree-identity-downgrade.unit.test.ts
tests/e2e/cross-version-wire/cross-version-session-tabs-retirement-proof.unit.test.ts
+ tests/e2e/cross-version-wire/agent-session-resume-marker-downgrade.unit.test.ts
tests/e2e/cross-version-wire/agent-session-unproven-release-downgrade.unit.test.ts
tests/e2e/cross-version-wire/cross-version-worktree-ps-verdict.unit.test.ts
@@ -790,7 +815,8 @@ jobs:
name: managed hooks on Node 18
needs: [code_paths]
if: needs.code_paths.outputs.managed_hook_node18 == 'true'
- runs-on: ubuntu-latest
+ # Why ARM: Node 18 publishes linux-arm64; the per-platform runtime files are read as data.
+ runs-on: ubuntu-24.04-arm
steps:
- name: Checkout
@@ -813,7 +839,7 @@ jobs:
package:
name: package
- needs: [code_paths]
+ needs: [code_paths, static_analysis, typecheck]
if: needs.code_paths.outputs.package == 'true'
runs-on: ubuntu-latest
# Let the serial Docker gates reach their own deadlines and report cleanup failures.
@@ -826,7 +852,7 @@ jobs:
persist-credentials: false
- name: Cache electron-builder downloads
- uses: actions/cache@v5
+ uses: actions/cache/restore@v5
with:
path: ~/.cache/electron-builder
key: electron-builder-linux-${{ hashFiles('pnpm-lock.yaml') }}
@@ -961,7 +987,7 @@ jobs:
package_windows:
name: package (windows)
- needs: [code_paths]
+ needs: [code_paths, static_analysis, typecheck]
if: needs.code_paths.outputs.package_windows == 'true'
runs-on: windows-2022
timeout-minutes: 30
diff --git a/.github/workflows/pullfrog.yml b/.github/workflows/pullfrog.yml
index d5030252f88..2fc81c887bb 100644
--- a/.github/workflows/pullfrog.yml
+++ b/.github/workflows/pullfrog.yml
@@ -1,6 +1,6 @@
-# PULLFROG ACTION — DO NOT EDIT EXCEPT WHERE INDICATED
+# Explicit review identities share workflow concurrency; legacy names use ordered cancellation.
name: Pullfrog
-run-name: ${{ inputs.name || github.workflow }}
+run-name: ${{ inputs.name || github.workflow }}${{ inputs.pull_request_number && format(' | PR {0}', inputs.pull_request_number) || '' }}
on:
workflow_dispatch:
inputs:
@@ -11,21 +11,71 @@ on:
type: string
description: Run name
+ pull_request_number:
+ type: string
+ description: Optional PR identity for cancelling superseded reviews
+ head_sha:
+ type: string
+ description: Optional expected PR head; stale reviews are skipped
+
permissions:
contents: read
+ pull-requests: read
+
+concurrency:
+ group: ${{ inputs.pull_request_number && format('pullfrog-pr-{0}', inputs.pull_request_number) || format('pullfrog-run-{0}', github.run_id) }}
+ cancel-in-progress: true
jobs:
+ review_scope:
+ runs-on: ubuntu-slim
+ permissions:
+ contents: read
+ pull-requests: read
+ actions: write
+ outputs:
+ current: ${{ steps.scope.outputs.current }}
+ number: ${{ steps.scope.outputs.number }}
+ head: ${{ steps.scope.outputs.head }}
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ sparse-checkout: config/scripts/pullfrog-review-scope.cjs
+ sparse-checkout-cone-mode: false
+ persist-credentials: false
+ - uses: actions/github-script@v8
+ id: scope
+ with:
+ script: |
+ const { reviewScope } = require('./config/scripts/pullfrog-review-scope.cjs')
+ await reviewScope({ github, context, core })
+
pullfrog:
+ needs: review_scope
+ if: needs.review_scope.outputs.current == 'true'
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
+ pull-requests: read
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 1
+ - name: Recheck review head before starting agent
+ id: freshness
+ if: needs.review_scope.outputs.number != ''
+ uses: actions/github-script@v8
+ env:
+ REVIEW_NUMBER: ${{ needs.review_scope.outputs.number }}
+ REVIEW_HEAD: ${{ needs.review_scope.outputs.head }}
+ with:
+ script: |
+ const { data: pr } = await github.rest.pulls.get({ ...context.repo, pull_number: Number(process.env.REVIEW_NUMBER) })
+ core.setOutput('current', pr.state === 'open' && pr.head.sha === process.env.REVIEW_HEAD)
- name: Run agent
+ if: needs.review_scope.outputs.number == '' || steps.freshness.outputs.current == 'true'
uses: pullfrog/pullfrog@v0
with:
prompt: ${{ inputs.prompt }}
diff --git a/.github/workflows/release-policy.yml b/.github/workflows/release-policy.yml
index e6ab98f0d0d..53decc5e7e3 100644
--- a/.github/workflows/release-policy.yml
+++ b/.github/workflows/release-policy.yml
@@ -19,80 +19,18 @@ jobs:
runs-on: ubuntu-slim
timeout-minutes: 5
steps:
+ # Why: release events run this file from the tagged commit, so load the module from the same commit.
+ - uses: actions/checkout@v6
+ with:
+ sparse-checkout: config/scripts/release-policy.mjs
+ sparse-checkout-cone-mode: false
+ persist-credentials: false
- name: Enforce release policy
uses: actions/github-script@v8
with:
script: |
- const release = context.payload.release;
- const tag = release.tag_name;
- const author = release.author?.login;
- const number = "(?:0|[1-9][0-9]*)";
- const version = `${number}\\.${number}\\.${number}`;
- const stableTag = new RegExp(`^v${version}$`);
- const prereleaseTag = new RegExp(
- `^(?:v${version}-rc\\.${number}(?:\\.[0-9A-Za-z]+)?|mobile(?:-android)?-v${version})$`,
- );
- const expectedPrerelease = prereleaseTag.test(tag);
- const allowed = author === "github-actions[bot]" &&
- (stableTag.test(tag) || expectedPrerelease);
- const { owner, repo } = context.repo;
-
- async function restoreLatestStable() {
- const releases = await github.paginate(github.rest.repos.listReleases, {
- owner,
- repo,
- per_page: 100,
- });
- const stable = releases
- .filter((candidate) =>
- !candidate.draft &&
- !candidate.prerelease &&
- candidate.author?.login === "github-actions[bot]" &&
- stableTag.test(candidate.tag_name),
- )
- .sort((left, right) => {
- const a = left.tag_name.slice(1).split(".").map(Number);
- const b = right.tag_name.slice(1).split(".").map(Number);
- return a.reduce((result, part, index) => result || part - b[index], 0);
- })
- .at(-1);
- if (stable) {
- await github.rest.repos.updateRelease({
- owner,
- repo,
- release_id: stable.id,
- make_latest: "true",
- });
- }
- }
-
- if (allowed) {
- if (release.prerelease !== expectedPrerelease) {
- await github.rest.repos.updateRelease({
- owner,
- repo,
- release_id: release.id,
- prerelease: expectedPrerelease,
- make_latest: expectedPrerelease ? "false" : "legacy",
- });
- }
- await restoreLatestStable();
- return;
- }
-
- await github.rest.repos.updateRelease({
- owner,
- repo,
- release_id: release.id,
- draft: true,
- prerelease: true,
- make_latest: "false",
- });
- await restoreLatestStable();
- await github.rest.repos.deleteRelease({ owner, repo, release_id: release.id });
- try {
- await github.rest.git.deleteRef({ owner, repo, ref: `tags/${tag}` });
- } catch (error) {
- if (error.status !== 404) throw error;
- }
- core.warning(`Deleted unauthorized release ${tag} created by ${author || "unknown"}.`);
+ const { pathToFileURL } = await import("node:url")
+ const { enforceReleasePolicy } = await import(
+ pathToFileURL(`${process.env.GITHUB_WORKSPACE}/config/scripts/release-policy.mjs`).href
+ )
+ await enforceReleasePolicy({ github, context, core })
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
index ccb44c0faa6..2691f4907bc 100644
--- a/.github/workflows/unit-tests.yml
+++ b/.github/workflows/unit-tests.yml
@@ -14,19 +14,48 @@ on:
default: ubuntu-latest
type: string
+ selection_mode:
+ description: Shadow validates selection; selected applies it only to draft PRs.
+ required: false
+ default: shadow
+ type: string
+
permissions:
contents: read
jobs:
+ plan:
+ runs-on: ubuntu-latest
+ timeout-minutes: 5
+ outputs:
+ shards: ${{ steps.plan.outputs.shards }}
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ fetch-depth: 2
+ persist-credentials: false
+ - uses: ./.github/actions/install-node-dependencies
+ - name: Plan unit selection
+ id: plan
+ env:
+ ORCA_UNIT_SELECTION_MODE: ${{ inputs.selection_mode }}
+ run: node config/scripts/ci-unit-plan.mjs
+ - uses: actions/upload-artifact@v7
+ continue-on-error: true
+ with:
+ name: unit-selection-attempt-${{ github.run_attempt }}
+ path: ci-shards/unit-selection.json
+ retention-days: 14
+
test:
- name: tests node ${{ matrix.node }} ${{ matrix.shard }}/${{ matrix.shard_total }}
+ needs: plan
+ name: tests node ${{ matrix.node }} ${{ matrix.shard.index }}/${{ matrix.shard.count }}
runs-on: ${{ inputs.runner }}
strategy:
fail-fast: false
matrix:
node: ${{ fromJSON(inputs.node_versions) }}
- shard: [1, 2, 3, 4, 5, 6, 7, 8]
- shard_total: [8]
+ shard: ${{ fromJSON(needs.plan.outputs.shards) }}
steps:
- name: Checkout
@@ -43,6 +72,12 @@ jobs:
- name: Install Electron package binary for tests
run: node config/scripts/install-electron-package-binary.mjs
+ - uses: actions/download-artifact@v8
+ continue-on-error: true
+ with:
+ name: unit-selection-attempt-${{ github.run_attempt }}
+ path: ci-shards/
+
- name: Test shard
env:
ORCA_BALANCE_UNIT_SHARDS: '1'
@@ -50,27 +85,7 @@ jobs:
run: |
export ORCA_SHARD_SOURCE_SHA="$(git rev-parse HEAD)"
pnpm exec vitest run --config config/vitest.config.ts \
- --exclude=src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts \
- --exclude=src/main/daemon/shell-ready.test.ts \
- --exclude=src/main/daemon/node-pty-fd-leak.test.ts \
- --exclude=src/main/providers/local-pty-shell-ready-zsh-launch-environment.test.ts \
- --exclude=src/main/providers/__tests__/shell-ready-framework-example.test.ts \
- --exclude=src/main/pty/omp-shell-wrapper-alias-safety.test.ts \
- --exclude=src/main/pty/omp-shell-wrapper.node-pty.test.ts \
- --exclude=src/main/shell-startup-feature-channel.test.ts \
- --exclude=src/main/terminal-history-fish-session.node-pty.test.ts \
- --exclude=src/main/zsh-scoped-histfile.live-shell.test.ts \
- --exclude=src/main/zsh-startup-hook-user-config-equivalence.live-shell.test.ts \
- --exclude=src/main/zsh-wrapper-version-mismatch.live-shell.test.ts \
- --exclude=src/renderer/src/components/terminal-pane/fish-color-scheme-child-stdin.node-pty.test.ts \
- --exclude=src/shared/fish-query-reply-child-stdin.node-pty.test.ts \
- --exclude=src/shared/pty-reply-echo-shapes.node-pty.test.ts \
- --exclude=src/shared/startup-shell-portability.live-shell.test.ts \
- --exclude=src/shared/posix-command-path-lookup.test.ts \
- --exclude=tests/e2e/relay-region-compatibility.unit.test.ts \
- --exclude=tests/e2e/relay-region-correction.unit.test.ts \
- --exclude=tests/e2e/cross-version-wire/** \
- --shard=${{ matrix.shard }}/${{ matrix.shard_total }}
+ --shard=${{ matrix.shard.index }}/${{ matrix.shard.count }}
- name: Upload unit shard assignment
if: always()
@@ -78,11 +93,40 @@ jobs:
continue-on-error: true
uses: actions/upload-artifact@v7
with:
- name: unit-shard-node-${{ matrix.node }}-${{ matrix.shard }}-attempt-${{ github.run_attempt }}
+ name: unit-shard-node-${{ matrix.node }}-${{ matrix.shard.index }}-attempt-${{ github.run_attempt }}
path: ci-shards/
retention-days: 14
if-no-files-found: warn
+ selection_evidence:
+ needs: test
+ if: ${{ !cancelled() }}
+ continue-on-error: true
+ runs-on: ubuntu-slim
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ sparse-checkout: config/scripts/ci-unit-selection-review.mjs
+ sparse-checkout-cone-mode: false
+ persist-credentials: false
+ - uses: actions/setup-node@v6
+ with:
+ node-version: '24'
+ - uses: actions/download-artifact@v8
+ with:
+ pattern: unit-shard-node-*-attempt-${{ github.run_attempt }}
+ path: unit-evidence/
+ - name: Compare selection with full results
+ continue-on-error: true
+ run: node config/scripts/ci-unit-selection-review.mjs unit-evidence
+ - uses: actions/upload-artifact@v7
+ if: always()
+ continue-on-error: true
+ with:
+ name: unit-selection-review-attempt-${{ github.run_attempt }}
+ path: unit-evidence/selection-review.json
+ retention-days: 30
+
relay_integration:
name: relay integration node ${{ matrix.node }}
strategy:
diff --git a/README.md b/README.md
index 98efc301c2f..0f337f9e677 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@
Monitor and steer your agents from your phone — get notified when an agent finishes and send follow-ups from anywhere.
-[iOS App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) · [TestFlight](https://testflight.apple.com/join/YjeGMQBA) · [Android APK 0.0.50](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.50/app-release.apk) · [Docs →](https://www.onorca.dev/docs/mobile)
+[iOS App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) · [Android APK 0.0.50](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.50/app-release.apk) · [Docs →](https://www.onorca.dev/docs/mobile)
@@ -179,6 +179,7 @@ Works with **any CLI agent** — if it runs in a terminal, it runs in Orca.
Cursor
GitHub Copilot
Muse
+ DeepSeek Harness
ZCode
OpenCode
MiMo Code
@@ -195,6 +196,7 @@ Works with **any CLI agent** — if it runs in a terminal, it runs in Orca.
Charm
Cline
Codebuff
+ Freebuff
Command Code
Continue
Droid
@@ -231,7 +233,7 @@ yay -S stably-orca-bin
Pair with your desktop app to monitor and steer your agents from your phone.
-- **iOS:** [Download on the App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) or [join TestFlight](https://testflight.apple.com/join/YjeGMQBA)
+- **iOS:** [Download on the App Store](https://apps.apple.com/us/app/orca-ide/id6766130217)
- **Android:** [Download APK 0.0.50](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.50/app-release.apk) · [Install guide](https://www.onorca.dev/docs/android-apk)
---
diff --git a/config/e2e-failure-tracking.json b/config/e2e-failure-tracking.json
new file mode 100644
index 00000000000..fe51488c706
--- /dev/null
+++ b/config/e2e-failure-tracking.json
@@ -0,0 +1 @@
+[]
diff --git a/config/electron-builder-pr-linux.config.cjs b/config/electron-builder-pr-linux.config.cjs
new file mode 100644
index 00000000000..54056e80996
--- /dev/null
+++ b/config/electron-builder-pr-linux.config.cjs
@@ -0,0 +1,8 @@
+const release = require('./electron-builder.config.cjs')
+
+// CI discards these packages after smoke tests; keep release compression unchanged.
+module.exports = {
+ ...release,
+ deb: { ...release.deb, fpm: [...(release.deb.fpm ?? []), '--deb-compression-level=1'] },
+ rpm: { ...release.rpm, fpm: [...(release.rpm.fpm ?? []), '--rpm-compression-level=1'] }
+}
diff --git a/config/scripts/bun-profile-change-scope.mjs b/config/scripts/bun-profile-change-scope.mjs
index c30c4a282ac..7b8b47b69aa 100644
--- a/config/scripts/bun-profile-change-scope.mjs
+++ b/config/scripts/bun-profile-change-scope.mjs
@@ -8,6 +8,7 @@ import {
ORCAD_ENTRY_POINT
} from './orcad-entry-build.mjs'
import { bunProfileTestPaths } from './bun-profile-test-paths.mjs'
+import { bunProfileQualification } from './bun-profile-qualification.mjs'
const ROOT = resolve(import.meta.dirname, '../..')
const BUILD_SCRIPTS = [
@@ -29,7 +30,9 @@ const ALWAYS_FILES = new Set([
'tsconfig.json',
'.github/workflows/bun-profile-tests.yml',
'config/scripts/bun-profile-change-scope.mjs',
- 'config/scripts/bun-profile-change-scope.test.mjs'
+ 'config/scripts/bun-profile-change-scope.test.mjs',
+ 'config/scripts/bun-profile-qualification.mjs',
+ 'config/scripts/bun-profile-qualification.test.mjs'
])
const ALWAYS_PREFIXES = [
'.github/actions/install-node-dependencies/',
@@ -110,7 +113,11 @@ export async function classifyBunProfileChanges(changedFiles, collect = collectB
reason: matched ? `Runtime or test dependency changed: ${matched}` : 'No Bun inputs changed'
}
} catch (error) {
- return { shouldRun: true, reason: `Dependency graph unavailable: ${String(error)}` }
+ return {
+ shouldRun: true,
+ graphUnavailable: true,
+ reason: `Dependency graph unavailable: ${String(error)}`
+ }
}
}
@@ -118,7 +125,14 @@ if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href)
const changedFiles = readFileSync(process.argv[2], 'utf8').split('\0').filter(Boolean)
const result = await classifyBunProfileChanges(changedFiles)
console.log(result.reason)
- const output = `should_run=${String(result.shouldRun)}\n`
+ let event = {}
+ try {
+ event = JSON.parse(readFileSync(process.env.GITHUB_EVENT_PATH, 'utf8'))
+ } catch {
+ // Missing event evidence retains full qualification.
+ }
+ const policy = bunProfileQualification(changedFiles, result, event)
+ const output = `should_run=${result.shouldRun}\nqualification=${policy.qualification}\nrunners=${JSON.stringify(policy.runners)}\n`
if (process.env.GITHUB_OUTPUT) {
appendFileSync(process.env.GITHUB_OUTPUT, output)
} else {
diff --git a/config/scripts/bun-profile-change-scope.test.mjs b/config/scripts/bun-profile-change-scope.test.mjs
index 4b6d1647ffc..e813be93621 100644
--- a/config/scripts/bun-profile-change-scope.test.mjs
+++ b/config/scripts/bun-profile-change-scope.test.mjs
@@ -78,6 +78,7 @@ it.each([
'.npmrc',
'tsconfig.json',
'config/tsconfig.node.json',
+ 'config/scripts/bun-profile-qualification.mjs',
'config/patches/node-pty@1.1.0.patch',
'native/windows-registry/src/addon.cc',
'.github/actions/install-node-dependencies/action.yml',
@@ -140,12 +141,15 @@ it('keeps all ten platform jobs and runs them when detection is skipped or fails
expect(workflow.jobs.changes.steps[0].with['persist-credentials']).toBe(false)
const detect = workflow.jobs.changes.steps.find((step) => step.id === 'scope')
expect(detect.run).toContain('git diff --name-only --no-renames -z HEAD^1 HEAD')
- let count = 0
- for (const jobName of ['persistence', 'linux_glibc_floor', 'linux_musl']) {
+ expect(workflow.on.pull_request.types).toContain('ready_for_review')
+ expect(workflow.on.schedule).toHaveLength(1)
+ expect(workflow.jobs.persistence.strategy.matrix.os).toContain('needs.changes.outputs.runners')
+ for (const jobName of ['linux_glibc_floor', 'linux_musl']) {
const job = workflow.jobs[jobName]
- expect(job.needs).toBe('changes')
- expect(job.if).toBe("${{ !cancelled() && needs.changes.outputs.should_run != 'false' }}")
- count += job.strategy.matrix.os.length
+ expect(job.needs).toEqual(['changes', 'persistence'])
+ expect(job.if).toContain("needs.persistence.result == 'success'")
+ expect(job.if).toContain("needs.changes.outputs.qualification != 'false'")
+ expect(job.if).toContain("needs.changes.outputs.should_run != 'false'")
+ expect(job.strategy.matrix.os).toEqual(['ubuntu-22.04', 'ubuntu-24.04-arm'])
}
- expect(count).toBe(10)
})
diff --git a/config/scripts/bun-profile-qualification.mjs b/config/scripts/bun-profile-qualification.mjs
new file mode 100644
index 00000000000..799f459ff85
--- /dev/null
+++ b/config/scripts/bun-profile-qualification.mjs
@@ -0,0 +1,42 @@
+export const BUN_PERSISTENCE_RUNNERS = [
+ 'ubuntu-22.04',
+ 'ubuntu-24.04-arm',
+ 'macos-14',
+ 'macos-15-intel',
+ 'windows-2022',
+ 'windows-11-arm'
+]
+
+const QUALIFICATION_PREFIXES = [
+ 'config/',
+ 'native/',
+ 'resources/',
+ '.github/',
+ 'src/main/persistence/',
+ 'src/main/sqlite/',
+ 'src/main/orcad/',
+ 'src/main/providers/',
+ 'src/main/daemon/',
+ 'src/main/ssh/',
+ 'src/relay/',
+ 'src/shared/child-process/'
+]
+
+export function bunProfileQualification(changedFiles, scope, event = {}) {
+ const sensitive = changedFiles.some(
+ (file) =>
+ !file.includes('/') ||
+ QUALIFICATION_PREFIXES.some((prefix) => file.startsWith(prefix)) ||
+ /(?:^|[/.-])(?:windows|win32|wsl|macos|darwin|linux|posix|bun)(?:[/.-]|$)/i.test(file)
+ )
+ // Only a proven unrelated platform change in a draft may defer qualification.
+ const full =
+ event.pull_request?.draft !== true ||
+ changedFiles.length === 0 ||
+ scope.graphUnavailable === true ||
+ sensitive
+ return {
+ qualification: full,
+ runners: full ? BUN_PERSISTENCE_RUNNERS : ['ubuntu-22.04']
+ }
+}
diff --git a/config/scripts/bun-profile-qualification.test.mjs b/config/scripts/bun-profile-qualification.test.mjs
new file mode 100644
index 00000000000..9ebc5e437e1
--- /dev/null
+++ b/config/scripts/bun-profile-qualification.test.mjs
@@ -0,0 +1,47 @@
+import { expect, it } from 'vitest'
+import { BUN_PERSISTENCE_RUNNERS, bunProfileQualification } from './bun-profile-qualification.mjs'
+
+const draft = { pull_request: { draft: true } }
+const scope = { shouldRun: true }
+
+it('defers only platform qualification for ordinary draft runtime changes', () => {
+ expect(
+ bunProfileQualification(['src/main/runtime/rpc/methods/example.ts'], scope, draft)
+ ).toEqual({
+ qualification: false,
+ runners: ['ubuntu-22.04']
+ })
+})
+
+it.each([
+ 'package.json',
+ 'native/windows-registry/src/addon.cc',
+ 'config/vitest.config.ts',
+ 'src/main/ssh/ssh-provider.ts',
+ 'src/main/providers/local-pty-provider.ts',
+ 'src/shared/child-process/run-process.ts',
+ 'src/main/persistence/profile-state/store.ts',
+ 'src/main/sqlite/database.ts',
+ 'src/main/orcad/entry.ts',
+ 'src/main/runtime/windows-terminal.ts',
+ 'src/shared/linux-glibc.ts',
+ 'src/main/daemon/entry.ts',
+ 'src/relay/index.ts',
+ 'src/main/wsl/runner.ts'
+])('retains all platforms for sensitive input %s', (file) => {
+ expect(bunProfileQualification([file], scope, draft)).toEqual({
+ qualification: true,
+ runners: BUN_PERSISTENCE_RUNNERS
+ })
+})
+
+it('qualifies every ready commit, scheduled/manual runs and incomplete evidence', () => {
+ const paths = ['src/main/runtime/rpc/methods/example.ts']
+ for (const event of [{}, { pull_request: { draft: false } }]) {
+ expect(bunProfileQualification(paths, scope, event).qualification).toBe(true)
+ }
+ expect(bunProfileQualification([], scope, draft).qualification).toBe(true)
+ expect(
+ bunProfileQualification(paths, { ...scope, graphUnavailable: true }, draft).qualification
+ ).toBe(true)
+})
diff --git a/config/scripts/check-changed-code-quality.mjs b/config/scripts/check-changed-code-quality.mjs
index a49ad1ddb51..71a512ad407 100644
--- a/config/scripts/check-changed-code-quality.mjs
+++ b/config/scripts/check-changed-code-quality.mjs
@@ -136,9 +136,14 @@ function resolveBase(root, requestedBase) {
}
export function collectAddedLineRanges(root, requestedBase) {
- const base = resolveBase(root, requestedBase)
- const mergeBase = runGit(root, ['merge-base', base, 'HEAD']).trim()
- const comparisonBase = resolvePullRequestDiffBase(root, mergeBase)
+ // On a pull_request checkout HEAD is the merge commit, so its first parent is the base side and
+ // no merge base has to be computed. Resolving it first is what lets CI checkout shallowly: the
+ // payload base SHA can lag HEAD^1 by any number of commits and need not be in the graph at all.
+ // Off that ref (local runs) the requested base is an arbitrary branch tip, so the merge base is
+ // still what isolates this branch's own lines.
+ const comparisonBase =
+ resolvePullRequestDiffBase(root, null) ??
+ runGit(root, ['merge-base', resolveBase(root, requestedBase), 'HEAD']).trim()
const changedFiles = splitNullDelimited(
runGit(root, ['diff', '--name-only', '-z', '--diff-filter=ACMRTUB', comparisonBase, '--'])
)
@@ -174,7 +179,7 @@ export function collectAddedLineRanges(root, requestedBase) {
const lineCount = readFileSync(absolutePath, 'utf8').split(/\r?\n/).length
rangesByFile.set(file, [{ start: 1, end: lineCount }])
}
- return { base, comparisonBase, rangesByFile }
+ return { comparisonBase, rangesByFile }
}
function parseOxlintOutput(stdout, label) {
@@ -414,10 +419,12 @@ export function main(
root = process.cwd(),
requestedBase = process.argv.slice(2).find((argument) => argument !== '--')
) {
- const { base, comparisonBase, rangesByFile } = collectAddedLineRanges(root, requestedBase)
+ const { comparisonBase, rangesByFile } = collectAddedLineRanges(root, requestedBase)
const files = [...rangesByFile.keys()]
if (files.length === 0) {
- console.log(`Changed-code quality gate: no changed JavaScript or TypeScript since ${base}.`)
+ console.log(
+ `Changed-code quality gate: no changed JavaScript or TypeScript since ${comparisonBase.slice(0, 12)}.`
+ )
return 0
}
diff --git a/config/scripts/check-root-directory-entries.test.mjs b/config/scripts/check-root-directory-entries.test.mjs
index f606d5623fd..6de07a053c7 100644
--- a/config/scripts/check-root-directory-entries.test.mjs
+++ b/config/scripts/check-root-directory-entries.test.mjs
@@ -228,8 +228,14 @@ describe('root directory guard', () => {
expect(guardJob.if).toBeUndefined()
expect(guardStep.if).toBeUndefined()
- expect(guardJob.steps[0].with['fetch-depth']).toBe(0)
+ // Why >= 2 rather than 0: the guard compares the merge commit's first parent against the
+ // merged tree, so it needs both parents present but no history beyond them. Depth 1 would
+ // leave HEAD^1 unreachable and the guard would fail closed on every run.
+ expect(guardJob.steps[0].with['fetch-depth']).toBeGreaterThanOrEqual(2)
expect(guardStep.run).toContain('node .github/scripts/check-root-directory-entries.mjs')
+ // The base side must come from the merge ref, not the event payload, or a shallow checkout
+ // cannot resolve it.
+ expect(guardStep.run).toContain('git-pull-request-diff-base.mjs')
expect(workflow.jobs.verify.needs).toContain('code_paths')
})
})
diff --git a/config/scripts/ci-background-step-barriers.test.mjs b/config/scripts/ci-background-step-barriers.test.mjs
index d367d20a7cc..f731d9d08cb 100644
--- a/config/scripts/ci-background-step-barriers.test.mjs
+++ b/config/scripts/ci-background-step-barriers.test.mjs
@@ -107,7 +107,7 @@ describe('CI background step barriers', () => {
it('joins package setup before reading outputs and preserves isolated native probes', () => {
const steps = pr.jobs.package.steps
// Parallel composites must not race to download their shared cache action on first use.
- const cacheAction = steps.findIndex((step) => step.uses === 'actions/cache@v5')
+ const cacheAction = steps.findIndex((step) => step.uses === 'actions/cache/restore@v5')
expect(cacheAction).toBeGreaterThanOrEqual(0)
expect(cacheAction).toBeLessThan(
steps.findIndex((step) => step.id === 'shutdown-fixture-cache')
diff --git a/config/scripts/ci-cache-warmup-workflow.test.mjs b/config/scripts/ci-cache-warmup-workflow.test.mjs
index 803563f61c8..322cf982d82 100644
--- a/config/scripts/ci-cache-warmup-workflow.test.mjs
+++ b/config/scripts/ci-cache-warmup-workflow.test.mjs
@@ -1,6 +1,7 @@
import { readFileSync } from 'node:fs'
import { expect, it } from 'vitest'
import { parse } from 'yaml'
+import { BUN_PERSISTENCE_RUNNERS } from './bun-profile-qualification.mjs'
const readWorkflow = (name) =>
parse(readFileSync(new URL(`../../.github/workflows/${name}.yml`, import.meta.url), 'utf8'))
@@ -15,7 +16,21 @@ it('warms the same Linux Node runtime the PR shards restore', () => {
const primer = readWorkflow('pr').jobs.test_native_cache
expect(arm['runs-on']).toBe(primer['runs-on'])
expect(arm.steps.at(-1).run).toBe('node config/scripts/ensure-native-runtime.mjs --check-only')
- expect(install.with).toEqual(primer.steps.find((step) => step.uses === install.uses).with)
+ expect(install.with).toMatchObject(primer.steps.find((step) => step.uses === install.uses).with)
+})
+
+it('populates shared Electron archives on both Linux architectures without changing the Node ABI', () => {
+ for (const name of ['warm', 'warm-linux-arm']) {
+ const steps = workflow.jobs[name].steps
+ const install = steps.find(
+ (step) => step.uses === './.github/actions/install-node-dependencies'
+ )
+ expect(install.with['native-runtime']).toBe('node')
+ expect(install.with['cache-electron-package']).toBe('true')
+ const populate = steps.find((step) => step.name === 'Populate shared Electron archive')
+ expect(populate.run).toBe('node config/scripts/install-electron-package-binary.mjs')
+ expect(steps.indexOf(populate)).toBeGreaterThan(steps.indexOf(install))
+ }
})
it('publishes incremental state under a key and prefix that new PRs restore', () => {
@@ -50,9 +65,8 @@ it('bounds warming to the required platforms and validates changes without grant
it('warms and probes both Windows images with the persistence job runtime', () => {
const job = workflow.jobs['warm-windows']
- const persistence = readWorkflow('bun-profile-tests').jobs.persistence
expect(job.strategy.matrix.os).toEqual(
- persistence.strategy.matrix.os.filter((os) => os.startsWith('windows-'))
+ BUN_PERSISTENCE_RUNNERS.filter((os) => os.startsWith('windows-'))
)
expect(job['runs-on']).toBe('${{ matrix.os }}')
expect(job.strategy['fail-fast']).toBe(false)
diff --git a/config/scripts/ci-closed-pr-caches.test.mjs b/config/scripts/ci-closed-pr-caches.test.mjs
new file mode 100644
index 00000000000..44edb5e48df
--- /dev/null
+++ b/config/scripts/ci-closed-pr-caches.test.mjs
@@ -0,0 +1,57 @@
+import { readFileSync } from 'node:fs'
+import { runInNewContext } from 'node:vm'
+import { expect, it, vi } from 'vitest'
+import { parse } from 'yaml'
+
+const workflow = parse(readFileSync('.github/workflows/ci-closed-pr-caches.yml', 'utf8'))
+const script = workflow.jobs.clean.steps[0].with.script
+const ref = 'refs/pull/123/merge'
+
+function run(caches, remove = vi.fn().mockResolvedValue(undefined)) {
+ const list = vi.fn()
+ const paginate = vi.fn().mockResolvedValue(caches)
+ const result = runInNewContext(`(async () => { ${script} })()`, {
+ context: { repo: { owner: 'owner', repo: 'repo' }, payload: { pull_request: { number: 123 } } },
+ github: {
+ paginate,
+ rest: { actions: { getActionsCacheList: list, deleteActionsCacheById: remove } }
+ },
+ core: { info: vi.fn() }
+ })
+ return { result, remove, paginate, list }
+}
+
+it('uses default-branch code without checking out a closed PR', () => {
+ expect(workflow.on).toEqual({ pull_request_target: { types: ['closed'] } })
+ expect(workflow.permissions).toEqual({ actions: 'write' })
+ expect(workflow.jobs.clean.steps).toHaveLength(1)
+ expect(workflow.jobs.clean.steps[0].uses).toBe('actions/github-script@v8')
+})
+
+it('lists and deletes only caches scoped to the closed merge ref', async () => {
+ const { result, paginate, list, remove } = run([
+ { id: 12, ref },
+ { id: 13, ref }
+ ])
+ await result
+ expect(paginate).toHaveBeenCalledWith(list, { owner: 'owner', repo: 'repo', ref, per_page: 100 })
+ expect(remove.mock.calls).toEqual([
+ [{ owner: 'owner', repo: 'repo', cache_id: 12 }],
+ [{ owner: 'owner', repo: 'repo', cache_id: 13 }]
+ ])
+})
+
+it('refuses a default-branch cache even if the API returns one', async () => {
+ const { result, remove } = run([{ id: 12, ref: 'refs/heads/main' }])
+ await expect(result).rejects.toThrow('Unexpected cache ref')
+ expect(remove).not.toHaveBeenCalled()
+})
+
+it('tolerates an eviction race but surfaces permission failures', async () => {
+ await expect(
+ run([{ id: 12, ref }], vi.fn().mockRejectedValue({ status: 404 })).result
+ ).resolves.toBeUndefined()
+ await expect(
+ run([{ id: 12, ref }], vi.fn().mockRejectedValue({ status: 403 })).result
+ ).rejects.toEqual({ status: 403 })
+})
diff --git a/config/scripts/ci-dependency-download-cache.test.mjs b/config/scripts/ci-dependency-download-cache.test.mjs
index fad103d8fa6..ce628cc7c45 100644
--- a/config/scripts/ci-dependency-download-cache.test.mjs
+++ b/config/scripts/ci-dependency-download-cache.test.mjs
@@ -48,7 +48,11 @@ describe('CI dependency download caches', () => {
action.runs.steps.findIndex((step) => step.name === 'Install dependencies')
)
const saves = action.runs.steps.filter((step) => step.uses === 'actions/cache/save@v5')
- expect(saves).toEqual([])
+ expect(saves).toHaveLength(1)
+ expect(saves[0].name).toBe('Save pnpm verification record on main')
+ expect(saves[0].if).toContain("github.ref == 'refs/heads/main'")
+ expect(saves[0].if).toContain("github.event_name != 'pull_request'")
+ expect(saves[0].with.path).toBe('${{ steps.verification-cache.outputs.path }}')
})
it('restores Windows packaging downloads from the release cache without a PR upload', () => {
@@ -99,8 +103,8 @@ describe('CI dependency download caches', () => {
expect(writer.with['restore-keys']).toBeUndefined()
expect(writer.with['lookup-only']).toBe(true)
expect(release.steps.indexOf(writer)).toBeGreaterThan(release.steps.indexOf(combined))
- // Retain PR fallback saves until a successful release seeds the default-branch entry.
- expect(consumer.uses).toBe('actions/cache@v5')
+ expect(consumer.uses).toBe('actions/cache/restore@v5')
+ expect(consumer.with['restore-keys'].trim()).toBe('electron-builder-linux-')
expect(combined.uses).toBe('actions/cache@v5')
expect(linux.eb_cache_path.trim().split('\n')).toEqual([
'~/.cache/electron',
@@ -109,6 +113,20 @@ describe('CI dependency download caches', () => {
})
})
+it('shares Electron archives with PRs without uploading PR-local copies', () => {
+ const save = action.runs.steps.find((step) => step.name === 'Cache Electron package archive')
+ const restore = action.runs.steps.find(
+ (step) => step.name === 'Restore Electron package archive without saving'
+ )
+ expect(save.if).toContain("github.event_name != 'pull_request' || runner.os != 'Linux'")
+ expect(restore.if).toContain("github.event_name == 'pull_request' && runner.os == 'Linux'")
+ expect(save.if).toContain("steps.electron-package-cache.outputs.version != ''")
+ expect(restore.if).toContain("steps.electron-package-cache.outputs.version != ''")
+ expect(save.uses).toBe('actions/cache@v5')
+ expect(restore.uses).toBe('actions/cache/restore@v5')
+ expect(restore.with).toEqual(save.with)
+})
+
describe('release install targets', () => {
const macCpuFlag = '--cpu=current,x64,arm64'
// Both shapes: `run:` steps and steps wrapped in nick-fields/retry (`with.command`).
diff --git a/config/scripts/ci-e2e-failure-summary.mjs b/config/scripts/ci-e2e-failure-summary.mjs
new file mode 100644
index 00000000000..f95fed20dac
--- /dev/null
+++ b/config/scripts/ci-e2e-failure-summary.mjs
@@ -0,0 +1,92 @@
+import { appendFileSync, readFileSync } from 'node:fs'
+import { pathToFileURL } from 'node:url'
+import { trackE2eFailures } from './ci-e2e-failure-tracking.mjs'
+
+export function e2eFailureSummary(report) {
+ const failures = []
+ let passed = 0
+ let skipped = 0
+ function visit(suite, parents = [], parentFile) {
+ const titles = [...parents, suite.title].filter(Boolean)
+ const file = suite.file ?? parentFile
+ for (const spec of suite.specs ?? []) {
+ for (const test of spec.tests ?? []) {
+ if (test.status === 'expected') {
+ passed++
+ continue
+ }
+ if (test.status === 'skipped') {
+ skipped++
+ continue
+ }
+ const errors = test.results.flatMap((result) => result.errors ?? [])
+ failures.push({
+ file: spec.file ?? file,
+ title: [...titles, spec.title].join(' › '),
+ project: test.projectName,
+ status: test.status,
+ message: errors
+ .map((error) => error.message ?? error.value ?? '')
+ .join('\n')
+ .slice(0, 2000)
+ })
+ }
+ }
+ for (const child of suite.suites ?? []) {
+ visit(child, titles, file)
+ }
+ }
+ for (const suite of report.suites ?? []) {
+ visit(suite)
+ }
+ return { passed, skipped, failures, errors: report.errors ?? [] }
+}
+
+export function renderE2eFailures(summary, records = [], now = new Date()) {
+ const escape = (value) =>
+ String(value ?? '')
+ .replaceAll('&', '&')
+ .replaceAll('<', '<')
+ .replaceAll('>', '>')
+ const tracked = trackE2eFailures(summary.failures, records, now)
+ const details = (failure) =>
+ `${escape(failure.status)}: ${escape(failure.file)} — ${escape(failure.title)}${escape(failure.message)} `
+ return [
+ '## E2E results',
+ '',
+ `${summary.passed} expected results; ${summary.skipped} skipped; ${summary.failures.length} unexpected/flaky results; ${summary.errors.length} run errors.`,
+ '',
+ `### Untracked failures (${tracked.untracked.length})`,
+ '',
+ ...tracked.untracked.map(details),
+ '',
+ `### Tracked failures (${tracked.known.length})`,
+ '',
+ ...tracked.known.flatMap((failure) => [
+ details(failure),
+ `Owner: ${escape(failure.tracking.owner)}; ${escape(failure.tracking.issue)}; expires ${escape(failure.tracking.expires)}.`
+ ]),
+ ...(tracked.invalid.length
+ ? [`${tracked.invalid.length} invalid/expired tracking entries were not used.`]
+ : []),
+ ...summary.errors.map((error) => `${escape(error.message ?? error.value)}`),
+ '',
+ 'Failures retain their original verdict. Repeated failures need a tracked owner, reproduction and review date; do not treat a red baseline as passing.',
+ ''
+ ].join('\n')
+}
+
+if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
+ try {
+ const summary = e2eFailureSummary(JSON.parse(readFileSync(process.argv[2], 'utf8')))
+ const records = JSON.parse(
+ readFileSync(new URL('../e2e-failure-tracking.json', import.meta.url), 'utf8')
+ )
+ appendFileSync(process.env.GITHUB_STEP_SUMMARY, renderE2eFailures(summary, records))
+ } catch (error) {
+ appendFileSync(
+ process.env.GITHUB_STEP_SUMMARY,
+ `E2E report unavailable (${error.code ?? 'invalid report'}); inspect the failing step and traces.\n`
+ )
+ }
+}
diff --git a/config/scripts/ci-e2e-failure-summary.test.mjs b/config/scripts/ci-e2e-failure-summary.test.mjs
new file mode 100644
index 00000000000..5594e4faa56
--- /dev/null
+++ b/config/scripts/ci-e2e-failure-summary.test.mjs
@@ -0,0 +1,79 @@
+import { expect, it } from 'vitest'
+import { e2eFailureSummary, renderE2eFailures } from './ci-e2e-failure-summary.mjs'
+import { trackE2eFailures } from './ci-e2e-failure-tracking.mjs'
+
+it('requires exact failures with an owner, issue and unexpired review date', () => {
+ const failure = {
+ file: 'test.spec.ts',
+ title: 'case',
+ project: 'electron',
+ message: 'expected focus failed'
+ }
+ const record = {
+ ...failure,
+ message: 'expected focus',
+ owner: '@owner',
+ issue: 'https://github.com/stablyai/orca/issues/123',
+ expires: '2026-10-01'
+ }
+ const now = new Date('2026-09-28')
+ expect(trackE2eFailures([failure], [null, record], now)).toMatchObject({
+ known: [{ ...failure, tracking: record }],
+ invalid: [null]
+ })
+ expect(trackE2eFailures([failure], null, now).untracked).toEqual([failure])
+ for (const change of [
+ { expires: '2026-09-27' },
+ { expires: '2026-09-31' },
+ { owner: '' },
+ { issue: '' },
+ { title: 'different' },
+ { message: 'different' },
+ { project: 'other' }
+ ]) {
+ expect(trackE2eFailures([failure], [{ ...record, ...change }], now).untracked).toEqual([
+ failure
+ ])
+ }
+})
+
+it('keeps failure, flaky, skipped and startup-error evidence separate', () => {
+ const report = {
+ errors: [{ message: 'startup failed' }],
+ suites: [
+ {
+ title: 'file',
+ file: 'tests/e2e/test.spec.ts',
+ suites: [
+ {
+ title: 'feature',
+ specs: [
+ {
+ title: 'case',
+ tests: [
+ { status: 'expected' },
+ { status: 'skipped' },
+ {
+ status: 'unexpected',
+ projectName: 'electron-headless',
+ results: [{ errors: [{ message: '' }] }]
+ },
+ {
+ status: 'flaky',
+ results: [{ errors: [{ message: 'first try' }] }, { errors: [] }]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ const summary = e2eFailureSummary(report)
+ expect(summary).toMatchObject({ passed: 1, skipped: 1, errors: report.errors })
+ expect(summary.failures).toHaveLength(2)
+ expect(summary.failures[0].title).toBe('file › feature › case')
+ expect(renderE2eFailures(summary)).toContain('<timeout>')
+ expect(renderE2eFailures(summary)).toContain('startup failed')
+})
diff --git a/config/scripts/ci-e2e-failure-tracking.mjs b/config/scripts/ci-e2e-failure-tracking.mjs
new file mode 100644
index 00000000000..3415c023ad5
--- /dev/null
+++ b/config/scripts/ci-e2e-failure-tracking.mjs
@@ -0,0 +1,42 @@
+export function trackE2eFailures(failures, records, now = new Date()) {
+ const known = []
+ const untracked = []
+ const invalid = []
+ const active = (Array.isArray(records) ? records : [records]).filter((record) => {
+ if (!record || typeof record !== 'object' || Array.isArray(record)) {
+ invalid.push(record)
+ return false
+ }
+ const expiry = new Date(`${record.expires}T23:59:59Z`)
+ const valid =
+ typeof record.file === 'string' &&
+ typeof record.title === 'string' &&
+ typeof record.message === 'string' &&
+ record.message.length > 0 &&
+ /^@[\w-]+(?:\/[\w-]+)?$/.test(record.owner ?? '') &&
+ /^https:\/\/github\.com\/stablyai\/orca\/issues\/\d+$/.test(record.issue ?? '') &&
+ /^\d{4}-\d{2}-\d{2}$/.test(record.expires ?? '') &&
+ Number.isFinite(expiry.getTime()) &&
+ expiry.toISOString().slice(0, 10) === record.expires &&
+ expiry.getTime() >= now.getTime()
+ if (!valid) {
+ invalid.push(record)
+ }
+ return valid
+ })
+ for (const failure of failures) {
+ const record = active.find(
+ (entry) =>
+ entry.file === failure.file &&
+ entry.title === failure.title &&
+ entry.project === failure.project &&
+ failure.message.includes(entry.message)
+ )
+ if (record) {
+ known.push({ ...failure, tracking: record })
+ } else {
+ untracked.push(failure)
+ }
+ }
+ return { known, untracked, invalid }
+}
diff --git a/config/scripts/ci-runner-demand.mjs b/config/scripts/ci-runner-demand.mjs
new file mode 100644
index 00000000000..7690ea358db
--- /dev/null
+++ b/config/scripts/ci-runner-demand.mjs
@@ -0,0 +1,100 @@
+import { appendFileSync, mkdirSync, writeFileSync } from 'node:fs'
+import { pathToFileURL } from 'node:url'
+import { runnerDemand, sampleWorkflowRuns } from './ci-runner-metrics.mjs'
+
+async function api(path, env) {
+ const response = await fetch(
+ `${env.GITHUB_API_URL ?? 'https://api.github.com'}/repos/${env.GITHUB_REPOSITORY}/${path}`,
+ {
+ headers: {
+ Authorization: `Bearer ${env.GH_TOKEN}`,
+ Accept: 'application/vnd.github+json',
+ 'X-GitHub-Api-Version': '2022-11-28'
+ },
+ signal: AbortSignal.timeout(30_000)
+ }
+ )
+ if (!response.ok) {
+ throw new Error(`Actions API: ${response.status}`)
+ }
+ return response.json()
+}
+
+export async function collectRunnerDemand(env = process.env, request = (path) => api(path, env)) {
+ const end = new Date(env.CI_METRICS_END ?? Date.now())
+ end.setUTCMinutes(0, 0, 0)
+ if (!Number.isFinite(end.getTime())) {
+ throw new Error('Invalid window end')
+ }
+ const runs = []
+ for (let hour = 0; hour < 24; hour++) {
+ const until = new Date(end.getTime() - hour * 3_600_000 - 1000)
+ const since = new Date(end.getTime() - (hour + 1) * 3_600_000)
+ const range = `${since.toISOString()}..${until.toISOString()}`
+ const path = `actions/runs?per_page=100&created=${encodeURIComponent(range)}`
+ const first = await request(path)
+ if (first.total_count > 1000) {
+ throw new Error('Hourly run inventory exceeds API limit; split the interval')
+ }
+ runs.push(...first.workflow_runs)
+ for (let page = 2; page <= Math.ceil(first.total_count / 100); page++) {
+ runs.push(...(await request(`${path}&page=${page}`)).workflow_runs)
+ }
+ }
+ const samples = sampleWorkflowRuns(runs)
+ // Bound API concurrency and preserve every selected observation, including zero-job runs.
+ for (let index = 0; index < samples.length; index += 4) {
+ await Promise.all(
+ samples.slice(index, index + 4).map(async (sample) => {
+ const path = `actions/runs/${sample.run.id}/jobs?per_page=100`
+ const first = await request(path)
+ sample.jobs = first.jobs
+ for (let page = 2; page <= Math.ceil(first.total_count / 100); page++) {
+ sample.jobs.push(...(await request(`${path}&page=${page}`)).jobs)
+ }
+ })
+ )
+ }
+ const report = {
+ start: new Date(end.getTime() - 86_400_000).toISOString(),
+ end: end.toISOString(),
+ method:
+ 'Stratified by workflow/conclusion, six sampled runs per stratum; latest attempts only; incomplete jobs excluded',
+ ...runnerDemand(runs, samples)
+ }
+ return { report, runs, samples }
+}
+
+export function demandMarkdown(report) {
+ return [
+ `## CI demand: ${report.start} to ${report.end}`,
+ '',
+ `Estimated full job duration for runs created in this window (not window-clipped occupancy); ${report.sampledRuns}/${report.populationRuns} runs sampled. ${report.method}.`,
+ '',
+ '| Workflow | Runs | Runner hours | Cancelled-run hours | Minutes/completed PR run |',
+ '| --- | ---: | ---: | ---: | ---: |',
+ ...report.workflows.map(
+ (row) =>
+ `| ${row.workflow} | ${row.runs} | ${(row.runnerMinutes / 60).toFixed(1)} | ${(row.cancelledRunnerMinutes / 60).toFixed(1)} | ${row.runnerMinutesPerCompletedPrRun?.toFixed(1) ?? '—'} |`
+ ),
+ '',
+ '| Runner labels | Hours | Queue/provisioning p95 minutes |',
+ '| --- | ---: | ---: |',
+ ...report.pools.map(
+ (pool) =>
+ `| ${pool.label} | ${(pool.runnerMinutes / 60).toFixed(1)} | ${pool.queueP95Minutes?.toFixed(1) ?? '—'} |`
+ ),
+ ''
+ ].join('\n')
+}
+
+if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
+ const evidence = await collectRunnerDemand()
+ mkdirSync('ci-demand', { recursive: true })
+ writeFileSync('ci-demand/evidence.json', JSON.stringify(evidence))
+ const markdown = demandMarkdown(evidence.report)
+ writeFileSync('ci-demand/report.md', markdown)
+ if (process.env.GITHUB_STEP_SUMMARY) {
+ appendFileSync(process.env.GITHUB_STEP_SUMMARY, markdown)
+ }
+}
diff --git a/config/scripts/ci-runner-metrics.mjs b/config/scripts/ci-runner-metrics.mjs
new file mode 100644
index 00000000000..d01ae3d0153
--- /dev/null
+++ b/config/scripts/ci-runner-metrics.mjs
@@ -0,0 +1,110 @@
+const minutesBetween = (start, end) => {
+ const value = (Date.parse(end) - Date.parse(start)) / 60_000
+ return Number.isFinite(value) ? Math.max(0, value) : 0
+}
+
+const workflowPath = (run) => run.path.split('@')[0]
+const workflowKey = (run) => run.workflow_id ?? workflowPath(run)
+
+export function weightedPercentile(values, percentile) {
+ const sorted = [...values].sort((a, b) => a.value - b.value)
+ const target = sorted.reduce((sum, item) => sum + item.weight, 0) * percentile
+ let seen = 0
+ for (const item of sorted) {
+ seen += item.weight
+ if (seen >= target) {
+ return item.value
+ }
+ }
+ return null
+}
+
+export function runnerDemand(runs, samples) {
+ const workflows = new Map()
+ const pools = new Map()
+ for (const run of runs) {
+ if (!workflows.has(workflowKey(run))) {
+ workflows.set(workflowKey(run), {
+ workflow: workflowPath(run),
+ runs: 0,
+ sampledRuns: 0,
+ runnerMinutes: 0,
+ cancelledRunnerMinutes: 0,
+ completedPrRuns: 0,
+ completedPrRunnerMinutes: 0
+ })
+ }
+ workflows.get(workflowKey(run)).runs++
+ }
+ let incompleteJobs = 0
+ for (const { run, jobs, weight } of samples) {
+ const row = workflows.get(workflowKey(run))
+ row.sampledRuns++
+ for (const job of jobs) {
+ if (!job.runner_name || !job.started_at) {
+ continue
+ }
+ if (!job.completed_at) {
+ incompleteJobs++
+ continue
+ }
+ const duration = minutesBetween(job.started_at, job.completed_at)
+ const weighted = duration * weight
+ row.runnerMinutes += weighted
+ if (run.conclusion === 'cancelled') {
+ row.cancelledRunnerMinutes += weighted
+ }
+ if (run.event === 'pull_request' && ['success', 'failure'].includes(run.conclusion)) {
+ row.completedPrRunnerMinutes += weighted
+ }
+ const label = [...job.labels].sort().join(', ') || 'unknown'
+ if (!pools.has(label)) {
+ pools.set(label, { label, runnerMinutes: 0, waits: [] })
+ }
+ const pool = pools.get(label)
+ pool.runnerMinutes += weighted
+ if (job.created_at) {
+ pool.waits.push({ value: minutesBetween(job.created_at, job.started_at), weight })
+ }
+ }
+ if (run.event === 'pull_request' && ['success', 'failure'].includes(run.conclusion)) {
+ row.completedPrRuns += weight
+ }
+ }
+ return {
+ populationRuns: runs.length,
+ sampledRuns: samples.length,
+ incompleteJobs,
+ workflows: [...workflows.values()]
+ .map((row) => ({
+ ...row,
+ runnerMinutesPerCompletedPrRun: row.completedPrRuns
+ ? row.completedPrRunnerMinutes / row.completedPrRuns
+ : null
+ }))
+ .sort((a, b) => b.runnerMinutes - a.runnerMinutes),
+ pools: [...pools.values()]
+ .map(({ waits, ...pool }) => ({ ...pool, queueP95Minutes: weightedPercentile(waits, 0.95) }))
+ .sort((a, b) => b.runnerMinutes - a.runnerMinutes)
+ }
+}
+
+export function sampleWorkflowRuns(runs, perStratum = 6, random = Math.random) {
+ const groups = new Map()
+ for (const run of runs) {
+ const key = `${workflowKey(run)}:${run.conclusion ?? run.status}`
+ if (!groups.has(key)) {
+ groups.set(key, [])
+ }
+ groups.get(key).push(run)
+ }
+ return [...groups.values()].flatMap((group) => {
+ const shuffled = [...group]
+ for (let index = shuffled.length - 1; index > 0; index--) {
+ const target = Math.floor(random() * (index + 1))
+ ;[shuffled[index], shuffled[target]] = [shuffled[target], shuffled[index]]
+ }
+ const selected = shuffled.slice(0, perStratum)
+ return selected.map((run) => ({ run, weight: group.length / selected.length }))
+ })
+}
diff --git a/config/scripts/ci-runner-metrics.test.mjs b/config/scripts/ci-runner-metrics.test.mjs
new file mode 100644
index 00000000000..ebf45cc7c35
--- /dev/null
+++ b/config/scripts/ci-runner-metrics.test.mjs
@@ -0,0 +1,95 @@
+import { expect, it } from 'vitest'
+import { runnerDemand, sampleWorkflowRuns } from './ci-runner-metrics.mjs'
+import { collectRunnerDemand } from './ci-runner-demand.mjs'
+
+const run = {
+ id: 1,
+ path: '.github/workflows/pr.yml',
+ event: 'pull_request',
+ conclusion: 'success'
+}
+const job = {
+ runner_name: 'hosted',
+ labels: ['ubuntu-latest'],
+ created_at: '2026-09-27T00:00:00Z',
+ started_at: '2026-09-27T00:03:00Z',
+ completed_at: '2026-09-27T00:08:00Z'
+}
+
+it('separates occupancy, queueing, cancellations and zero-job observations', () => {
+ const cancelled = { ...run, id: 2, conclusion: 'cancelled' }
+ const report = runnerDemand(
+ [run, cancelled],
+ [
+ { run, weight: 2, jobs: [job, { ...job, runner_name: null }] },
+ { run: cancelled, weight: 3, jobs: [job, { ...job, completed_at: null }] }
+ ]
+ )
+ expect(report.workflows[0]).toMatchObject({
+ runnerMinutes: 25,
+ cancelledRunnerMinutes: 15,
+ runnerMinutesPerCompletedPrRun: 5
+ })
+ expect(report.pools[0].queueP95Minutes).toBe(3)
+ expect(report.incompleteJobs).toBe(1)
+ expect(runnerDemand([run], [{ run, weight: 1, jobs: [] }]).workflows[0].runnerMinutes).toBe(0)
+})
+
+it('weights each workflow/outcome stratum back to the full inventory', () => {
+ const runs = Array.from({ length: 20 }, (_, index) => ({
+ ...run,
+ id: index,
+ conclusion: index < 10 ? 'success' : 'failure'
+ }))
+ const sample = sampleWorkflowRuns(runs, 2, () => 0.5)
+ expect(sample).toHaveLength(4)
+ expect(sample.reduce((sum, row) => sum + row.weight, 0)).toBe(20)
+ expect(new Set(sample.map((row) => row.run.id)).size).toBe(4)
+})
+
+it('paginates jobs and bounds run discovery to 24 complete hours', async () => {
+ const requests = []
+ const result = await collectRunnerDemand(
+ { CI_METRICS_END: '2026-09-28T04:59:00Z' },
+ async (path) => {
+ requests.push(path)
+ if (path.includes('/jobs')) {
+ return {
+ total_count: 101,
+ jobs: path.includes('page=2') ? [job] : Array.from({ length: 100 }, () => job)
+ }
+ }
+ return {
+ total_count: requests.length === 1 ? 1 : 0,
+ workflow_runs: requests.length === 1 ? [run] : []
+ }
+ }
+ )
+ expect(result.report.start).toBe('2026-09-27T04:00:00.000Z')
+ expect(result.report.end).toBe('2026-09-28T04:00:00.000Z')
+ expect(requests.filter((path) => path.startsWith('actions/runs?'))).toHaveLength(24)
+ expect(result.samples[0].jobs).toHaveLength(101)
+ expect(result.report.workflows[0].runnerMinutes).toBe(505)
+})
+
+it('refuses to publish a silently truncated inventory', async () => {
+ await expect(
+ collectRunnerDemand({}, async () => ({ total_count: 1001, workflow_runs: [] }))
+ ).rejects.toThrow('API limit')
+})
+
+it('groups ref-qualified paths under the stable workflow ID', () => {
+ const runs = [
+ { ...run, id: 1, workflow_id: 42, path: '.github/workflows/pr.yml@main' },
+ { ...run, id: 2, workflow_id: 42, path: '.github/workflows/pr.yml@feature' }
+ ]
+ const sample = sampleWorkflowRuns(runs, 1, () => 0.5)
+ expect(sample).toHaveLength(1)
+ expect(sample[0].weight).toBe(2)
+ expect(
+ runnerDemand(
+ runs,
+ sample.map((row) => ({ ...row, jobs: [job] }))
+ ).workflows
+ ).toMatchObject([{ workflow: '.github/workflows/pr.yml', runs: 2, runnerMinutes: 10 }])
+})
diff --git a/config/scripts/ci-unit-dependency-graph.mjs b/config/scripts/ci-unit-dependency-graph.mjs
new file mode 100644
index 00000000000..f491c1749de
--- /dev/null
+++ b/config/scripts/ci-unit-dependency-graph.mjs
@@ -0,0 +1,84 @@
+import { globSync, readFileSync } from 'node:fs'
+import { posix, join } from 'node:path'
+import ts from 'typescript-api'
+
+const EXTENSIONS = [
+ '',
+ '.ts',
+ '.tsx',
+ '.mjs',
+ '.js',
+ '.cjs',
+ '.json',
+ '/index.ts',
+ '/index.tsx',
+ '/index.js'
+]
+const INDIRECT_INPUT =
+ /\b(?:readFile\w*|readdir\w*|glob\w*|spawn\w*|execFile\w*|execSync|runProcess\w*|fork|Worker)\b|\bimport\s*\(\s*[^'"\s]|\brequire\s*\(\s*[^'"\s]|\bnew\s+URL\s*\(/
+
+function localPath(file, specifier) {
+ if (specifier.startsWith('.')) {
+ return posix.join(posix.dirname(file), specifier)
+ }
+ if (specifier.startsWith('@renderer/')) {
+ return `src/renderer/src/${specifier.slice(10)}`
+ }
+ if (specifier.startsWith('@/')) {
+ return `src/renderer/src/${specifier.slice(2)}`
+ }
+ return null
+}
+
+export function buildUnitDependencyGraph(sources) {
+ const reverse = new Map()
+ const opaque = new Set()
+ for (const [file, source] of sources) {
+ if (INDIRECT_INPUT.test(source) || file.startsWith('config/') || file.startsWith('tests/')) {
+ opaque.add(file)
+ }
+ for (const imported of ts.preProcessFile(source, true, true).importedFiles) {
+ const path = localPath(file, imported.fileName)
+ if (path === null) {
+ continue
+ }
+ const resolved = EXTENSIONS.map((extension) => path + extension).find((candidate) =>
+ sources.has(candidate)
+ )
+ if (!resolved) {
+ opaque.add(file)
+ continue
+ }
+ if (!reverse.has(resolved)) {
+ reverse.set(resolved, new Set())
+ }
+ reverse.get(resolved).add(file)
+ }
+ }
+ return { reverse, opaque }
+}
+
+export function collectUnitDependencyGraph(root = process.cwd()) {
+ const files = globSync(
+ [
+ 'src/**/*.{ts,tsx,js,mjs,cjs,json}',
+ 'config/**/*.{ts,tsx,js,mjs,cjs,json}',
+ 'tests/**/*.{ts,tsx,js,mjs,cjs,json}'
+ ],
+ { cwd: root }
+ )
+ const sources = new Map(
+ files.map((file) => [file.replaceAll('\\', '/'), readFileSync(join(root, file), 'utf8')])
+ )
+ return { ...buildUnitDependencyGraph(sources), files: new Set(sources.keys()) }
+}
+
+export function unitConsumers(seeds, reverse) {
+ const result = new Set(seeds)
+ for (const file of result) {
+ for (const consumer of reverse.get(file) ?? []) {
+ result.add(consumer)
+ }
+ }
+ return result
+}
diff --git a/config/scripts/ci-unit-files.mjs b/config/scripts/ci-unit-files.mjs
new file mode 100644
index 00000000000..ec7101b6ee3
--- /dev/null
+++ b/config/scripts/ci-unit-files.mjs
@@ -0,0 +1,41 @@
+import { globSync } from 'node:fs'
+import { defaultExclude } from 'vitest/config'
+
+export const UNIT_INCLUDE = [
+ 'src/**/*.test.ts',
+ 'src/**/*.test.tsx',
+ 'config/scripts/**/*.test.ts',
+ 'config/scripts/**/*.test.mjs',
+ 'tests/tools/**/*.test.mjs',
+ 'tests/e2e/**/*.unit.test.ts'
+]
+
+export const UNIT_EXCLUDE = [
+ ...defaultExclude,
+ 'src/main/daemon/repro-13767-shell-ready-marker-lost-to-exec.test.ts',
+ 'src/main/daemon/shell-ready.test.ts',
+ 'src/main/daemon/node-pty-fd-leak.test.ts',
+ 'src/main/providers/local-pty-shell-ready-zsh-launch-environment.test.ts',
+ 'src/main/providers/__tests__/shell-ready-framework-example.test.ts',
+ 'src/main/pty/omp-shell-wrapper-alias-safety.test.ts',
+ 'src/main/pty/omp-shell-wrapper.node-pty.test.ts',
+ 'src/main/shell-startup-feature-channel.test.ts',
+ 'src/main/terminal-history-fish-session.node-pty.test.ts',
+ 'src/main/zsh-scoped-histfile.live-shell.test.ts',
+ 'src/main/zsh-startup-hook-user-config-equivalence.live-shell.test.ts',
+ 'src/main/zsh-wrapper-version-mismatch.live-shell.test.ts',
+ 'src/renderer/src/components/terminal-pane/fish-color-scheme-child-stdin.node-pty.test.ts',
+ 'src/shared/fish-query-reply-child-stdin.node-pty.test.ts',
+ 'src/shared/pty-reply-echo-shapes.node-pty.test.ts',
+ 'src/shared/startup-shell-portability.live-shell.test.ts',
+ 'src/shared/posix-command-path-lookup.test.ts',
+ 'tests/e2e/relay-region-compatibility.unit.test.ts',
+ 'tests/e2e/relay-region-correction.unit.test.ts',
+ 'tests/e2e/cross-version-wire/**'
+]
+
+export function discoverUnitFiles(root = process.cwd()) {
+ return globSync(UNIT_INCLUDE, { cwd: root, exclude: UNIT_EXCLUDE })
+ .map((file) => file.replaceAll('\\', '/'))
+ .sort()
+}
diff --git a/config/scripts/ci-unit-plan.mjs b/config/scripts/ci-unit-plan.mjs
new file mode 100644
index 00000000000..28eed60f8e8
--- /dev/null
+++ b/config/scripts/ci-unit-plan.mjs
@@ -0,0 +1,60 @@
+import { appendFileSync, readFileSync } from 'node:fs'
+import { pathToFileURL } from 'node:url'
+import { runProcessSync } from './script-child-process.mjs'
+import { collectUnitDependencyGraph } from './ci-unit-dependency-graph.mjs'
+import { discoverUnitFiles } from './ci-unit-files.mjs'
+import { planUnitSelection } from './ci-unit-selection.mjs'
+import { readTimingBaseline, writeAssignment } from './ci-shard-assignment.mjs'
+
+export function prepareUnitPlan(env = process.env) {
+ const files = discoverUnitFiles()
+ let plan
+ try {
+ const event = JSON.parse(readFileSync(env.GITHUB_EVENT_PATH, 'utf8'))
+ if (env.GITHUB_EVENT_NAME !== 'pull_request') {
+ throw new Error('Full reference run')
+ }
+ const diff = runProcessSync({
+ program: 'git',
+ args: ['diff', '--name-only', '--no-renames', '-z', 'HEAD^1', 'HEAD'],
+ maxOutputBytes: 16 * 1024 * 1024
+ })
+ if (diff.code !== 0 || diff.timedOut) {
+ throw new Error('Changed paths unavailable')
+ }
+ plan = planUnitSelection({
+ files,
+ changed: diff.stdout.split('\0').filter(Boolean),
+ graph: collectUnitDependencyGraph(),
+ timings: readTimingBaseline('unit').timings,
+ event,
+ mode: env.ORCA_UNIT_SELECTION_MODE
+ })
+ } catch (error) {
+ plan = {
+ version: 1,
+ mode: 'shadow',
+ selectionAvailable: false,
+ reason: String(error),
+ files,
+ candidateFiles: files,
+ executionFiles: files,
+ shards: Array.from({ length: 8 }, (_, index) => ({ index: index + 1, count: 8 }))
+ }
+ }
+ writeAssignment('ci-shards/unit-selection.json', plan)
+ if (env.GITHUB_OUTPUT) {
+ appendFileSync(env.GITHUB_OUTPUT, `shards=${JSON.stringify(plan.shards)}\n`)
+ }
+ if (env.GITHUB_STEP_SUMMARY) {
+ appendFileSync(
+ env.GITHUB_STEP_SUMMARY,
+ `Unit selection: **${plan.mode}**; ${plan.candidateFiles.length}/${files.length} candidate files; ${plan.shards.length} execution shards. ${plan.reason}\n`
+ )
+ }
+ return plan
+}
+
+if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
+ prepareUnitPlan()
+}
diff --git a/config/scripts/ci-unit-plan.test.mjs b/config/scripts/ci-unit-plan.test.mjs
new file mode 100644
index 00000000000..1711582b64f
--- /dev/null
+++ b/config/scripts/ci-unit-plan.test.mjs
@@ -0,0 +1,78 @@
+import { mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs'
+import { tmpdir } from 'node:os'
+import { join } from 'node:path'
+import { fileURLToPath } from 'node:url'
+import { expect, it } from 'vitest'
+import { runProcessSync } from './script-child-process.mjs'
+
+it.each([true, false])(
+ 'plans from a real Git diff, with parent evidence available: %s',
+ (withParent) => {
+ const root = mkdtempSync(join(tmpdir(), 'orca-unit-plan-'))
+ const git = (args) => {
+ const result = runProcessSync({ program: 'git', args, cwd: root })
+ expect(result.code, result.stderr).toBe(0)
+ return result.stdout.trim()
+ }
+ try {
+ mkdirSync(join(root, 'src'))
+ writeFileSync(join(root, 'src/value.ts'), 'export const value = 1')
+ writeFileSync(join(root, 'src/consumer.test.ts'), "import './value'")
+ writeFileSync(join(root, 'src/unrelated.test.ts'), 'export const unrelated = true')
+ git(['init', '--quiet'])
+ git(['add', 'src'])
+ const commit = [
+ '-c',
+ 'user.name=CI Test',
+ '-c',
+ 'user.email=ci-test@example.invalid',
+ '-c',
+ 'commit.gpgsign=false',
+ 'commit',
+ '--quiet',
+ '-m',
+ 'fixture'
+ ]
+ git(commit)
+ if (withParent) {
+ writeFileSync(join(root, 'src/value.ts'), 'export const value = 2')
+ git(['add', 'src'])
+ git(commit)
+ }
+ const sourceSha = git(['rev-parse', 'HEAD'])
+ const eventPath = join(root, 'event.json')
+ writeFileSync(eventPath, JSON.stringify({ pull_request: { draft: true } }))
+ const result = runProcessSync({
+ program: process.execPath,
+ args: [fileURLToPath(new URL('./ci-unit-plan.mjs', import.meta.url))],
+ cwd: root,
+ env: {
+ ...process.env,
+ ORCA_BACKGROUND_LAUNCH: '1',
+ ORCA_UNIT_SELECTION_MODE: 'selected',
+ GITHUB_EVENT_NAME: 'pull_request',
+ GITHUB_EVENT_PATH: eventPath,
+ GITHUB_SHA: sourceSha,
+ ORCA_SHARD_SOURCE_SHA: sourceSha,
+ GITHUB_OUTPUT: join(root, 'outputs'),
+ GITHUB_STEP_SUMMARY: join(root, 'summary')
+ }
+ })
+ expect(result.code, result.stderr).toBe(0)
+ const plan = JSON.parse(readFileSync(join(root, 'ci-shards/unit-selection.json'), 'utf8'))
+ expect(plan.sourceSha).toBe(sourceSha)
+ expect(plan.mode).toBe(withParent ? 'selected' : 'shadow')
+ expect(plan.executionFiles).toEqual(
+ withParent ? ['src/consumer.test.ts'] : ['src/consumer.test.ts', 'src/unrelated.test.ts']
+ )
+ expect(plan.reason).toBe(
+ withParent
+ ? 'Transitive imports plus indirect-input consumers'
+ : 'Error: Changed paths unavailable'
+ )
+ expect(plan.shards).toHaveLength(withParent ? 1 : 8)
+ } finally {
+ rmSync(root, { recursive: true, force: true })
+ }
+ }
+)
diff --git a/config/scripts/ci-unit-selection-review.mjs b/config/scripts/ci-unit-selection-review.mjs
new file mode 100644
index 00000000000..ae976a06428
--- /dev/null
+++ b/config/scripts/ci-unit-selection-review.mjs
@@ -0,0 +1,113 @@
+import { appendFileSync, globSync, readFileSync, writeFileSync } from 'node:fs'
+import { join } from 'node:path'
+import { pathToFileURL } from 'node:url'
+
+export function reviewUnitSelection(records) {
+ const groups = new Map()
+ for (const { plan, timing } of records) {
+ const key = JSON.stringify([
+ timing.sourceSha,
+ timing.runId,
+ timing.runAttempt,
+ timing.nodeVersion
+ ])
+ if (!groups.has(key)) {
+ groups.set(key, [])
+ }
+ groups.get(key).push({ plan, timing })
+ }
+ return [...groups.values()].map((group) => {
+ const { plan, timing: first } = group[0]
+ const selected = new Set(plan.candidateFiles)
+ const files = new Set()
+ const shards = new Set()
+ const missedFailures = []
+ let invalid = false
+ let omittedMs = 0
+ let totalMs = 0
+ for (const { plan: other, timing } of group) {
+ invalid ||=
+ JSON.stringify(other) !== JSON.stringify(plan) ||
+ !first.sourceSha ||
+ plan.sourceSha !== first.sourceSha ||
+ timing.unhandledErrors !== 0 ||
+ !['passed', 'failed'].includes(timing.status) ||
+ timing.shard.count !== first.shard.count ||
+ shards.has(timing.shard.index) ||
+ timing.shard.index < 1 ||
+ timing.shard.index > first.shard.count
+ shards.add(timing.shard.index)
+ for (const [file, duration] of Object.entries(timing.timings)) {
+ invalid ||=
+ files.has(file) ||
+ !Number.isFinite(duration) ||
+ duration <= 0 ||
+ !['passed', 'failed', 'skipped'].includes(timing.results?.[file])
+ files.add(file)
+ totalMs += duration
+ if (!selected.has(file)) {
+ omittedMs += duration
+ if (timing.results?.[file] === 'failed') {
+ missedFailures.push(file)
+ }
+ }
+ }
+ }
+ const complete =
+ !invalid &&
+ shards.size === first.shard.count &&
+ JSON.stringify([...files].sort()) === JSON.stringify([...plan.files].sort())
+ return {
+ sourceSha: first.sourceSha,
+ runId: first.runId,
+ runAttempt: first.runAttempt,
+ nodeVersion: first.nodeVersion,
+ mode: plan.mode,
+ completeFullRun: complete && plan.mode === 'shadow',
+ selectionEvaluated: complete && plan.mode === 'shadow' && plan.selectionAvailable === true,
+ reason: plan.reason,
+ missedFailures,
+ files: files.size,
+ candidateFiles: selected.size,
+ measuredWorkerMs: totalMs,
+ potentiallyOmittedWorkerMs: omittedMs
+ }
+ })
+}
+
+if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
+ const directory = process.argv[2]
+ if (!directory) {
+ throw new Error('Usage: ci-unit-selection-review.mjs ARTIFACT_DIRECTORY')
+ }
+ const records = globSync('**/unit-timings.json', { cwd: directory }).map((file) => {
+ const timing = JSON.parse(readFileSync(join(directory, file), 'utf8'))
+ const plan = JSON.parse(
+ readFileSync(
+ join(directory, file.replace('unit-timings.json', 'unit-selection.json')),
+ 'utf8'
+ )
+ )
+ return { timing, plan }
+ })
+ if (!records.length) {
+ throw new Error('No unit selection evidence')
+ }
+ const review = reviewUnitSelection(records)
+ writeFileSync(join(directory, 'selection-review.json'), `${JSON.stringify(review, null, 2)}\n`)
+ const summary = [
+ '## Unit selection evidence',
+ '',
+ ...review.map(
+ (row) =>
+ `- Node ${row.nodeVersion}: ${row.completeFullRun ? 'complete full reference' : 'incomplete or selected evidence'}; ${row.selectionEvaluated ? 'selection evaluated' : 'not selection-validation evidence'}; ${row.candidateFiles}/${row.files} candidate files; ${row.missedFailures.length} failures outside selection; ${(row.potentiallyOmittedWorkerMs / 60_000).toFixed(1)} potentially omitted worker-minutes. ${row.reason ?? ''}`
+ ),
+ '',
+ 'Worker time overlaps across processes; it is not runner time. Promote only after representative complete references show no missed failures.',
+ ''
+ ].join('\n')
+ if (process.env.GITHUB_STEP_SUMMARY) {
+ appendFileSync(process.env.GITHUB_STEP_SUMMARY, summary)
+ }
+ console.log(summary)
+}
diff --git a/config/scripts/ci-unit-selection-review.test.mjs b/config/scripts/ci-unit-selection-review.test.mjs
new file mode 100644
index 00000000000..ff8f4c38568
--- /dev/null
+++ b/config/scripts/ci-unit-selection-review.test.mjs
@@ -0,0 +1,55 @@
+import { expect, it } from 'vitest'
+import { reviewUnitSelection } from './ci-unit-selection-review.mjs'
+
+const plan = {
+ sourceSha: 'sha',
+ mode: 'shadow',
+ selectionAvailable: true,
+ files: ['a', 'b'],
+ candidateFiles: ['a']
+}
+
+it('does not present full fallback runs as selection-validation evidence', () => {
+ const records = [record(1, 'a', 'passed'), record(2, 'b', 'passed')].map((row) => ({
+ ...row,
+ plan: { ...plan, selectionAvailable: false }
+ }))
+ expect(reviewUnitSelection(records)[0]).toMatchObject({
+ completeFullRun: true,
+ selectionEvaluated: false
+ })
+})
+const record = (index, file, state) => ({
+ plan,
+ timing: {
+ sourceSha: 'sha',
+ runId: '1',
+ runAttempt: '1',
+ nodeVersion: '24',
+ status: state,
+ unhandledErrors: 0,
+ shard: { index, count: 2 },
+ timings: { [file]: 100 },
+ results: { [file]: state }
+ }
+})
+
+it('finds omitted failures in a complete failing reference run', () => {
+ expect(
+ reviewUnitSelection([record(1, 'a', 'passed'), record(2, 'b', 'failed')])[0]
+ ).toMatchObject({ completeFullRun: true, missedFailures: ['b'], potentiallyOmittedWorkerMs: 100 })
+})
+
+it('does not call incomplete, duplicate, interrupted or selected evidence a full reference', () => {
+ const a = record(1, 'a', 'passed'),
+ b = record(2, 'b', 'passed')
+ for (const rows of [
+ [a],
+ [a, a],
+ [a, { ...b, timing: { ...b.timing, unhandledErrors: 1 } }],
+ [a, { ...b, timing: { ...b.timing, status: 'interrupted' } }],
+ [a, b].map((row) => ({ ...row, plan: { ...plan, mode: 'selected' } }))
+ ]) {
+ expect(reviewUnitSelection(rows).every((row) => !row.completeFullRun)).toBe(true)
+ }
+})
diff --git a/config/scripts/ci-unit-selection.mjs b/config/scripts/ci-unit-selection.mjs
new file mode 100644
index 00000000000..70894dde0a1
--- /dev/null
+++ b/config/scripts/ci-unit-selection.mjs
@@ -0,0 +1,62 @@
+import { unitConsumers } from './ci-unit-dependency-graph.mjs'
+import { balanceFiles } from './ci-shard-assignment.mjs'
+
+export function selectUnitFiles(files, changed, graph) {
+ const full = (reason) => ({ files, reason, full: true })
+ if (!changed.length) {
+ return full('Missing changed-path evidence')
+ }
+ if (changed.some((file) => !file.startsWith('src/') || !graph.files.has(file))) {
+ return full('Global, deleted, renamed or unknown input')
+ }
+ for (const file of changed) {
+ const consumers = unitConsumers([file], graph.reverse)
+ if (!files.some((test) => consumers.has(test))) {
+ return full('No proven test coverage for changed inputs')
+ }
+ }
+ const affected = unitConsumers([...changed, ...graph.opaque], graph.reverse)
+ const selected = files.filter((file) => affected.has(file))
+ if (!selected.length) {
+ return full('No proven test coverage for changed inputs')
+ }
+ return {
+ files: selected,
+ reason: 'Transitive imports plus indirect-input consumers',
+ full: false
+ }
+}
+
+export function planUnitSelection({ files, changed, graph, timings, event, mode = 'shadow' }) {
+ const candidate = selectUnitFiles(files, changed, graph)
+ const selected = mode === 'selected' && event?.pull_request?.draft === true && !candidate.full
+ const executionFiles = selected ? candidate.files : files
+ const totalMs = balanceFiles(executionFiles, 1, timings).shards[0].durationMs
+ const count = selected
+ ? Math.max(1, Math.min(8, Math.ceil(totalMs / 900_000), executionFiles.length))
+ : 8
+ return {
+ version: 1,
+ mode: selected ? 'selected' : 'shadow',
+ selectionAvailable: !candidate.full,
+ reason: candidate.reason,
+ files,
+ candidateFiles: candidate.files,
+ executionFiles,
+ shards: Array.from({ length: count }, (_, index) => ({ index: index + 1, count }))
+ }
+}
+
+export function auditUnitSelection(plan, results) {
+ const candidates = new Set(plan.candidateFiles)
+ const omittedFailures = Object.entries(results)
+ .filter(([file, state]) => state === 'failed' && !candidates.has(file))
+ .map(([file]) => file)
+ return {
+ mode: plan.mode,
+ discovered: plan.files.length,
+ candidate: candidates.size,
+ executed: Object.keys(results).length,
+ omittedFailures
+ }
+}
diff --git a/config/scripts/ci-unit-selection.test.mjs b/config/scripts/ci-unit-selection.test.mjs
new file mode 100644
index 00000000000..37338cbfc6d
--- /dev/null
+++ b/config/scripts/ci-unit-selection.test.mjs
@@ -0,0 +1,92 @@
+import { describe, expect, it } from 'vitest'
+import { buildUnitDependencyGraph } from './ci-unit-dependency-graph.mjs'
+import { auditUnitSelection, planUnitSelection, selectUnitFiles } from './ci-unit-selection.mjs'
+
+const sources = new Map(
+ Object.entries({
+ 'src/leaf.ts': 'export const value = 1',
+ 'src/forward.ts': `export * from './leaf'`,
+ 'src/consumer.test.ts': `import './forward'`,
+ 'src/dynamic.test.ts': `import('./leaf')`,
+ 'src/require.test.ts': `require('./leaf')`,
+ 'src/scan.test.ts': `import { readFileSync } from 'node:fs'; readFileSync('src/leaf.ts')`,
+ 'src/indirect.ts': `import(pathFromSettings)`,
+ 'src/indirect.test.ts': `import './indirect'`,
+ 'src/unrelated.test.ts': 'export const test = 1',
+ 'src/renderer/src/view.tsx': 'export const value = 1',
+ 'src/view.test.ts': `import '@renderer/view'; import '@/view'`
+ })
+)
+const graph = { ...buildUnitDependencyGraph(sources), files: new Set(sources.keys()) }
+const files = [...sources.keys()].filter((file) => file.endsWith('.test.ts')).sort()
+
+describe('conservative unit selection', () => {
+ it('follows re-exports, literal dynamic imports and requires, retaining indirect readers', () => {
+ expect(selectUnitFiles(files, ['src/leaf.ts'], graph).files).toEqual([
+ 'src/consumer.test.ts',
+ 'src/dynamic.test.ts',
+ 'src/indirect.test.ts',
+ 'src/require.test.ts',
+ 'src/scan.test.ts'
+ ])
+ })
+
+ it('resolves renderer aliases and changed tests without executing their source', () => {
+ expect(selectUnitFiles(files, ['src/renderer/src/view.tsx'], graph).files).toContain(
+ 'src/view.test.ts'
+ )
+ expect(selectUnitFiles(files, ['src/unrelated.test.ts'], graph).files).toContain(
+ 'src/unrelated.test.ts'
+ )
+ })
+
+ it('does not mistake unrelated opaque readers for coverage of a new entry point', () => {
+ const uncovered = { ...graph, files: new Set([...graph.files, 'src/entry.ts']) }
+ expect(selectUnitFiles(files, ['src/entry.ts'], uncovered)).toMatchObject({ full: true, files })
+ })
+
+ it.each(
+ [
+ [],
+ ['src/deleted.ts'],
+ ['src/deleted.ts', 'src/leaf.ts'],
+ ['pnpm-lock.yaml'],
+ ['config/vitest.config.ts']
+ ].map((changed) => ({ changed }))
+ )('runs everything for incomplete/global evidence: $changed', ({ changed }) => {
+ expect(selectUnitFiles(files, changed, graph)).toMatchObject({ files, full: true })
+ })
+
+ it('keeps full coverage by default and on every non-draft commit', () => {
+ const base = { files, changed: ['src/leaf.ts'], graph, timings: {} }
+ for (const event of [
+ {},
+ { pull_request: { draft: false } },
+ { pull_request: { draft: true } }
+ ]) {
+ expect(planUnitSelection({ ...base, event }).executionFiles).toEqual(files)
+ }
+ expect(
+ planUnitSelection({ ...base, mode: 'selected', event: { pull_request: { draft: false } } })
+ .executionFiles
+ ).toEqual(files)
+ const selected = planUnitSelection({
+ ...base,
+ mode: 'selected',
+ event: { pull_request: { draft: true } }
+ })
+ expect(selected.executionFiles).not.toContain('src/unrelated.test.ts')
+ expect(selected.shards).toEqual([{ index: 1, count: 1 }])
+ })
+
+ it('records failures that would have been missed while shadow runs remain full', () => {
+ const plan = planUnitSelection({ files, changed: ['src/leaf.ts'], graph, timings: {} })
+ expect(
+ auditUnitSelection(plan, {
+ 'src/consumer.test.ts': 'failed',
+ 'src/unrelated.test.ts': 'failed',
+ 'src/view.test.ts': 'passed'
+ }).omittedFailures
+ ).toEqual(['src/unrelated.test.ts'])
+ })
+})
diff --git a/config/scripts/ci-unit-sequencer.mjs b/config/scripts/ci-unit-sequencer.mjs
index cd55b3343b2..6b580bdb002 100644
--- a/config/scripts/ci-unit-sequencer.mjs
+++ b/config/scripts/ci-unit-sequencer.mjs
@@ -1,4 +1,5 @@
import { relative } from 'node:path'
+import { readFileSync } from 'node:fs'
import { BaseSequencer } from 'vitest/node'
import { balanceFiles, readTimingBaseline, writeAssignment } from './ci-shard-assignment.mjs'
@@ -6,12 +7,46 @@ export default class TimingSequencer extends BaseSequencer {
async shard(specs) {
const { index, count } = this.ctx.config.shard
const key = (spec) => relative(this.ctx.config.root, spec.moduleId).replaceAll('\\', '/')
+ let execution = specs
+ let selectionReason = 'Full suite: no verified selection plan'
+ try {
+ const plan = JSON.parse(
+ readFileSync(
+ process.env.ORCA_UNIT_SELECTION_PLAN ?? 'ci-shards/unit-selection.json',
+ 'utf8'
+ )
+ )
+ if (
+ plan.version !== 1 ||
+ !plan.sourceSha ||
+ plan.sourceSha !== process.env.ORCA_SHARD_SOURCE_SHA ||
+ JSON.stringify([...plan.files].sort()) !== JSON.stringify(specs.map(key).sort()) ||
+ !Array.isArray(plan.executionFiles) ||
+ plan.executionFiles.some((file) => !plan.files.includes(file))
+ ) {
+ throw new Error('Selection provenance or discovery differs')
+ }
+ const allowed = new Set(plan.executionFiles)
+ if (allowed.size === 0) {
+ throw new Error('Empty execution selection')
+ }
+ execution = specs.filter((spec) => allowed.has(key(spec)))
+ selectionReason = plan.reason
+ } catch (error) {
+ console.log(`Running every discovered unit test: ${error.message}`)
+ }
const baseline = readTimingBaseline('unit')
- const assignment = balanceFiles(specs.map(key), count, baseline.timings, baseline.overheadMs)
+ const assignment = balanceFiles(
+ execution.map(key),
+ count,
+ baseline.timings,
+ baseline.overheadMs
+ )
writeAssignment(process.env.ORCA_SHARD_MANIFEST ?? 'ci-shards/unit-assignment.json', {
...assignment,
baselineSha256: baseline.baselineSha256,
- selectedShard: index
+ selectedShard: index,
+ selectionReason
})
const selected = new Set(assignment.shards[index - 1].files)
return specs.filter((spec) => selected.has(key(spec)))
diff --git a/config/scripts/ci-unit-sequencer.test.mjs b/config/scripts/ci-unit-sequencer.test.mjs
new file mode 100644
index 00000000000..931a3ccd158
--- /dev/null
+++ b/config/scripts/ci-unit-sequencer.test.mjs
@@ -0,0 +1,44 @@
+import { mkdtempSync, writeFileSync, rmSync } from 'node:fs'
+import { tmpdir } from 'node:os'
+import { join } from 'node:path'
+import { afterEach, expect, it, vi } from 'vitest'
+import TimingSequencer from './ci-unit-sequencer.mjs'
+
+let root
+afterEach(() => {
+ vi.unstubAllEnvs()
+ if (root) {
+ rmSync(root, { recursive: true, force: true })
+ }
+})
+
+it.each(['valid', 'stale', 'missing-file', 'missing-artifact'])(
+ 'preserves complete shard coverage with %s planning evidence',
+ async (kind) => {
+ root = mkdtempSync(join(tmpdir(), 'unit-sequencer-'))
+ const files = ['src/a.test.ts', 'src/b.test.ts', 'src/c.test.ts', 'src/d.test.ts']
+ const plan = {
+ version: 1,
+ sourceSha: kind === 'stale' ? 'old' : 'current',
+ files: kind === 'missing-file' ? files.slice(1) : files,
+ executionFiles: files.slice(0, 2)
+ }
+ const planPath = join(root, 'selection.json')
+ if (kind !== 'missing-artifact') {
+ writeFileSync(planPath, JSON.stringify(plan))
+ }
+ vi.stubEnv('ORCA_UNIT_SELECTION_PLAN', planPath)
+ vi.stubEnv('ORCA_SHARD_SOURCE_SHA', 'current')
+ vi.stubEnv('ORCA_SHARD_MANIFEST', join(root, 'assignment.json'))
+ const assigned = []
+ for (const index of [1, 2]) {
+ const sequencer = new TimingSequencer({ config: { root, shard: { index, count: 2 } } })
+ const specs = files.map((file) => ({ moduleId: join(root, file) }))
+ assigned.push(...(await sequencer.shard(specs)).map((spec) => spec.moduleId))
+ }
+ expect(assigned.sort()).toEqual(
+ (kind === 'valid' ? files.slice(0, 2) : files).map((file) => join(root, file)).sort()
+ )
+ expect(new Set(assigned).size).toBe(assigned.length)
+ }
+)
diff --git a/config/scripts/ci-unit-timing-reporter.mjs b/config/scripts/ci-unit-timing-reporter.mjs
index 58ccc8de768..fa54aa1072a 100644
--- a/config/scripts/ci-unit-timing-reporter.mjs
+++ b/config/scripts/ci-unit-timing-reporter.mjs
@@ -1,5 +1,7 @@
import { relative } from 'node:path'
+import { appendFileSync, readFileSync } from 'node:fs'
import { writeAssignment } from './ci-shard-assignment.mjs'
+import { auditUnitSelection } from './ci-unit-selection.mjs'
export function moduleDuration(diagnostic) {
return Math.max(
@@ -20,12 +22,19 @@ export default class UnitTimingReporter {
}
onTestRunEnd(modules, errors, reason) {
+ const results = Object.fromEntries(
+ modules.map((module) => [
+ relative(this.ctx.config.root, module.moduleId).replaceAll('\\', '/'),
+ module.state?.() ?? 'unknown'
+ ])
+ )
writeAssignment(process.env.ORCA_UNIT_TIMING_REPORT ?? 'ci-shards/unit-timings.json', {
metric: 'module-duration-v1',
nodeVersion: process.versions.node,
shard: this.ctx.config.shard ?? { index: 1, count: 1 },
status: reason,
unhandledErrors: errors.length,
+ results,
timings: Object.fromEntries(
modules.map((module) => [
relative(this.ctx.config.root, module.moduleId).replaceAll('\\', '/'),
@@ -33,5 +42,23 @@ export default class UnitTimingReporter {
])
)
})
+ try {
+ const plan = JSON.parse(
+ readFileSync(
+ process.env.ORCA_UNIT_SELECTION_PLAN ?? 'ci-shards/unit-selection.json',
+ 'utf8'
+ )
+ )
+ const audit = auditUnitSelection(plan, results)
+ writeAssignment('ci-shards/unit-selection-audit.json', audit)
+ if (process.env.GITHUB_STEP_SUMMARY) {
+ appendFileSync(
+ process.env.GITHUB_STEP_SUMMARY,
+ `Unit selection (${audit.mode}): ${audit.candidate}/${audit.discovered} candidate files; ${audit.omittedFailures.length} failures outside selection.\n`
+ )
+ }
+ } catch {
+ // Timing evidence remains useful when selection planning was unavailable.
+ }
}
}
diff --git a/config/scripts/electron-runtime-floor.test.ts b/config/scripts/electron-runtime-floor.test.ts
index 77a1d4741e0..3506b736398 100644
--- a/config/scripts/electron-runtime-floor.test.ts
+++ b/config/scripts/electron-runtime-floor.test.ts
@@ -7,10 +7,12 @@ import { describe, expect, it } from 'vitest'
* around `gtk_init()` while FontConfig warmed up on a pool thread, and below
* glibc 2.41 that frees `environ` under a concurrent `getenv()` — a launch-time
* use-after-free on every Ubuntu we support (stablyai/orca#20081). 43.7.0 stops
- * freeing the published `environ`. A downgrade past it re-ships that crash, and
- * nothing else in the tree would notice.
+ * freeing the published `environ`. 43.7.0 itself threw `Invalid guestInstanceId` when a
+ * loaded `` left the DOM, which blanked browser tabs React re-inserted
+ * (electron/electron#53989); 43.7.4 fixes it. A downgrade past either re-ships the bug,
+ * and nothing else in the tree would notice.
*/
-const MINIMUM_ELECTRON_VERSION = '43.7.0'
+const MINIMUM_ELECTRON_VERSION = '43.7.4'
function parseVersion(specifier: string): [number, number, number] {
const match = /(\d+)\.(\d+)\.(\d+)/.exec(specifier)
@@ -35,15 +37,17 @@ describe('electron runtime floor', () => {
it.each([
['42.9.0', false],
['43.6.0', false],
- ['43.7.0', true],
- ['43.7.1', true],
+ ['43.7.0', false],
+ ['43.7.3', false],
+ ['43.7.4', true],
+ ['43.7.5', true],
['43.8.0', true],
['44.0.0', true]
])('reads %s as meeting the floor: %s', (specifier, expected) => {
expect(meetsRuntimeFloor(specifier)).toBe(expected)
})
- it('pins Electron at or above the glibc environ-race fix', () => {
+ it('pins Electron at or above the glibc environ-race and webview-detach fixes', () => {
const packageJson = JSON.parse(
readFileSync(join(__dirname, '../../package.json'), 'utf-8')
) as { devDependencies: Record }
diff --git a/config/scripts/git-pull-request-diff-base.mjs b/config/scripts/git-pull-request-diff-base.mjs
index 3e2021a1eb1..0dd5b825ef7 100644
--- a/config/scripts/git-pull-request-diff-base.mjs
+++ b/config/scripts/git-pull-request-diff-base.mjs
@@ -1,5 +1,6 @@
import { execFileSync } from 'node:child_process'
import process from 'node:process'
+import { pathToFileURL } from 'node:url'
export function selectPullRequestDiffBase(requestedBase, headParents, eventName) {
if (eventName === 'pull_request' && headParents.length >= 2) {
@@ -21,3 +22,15 @@ export function resolvePullRequestDiffBase(
.split(/\s+/)
return selectPullRequestDiffBase(requestedBase, headParents, eventName)
}
+
+// Why a CLI: the workflow's inline gates used `git diff --merge-base "$BASE_SHA" "$HEAD_SHA"`,
+// which needs the payload base to be reachable and so forced a full-history checkout. Printing
+// the resolved base lets those steps diff against `HEAD^1` with the same logic the Node gates
+// already use, instead of each one open-coding it.
+if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
+ const resolved = resolvePullRequestDiffBase(process.cwd(), process.argv[2])
+ if (!resolved) {
+ throw new Error('No diff base: pass the pull request base SHA, or run on a merge ref.')
+ }
+ process.stdout.write(`${resolved}\n`)
+}
diff --git a/config/scripts/locale-translation-policy.mjs b/config/scripts/locale-translation-policy.mjs
index af88805b8c4..75f50d15ff6 100644
--- a/config/scripts/locale-translation-policy.mjs
+++ b/config/scripts/locale-translation-policy.mjs
@@ -38,6 +38,7 @@ export const NEVER_TRANSLATE_VALUES = new Set([
'Claude Agent Teams',
'Cline',
'Codebuff',
+ 'Freebuff',
'Codex',
'Command Code',
'Cursor',
diff --git a/config/scripts/localization-extraction-change-scope.test.mjs b/config/scripts/localization-extraction-change-scope.test.mjs
index eb3aae13493..8852965ad30 100644
--- a/config/scripts/localization-extraction-change-scope.test.mjs
+++ b/config/scripts/localization-extraction-change-scope.test.mjs
@@ -43,12 +43,13 @@ it('preserves deleted and renamed inputs and falls back to extraction on detecti
(candidate) => candidate.name === 'Verify localization extraction'
)
expect(step.env).toEqual({
- BASE_SHA: '${{ github.event.pull_request.base.sha }}',
- HEAD_SHA: '${{ github.event.pull_request.head.sha }}'
+ BASE_SHA: '${{ github.event.pull_request.base.sha }}'
})
- expect(step.run).toContain(
- 'git diff --name-only --no-renames -z --merge-base "$BASE_SHA" "$HEAD_SHA"'
- )
+ // The base side comes from the merge ref's first parent, so the gate needs no merge base and
+ // works on a shallow checkout. The payload head SHA is no longer read: HEAD is the merged tree
+ // the gate is actually deciding about.
+ expect(step.run).toContain('node config/scripts/git-pull-request-diff-base.mjs "$BASE_SHA"')
+ expect(step.run).toContain('git diff --name-only --no-renames -z "$DIFF_BASE" HEAD')
expect(step.run).not.toContain('--diff-filter')
expect(step.run).toContain('&& [ "$scope" = false ]; then')
expect(step.run).toMatch(/else\s+pnpm run verify:localization-extraction\s+fi/)
diff --git a/config/scripts/mobile-release-shell-switch-workflow.test.mjs b/config/scripts/mobile-release-shell-switch-workflow.test.mjs
index 28b94945cc2..40cc20a95ba 100644
--- a/config/scripts/mobile-release-shell-switch-workflow.test.mjs
+++ b/config/scripts/mobile-release-shell-switch-workflow.test.mjs
@@ -120,6 +120,8 @@ const BUNDLER_CACHE_PATHS = ['metro-cache', '.expo', 'node_modules/.cache']
const REVIEWED_COMPUTED_PATHS = [
'${{ steps.electron-package-cache.outputs.cache-root }}',
'${{ steps.pnpm-store.outputs.path }}',
+ // Only pnpm's lockfile-verified.jsonl record, never Metro transforms.
+ '${{ steps.verification-cache.outputs.path }}',
"${{ github.event_name != 'pull_request' && 'pnpm' || '' }} store"
]
diff --git a/config/scripts/mobile-web-app-agent-history-render.test.mjs b/config/scripts/mobile-web-app-agent-history-render.test.mjs
index 08ce37ea6c9..b1c69a88062 100644
--- a/config/scripts/mobile-web-app-agent-history-render.test.mjs
+++ b/config/scripts/mobile-web-app-agent-history-render.test.mjs
@@ -9,6 +9,7 @@ import {
createBundleServer,
installShellDouble,
readBridgeFaultGrant,
+ readBridgePagePainted,
readBridgeProtocolVersion,
readShellCsp
} from './mobile-web-app-render-harness.mjs'
@@ -110,6 +111,7 @@ let routeChunks = {}
let cspHeader = null
let bridgeVersion = null
let faultGrant = null
+let paintName = null
beforeAll(async () => {
if (!bundles) {
@@ -118,6 +120,7 @@ beforeAll(async () => {
cspHeader = await readShellCsp()
bridgeVersion = await readBridgeProtocolVersion()
faultGrant = await readBridgeFaultGrant()
+ paintName = await readBridgePagePainted()
scratch = await mkdtemp(join(tmpdir(), 'orca-mobile-web-app-agent-history-'))
const built = await buildMobileWebAppBundle({ outDir: join(scratch, 'bundle') })
routeChunks = built.routeChunks
@@ -227,9 +230,11 @@ async function openRoute(route, awaitText, options = {}) {
return opened
}
-/** Every grant-gated notify the page posted, whole and in order, as the shell received them. */
-function readNotifies(page) {
- return page.evaluate(() => globalThis.__orcaRenderCheckNotifies ?? [])
+/** Every grant-gated notify the page posted, whole and in order, as the shell received them. The
+ * paint report is not one: every page posts it once its route screen has a frame. */
+async function readNotifies(page) {
+ const notifies = await page.evaluate(() => globalThis.__orcaRenderCheckNotifies ?? [])
+ return notifies.filter((frame) => frame.name !== paintName)
}
describeRender('the agent-history route in a real browser', () => {
diff --git a/config/scripts/mobile-web-app-drawer-render.test.mjs b/config/scripts/mobile-web-app-drawer-render.test.mjs
index 051072815a4..22d3b14a1d5 100644
--- a/config/scripts/mobile-web-app-drawer-render.test.mjs
+++ b/config/scripts/mobile-web-app-drawer-render.test.mjs
@@ -302,9 +302,6 @@ describeDrawer('the device Back key reaching a sheet on the page', () => {
host: SHELL_HOST,
storage: {},
faultGrant,
- // What a shell that knows the lane offers, and the frame it would send. Without the first
- // the page posts no claim at all, which is the older-shell arm the unit suites pin.
- accepts: [backNames.claim],
backFrame: backNames.frame
})
await page.goto(`${origin}/`, { waitUntil: 'load' })
diff --git a/config/scripts/mobile-web-app-render-harness.mjs b/config/scripts/mobile-web-app-render-harness.mjs
index b7a43815a1e..f07e0c130a1 100644
--- a/config/scripts/mobile-web-app-render-harness.mjs
+++ b/config/scripts/mobile-web-app-render-harness.mjs
@@ -164,9 +164,9 @@ export async function readBrowserFrameQuality() {
}
/**
- * The page's client-identity placeholder and the `init.accepts` name that unlocks it, read from
- * the module that declares both. A rig carrying its own copy would go on passing after the real
- * pair moved, which is the whole reason every other constant here is read rather than retyped.
+ * The page's client-identity placeholder, read from the module that declares it. A rig carrying its
+ * own copy would go on passing after the real one moved, which is the whole reason every other
+ * constant here is read rather than retyped.
*/
export async function readBridgePageClientIdentity() {
const source = await readFile(
@@ -180,10 +180,7 @@ export async function readBridgePageClientIdentity() {
}
return match[1]
}
- return {
- placeholder: read('BRIDGE_PAGE_CLIENT_ID'),
- accept: read('BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT')
- }
+ return { placeholder: read('BRIDGE_PAGE_CLIENT_ID') }
}
/** The grant the shell offers every page, read from the same source for the same reason. */
@@ -264,7 +261,6 @@ export function installShellDouble({
grants,
pageRoutes = null,
pageRouteGrants = null,
- accepts = null,
backFrame = null,
replies,
streams = [],
@@ -323,9 +319,6 @@ export function installShellDouble({
// Omitted when the caller names none, which is the older-shell case the page falls back
// on: an absent field is not an empty one, and the page reads the difference.
...(pageRouteGrants === null ? {} : { pageRouteGrants }),
- // Omitted when a check names none, which is the shell that performs no swap and the
- // state every other rig in this directory runs in.
- ...(accepts === null ? {} : { accepts }),
// Omitted for a shell too old to name one, which is the case the page has a panel for.
...(route === null ? {} : { route }),
...(host === null ? {} : { host }),
diff --git a/config/scripts/mobile-web-app-render.test.mjs b/config/scripts/mobile-web-app-render.test.mjs
index 1cd797d2600..84d3164c7cb 100644
--- a/config/scripts/mobile-web-app-render.test.mjs
+++ b/config/scripts/mobile-web-app-render.test.mjs
@@ -135,8 +135,7 @@ async function openPage({
shellHost = SHELL_HOST,
shellStorage = {},
shellGrants,
- shellPageRoutes = null,
- shellAccepts = null
+ shellPageRoutes = null
} = {}) {
const page = await browser.newPage({ viewport: { width: 390, height: 844 } })
if (shellRoute !== undefined) {
@@ -151,8 +150,7 @@ async function openPage({
storage: shellStorage,
faultGrant,
grants: shellGrants ?? [faultGrant],
- pageRoutes: shellPageRoutes,
- accepts: shellAccepts
+ pageRoutes: shellPageRoutes
})
}
const errors = []
@@ -587,11 +585,7 @@ describeRender('the Route A page in a real browser', () => {
})
)
try {
- // The one case that advertises the report, because it is the only one asserting on it.
- const opened = await openPage({
- shellRoute: { pathname: HOST_ROUTE },
- shellAccepts: [paintName]
- })
+ const opened = await openPage({ shellRoute: { pathname: HOST_ROUTE } })
await opened.page.goto(`${origin}/`, { waitUntil: 'load' })
await opened.page.waitForFunction(
() => document.documentElement.dataset.orcaWebEntry === 'mounted',
@@ -639,7 +633,6 @@ describeRender('the Route A page in a real browser', () => {
const route = `${HOST_ROUTE}/pr/render-check-tree`
const opened = await openPage({
shellRoute: { pathname: route },
- shellAccepts: [paintName],
shellPageRoutes: [HOST_ROUTE_PATTERN, '/h/[hostId]/pr/[worktreeId]']
})
await opened.page.goto(`${origin}/`, { waitUntil: 'load' })
diff --git a/config/scripts/mobile-web-app-session-terminal-init.test.mjs b/config/scripts/mobile-web-app-session-terminal-init.test.mjs
index a33cf408fa4..2d46fdb15c8 100644
--- a/config/scripts/mobile-web-app-session-terminal-init.test.mjs
+++ b/config/scripts/mobile-web-app-session-terminal-init.test.mjs
@@ -148,8 +148,6 @@ async function openSessionWithTerminalTab() {
faultGrant,
grants: [faultGrant, ...sessionGrants()],
pageRoutes: PAGE_ROUTE_PATTERNS,
- // The page claims an identity only against a shell that says it swaps one in.
- accepts: [pageClientIdentity.accept],
streams: ['session.tabs.subscribe', 'terminal.subscribe'],
replies: {
'worktree.show': { worktree: { id: WORKTREE, name: WORKTREE, path: `/tmp/${WORKTREE}` } },
diff --git a/config/scripts/mobile-web-app-terminal-probe-route.mjs b/config/scripts/mobile-web-app-terminal-probe-route.mjs
index 0e943d8c113..79996974545 100644
--- a/config/scripts/mobile-web-app-terminal-probe-route.mjs
+++ b/config/scripts/mobile-web-app-terminal-probe-route.mjs
@@ -57,6 +57,8 @@ import { TerminalWebView } from ${JSON.stringify(componentPath)}
export default function TerminalProbeRoute() {
const handleRef = useRef(null)
+ // The terminal frame as React Native laid it out, which is what the session fits.
+ const frameRef = useRef({ width: 0, height: 0 })
const [mounted, setMounted] = useState(true)
const onSelectionCopy = useCallback((text) => {
globalThis.__orcaTerminalCopied = text
@@ -71,10 +73,11 @@ export default function TerminalProbeRoute() {
globalThis.__orcaTerminalEngineErrors = globalThis.__orcaTerminalEngineErrors ?? []
globalThis.__orcaTerminalBeforeInput = []
globalThis.__orcaTerminalProbe = {
- init: (cols, rows, data) => handleRef.current?.init(cols, rows, data, false, []),
+ init: (cols, rows, initialData) =>
+ handleRef.current?.init({ cols, rows, initialData, oscLinks: [], frame: frameRef.current }),
write: (data) => handleRef.current?.write(data),
selectAll: () => handleRef.current?.doSelectAll(),
- measure: () => handleRef.current?.measureFitDimensions(),
+ fit: () => handleRef.current?.fitDimensions(frameRef.current),
awaitReady: () => handleRef.current?.awaitReady(),
setMounted: (next) => setMounted(next)
}
@@ -90,14 +93,21 @@ export default function TerminalProbeRoute() {
}, [])
return (
- {mounted ? (
-
- ) : null}
+ {
+ frameRef.current = event.nativeEvent.layout
+ }}
+ >
+ {mounted ? (
+
+ ) : null}
+
{/* The shape the terminal's live input takes on the page: xterm's own textarea is inert by
the document's design, so this is where typed text arrives. */}
diff --git a/config/scripts/mobile-web-app-terminal-render.test.mjs b/config/scripts/mobile-web-app-terminal-render.test.mjs
index 3b079bd9cb2..4a08bcece53 100644
--- a/config/scripts/mobile-web-app-terminal-render.test.mjs
+++ b/config/scripts/mobile-web-app-terminal-render.test.mjs
@@ -480,6 +480,14 @@ describeRender(
})
await openProbeTerminal(page)
expect(documentChunk, 'the document was served as its own chunk').not.toBe(null)
+ // Ready is notified with the replay's fit still a frame away. Left pending, that fit
+ // commits the resized box below, the resize refit then has nothing to do, and there is no
+ // frame to hold; so the document settles first. Since the terminal is built before
+ // ready, the fixture returns fast enough to land inside that frame.
+ await page.evaluate(
+ () =>
+ new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve)))
+ )
await page.evaluate((chunk) => {
const state = globalThis.__orcaScheduler
@@ -627,14 +635,14 @@ describeRender(
await page.close()
}, 300_000)
- it('measures a fit through the handle and records what beforeinput reports', async () => {
+ it('fits through the handle from the ready box and records what beforeinput reports', async () => {
const { page } = await openTerminal()
await openProbeTerminal(page)
- // The handle's own round trip: a measure is a command in and a notify back, and on the page
- // both halves are direct calls rather than a bridge. Null would mean the document answered
- // nothing, or answered a grid too small to fit.
- const fit = await page.evaluate(() => globalThis.__orcaTerminalProbe.measure())
+ // The fit is the app's own, from the cell box the document put in web-ready, against the
+ // frame React Native laid out, as the session's is. Null would mean the ready carried no box,
+ // or a grid too small to fit.
+ const fit = await page.evaluate(() => globalThis.__orcaTerminalProbe.fit())
expect(fit).not.toBeNull()
expect(fit.cols).toBeGreaterThanOrEqual(20)
expect(fit.rows).toBeGreaterThanOrEqual(8)
diff --git a/config/scripts/mobile-web-bundle-manifest.mjs b/config/scripts/mobile-web-bundle-manifest.mjs
index b7efce25ca0..2e9888f69c7 100644
--- a/config/scripts/mobile-web-bundle-manifest.mjs
+++ b/config/scripts/mobile-web-bundle-manifest.mjs
@@ -68,12 +68,10 @@ export function hashedAsset(bytes, extension) {
}
}
-function readIntegerConstant(source, name) {
+function readIntegerConstant(source, name, file = 'src/shared/protocol-version.ts') {
const match = new RegExp(`export const ${name} = (\\d+)`).exec(source)
if (!match) {
- throw new Error(
- `[mobile-web-bundle-manifest] ${name} not found in src/shared/protocol-version.ts`
- )
+ throw new Error(`[mobile-web-bundle-manifest] ${name} not found in ${file}`)
}
return Number.parseInt(match[1], 10)
}
@@ -94,6 +92,13 @@ export async function readProtocolWindow() {
}
}
+/** The page's build number, parsed for the same reason the protocol window is. */
+export async function readPageVersion() {
+ const file = join('src', 'shared', 'mobile-web-bundle', 'manifest-contract.ts')
+ const source = await readFile(join(projectDir, file), 'utf8')
+ return readIntegerConstant(source, 'MOBILE_WEB_PAGE_VERSION', file)
+}
+
export async function readDesktopVersion() {
const packageJson = JSON.parse(await readFile(join(projectDir, 'package.json'), 'utf8'))
if (typeof packageJson.version !== 'string' || packageJson.version.length === 0) {
@@ -124,6 +129,7 @@ export async function writeMobileWebBundleTree({
desktopVersion,
minCompatibleRuntimeProtocolVersion: protocolWindow.minCompatibleRuntimeProtocolVersion,
runtimeProtocolVersion: protocolWindow.runtimeProtocolVersion,
+ pageVersion: await readPageVersion(),
entrypoint: MOBILE_WEB_BUNDLE_ENTRYPOINT,
totalBytes: assets.reduce((total, asset) => total + asset.byteLength, 0),
assets,
diff --git a/config/scripts/mobile-web-bundle-manifest.test.mjs b/config/scripts/mobile-web-bundle-manifest.test.mjs
index 3c4d35fd8a7..81c447878a8 100644
--- a/config/scripts/mobile-web-bundle-manifest.test.mjs
+++ b/config/scripts/mobile-web-bundle-manifest.test.mjs
@@ -1,10 +1,16 @@
+import { mkdtemp, readFile, rm } from 'node:fs/promises'
+import { tmpdir } from 'node:os'
+import { join } from 'node:path'
import { describe, expect, it } from 'vitest'
import {
computeMobileWebBundleBuildId,
contentTypeForExtension,
hashedAsset,
- serializeMobileWebBundleAssets
+ serializeMobileWebBundleAssets,
+ sha256Hex,
+ writeMobileWebBundleTree
} from './mobile-web-bundle-manifest.mjs'
+import { MobileWebBundleManifestSchema } from '../../src/shared/mobile-web-bundle/manifest-contract.js'
describe('computeMobileWebBundleBuildId', () => {
const assets = [
@@ -55,3 +61,30 @@ describe('hashedAsset', () => {
expect(() => hashedAsset(Buffer.from('body'), 'wasm')).toThrow(/no content type registered/)
})
})
+
+describe('writeMobileWebBundleTree', () => {
+ it('stamps the page version the contract names, which the shell floors on', async () => {
+ const outDir = await mkdtemp(join(tmpdir(), 'mobile-web-bundle-manifest-'))
+ try {
+ const bytes = Buffer.from('\n', 'utf8')
+ const entry = {
+ path: 'index.html',
+ bytes,
+ sha256: sha256Hex(bytes),
+ byteLength: bytes.byteLength,
+ contentType: contentTypeForExtension('html')
+ }
+ await writeMobileWebBundleTree({
+ outDir,
+ written: [entry],
+ desktopVersion: '1.0.0',
+ protocolWindow: { runtimeProtocolVersion: 3, minCompatibleRuntimeProtocolVersion: 3 }
+ })
+ const manifest = JSON.parse(await readFile(join(outDir, 'manifest.json'), 'utf8'))
+ expect(Number.isInteger(manifest.pageVersion)).toBe(true)
+ expect(MobileWebBundleManifestSchema.parse(manifest).pageVersion).toBe(manifest.pageVersion)
+ } finally {
+ await rm(outDir, { recursive: true, force: true })
+ }
+ })
+})
diff --git a/config/scripts/orcad-terminal-smoke-change-scope.test.mjs b/config/scripts/orcad-terminal-smoke-change-scope.test.mjs
index f08a12848fd..e0e978800fc 100644
--- a/config/scripts/orcad-terminal-smoke-change-scope.test.mjs
+++ b/config/scripts/orcad-terminal-smoke-change-scope.test.mjs
@@ -97,12 +97,12 @@ it('only skips the unchanged smoke after a successful diff and dependency analys
)
expect(step.env).toEqual({
BASE_SHA: '${{ github.event.pull_request.base.sha }}',
- HEAD_SHA: '${{ github.event.pull_request.head.sha }}',
ORCA_BACKGROUND_LAUNCH: '1'
})
- expect(step.run).toContain(
- 'git diff --name-only --no-renames -z --merge-base "$BASE_SHA" "$HEAD_SHA"'
- )
+ // See the localization gate: HEAD^1 removes the merge-base computation, so a shallow checkout
+ // is enough and the payload head SHA is unused.
+ expect(step.run).toContain('node config/scripts/git-pull-request-diff-base.mjs "$BASE_SHA"')
+ expect(step.run).toContain('git diff --name-only --no-renames -z "$DIFF_BASE" HEAD')
expect(step.run).not.toContain('--diff-filter')
expect(step.run).toContain('&& [ "$scope" = false ]; then')
expect(step.run).toMatch(/else\s+pnpm run smoke:orcad-terminal\s+fi/)
diff --git a/config/scripts/package-linux-formats.mjs b/config/scripts/package-linux-formats.mjs
index 2f826675885..56c5ed4562f 100644
--- a/config/scripts/package-linux-formats.mjs
+++ b/config/scripts/package-linux-formats.mjs
@@ -24,7 +24,7 @@ export function linuxFormatArguments({ format, appDirectory, outputDirectory })
}
return [
'--config',
- 'config/electron-builder.config.cjs',
+ 'config/electron-builder-pr-linux.config.cjs',
'--linux',
format,
'--x64',
diff --git a/config/scripts/package-linux-formats.test.mjs b/config/scripts/package-linux-formats.test.mjs
index 6a9eb8c4683..7d187af658d 100644
--- a/config/scripts/package-linux-formats.test.mjs
+++ b/config/scripts/package-linux-formats.test.mjs
@@ -11,6 +11,7 @@ import {
symlinkSync,
writeFileSync
} from 'node:fs'
+import { createRequire } from 'node:module'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
@@ -55,7 +56,7 @@ it('preserves configured hooks, architecture, names, and PR compression with exa
})
expect(args).toEqual([
'--config',
- 'config/electron-builder.config.cjs',
+ 'config/electron-builder-pr-linux.config.cjs',
'--linux',
'deb',
'--x64',
@@ -209,3 +210,17 @@ describe('independent Linux package formats', () => {
expect(readdirSync(outputDirectory)).toEqual([])
})
})
+
+it('changes only CI deb/rpm compression levels without mutating release settings or hooks', () => {
+ const require = createRequire(import.meta.url)
+ const release = require('../electron-builder.config.cjs')
+ const before = { deb: { ...release.deb }, rpm: { ...release.rpm } }
+ const ci = require('../electron-builder-pr-linux.config.cjs')
+ expect(release.deb).toEqual(before.deb)
+ expect(release.rpm).toEqual(before.rpm)
+ expect(ci).toEqual({
+ ...release,
+ deb: { ...release.deb, fpm: [...(release.deb.fpm ?? []), '--deb-compression-level=1'] },
+ rpm: { ...release.rpm, fpm: [...(release.rpm.fpm ?? []), '--rpm-compression-level=1'] }
+ })
+})
diff --git a/config/scripts/pr-code-change-scope.mjs b/config/scripts/pr-code-change-scope.mjs
index ab23c41d75a..98dc914052a 100644
--- a/config/scripts/pr-code-change-scope.mjs
+++ b/config/scripts/pr-code-change-scope.mjs
@@ -152,6 +152,8 @@ const CROSS_VERSION_WIRE_PREFIXES = [
'src/main/native-chat/agent-session-journal/',
'src/main/native-chat/agent-session-wire/',
'src/main/runtime/agent-session-record-store',
+ 'src/main/runtime/agent-session-recovery-capsule',
+ 'src/shared/agent-session-resume-marker',
'src/main/runtime/rpc/dispatcher',
'src/main/runtime/rpc/methods/agent-launch',
'src/main/runtime/rpc/methods/ai-vault.ts',
diff --git a/config/scripts/pr-code-change-scope.test.mjs b/config/scripts/pr-code-change-scope.test.mjs
index 094dadf542e..c23ea0e1140 100644
--- a/config/scripts/pr-code-change-scope.test.mjs
+++ b/config/scripts/pr-code-change-scope.test.mjs
@@ -530,7 +530,11 @@ describe('PR Checks skip wiring', () => {
)
expect(classify.run).toContain('--diff-filter=ACDMR')
expect(classify.run).toContain('--no-renames')
- expect(classify.run).toContain('--merge-base "$BASE_SHA" "$HEAD_SHA"')
+ // HEAD is the merge commit, so HEAD^1 is the base side and no merge base is computed.
+ // That is what lets this job check out shallowly, which every other job waits on.
+ expect(classify.run).toContain('node config/scripts/git-pull-request-diff-base.mjs "$BASE_SHA"')
+ expect(classify.run).toContain('"$DIFF_BASE" HEAD')
+ expect(classify.run).not.toContain('--merge-base "$')
expect(classify.run).toContain('node config/scripts/pr-code-change-scope.mjs')
expect(classify.run).toContain('tee -a "$GITHUB_OUTPUT"')
expect(prWorkflow.jobs.code_paths.outputs.should_run).toBe(
@@ -582,12 +586,21 @@ describe('PR Checks skip wiring', () => {
it('gates each expensive job on its classifier and cache prerequisite', () => {
for (const jobName of expensiveJobs.filter((jobName) => jobName !== 'test')) {
- expect(prWorkflow.jobs[jobName].needs, jobName).toEqual(['code_paths'])
+ expect(prWorkflow.jobs[jobName].needs, jobName).toEqual(
+ ['package', 'package_windows'].includes(jobName)
+ ? ['code_paths', 'static_analysis', 'typecheck']
+ : ['code_paths']
+ )
expect(prWorkflow.jobs[jobName].if, jobName).toBe(
`needs.code_paths.outputs.${jobName} == 'true'`
)
}
- expect(prWorkflow.jobs.test.needs).toEqual(['code_paths', 'test_native_cache'])
+ expect(prWorkflow.jobs.test.needs).toEqual([
+ 'code_paths',
+ 'test_native_cache',
+ 'static_analysis',
+ 'typecheck'
+ ])
expect(prWorkflow.jobs.test.if).toContain("needs.code_paths.outputs.test == 'true'")
expect(prWorkflow.jobs.test.if).toContain("needs.test_native_cache.result == 'success'")
expect(prWorkflow.jobs.test.if).toContain("needs.test_native_cache.result == 'skipped'")
diff --git a/config/scripts/pr-e2e-gate-contract.test.mjs b/config/scripts/pr-e2e-gate-contract.test.mjs
index 518cf62b930..4bcb1b4f1af 100644
--- a/config/scripts/pr-e2e-gate-contract.test.mjs
+++ b/config/scripts/pr-e2e-gate-contract.test.mjs
@@ -238,7 +238,7 @@ describe('PR E2E gate contract', () => {
})
it('scopes detection to the PR range so base drift cannot false-trigger', () => {
- expect(filterStep.run).toContain('--merge-base "$BASE" "$HEAD"')
+ expect(filterStep.run).toMatch(/diff-base\.mjs "\$BASE"[\s\S]*"\$DIFF_BASE" HEAD/)
expect(filterStep.run).toContain('set -euo pipefail')
})
@@ -444,7 +444,7 @@ describe('PR E2E gate contract', () => {
})
it('scopes the VM rollback oracle to the PR range and recipe schema authorities', () => {
- expect(rollbackStep.run).toContain('--merge-base "$BASE_SHA" "$HEAD_SHA"')
+ expect(rollbackStep.run).toMatch(/diff-base\.mjs "\$BASE_SHA"[\s\S]*"\$DIFF_BASE" HEAD --/)
expect(rollbackStep.run).toContain('src/shared/ephemeral-vm-recipes.ts')
expect(rollbackStep.run).toContain('src/shared/orca-yaml-hook-types.ts')
expect(selectPrE2eSpecs(['src/shared/ephemeral-vm-recipes.ts'])).toEqual([
diff --git a/config/scripts/pr-ready-check-reuse.mjs b/config/scripts/pr-ready-check-reuse.mjs
index 7c319f5554c..57e00a740c2 100644
--- a/config/scripts/pr-ready-check-reuse.mjs
+++ b/config/scripts/pr-ready-check-reuse.mjs
@@ -1,8 +1,8 @@
import { appendFileSync, readFileSync } from 'node:fs'
import { pathToFileURL } from 'node:url'
-export function prCheckRunTitle({ number, sourceSha, workflowSha }) {
- return `PR ${number} | source ${sourceSha} | workflow ${workflowSha}`
+export function prCheckRunTitle({ number, sourceSha, workflowSha, unitMode = 'full' }) {
+ return `PR ${number} | source ${sourceSha} | workflow ${workflowSha} | unit ${unitMode}`
}
export function reusablePrCheckRun(runs, identity) {
diff --git a/config/scripts/pr-ready-check-reuse.test.mjs b/config/scripts/pr-ready-check-reuse.test.mjs
index b841aa651fa..1d64542a614 100644
--- a/config/scripts/pr-ready-check-reuse.test.mjs
+++ b/config/scripts/pr-ready-check-reuse.test.mjs
@@ -45,6 +45,12 @@ describe('ready-for-review required check reuse', () => {
it('reuses a completed success only for the identical PR, merge source and workflow', () => {
expect(reusablePrCheckRun([passed], identity)).toBe(passed)
expect(reusablePrCheckRun([], identity)).toBeUndefined()
+ expect(
+ reusablePrCheckRun(
+ [{ ...passed, display_title: prCheckRunTitle({ ...identity, unitMode: 'selected' }) }],
+ identity
+ )
+ ).toBeUndefined()
for (const key of ['number', 'sourceSha', 'workflowSha', 'headSha', 'runId']) {
const changed = key === 'number' ? 43 : key === 'runId' ? '123' : 'd'.repeat(40)
expect(reusablePrCheckRun([passed], { ...identity, [key]: changed }), key).toBeUndefined()
@@ -121,7 +127,7 @@ describe('ready-for-review required check reuse', () => {
it('keeps required skips conditional on proof and leaves advisory routing eligible', () => {
expect(workflow['run-name']).toBe(
- 'PR ${{ github.event.pull_request.number }} | source ${{ github.sha }} | workflow ${{ github.workflow_sha }}'
+ "PR ${{ github.event.pull_request.number }} | source ${{ github.sha }} | workflow ${{ github.workflow_sha }} | unit ${{ github.event.pull_request.draft && vars.ORCA_UNIT_SELECTION_MODE == 'selected' && 'selected' || 'full' }}"
)
expect(workflow.on.pull_request.types).toContain('ready_for_review')
const detector = workflow.jobs.code_paths
diff --git a/config/scripts/pr-workflow-parallelism.test.mjs b/config/scripts/pr-workflow-parallelism.test.mjs
index 54d00b876fe..b08365f5baf 100644
--- a/config/scripts/pr-workflow-parallelism.test.mjs
+++ b/config/scripts/pr-workflow-parallelism.test.mjs
@@ -1,6 +1,7 @@
import { existsSync, globSync, readFileSync } from 'node:fs'
import { parse } from 'yaml'
import { describe, expect, it } from 'vitest'
+import { UNIT_EXCLUDE } from './ci-unit-files.mjs'
import { mobileWebCheckArgs } from './run-mobile-web-app-checks.mjs'
import { MOBILE_WEB_APP_DEPENDENCIES_REQUIRED_ENV } from './mobile-web-app-bundle-dependencies.mjs'
@@ -105,15 +106,13 @@ describe('PR workflow parallelism', () => {
expect(nodeNextWorkflow.on.schedule).toHaveLength(1)
expect(nodeNextWorkflow.on.workflow_dispatch).toBeNull()
expect(sharedTest.strategy.matrix.node).toBe('${{ fromJSON(inputs.node_versions) }}')
- expect(sharedTest.strategy.matrix.shard).toEqual(
- Array.from({ length: 8 }, (_, index) => index + 1)
- )
- expect(sharedTest.strategy.matrix.shard_total).toEqual([8])
+ expect(sharedTest.strategy.matrix.shard).toBe('${{ fromJSON(needs.plan.outputs.shards) }}')
+ expect(sharedTest.needs).toBe('plan')
expect(installStep.with['node-version']).toBe('${{ matrix.node }}')
expect(installStep.with['cache-electron-package']).toBe('true')
- expect(testStep.run).toContain('--shard=${{ matrix.shard }}/${{ matrix.shard_total }}')
+ expect(testStep.run).toContain('--shard=${{ matrix.shard.index }}/${{ matrix.shard.count }}')
for (const testFile of nativeShellContractFiles) {
- expect(testStep.run).toContain(`--exclude=${testFile}`)
+ expect(UNIT_EXCLUDE).toContain(testFile)
}
expect(primerInstall.with['native-runtime']).toBe('node')
expect(primerInstall.with['node-version']).toBe('24')
@@ -339,9 +338,10 @@ describe('PR workflow parallelism', () => {
(step) => step.uses === './.github/actions/install-node-dependencies'
)
- for (const jobName of ['typecheck', 'git_compatibility', 'xterm_patch_sync']) {
+ for (const jobName of ['typecheck', 'git_compatibility']) {
expect(installFor(jobName).with, jobName).toBeUndefined()
}
+ expect(installFor('xterm_patch_sync')).toBeUndefined()
expect(installFor('static_analysis').with['native-runtime']).toBe('node')
expect(installFor('shell_contracts').with['native-runtime']).toBe('node')
expect(sharedTestInstall.with['native-runtime']).toBe('node')
@@ -456,7 +456,9 @@ describe('PR workflow parallelism', () => {
expect(electronCacheResolution.if).toBe(
"inputs.native-runtime == 'electron' || inputs.cache-electron-package == 'true'"
)
- expect(electronCache.if).toBe(electronCacheResolution.if)
+ expect(electronCache.if).toBe(
+ "(github.event_name != 'pull_request' || runner.os != 'Linux') && steps.electron-package-cache.outputs.version != ''"
+ )
expect(electronCache.uses).toBe('actions/cache@v5')
expect(electronCache.with.key).toContain('steps.electron-package-cache.outputs.version')
expect(dependencyAction.inputs['cache-electron-package'].default).toBe('false')
diff --git a/config/scripts/pullfrog-review-scope.cjs b/config/scripts/pullfrog-review-scope.cjs
new file mode 100644
index 00000000000..5168d5bd7ef
--- /dev/null
+++ b/config/scripts/pullfrog-review-scope.cjs
@@ -0,0 +1,64 @@
+function reviewNumber(inputs) {
+ if (/^[1-9]\d*$/.test(inputs.pull_request_number ?? '')) {
+ return Number(inputs.pull_request_number)
+ }
+ const match =
+ / \| PR ([1-9]\d*)$/.exec(inputs.name ?? '') ??
+ /^Review (?:new commits on )?#([1-9]\d*) \[[\w-]+\]$/.exec(inputs.name ?? '')
+ return match ? Number(match[1]) : null
+}
+
+function reviewRunOrder(runs, number, runId) {
+ const related = runs.filter((run) => reviewNumber({ name: run.display_title }) === number)
+ return {
+ superseded: related.some((run) => run.id > runId),
+ older: related
+ .filter(
+ (run) =>
+ run.id < runId &&
+ ['queued', 'in_progress', 'waiting', 'pending', 'requested'].includes(run.status)
+ )
+ .map((run) => run.id)
+ }
+}
+
+async function reviewScope({ github, context, core }) {
+ const inputs = context.payload.inputs ?? {}
+ const number = reviewNumber(inputs)
+ core.setOutput('current', 'true')
+ if (!number || !Number.isSafeInteger(number)) {
+ return
+ }
+ try {
+ const { data: pr } = await github.rest.pulls.get({ ...context.repo, pull_number: number })
+ if (pr.state !== 'open' || (inputs.head_sha && inputs.head_sha !== pr.head.sha)) {
+ core.setOutput('current', 'false')
+ return
+ }
+ core.setOutput('head', pr.head.sha)
+ core.setOutput('number', String(number))
+ const { data } = await github.rest.actions.listWorkflowRuns({
+ ...context.repo,
+ workflow_id: 'pullfrog.yml',
+ event: 'workflow_dispatch',
+ per_page: 100
+ })
+ const order = reviewRunOrder(data.workflow_runs, number, context.runId)
+ if (order.superseded) {
+ core.setOutput('current', 'false')
+ return
+ }
+ // Run IDs, unlike scope-job completion order, cannot let an older review cancel a newer one.
+ for (const runId of order.older) {
+ try {
+ await github.rest.actions.cancelWorkflowRun({ ...context.repo, run_id: runId })
+ } catch (error) {
+ core.warning(`Could not cancel older review ${runId}: ${error.message}`)
+ }
+ }
+ } catch (error) {
+ core.warning(`Review identity unavailable; leaving this task independent: ${error.message}`)
+ }
+}
+
+module.exports = { reviewNumber, reviewRunOrder, reviewScope }
diff --git a/config/scripts/pullfrog-review-scope.test.mjs b/config/scripts/pullfrog-review-scope.test.mjs
new file mode 100644
index 00000000000..2a3f902da87
--- /dev/null
+++ b/config/scripts/pullfrog-review-scope.test.mjs
@@ -0,0 +1,109 @@
+import { expect, it, vi } from 'vitest'
+import scope from './pullfrog-review-scope.cjs'
+
+it('groups a current review by PR while leaving other agent tasks independent', async () => {
+ const get = vi.fn(async () => ({ data: { state: 'open', head: { sha: 'current' } } }))
+ const core = { setOutput: vi.fn(), warning: vi.fn() }
+ const context = {
+ repo: { owner: 'stablyai', repo: 'orca' },
+ runId: 7,
+ payload: { inputs: { name: 'Review #42 [abc]' } }
+ }
+ const github = {
+ rest: {
+ pulls: { get },
+ actions: { listWorkflowRuns: async () => ({ data: { workflow_runs: [] } }) }
+ }
+ }
+ await scope.reviewScope({ core, context, github })
+ expect(get).toHaveBeenCalledWith({ owner: 'stablyai', repo: 'orca', pull_number: 42 })
+ expect(core.setOutput).toHaveBeenCalledWith('head', 'current')
+ get.mockClear()
+ await scope.reviewScope({
+ core,
+ github,
+ context: { ...context, payload: { inputs: { name: 'Investigate #42' } } }
+ })
+ expect(get).not.toHaveBeenCalled()
+ expect(core.setOutput).toHaveBeenLastCalledWith('current', 'true')
+})
+
+it('coalesces only explicit or recognized PR review identities', () => {
+ expect(scope.reviewNumber({ name: 'Review #23532 [85jpk]' })).toBe(23532)
+ expect(scope.reviewNumber({ name: 'Review new commits on #22727 [24lpq]' })).toBe(22727)
+ expect(scope.reviewNumber({ pull_request_number: '123' })).toBe(123)
+ for (const name of ['Fix #123', 'Review #12; echo test', 'Review #123', '', 'Review #0 [abc]']) {
+ expect(scope.reviewNumber({ name })).toBeNull()
+ }
+})
+
+it('skips closed or explicitly stale reviews and tolerates lookup failure', async () => {
+ for (const data of [
+ { state: 'closed', head: { sha: 'a' } },
+ { state: 'open', head: { sha: 'b' } }
+ ]) {
+ const core = { setOutput: vi.fn(), warning: vi.fn() }
+ await scope.reviewScope({
+ core,
+ context: {
+ repo: {},
+ runId: 1,
+ payload: { inputs: { pull_request_number: '1', head_sha: 'a' } }
+ },
+ github: { rest: { pulls: { get: async () => ({ data }) } } }
+ })
+ expect(core.setOutput).toHaveBeenCalledWith('current', 'false')
+ }
+ const core = { setOutput: vi.fn(), warning: vi.fn() }
+ await scope.reviewScope({
+ core,
+ context: { repo: {}, runId: 2, payload: { inputs: { pull_request_number: '1' } } },
+ github: {
+ rest: {
+ pulls: {
+ get: async () => {
+ throw new Error('offline')
+ }
+ }
+ }
+ }
+ })
+ expect(core.setOutput).toHaveBeenCalledWith('current', 'true')
+ expect(core.warning).toHaveBeenCalled()
+})
+
+it('a delayed older scope cannot cancel or replace a newer review', async () => {
+ const runs = [
+ { id: 6, display_title: 'Review #42 [a]', status: 'in_progress' },
+ { id: 8, display_title: 'Custom review | PR 42', status: 'queued' },
+ { id: 5, display_title: 'Investigate #42', status: 'in_progress' },
+ { id: 4, display_title: 'Review #43 [other]', status: 'in_progress' }
+ ]
+ for (const runId of [7, 9]) {
+ const cancelWorkflowRun = vi.fn(async () => ({}))
+ const core = { setOutput: vi.fn(), warning: vi.fn() }
+ await scope.reviewScope({
+ context: {
+ repo: { owner: 'stablyai', repo: 'orca' },
+ runId,
+ payload: { inputs: { name: 'Review #42 [current]' } }
+ },
+ core,
+ github: {
+ rest: {
+ pulls: { get: async () => ({ data: { state: 'open', head: { sha: 'head' } } }) },
+ actions: {
+ listWorkflowRuns: async () => ({ data: { workflow_runs: runs } }),
+ cancelWorkflowRun
+ }
+ }
+ }
+ })
+ if (runId === 7) {
+ expect(cancelWorkflowRun).not.toHaveBeenCalled()
+ expect(core.setOutput).toHaveBeenCalledWith('current', 'false')
+ } else {
+ expect(cancelWorkflowRun.mock.calls.map(([args]) => args.run_id)).toEqual([6, 8])
+ }
+ }
+})
diff --git a/config/scripts/regenerate-xterm-patches.mjs b/config/scripts/regenerate-xterm-patches.mjs
index 672be8bee61..c67c6eb6622 100644
--- a/config/scripts/regenerate-xterm-patches.mjs
+++ b/config/scripts/regenerate-xterm-patches.mjs
@@ -236,6 +236,7 @@ function ensureDependencies(upstreamRoot, manifest) {
const stamp = path.join(upstreamRoot, 'node_modules', '.orca-xterm-install-stamp')
const want = `${manifest.upstream.commit}\n${statSync(lockfile).size}\n`
if (existsSync(stamp) && readFileSync(stamp, 'utf8') === want) {
+ assertToolchain(upstreamRoot, manifest)
return
}
run('npm', ['ci'], {
diff --git a/config/scripts/release-policy.mjs b/config/scripts/release-policy.mjs
new file mode 100644
index 00000000000..4733e79f2b4
--- /dev/null
+++ b/config/scripts/release-policy.mjs
@@ -0,0 +1,138 @@
+// Enforced by .github/workflows/release-policy.yml on release events.
+
+const BOT_LOGIN = 'github-actions[bot]'
+const BOT_EMAIL = '41898282+github-actions[bot]@users.noreply.github.com'
+const NUMBER = '(?:0|[1-9][0-9]*)'
+const VERSION = `${NUMBER}\\.${NUMBER}\\.${NUMBER}`
+const STABLE_TAG = new RegExp(`^v${VERSION}$`)
+const RC_TAG = new RegExp(`^v${VERSION}-rc\\.${NUMBER}(?:\\.[0-9A-Za-z]+)?$`)
+const MOBILE_TAG = new RegExp(`^mobile(?:-android)?-v${VERSION}$`)
+
+export function isPrereleaseTag(tag) {
+ return RC_TAG.test(tag) || MOBILE_TAG.test(tag)
+}
+
+export function compareStableTags(left, right) {
+ const a = left.slice(1).split('.').map(Number)
+ const b = right.slice(1).split('.').map(Number)
+ return a.reduce((result, part, index) => result || part - b[index], 0)
+}
+
+function escapeRegExp(text) {
+ return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
+}
+
+// Why: Cut Release creates the annotated tag and its `release: vX` commit, but the
+// release object keeps whoever created the draft first, which can be a person.
+export async function isCutByReleasePipeline(github, { owner, repo }, tag) {
+ if (!STABLE_TAG.test(tag) && !RC_TAG.test(tag)) {
+ return false
+ }
+ let ref
+ try {
+ ;({ data: ref } = await github.rest.git.getRef({ owner, repo, ref: `tags/${tag}` }))
+ } catch (error) {
+ if (error.status === 404) {
+ return false
+ }
+ throw error
+ }
+ if (ref.object.type !== 'tag') {
+ return false
+ }
+ const { data: tagObject } = await github.rest.git.getTag({
+ owner,
+ repo,
+ tag_sha: ref.object.sha
+ })
+ if (tagObject.tagger?.email !== BOT_EMAIL || tagObject.object.type !== 'commit') {
+ return false
+ }
+ const { data: commit } = await github.rest.git.getCommit({
+ owner,
+ repo,
+ commit_sha: tagObject.object.sha
+ })
+ const subject = commit.message.split('\n')[0]
+ return new RegExp(`^release: ${escapeRegExp(tag)}(?: \\[rc-slot:[^\\]]+\\])?$`).test(subject)
+}
+
+async function isAuthorizedRelease(github, repoRef, release) {
+ const tag = release.tag_name
+ if (!STABLE_TAG.test(tag) && !isPrereleaseTag(tag)) {
+ return false
+ }
+ return release.author?.login === BOT_LOGIN || isCutByReleasePipeline(github, repoRef, tag)
+}
+
+// Why: the highest authorized stable release must be Latest; GitHub's own pick
+// (and the old bot-author-only filter) can move it to an older version.
+export async function restoreLatestStable(github, repoRef) {
+ const releases = await github.paginate(github.rest.repos.listReleases, {
+ ...repoRef,
+ per_page: 100
+ })
+ const candidates = releases
+ .filter((release) => !release.draft && !release.prerelease && STABLE_TAG.test(release.tag_name))
+ .sort((left, right) => compareStableTags(right.tag_name, left.tag_name))
+ for (const release of candidates) {
+ if (!(await isAuthorizedRelease(github, repoRef, release))) {
+ continue
+ }
+ await github.rest.repos.updateRelease({
+ ...repoRef,
+ release_id: release.id,
+ make_latest: 'true'
+ })
+ return release.tag_name
+ }
+ return null
+}
+
+export async function enforceReleasePolicy({ github, context, core }) {
+ const { release, action } = context.payload
+ const tag = release.tag_name
+ const author = release.author?.login
+ const repoRef = context.repo
+ const expectedPrerelease = isPrereleaseTag(tag)
+
+ if (await isAuthorizedRelease(github, repoRef, release)) {
+ if (release.prerelease !== expectedPrerelease) {
+ await github.rest.repos.updateRelease({
+ ...repoRef,
+ release_id: release.id,
+ prerelease: expectedPrerelease,
+ make_latest: expectedPrerelease ? 'false' : 'legacy'
+ })
+ }
+ await restoreLatestStable(github, repoRef)
+ return
+ }
+
+ // Why: editing notes on a live release is not a publication; deleting on edit
+ // took down the v1.4.216 release and its tag.
+ if (action !== 'published') {
+ core.warning(
+ `Release ${tag} by ${author || 'unknown'} is outside release policy; left as-is on "${action}".`
+ )
+ return
+ }
+
+ await github.rest.repos.updateRelease({
+ ...repoRef,
+ release_id: release.id,
+ draft: true,
+ prerelease: true,
+ make_latest: 'false'
+ })
+ await restoreLatestStable(github, repoRef)
+ await github.rest.repos.deleteRelease({ ...repoRef, release_id: release.id })
+ try {
+ await github.rest.git.deleteRef({ ...repoRef, ref: `tags/${tag}` })
+ } catch (error) {
+ if (error.status !== 404) {
+ throw error
+ }
+ }
+ core.warning(`Deleted unauthorized release ${tag} created by ${author || 'unknown'}.`)
+}
diff --git a/config/scripts/release-policy.test.mjs b/config/scripts/release-policy.test.mjs
new file mode 100644
index 00000000000..6478f6bb0c4
--- /dev/null
+++ b/config/scripts/release-policy.test.mjs
@@ -0,0 +1,150 @@
+import { describe, expect, it, vi } from 'vitest'
+import { enforceReleasePolicy, restoreLatestStable } from './release-policy.mjs'
+
+const BOT_EMAIL = '41898282+github-actions[bot]@users.noreply.github.com'
+const repoRef = { owner: 'stablyai', repo: 'orca' }
+
+function notFound() {
+ return Object.assign(new Error('Not Found'), { status: 404 })
+}
+
+// tags: { [tag]: { tagger, subject } } for annotated tags; missing tags 404.
+function createGithub({ releases = [], tags = {} } = {}) {
+ const rest = {
+ repos: {
+ listReleases: vi.fn(),
+ updateRelease: vi.fn(async () => ({ data: {} })),
+ deleteRelease: vi.fn(async () => ({ data: {} }))
+ },
+ git: {
+ getRef: vi.fn(async ({ ref }) => {
+ const tag = ref.replace(/^tags\//, '')
+ if (!tags[tag]) {
+ throw notFound()
+ }
+ return { data: { object: { type: 'tag', sha: `tag-${tag}` } } }
+ }),
+ getTag: vi.fn(async ({ tag_sha }) => {
+ const tag = tag_sha.replace(/^tag-/, '')
+ return {
+ data: {
+ tagger: { email: tags[tag].tagger ?? BOT_EMAIL },
+ object: { type: 'commit', sha: `commit-${tag}` }
+ }
+ }
+ }),
+ getCommit: vi.fn(async ({ commit_sha }) => {
+ const tag = commit_sha.replace(/^commit-/, '')
+ return { data: { message: `${tags[tag].subject ?? `release: ${tag}`}\n` } }
+ }),
+ deleteRef: vi.fn(async () => ({ data: {} }))
+ }
+ }
+ return { rest, paginate: vi.fn(async () => releases) }
+}
+
+function release(tag, author, overrides = {}) {
+ return {
+ id: Number(tag.replace(/\D/g, '')),
+ tag_name: tag,
+ author: { login: author },
+ draft: false,
+ prerelease: false,
+ ...overrides
+ }
+}
+
+function run(github, payloadRelease, action) {
+ const core = { warning: vi.fn() }
+ const context = { payload: { release: payloadRelease, action }, repo: repoRef }
+ return enforceReleasePolicy({ github, context, core }).then(() => core)
+}
+
+describe('release policy', () => {
+ it('keeps a pipeline-cut release whose draft a person created', async () => {
+ const r216 = release('v1.4.216', 'Jinwoo-H')
+ const github = createGithub({
+ releases: [r216, release('v1.4.214', 'github-actions[bot]')],
+ tags: { 'v1.4.216': {}, 'v1.4.214': {} }
+ })
+
+ await run(github, r216, 'edited')
+
+ expect(github.rest.repos.deleteRelease).not.toHaveBeenCalled()
+ expect(github.rest.git.deleteRef).not.toHaveBeenCalled()
+ expect(github.rest.repos.updateRelease).toHaveBeenCalledWith({
+ ...repoRef,
+ release_id: r216.id,
+ make_latest: 'true'
+ })
+ })
+
+ it('never deletes an unauthorized release on edit', async () => {
+ const qa = release('v1.4.300', 'someone')
+ const github = createGithub({ releases: [qa] })
+
+ const core = await run(github, qa, 'edited')
+
+ expect(github.rest.repos.deleteRelease).not.toHaveBeenCalled()
+ expect(github.rest.git.deleteRef).not.toHaveBeenCalled()
+ expect(core.warning).toHaveBeenCalledWith(expect.stringContaining('left as-is'))
+ })
+
+ it('deletes a published release whose tag was not cut by the pipeline', async () => {
+ const qa = release('v1.4.300', 'someone')
+ const github = createGithub({
+ releases: [qa, release('v1.4.215', 'nwparker')],
+ tags: { 'v1.4.300': { tagger: 'someone@example.com' }, 'v1.4.215': {} }
+ })
+
+ await run(github, qa, 'published')
+
+ expect(github.rest.repos.deleteRelease).toHaveBeenCalledWith({ ...repoRef, release_id: qa.id })
+ expect(github.rest.git.deleteRef).toHaveBeenCalledWith({ ...repoRef, ref: 'tags/v1.4.300' })
+ })
+
+ it('rejects a bot-tagged tag whose commit is not a release commit', async () => {
+ const qa = release('v1.4.300', 'someone')
+ const github = createGithub({ tags: { 'v1.4.300': { subject: 'fix: something' } } })
+
+ await run(github, qa, 'published')
+
+ expect(github.rest.repos.deleteRelease).toHaveBeenCalled()
+ })
+
+ it('accepts scheduled RC release commits', async () => {
+ const rc = release('v1.4.217-rc.1', 'someone', { prerelease: true })
+ const github = createGithub({
+ tags: { 'v1.4.217-rc.1': { subject: 'release: v1.4.217-rc.1 [rc-slot:2026-09-28-15]' } }
+ })
+
+ await run(github, rc, 'published')
+
+ expect(github.rest.repos.deleteRelease).not.toHaveBeenCalled()
+ })
+
+ it('restores Latest to the highest pipeline-cut stable, not only bot-authored ones', async () => {
+ const github = createGithub({
+ releases: [
+ release('v1.4.214', 'github-actions[bot]'),
+ release('v1.4.215', 'nwparker'),
+ release('v1.4.216-rc.0', 'github-actions[bot]', { prerelease: true })
+ ],
+ tags: { 'v1.4.214': {}, 'v1.4.215': {} }
+ })
+
+ await expect(restoreLatestStable(github, repoRef)).resolves.toBe('v1.4.215')
+ expect(github.rest.repos.updateRelease).toHaveBeenCalledTimes(1)
+ })
+
+ it('compares versions numerically when picking Latest', async () => {
+ const github = createGithub({
+ releases: [
+ release('v1.4.99', 'github-actions[bot]'),
+ release('v1.4.100', 'github-actions[bot]')
+ ]
+ })
+
+ await expect(restoreLatestStable(github, repoRef)).resolves.toBe('v1.4.100')
+ })
+})
diff --git a/config/scripts/runtime-serve-terminal-smoke.mjs b/config/scripts/runtime-serve-terminal-smoke.mjs
index a03c85983d8..c1d998717ff 100644
--- a/config/scripts/runtime-serve-terminal-smoke.mjs
+++ b/config/scripts/runtime-serve-terminal-smoke.mjs
@@ -388,7 +388,9 @@ async function main() {
child.kill('SIGTERM')
const exited = await Promise.race([
new Promise((r) => child.on('exit', () => r(true))),
- new Promise((r) => setTimeout(() => r(false), SHUTDOWN_TIMEOUT_MS))
+ // unref'd: the loser of this race must not hold the event loop open after the
+ // winner already decided. The timer still bounds the wait.
+ new Promise((r) => setTimeout(() => r(false), SHUTDOWN_TIMEOUT_MS).unref())
])
if (!exited) {
child.kill('SIGKILL')
diff --git a/config/scripts/xterm-dependency-cache.test.mjs b/config/scripts/xterm-dependency-cache.test.mjs
new file mode 100644
index 00000000000..4c4f69191ef
--- /dev/null
+++ b/config/scripts/xterm-dependency-cache.test.mjs
@@ -0,0 +1,72 @@
+import { readFileSync } from 'node:fs'
+import { expect, it } from 'vitest'
+import { parse } from 'yaml'
+
+const readYaml = (path) => parse(readFileSync(new URL(path, import.meta.url), 'utf8'))
+const action = readYaml('../../.github/actions/prepare-xterm-dependencies/action.yml')
+const workflow = readYaml('../../.github/workflows/ci-xterm-cache.yml')
+const restore = action.runs.steps.find((step) => step.id === 'restore')
+
+it('separates toolchains and restores dependencies without a stale fallback or build results', () => {
+ for (const input of [
+ 'runner.os',
+ 'runtime.outputs.image',
+ 'runner.arch',
+ 'runtime.outputs.node',
+ 'xterm-upstream.json',
+ 'regenerate-xterm-patches.mjs',
+ 'xterm-patch-text.mjs',
+ 'prepare-xterm-dependencies/action.yml'
+ ]) {
+ expect(restore.with.key).toContain(input)
+ }
+ expect(restore.uses).toBe('actions/cache/restore@v5')
+ expect(restore.with['restore-keys']).toBeUndefined()
+ expect(restore.with.path.trim().split('\n')).toEqual([
+ '${{ runner.temp }}/xterm-patch-build/upstream/.git',
+ '${{ runner.temp }}/xterm-patch-build/upstream/node_modules'
+ ])
+})
+
+it('publishes only from main after a successful fresh verification, and skips work on hits', () => {
+ expect(workflow.on.pull_request).toBeUndefined()
+ expect(workflow.on.push.branches).toEqual(['main'])
+ expect(workflow.jobs.seed.if).toBe("github.ref == 'refs/heads/main'")
+ expect(workflow.permissions).toEqual({ contents: 'read' })
+ const steps = workflow.jobs.seed.steps
+ const verify = steps.find((step) => step.name === 'Verify and populate dependencies')
+ const save = steps.find((step) => step.uses === 'actions/cache/save@v5')
+ expect(verify.if).toBe("steps.cache.outputs.cache-hit != 'true'")
+ expect(save.if).toBe(verify.if)
+ expect(save.with.path).toBe(restore.with.path)
+ expect(save.with.key).toBe('${{ steps.cache.outputs.cache-key }}')
+ expect(steps.indexOf(save)).toBeGreaterThan(steps.indexOf(verify))
+ expect(verify.run).toContain('regenerate-xterm-patches.mjs --check')
+ const pr = readYaml('../../.github/workflows/pr.yml').jobs.xterm_patch_sync.steps
+ expect(workflow.jobs.seed['runs-on']).toBe(
+ readYaml('../../.github/workflows/pr.yml').jobs.xterm_patch_sync['runs-on']
+ )
+ expect(pr.some((step) => step.uses === './.github/actions/prepare-xterm-dependencies')).toBe(true)
+ expect(pr.some((step) => /cache(?:\/save)?@/.test(step.uses ?? ''))).toBe(false)
+ expect(pr.at(-1).run).toContain('regenerate-xterm-patches.mjs --check')
+})
+
+it('restores download fallback only on a miss and preserves its established key and paths', () => {
+ const fallback = action.runs.steps.at(-1)
+ const save = workflow.jobs.seed.steps.at(-1)
+ expect(fallback.if).toBe("steps.restore.outputs.cache-hit != 'true'")
+ expect(fallback.uses).toBe('actions/cache/restore@v5')
+ expect(fallback.with).toEqual(save.with)
+ expect(save.if).toBe("steps.cache.outputs.cache-hit != 'true'")
+})
+
+it('runs the standalone generator without installing unrelated Orca dependencies', () => {
+ const steps = readYaml('../../.github/workflows/pr.yml').jobs.xterm_patch_sync.steps
+ expect(steps.some((step) => step.uses === './.github/actions/install-node-dependencies')).toBe(
+ false
+ )
+ expect(steps.find((step) => step.uses === 'actions/setup-node@v6').with).toEqual({
+ 'node-version-file': 'package.json',
+ 'package-manager-cache': false
+ })
+})
diff --git a/config/tsconfig.cli.json b/config/tsconfig.cli.json
index fe892b20734..030a90632b0 100644
--- a/config/tsconfig.cli.json
+++ b/config/tsconfig.cli.json
@@ -6,7 +6,9 @@
"../src/main/agent-state-file-reader.ts",
"../src/main/agent-hooks/grok-replay-guard.ts",
"../src/main/claude/hook-script.ts",
- "../src/main/claude/claude-session-end-hook-capability.ts",
+ "../src/main/claude/claude-hook-event-versions.ts",
+ "../src/main/claude/claude-managed-hook-events.ts",
+ "../src/main/qoder/hook-service.ts",
"../src/main/agent-hooks/hook-stdin-contract.ts",
"../src/main/agent-hooks/hook-post-command.ts",
"../src/main/agent-hooks/hook-config-write-path.ts",
@@ -18,6 +20,7 @@
"../src/main/agent-hooks/managed-agent-hook-controls.ts",
"../src/main/agent-hooks/managed-agent-hook-registry.ts",
"../src/main/agent-hooks/managed-hook-script-refresh.ts",
+ "../src/main/agent-hooks/managed-hooks-json-events.ts",
"../src/main/agent-hooks/posix-hook-command.ts",
"../src/main/agent-hooks/runtime-home-hook-command.ts",
"../src/main/orca-profiles/profile-storage-paths.ts",
@@ -207,6 +210,9 @@
"../src/main/in-flight-run-dedupe.ts",
"../src/main/kimi/hook-service.ts",
"../src/main/kimi/kimi-hook-config-toml.ts",
+ "../src/main/dsh/dsh-home-patch.ts",
+ "../src/main/dsh/hook-service.ts",
+ "../src/main/dsh/hook-settings.ts",
"../src/main/muse/hook-config-json.ts",
"../src/main/muse/hook-service.ts",
"../src/main/muse/hook-settings.ts",
diff --git a/config/tsconfig.node.json b/config/tsconfig.node.json
index c42b937a467..4f7cc41bcc1 100644
--- a/config/tsconfig.node.json
+++ b/config/tsconfig.node.json
@@ -6,6 +6,8 @@
"./scripts/vitest-host-ports-setup.ts",
"../src/main/**/*",
"../src/renderer/src/lib/skill-freshness-display-status.ts",
+ "../src/renderer/src/components/native-chat/native-chat-resolution-receipt.ts",
+ "../src/renderer/src/components/native-chat/structured-agent-question-projection.ts",
"../src/preload/**/*",
"../src/shared/**/*",
"../src/relay/**/*",
diff --git a/config/vitest.config.ts b/config/vitest.config.ts
index 5c85c3e6980..b81bbc2b0f3 100644
--- a/config/vitest.config.ts
+++ b/config/vitest.config.ts
@@ -1,5 +1,6 @@
import { resolve } from 'node:path'
import { defineConfig } from 'vitest/config'
+import { UNIT_INCLUDE, UNIT_EXCLUDE } from './scripts/ci-unit-files.mjs'
import TimingSequencer from './scripts/ci-unit-sequencer.mjs'
const windowsTestWorkerOptions = process.platform === 'win32' ? { maxWorkers: 4 } : {}
@@ -33,14 +34,8 @@ export default defineConfig({
resolve('config/scripts/happy-dom-mutation-observer-retention.ts'),
resolve('config/scripts/vitest-host-ports-setup.ts')
],
- include: [
- 'src/**/*.test.ts',
- 'src/**/*.test.tsx',
- 'config/scripts/**/*.test.ts',
- 'config/scripts/**/*.test.mjs',
- 'tests/tools/**/*.test.mjs',
- 'tests/e2e/**/*.unit.test.ts'
- ],
+ include: UNIT_INCLUDE,
+ ...(process.env.ORCA_BALANCE_UNIT_SHARDS === '1' ? { exclude: UNIT_EXCLUDE } : {}),
// Why: the full suite runs heavy TS transforms plus real git/http fixtures;
// the Vitest 5s defaults are too tight for the slowest integration cases.
hookTimeout: 60_000,
diff --git a/docs/assets/readme-downloads.svg b/docs/assets/readme-downloads.svg
index 9053f522c88..9fbda727d28 100644
--- a/docs/assets/readme-downloads.svg
+++ b/docs/assets/readme-downloads.svg
@@ -1,5 +1,5 @@
- |
@@ -183,6 +183,7 @@ Fonctionne avec **n'importe quel agent CLI** — s'il tourne dans un terminal, i
Cursor
GitHub Copilot
Muse
+ DeepSeek Harness
ZCode
OpenCode
MiMo Code
@@ -199,6 +200,7 @@ Fonctionne avec **n'importe quel agent CLI** — s'il tourne dans un terminal, i
Charm
Cline
Codebuff
+ Freebuff
Command Code
Continue
Droid
@@ -236,7 +238,7 @@ yay -S stably-orca-bin
Associez-la à l'app de bureau pour surveiller et piloter vos agents depuis votre téléphone.
-- **iOS :** [Télécharger sur l'App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) ou [rejoindre TestFlight](https://testflight.apple.com/join/YjeGMQBA)
+- **iOS :** [Télécharger sur l'App Store](https://apps.apple.com/us/app/orca-ide/id6766130217)
- **Android :** [Télécharger l'APK 0.0.50](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.50/app-release.apk)
---
diff --git a/docs/readme/README.ja.md b/docs/readme/README.ja.md
index e5eee5781b0..ed37efa595f 100644
--- a/docs/readme/README.ja.md
+++ b/docs/readme/README.ja.md
@@ -179,6 +179,7 @@ PR、Issue、プロジェクトボードをアプリ内で閲覧 — 任意の
Cursor
GitHub Copilot
Muse
+ DeepSeek Harness
ZCode
OpenCode
Amp
@@ -193,6 +194,7 @@ PR、Issue、プロジェクトボードをアプリ内で閲覧 — 任意の
Charm
Cline
Codebuff
+ Freebuff
Command Code
Continue
Droid
diff --git a/docs/readme/README.ko.md b/docs/readme/README.ko.md
index 17528c25ee0..25e20764c37 100644
--- a/docs/readme/README.ko.md
+++ b/docs/readme/README.ko.md
@@ -36,7 +36,7 @@
휴대폰에서 에이전트를 모니터링하고 조종하세요 — 에이전트가 완료되면 알림을 받고 어디서든 후속 지시를 보낼 수 있습니다.
-[iOS App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) · [TestFlight](https://testflight.apple.com/join/YjeGMQBA) · [Android APK 0.0.50](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.50/app-release.apk) · [문서 →](https://www.onorca.dev/docs/mobile)
+[iOS App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) · [Android APK 0.0.50](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.50/app-release.apk) · [문서 →](https://www.onorca.dev/docs/mobile)
|
@@ -179,6 +179,7 @@ diff의 어느 줄에든 코멘트를 남기고 에이전트에게 바로 보내
Cursor
GitHub Copilot
Muse
+ DeepSeek Harness
ZCode
OpenCode
MiMo Code
@@ -195,6 +196,7 @@ diff의 어느 줄에든 코멘트를 남기고 에이전트에게 바로 보내
Charm
Cline
Codebuff
+ Freebuff
Command Code
Continue
Droid
@@ -231,7 +233,7 @@ yay -S stably-orca-bin
데스크톱 앱과 페어링해 휴대폰에서 에이전트를 모니터링하고 조종하세요.
-- **iOS:** [App Store에서 다운로드](https://apps.apple.com/us/app/orca-ide/id6766130217) 또는 [TestFlight 참여](https://testflight.apple.com/join/YjeGMQBA)
+- **iOS:** [App Store에서 다운로드](https://apps.apple.com/us/app/orca-ide/id6766130217)
- **Android:** [APK 0.0.50 다운로드](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.50/app-release.apk) · [설치 가이드](https://www.onorca.dev/docs/android-apk)
---
diff --git a/docs/readme/README.pt.md b/docs/readme/README.pt.md
index 568a6d0de0d..baa17f95955 100644
--- a/docs/readme/README.pt.md
+++ b/docs/readme/README.pt.md
@@ -36,7 +36,7 @@
Monitore e conduza seus agentes pelo celular — receba uma notificação quando um agente terminar e envie instruções de acompanhamento de qualquer lugar.
-[App Store para iOS](https://apps.apple.com/us/app/orca-ide/id6766130217) · [TestFlight](https://testflight.apple.com/join/YjeGMQBA) · [APK Android 0.0.50](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.50/app-release.apk) · [Docs →](https://www.onorca.dev/docs/mobile)
+[App Store para iOS](https://apps.apple.com/us/app/orca-ide/id6766130217) · [APK Android 0.0.50](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.50/app-release.apk) · [Docs →](https://www.onorca.dev/docs/mobile)
|
@@ -179,6 +179,7 @@ Funciona com **qualquer agente CLI** — se roda em um terminal, roda no Orca.
Cursor
GitHub Copilot
Muse
+ DeepSeek Harness
ZCode
OpenCode
MiMo Code
@@ -195,6 +196,7 @@ Funciona com **qualquer agente CLI** — se roda em um terminal, roda no Orca.
Charm
Cline
Codebuff
+ Freebuff
Command Code
Continue
Droid
@@ -231,7 +233,7 @@ yay -S stably-orca-bin
Conecte ao app desktop para monitorar e conduzir seus agentes pelo celular.
-- **iOS:** [Baixar na App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) ou [entrar no TestFlight](https://testflight.apple.com/join/YjeGMQBA)
+- **iOS:** [Baixar na App Store](https://apps.apple.com/us/app/orca-ide/id6766130217)
- **Android:** [Baixar APK 0.0.50](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.50/app-release.apk)
---
diff --git a/docs/readme/README.zh-CN.md b/docs/readme/README.zh-CN.md
index 7882935dfa4..54583f4777b 100644
--- a/docs/readme/README.zh-CN.md
+++ b/docs/readme/README.zh-CN.md
@@ -179,6 +179,7 @@ VS Code 的编辑器,处处自动保存 — 把文件或图片直接拖入智
Cursor
GitHub Copilot
Muse
+ DeepSeek Harness
ZCode
OpenCode
Amp
@@ -193,6 +194,7 @@ VS Code 的编辑器,处处自动保存 — 把文件或图片直接拖入智
Charm
Cline
Codebuff
+ Freebuff
Command Code
Continue
Droid
diff --git a/docs/reference/ci-demand-rollout.md b/docs/reference/ci-demand-rollout.md
new file mode 100644
index 00000000000..8219a3401cb
--- /dev/null
+++ b/docs/reference/ci-demand-rollout.md
@@ -0,0 +1,145 @@
+# CI demand rollout
+
+This implements the September 28 runner-demand analysis. The baseline inventory
+covered September 27 04:00–September 28 04:00 UTC: 4,028 workflow runs, with
+463 stratified job samples. Estimated occupancy was 1,081 runner-hours, dominated
+by PR unit shards (414 hours) and Bun qualification (262 hours). These are
+sampled sums of job durations across different runner pools, not billing totals
+or a guaranteed forecast of savings.
+
+## What runs now
+
+| Work | Ordinary draft update | Ready PR / final checks | Main reference |
+| ---------------------------- | ------------------------------------------------------------------------------ | --------------------------------------------- | --------------------------------------- |
+| Static analysis and types | Immediately | Immediately | Existing workflows |
+| Unit suite | Full, with shadow selection evidence | Full | Existing daily Node 24/26 x86 suite |
+| Packages | After successful static analysis and types | Same | Existing release workflows |
+| Bun persistence | Linux x64 for ordinary runtime changes; all six platforms for sensitive inputs | All six platforms when Bun inputs changed | Full nightly qualification at 11:30 UTC |
+| Bun glibc/musl qualification | Sensitive inputs only, after persistence succeeds | Both architectures after persistence succeeds | Both architectures |
+| E2E | Existing targeted routing | Existing targeted routing | One complete run at 17:00 UTC |
+
+Bun-sensitive inputs include root/toolchain files, configuration, native code,
+resources, platform-specific paths, persistence, SQLite, orcad, providers,
+daemon, SSH, relay, and child-process code. Dependency discovery failure, a
+missing event or an incomplete diff retains full qualification. An unrelated
+change still skips Bun through the existing dependency classifier. No native
+artifact is shared across platforms or ABIs. The routine draft reduction is an
+explicit coverage-placement change; it does not assert identical per-update
+coverage. Every non-draft synchronize event and the ready-for-review event
+restores full qualification.
+
+Expensive PR jobs wait for static/type success. This reduces fan-out for failed
+or rapidly superseded commits without sleeping on a runner. Successful isolated
+PRs pay the extra stage latency. Existing per-PR cancellation remains in place.
+Package assertions, native boundaries, SSH/folder coverage, cache warming and
+slow-test assertions are retained.
+
+## Unit selection rollout
+
+`ci-unit-plan.mjs` discovers the same include/exclude set as Vitest and follows
+static imports, re-exports, literal dynamic imports, CommonJS requires and the
+renderer aliases. Consumers of indirect filesystem/process inputs remain in the
+candidate set, as do script/tool tests. Global configuration changes, deletions,
+renames involving removed paths, unknown inputs and graph failures run the full
+suite. A shard verifies the plan's source SHA and complete discovery list before
+using it. Missing/stale artifacts fall back to full coverage, even if that means
+running the suite on fewer shards.
+
+The initial policy is **shadow**, with all eight shards retained. The first
+local inventory matched Vitest exactly (9,950 files at validation); representative
+source changes retained roughly 88% of files because of indirect input readers.
+That is evidence for conservative coverage, not evidence of the analysis's
+hypothetical 50% unit-work reduction. Improvements to indirect dependency
+modeling should be demonstrated against full results before expanding selection.
+
+Every shard uploads `unit-selection.json`, `unit-timings.json` (including module
+outcomes), and its assignment. The evidence job combines these into
+`unit-selection-review-attempt-N/selection-review.json`, reporting:
+
+- Whether every discovered file appeared once across a complete reference run.
+- Failures outside the candidate set, including failures in otherwise red runs.
+- Measured worker time that selection would omit; worker times overlap and are
+ not runner occupancy or a prediction of wall-clock savings.
+
+Missing/duplicate shards, stale plans, interrupted runs and unhandled errors do
+not count as complete references. Diagnostic upload/report failures do not make
+tests pass and do not independently fail successful tests.
+
+After representative complete shadow runs show no missed failures, set repository
+variable `ORCA_UNIT_SELECTION_MODE=selected` to enable selection **only for draft
+PRs**. Keep full ready-PR checks and the daily compatibility suite. Inspect at
+least a week's evidence across renderer, main, shared, SSH and fixture changes
+before promotion, including red runs rather than only successful examples.
+Unknown variable values retain shadow mode. Unset the variable or set it to
+`shadow` to roll back immediately. Selected runs use one to eight timing-balanced
+shards based on retained work.
+
+Ready-for-review result reuse includes `unit full` in its source/workflow
+identity. A green selected draft cannot satisfy the final full check, even if
+the repository variable changes between runs. An already successful _full_
+identical-source check can still be reused.
+
+To inspect downloaded shard artifacts locally:
+
+```sh
+node config/scripts/ci-unit-selection-review.mjs ARTIFACT_DIRECTORY
+```
+
+## Review automation
+
+Pullfrog recognizes the existing `Review #N [id]` and
+`Review new commits on #N [id]` dispatch names. Explicit dispatchers may provide
+`pull_request_number` and `head_sha`. Explicit PR identities share concurrency at the workflow boundary. Legacy review
+names use a bounded lookup of the latest 100 dispatches and cancel only lower
+run IDs for the same PR; a delayed older scope cannot cancel a newer review.
+Unrecognized tasks are never grouped. The scope job alone has Actions write
+permission for ordered cancellation. Closed PRs and explicitly stale heads
+are skipped. A second head check prevents starting an agent after its queued
+head has changed. Unrecognized agent tasks remain independent; lookup failures
+also retain an independent task rather than cancelling unrelated work.
+
+This does not introduce a fixed debounce interval or remove final reviews.
+Dispatchers should supply `head_sha` for reliable stale-at-dispatch detection;
+legacy names identify a PR but do not prove which head the prompt describes.
+
+## E2E signal
+
+The daily reference still executes all shards and keeps original verdicts. Each
+shard uploads Playwright JSON and publishes expected, skipped, unexpected, flaky
+and startup-error counts with the failing test names/messages. Targeted PR and
+manual coverage remain available. This change does not fix the historically
+red tests or pretend they pass.
+
+`config/e2e-failure-tracking.json` can separate an evidenced repeated failure
+from new failures in the summary. Each entry must have exact `file`, full
+`title`, `project`, a nonempty stable `message` substring, an `@owner`, a linked
+repository `issue`, and an ISO `expires` review date. Expired/malformed entries
+are ignored and reported; changed error signatures appear as untracked. Entries
+never skip a test or change its exit status. The initial list is empty because
+the analysis established red workflows but did not establish owners and
+reproductions for individual failures. Do not blanket-baseline an entire red run.
+
+## Capacity measurements and acceptance
+
+`CI runner demand` runs daily at 04:23 UTC and can be dispatched manually. It
+reads the previous 24 complete hours in hourly pages, samples up to six runs per
+workflow/outcome stratum, and fetches job pages with bounded concurrency. An
+hour exceeding the API's 1,000-result search cap fails visibly. The report and
+raw evidence are retained for 30 days. No extra runner pool is provisioned.
+
+The report measures the full job durations of runs **created** in the window,
+not occupancy clipped to the window: earlier runs that overlap it are excluded,
+and completed sampled jobs may finish after it. This matches the baseline
+cohort method. Workflow IDs keep ref-qualified paths in one sampling stratum.
+
+The report shows weighted runner-hours and cancelled-run hours per workflow,
+runner-minutes per completed PR _run_, and weighted queue/provisioning p95 per
+runner label. It counts latest attempts only, excludes incomplete jobs, and
+retains zero-job observations. It does not measure other repositories competing
+for organization capacity. Compare equivalent traffic windows, not raw totals
+alone. The collector needs only `contents: read` and `actions: read`.
+
+After a week, compare runner-minutes per PR run, cancellation occupancy and
+queue p95 in each affected pool. Count newly added planning/reference overhead.
+A 25–35% overall reduction remains an experiment target, not an achieved result;
+selection, coalescing and matrix reductions overlap and cannot simply be added.
diff --git a/docs/reference/ci-runner-efficiency.md b/docs/reference/ci-runner-efficiency.md
index 3718a65e35e..5a59c75db5e 100644
--- a/docs/reference/ci-runner-efficiency.md
+++ b/docs/reference/ci-runner-efficiency.md
@@ -1,5 +1,8 @@
# CI efficiency and runner capacity
+The [September 28 demand rollout](ci-demand-rollout.md) documents staged checks,
+unit-selection evidence, Bun qualification, review cancellation and daily occupancy reports.
+
## September 27 follow-up
### Shared E2E CLI output
diff --git a/docs/reference/qoder-integration.md b/docs/reference/qoder-integration.md
new file mode 100644
index 00000000000..3a3a90121cd
--- /dev/null
+++ b/docs/reference/qoder-integration.md
@@ -0,0 +1,89 @@
+# Qoder CLI integration
+
+Orca registers `qodercli` as `qoder`: detection, picker/settings, desktop and mobile
+identity, prompt launch, permission flags, managed hooks, workspace trust, and
+session resume use the existing TUI-agent and hook-status paths.
+
+## Verified contract
+
+Verified on macOS with Qoder CLI 1.1.64, including its versioned executable
+`qodercli-1.1.64`:
+
+- `--prompt-interactive` starts an interactive prompt; `--resume ` resumes a
+ session; `--dangerously-skip-permissions` is the permission bypass flag.
+- Hooks use the Claude-shaped nested configuration in `~/.qoder/settings.json`.
+ Orca registers its own `/hook/qoder` source and preserves user hooks.
+- Real SessionStart, UserPromptSubmit, Notification and SessionEnd events are
+ captured in `src/shared/__fixtures__/qoder-no-account-hooks.jsonl`, including
+ `source: resume` with the original session ID.
+- Trust is `permissions.trustDirectories` in that settings file, using the
+ canonical workspace path. A workspace `.trusted` marker did not bypass the
+ trust dialog in this version. Remote trust uses the execution host filesystem.
+- Qoder emits its `◇ … | Ready` title while the trust menu owns input. Readiness
+ therefore requires the live composer text, not merely this title or silence.
+ Raw PTY fixtures under `src/main/runtime/__fixtures__/qoder-*` cover trust,
+ unauthenticated prompt handling and the ready composer.
+- A hidden Orca dev instance launched Qoder from New Tab in a folder workspace.
+ Its icon, label, terminal rendering and failed-turn indicator were inspected.
+ A harmless prompt reached Qoder, which reported its credit usage limit; the
+ canonical hook store recorded Qoder identity, session metadata and failure.
+
+## Compatibility and limits
+
+Windows hooks explicitly select Qoder's documented PowerShell shell, avoiding
+an assumption that Qoder uses Git Bash just because it is installed. They reuse
+the existing managed `.cmd` payload without adding an encoded PowerShell hop.
+The configuration shape and preservation are tested; Windows, Linux and SSH
+execution have not been exercised live here.
+
+Resume requests to remote hosts require `agent-session.qoder-resume.v1`, so an
+older host is not sent an agent enum it cannot accept. Remote hook installation
+and trust preservation have automated coverage.
+
+Successful model output, tool execution and live permission dialogs remain
+unverified because the available account has exhausted its credits. Hook event
+mapping for these paths follows the official documentation. The China executable
+`qoderclicn` is not registered; it was not available for verification.
+
+New Tab follows the existing manual-launch trust behavior: an untrusted folder
+can show Qoder's trust dialog. Automated workspace/draft launch paths run the
+trust preflight before prompt delivery.
+
+## Sources
+
+- [Official hooks documentation](https://docs.qoder.com/cli/hooks)
+- [#15291](https://github.com/stablyai/orca/pull/15291): registration and hook proposal
+- [#13311](https://github.com/stablyai/orca/pull/13311): icon asset (commit
+ `b56197025530adb1b82d97a364a8c3d4a02c0d42`) and agent integration
+- [#8611](https://github.com/stablyai/orca/pull/8611) and
+ [#12910](https://github.com/stablyai/orca/pull/12910): contributor implementations
+- [#16540](https://github.com/stablyai/orca/issues/16540): Qoder misidentified as Gemini
+
+Contributor patches informed the integration; they were not applied wholesale.
+In particular, the trust marker proposal was replaced using the installed CLI's
+observed settings write, and no renderer workaround was added because the live
+WebGL terminal rendered correctly.
+
+## Cross-review of open proposals
+
+Reviewed the current patches for all six open Qoder PRs on 2026-09-28:
+
+| PR | Incorporated or confirmed | Deliberate differences |
+| --- | --- | --- |
+| #7502 (vincent-lxc) | Agent registration, mobile parity, identity before Gemini | Use structural titles and the current public permission flag. |
+| #8611 (Eridanus117, building on #7502) | Qoder hook source, notification/permission mapping, session resume | 1.1.64 supports `--prompt-interactive`; preserve startup session identity and ignore compact restarts. |
+| #9655 (xingqingzzp-gif) | Cross-checked minimum registration coverage | Placeholder icon and detection-only scope are superseded by the fuller integration; no code copied. |
+| #12910 (jyang2004) | Reuse the Claude-compatible installer with an event subset, plus remote installation | Use observed `.qoder` path and `/hook/qoder`; Qwen and the China build remain separate work. |
+| #13311 (sorrycc) | Icon, structural title disambiguation, headless detection, display glyph cleanup | No DOM renderer override: 1.1.64 renders correctly in the live WebGL terminal. No unverified executable alias. |
+| #15291 (adlternative) | Versioned binary recognition, trust preflight wiring, skills mapping and resume | Trust comes from settings, not `.trusted`; include notifications, permission and failure events with Qoder-specific normalization. |
+
+The rendered left sidebar was checked in the hidden Electron app using a temporary
+folder workspace and real Qoder hooks. The workspace fixture needed a parent path
+on its project group to appear in the sidebar. No agent status was injected into
+the renderer. A real prompt updated the row text and returned a credit-limit error;
+the row and workspace card showed failure with the Qoder icon. A DOM observer
+recorded the prompt-row transition before failure. Permission/waiting and successful
+completion remain automated event-mapping tests, not live model/tool verification.
+
+Commit co-authors credit all six proposal authors for the implementation and
+registration groundwork, including xingqingzzp-gif’s minimal registration proposal.
diff --git a/docs/site/content/docs/agents/supported.mdx b/docs/site/content/docs/agents/supported.mdx
index 6532e04fb58..0658ce6fd8c 100644
--- a/docs/site/content/docs/agents/supported.mdx
+++ b/docs/site/content/docs/agents/supported.mdx
@@ -46,8 +46,10 @@ To restore prompts for one agent only, edit that agent's default arguments or en
| Autohand | Auto-setup | [Autohand](https://github.com/autohandai/code-cli) |
| Cline | Auto-setup | [Cline](https://docs.cline.bot/cline-cli/overview) |
| Codebuff | Auto-setup | [Codebuff](https://www.codebuff.com/docs/help/quick-start) |
+| Freebuff | Auto-setup | [Freebuff](https://freebuff.com/cli) |
| Command Code | Auto-setup, status | [Command Code](https://commandcode.ai/docs/quickstart) |
| Muse | macOS/Linux; trusts the workspace at launch | [Meta](https://dev.meta.ai/docs/muse-code) |
+| DeepSeek Harness | Launched through its `dsh-tui` profile; hooks, status, questions, resume | [DeepSeek](https://deepseek-harness.github.io/deepseek-harness/) |
| ZCode | Deep integration; needs a `zcode` CLI that ships the TUI (see note below) | [Z.ai](https://zcode.z.ai/en/docs) |
| Continue | Auto-setup | [Continue](https://docs.continue.dev/guides/cli) |
| Cursor CLI | Deep integration | [Cursor](https://cursor.com/cli) |
diff --git a/mobile/app/h/[hostId]/edit.tsx b/mobile/app/h/[hostId]/edit.tsx
index b27faaf9520..90e9bc6c167 100644
--- a/mobile/app/h/[hostId]/edit.tsx
+++ b/mobile/app/h/[hostId]/edit.tsx
@@ -19,6 +19,7 @@ import { displayHostEndpoint } from '../../../src/transport/host-endpoint'
import { resolveHostEndpointEdit } from '../../../src/transport/host-endpoint-edit'
import { usePrimeHosts, useRefreshHostClient } from '../../../src/transport/client-context'
import type { HostProfile } from '../../../src/transport/types'
+import { hostOs } from '../../../src/platform/host-os'
export default function EditHostScreen() {
const router = useRouter()
@@ -179,7 +180,7 @@ export default function EditHostScreen() {
) : (
UIView? = { _ in nil }
+ let selector = #selector(getter: UIResponder.inputAccessoryView)
+ let typeEncoding = method_getTypeEncoding(class_getInstanceMethod(UIResponder.self, selector)!)
+ class_addMethod(created, selector, imp_implementationWithBlock(noAccessory), typeEncoding)
+ objc_registerClassPair(created)
+ subclass = created
+ }
+ object_setClass(content, subclass)
+}
+
+/// Stops WKWebView reacting to the keyboard itself. It listens for the keyboard's frame and scrolls
+/// the document to reveal the focused field, on top of the lift the page already applies from the
+/// height the shell sends, so the page moved twice. The shell's own listeners are unaffected.
+func ignoreKeyboardNotifications(in webView: WKWebView) {
+ for name in [
+ UIResponder.keyboardWillShowNotification,
+ UIResponder.keyboardDidShowNotification,
+ UIResponder.keyboardWillHideNotification,
+ UIResponder.keyboardDidHideNotification,
+ UIResponder.keyboardWillChangeFrameNotification,
+ UIResponder.keyboardDidChangeFrameNotification
+ ] {
+ NotificationCenter.default.removeObserver(webView, name: name, object: nil)
+ }
+}
diff --git a/mobile/modules/orca-mobile-web-shell/ios/MobileWebShellView.swift b/mobile/modules/orca-mobile-web-shell/ios/MobileWebShellView.swift
index 0a2122f8183..abf9e7a70ed 100644
--- a/mobile/modules/orca-mobile-web-shell/ios/MobileWebShellView.swift
+++ b/mobile/modules/orca-mobile-web-shell/ios/MobileWebShellView.swift
@@ -221,6 +221,8 @@ final class OrcaMobileWebShellView: ExpoView, WKNavigationDelegate, WKUIDelegate
webView.backgroundColor = .clear
webView.scrollView.backgroundColor = .clear
webView.scrollView.contentInsetAdjustmentBehavior = .never
+ hideKeyboardAccessoryBar(of: webView)
+ ignoreKeyboardNotifications(in: webView)
webView.translatesAutoresizingMaskIntoConstraints = false
addSubview(webView)
NSLayoutConstraint.activate([
diff --git a/mobile/rpc-foundation/goldens/aivault-history-scan-fulfilled.json b/mobile/rpc-foundation/goldens/aivault-history-scan-fulfilled.json
index 9c5b44c43fe..14863eb6ed5 100644
--- a/mobile/rpc-foundation/goldens/aivault-history-scan-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/aivault-history-scan-fulfilled.json
@@ -3,7 +3,7 @@
"family": "aiVault.history",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "ec16931c5431d3dbb05729d4670c381a434bff71648d334b7b5224db188fdccb",
diff --git a/mobile/rpc-foundation/goldens/aivault-history-scan-unsupported.json b/mobile/rpc-foundation/goldens/aivault-history-scan-unsupported.json
index e95aadfb93f..0fcee77ec0f 100644
--- a/mobile/rpc-foundation/goldens/aivault-history-scan-unsupported.json
+++ b/mobile/rpc-foundation/goldens/aivault-history-scan-unsupported.json
@@ -3,7 +3,7 @@
"family": "aiVault.history",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "ec16931c5431d3dbb05729d4670c381a434bff71648d334b7b5224db188fdccb",
diff --git a/mobile/rpc-foundation/goldens/aivault-history-scan-worktrees-late.json b/mobile/rpc-foundation/goldens/aivault-history-scan-worktrees-late.json
index 7aa15d8bfd8..1db6d75eb73 100644
--- a/mobile/rpc-foundation/goldens/aivault-history-scan-worktrees-late.json
+++ b/mobile/rpc-foundation/goldens/aivault-history-scan-worktrees-late.json
@@ -3,7 +3,7 @@
"family": "aiVault.history",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "ec16931c5431d3dbb05729d4670c381a434bff71648d334b7b5224db188fdccb",
diff --git a/mobile/rpc-foundation/goldens/aivault-history-screen-listed.json b/mobile/rpc-foundation/goldens/aivault-history-screen-listed.json
index c267a0923df..5ffaa3c502a 100644
--- a/mobile/rpc-foundation/goldens/aivault-history-screen-listed.json
+++ b/mobile/rpc-foundation/goldens/aivault-history-screen-listed.json
@@ -3,7 +3,7 @@
"family": "aiVault.history-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c78ab47eea594b7e1988403321ff9ba135ca60c513bb9d5848bdde26c0ffe3c3",
diff --git a/mobile/rpc-foundation/goldens/aivault-history-screen-worktrees.json b/mobile/rpc-foundation/goldens/aivault-history-screen-worktrees.json
index 8762f7f0646..82e38d52e86 100644
--- a/mobile/rpc-foundation/goldens/aivault-history-screen-worktrees.json
+++ b/mobile/rpc-foundation/goldens/aivault-history-screen-worktrees.json
@@ -3,7 +3,7 @@
"family": "aiVault.history-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c78ab47eea594b7e1988403321ff9ba135ca60c513bb9d5848bdde26c0ffe3c3",
diff --git a/mobile/rpc-foundation/goldens/aivault-resume-launch-create-refused.json b/mobile/rpc-foundation/goldens/aivault-resume-launch-create-refused.json
index b2151e4eaca..d5c046956b7 100644
--- a/mobile/rpc-foundation/goldens/aivault-resume-launch-create-refused.json
+++ b/mobile/rpc-foundation/goldens/aivault-resume-launch-create-refused.json
@@ -3,7 +3,7 @@
"family": "aiVault.resume-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2f43211e4084c0493bd02ec98868acf53a4c748f89a70cd9657c9c3ee87b12fb",
diff --git a/mobile/rpc-foundation/goldens/aivault-resume-launch-invalid-tab.json b/mobile/rpc-foundation/goldens/aivault-resume-launch-invalid-tab.json
index 04a34434ff9..a77c715a27b 100644
--- a/mobile/rpc-foundation/goldens/aivault-resume-launch-invalid-tab.json
+++ b/mobile/rpc-foundation/goldens/aivault-resume-launch-invalid-tab.json
@@ -3,7 +3,7 @@
"family": "aiVault.resume-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2f43211e4084c0493bd02ec98868acf53a4c748f89a70cd9657c9c3ee87b12fb",
diff --git a/mobile/rpc-foundation/goldens/aivault-resume-launch-locked.json b/mobile/rpc-foundation/goldens/aivault-resume-launch-locked.json
index 5515b3f9dae..8a9790b721a 100644
--- a/mobile/rpc-foundation/goldens/aivault-resume-launch-locked.json
+++ b/mobile/rpc-foundation/goldens/aivault-resume-launch-locked.json
@@ -3,7 +3,7 @@
"family": "aiVault.resume-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2f43211e4084c0493bd02ec98868acf53a4c748f89a70cd9657c9c3ee87b12fb",
diff --git a/mobile/rpc-foundation/goldens/aivault-resume-launch-sent.json b/mobile/rpc-foundation/goldens/aivault-resume-launch-sent.json
index 014968614bb..a892d7739a2 100644
--- a/mobile/rpc-foundation/goldens/aivault-resume-launch-sent.json
+++ b/mobile/rpc-foundation/goldens/aivault-resume-launch-sent.json
@@ -3,7 +3,7 @@
"family": "aiVault.resume-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2f43211e4084c0493bd02ec98868acf53a4c748f89a70cd9657c9c3ee87b12fb",
diff --git a/mobile/rpc-foundation/goldens/aivault-resume-prepare-refused.json b/mobile/rpc-foundation/goldens/aivault-resume-prepare-refused.json
index be5b1907f6f..f696b86ddea 100644
--- a/mobile/rpc-foundation/goldens/aivault-resume-prepare-refused.json
+++ b/mobile/rpc-foundation/goldens/aivault-resume-prepare-refused.json
@@ -3,7 +3,7 @@
"family": "aiVault.resume-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2f43211e4084c0493bd02ec98868acf53a4c748f89a70cd9657c9c3ee87b12fb",
diff --git a/mobile/rpc-foundation/goldens/aivault-resume-prepare-repin.json b/mobile/rpc-foundation/goldens/aivault-resume-prepare-repin.json
index 0ffbd11b622..c121e0d54c7 100644
--- a/mobile/rpc-foundation/goldens/aivault-resume-prepare-repin.json
+++ b/mobile/rpc-foundation/goldens/aivault-resume-prepare-repin.json
@@ -3,7 +3,7 @@
"family": "aiVault.resume-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2f43211e4084c0493bd02ec98868acf53a4c748f89a70cd9657c9c3ee87b12fb",
diff --git a/mobile/rpc-foundation/goldens/aivault-resume-prepare-skipped.json b/mobile/rpc-foundation/goldens/aivault-resume-prepare-skipped.json
index 7829e14e6ee..2bc7cdb16d7 100644
--- a/mobile/rpc-foundation/goldens/aivault-resume-prepare-skipped.json
+++ b/mobile/rpc-foundation/goldens/aivault-resume-prepare-skipped.json
@@ -3,7 +3,7 @@
"family": "aiVault.resume-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2f43211e4084c0493bd02ec98868acf53a4c748f89a70cd9657c9c3ee87b12fb",
diff --git a/mobile/rpc-foundation/goldens/aivault-resume-prepare-unavailable.json b/mobile/rpc-foundation/goldens/aivault-resume-prepare-unavailable.json
index f67523fa7d3..4262ba6f21e 100644
--- a/mobile/rpc-foundation/goldens/aivault-resume-prepare-unavailable.json
+++ b/mobile/rpc-foundation/goldens/aivault-resume-prepare-unavailable.json
@@ -3,7 +3,7 @@
"family": "aiVault.resume-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2f43211e4084c0493bd02ec98868acf53a4c748f89a70cd9657c9c3ee87b12fb",
diff --git a/mobile/rpc-foundation/goldens/b1.json b/mobile/rpc-foundation/goldens/b1.json
index a9f19ee0947..c980aacea10 100644
--- a/mobile/rpc-foundation/goldens/b1.json
+++ b/mobile/rpc-foundation/goldens/b1.json
@@ -3,7 +3,7 @@
"family": "legacy-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "262eaad263a45aa13ec5b27c12b59946b12c202474229fff7a5727dba6d702ca",
diff --git a/mobile/rpc-foundation/goldens/b2.json b/mobile/rpc-foundation/goldens/b2.json
index 24ab5fa888e..a8f0cbfbe91 100644
--- a/mobile/rpc-foundation/goldens/b2.json
+++ b/mobile/rpc-foundation/goldens/b2.json
@@ -3,7 +3,7 @@
"family": "project-explicit-false",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d3b7f33d810e1fa420ac41a628cde9fe4a9e65fd57f89fbca0a40fc7d74951ab",
diff --git a/mobile/rpc-foundation/goldens/b3.json b/mobile/rpc-foundation/goldens/b3.json
index 774cdd61758..9fe5cc5de1a 100644
--- a/mobile/rpc-foundation/goldens/b3.json
+++ b/mobile/rpc-foundation/goldens/b3.json
@@ -3,7 +3,7 @@
"family": "linear-detail-barrier",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d3b7f33d810e1fa420ac41a628cde9fe4a9e65fd57f89fbca0a40fc7d74951ab",
diff --git a/mobile/rpc-foundation/goldens/browser-dialog-accepted.json b/mobile/rpc-foundation/goldens/browser-dialog-accepted.json
index f5120cf9e81..532bde414af 100644
--- a/mobile/rpc-foundation/goldens/browser-dialog-accepted.json
+++ b/mobile/rpc-foundation/goldens/browser-dialog-accepted.json
@@ -3,7 +3,7 @@
"family": "browser.dialog",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/browser-dialog-dismissed.json b/mobile/rpc-foundation/goldens/browser-dialog-dismissed.json
index e238c5efd8b..1080195516c 100644
--- a/mobile/rpc-foundation/goldens/browser-dialog-dismissed.json
+++ b/mobile/rpc-foundation/goldens/browser-dialog-dismissed.json
@@ -3,7 +3,7 @@
"family": "browser.dialog",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/browser-keyboard-input.json b/mobile/rpc-foundation/goldens/browser-keyboard-input.json
index e26cc94b688..8a1f2b657bc 100644
--- a/mobile/rpc-foundation/goldens/browser-keyboard-input.json
+++ b/mobile/rpc-foundation/goldens/browser-keyboard-input.json
@@ -3,7 +3,7 @@
"family": "browser.keyboard",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/browser-pointer-click-accepted.json b/mobile/rpc-foundation/goldens/browser-pointer-click-accepted.json
index f651ff3af02..d82a129a2e6 100644
--- a/mobile/rpc-foundation/goldens/browser-pointer-click-accepted.json
+++ b/mobile/rpc-foundation/goldens/browser-pointer-click-accepted.json
@@ -3,7 +3,7 @@
"family": "browser.pointer-click",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/browser-pointer-click-fallback.json b/mobile/rpc-foundation/goldens/browser-pointer-click-fallback.json
index 8eea8a7133a..c8b892ddb3c 100644
--- a/mobile/rpc-foundation/goldens/browser-pointer-click-fallback.json
+++ b/mobile/rpc-foundation/goldens/browser-pointer-click-fallback.json
@@ -3,7 +3,7 @@
"family": "browser.pointer-click",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/browser-wheel-scrolled.json b/mobile/rpc-foundation/goldens/browser-wheel-scrolled.json
index f202b4eba09..1e647f8c0eb 100644
--- a/mobile/rpc-foundation/goldens/browser-wheel-scrolled.json
+++ b/mobile/rpc-foundation/goldens/browser-wheel-scrolled.json
@@ -3,7 +3,7 @@
"family": "browser.wheel",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/clipboard-image-attachment-anonymous.json b/mobile/rpc-foundation/goldens/clipboard-image-attachment-anonymous.json
index bc7dc14eb29..5bb1fc8916b 100644
--- a/mobile/rpc-foundation/goldens/clipboard-image-attachment-anonymous.json
+++ b/mobile/rpc-foundation/goldens/clipboard-image-attachment-anonymous.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-attachment",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/clipboard-image-attachment-blocked-before-send.json b/mobile/rpc-foundation/goldens/clipboard-image-attachment-blocked-before-send.json
index 36649c46d1a..1a8293a8c11 100644
--- a/mobile/rpc-foundation/goldens/clipboard-image-attachment-blocked-before-send.json
+++ b/mobile/rpc-foundation/goldens/clipboard-image-attachment-blocked-before-send.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-attachment",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/clipboard-image-attachment-cancelled.json b/mobile/rpc-foundation/goldens/clipboard-image-attachment-cancelled.json
index 630ef230201..1a055189ffc 100644
--- a/mobile/rpc-foundation/goldens/clipboard-image-attachment-cancelled.json
+++ b/mobile/rpc-foundation/goldens/clipboard-image-attachment-cancelled.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-attachment",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/clipboard-image-attachment-pasted.json b/mobile/rpc-foundation/goldens/clipboard-image-attachment-pasted.json
index b0527824919..1e5eb179479 100644
--- a/mobile/rpc-foundation/goldens/clipboard-image-attachment-pasted.json
+++ b/mobile/rpc-foundation/goldens/clipboard-image-attachment-pasted.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-attachment",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/clipboard-image-attachment-upload-refused.json b/mobile/rpc-foundation/goldens/clipboard-image-attachment-upload-refused.json
index 982de088e0a..73634ccd614 100644
--- a/mobile/rpc-foundation/goldens/clipboard-image-attachment-upload-refused.json
+++ b/mobile/rpc-foundation/goldens/clipboard-image-attachment-upload-refused.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-attachment",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/clipboard-image-upload-aborts-on-chunk-failure.json b/mobile/rpc-foundation/goldens/clipboard-image-upload-aborts-on-chunk-failure.json
index ac38c0adcb1..9d309faa74b 100644
--- a/mobile/rpc-foundation/goldens/clipboard-image-upload-aborts-on-chunk-failure.json
+++ b/mobile/rpc-foundation/goldens/clipboard-image-upload-aborts-on-chunk-failure.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/clipboard-image-upload-chunked.json b/mobile/rpc-foundation/goldens/clipboard-image-upload-chunked.json
index 7e6a9d65a79..a6138359ec4 100644
--- a/mobile/rpc-foundation/goldens/clipboard-image-upload-chunked.json
+++ b/mobile/rpc-foundation/goldens/clipboard-image-upload-chunked.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/clipboard-image-upload-single-frame-fallback.json b/mobile/rpc-foundation/goldens/clipboard-image-upload-single-frame-fallback.json
index c82bcfeaade..cedf2b33b69 100644
--- a/mobile/rpc-foundation/goldens/clipboard-image-upload-single-frame-fallback.json
+++ b/mobile/rpc-foundation/goldens/clipboard-image-upload-single-frame-fallback.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/clipboard-image-upload-start-refused.json b/mobile/rpc-foundation/goldens/clipboard-image-upload-start-refused.json
index 3500963c05c..abc62c495fe 100644
--- a/mobile/rpc-foundation/goldens/clipboard-image-upload-start-refused.json
+++ b/mobile/rpc-foundation/goldens/clipboard-image-upload-start-refused.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/codex-reset-credit-consumed.json b/mobile/rpc-foundation/goldens/codex-reset-credit-consumed.json
index fb7a85c5704..ccea03279bc 100644
--- a/mobile/rpc-foundation/goldens/codex-reset-credit-consumed.json
+++ b/mobile/rpc-foundation/goldens/codex-reset-credit-consumed.json
@@ -3,7 +3,7 @@
"family": "components.codex-reset-credit",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "76b53dea504a688493843e23e8e7d052fc196f559bb1e2579d0fd38bf3156d0e",
diff --git a/mobile/rpc-foundation/goldens/codex-reset-credit-resumed.json b/mobile/rpc-foundation/goldens/codex-reset-credit-resumed.json
index bed81dae101..7379c82d88b 100644
--- a/mobile/rpc-foundation/goldens/codex-reset-credit-resumed.json
+++ b/mobile/rpc-foundation/goldens/codex-reset-credit-resumed.json
@@ -3,7 +3,7 @@
"family": "components.codex-reset-credit",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "76b53dea504a688493843e23e8e7d052fc196f559bb1e2579d0fd38bf3156d0e",
diff --git a/mobile/rpc-foundation/goldens/components-codex-capability.json b/mobile/rpc-foundation/goldens/components-codex-capability.json
index 7c32f429afa..ead4dfee3d1 100644
--- a/mobile/rpc-foundation/goldens/components-codex-capability.json
+++ b/mobile/rpc-foundation/goldens/components-codex-capability.json
@@ -3,7 +3,7 @@
"family": "components.codex-reset-capability",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5cfbce3c7d97d908fbd447646d611e41a8aa1f61f684b9b710c4b67d6ff023a7",
diff --git a/mobile/rpc-foundation/goldens/components-setup-ask.json b/mobile/rpc-foundation/goldens/components-setup-ask.json
index dcc93aeaf74..f2afa228f1c 100644
--- a/mobile/rpc-foundation/goldens/components-setup-ask.json
+++ b/mobile/rpc-foundation/goldens/components-setup-ask.json
@@ -3,7 +3,7 @@
"family": "components.setup-script",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5cfbce3c7d97d908fbd447646d611e41a8aa1f61f684b9b710c4b67d6ff023a7",
diff --git a/mobile/rpc-foundation/goldens/components-target-local.json b/mobile/rpc-foundation/goldens/components-target-local.json
index 1b773289364..da6c45d7494 100644
--- a/mobile/rpc-foundation/goldens/components-target-local.json
+++ b/mobile/rpc-foundation/goldens/components-target-local.json
@@ -3,7 +3,7 @@
"family": "components.execution-target-local",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5cfbce3c7d97d908fbd447646d611e41a8aa1f61f684b9b710c4b67d6ff023a7",
diff --git a/mobile/rpc-foundation/goldens/components-target-ssh.json b/mobile/rpc-foundation/goldens/components-target-ssh.json
index a512c6d2be8..041a0d4110a 100644
--- a/mobile/rpc-foundation/goldens/components-target-ssh.json
+++ b/mobile/rpc-foundation/goldens/components-target-ssh.json
@@ -3,7 +3,7 @@
"family": "components.execution-target",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5cfbce3c7d97d908fbd447646d611e41a8aa1f61f684b9b710c4b67d6ff023a7",
diff --git a/mobile/rpc-foundation/goldens/diff-review-branch-compare.json b/mobile/rpc-foundation/goldens/diff-review-branch-compare.json
index a079f8c8eef..4d04835ac8b 100644
--- a/mobile/rpc-foundation/goldens/diff-review-branch-compare.json
+++ b/mobile/rpc-foundation/goldens/diff-review-branch-compare.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/diff-review-branch-file-diff.json b/mobile/rpc-foundation/goldens/diff-review-branch-file-diff.json
index 9a53be2d919..67328b16986 100644
--- a/mobile/rpc-foundation/goldens/diff-review-branch-file-diff.json
+++ b/mobile/rpc-foundation/goldens/diff-review-branch-file-diff.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/diff-review-notes-refused-before-compare.json b/mobile/rpc-foundation/goldens/diff-review-notes-refused-before-compare.json
index be913d2d24f..cd0b56a0dc2 100644
--- a/mobile/rpc-foundation/goldens/diff-review-notes-refused-before-compare.json
+++ b/mobile/rpc-foundation/goldens/diff-review-notes-refused-before-compare.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/diff-review-refused-file-diff.json b/mobile/rpc-foundation/goldens/diff-review-refused-file-diff.json
index 127b020e925..4ac2f0398eb 100644
--- a/mobile/rpc-foundation/goldens/diff-review-refused-file-diff.json
+++ b/mobile/rpc-foundation/goldens/diff-review-refused-file-diff.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/diff-review-snapshot.json b/mobile/rpc-foundation/goldens/diff-review-snapshot.json
index 1700db71f59..bab97a02bdc 100644
--- a/mobile/rpc-foundation/goldens/diff-review-snapshot.json
+++ b/mobile/rpc-foundation/goldens/diff-review-snapshot.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/diff-review-status-unavailable.json b/mobile/rpc-foundation/goldens/diff-review-status-unavailable.json
index 88177a9f80e..f3630340c62 100644
--- a/mobile/rpc-foundation/goldens/diff-review-status-unavailable.json
+++ b/mobile/rpc-foundation/goldens/diff-review-status-unavailable.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/diff-review-worktree-file-diff.json b/mobile/rpc-foundation/goldens/diff-review-worktree-file-diff.json
index 1885bf1789a..16b90782cd8 100644
--- a/mobile/rpc-foundation/goldens/diff-review-worktree-file-diff.json
+++ b/mobile/rpc-foundation/goldens/diff-review-worktree-file-diff.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/file-tap-open-refused.json b/mobile/rpc-foundation/goldens/file-tap-open-refused.json
index 2eb28ae1923..2c53dc076b7 100644
--- a/mobile/rpc-foundation/goldens/file-tap-open-refused.json
+++ b/mobile/rpc-foundation/goldens/file-tap-open-refused.json
@@ -3,7 +3,7 @@
"family": "files.terminal-path-tap",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e20a76ecd5e820dc4797fb25307810af68b5ced996dba2b9599464a21b5cbe1b",
diff --git a/mobile/rpc-foundation/goldens/file-tap-opens-worktree-file.json b/mobile/rpc-foundation/goldens/file-tap-opens-worktree-file.json
index ec4e54ddefd..5fc43a8f830 100644
--- a/mobile/rpc-foundation/goldens/file-tap-opens-worktree-file.json
+++ b/mobile/rpc-foundation/goldens/file-tap-opens-worktree-file.json
@@ -3,7 +3,7 @@
"family": "files.terminal-path-tap",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e20a76ecd5e820dc4797fb25307810af68b5ced996dba2b9599464a21b5cbe1b",
diff --git a/mobile/rpc-foundation/goldens/file-tap-previews-absolute-artifact.json b/mobile/rpc-foundation/goldens/file-tap-previews-absolute-artifact.json
index 418a13757fb..53215f54c4c 100644
--- a/mobile/rpc-foundation/goldens/file-tap-previews-absolute-artifact.json
+++ b/mobile/rpc-foundation/goldens/file-tap-previews-absolute-artifact.json
@@ -3,7 +3,7 @@
"family": "files.terminal-path-tap",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e20a76ecd5e820dc4797fb25307810af68b5ced996dba2b9599464a21b5cbe1b",
diff --git a/mobile/rpc-foundation/goldens/file-tap-resolve-miss.json b/mobile/rpc-foundation/goldens/file-tap-resolve-miss.json
index bf106b5bd2e..8adb1d19d57 100644
--- a/mobile/rpc-foundation/goldens/file-tap-resolve-miss.json
+++ b/mobile/rpc-foundation/goldens/file-tap-resolve-miss.json
@@ -3,7 +3,7 @@
"family": "files.terminal-path-tap",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e20a76ecd5e820dc4797fb25307810af68b5ced996dba2b9599464a21b5cbe1b",
diff --git a/mobile/rpc-foundation/goldens/file-tap-resolve-refused.json b/mobile/rpc-foundation/goldens/file-tap-resolve-refused.json
index c643cc6dd2e..0b876017b9f 100644
--- a/mobile/rpc-foundation/goldens/file-tap-resolve-refused.json
+++ b/mobile/rpc-foundation/goldens/file-tap-resolve-refused.json
@@ -3,7 +3,7 @@
"family": "files.terminal-path-tap",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e20a76ecd5e820dc4797fb25307810af68b5ced996dba2b9599464a21b5cbe1b",
diff --git a/mobile/rpc-foundation/goldens/files-explorer-legacy-fallback.json b/mobile/rpc-foundation/goldens/files-explorer-legacy-fallback.json
index 93b9a163b48..8f9c1b500f2 100644
--- a/mobile/rpc-foundation/goldens/files-explorer-legacy-fallback.json
+++ b/mobile/rpc-foundation/goldens/files-explorer-legacy-fallback.json
@@ -3,7 +3,7 @@
"family": "files.explorer-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "7a42a348f4407b94cf75ac77a4b6b783b7d28103b1ae1d111d2708dab0dd4a0c",
diff --git a/mobile/rpc-foundation/goldens/files-explorer-readdir.json b/mobile/rpc-foundation/goldens/files-explorer-readdir.json
index d9bead25817..2510dcb8da5 100644
--- a/mobile/rpc-foundation/goldens/files-explorer-readdir.json
+++ b/mobile/rpc-foundation/goldens/files-explorer-readdir.json
@@ -3,7 +3,7 @@
"family": "files.explorer-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "7a42a348f4407b94cf75ac77a4b6b783b7d28103b1ae1d111d2708dab0dd4a0c",
diff --git a/mobile/rpc-foundation/goldens/files-ownership-local.json b/mobile/rpc-foundation/goldens/files-ownership-local.json
index 4ad0e75726c..3c8785507d4 100644
--- a/mobile/rpc-foundation/goldens/files-ownership-local.json
+++ b/mobile/rpc-foundation/goldens/files-ownership-local.json
@@ -3,7 +3,7 @@
"family": "files.mutation-ownership",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-ownership-ssh.json b/mobile/rpc-foundation/goldens/files-ownership-ssh.json
index 769d0015e16..869b69ea732 100644
--- a/mobile/rpc-foundation/goldens/files-ownership-ssh.json
+++ b/mobile/rpc-foundation/goldens/files-ownership-ssh.json
@@ -3,7 +3,7 @@
"family": "files.mutation-ownership",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-preview-artifact-direct.json b/mobile/rpc-foundation/goldens/files-preview-artifact-direct.json
index be80480f84c..f7ad51f0bf4 100644
--- a/mobile/rpc-foundation/goldens/files-preview-artifact-direct.json
+++ b/mobile/rpc-foundation/goldens/files-preview-artifact-direct.json
@@ -3,7 +3,7 @@
"family": "files.preview-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-preview-artifact-image-read.json b/mobile/rpc-foundation/goldens/files-preview-artifact-image-read.json
index c1d73a55193..2d6eeb2be0e 100644
--- a/mobile/rpc-foundation/goldens/files-preview-artifact-image-read.json
+++ b/mobile/rpc-foundation/goldens/files-preview-artifact-image-read.json
@@ -3,7 +3,7 @@
"family": "files.preview-artifact-image",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-preview-artifact-image.json b/mobile/rpc-foundation/goldens/files-preview-artifact-image.json
index 407fc00c698..dfdb817d937 100644
--- a/mobile/rpc-foundation/goldens/files-preview-artifact-image.json
+++ b/mobile/rpc-foundation/goldens/files-preview-artifact-image.json
@@ -3,7 +3,7 @@
"family": "files.preview-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-preview-grant-refresh.json b/mobile/rpc-foundation/goldens/files-preview-grant-refresh.json
index 5f921eb5d70..acedc84c06b 100644
--- a/mobile/rpc-foundation/goldens/files-preview-grant-refresh.json
+++ b/mobile/rpc-foundation/goldens/files-preview-grant-refresh.json
@@ -3,7 +3,7 @@
"family": "files.preview-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-preview-worktree-image-read.json b/mobile/rpc-foundation/goldens/files-preview-worktree-image-read.json
index ac5808b9ab3..639277d8b56 100644
--- a/mobile/rpc-foundation/goldens/files-preview-worktree-image-read.json
+++ b/mobile/rpc-foundation/goldens/files-preview-worktree-image-read.json
@@ -3,7 +3,7 @@
"family": "files.preview-worktree-image",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-preview-worktree-image.json b/mobile/rpc-foundation/goldens/files-preview-worktree-image.json
index 3e5ab9f6b91..da550e85887 100644
--- a/mobile/rpc-foundation/goldens/files-preview-worktree-image.json
+++ b/mobile/rpc-foundation/goldens/files-preview-worktree-image.json
@@ -3,7 +3,7 @@
"family": "files.preview-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-preview-worktree-text-read.json b/mobile/rpc-foundation/goldens/files-preview-worktree-text-read.json
index 82280c3db62..51a3d994d72 100644
--- a/mobile/rpc-foundation/goldens/files-preview-worktree-text-read.json
+++ b/mobile/rpc-foundation/goldens/files-preview-worktree-text-read.json
@@ -3,7 +3,7 @@
"family": "files.preview-worktree-text",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-preview-worktree.json b/mobile/rpc-foundation/goldens/files-preview-worktree.json
index f31799a7d5f..5589a7e33ca 100644
--- a/mobile/rpc-foundation/goldens/files-preview-worktree.json
+++ b/mobile/rpc-foundation/goldens/files-preview-worktree.json
@@ -3,7 +3,7 @@
"family": "files.preview-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-save-blind.json b/mobile/rpc-foundation/goldens/files-save-blind.json
index 02fbffa55d2..a4aada23016 100644
--- a/mobile/rpc-foundation/goldens/files-save-blind.json
+++ b/mobile/rpc-foundation/goldens/files-save-blind.json
@@ -3,7 +3,7 @@
"family": "files.preview-save",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-save-verified.json b/mobile/rpc-foundation/goldens/files-save-verified.json
index 44945dbac93..f457d594a06 100644
--- a/mobile/rpc-foundation/goldens/files-save-verified.json
+++ b/mobile/rpc-foundation/goldens/files-save-verified.json
@@ -3,7 +3,7 @@
"family": "files.preview-save",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/files-tab-doc-shapes.json b/mobile/rpc-foundation/goldens/files-tab-doc-shapes.json
index 13feb7dbb33..5e112a24495 100644
--- a/mobile/rpc-foundation/goldens/files-tab-doc-shapes.json
+++ b/mobile/rpc-foundation/goldens/files-tab-doc-shapes.json
@@ -3,7 +3,7 @@
"family": "files.tab-doc",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/home-host-accounts.json b/mobile/rpc-foundation/goldens/home-host-accounts.json
index aa1c57ec8bc..138ee27c578 100644
--- a/mobile/rpc-foundation/goldens/home-host-accounts.json
+++ b/mobile/rpc-foundation/goldens/home-host-accounts.json
@@ -3,7 +3,7 @@
"family": "home.host-accounts",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c632fdbc4b730777ecb09f08bec14cca0586042b01ed99d40d0228806c7def4a",
diff --git a/mobile/rpc-foundation/goldens/home-host-stats.json b/mobile/rpc-foundation/goldens/home-host-stats.json
index a962ed098bb..1a582a21884 100644
--- a/mobile/rpc-foundation/goldens/home-host-stats.json
+++ b/mobile/rpc-foundation/goldens/home-host-stats.json
@@ -3,7 +3,7 @@
"family": "home.host-stats",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a9e0780298a1443664e7ae02056168aa34d67556c9c056d51a82c7b4a73ad35b",
diff --git a/mobile/rpc-foundation/goldens/host-view-settings-sync.json b/mobile/rpc-foundation/goldens/host-view-settings-sync.json
index 688cdd30ec8..42c1e36b480 100644
--- a/mobile/rpc-foundation/goldens/host-view-settings-sync.json
+++ b/mobile/rpc-foundation/goldens/host-view-settings-sync.json
@@ -3,7 +3,7 @@
"family": "host.view-settings",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a9e0780298a1443664e7ae02056168aa34d67556c9c056d51a82c7b4a73ad35b",
diff --git a/mobile/rpc-foundation/goldens/host-worktree-actions-pin-open-delete.json b/mobile/rpc-foundation/goldens/host-worktree-actions-pin-open-delete.json
index 264599ad960..1783e6c491b 100644
--- a/mobile/rpc-foundation/goldens/host-worktree-actions-pin-open-delete.json
+++ b/mobile/rpc-foundation/goldens/host-worktree-actions-pin-open-delete.json
@@ -3,7 +3,7 @@
"family": "host.worktree-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "92c29bd78ca0c0d5917e9386fc447bb9a1698b1d1ffaba0db7546eaac60da639",
diff --git a/mobile/rpc-foundation/goldens/host-worktree-delete-refused.json b/mobile/rpc-foundation/goldens/host-worktree-delete-refused.json
index dbd01c957f6..7f7cad606f5 100644
--- a/mobile/rpc-foundation/goldens/host-worktree-delete-refused.json
+++ b/mobile/rpc-foundation/goldens/host-worktree-delete-refused.json
@@ -3,7 +3,7 @@
"family": "host.worktree-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "92c29bd78ca0c0d5917e9386fc447bb9a1698b1d1ffaba0db7546eaac60da639",
diff --git a/mobile/rpc-foundation/goldens/host-worktree-refresh-stream.json b/mobile/rpc-foundation/goldens/host-worktree-refresh-stream.json
index 512b0dcf8a6..e10f751b1f3 100644
--- a/mobile/rpc-foundation/goldens/host-worktree-refresh-stream.json
+++ b/mobile/rpc-foundation/goldens/host-worktree-refresh-stream.json
@@ -3,7 +3,7 @@
"family": "host-worktree-refresh",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json b/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json
index 1be50195f5a..a1e43b0e072 100644
--- a/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json
+++ b/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json
@@ -3,7 +3,7 @@
"family": "legacy-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "262eaad263a45aa13ec5b27c12b59946b12c202474229fff7a5727dba6d702ca",
diff --git a/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json
index 46cabf4fd2d..a80a49405f3 100644
--- a/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.bot-overrides",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/inventory-lifecycle.json b/mobile/rpc-foundation/goldens/inventory-lifecycle.json
index e5f335032ed..86cc5a797be 100644
--- a/mobile/rpc-foundation/goldens/inventory-lifecycle.json
+++ b/mobile/rpc-foundation/goldens/inventory-lifecycle.json
@@ -3,7 +3,7 @@
"family": "legacy-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "262eaad263a45aa13ec5b27c12b59946b12c202474229fff7a5727dba6d702ca",
diff --git a/mobile/rpc-foundation/goldens/inventory-repeat-query.json b/mobile/rpc-foundation/goldens/inventory-repeat-query.json
index ff4706aaa59..e13e271c53f 100644
--- a/mobile/rpc-foundation/goldens/inventory-repeat-query.json
+++ b/mobile/rpc-foundation/goldens/inventory-repeat-query.json
@@ -3,7 +3,7 @@
"family": "legacy-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "262eaad263a45aa13ec5b27c12b59946b12c202474229fff7a5727dba6d702ca",
diff --git a/mobile/rpc-foundation/goldens/lifecycle-b3.json b/mobile/rpc-foundation/goldens/lifecycle-b3.json
index f3dcf8667e7..70e4e2bbcba 100644
--- a/mobile/rpc-foundation/goldens/lifecycle-b3.json
+++ b/mobile/rpc-foundation/goldens/lifecycle-b3.json
@@ -3,7 +3,7 @@
"family": "linear-detail-barrier",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d3b7f33d810e1fa420ac41a628cde9fe4a9e65fd57f89fbca0a40fc7d74951ab",
diff --git a/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json b/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json
index 5543e333169..70618945c1c 100644
--- a/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json
+++ b/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json
@@ -3,7 +3,7 @@
"family": "legacy-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "262eaad263a45aa13ec5b27c12b59946b12c202474229fff7a5727dba6d702ca",
diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json
index 24b178755e8..1b5f354c5f1 100644
--- a/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.bot-overrides",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json
index 873bbd064cf..32b971e6c96 100644
--- a/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.task-hydration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json
index 9f2383fab07..bb177b8f14a 100644
--- a/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-context",
"namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/linear-select-workspace.json b/mobile/rpc-foundation/goldens/linear-select-workspace.json
index 013a1aba847..6d66f10d6e7 100644
--- a/mobile/rpc-foundation/goldens/linear-select-workspace.json
+++ b/mobile/rpc-foundation/goldens/linear-select-workspace.json
@@ -3,7 +3,7 @@
"family": "linear.select-workspace-picker",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b65996c152b632d553a31e07e31ea5c76f998eada42cf0966923d730da21908f",
diff --git a/mobile/rpc-foundation/goldens/live-worktree-name-stream.json b/mobile/rpc-foundation/goldens/live-worktree-name-stream.json
index b942e40cc77..0eb76ef03a3 100644
--- a/mobile/rpc-foundation/goldens/live-worktree-name-stream.json
+++ b/mobile/rpc-foundation/goldens/live-worktree-name-stream.json
@@ -3,7 +3,7 @@
"family": "live-worktree-name",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/matrix-agentsession.structured-create-agentsession.create-1.json b/mobile/rpc-foundation/goldens/matrix-agentsession.structured-create-agentsession.create-1.json
index aa1d4e0d703..0dd95e326d0 100644
--- a/mobile/rpc-foundation/goldens/matrix-agentsession.structured-create-agentsession.create-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-agentsession.structured-create-agentsession.create-1.json
@@ -3,7 +3,7 @@
"family": "agentSession.structured-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d340697a64a198066b1037a550afb9a0de7507246a545901d2fc0a23407f38d6",
diff --git a/mobile/rpc-foundation/goldens/matrix-agentsession.structured-create-agentsession.createsupport-1.json b/mobile/rpc-foundation/goldens/matrix-agentsession.structured-create-agentsession.createsupport-1.json
index 07a4399b62d..2aa03df5a0b 100644
--- a/mobile/rpc-foundation/goldens/matrix-agentsession.structured-create-agentsession.createsupport-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-agentsession.structured-create-agentsession.createsupport-1.json
@@ -3,7 +3,7 @@
"family": "agentSession.structured-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d340697a64a198066b1037a550afb9a0de7507246a545901d2fc0a23407f38d6",
diff --git a/mobile/rpc-foundation/goldens/matrix-agentsession.structured-launch-agentsession.createsupport-1.json b/mobile/rpc-foundation/goldens/matrix-agentsession.structured-launch-agentsession.createsupport-1.json
index 15e9c2f4453..ff9b9718573 100644
--- a/mobile/rpc-foundation/goldens/matrix-agentsession.structured-launch-agentsession.createsupport-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-agentsession.structured-launch-agentsession.createsupport-1.json
@@ -3,7 +3,7 @@
"family": "agentSession.structured-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d340697a64a198066b1037a550afb9a0de7507246a545901d2fc0a23407f38d6",
diff --git a/mobile/rpc-foundation/goldens/matrix-aivault.history-aivault.listsessions-1.json b/mobile/rpc-foundation/goldens/matrix-aivault.history-aivault.listsessions-1.json
index d0cf0618a2f..f1c1ee9933e 100644
--- a/mobile/rpc-foundation/goldens/matrix-aivault.history-aivault.listsessions-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-aivault.history-aivault.listsessions-1.json
@@ -3,7 +3,7 @@
"family": "aiVault.history",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "ec16931c5431d3dbb05729d4670c381a434bff71648d334b7b5224db188fdccb",
diff --git a/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-platform-status.json b/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-platform-status.json
index 8f2dacb5e51..9abbabeb545 100644
--- a/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-platform-status.json
+++ b/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-platform-status.json
@@ -3,7 +3,7 @@
"family": "aiVault.history-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c78ab47eea594b7e1988403321ff9ba135ca60c513bb9d5848bdde26c0ffe3c3",
diff --git a/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-status.get-2.json b/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-status.get-2.json
index 22b54335055..7c7e63ff8e6 100644
--- a/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-status.get-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-status.get-2.json
@@ -3,7 +3,7 @@
"family": "aiVault.history-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c78ab47eea594b7e1988403321ff9ba135ca60c513bb9d5848bdde26c0ffe3c3",
diff --git a/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-worktree.ps-1.json b/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-worktree.ps-1.json
index 78fe0babedc..25f821fee69 100644
--- a/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-worktree.ps-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-aivault.history-screen-worktree.ps-1.json
@@ -3,7 +3,7 @@
"family": "aiVault.history-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c78ab47eea594b7e1988403321ff9ba135ca60c513bb9d5848bdde26c0ffe3c3",
diff --git a/mobile/rpc-foundation/goldens/matrix-aivault.history-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-aivault.history-status.get-1.json
index dcf67b041a0..6873290ccf1 100644
--- a/mobile/rpc-foundation/goldens/matrix-aivault.history-status.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-aivault.history-status.get-1.json
@@ -3,7 +3,7 @@
"family": "aiVault.history",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "ec16931c5431d3dbb05729d4670c381a434bff71648d334b7b5224db188fdccb",
diff --git a/mobile/rpc-foundation/goldens/matrix-aivault.resume-launch-session.tabs.createterminal-1.json b/mobile/rpc-foundation/goldens/matrix-aivault.resume-launch-session.tabs.createterminal-1.json
index b9b34271a28..b35d25482ee 100644
--- a/mobile/rpc-foundation/goldens/matrix-aivault.resume-launch-session.tabs.createterminal-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-aivault.resume-launch-session.tabs.createterminal-1.json
@@ -3,7 +3,7 @@
"family": "aiVault.resume-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2f43211e4084c0493bd02ec98868acf53a4c748f89a70cd9657c9c3ee87b12fb",
diff --git a/mobile/rpc-foundation/goldens/matrix-aivault.resume-launch-terminal.send-1.json b/mobile/rpc-foundation/goldens/matrix-aivault.resume-launch-terminal.send-1.json
index 2d3e53120f3..f1980140963 100644
--- a/mobile/rpc-foundation/goldens/matrix-aivault.resume-launch-terminal.send-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-aivault.resume-launch-terminal.send-1.json
@@ -3,7 +3,7 @@
"family": "aiVault.resume-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2f43211e4084c0493bd02ec98868acf53a4c748f89a70cd9657c9c3ee87b12fb",
diff --git a/mobile/rpc-foundation/goldens/matrix-aivault.resume-preparation-aivault.preparesessionresume-1.json b/mobile/rpc-foundation/goldens/matrix-aivault.resume-preparation-aivault.preparesessionresume-1.json
index 85f516eed2e..41b607ed3f6 100644
--- a/mobile/rpc-foundation/goldens/matrix-aivault.resume-preparation-aivault.preparesessionresume-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-aivault.resume-preparation-aivault.preparesessionresume-1.json
@@ -3,7 +3,7 @@
"family": "aiVault.resume-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2f43211e4084c0493bd02ec98868acf53a4c748f89a70cd9657c9c3ee87b12fb",
diff --git a/mobile/rpc-foundation/goldens/matrix-browser.dialog-browser.dialogaccept-1.json b/mobile/rpc-foundation/goldens/matrix-browser.dialog-browser.dialogaccept-1.json
index adaa8ba57df..675841953d7 100644
--- a/mobile/rpc-foundation/goldens/matrix-browser.dialog-browser.dialogaccept-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-browser.dialog-browser.dialogaccept-1.json
@@ -3,7 +3,7 @@
"family": "browser.dialog",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/matrix-browser.keyboard-browser.keyboardinserttext-1.json b/mobile/rpc-foundation/goldens/matrix-browser.keyboard-browser.keyboardinserttext-1.json
index 52659492140..82d458cc64b 100644
--- a/mobile/rpc-foundation/goldens/matrix-browser.keyboard-browser.keyboardinserttext-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-browser.keyboard-browser.keyboardinserttext-1.json
@@ -3,7 +3,7 @@
"family": "browser.keyboard",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/matrix-browser.keyboard-browser.keypress-1.json b/mobile/rpc-foundation/goldens/matrix-browser.keyboard-browser.keypress-1.json
index f1148cbf996..d359fa7f825 100644
--- a/mobile/rpc-foundation/goldens/matrix-browser.keyboard-browser.keypress-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-browser.keyboard-browser.keypress-1.json
@@ -3,7 +3,7 @@
"family": "browser.keyboard",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mouseclick-1.json b/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mouseclick-1.json
index 8a3f02c2941..0a86c5777cf 100644
--- a/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mouseclick-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mouseclick-1.json
@@ -3,7 +3,7 @@
"family": "browser.pointer-click",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mousedown-1.json b/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mousedown-1.json
index c1e61603f8d..d8ef9402bd4 100644
--- a/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mousedown-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mousedown-1.json
@@ -3,7 +3,7 @@
"family": "browser.pointer-click",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mousemove-1.json b/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mousemove-1.json
index 5ad3210ab55..e156567d696 100644
--- a/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mousemove-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mousemove-1.json
@@ -3,7 +3,7 @@
"family": "browser.pointer-click",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mouseup-1.json b/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mouseup-1.json
index 662807b2ac9..480078b2895 100644
--- a/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mouseup-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-browser.pointer-click-browser.mouseup-1.json
@@ -3,7 +3,7 @@
"family": "browser.pointer-click",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/matrix-browser.wheel-browser.mousemove-1.json b/mobile/rpc-foundation/goldens/matrix-browser.wheel-browser.mousemove-1.json
index 93f35f5aedd..ac2d3276d30 100644
--- a/mobile/rpc-foundation/goldens/matrix-browser.wheel-browser.mousemove-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-browser.wheel-browser.mousemove-1.json
@@ -3,7 +3,7 @@
"family": "browser.wheel",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/matrix-browser.wheel-browser.mousewheel-1.json b/mobile/rpc-foundation/goldens/matrix-browser.wheel-browser.mousewheel-1.json
index f45f476d7f8..4f6c047f4dc 100644
--- a/mobile/rpc-foundation/goldens/matrix-browser.wheel-browser.mousewheel-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-browser.wheel-browser.mousewheel-1.json
@@ -3,7 +3,7 @@
"family": "browser.wheel",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55971752f963202d30160851197a301089b0f3ebd0c46725af1a461d8310d658",
diff --git a/mobile/rpc-foundation/goldens/matrix-clipboard.image-attachment-clipboard.startimageupload-1.json b/mobile/rpc-foundation/goldens/matrix-clipboard.image-attachment-clipboard.startimageupload-1.json
index 82cf496d791..fe3c3c6a406 100644
--- a/mobile/rpc-foundation/goldens/matrix-clipboard.image-attachment-clipboard.startimageupload-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-clipboard.image-attachment-clipboard.startimageupload-1.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-attachment",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/matrix-clipboard.image-upload-clipboard.saveimageastempfile-1.json b/mobile/rpc-foundation/goldens/matrix-clipboard.image-upload-clipboard.saveimageastempfile-1.json
index bed81f1b044..5f569d3594b 100644
--- a/mobile/rpc-foundation/goldens/matrix-clipboard.image-upload-clipboard.saveimageastempfile-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-clipboard.image-upload-clipboard.saveimageastempfile-1.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/matrix-clipboard.image-upload-clipboard.startimageupload-1.json b/mobile/rpc-foundation/goldens/matrix-clipboard.image-upload-clipboard.startimageupload-1.json
index 6db467a2e16..a6a213fa2e9 100644
--- a/mobile/rpc-foundation/goldens/matrix-clipboard.image-upload-clipboard.startimageupload-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-clipboard.image-upload-clipboard.startimageupload-1.json
@@ -3,7 +3,7 @@
"family": "clipboard.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/matrix-components.codex-reset-capability-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-components.codex-reset-capability-status.get-1.json
index 16a42b7feda..1584210054e 100644
--- a/mobile/rpc-foundation/goldens/matrix-components.codex-reset-capability-status.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-components.codex-reset-capability-status.get-1.json
@@ -3,7 +3,7 @@
"family": "components.codex-reset-capability",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5cfbce3c7d97d908fbd447646d611e41a8aa1f61f684b9b710c4b67d6ff023a7",
diff --git a/mobile/rpc-foundation/goldens/matrix-components.codex-reset-credit-accounts.consumecodexresetcredit-1.json b/mobile/rpc-foundation/goldens/matrix-components.codex-reset-credit-accounts.consumecodexresetcredit-1.json
index a3ca75ddcbd..467f627c04a 100644
--- a/mobile/rpc-foundation/goldens/matrix-components.codex-reset-credit-accounts.consumecodexresetcredit-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-components.codex-reset-credit-accounts.consumecodexresetcredit-1.json
@@ -3,7 +3,7 @@
"family": "components.codex-reset-credit",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "76b53dea504a688493843e23e8e7d052fc196f559bb1e2579d0fd38bf3156d0e",
diff --git a/mobile/rpc-foundation/goldens/matrix-components.execution-target-local-preflight.detectagents-1.json b/mobile/rpc-foundation/goldens/matrix-components.execution-target-local-preflight.detectagents-1.json
index 0efa78157b0..ad5a116fd68 100644
--- a/mobile/rpc-foundation/goldens/matrix-components.execution-target-local-preflight.detectagents-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-components.execution-target-local-preflight.detectagents-1.json
@@ -3,7 +3,7 @@
"family": "components.execution-target-local",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5cfbce3c7d97d908fbd447646d611e41a8aa1f61f684b9b710c4b67d6ff023a7",
diff --git a/mobile/rpc-foundation/goldens/matrix-components.execution-target-preflight.detectremoteagents-1.json b/mobile/rpc-foundation/goldens/matrix-components.execution-target-preflight.detectremoteagents-1.json
index eb703788188..ee80824dc83 100644
--- a/mobile/rpc-foundation/goldens/matrix-components.execution-target-preflight.detectremoteagents-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-components.execution-target-preflight.detectremoteagents-1.json
@@ -3,7 +3,7 @@
"family": "components.execution-target",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5cfbce3c7d97d908fbd447646d611e41a8aa1f61f684b9b710c4b67d6ff023a7",
diff --git a/mobile/rpc-foundation/goldens/matrix-components.execution-target-ssh.connect-1.json b/mobile/rpc-foundation/goldens/matrix-components.execution-target-ssh.connect-1.json
index fc0e72ed9f6..ee6a81d855a 100644
--- a/mobile/rpc-foundation/goldens/matrix-components.execution-target-ssh.connect-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-components.execution-target-ssh.connect-1.json
@@ -3,7 +3,7 @@
"family": "components.execution-target",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5cfbce3c7d97d908fbd447646d611e41a8aa1f61f684b9b710c4b67d6ff023a7",
diff --git a/mobile/rpc-foundation/goldens/matrix-components.execution-target-ssh.getstate-1.json b/mobile/rpc-foundation/goldens/matrix-components.execution-target-ssh.getstate-1.json
index 7c2f6732183..5b54a462fe2 100644
--- a/mobile/rpc-foundation/goldens/matrix-components.execution-target-ssh.getstate-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-components.execution-target-ssh.getstate-1.json
@@ -3,7 +3,7 @@
"family": "components.execution-target",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5cfbce3c7d97d908fbd447646d611e41a8aa1f61f684b9b710c4b67d6ff023a7",
diff --git a/mobile/rpc-foundation/goldens/matrix-components.new-workspace-repositories-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-components.new-workspace-repositories-repo.list-1.json
index e5edc7549e1..ffd3f00d855 100644
--- a/mobile/rpc-foundation/goldens/matrix-components.new-workspace-repositories-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-components.new-workspace-repositories-repo.list-1.json
@@ -3,7 +3,7 @@
"family": "components.new-workspace-repositories",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "64c1772f0f95a3c43fbb14398a8804b2b4784f7f18874e4fd79767ae634c7faa",
diff --git a/mobile/rpc-foundation/goldens/matrix-components.setup-script-repo.hooks-1.json b/mobile/rpc-foundation/goldens/matrix-components.setup-script-repo.hooks-1.json
index cf1f9c36848..ca1e153e8d7 100644
--- a/mobile/rpc-foundation/goldens/matrix-components.setup-script-repo.hooks-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-components.setup-script-repo.hooks-1.json
@@ -3,7 +3,7 @@
"family": "components.setup-script",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5cfbce3c7d97d908fbd447646d611e41a8aa1f61f684b9b710c4b67d6ff023a7",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.explorer-screen-files.list-1.json b/mobile/rpc-foundation/goldens/matrix-files.explorer-screen-files.list-1.json
index da8cdb25dd8..f1f02ac024c 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.explorer-screen-files.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.explorer-screen-files.list-1.json
@@ -3,7 +3,7 @@
"family": "files.explorer-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "7a42a348f4407b94cf75ac77a4b6b783b7d28103b1ae1d111d2708dab0dd4a0c",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.explorer-screen-files.readdir-1.json b/mobile/rpc-foundation/goldens/matrix-files.explorer-screen-files.readdir-1.json
index 09f62254bdd..012059fdf03 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.explorer-screen-files.readdir-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.explorer-screen-files.readdir-1.json
@@ -3,7 +3,7 @@
"family": "files.explorer-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "7a42a348f4407b94cf75ac77a4b6b783b7d28103b1ae1d111d2708dab0dd4a0c",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-ssh.getstate-1.json b/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-ssh.getstate-1.json
index 1b0da8aaa97..9958e76d69a 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-ssh.getstate-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-ssh.getstate-1.json
@@ -3,7 +3,7 @@
"family": "files.mutation-ownership",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-status.get-1.json
index 1d3ef135ba4..4797219f674 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-status.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-status.get-1.json
@@ -3,7 +3,7 @@
"family": "files.mutation-ownership",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-worktree.show-1.json
index 64824c81998..04ca092f761 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-worktree.show-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.mutation-ownership-worktree.show-1.json
@@ -3,7 +3,7 @@
"family": "files.mutation-ownership",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.preview-artifact-image-files.readterminalartifactpreview-1.json b/mobile/rpc-foundation/goldens/matrix-files.preview-artifact-image-files.readterminalartifactpreview-1.json
index db7c4973540..b44c387ac7c 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.preview-artifact-image-files.readterminalartifactpreview-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.preview-artifact-image-files.readterminalartifactpreview-1.json
@@ -3,7 +3,7 @@
"family": "files.preview-artifact-image",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.readterminalartifact-1.json b/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.readterminalartifact-1.json
index abff8d9e939..2a028952120 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.readterminalartifact-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.readterminalartifact-1.json
@@ -3,7 +3,7 @@
"family": "files.preview-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.readterminalartifact-2.json b/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.readterminalartifact-2.json
index 2c898067555..86ecd0352f7 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.readterminalartifact-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.readterminalartifact-2.json
@@ -3,7 +3,7 @@
"family": "files.preview-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.resolveterminalpath-1.json b/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.resolveterminalpath-1.json
index e0e18f5693e..edb175af835 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.resolveterminalpath-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.preview-load-files.resolveterminalpath-1.json
@@ -3,7 +3,7 @@
"family": "files.preview-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.preview-save-files.readterminalartifact-1.json b/mobile/rpc-foundation/goldens/matrix-files.preview-save-files.readterminalartifact-1.json
index d662d1f6869..701b00772ee 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.preview-save-files.readterminalartifact-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.preview-save-files.readterminalartifact-1.json
@@ -3,7 +3,7 @@
"family": "files.preview-save",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.preview-save-files.writeterminalartifact-1.json b/mobile/rpc-foundation/goldens/matrix-files.preview-save-files.writeterminalartifact-1.json
index e6d1958c6eb..20d302012cc 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.preview-save-files.writeterminalartifact-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.preview-save-files.writeterminalartifact-1.json
@@ -3,7 +3,7 @@
"family": "files.preview-save",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.preview-worktree-image-files.readpreview-1.json b/mobile/rpc-foundation/goldens/matrix-files.preview-worktree-image-files.readpreview-1.json
index dee03efcc73..aae0ab561aa 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.preview-worktree-image-files.readpreview-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.preview-worktree-image-files.readpreview-1.json
@@ -3,7 +3,7 @@
"family": "files.preview-worktree-image",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.preview-worktree-text-files.read-1.json b/mobile/rpc-foundation/goldens/matrix-files.preview-worktree-text-files.read-1.json
index 719d8ad0112..c5e9f640755 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.preview-worktree-text-files.read-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.preview-worktree-text-files.read-1.json
@@ -3,7 +3,7 @@
"family": "files.preview-worktree-text",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.tab-doc-files.read-1.json b/mobile/rpc-foundation/goldens/matrix-files.tab-doc-files.read-1.json
index bd7154477cc..b9704e0e790 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.tab-doc-files.read-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.tab-doc-files.read-1.json
@@ -3,7 +3,7 @@
"family": "files.tab-doc",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.tab-doc-files.readpreview-1.json b/mobile/rpc-foundation/goldens/matrix-files.tab-doc-files.readpreview-1.json
index 0118f455308..0ef791fe93e 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.tab-doc-files.readpreview-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.tab-doc-files.readpreview-1.json
@@ -3,7 +3,7 @@
"family": "files.tab-doc",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.tab-doc-git.diff-1.json b/mobile/rpc-foundation/goldens/matrix-files.tab-doc-git.diff-1.json
index 756769b6ec6..51c711d4233 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.tab-doc-git.diff-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.tab-doc-git.diff-1.json
@@ -3,7 +3,7 @@
"family": "files.tab-doc",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b93fc8b6f1ece041acaa8cc5699852085e67d7e2f39db13145e483f854ea3309",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.terminal-path-tap-files.open-1.json b/mobile/rpc-foundation/goldens/matrix-files.terminal-path-tap-files.open-1.json
index 4c6f90e5c33..1cba34985bc 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.terminal-path-tap-files.open-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.terminal-path-tap-files.open-1.json
@@ -3,7 +3,7 @@
"family": "files.terminal-path-tap",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e20a76ecd5e820dc4797fb25307810af68b5ced996dba2b9599464a21b5cbe1b",
diff --git a/mobile/rpc-foundation/goldens/matrix-files.terminal-path-tap-files.resolveterminalpath-1.json b/mobile/rpc-foundation/goldens/matrix-files.terminal-path-tap-files.resolveterminalpath-1.json
index 565a7e26d86..86d83ddee9e 100644
--- a/mobile/rpc-foundation/goldens/matrix-files.terminal-path-tap-files.resolveterminalpath-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-files.terminal-path-tap-files.resolveterminalpath-1.json
@@ -3,7 +3,7 @@
"family": "files.terminal-path-tap",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e20a76ecd5e820dc4797fb25307810af68b5ced996dba2b9599464a21b5cbe1b",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json
index fe1f6c6473c..4772cb6adb5 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json
@@ -3,7 +3,7 @@
"family": "git.base-ref-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json
index 3d076db178b..33768d3d81c 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json
@@ -3,7 +3,7 @@
"family": "git.base-ref-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json
index 92d208b1e8c..a5e80297181 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json
@@ -3,7 +3,7 @@
"family": "git.base-ref-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.branch-diff-preview-git.branchdiff-1.json b/mobile/rpc-foundation/goldens/matrix-git.branch-diff-preview-git.branchdiff-1.json
index bbfe0538625..837fc221dc6 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.branch-diff-preview-git.branchdiff-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.branch-diff-preview-git.branchdiff-1.json
@@ -3,7 +3,7 @@
"family": "git.branch-diff-preview",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "48ccada93f208a24160483e98ee94a771ab6d63222f29ac4bbd6979157f98333",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.changes-load-git.branchcompare-1.json b/mobile/rpc-foundation/goldens/matrix-git.changes-load-git.branchcompare-1.json
index 4f8d82d6568..21f412d5aa6 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.changes-load-git.branchcompare-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.changes-load-git.branchcompare-1.json
@@ -3,7 +3,7 @@
"family": "git.changes-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "48ccada93f208a24160483e98ee94a771ab6d63222f29ac4bbd6979157f98333",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.changes-load-git.status-1.json b/mobile/rpc-foundation/goldens/matrix-git.changes-load-git.status-1.json
index 06ec68cbcdd..505b519e89b 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.changes-load-git.status-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.changes-load-git.status-1.json
@@ -3,7 +3,7 @@
"family": "git.changes-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "48ccada93f208a24160483e98ee94a771ab6d63222f29ac4bbd6979157f98333",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.changes-load-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-git.changes-load-repo.list-1.json
index 12378643a8b..fedb8e55d36 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.changes-load-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.changes-load-repo.list-1.json
@@ -3,7 +3,7 @@
"family": "git.changes-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "48ccada93f208a24160483e98ee94a771ab6d63222f29ac4bbd6979157f98333",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.changes-load-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-git.changes-load-worktree.show-1.json
index 69666ce3f9a..411a2b2d435 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.changes-load-worktree.show-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.changes-load-worktree.show-1.json
@@ -3,7 +3,7 @@
"family": "git.changes-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "48ccada93f208a24160483e98ee94a771ab6d63222f29ac4bbd6979157f98333",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json b/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json
index 59444fa8ce9..446ad90a026 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json
@@ -3,7 +3,7 @@
"family": "git.commit-message-ai",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.history-commit-files-git.commitcompare-1.json b/mobile/rpc-foundation/goldens/matrix-git.history-commit-files-git.commitcompare-1.json
index 0506e48cc6a..a92368dd725 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.history-commit-files-git.commitcompare-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.history-commit-files-git.commitcompare-1.json
@@ -3,7 +3,7 @@
"family": "git.history-commit-files",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "48ccada93f208a24160483e98ee94a771ab6d63222f29ac4bbd6979157f98333",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.history-commit-files-git.history-1.json b/mobile/rpc-foundation/goldens/matrix-git.history-commit-files-git.history-1.json
index 0a1427fd632..ebbc8649086 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.history-commit-files-git.history-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.history-commit-files-git.history-1.json
@@ -3,7 +3,7 @@
"family": "git.history-commit-files",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "48ccada93f208a24160483e98ee94a771ab6d63222f29ac4bbd6979157f98333",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json b/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json
index 88af61c5928..c4d29c3fb19 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json
@@ -3,7 +3,7 @@
"family": "git.history-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json
index a25b1fb2aa9..9c8ba886c2d 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json
@@ -3,7 +3,7 @@
"family": "git.remote-prerequisite",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json b/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json
index b25915e3524..df9240be29f 100644
--- a/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json
@@ -3,7 +3,7 @@
"family": "git.review-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.addissuecomment-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.addissuecomment-1.json
index 3288a86a2bd..08746cbd4f9 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.addissuecomment-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.addissuecomment-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-comment-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "0c8f09683408a919dd3ac2b7cd12197d8745882627134cde95ecee209575b027",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.addprreviewcommentreply-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.addprreviewcommentreply-1.json
index 3543fae6e58..7a9473ab0d6 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.addprreviewcommentreply-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.addprreviewcommentreply-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-comment-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "4f2b61df5e59d2efe81d467214a78132654035cbcb4d929385410b53f735c9fe",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.project.deleteissuecommentbyslug-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.project.deleteissuecommentbyslug-1.json
index de7edadade1..ac09e3a8344 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.project.deleteissuecommentbyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.project.deleteissuecommentbyslug-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-comment-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "04b2052cce6f24d9e208c992f204355639409ddc9793b3044b394c0e38d3c284",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.project.updateissuecommentbyslug-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.project.updateissuecommentbyslug-1.json
index 4a92b447cb4..569f79e8ba5 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.project.updateissuecommentbyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.project.updateissuecommentbyslug-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-comment-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "8f849437158296753a84a75dfdbaf69852bcdb6cdc6e8205496961ec16e4be21",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.resolvereviewthread-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.resolvereviewthread-1.json
index 3460c8a5105..c470f12d385 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.resolvereviewthread-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-comment-mutation-github.resolvereviewthread-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-comment-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "77eba7deff3f15e64795cdcbefd009abfcf2379e7293eefb1f154ca1e99f4d5d",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.mergepr-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.mergepr-1.json
index 260dceb18a6..1a47943d987 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.mergepr-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.mergepr-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "2235d05e0d2c6f1a9518cfdd76870e303cccd35289d6a44334147b6a5b6b675e",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.removeprreviewers-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.removeprreviewers-1.json
index bb17f931df9..d8415c0685c 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.removeprreviewers-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.removeprreviewers-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "2cea87c339b35daf62c963092c01c6379db43f2ee4ca5cb2b5f817975b0caf65",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.requestprreviewers-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.requestprreviewers-1.json
index d11c5ec9819..45bf3d7fef0 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.requestprreviewers-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.requestprreviewers-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "78de11de556c91782590725819b22821732a12d3769f493d165c80bc7fcc1f53",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.rerunprchecks-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.rerunprchecks-1.json
index 38371a12f80..9bf6a49bb38 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.rerunprchecks-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.rerunprchecks-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "ac7e91b4d35021eca63af8ce01f9a2c7959109e4cb824009881437cb94dbfe82",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.setprautomerge-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.setprautomerge-1.json
index 2c84b6d6521..b4fffd04b69 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.setprautomerge-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.setprautomerge-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "a85682e5009d634bf468b8dbe4f35a957988754ed9c2b07d57ad475c1590d1f6",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.updateprstate-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.updateprstate-1.json
index 0ff119ac5ae..d2b57069195 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.updateprstate-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-mutation-github.updateprstate-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "30f321fcbfaf09505bc6e18e64c09ca49c0dcdb7c5e12c4e27c2429b3e1066ca",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.listassignableusers-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.listassignableusers-1.json
index 6b29ab74c95..8663551cd07 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.listassignableusers-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.listassignableusers-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "507743a5925a37be32156b3d8df83ddb8e08c262d2c2f44bbd117dee4672bbc5",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prcheckdetails-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prcheckdetails-1.json
index f563b6f083e..8b47ed74b92 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prcheckdetails-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prcheckdetails-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "6efca320cf31a1de988110004a9fb7b67fdad279a789e046ad6b5141b66e5bf1",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prchecks-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prchecks-1.json
index 1a24e6e9ac3..6f528205be1 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prchecks-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prchecks-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "c77d7c7a05ecb9b27180ef28ca63a28e1c1ca42db2bb54a468699da77281ae35",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prforbranch-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prforbranch-1.json
index deab639fc27..a633598fa80 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prforbranch-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prforbranch-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "3b3d3032b992fc7461b13de8a42512affa12fb018ad583898179a9934c13b414",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.reposlug-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.reposlug-1.json
index cc1ec872e44..a54073d825e 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.reposlug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.reposlug-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "4ebe865f874b0b4a813860ec7356b8dc214ea02f0a9036cb003efe863d89b83e",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.workitemdetails-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.workitemdetails-1.json
index d76a4b9903e..c160111e9e8 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.workitemdetails-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.workitemdetails-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "bc3350efc030f824fc21046aea8c6dc9a46993b6c75613c66874fde59af9171a",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-hostedreview.forbranch-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-hostedreview.forbranch-1.json
index e891a7f1635..ce776c7f340 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-hostedreview.forbranch-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-hostedreview.forbranch-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "9171e982babc4e56852fe35bafa7a9f3aeda2be5bd4648f29aaa04ca7119d5d2",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-title-mutation-github.updateprtitle-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-title-mutation-github.updateprtitle-1.json
index 4a079084d75..75497449e06 100644
--- a/mobile/rpc-foundation/goldens/matrix-github.pr-title-mutation-github.updateprtitle-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-github.pr-title-mutation-github.updateprtitle-1.json
@@ -3,10 +3,10 @@
"family": "github.pr-title-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "fe91d5518501a078dff3010e74c4b9d70122f88a629e384336cd1b6a84de36a8",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-home.host-accounts-accounts.list-1.json b/mobile/rpc-foundation/goldens/matrix-home.host-accounts-accounts.list-1.json
index cb3327d2559..b756f0e26eb 100644
--- a/mobile/rpc-foundation/goldens/matrix-home.host-accounts-accounts.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-home.host-accounts-accounts.list-1.json
@@ -3,7 +3,7 @@
"family": "home.host-accounts",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c632fdbc4b730777ecb09f08bec14cca0586042b01ed99d40d0228806c7def4a",
diff --git a/mobile/rpc-foundation/goldens/matrix-home.host-stats-stats.summary-1.json b/mobile/rpc-foundation/goldens/matrix-home.host-stats-stats.summary-1.json
index 6ad4f54f7ba..860b9a4214b 100644
--- a/mobile/rpc-foundation/goldens/matrix-home.host-stats-stats.summary-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-home.host-stats-stats.summary-1.json
@@ -3,7 +3,7 @@
"family": "home.host-stats",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a9e0780298a1443664e7ae02056168aa34d67556c9c056d51a82c7b4a73ad35b",
diff --git a/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-1.json b/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-1.json
index 4f596f6bb92..8509139ab93 100644
--- a/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-1.json
@@ -3,7 +3,7 @@
"family": "host-worktree-refresh",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-2.json b/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-2.json
index dd68128dd9c..a35f134c963 100644
--- a/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-2.json
@@ -3,7 +3,7 @@
"family": "host-worktree-refresh",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-3.json b/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-3.json
index dac204431a3..efceb3aca89 100644
--- a/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-3.json
+++ b/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-1-3.json
@@ -3,7 +3,7 @@
"family": "host-worktree-refresh",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-2-1.json b/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-2-1.json
index 572dee4091a..4341e370fce 100644
--- a/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-2-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-host-worktree-refresh-runtime.clientevents.subscribe-2-1.json
@@ -3,7 +3,7 @@
"family": "host-worktree-refresh",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/matrix-host.view-settings-ui.get-1.json b/mobile/rpc-foundation/goldens/matrix-host.view-settings-ui.get-1.json
index ee5fa65362a..888840f25b2 100644
--- a/mobile/rpc-foundation/goldens/matrix-host.view-settings-ui.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-host.view-settings-ui.get-1.json
@@ -3,7 +3,7 @@
"family": "host.view-settings",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a9e0780298a1443664e7ae02056168aa34d67556c9c056d51a82c7b4a73ad35b",
diff --git a/mobile/rpc-foundation/goldens/matrix-host.view-settings-ui.set-1.json b/mobile/rpc-foundation/goldens/matrix-host.view-settings-ui.set-1.json
index faa24c216cc..4c6e4995ba1 100644
--- a/mobile/rpc-foundation/goldens/matrix-host.view-settings-ui.set-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-host.view-settings-ui.set-1.json
@@ -3,7 +3,7 @@
"family": "host.view-settings",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a9e0780298a1443664e7ae02056168aa34d67556c9c056d51a82c7b4a73ad35b",
diff --git a/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.activate-1.json b/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.activate-1.json
index 6a2594ab230..cd25bda2a97 100644
--- a/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.activate-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.activate-1.json
@@ -3,7 +3,7 @@
"family": "host.worktree-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "92c29bd78ca0c0d5917e9386fc447bb9a1698b1d1ffaba0db7546eaac60da639",
diff --git a/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.rm-1.json b/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.rm-1.json
index fe0a8078c84..aea83826f58 100644
--- a/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.rm-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.rm-1.json
@@ -3,7 +3,7 @@
"family": "host.worktree-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "92c29bd78ca0c0d5917e9386fc447bb9a1698b1d1ffaba0db7546eaac60da639",
diff --git a/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.set-1.json
index f0a4c4e8b57..6b9dab5fdd9 100644
--- a/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.set-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-host.worktree-actions-worktree.set-1.json
@@ -3,7 +3,7 @@
"family": "host.worktree-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "92c29bd78ca0c0d5917e9386fc447bb9a1698b1d1ffaba0db7546eaac60da639",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json
index 7ec14055a88..36a506da696 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json
index 93c7c7c49b2..d1753f4425b 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json
index 2cc9887fac1..0c5e2396e0e 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json
index eda79947dac..2df5db78fe1 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json
index caaebe6c8ff..56a0f6948ae 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json
index f68391c23fe..b32c45655df 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json
index 0249f2d2bca..4a7a2504aba 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json
index 997f17af2f3..2cf03eb5cbd 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json
index 3b26eccbe7d..053bc25523b 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json
index 9180497a1fe..b4a5e9c257f 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json
index f9448039bb3..7a84c2dddc0 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json
index 6befe2c022d..01e9ec501a9 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json
index a315886a467..09368580565 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json
index a2d5b32a157..eb0269a9e9d 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json
index b890426b031..df36974ab3c 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json
index 919399085d8..3619df0912a 100644
--- a/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json
@@ -3,7 +3,7 @@
"family": "hostedReview.eligibility",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json
index 889e8c64aba..e694b94eebd 100644
--- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json
@@ -3,7 +3,7 @@
"family": "legacy-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "262eaad263a45aa13ec5b27c12b59946b12c202474229fff7a5727dba6d702ca",
diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json
index 9a2ed61e04d..f69f771fd9c 100644
--- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json
@@ -3,7 +3,7 @@
"family": "legacy-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "262eaad263a45aa13ec5b27c12b59946b12c202474229fff7a5727dba6d702ca",
diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json
index e951d309e4b..09b3cbae874 100644
--- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json
+++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json
@@ -3,7 +3,7 @@
"family": "legacy-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "262eaad263a45aa13ec5b27c12b59946b12c202474229fff7a5727dba6d702ca",
diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json
index a58aec5f6fa..5aca6361988 100644
--- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json
+++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json
@@ -3,7 +3,7 @@
"family": "legacy-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "262eaad263a45aa13ec5b27c12b59946b12c202474229fff7a5727dba6d702ca",
diff --git a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json
index b4dbb996c4b..3d3020deaeb 100644
--- a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json
@@ -3,7 +3,7 @@
"family": "linear-detail-barrier",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d3b7f33d810e1fa420ac41a628cde9fe4a9e65fd57f89fbca0a40fc7d74951ab",
diff --git a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json
index d2d688a1dc2..6a39e49786a 100644
--- a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json
@@ -3,7 +3,7 @@
"family": "linear-detail-barrier",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d3b7f33d810e1fa420ac41a628cde9fe4a9e65fd57f89fbca0a40fc7d74951ab",
diff --git a/mobile/rpc-foundation/goldens/matrix-linear.select-workspace-picker-linear.selectworkspace-1.json b/mobile/rpc-foundation/goldens/matrix-linear.select-workspace-picker-linear.selectworkspace-1.json
index 664d3af2f81..b31443e0913 100644
--- a/mobile/rpc-foundation/goldens/matrix-linear.select-workspace-picker-linear.selectworkspace-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-linear.select-workspace-picker-linear.selectworkspace-1.json
@@ -3,7 +3,7 @@
"family": "linear.select-workspace-picker",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b65996c152b632d553a31e07e31ea5c76f998eada42cf0966923d730da21908f",
diff --git a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-1-1.json b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-1-1.json
index 4f440637e62..74ffddc8b2b 100644
--- a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-1-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-1-1.json
@@ -3,7 +3,7 @@
"family": "live-worktree-name",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-1-2.json b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-1-2.json
index 2beebf5d70d..6d72e3913f2 100644
--- a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-1-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-1-2.json
@@ -3,7 +3,7 @@
"family": "live-worktree-name",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-2-1.json b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-2-1.json
index d5a8eacd152..4017eb86085 100644
--- a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-2-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-runtime.clientevents.subscribe-2-1.json
@@ -3,7 +3,7 @@
"family": "live-worktree-name",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-1.json
index 0c846244bf5..783985104e7 100644
--- a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-1.json
@@ -3,7 +3,7 @@
"family": "live-worktree-name",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-2.json b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-2.json
index eed79fe2d99..06af0bb3874 100644
--- a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-2.json
@@ -3,7 +3,7 @@
"family": "live-worktree-name",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-3.json b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-3.json
index 7ef01efbd24..df5294fc033 100644
--- a/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-3.json
+++ b/mobile/rpc-foundation/goldens/matrix-live-worktree-name-worktree.show-3.json
@@ -3,7 +3,7 @@
"family": "live-worktree-name",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8e41c8624b9b6185e447cee3590a851ab88b6b1ee1d632af90e3a771a90310be",
diff --git a/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-app-js.json b/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-app-js.json
index 3d30410d2eb..fe736f7396d 100644
--- a/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-app-js.json
+++ b/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-app-js.json
@@ -3,7 +3,7 @@
"family": "mobileWeb.bundle-fetch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "af339fef2c684d5709c6d3f279e5f0d9c33d17b6d4e5c89e501963400901b564",
diff --git a/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-index-head.json b/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-index-head.json
index 536aebf9157..c2cbe4c9b80 100644
--- a/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-index-head.json
+++ b/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-index-head.json
@@ -3,7 +3,7 @@
"family": "mobileWeb.bundle-fetch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "af339fef2c684d5709c6d3f279e5f0d9c33d17b6d4e5c89e501963400901b564",
diff --git a/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-index-tail.json b/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-index-tail.json
index dea14a2258a..7f0da328ff6 100644
--- a/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-index-tail.json
+++ b/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-index-tail.json
@@ -3,7 +3,7 @@
"family": "mobileWeb.bundle-fetch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "af339fef2c684d5709c6d3f279e5f0d9c33d17b6d4e5c89e501963400901b564",
diff --git a/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-mobileweb.bundle.manifest-1.json b/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-mobileweb.bundle.manifest-1.json
index b3f3359de10..129834bd4c1 100644
--- a/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-mobileweb.bundle.manifest-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-fetch-mobileweb.bundle.manifest-1.json
@@ -3,7 +3,7 @@
"family": "mobileWeb.bundle-fetch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "af339fef2c684d5709c6d3f279e5f0d9c33d17b6d4e5c89e501963400901b564",
diff --git a/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-manifest-mobileweb.bundle.manifest-1.json b/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-manifest-mobileweb.bundle.manifest-1.json
index fa1a7133da9..d5d66e9516b 100644
--- a/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-manifest-mobileweb.bundle.manifest-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-mobileweb.bundle-manifest-mobileweb.bundle.manifest-1.json
@@ -3,7 +3,7 @@
"family": "mobileWeb.bundle-manifest",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "af339fef2c684d5709c6d3f279e5f0d9c33d17b6d4e5c89e501963400901b564",
diff --git a/mobile/rpc-foundation/goldens/matrix-nativechat.image-paste-terminal.send-1.json b/mobile/rpc-foundation/goldens/matrix-nativechat.image-paste-terminal.send-1.json
index 89a9eb7cc70..f802878a60a 100644
--- a/mobile/rpc-foundation/goldens/matrix-nativechat.image-paste-terminal.send-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-nativechat.image-paste-terminal.send-1.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-paste",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/matrix-nativechat.image-paste-terminal.send-2.json b/mobile/rpc-foundation/goldens/matrix-nativechat.image-paste-terminal.send-2.json
index 9a0623879b2..01042c9b755 100644
--- a/mobile/rpc-foundation/goldens/matrix-nativechat.image-paste-terminal.send-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-nativechat.image-paste-terminal.send-2.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-paste",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/matrix-nativechat.image-upload-clipboard.startimageupload-1.json b/mobile/rpc-foundation/goldens/matrix-nativechat.image-upload-clipboard.startimageupload-1.json
index 2281ed8cdc1..8aad2e65a2a 100644
--- a/mobile/rpc-foundation/goldens/matrix-nativechat.image-upload-clipboard.startimageupload-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-nativechat.image-upload-clipboard.startimageupload-1.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/matrix-nativechat.session-option-pick-settings.mutatenativechatsessionoptions-1.json b/mobile/rpc-foundation/goldens/matrix-nativechat.session-option-pick-settings.mutatenativechatsessionoptions-1.json
index 6d82c5e0067..ea997ee1280 100644
--- a/mobile/rpc-foundation/goldens/matrix-nativechat.session-option-pick-settings.mutatenativechatsessionoptions-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-nativechat.session-option-pick-settings.mutatenativechatsessionoptions-1.json
@@ -3,7 +3,7 @@
"family": "nativeChat.session-option-pick",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b98a3ca3818678b88cf629bc4635300a103637126a136f025a1600dc16f08008",
diff --git a/mobile/rpc-foundation/goldens/matrix-nativechat.terminal-write-orchestration.workerterminaluserinput-1.json b/mobile/rpc-foundation/goldens/matrix-nativechat.terminal-write-orchestration.workerterminaluserinput-1.json
index 391c5869730..72033dfd789 100644
--- a/mobile/rpc-foundation/goldens/matrix-nativechat.terminal-write-orchestration.workerterminaluserinput-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-nativechat.terminal-write-orchestration.workerterminaluserinput-1.json
@@ -3,7 +3,7 @@
"family": "nativeChat.terminal-write",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b98a3ca3818678b88cf629bc4635300a103637126a136f025a1600dc16f08008",
diff --git a/mobile/rpc-foundation/goldens/matrix-nativechat.terminal-write-terminal.send-1.json b/mobile/rpc-foundation/goldens/matrix-nativechat.terminal-write-terminal.send-1.json
index f6ba2e1e61e..e3f8dbb1528 100644
--- a/mobile/rpc-foundation/goldens/matrix-nativechat.terminal-write-terminal.send-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-nativechat.terminal-write-terminal.send-1.json
@@ -3,7 +3,7 @@
"family": "nativeChat.terminal-write",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b98a3ca3818678b88cf629bc4635300a103637126a136f025a1600dc16f08008",
diff --git a/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.getmissedsince-1.json b/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.getmissedsince-1.json
index 8e035da2d5c..255c3d46378 100644
--- a/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.getmissedsince-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.getmissedsince-1.json
@@ -3,7 +3,7 @@
"family": "notifications.desktop-stream",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "eacf859143588ae6bee2804975d642b6c1088d57ae77ffe298620250d9a9f0e4",
diff --git a/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.subscribe-1-1.json b/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.subscribe-1-1.json
index c38b6e055ef..9561cf1c0fd 100644
--- a/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.subscribe-1-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.subscribe-1-1.json
@@ -3,7 +3,7 @@
"family": "notifications.desktop-stream",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "eacf859143588ae6bee2804975d642b6c1088d57ae77ffe298620250d9a9f0e4",
diff --git a/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.subscribe-1-2.json b/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.subscribe-1-2.json
index 563bbd66db0..bc1ba1fca74 100644
--- a/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.subscribe-1-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.subscribe-1-2.json
@@ -3,7 +3,7 @@
"family": "notifications.desktop-stream",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "eacf859143588ae6bee2804975d642b6c1088d57ae77ffe298620250d9a9f0e4",
diff --git a/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.unsubscribe-1.json b/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.unsubscribe-1.json
index ea8ab3ed3a6..580ba532dc6 100644
--- a/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.unsubscribe-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-notifications.desktop-stream-notifications.unsubscribe-1.json
@@ -3,7 +3,7 @@
"family": "notifications.desktop-stream",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "eacf859143588ae6bee2804975d642b6c1088d57ae77ffe298620250d9a9f0e4",
diff --git a/mobile/rpc-foundation/goldens/matrix-notifications.display-test-screen-notifications.testpush-1.json b/mobile/rpc-foundation/goldens/matrix-notifications.display-test-screen-notifications.testpush-1.json
index 33eaf53c112..9c021bd6b64 100644
--- a/mobile/rpc-foundation/goldens/matrix-notifications.display-test-screen-notifications.testpush-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-notifications.display-test-screen-notifications.testpush-1.json
@@ -3,7 +3,7 @@
"family": "notifications.display-test-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "f55275c268e49679b37d72ce6cbe71186ce02c77fe3fd53f0f21e796502d62e8",
diff --git a/mobile/rpc-foundation/goldens/matrix-notifications.push-dismissal-notifications.getmissedsince-1.json b/mobile/rpc-foundation/goldens/matrix-notifications.push-dismissal-notifications.getmissedsince-1.json
index ca39fe2b521..a25a4546f4e 100644
--- a/mobile/rpc-foundation/goldens/matrix-notifications.push-dismissal-notifications.getmissedsince-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-notifications.push-dismissal-notifications.getmissedsince-1.json
@@ -3,7 +3,7 @@
"family": "notifications.push-dismissal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "595a3eb2994d0596b9fcd0707b175b4e978625053dfbc5c541b0350c0cbfb524",
diff --git a/mobile/rpc-foundation/goldens/matrix-notifications.push-registration-notifications.registerpush-1.json b/mobile/rpc-foundation/goldens/matrix-notifications.push-registration-notifications.registerpush-1.json
index 3bfb896987f..3cde5272046 100644
--- a/mobile/rpc-foundation/goldens/matrix-notifications.push-registration-notifications.registerpush-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-notifications.push-registration-notifications.registerpush-1.json
@@ -3,7 +3,7 @@
"family": "notifications.push-registration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2e3d939dc162dbc5a38d8a7207111688204a825fd70348721917b3016e1c9470",
diff --git a/mobile/rpc-foundation/goldens/matrix-notifications.push-registration-notifications.unregisterpush-1.json b/mobile/rpc-foundation/goldens/matrix-notifications.push-registration-notifications.unregisterpush-1.json
index b131000951d..98b09225b58 100644
--- a/mobile/rpc-foundation/goldens/matrix-notifications.push-registration-notifications.unregisterpush-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-notifications.push-registration-notifications.unregisterpush-1.json
@@ -3,7 +3,7 @@
"family": "notifications.push-registration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2e3d939dc162dbc5a38d8a7207111688204a825fd70348721917b3016e1c9470",
diff --git a/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-direct-status.json b/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-direct-status.json
index 58f2f591954..878a7b2dc42 100644
--- a/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-direct-status.json
+++ b/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-direct-status.json
@@ -3,7 +3,7 @@
"family": "pairing.pre-profile",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "57c8ad93d162ea69e4a0ecd5de7d8fae6806f8f7a51945c2c13661d81bae6497",
diff --git a/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-pairing.getendpoints-1.json b/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-pairing.getendpoints-1.json
index c86c8280a3d..a66ed6e69f5 100644
--- a/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-pairing.getendpoints-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-pairing.getendpoints-1.json
@@ -3,7 +3,7 @@
"family": "pairing.pre-profile",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "57c8ad93d162ea69e4a0ecd5de7d8fae6806f8f7a51945c2c13661d81bae6497",
diff --git a/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-pairing.provisionrelay-1.json b/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-pairing.provisionrelay-1.json
index 01ae3a71b64..b5920461495 100644
--- a/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-pairing.provisionrelay-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-pairing.provisionrelay-1.json
@@ -3,7 +3,7 @@
"family": "pairing.pre-profile",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "57c8ad93d162ea69e4a0ecd5de7d8fae6806f8f7a51945c2c13661d81bae6497",
diff --git a/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-relay-status.json b/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-relay-status.json
index 120497b10ea..38a4ee6d5f0 100644
--- a/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-relay-status.json
+++ b/mobile/rpc-foundation/goldens/matrix-pairing.pre-profile-relay-status.json
@@ -3,7 +3,7 @@
"family": "pairing.pre-profile",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "57c8ad93d162ea69e4a0ecd5de7d8fae6806f8f7a51945c2c13661d81bae6497",
diff --git a/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json b/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json
index 1b2b4700a64..46d7585d11f 100644
--- a/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json
@@ -3,7 +3,7 @@
"family": "project-explicit-false",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d3b7f33d810e1fa420ac41a628cde9fe4a9e65fd57f89fbca0a40fc7d74951ab",
diff --git a/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.getendpoints-1.json b/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.getendpoints-1.json
index 8daf56fdc79..f1b5b508ccf 100644
--- a/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.getendpoints-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.getendpoints-1.json
@@ -3,7 +3,7 @@
"family": "relay.credential-rotation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "374a16da4187ee44fcc6e07daf822ae96ecfc13ab47ee6c29d048b1c0bd0f291",
diff --git a/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.getendpoints-2.json b/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.getendpoints-2.json
index e863ae74e92..7698befb4c5 100644
--- a/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.getendpoints-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.getendpoints-2.json
@@ -3,7 +3,7 @@
"family": "relay.credential-rotation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "374a16da4187ee44fcc6e07daf822ae96ecfc13ab47ee6c29d048b1c0bd0f291",
diff --git a/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.provisionrelay-1.json b/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.provisionrelay-1.json
index 4c8bb8a391f..edc674f77ef 100644
--- a/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.provisionrelay-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-relay.credential-rotation-pairing.provisionrelay-1.json
@@ -3,7 +3,7 @@
"family": "relay.credential-rotation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "374a16da4187ee44fcc6e07daf822ae96ecfc13ab47ee6c29d048b1c0bd0f291",
diff --git a/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.getendpoints-1.json b/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.getendpoints-1.json
index 91e31c95a60..66c4a247716 100644
--- a/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.getendpoints-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.getendpoints-1.json
@@ -3,7 +3,7 @@
"family": "relay.direct-upgrade",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "374a16da4187ee44fcc6e07daf822ae96ecfc13ab47ee6c29d048b1c0bd0f291",
diff --git a/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.getendpoints-2.json b/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.getendpoints-2.json
index a5a04a2ceb8..7bf353e8371 100644
--- a/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.getendpoints-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.getendpoints-2.json
@@ -3,7 +3,7 @@
"family": "relay.direct-upgrade",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "374a16da4187ee44fcc6e07daf822ae96ecfc13ab47ee6c29d048b1c0bd0f291",
diff --git a/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.provisionrelay-1.json b/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.provisionrelay-1.json
index 12d460eddd7..a9ac9f36c10 100644
--- a/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.provisionrelay-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-relay.direct-upgrade-pairing.provisionrelay-1.json
@@ -3,7 +3,7 @@
"family": "relay.direct-upgrade",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "374a16da4187ee44fcc6e07daf822ae96ecfc13ab47ee6c29d048b1c0bd0f291",
diff --git a/mobile/rpc-foundation/goldens/matrix-relay.pairing-recovery-pairing.getendpoints-1.json b/mobile/rpc-foundation/goldens/matrix-relay.pairing-recovery-pairing.getendpoints-1.json
index 4e8c365f4d2..c1b44082403 100644
--- a/mobile/rpc-foundation/goldens/matrix-relay.pairing-recovery-pairing.getendpoints-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-relay.pairing-recovery-pairing.getendpoints-1.json
@@ -3,7 +3,7 @@
"family": "relay.pairing-recovery",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "57c8ad93d162ea69e4a0ecd5de7d8fae6806f8f7a51945c2c13661d81bae6497",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.browser-tab-create-browser.tabcreate-1.json b/mobile/rpc-foundation/goldens/matrix-session.browser-tab-create-browser.tabcreate-1.json
index e5e3da4a404..52aca46c39a 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.browser-tab-create-browser.tabcreate-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.browser-tab-create-browser.tabcreate-1.json
@@ -3,7 +3,7 @@
"family": "session.browser-tab-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.content-create-files.createfile-1.json b/mobile/rpc-foundation/goldens/matrix-session.content-create-files.createfile-1.json
index 443f2031daf..ca2bf0d57ab 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.content-create-files.createfile-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.content-create-files.createfile-1.json
@@ -3,7 +3,7 @@
"family": "session.content-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.content-create-files.open-1.json b/mobile/rpc-foundation/goldens/matrix-session.content-create-files.open-1.json
index 6692b3b1b38..b306aff0691 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.content-create-files.open-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.content-create-files.open-1.json
@@ -3,7 +3,7 @@
"family": "session.content-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.content-create-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-session.content-create-status.get-1.json
index a00adf5fc6c..6bd3875e6c6 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.content-create-status.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.content-create-status.get-1.json
@@ -3,7 +3,7 @@
"family": "session.content-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.content-create-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-session.content-create-worktree.show-1.json
index b599aac7e0d..8b995a39f1d 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.content-create-worktree.show-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.content-create-worktree.show-1.json
@@ -3,7 +3,7 @@
"family": "session.content-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.create-terminal-session.tabs.createterminal-1.json b/mobile/rpc-foundation/goldens/matrix-session.create-terminal-session.tabs.createterminal-1.json
index 0948078f0db..89ea3ff7faf 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.create-terminal-session.tabs.createterminal-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.create-terminal-session.tabs.createterminal-1.json
@@ -3,7 +3,7 @@
"family": "session.create-terminal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fa7d9fd6428e89282f08e04fefba4289000eb3aed1462489a2f11efed374382c",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.create-terminal-terminal.send-1.json b/mobile/rpc-foundation/goldens/matrix-session.create-terminal-terminal.send-1.json
index 872ebecbccf..66a44807117 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.create-terminal-terminal.send-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.create-terminal-terminal.send-1.json
@@ -3,7 +3,7 @@
"family": "session.create-terminal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fa7d9fd6428e89282f08e04fefba4289000eb3aed1462489a2f11efed374382c",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.diff-notes-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-session.diff-notes-worktree.show-1.json
index b43f2848938..50dcddadb55 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.diff-notes-worktree.show-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.diff-notes-worktree.show-1.json
@@ -3,7 +3,7 @@
"family": "session.diff-notes",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "42334358b5e5966001639653b553f15033f6e201d785107871fe056536f0a5e2",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.diff-review-actions-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-session.diff-review-actions-worktree.set-1.json
index d3e0d3187e6..039d20a5662 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.diff-review-actions-worktree.set-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.diff-review-actions-worktree.set-1.json
@@ -3,10 +3,10 @@
"family": "session.diff-review-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "c583058382c949e977b7a1287895ed9ccb8cb408b684aef186b629976ff1da4d",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-session.diff-review-base-ref-show.json b/mobile/rpc-foundation/goldens/matrix-session.diff-review-base-ref-show.json
index 1848093ca7d..25234737006 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.diff-review-base-ref-show.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.diff-review-base-ref-show.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.diff-review-git.branchcompare-1.json b/mobile/rpc-foundation/goldens/matrix-session.diff-review-git.branchcompare-1.json
index 7bd703be4ed..3e636b0a1db 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.diff-review-git.branchcompare-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.diff-review-git.branchcompare-1.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.diff-review-git.status-1.json b/mobile/rpc-foundation/goldens/matrix-session.diff-review-git.status-1.json
index 7991b3dd8d0..377a84d8ec0 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.diff-review-git.status-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.diff-review-git.status-1.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.diff-review-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.diff-review-repo.list-1.json
index c6cc15c8f28..ea586be64af 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.diff-review-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.diff-review-repo.list-1.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.diff-review-review-show.json b/mobile/rpc-foundation/goldens/matrix-session.diff-review-review-show.json
index 27916f35478..1058b2aef3a 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.diff-review-review-show.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.diff-review-review-show.json
@@ -3,7 +3,7 @@
"family": "session.diff-review",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.markdown-disk-fallback-files.read-1.json b/mobile/rpc-foundation/goldens/matrix-session.markdown-disk-fallback-files.read-1.json
index a010433b0ce..b110bd884a1 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.markdown-disk-fallback-files.read-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.markdown-disk-fallback-files.read-1.json
@@ -3,7 +3,7 @@
"family": "session.markdown-disk-fallback",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.markdown-disk-fallback-markdown.readtab-1.json b/mobile/rpc-foundation/goldens/matrix-session.markdown-disk-fallback-markdown.readtab-1.json
index 251652a6643..91909e865ff 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.markdown-disk-fallback-markdown.readtab-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.markdown-disk-fallback-markdown.readtab-1.json
@@ -3,7 +3,7 @@
"family": "session.markdown-disk-fallback",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.markdown-save-markdown.savetab-1.json b/mobile/rpc-foundation/goldens/matrix-session.markdown-save-markdown.savetab-1.json
index fd222140f6a..fb1c7e64b19 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.markdown-save-markdown.savetab-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.markdown-save-markdown.savetab-1.json
@@ -3,7 +3,7 @@
"family": "session.markdown-save",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "42334358b5e5966001639653b553f15033f6e201d785107871fe056536f0a5e2",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.readsession-1.json b/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.readsession-1.json
index e124dee6a65..7bcea9f41e3 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.readsession-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.readsession-1.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-page",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "60ce67f66134d6385aa7fb47f2135436a7b3ce0221e3b2514bea65e06dba5518",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.subscribe-1-1.json b/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.subscribe-1-1.json
index 7cc64a90cac..301135042b2 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.subscribe-1-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.subscribe-1-1.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-page",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "60ce67f66134d6385aa7fb47f2135436a7b3ce0221e3b2514bea65e06dba5518",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.subscribe-2-1.json b/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.subscribe-2-1.json
index ff984c2a9f4..1b63830b2de 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.subscribe-2-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.native-chat-page-nativechat.subscribe-2-1.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-page",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "60ce67f66134d6385aa7fb47f2135436a7b3ce0221e3b2514bea65e06dba5518",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.native-chat-readability-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.native-chat-readability-repo.list-1.json
index f0b00298eb5..1f825b99b80 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.native-chat-readability-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.native-chat-readability-repo.list-1.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-readability",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-orchestration.workerterminaluserinput-1.json b/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-orchestration.workerterminaluserinput-1.json
index 146c950d61b..90bd2675ef3 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-orchestration.workerterminaluserinput-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-orchestration.workerterminaluserinput-1.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-stop",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-terminal.send-1.json b/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-terminal.send-1.json
index 239b09a0b81..a6ab1484dd1 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-terminal.send-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-terminal.send-1.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-stop",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-terminal.send-2.json b/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-terminal.send-2.json
index a7b4be9d636..be04167eb32 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-terminal.send-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.native-chat-stop-terminal.send-2.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-stop",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-git.branchcompare-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-git.branchcompare-1.json
index 1fa5764eeaf..35356ae5376 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-git.branchcompare-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-git.branchcompare-1.json
@@ -3,10 +3,10 @@
"family": "session.pr-branch-context",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "af78542ad2c449b629f8705b940ec92fd16f879a9bcc81ff6ae3a192f804fa2c",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-git.status-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-git.status-1.json
index 239419edd0c..9190412e168 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-git.status-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-git.status-1.json
@@ -3,10 +3,10 @@
"family": "session.pr-branch-context",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "1e7cad00f4dfcda65a3830b0b2468020816b940611af1b68600de33cd8c1d7c2",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-repo.list-1.json
index 8fd282ff218..4be13a32f11 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-repo.list-1.json
@@ -3,10 +3,10 @@
"family": "session.pr-branch-context",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "d456ec18056eb9663e99d4991784bd802422256d81ddd7509720814da06915f4",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-worktree.show-1.json
index 6389f97aa03..8e9287ac1da 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-worktree.show-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.pr-branch-context-worktree.show-1.json
@@ -3,10 +3,10 @@
"family": "session.pr-branch-context",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "039f26cc90d2239028d6ad1d9ecae9cc976d48f386f2d29fbfa425afc702657d",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prchecks-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prchecks-1.json
index 2aba56fdb43..c08ed1bbc21 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prchecks-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prchecks-1.json
@@ -3,7 +3,7 @@
"family": "session.pr-sidebar",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "87ffa2daea415d2682f1112025b5bd9d52404c6fc7c239180a3ad2120678ff1f",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prforbranch-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prforbranch-1.json
index 0e576fe4206..d10ae826214 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prforbranch-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prforbranch-1.json
@@ -3,7 +3,7 @@
"family": "session.pr-sidebar",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "87ffa2daea415d2682f1112025b5bd9d52404c6fc7c239180a3ad2120678ff1f",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-hostedreview.forbranch-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-hostedreview.forbranch-1.json
index 75c2996977f..a77e3f98f5a 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-hostedreview.forbranch-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-hostedreview.forbranch-1.json
@@ -3,7 +3,7 @@
"family": "session.pr-sidebar",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "87ffa2daea415d2682f1112025b5bd9d52404c6fc7c239180a3ad2120678ff1f",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-worktree.show-1.json
index 00b9db95655..79217dcc90d 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-worktree.show-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-worktree.show-1.json
@@ -3,7 +3,7 @@
"family": "session.pr-sidebar",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "87ffa2daea415d2682f1112025b5bd9d52404c6fc7c239180a3ad2120678ff1f",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-triage-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-triage-repo.list-1.json
index 141f1d0997c..02ec381a268 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.pr-triage-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.pr-triage-repo.list-1.json
@@ -3,258 +3,56 @@
"family": "session.pr-triage",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
- "scenarioSha256": "c9030f183de2c5e86c2ccdfd9d4527d6f2ed71855501ff061620cef2681c6b82",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
+ "scenarioSha256": "0d06d27000a8f6ad66480a16c7b84e8464f4b6e1d775326aeae005926e134cb4",
"platform": "darwin",
"scenarioVersion": 1,
"projectionVersion": 2,
"goldenFormatVersion": 5,
"values": {
- "01fc75db313f": {
- "launched": {
- "kind": "not-started",
- "message": "The host sent a reply this app could not read (repo.list)"
- }
- },
- "02188f091419": {
- "name": "settings.get#1",
- "ordinal": 2,
- "args": [
- {
- "name": "method",
- "value": "settings.get"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-2",
- "ok": true,
- "result": {
- "settings": {
- "defaultTuiAgent": "codex",
- "disabledTuiAgents": []
- }
- }
- }
- }
- },
- "12e70439f294": {
- "name": "repo.list#1",
- "ordinal": 1,
- "args": [
- {
- "name": "method",
- "value": "repo.list"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "error": {
- "code": "method_not_found",
- "message": "Unknown method"
- },
- "id": "frame-1",
- "ok": false
- }
- }
- },
- "1321b4c8c0b8": {
- "name": "repo.list#1",
- "ordinal": 1,
- "args": [
- {
- "name": "method",
- "value": "repo.list"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "rejected",
- "startedAt": 0,
- "settledAt": 0,
- "error": {
- "category": "Error",
- "message": "",
- "isRpcDeliveryUnknown": true
- }
- }
- },
- "1963ee2edae9": {
- "launched": {
- "kind": "not-started",
- "message": "Unknown method"
- }
- },
- "1b23dab83fcf": {
- "name": "repo.list#1",
- "ordinal": 1,
- "args": [
- {
- "name": "method",
- "value": "repo.list"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-1",
- "ok": true,
- "result": {
- "error": "refused"
- }
- }
- }
- },
- "1c2564f1daca": {
- "name": "settings.get#1",
+ "280ce0d6f832": {
+ "name": "terminal.send#1",
"ordinal": 4,
- "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
+ "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"term-1\",\"text\":\"Fix the failing checks\",\"enter\":true}}"
},
- "28339abecf78": {
- "name": "agent.launchReplay#1",
- "ordinal": 8,
- "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"agent.launchReplay\",\"params\":{\"agent\":\"codex\",\"operationId\":\"1767225600000-00000000000040008000000000000001\",\"target\":{\"kind\":\"existing\",\"worktree\":\"id:repo-9::/w\"},\"prompt\":{\"text\":\"Fix the failing checks\",\"delivery\":\"submit\"},\"launchSource\":\"task_page\"}}"
- },
- "331b3596787f": {
- "launched": {
- "kind": "not-started",
- "message": "outer refused"
+ "30ec57518c05": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "Failed to create terminal",
+ "isRpcDeliveryUnknown": false
}
},
- "35f85fe3b71c": {
- "name": "repo.list#1",
+ "32a7c0ae7918": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "outer refused",
+ "isRpcDeliveryUnknown": false
+ }
+ },
+ "3f739faafdd4": {
+ "name": "session.tabs.createTerminal#1",
"ordinal": 1,
"args": [
{
"name": "method",
- "value": "repo.list"
+ "value": "session.tabs.createTerminal"
},
{
"name": "params",
"value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "pending",
- "startedAt": 0
- }
- },
- "3e6a0417d2ee": {
- "name": "repo.list#1",
- "ordinal": 1,
- "args": [
- {
- "name": "method",
- "value": "repo.list"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-1",
- "ok": true,
- "result": {
- "repos": [
- {
- "id": "repo-9"
- }
- ]
- }
- }
- }
- },
- "48c68906a98a": {
- "name": "repo.list#1",
- "ordinal": 1,
- "args": [
- {
- "name": "method",
- "value": "repo.list"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
}
},
{
@@ -277,79 +75,31 @@
}
}
},
- "51d4cb56be85": {
- "name": "settings.get#1",
- "ordinal": 2,
- "args": [
- {
- "name": "method",
- "value": "settings.get"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "pending",
- "startedAt": 0
+ "478ad4afe83e": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "The host sent a reply this app could not read (session.tabs.createTerminal)",
+ "isRpcDeliveryUnknown": false
}
},
- "624ec4e5082c": {
- "name": "repo.list#1",
+ "5093e98ba369": {
+ "name": "session.tabs.createTerminal#1",
"ordinal": 1,
"args": [
{
"name": "method",
- "value": "repo.list"
+ "value": "session.tabs.createTerminal"
},
{
"name": "params",
"value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "error": {
- "code": "refused",
- "message": "outer refused"
- },
- "id": "frame-1",
- "ok": false
- }
- }
- },
- "747c556da67a": {
- "name": "repo.list#1",
- "ordinal": 1,
- "args": [
- {
- "name": "method",
- "value": "repo.list"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
}
},
{
@@ -365,22 +115,33 @@
"settledAt": 0,
"value": {
"id": "frame-1",
- "ok": true
+ "ok": true,
+ "result": {
+ "tab": {
+ "id": "tab-1",
+ "terminal": "term-1",
+ "title": "Agent",
+ "type": "terminal"
+ }
+ }
}
}
},
- "8a72d3d14d44": {
- "name": "repo.list#1",
+ "5422be2c33b6": {
+ "name": "session.tabs.createTerminal#1",
"ordinal": 1,
"args": [
{
"name": "method",
- "value": "repo.list"
+ "value": "session.tabs.createTerminal"
},
{
"name": "params",
"value": {
- "$rpc": "absent"
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
}
},
{
@@ -404,122 +165,356 @@
}
}
},
- "9270aeb7d9c6": {
- "status": "pending",
- "startedAt": 0
- },
- "9c16efc31903": {
- "name": "preflight.detectAgents#1",
- "ordinal": 5,
- "args": [
- {
- "name": "method",
- "value": "preflight.detectAgents"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-3",
- "ok": true,
- "result": ["codex"]
- }
- }
- },
- "a4273b38df83": {
- "launched": "unlaunched"
- },
- "b13ddf18a62e": {
- "launched": {
- "kind": "not-started",
- "message": "Could not load the available agents."
- }
- },
- "ba3fac1eb199": {
- "name": "agent.launchReplay#1",
- "ordinal": 7,
- "args": [
- {
- "name": "method",
- "value": "agent.launchReplay"
- },
- {
- "name": "params",
- "value": {
- "agent": "codex",
- "launchSource": "task_page",
- "operationId": "1767225600000-00000000000040008000000000000001",
- "prompt": {
- "delivery": "submit",
- "text": "Fix the failing checks"
- },
- "target": {
- "kind": "existing",
- "worktree": "id:repo-9::/w"
- }
- }
- },
- {
- "name": "options",
- "value": {
- "timeoutMs": 90000
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-4",
- "ok": true,
- "result": {
- "outcome": {
- "handle": "term-1",
- "kind": "terminal"
- },
- "prompt": {
- "delivery": "submit",
- "outcome": "handed-to-terminal"
- },
- "receipt": {
- "detail": "Started a terminal agent, the default for new agent tabs in your settings.",
- "mode": "terminal",
- "preferred": "terminal",
- "reason": "user_default"
- },
- "worktreeId": "repo-9::/w"
- }
- }
- }
- },
- "d68475063b62": {
- "name": "repo.list#1",
+ "6bf6a76b4bf4": {
+ "name": "session.tabs.createTerminal#1",
"ordinal": 1,
"args": [
{
"name": "method",
- "value": "repo.list"
+ "value": "session.tabs.createTerminal"
},
{
"name": "params",
+ "value": {
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
+ }
+ },
+ {
+ "name": "options",
"value": {
"$rpc": "absent"
}
+ }
+ ],
+ "settlement": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "",
+ "isRpcDeliveryUnknown": true
+ }
+ }
+ },
+ "72295d1a7229": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 1,
+ "args": [
+ {
+ "name": "method",
+ "value": "session.tabs.createTerminal"
+ },
+ {
+ "name": "params",
+ "value": {
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
+ }
+ },
+ {
+ "name": "options",
+ "value": {
+ "$rpc": "absent"
+ }
+ }
+ ],
+ "settlement": {
+ "status": "fulfilled",
+ "startedAt": 0,
+ "settledAt": 0,
+ "value": {
+ "id": "frame-1",
+ "ok": true,
+ "result": {
+ "error": "refused"
+ }
+ }
+ }
+ },
+ "76bc1a917546": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 1,
+ "args": [
+ {
+ "name": "method",
+ "value": "session.tabs.createTerminal"
+ },
+ {
+ "name": "params",
+ "value": {
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
+ }
+ },
+ {
+ "name": "options",
+ "value": {
+ "$rpc": "absent"
+ }
+ }
+ ],
+ "settlement": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "transport failure",
+ "isRpcDeliveryUnknown": true
+ }
+ }
+ },
+ "9270aeb7d9c6": {
+ "status": "pending",
+ "startedAt": 0
+ },
+ "94d38f1838f6": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 2,
+ "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.createTerminal\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"activate\":false,\"select\":true,\"navigation\":\"caller\"}}"
+ },
+ "a4273b38df83": {
+ "launched": "unlaunched"
+ },
+ "a46a4a08b27d": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 1,
+ "args": [
+ {
+ "name": "method",
+ "value": "session.tabs.createTerminal"
+ },
+ {
+ "name": "params",
+ "value": {
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
+ }
+ },
+ {
+ "name": "options",
+ "value": {
+ "$rpc": "absent"
+ }
+ }
+ ],
+ "settlement": {
+ "status": "fulfilled",
+ "startedAt": 0,
+ "settledAt": 0,
+ "value": {
+ "error": {
+ "code": "method_not_found",
+ "message": "Unknown method"
+ },
+ "id": "frame-1",
+ "ok": false
+ }
+ }
+ },
+ "a947768bc0ed": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "transport failure",
+ "isRpcDeliveryUnknown": true
+ }
+ },
+ "ae5875338dfe": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 1,
+ "args": [
+ {
+ "name": "method",
+ "value": "session.tabs.createTerminal"
+ },
+ {
+ "name": "params",
+ "value": {
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
+ }
+ },
+ {
+ "name": "options",
+ "value": {
+ "$rpc": "absent"
+ }
+ }
+ ],
+ "settlement": {
+ "status": "fulfilled",
+ "startedAt": 0,
+ "settledAt": 0,
+ "value": {
+ "error": {
+ "code": "refused",
+ "message": ""
+ },
+ "id": "frame-1",
+ "ok": false
+ }
+ }
+ },
+ "b948e8307e81": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "Unknown method",
+ "isRpcDeliveryUnknown": false
+ }
+ },
+ "c7584e82c72f": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "",
+ "isRpcDeliveryUnknown": true
+ }
+ },
+ "dea9ae4cf53d": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 1,
+ "args": [
+ {
+ "name": "method",
+ "value": "session.tabs.createTerminal"
+ },
+ {
+ "name": "params",
+ "value": {
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
+ }
+ },
+ {
+ "name": "options",
+ "value": {
+ "$rpc": "absent"
+ }
+ }
+ ],
+ "settlement": {
+ "status": "fulfilled",
+ "startedAt": 0,
+ "settledAt": 0,
+ "value": {
+ "error": {
+ "code": "refused",
+ "message": "outer refused"
+ },
+ "id": "frame-1",
+ "ok": false
+ }
+ }
+ },
+ "e3995d24a794": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 1,
+ "args": [
+ {
+ "name": "method",
+ "value": "session.tabs.createTerminal"
+ },
+ {
+ "name": "params",
+ "value": {
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
+ }
+ },
+ {
+ "name": "options",
+ "value": {
+ "$rpc": "absent"
+ }
+ }
+ ],
+ "settlement": {
+ "status": "fulfilled",
+ "startedAt": 0,
+ "settledAt": 0,
+ "value": {
+ "id": "frame-1",
+ "ok": true
+ }
+ }
+ },
+ "eb79a9b3682a": {
+ "status": "fulfilled",
+ "startedAt": 0,
+ "settledAt": 0,
+ "value": {
+ "$rpc": "undefined"
+ }
+ },
+ "f9b284ac2424": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 1,
+ "args": [
+ {
+ "name": "method",
+ "value": "session.tabs.createTerminal"
+ },
+ {
+ "name": "params",
+ "value": {
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
+ }
+ },
+ {
+ "name": "options",
+ "value": {
+ "$rpc": "absent"
+ }
+ }
+ ],
+ "settlement": {
+ "status": "pending",
+ "startedAt": 0
+ }
+ },
+ "fbddf84c2257": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 1,
+ "args": [
+ {
+ "name": "method",
+ "value": "session.tabs.createTerminal"
+ },
+ {
+ "name": "params",
+ "value": {
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
+ }
},
{
"name": "options",
@@ -544,74 +539,23 @@
}
}
},
- "dae756300589": {
- "name": "repo.list#1",
- "ordinal": 1,
- "args": [
- {
- "name": "method",
- "value": "repo.list"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "rejected",
- "startedAt": 0,
- "settledAt": 0,
- "error": {
- "category": "Error",
- "message": "transport failure",
- "isRpcDeliveryUnknown": true
- }
- }
+ "fe1fe746e77a": {
+ "launched": "sent"
},
- "e0eef7c9fafe": {
- "name": "repo.list#1",
+ "fe53d3bce307": {
+ "name": "terminal.send#1",
"ordinal": 3,
- "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
- },
- "e35d7003f64c": {
- "launched": {
- "kind": "not-started",
- "message": "transport failure"
- }
- },
- "eb79a9b3682a": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "$rpc": "undefined"
- }
- },
- "eb8d47f90956": {
- "launched": {
- "kind": "sent"
- }
- },
- "f1d579dd459c": {
- "name": "repo.list#1",
- "ordinal": 1,
"args": [
{
"name": "method",
- "value": "repo.list"
+ "value": "terminal.send"
},
{
"name": "params",
"value": {
- "$rpc": "absent"
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
}
},
{
@@ -626,29 +570,25 @@
"startedAt": 0,
"settledAt": 0,
"value": {
- "error": {
- "code": "refused",
- "message": ""
- },
- "id": "frame-1",
- "ok": false
+ "id": "frame-2",
+ "ok": true,
+ "result": {
+ "send": {
+ "accepted": true
+ }
+ }
}
}
- },
- "f49d184679d1": {
- "name": "preflight.detectAgents#1",
- "ordinal": 6,
- "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectAgents\"}"
}
},
"recording": {
- "scenario": "matrix-session.pr-triage-repo.list-1",
+ "scenario": "matrix-session.pr-triage-session.tabs.createterminal-1",
"checkpoints": [
{
"id": "pr-triage-launch.prelude:pending",
"observation": {
- "sender": ["35f85fe3b71c", "51d4cb56be85"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["f9b284ac2424"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
"launch": "9270aeb7d9c6"
},
@@ -659,132 +599,132 @@
{
"id": "pr-triage-launch.normal:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "02188f091419", "9c16efc31903", "ba3fac1eb199"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1", "28339abecf78"],
+ "sender": ["5093e98ba369", "fe53d3bce307"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
"launch": "eb79a9b3682a"
},
- "state": "eb8d47f90956",
+ "state": "fe1fe746e77a",
"effects": []
}
},
{
"id": "pr-triage-launch.result-absent:launched",
"observation": {
- "sender": ["747c556da67a", "02188f091419"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["e3995d24a794"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "478ad4afe83e"
},
- "state": "01fc75db313f",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.result-null:launched",
"observation": {
- "sender": ["48c68906a98a", "02188f091419"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["3f739faafdd4"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "478ad4afe83e"
},
- "state": "01fc75db313f",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.inner-ok-missing:launched",
"observation": {
- "sender": ["1b23dab83fcf", "02188f091419"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["72295d1a7229"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "478ad4afe83e"
},
- "state": "01fc75db313f",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.inner-false-string-error:launched",
"observation": {
- "sender": ["8a72d3d14d44", "02188f091419"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["5422be2c33b6"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "478ad4afe83e"
},
- "state": "01fc75db313f",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.inner-false-object-error:launched",
"observation": {
- "sender": ["d68475063b62", "02188f091419"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["fbddf84c2257"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "478ad4afe83e"
},
- "state": "01fc75db313f",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.outer-refused:launched",
"observation": {
- "sender": ["624ec4e5082c", "02188f091419"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["dea9ae4cf53d"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "32a7c0ae7918"
},
- "state": "331b3596787f",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.outer-refused-no-message:launched",
"observation": {
- "sender": ["f1d579dd459c", "02188f091419"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["ae5875338dfe"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "30ec57518c05"
},
- "state": "b13ddf18a62e",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.method-not-found:launched",
"observation": {
- "sender": ["12e70439f294", "02188f091419"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["a46a4a08b27d"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "b948e8307e81"
},
- "state": "1963ee2edae9",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.transport-rejection:launched",
"observation": {
- "sender": ["dae756300589", "02188f091419"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["76bc1a917546"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "a947768bc0ed"
},
- "state": "e35d7003f64c",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.transport-rejection-no-message:launched",
"observation": {
- "sender": ["1321b4c8c0b8", "02188f091419"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["6bf6a76b4bf4"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "c7584e82c72f"
},
- "state": "b13ddf18a62e",
+ "state": "a4273b38df83",
"effects": []
}
}
diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-triage-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-triage-settings.get-1.json
index 5cbf3453358..742a1fd1da6 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.pr-triage-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.pr-triage-settings.get-1.json
@@ -3,29 +3,168 @@
"family": "session.pr-triage",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
- "scenarioSha256": "39923c0faa941865cc9aead881fef91ce5db117120033fe73665356a61a2ecc6",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
+ "scenarioSha256": "a288e105a0af6dbbd9657b84f7c4860826184fb7f50dabc6e31b114a70d7ca44",
"platform": "darwin",
"scenarioVersion": 1,
"projectionVersion": 2,
"goldenFormatVersion": 5,
"values": {
- "02188f091419": {
- "name": "settings.get#1",
- "ordinal": 2,
+ "0fddcb81d17c": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
"args": [
{
"name": "method",
- "value": "settings.get"
+ "value": "terminal.send"
},
{
"name": "params",
+ "value": {
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
+ }
+ },
+ {
+ "name": "options",
"value": {
"$rpc": "absent"
}
+ }
+ ],
+ "settlement": {
+ "status": "fulfilled",
+ "startedAt": 0,
+ "settledAt": 0,
+ "value": {
+ "error": {
+ "code": "refused",
+ "message": "outer refused"
+ },
+ "id": "frame-2",
+ "ok": false
+ }
+ }
+ },
+ "1953443d1eef": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "The host sent a reply this app could not read (terminal.send)",
+ "isRpcDeliveryUnknown": false
+ }
+ },
+ "280ce0d6f832": {
+ "name": "terminal.send#1",
+ "ordinal": 4,
+ "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"term-1\",\"text\":\"Fix the failing checks\",\"enter\":true}}"
+ },
+ "32a7c0ae7918": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "outer refused",
+ "isRpcDeliveryUnknown": false
+ }
+ },
+ "5093e98ba369": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 1,
+ "args": [
+ {
+ "name": "method",
+ "value": "session.tabs.createTerminal"
+ },
+ {
+ "name": "params",
+ "value": {
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
+ }
+ },
+ {
+ "name": "options",
+ "value": {
+ "$rpc": "absent"
+ }
+ }
+ ],
+ "settlement": {
+ "status": "fulfilled",
+ "startedAt": 0,
+ "settledAt": 0,
+ "value": {
+ "id": "frame-1",
+ "ok": true,
+ "result": {
+ "tab": {
+ "id": "tab-1",
+ "terminal": "term-1",
+ "title": "Agent",
+ "type": "terminal"
+ }
+ }
+ }
+ }
+ },
+ "5101a111b6fc": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
+ "args": [
+ {
+ "name": "method",
+ "value": "terminal.send"
+ },
+ {
+ "name": "params",
+ "value": {
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
+ }
+ },
+ {
+ "name": "options",
+ "value": {
+ "$rpc": "absent"
+ }
+ }
+ ],
+ "settlement": {
+ "status": "fulfilled",
+ "startedAt": 0,
+ "settledAt": 0,
+ "value": {
+ "id": "frame-2",
+ "ok": true
+ }
+ }
+ },
+ "52f741886b88": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
+ "args": [
+ {
+ "name": "method",
+ "value": "terminal.send"
+ },
+ {
+ "name": "params",
+ "value": {
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
+ }
},
{
"name": "options",
@@ -42,27 +181,139 @@
"id": "frame-2",
"ok": true,
"result": {
- "settings": {
- "defaultTuiAgent": "codex",
- "disabledTuiAgents": []
- }
+ "error": "refused"
}
}
}
},
- "0ba58e9fadf7": {
- "name": "settings.get#1",
- "ordinal": 2,
+ "6ccc8bb71fd9": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
"args": [
{
"name": "method",
- "value": "settings.get"
+ "value": "terminal.send"
},
{
"name": "params",
+ "value": {
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
+ }
+ },
+ {
+ "name": "options",
"value": {
"$rpc": "absent"
}
+ }
+ ],
+ "settlement": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "transport failure",
+ "isRpcDeliveryUnknown": true
+ }
+ }
+ },
+ "75252c821440": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
+ "args": [
+ {
+ "name": "method",
+ "value": "terminal.send"
+ },
+ {
+ "name": "params",
+ "value": {
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
+ }
+ },
+ {
+ "name": "options",
+ "value": {
+ "$rpc": "absent"
+ }
+ }
+ ],
+ "settlement": {
+ "status": "fulfilled",
+ "startedAt": 0,
+ "settledAt": 0,
+ "value": {
+ "id": "frame-2",
+ "ok": true,
+ "result": {
+ "$rpc": "null"
+ }
+ }
+ }
+ },
+ "9270aeb7d9c6": {
+ "status": "pending",
+ "startedAt": 0
+ },
+ "94d38f1838f6": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 2,
+ "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.createTerminal\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"activate\":false,\"select\":true,\"navigation\":\"caller\"}}"
+ },
+ "94fd7b6e1923": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
+ "args": [
+ {
+ "name": "method",
+ "value": "terminal.send"
+ },
+ {
+ "name": "params",
+ "value": {
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
+ }
+ },
+ {
+ "name": "options",
+ "value": {
+ "$rpc": "absent"
+ }
+ }
+ ],
+ "settlement": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "",
+ "isRpcDeliveryUnknown": true
+ }
+ }
+ },
+ "9d6948ff3085": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
+ "args": [
+ {
+ "name": "method",
+ "value": "terminal.send"
+ },
+ {
+ "name": "params",
+ "value": {
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
+ }
},
{
"name": "options",
@@ -85,18 +336,33 @@
}
}
},
- "0ca529648be4": {
- "name": "settings.get#1",
- "ordinal": 2,
+ "a21f478354cc": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "Failed to send prompt",
+ "isRpcDeliveryUnknown": false
+ }
+ },
+ "a4273b38df83": {
+ "launched": "unlaunched"
+ },
+ "a89e0dd4a790": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
"args": [
{
"name": "method",
- "value": "settings.get"
+ "value": "terminal.send"
},
{
"name": "params",
"value": {
- "$rpc": "absent"
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
}
},
{
@@ -107,39 +373,53 @@
}
],
"settlement": {
- "status": "rejected",
+ "status": "fulfilled",
"startedAt": 0,
"settledAt": 0,
- "error": {
- "category": "Error",
- "message": "",
- "isRpcDeliveryUnknown": true
+ "value": {
+ "id": "frame-2",
+ "ok": true,
+ "result": {
+ "error": "inner refused",
+ "ok": false
+ }
}
}
},
- "1963ee2edae9": {
- "launched": {
- "kind": "not-started",
- "message": "Unknown method"
+ "a947768bc0ed": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "transport failure",
+ "isRpcDeliveryUnknown": true
}
},
- "1c2564f1daca": {
- "name": "settings.get#1",
- "ordinal": 4,
- "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
+ "b948e8307e81": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "Unknown method",
+ "isRpcDeliveryUnknown": false
+ }
},
- "1c5359ea3f7d": {
- "name": "settings.get#1",
- "ordinal": 2,
+ "bccc77511918": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
"args": [
{
"name": "method",
- "value": "settings.get"
+ "value": "terminal.send"
},
{
"name": "params",
"value": {
- "$rpc": "absent"
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
}
},
{
@@ -165,29 +445,20 @@
}
}
},
- "28339abecf78": {
- "name": "agent.launchReplay#1",
- "ordinal": 8,
- "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"agent.launchReplay\",\"params\":{\"agent\":\"codex\",\"operationId\":\"1767225600000-00000000000040008000000000000001\",\"target\":{\"kind\":\"existing\",\"worktree\":\"id:repo-9::/w\"},\"prompt\":{\"text\":\"Fix the failing checks\",\"delivery\":\"submit\"},\"launchSource\":\"task_page\"}}"
- },
- "331b3596787f": {
- "launched": {
- "kind": "not-started",
- "message": "outer refused"
- }
- },
- "34f3a5b8bd78": {
- "name": "settings.get#1",
- "ordinal": 2,
+ "bf156998a035": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
"args": [
{
"name": "method",
- "value": "settings.get"
+ "value": "terminal.send"
},
{
"name": "params",
"value": {
- "$rpc": "absent"
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
}
},
{
@@ -211,387 +482,14 @@
}
}
},
- "35f85fe3b71c": {
- "name": "repo.list#1",
- "ordinal": 1,
- "args": [
- {
- "name": "method",
- "value": "repo.list"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "pending",
- "startedAt": 0
- }
- },
- "3e6a0417d2ee": {
- "name": "repo.list#1",
- "ordinal": 1,
- "args": [
- {
- "name": "method",
- "value": "repo.list"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-1",
- "ok": true,
- "result": {
- "repos": [
- {
- "id": "repo-9"
- }
- ]
- }
- }
- }
- },
- "51d4cb56be85": {
- "name": "settings.get#1",
- "ordinal": 2,
- "args": [
- {
- "name": "method",
- "value": "settings.get"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "pending",
- "startedAt": 0
- }
- },
- "566d8202b582": {
- "name": "settings.get#1",
- "ordinal": 2,
- "args": [
- {
- "name": "method",
- "value": "settings.get"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "rejected",
- "startedAt": 0,
- "settledAt": 0,
- "error": {
- "category": "Error",
- "message": "transport failure",
- "isRpcDeliveryUnknown": true
- }
- }
- },
- "69518e60477b": {
- "name": "settings.get#1",
- "ordinal": 2,
- "args": [
- {
- "name": "method",
- "value": "settings.get"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-2",
- "ok": true,
- "result": {
- "$rpc": "null"
- }
- }
- }
- },
- "753cc167886c": {
- "launched": {
- "kind": "not-started",
- "message": "Cannot read properties of null (reading 'settings')"
- }
- },
- "86798e4821d1": {
- "name": "settings.get#1",
- "ordinal": 2,
- "args": [
- {
- "name": "method",
- "value": "settings.get"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-2",
- "ok": true,
- "result": {
- "error": "inner refused",
- "ok": false
- }
- }
- }
- },
- "9270aeb7d9c6": {
- "status": "pending",
- "startedAt": 0
- },
- "98bd3a5fda2b": {
- "name": "settings.get#1",
- "ordinal": 2,
- "args": [
- {
- "name": "method",
- "value": "settings.get"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-2",
- "ok": true
- }
- }
- },
- "9b538e8b95f3": {
- "launched": {
- "kind": "not-started",
- "message": "Cannot read properties of undefined (reading 'settings')"
- }
- },
- "9c16efc31903": {
- "name": "preflight.detectAgents#1",
- "ordinal": 5,
- "args": [
- {
- "name": "method",
- "value": "preflight.detectAgents"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-3",
- "ok": true,
- "result": ["codex"]
- }
- }
- },
- "a4273b38df83": {
- "launched": "unlaunched"
- },
- "b13ddf18a62e": {
- "launched": {
- "kind": "not-started",
- "message": "Could not load the available agents."
- }
- },
- "ba3fac1eb199": {
- "name": "agent.launchReplay#1",
- "ordinal": 7,
- "args": [
- {
- "name": "method",
- "value": "agent.launchReplay"
- },
- {
- "name": "params",
- "value": {
- "agent": "codex",
- "launchSource": "task_page",
- "operationId": "1767225600000-00000000000040008000000000000001",
- "prompt": {
- "delivery": "submit",
- "text": "Fix the failing checks"
- },
- "target": {
- "kind": "existing",
- "worktree": "id:repo-9::/w"
- }
- }
- },
- {
- "name": "options",
- "value": {
- "timeoutMs": 90000
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-4",
- "ok": true,
- "result": {
- "outcome": {
- "handle": "term-1",
- "kind": "terminal"
- },
- "prompt": {
- "delivery": "submit",
- "outcome": "handed-to-terminal"
- },
- "receipt": {
- "detail": "Started a terminal agent, the default for new agent tabs in your settings.",
- "mode": "terminal",
- "preferred": "terminal",
- "reason": "user_default"
- },
- "worktreeId": "repo-9::/w"
- }
- }
- }
- },
- "ceb5fe72c101": {
- "name": "settings.get#1",
- "ordinal": 2,
- "args": [
- {
- "name": "method",
- "value": "settings.get"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "error": {
- "code": "refused",
- "message": "outer refused"
- },
- "id": "frame-2",
- "ok": false
- }
- }
- },
- "e0eef7c9fafe": {
- "name": "repo.list#1",
- "ordinal": 3,
- "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
- },
- "e35d7003f64c": {
- "launched": {
- "kind": "not-started",
- "message": "transport failure"
+ "c7584e82c72f": {
+ "status": "rejected",
+ "startedAt": 0,
+ "settledAt": 0,
+ "error": {
+ "category": "Error",
+ "message": "",
+ "isRpcDeliveryUnknown": true
}
},
"eb79a9b3682a": {
@@ -602,29 +500,53 @@
"$rpc": "undefined"
}
},
- "eb8d47f90956": {
- "launched": {
- "kind": "sent"
- }
- },
- "f49d184679d1": {
- "name": "preflight.detectAgents#1",
- "ordinal": 6,
- "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectAgents\"}"
- },
- "fb9f08890f70": {
- "name": "settings.get#1",
- "ordinal": 2,
+ "f9b284ac2424": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 1,
"args": [
{
"name": "method",
- "value": "settings.get"
+ "value": "session.tabs.createTerminal"
},
{
"name": "params",
+ "value": {
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
+ }
+ },
+ {
+ "name": "options",
"value": {
"$rpc": "absent"
}
+ }
+ ],
+ "settlement": {
+ "status": "pending",
+ "startedAt": 0
+ }
+ },
+ "fe1fe746e77a": {
+ "launched": "sent"
+ },
+ "fe53d3bce307": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
+ "args": [
+ {
+ "name": "method",
+ "value": "terminal.send"
+ },
+ {
+ "name": "params",
+ "value": {
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
+ }
},
{
"name": "options",
@@ -641,20 +563,22 @@
"id": "frame-2",
"ok": true,
"result": {
- "error": "refused"
+ "send": {
+ "accepted": true
+ }
}
}
}
}
},
"recording": {
- "scenario": "matrix-session.pr-triage-settings.get-1",
+ "scenario": "matrix-session.pr-triage-terminal.send-1",
"checkpoints": [
{
"id": "pr-triage-launch.prelude:pending",
"observation": {
- "sender": ["35f85fe3b71c", "51d4cb56be85"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["f9b284ac2424"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
"launch": "9270aeb7d9c6"
},
@@ -665,132 +589,132 @@
{
"id": "pr-triage-launch.normal:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "02188f091419", "9c16efc31903", "ba3fac1eb199"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1", "28339abecf78"],
+ "sender": ["5093e98ba369", "fe53d3bce307"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
"launch": "eb79a9b3682a"
},
- "state": "eb8d47f90956",
+ "state": "fe1fe746e77a",
"effects": []
}
},
{
"id": "pr-triage-launch.result-absent:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "98bd3a5fda2b", "9c16efc31903"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1"],
+ "sender": ["5093e98ba369", "5101a111b6fc"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "1953443d1eef"
},
- "state": "9b538e8b95f3",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.result-null:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "69518e60477b", "9c16efc31903"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1"],
+ "sender": ["5093e98ba369", "75252c821440"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "1953443d1eef"
},
- "state": "753cc167886c",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.inner-ok-missing:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "fb9f08890f70", "9c16efc31903", "ba3fac1eb199"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1", "28339abecf78"],
+ "sender": ["5093e98ba369", "52f741886b88"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
"launch": "eb79a9b3682a"
},
- "state": "eb8d47f90956",
+ "state": "fe1fe746e77a",
"effects": []
}
},
{
"id": "pr-triage-launch.inner-false-string-error:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "86798e4821d1", "9c16efc31903", "ba3fac1eb199"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1", "28339abecf78"],
+ "sender": ["5093e98ba369", "a89e0dd4a790"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
"launch": "eb79a9b3682a"
},
- "state": "eb8d47f90956",
+ "state": "fe1fe746e77a",
"effects": []
}
},
{
"id": "pr-triage-launch.inner-false-object-error:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "1c5359ea3f7d", "9c16efc31903", "ba3fac1eb199"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1", "28339abecf78"],
+ "sender": ["5093e98ba369", "bccc77511918"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
"launch": "eb79a9b3682a"
},
- "state": "eb8d47f90956",
+ "state": "fe1fe746e77a",
"effects": []
}
},
{
"id": "pr-triage-launch.outer-refused:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "ceb5fe72c101", "9c16efc31903"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1"],
+ "sender": ["5093e98ba369", "0fddcb81d17c"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "32a7c0ae7918"
},
- "state": "331b3596787f",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.outer-refused-no-message:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "34f3a5b8bd78", "9c16efc31903"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1"],
+ "sender": ["5093e98ba369", "bf156998a035"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "a21f478354cc"
},
- "state": "b13ddf18a62e",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.method-not-found:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "0ba58e9fadf7", "9c16efc31903"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1"],
+ "sender": ["5093e98ba369", "9d6948ff3085"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "b948e8307e81"
},
- "state": "1963ee2edae9",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.transport-rejection:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "566d8202b582", "9c16efc31903"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1"],
+ "sender": ["5093e98ba369", "6ccc8bb71fd9"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "a947768bc0ed"
},
- "state": "e35d7003f64c",
+ "state": "a4273b38df83",
"effects": []
}
},
{
"id": "pr-triage-launch.transport-rejection-no-message:launched",
"observation": {
- "sender": ["3e6a0417d2ee", "0ca529648be4", "9c16efc31903"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1"],
+ "sender": ["5093e98ba369", "94fd7b6e1923"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
- "launch": "eb79a9b3682a"
+ "launch": "c7584e82c72f"
},
- "state": "b13ddf18a62e",
+ "state": "a4273b38df83",
"effects": []
}
}
diff --git a/mobile/rpc-foundation/goldens/matrix-session.review-branch-diff-git.branchdiff-1.json b/mobile/rpc-foundation/goldens/matrix-session.review-branch-diff-git.branchdiff-1.json
index e4f6a23b552..c527ee5d6df 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.review-branch-diff-git.branchdiff-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.review-branch-diff-git.branchdiff-1.json
@@ -3,7 +3,7 @@
"family": "session.review-branch-diff",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-1.json b/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-1.json
index 17ce0964263..85ff63d1380 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-1.json
@@ -3,7 +3,7 @@
"family": "session.review-file-diff",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-2.json b/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-2.json
index f648c2e8ac1..478e6a02d9f 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-2.json
@@ -3,7 +3,7 @@
"family": "session.review-file-diff",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-3.json b/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-3.json
index a0f762185fd..517dc85458e 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-3.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.review-file-diff-git.diff-3.json
@@ -3,7 +3,7 @@
"family": "session.review-file-diff",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.discard-1.json b/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.discard-1.json
index 99d66d2defe..333dd05532f 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.discard-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.discard-1.json
@@ -3,10 +3,10 @@
"family": "session.review-git-mutations",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "651cb070a4b4ba7deddeb37c08886094b83f006e7cbe2bef65d5433ce0430dff",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.stage-1.json b/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.stage-1.json
index 58802f4f895..99b29c02050 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.stage-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.stage-1.json
@@ -3,10 +3,10 @@
"family": "session.review-git-mutations",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "e0ce643010302d304ba3611bd43932c6cdd0fa9290a3ecd4fffb4fc92c758b77",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.stage-2.json b/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.stage-2.json
index 62e043af47f..155da273f95 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.stage-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.review-git-mutations-git.stage-2.json
@@ -3,10 +3,10 @@
"family": "session.review-git-mutations",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "c6b3b4be6b55daf53ee1f5ff755e73a032c4da5379f90f4973736c032eb79414",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-session.review-send-sheet-session.tabs.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.review-send-sheet-session.tabs.list-1.json
index 362dffdc76c..814dc73c721 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.review-send-sheet-session.tabs.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.review-send-sheet-session.tabs.list-1.json
@@ -3,10 +3,10 @@
"family": "session.review-send-sheet",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "a71815661dee6129a1b133c398b37ea89a9e4939b45626dada16889acabb2afe",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-session.startup-worktree.activate-1.json b/mobile/rpc-foundation/goldens/matrix-session.startup-worktree.activate-1.json
index ac352e0089b..0b7469973d7 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.startup-worktree.activate-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.startup-worktree.activate-1.json
@@ -3,7 +3,7 @@
"family": "session.startup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "6b08c394e37fd572cf63a4c11934247d379008f11117aa5af33b2926fbd32d1e",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.startup-worktree.activate-2.json b/mobile/rpc-foundation/goldens/matrix-session.startup-worktree.activate-2.json
index 9f541d66106..a16c896c67c 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.startup-worktree.activate-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.startup-worktree.activate-2.json
@@ -3,7 +3,7 @@
"family": "session.startup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "6b08c394e37fd572cf63a4c11934247d379008f11117aa5af33b2926fbd32d1e",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-activation-session.tabs.activate-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-activation-session.tabs.activate-1.json
index 31b9ff28473..d204255a15c 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.tab-activation-session.tabs.activate-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.tab-activation-session.tabs.activate-1.json
@@ -3,7 +3,7 @@
"family": "session.tab-activation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4a1e81ab3229c8fd10b3ad435568efec11a944e0f02a183f94e4b1f44a7e5de0",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-activation-terminal.focus-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-activation-terminal.focus-1.json
index 5c8e41f20d1..cb428c4052e 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.tab-activation-terminal.focus-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.tab-activation-terminal.focus-1.json
@@ -3,7 +3,7 @@
"family": "session.tab-activation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4a1e81ab3229c8fd10b3ad435568efec11a944e0f02a183f94e4b1f44a7e5de0",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-close-session-session.tabs.close-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-close-session-session.tabs.close-1.json
index 238f591fc1e..df02aacec85 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.tab-close-session-session.tabs.close-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.tab-close-session-session.tabs.close-1.json
@@ -3,7 +3,7 @@
"family": "session.tab-close-session",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-close-terminal.close-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-close-terminal.close-1.json
index 6f4190fa1eb..e597a6f9f16 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.tab-close-terminal.close-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.tab-close-terminal.close-1.json
@@ -3,7 +3,7 @@
"family": "session.tab-close",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-documents-markdown.readtab-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-documents-markdown.readtab-1.json
index 307f75b8d3a..b9ac10cf846 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.tab-documents-markdown.readtab-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.tab-documents-markdown.readtab-1.json
@@ -3,7 +3,7 @@
"family": "session.tab-documents",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-rename-terminal.rename-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-rename-terminal.rename-1.json
index cb1bd418c6b..c40cd3ce1d7 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.tab-rename-terminal.rename-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.tab-rename-terminal.rename-1.json
@@ -3,7 +3,7 @@
"family": "session.tab-rename",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json
index 6898ce2ba4c..61a4f4d6888 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json
@@ -3,7 +3,7 @@
"family": "session.tab-reveal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json
index 698195c1313..7df475361a6 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json
@@ -3,7 +3,7 @@
"family": "session.tab-reveal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.tabs-stream-health-session.tabs.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.tabs-stream-health-session.tabs.list-1.json
index 47933d9f7e1..a5ecdf8b11f 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.tabs-stream-health-session.tabs.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.tabs-stream-health-session.tabs.list-1.json
@@ -3,7 +3,7 @@
"family": "session.tabs-stream-health",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4a1e81ab3229c8fd10b3ad435568efec11a944e0f02a183f94e4b1f44a7e5de0",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.terminal-display-mode-terminal.setdisplaymode-1.json b/mobile/rpc-foundation/goldens/matrix-session.terminal-display-mode-terminal.setdisplaymode-1.json
index 65f81e78736..b3ded358b09 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.terminal-display-mode-terminal.setdisplaymode-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.terminal-display-mode-terminal.setdisplaymode-1.json
@@ -3,7 +3,7 @@
"family": "session.terminal-display-mode",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "9e90ad39a8d4257adf30166757a6364c4710dc3ae9f06365f80a3dd8f1c94d89",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-orchestration.workerterminaluserinput-1.json b/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-orchestration.workerterminaluserinput-1.json
index 1f26dfaf440..4bfb3cabab2 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-orchestration.workerterminaluserinput-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-orchestration.workerterminaluserinput-1.json
@@ -3,7 +3,7 @@
"family": "session.terminal-gesture-input",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "9d119d5ec320e2538105d6ff673b9f4b8e3decbe46527947489dffbcf2ac0472",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-terminal.clearbuffer-1.json b/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-terminal.clearbuffer-1.json
index d090f7a994c..ecd75782f2a 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-terminal.clearbuffer-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-terminal.clearbuffer-1.json
@@ -3,7 +3,7 @@
"family": "session.terminal-gesture-input",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "9d119d5ec320e2538105d6ff673b9f4b8e3decbe46527947489dffbcf2ac0472",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-terminal.send-1.json b/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-terminal.send-1.json
index 0a2ea1d1c65..4b946df5abc 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-terminal.send-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.terminal-gesture-input-terminal.send-1.json
@@ -3,7 +3,7 @@
"family": "session.terminal-gesture-input",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "9d119d5ec320e2538105d6ff673b9f4b8e3decbe46527947489dffbcf2ac0472",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.terminal-input-send-orchestration.workerterminaluserinput-1.json b/mobile/rpc-foundation/goldens/matrix-session.terminal-input-send-orchestration.workerterminaluserinput-1.json
index a7aed3938b9..e1ab54e2c80 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.terminal-input-send-orchestration.workerterminaluserinput-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.terminal-input-send-orchestration.workerterminaluserinput-1.json
@@ -3,7 +3,7 @@
"family": "session.terminal-input-send",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.terminal-input-send-terminal.send-1.json b/mobile/rpc-foundation/goldens/matrix-session.terminal-input-send-terminal.send-1.json
index d518ebf76f0..4914564da47 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.terminal-input-send-terminal.send-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.terminal-input-send-terminal.send-1.json
@@ -3,7 +3,7 @@
"family": "session.terminal-input-send",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.terminal-inventory-terminal.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.terminal-inventory-terminal.list-1.json
index 8c9ed94cb48..66c429b0b5a 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.terminal-inventory-terminal.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.terminal-inventory-terminal.list-1.json
@@ -3,7 +3,7 @@
"family": "session.terminal-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-orchestration.workerterminaluserinput-1.json b/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-orchestration.workerterminaluserinput-1.json
index a5d75ef79ab..3a3a461aa6c 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-orchestration.workerterminaluserinput-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-orchestration.workerterminaluserinput-1.json
@@ -3,7 +3,7 @@
"family": "session.terminal-paste",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-settings.get-1.json
index f2b0fa4b3d8..5fe5ca6205d 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "session.terminal-paste",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-terminal.send-1.json b/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-terminal.send-1.json
index 6842783bd23..e00618c2588 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-terminal.send-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.terminal-paste-terminal.send-1.json
@@ -3,7 +3,7 @@
"family": "session.terminal-paste",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.worktree-connection-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.worktree-connection-repo.list-1.json
index 363833f0be0..f55a57ea30f 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.worktree-connection-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.worktree-connection-repo.list-1.json
@@ -3,7 +3,7 @@
"family": "session.worktree-connection",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/matrix-session.worktree-connection-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-session.worktree-connection-settings.get-1.json
index 417da52d13a..b609575e82b 100644
--- a/mobile/rpc-foundation/goldens/matrix-session.worktree-connection-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-session.worktree-connection-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "session.worktree-connection",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json
index a56826b607f..e2c2a2758fe 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json
@@ -3,7 +3,7 @@
"family": "settings-agent-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json
index 846bc2a00db..9b07de54686 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json
@@ -3,7 +3,7 @@
"family": "settings-agent-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json
index ed6e0d81da2..928a5696fe5 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "settings-agent-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json b/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json
index b8112c2126d..c2338edc944 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json
@@ -3,7 +3,7 @@
"family": "settings-best-effort",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d3b7f33d810e1fa420ac41a628cde9fe4a9e65fd57f89fbca0a40fc7d74951ab",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json
index adc0b94117b..8787f9554dd 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.bot-overrides",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json
index 11b00b6159d..242f9a062fa 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json
@@ -3,7 +3,7 @@
"family": "settings.home-providers",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json
index fa4a466256d..962c677e961 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json
@@ -3,7 +3,7 @@
"family": "settings.home-providers",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json
index 7ce3c6163f4..9ff81d7ad4c 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.home-providers",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-preflight.detectagents-1.json b/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-preflight.detectagents-1.json
index 6d0260c6a4a..8dc8f21eee7 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-preflight.detectagents-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-preflight.detectagents-1.json
@@ -3,7 +3,7 @@
"family": "settings.new-tab-local-agents",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-repo.list-1.json
index 5068cb41eb5..726c2e195b6 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-repo.list-1.json
@@ -3,7 +3,7 @@
"family": "settings.new-tab-local-agents",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-settings.get-1.json
index cf389057990..a07fee8e62b 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.new-tab-local-agents-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.new-tab-local-agents",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.quick-commands-settings.getterminalquickcommands-1.json b/mobile/rpc-foundation/goldens/matrix-settings.quick-commands-settings.getterminalquickcommands-1.json
index 7e86d0a0835..ee6f101dc92 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.quick-commands-settings.getterminalquickcommands-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.quick-commands-settings.getterminalquickcommands-1.json
@@ -3,7 +3,7 @@
"family": "settings.quick-commands",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "42334358b5e5966001639653b553f15033f6e201d785107871fe056536f0a5e2",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.quick-commands-settings.updateterminalquickcommands-1.json b/mobile/rpc-foundation/goldens/matrix-settings.quick-commands-settings.updateterminalquickcommands-1.json
index f591651d45c..79cfe065443 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.quick-commands-settings.updateterminalquickcommands-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.quick-commands-settings.updateterminalquickcommands-1.json
@@ -3,7 +3,7 @@
"family": "settings.quick-commands",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "42334358b5e5966001639653b553f15033f6e201d785107871fe056536f0a5e2",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json
index 0ec91202989..bad9a30e3fc 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json
index 63b043e41ee..4d7b5884e1d 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json
index 6c93c170028..f536a3066a8 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json
index 24632aa10c5..89a64b9a3f3 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json
index aba4286e43e..a8a4078b3cf 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json
@@ -3,7 +3,7 @@
"family": "settings.resume-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json
index dd5fab82ab3..58c72c88352 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json
@@ -3,7 +3,7 @@
"family": "settings.resume-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json
index 6a0854e0f9b..845f1980325 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json
@@ -3,7 +3,7 @@
"family": "settings.resume-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json
index 58c7f7ef066..f1add389a64 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.resume-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json
index 16a444e9bce..9ac803e5454 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json
@@ -3,7 +3,7 @@
"family": "settings.resume-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json
index 9a48d52024d..59f98f66562 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json
@@ -3,7 +3,7 @@
"family": "settings.task-hydration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json
index 7f1f0d9f26c..65ff795fd27 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json
@@ -3,7 +3,7 @@
"family": "settings.task-hydration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json
index f7112f138cf..addcac90742 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.task-hydration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json
index 38451c82c99..1acf99da567 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.task-hydration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json
index b1efd15f22e..fd1bc8d0aac 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.task-hydration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-settings.get-1.json
index 85f16c0d459..9eeab114d69 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.task-workspace-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-worktree.create-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-worktree.create-1.json
index da224d51e67..7b47f7e06cb 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-worktree.create-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-worktree.create-1.json
@@ -3,7 +3,7 @@
"family": "settings.task-workspace-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json
index 1973602a21d..abbe895d7b5 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.task-workspace",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json
index 64f7e03c033..61fab66b2eb 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-context",
"namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json
index c73d8785983..b73f7398e80 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-context",
"namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json
index e018d705320..a958e3713eb 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-context",
"namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json
index ce1ae3a9283..878f43bf3b2 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-context",
"namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json
index 481d68b75ac..a876a198ba6 100644
--- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-submit",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/matrix-speech.dictation-chunk-speech.dictation.chunk-1.json b/mobile/rpc-foundation/goldens/matrix-speech.dictation-chunk-speech.dictation.chunk-1.json
index 64082d8ffbd..72181fa566b 100644
--- a/mobile/rpc-foundation/goldens/matrix-speech.dictation-chunk-speech.dictation.chunk-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-speech.dictation-chunk-speech.dictation.chunk-1.json
@@ -3,7 +3,7 @@
"family": "speech.dictation-chunk",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/matrix-speech.dictation-session-speech.dictation.finish-1.json b/mobile/rpc-foundation/goldens/matrix-speech.dictation-session-speech.dictation.finish-1.json
index 5c32eb03d8d..3471fb8e012 100644
--- a/mobile/rpc-foundation/goldens/matrix-speech.dictation-session-speech.dictation.finish-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-speech.dictation-session-speech.dictation.finish-1.json
@@ -3,7 +3,7 @@
"family": "speech.dictation-session",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/matrix-speech.dictation-session-speech.dictation.start-1.json b/mobile/rpc-foundation/goldens/matrix-speech.dictation-session-speech.dictation.start-1.json
index 00ebea7c3b1..c72dcfe532f 100644
--- a/mobile/rpc-foundation/goldens/matrix-speech.dictation-session-speech.dictation.start-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-speech.dictation-session-speech.dictation.start-1.json
@@ -3,7 +3,7 @@
"family": "speech.dictation-session",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/matrix-speech.dictation-start-speech.dictation.cancel-1.json b/mobile/rpc-foundation/goldens/matrix-speech.dictation-start-speech.dictation.cancel-1.json
index 27712174dd2..b8d799efd24 100644
--- a/mobile/rpc-foundation/goldens/matrix-speech.dictation-start-speech.dictation.cancel-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-speech.dictation-start-speech.dictation.cancel-1.json
@@ -3,7 +3,7 @@
"family": "speech.dictation-start",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/matrix-speech.dictation-start-speech.dictation.start-1.json b/mobile/rpc-foundation/goldens/matrix-speech.dictation-start-speech.dictation.start-1.json
index d920e80d3b5..f33b22916ac 100644
--- a/mobile/rpc-foundation/goldens/matrix-speech.dictation-start-speech.dictation.start-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-speech.dictation-start-speech.dictation.start-1.json
@@ -3,7 +3,7 @@
"family": "speech.dictation-start",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.dictation.setup-1.json b/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.dictation.setup-1.json
index 927bdb4fd56..0a0c8289994 100644
--- a/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.dictation.setup-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.dictation.setup-1.json
@@ -3,7 +3,7 @@
"family": "speech.setup-sheet",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.delete-1.json b/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.delete-1.json
index 7f6e7e124b5..86ba9fcd470 100644
--- a/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.delete-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.delete-1.json
@@ -3,7 +3,7 @@
"family": "speech.setup-sheet",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.download-1.json b/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.download-1.json
index 8a099921810..3409286301b 100644
--- a/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.download-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.download-1.json
@@ -3,7 +3,7 @@
"family": "speech.setup-sheet",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.list-1.json b/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.list-1.json
index 70fcb78ffe1..c53ad0dc95b 100644
--- a/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-speech.setup-sheet-speech.models.list-1.json
@@ -3,7 +3,7 @@
"family": "speech.setup-sheet",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.addprreviewcomment-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.addprreviewcomment-1.json
index ecb6b8a0217..b67b7af9961 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.addprreviewcomment-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.addprreviewcomment-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-checks-files",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8c4218bfb2af227da5386f29989cec438f2c6187f39ce1c06859e136ea920bfa",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.prfilecontents-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.prfilecontents-1.json
index 6981cc729cc..21054a03d14 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.prfilecontents-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.prfilecontents-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-checks-files",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8c4218bfb2af227da5386f29989cec438f2c6187f39ce1c06859e136ea920bfa",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.rerunprchecks-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.rerunprchecks-1.json
index f3757724a17..320e22d281e 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.rerunprchecks-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.rerunprchecks-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-checks-files",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8c4218bfb2af227da5386f29989cec438f2c6187f39ce1c06859e136ea920bfa",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.resolvereviewthread-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.resolvereviewthread-1.json
index d2b6622eea7..8e6b46a0e8d 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.resolvereviewthread-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.resolvereviewthread-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-checks-files",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8c4218bfb2af227da5386f29989cec438f2c6187f39ce1c06859e136ea920bfa",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.setprfileviewed-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.setprfileviewed-1.json
index cd3ced4e052..b03c44c060a 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.setprfileviewed-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-checks-files-github.setprfileviewed-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-checks-files",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8c4218bfb2af227da5386f29989cec438f2c6187f39ce1c06859e136ea920bfa",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-github-github.addissuecomment-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-github-github.addissuecomment-1.json
index 5068f94d501..95155ad4167 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-github-github.addissuecomment-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-github-github.addissuecomment-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-comment-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-gitlab-gitlab.addissuecomment-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-gitlab-gitlab.addissuecomment-1.json
index e4b2a8af519..031fe3d00f9 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-gitlab-gitlab.addissuecomment-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-gitlab-gitlab.addissuecomment-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-comment-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-gitlab-mr-gitlab.addmrcomment-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-gitlab-mr-gitlab.addmrcomment-1.json
index e08e020433e..d11a120012f 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-gitlab-mr-gitlab.addmrcomment-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-comment-gitlab-mr-gitlab.addmrcomment-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-comment-gitlab-mr",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-github-github.workitemdetails-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-github-github.workitemdetails-1.json
index d33949bad5b..dfde030a09c 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-github-github.workitemdetails-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-github-github.workitemdetails-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c0ef16b959002e4a3c5347114a0844b95670e274ef010d910b6671ac5f49e783",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-gitlab-gitlab.workitemdetails-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-gitlab-gitlab.workitemdetails-1.json
index 18bc7dec6b2..7d0b9706063 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-gitlab-gitlab.workitemdetails-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-gitlab-gitlab.workitemdetails-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c0ef16b959002e4a3c5347114a0844b95670e274ef010d910b6671ac5f49e783",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-linear-linear.getissue-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-linear-linear.getissue-1.json
index f393641fdf1..443860d4591 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-linear-linear.getissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-linear-linear.getissue-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-linear",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c0ef16b959002e4a3c5347114a0844b95670e274ef010d910b6671ac5f49e783",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-linear-linear.issuecomments-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-linear-linear.issuecomments-1.json
index 685d0b1208b..eca351d61b2 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-linear-linear.issuecomments-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-linear-linear.issuecomments-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-linear",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c0ef16b959002e4a3c5347114a0844b95670e274ef010d910b6671ac5f49e783",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-metadata-github.listassignableusers-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-metadata-github.listassignableusers-1.json
index 360c081f1d0..ad93b3ea025 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-metadata-github.listassignableusers-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-metadata-github.listassignableusers-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "58ea1553e04017c993aea4753aace41ee664705a3fdb3b18569c5a9d7968cf06",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-metadata-github.listlabels-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-metadata-github.listlabels-1.json
index 86f9ee8f4d4..96bc25cec25 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-metadata-github.listlabels-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-detail-metadata-github.listlabels-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "58ea1553e04017c993aea4753aace41ee664705a3fdb3b18569c5a9d7968cf06",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-merge-gitlab-gitlab.mergemr-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-merge-gitlab-gitlab.mergemr-1.json
index 6df54d4a26e..cbb4de4f6bc 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-merge-gitlab-gitlab.mergemr-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-merge-gitlab-gitlab.mergemr-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-merge-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-github-github.updatepr-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-github-github.updatepr-1.json
index 6db47baeb4f..9bcdd680869 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-github-github.updatepr-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-github-github.updatepr-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-metadata-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "97cfbcd82778ed6517ca2d10b2f3ad5a8d366e380d7846c1e89d5a5baf17e739",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-gitlab-gitlab.updateissue-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-gitlab-gitlab.updateissue-1.json
index 5d2f9fa5977..077b75b17d5 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-gitlab-gitlab.updateissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-gitlab-gitlab.updateissue-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-metadata-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "97cfbcd82778ed6517ca2d10b2f3ad5a8d366e380d7846c1e89d5a5baf17e739",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-gitlab-mr-gitlab.updatemr-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-gitlab-mr-gitlab.updatemr-1.json
index de0ed86bfe1..0b807b5ed22 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-gitlab-mr-gitlab.updatemr-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-metadata-gitlab-mr-gitlab.updatemr-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-metadata-gitlab-mr",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "97cfbcd82778ed6517ca2d10b2f3ad5a8d366e380d7846c1e89d5a5baf17e739",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.addissuecomment-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.addissuecomment-1.json
index b04d9107a74..9a9603a2811 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.addissuecomment-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.addissuecomment-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-reply-merge",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.addprreviewcommentreply-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.addprreviewcommentreply-1.json
index d11db1de026..a474ac6a30b 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.addprreviewcommentreply-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.addprreviewcommentreply-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-reply-merge",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.mergepr-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.mergepr-1.json
index f7e12d8f92a..b3dda42772f 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.mergepr-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-github.mergepr-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-reply-merge",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-linear.updateissue-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-linear.updateissue-1.json
index c8b92aa5cf7..405d54c6c10 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-linear.updateissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-reply-merge-linear.updateissue-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-reply-merge",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.prchecks-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.prchecks-1.json
index 3e31f170e52..8e6247874d2 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.prchecks-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.prchecks-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-review-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.requestprreviewers-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.requestprreviewers-1.json
index a84037b6519..ded345480f9 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.requestprreviewers-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.requestprreviewers-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-review-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-github.updateissue-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-github.updateissue-1.json
index 69ef1966d01..c087e542b0f 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-github.updateissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-github.updateissue-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-status-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8c4218bfb2af227da5386f29989cec438f2c6187f39ce1c06859e136ea920bfa",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-gitlab.updateissue-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-gitlab.updateissue-1.json
index fff2dbe5fcd..281a3242759 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-gitlab.updateissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-gitlab.updateissue-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-status-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8c4218bfb2af227da5386f29989cec438f2c6187f39ce1c06859e136ea920bfa",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-mr-gitlab.updatemrstate-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-mr-gitlab.updatemrstate-1.json
index 5c8b86d6d88..5e7e0f49501 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-mr-gitlab.updatemrstate-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-status-gitlab-mr-gitlab.updatemrstate-1.json
@@ -3,7 +3,7 @@
"family": "tasks.item-status-gitlab-mr",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8c4218bfb2af227da5386f29989cec438f2c6187f39ce1c06859e136ea920bfa",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.linear-connect-linear.connect-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.linear-connect-linear.connect-1.json
index 432094b9878..c593debdb83 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.linear-connect-linear.connect-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.linear-connect-linear.connect-1.json
@@ -3,7 +3,7 @@
"family": "tasks.linear-connect",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.addissuecomment-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.addissuecomment-1.json
index 759080673cc..7007ebff918 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.addissuecomment-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.addissuecomment-1.json
@@ -3,7 +3,7 @@
"family": "tasks.linear-item",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "97cfbcd82778ed6517ca2d10b2f3ad5a8d366e380d7846c1e89d5a5baf17e739",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.createissue-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.createissue-1.json
index 882389dd42b..1aba541766f 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.createissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.createissue-1.json
@@ -3,7 +3,7 @@
"family": "tasks.linear-item",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "97cfbcd82778ed6517ca2d10b2f3ad5a8d366e380d7846c1e89d5a5baf17e739",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.getissue-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.getissue-1.json
index f2b2c120fe1..0d1d7b376ca 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.getissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.linear-item-linear.getissue-1.json
@@ -3,7 +3,7 @@
"family": "tasks.linear-item",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "97cfbcd82778ed6517ca2d10b2f3ad5a8d366e380d7846c1e89d5a5baf17e739",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.linear-team-context-linear.listteams-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.linear-team-context-linear.listteams-1.json
index 00bb488aee1..d6fa613a3d9 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.linear-team-context-linear.listteams-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.linear-team-context-linear.listteams-1.json
@@ -3,7 +3,7 @@
"family": "tasks.linear-team-context",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "58ea1553e04017c993aea4753aace41ee664705a3fdb3b18569c5a9d7968cf06",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.linear-team-context-linear.teamstates-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.linear-team-context-linear.teamstates-1.json
index 639952affde..b0424264674 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.linear-team-context-linear.teamstates-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.linear-team-context-linear.teamstates-1.json
@@ -3,7 +3,7 @@
"family": "tasks.linear-team-context",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "58ea1553e04017c993aea4753aace41ee664705a3fdb3b18569c5a9d7968cf06",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.reposlug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.reposlug-1.json
index 6c456ce2641..13d5fb72afa 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.reposlug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.reposlug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.paste-lookup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitem-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitem-1.json
index 276f85ba3bf..8ca021156ec 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitem-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitem-1.json
@@ -3,7 +3,7 @@
"family": "tasks.paste-lookup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitembyownerrepo-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitembyownerrepo-1.json
index 94b6cb74a94..2d182d0a0d9 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitembyownerrepo-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitembyownerrepo-1.json
@@ -3,7 +3,7 @@
"family": "tasks.paste-lookup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-gitlab.workitembypath-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-gitlab.workitembypath-1.json
index 2ad048b2de6..a06701de86e 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-gitlab.workitembypath-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-gitlab.workitembypath-1.json
@@ -3,7 +3,7 @@
"family": "tasks.paste-lookup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listaccessible-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listaccessible-1.json
index 8f3912559e3..0fbdd02524a 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listaccessible-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listaccessible-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-board-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c4272385ed3b0de4feab38de9e4f6363ecd6317fdd4de47f76a98eb18abaf371",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listviews-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listviews-1.json
index 9d1d1ef11e9..ff472ef2594 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listviews-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listviews-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-board-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c4272385ed3b0de4feab38de9e4f6363ecd6317fdd4de47f76a98eb18abaf371",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listviews-2.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listviews-2.json
index 1ec97ad0c09..1e07891bcd8 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listviews-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.listviews-2.json
@@ -3,7 +3,7 @@
"family": "tasks.project-board-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c4272385ed3b0de4feab38de9e4f6363ecd6317fdd4de47f76a98eb18abaf371",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.resolveref-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.resolveref-1.json
index dddd1447932..ccd800b3001 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.resolveref-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.resolveref-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-board-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c4272385ed3b0de4feab38de9e4f6363ecd6317fdd4de47f76a98eb18abaf371",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.viewtable-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.viewtable-1.json
index 52ff8d41ee0..e3a2bb53251 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.viewtable-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-board-load-github.project.viewtable-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-board-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c4272385ed3b0de4feab38de9e4f6363ecd6317fdd4de47f76a98eb18abaf371",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-repo-slugs-github.reposlug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-repo-slugs-github.reposlug-1.json
index 79eaf54c9be..9a2392eb024 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-repo-slugs-github.reposlug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-repo-slugs-github.reposlug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-repo-slugs",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c4272385ed3b0de4feab38de9e4f6363ecd6317fdd4de47f76a98eb18abaf371",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.addissuecommentbyslug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.addissuecommentbyslug-1.json
index 78aebc2e07b..9e4ad592386 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.addissuecommentbyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.addissuecommentbyslug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-comments-issue",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55058202df36c8b951510215936e496ea88d3d71a6690090a13c52deb13e34e1",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.updateissuebyslug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.updateissuebyslug-1.json
index 8dc0fc72f71..f26251dd627 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.updateissuebyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.updateissuebyslug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-comments-issue",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55058202df36c8b951510215936e496ea88d3d71a6690090a13c52deb13e34e1",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.updateissuecommentbyslug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.updateissuecommentbyslug-1.json
index a83a325f561..77f447daa8d 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.updateissuecommentbyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-issue-github.project.updateissuecommentbyslug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-comments-issue",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55058202df36c8b951510215936e496ea88d3d71a6690090a13c52deb13e34e1",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-pr-github.project.updatepullrequestbyslug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-pr-github.project.updatepullrequestbyslug-1.json
index fc5202acfc0..8d8ecf09a95 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-pr-github.project.updatepullrequestbyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-comments-pr-github.project.updatepullrequestbyslug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-comments-pr",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55058202df36c8b951510215936e496ea88d3d71a6690090a13c52deb13e34e1",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-detail-github.project.workitemdetailsbyslug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-detail-github.project.workitemdetailsbyslug-1.json
index 6004de1431e..e210a9781f1 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-detail-github.project.workitemdetailsbyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-detail-github.project.workitemdetailsbyslug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-detail",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "f8f6e5d500f959b9b15c5498885a05422747880b6aef4ad795bc3064ebbacea6",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.clearitemfield-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.clearitemfield-1.json
index f9bf237b54d..ee80800548e 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.clearitemfield-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.clearitemfield-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-fields",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "370aeaee59978071ccb821da13c9e6114936c168947b608539cdb80d40cc9889",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.updateissuetypebyslug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.updateissuetypebyslug-1.json
index f7cab7ece3d..29a69fc4ecd 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.updateissuetypebyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.updateissuetypebyslug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-fields",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "370aeaee59978071ccb821da13c9e6114936c168947b608539cdb80d40cc9889",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.updateitemfield-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.updateitemfield-1.json
index 734fe9900d1..396a5ef5a7a 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.updateitemfield-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-fields-github.project.updateitemfield-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-fields",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "370aeaee59978071ccb821da13c9e6114936c168947b608539cdb80d40cc9889",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.addprreviewcomment-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.addprreviewcomment-1.json
index 1052d81db8a..348fa5d00ba 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.addprreviewcomment-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.addprreviewcomment-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-files-merge",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b228732762828412ad3d9eec3ece00a897d866046e37044322c3911758d6e0a9",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.mergepr-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.mergepr-1.json
index 5fbd3d2773b..d43f59244e4 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.mergepr-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.mergepr-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-files-merge",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b228732762828412ad3d9eec3ece00a897d866046e37044322c3911758d6e0a9",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.prfilecontents-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.prfilecontents-1.json
index 82fa4792393..e7e09e99bff 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.prfilecontents-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.prfilecontents-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-files-merge",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b228732762828412ad3d9eec3ece00a897d866046e37044322c3911758d6e0a9",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.updateissue-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.updateissue-1.json
index 88745a3f068..01e655d36ea 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.updateissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.updateissue-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-files-merge",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b228732762828412ad3d9eec3ece00a897d866046e37044322c3911758d6e0a9",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.updateprstate-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.updateprstate-1.json
index 42cddb38225..cf97438c945 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.updateprstate-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-files-merge-github.updateprstate-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-files-merge",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b228732762828412ad3d9eec3ece00a897d866046e37044322c3911758d6e0a9",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listassignableusersbyslug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listassignableusersbyslug-1.json
index 7de55aa8eb1..94f6d229695 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listassignableusersbyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listassignableusersbyslug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-metadata-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "f8f6e5d500f959b9b15c5498885a05422747880b6aef4ad795bc3064ebbacea6",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listissuetypesbyslug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listissuetypesbyslug-1.json
index 740b0a028a9..dd49f3079ea 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listissuetypesbyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listissuetypesbyslug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-metadata-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "f8f6e5d500f959b9b15c5498885a05422747880b6aef4ad795bc3064ebbacea6",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listlabelsbyslug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listlabelsbyslug-1.json
index 7ea4f779249..7d1fcbc4ae3 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listlabelsbyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-metadata-load-github.project.listlabelsbyslug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-metadata-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "f8f6e5d500f959b9b15c5498885a05422747880b6aef4ad795bc3064ebbacea6",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.prchecks-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.prchecks-1.json
index 88022cb7ead..840421c8cf0 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.prchecks-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.prchecks-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-review-checks",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "370aeaee59978071ccb821da13c9e6114936c168947b608539cdb80d40cc9889",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.requestprreviewers-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.requestprreviewers-1.json
index 3cfb68aab93..7a4bc5ee2f8 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.requestprreviewers-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.requestprreviewers-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-review-checks",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "370aeaee59978071ccb821da13c9e6114936c168947b608539cdb80d40cc9889",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.rerunprchecks-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.rerunprchecks-1.json
index 1927ca2dc07..4f65f491d23 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.rerunprchecks-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.rerunprchecks-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-review-checks",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "370aeaee59978071ccb821da13c9e6114936c168947b608539cdb80d40cc9889",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.setprfileviewed-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.setprfileviewed-1.json
index 3b83d1635ca..d8ea88595a7 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.setprfileviewed-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-review-checks-github.setprfileviewed-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-review-checks",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "370aeaee59978071ccb821da13c9e6114936c168947b608539cdb80d40cc9889",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.addissuecomment-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.addissuecomment-1.json
index e9b4a7a6054..6fa2add9b38 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.addissuecomment-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.addissuecomment-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-threads",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55058202df36c8b951510215936e496ea88d3d71a6690090a13c52deb13e34e1",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.addprreviewcommentreply-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.addprreviewcommentreply-1.json
index 041bca0aa3d..7cdf2f5e692 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.addprreviewcommentreply-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.addprreviewcommentreply-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-threads",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55058202df36c8b951510215936e496ea88d3d71a6690090a13c52deb13e34e1",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.project.deleteissuecommentbyslug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.project.deleteissuecommentbyslug-1.json
index 66a12eb6585..5f1530f5584 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.project.deleteissuecommentbyslug-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.project.deleteissuecommentbyslug-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-threads",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55058202df36c8b951510215936e496ea88d3d71a6690090a13c52deb13e34e1",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.resolvereviewthread-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.resolvereviewthread-1.json
index c7bc57030c9..fe59a15359a 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.resolvereviewthread-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.project-row-threads-github.resolvereviewthread-1.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-threads",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55058202df36c8b951510215936e496ea88d3d71a6690090a13c52deb13e34e1",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-github.countworkitems-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-github.countworkitems-1.json
index 58a2822af4d..1ba3862369c 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-github.countworkitems-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-github.countworkitems-1.json
@@ -3,7 +3,7 @@
"family": "tasks.provider-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-github.listworkitems-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-github.listworkitems-1.json
index ca2b7ec18b1..57ed5a30f4b 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-github.listworkitems-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-github.listworkitems-1.json
@@ -3,7 +3,7 @@
"family": "tasks.provider-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-linear.listteams-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-linear.listteams-1.json
index f50104347bf..7b3c99dd7d5 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-linear.listteams-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-linear.listteams-1.json
@@ -3,7 +3,7 @@
"family": "tasks.provider-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-linear.status-1.json
index c9f1e7726bf..34dde76dcc5 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-linear.status-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-linear.status-1.json
@@ -3,7 +3,7 @@
"family": "tasks.provider-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-settings.update-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-settings.update-1.json
index 77c11ef1955..193eb179481 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-settings.update-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.provider-load-settings.update-1.json
@@ -3,7 +3,7 @@
"family": "tasks.provider-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.route-repo-list-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.route-repo-list-repo.list-1.json
index 1fc5966ae3d..37c8aa87aad 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.route-repo-list-repo.list-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.route-repo-list-repo.list-1.json
@@ -3,7 +3,7 @@
"family": "tasks.route-repo-list",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "23f974df8b57c723069605de1db80c339ead286b18aae38e67fce03ea50c5180",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-github.listworkitems-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-github.listworkitems-1.json
index 8aa334ab5ed..1b3d8a1fb84 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-github.listworkitems-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-github.listworkitems-1.json
@@ -3,7 +3,7 @@
"family": "tasks.smart-source-search",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-gitlab.listworkitems-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-gitlab.listworkitems-1.json
index f63f836e1f0..9d4c9c75b92 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-gitlab.listworkitems-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-gitlab.listworkitems-1.json
@@ -3,7 +3,7 @@
"family": "tasks.smart-source-search",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.listissues-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.listissues-1.json
index e2e7c66f06c..de1e8ec39ec 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.listissues-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.listissues-1.json
@@ -3,7 +3,7 @@
"family": "tasks.smart-source-search",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.searchissues-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.searchissues-1.json
index 8a34fe85071..f8e8159ffa7 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.searchissues-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.searchissues-1.json
@@ -3,7 +3,7 @@
"family": "tasks.smart-source-search",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-repo.searchrefs-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-repo.searchrefs-1.json
index 659d6e610b4..2f560b10ebb 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-repo.searchrefs-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-repo.searchrefs-1.json
@@ -3,7 +3,7 @@
"family": "tasks.smart-source-search",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.task-create-github-github.createissue-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.task-create-github-github.createissue-1.json
index a82c92af99a..fca4fce1197 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.task-create-github-github.createissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.task-create-github-github.createissue-1.json
@@ -3,7 +3,7 @@
"family": "tasks.task-create-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.task-create-github-repo.update-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.task-create-github-repo.update-1.json
index 28b95c786f3..fa23c0c10fb 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.task-create-github-repo.update-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.task-create-github-repo.update-1.json
@@ -3,7 +3,7 @@
"family": "tasks.task-create-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.task-create-gitlab-gitlab.createissue-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.task-create-gitlab-gitlab.createissue-1.json
index fdafa9a4c21..91964a45c8a 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.task-create-gitlab-gitlab.createissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.task-create-gitlab-gitlab.createissue-1.json
@@ -3,7 +3,7 @@
"family": "tasks.task-create-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.task-create-linear-linear.createissue-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.task-create-linear-linear.createissue-1.json
index 082c0b9088a..098d6ee570f 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.task-create-linear-linear.createissue-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.task-create-linear-linear.createissue-1.json
@@ -3,7 +3,7 @@
"family": "tasks.task-create-linear",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.task-list-gitlab-items-gitlab.listworkitems-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.task-list-gitlab-items-gitlab.listworkitems-1.json
index 7a509ecb368..ac71243b86c 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.task-list-gitlab-items-gitlab.listworkitems-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.task-list-gitlab-items-gitlab.listworkitems-1.json
@@ -3,7 +3,7 @@
"family": "tasks.task-list-gitlab-items",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.task-list-gitlab-todos-gitlab.todos-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.task-list-gitlab-todos-gitlab.todos-1.json
index 111a130a787..02a4a520525 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.task-list-gitlab-todos-gitlab.todos-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.task-list-gitlab-todos-gitlab.todos-1.json
@@ -3,7 +3,7 @@
"family": "tasks.task-list-gitlab-todos",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.task-list-linear-linear.listissues-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.task-list-linear-linear.listissues-1.json
index 82d115bd57c..39c5056378b 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.task-list-linear-linear.listissues-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.task-list-linear-linear.listissues-1.json
@@ -3,7 +3,7 @@
"family": "tasks.task-list-linear",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.task-list-linear-linear.searchissues-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.task-list-linear-linear.searchissues-1.json
index 094182f3dc3..07b47c3b875 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.task-list-linear-linear.searchissues-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.task-list-linear-linear.searchissues-1.json
@@ -3,7 +3,7 @@
"family": "tasks.task-list-linear",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.searchrefs-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.searchrefs-1.json
index 5d428512d71..f5568be4258 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.searchrefs-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.searchrefs-1.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-source",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.sparsepresets-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.sparsepresets-1.json
index e3ac9fd6051..164dbc2c385 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.sparsepresets-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.sparsepresets-1.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-source",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-repo.savesparsepreset-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-repo.savesparsepreset-1.json
index 2bcd37b0287..0e4bb302087 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-repo.savesparsepreset-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-repo.savesparsepreset-1.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-sparse",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-ssh.getstate-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-ssh.getstate-1.json
index 63f204d49b0..4626bfa69e4 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-ssh.getstate-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-ssh.getstate-1.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-sparse",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-local-preflight.detectagents-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-local-preflight.detectagents-1.json
index e17de8fdd73..bbd02ec0d5c 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-local-preflight.detectagents-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-local-preflight.detectagents-1.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-ssh-local",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-preflight.detectremoteagents-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-preflight.detectremoteagents-1.json
index 236a4072137..83cb2175e33 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-preflight.detectremoteagents-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-preflight.detectremoteagents-1.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-ssh",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-repo.hooks-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-repo.hooks-1.json
index c277e9fc7d9..328d3a78b15 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-repo.hooks-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-repo.hooks-1.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-ssh",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-ssh.connect-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-ssh.connect-1.json
index 219a1ee1420..bc40f5401eb 100644
--- a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-ssh.connect-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-ssh.connect-1.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-ssh",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/matrix-terminal.query-reply-terminal.send-1.json b/mobile/rpc-foundation/goldens/matrix-terminal.query-reply-terminal.send-1.json
index 9b4173f44fd..c821da19b59 100644
--- a/mobile/rpc-foundation/goldens/matrix-terminal.query-reply-terminal.send-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-terminal.query-reply-terminal.send-1.json
@@ -3,10 +3,10 @@
"family": "terminal.query-reply",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "15b5694a63d54aeb4f4d9a861729e7e3b42ce06b15af6784fcb1afab744ed18b",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-terminal.raw-input-orchestration.workerterminaluserinput-1.json b/mobile/rpc-foundation/goldens/matrix-terminal.raw-input-orchestration.workerterminaluserinput-1.json
index 9d5eaf9a301..30d583e8a30 100644
--- a/mobile/rpc-foundation/goldens/matrix-terminal.raw-input-orchestration.workerterminaluserinput-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-terminal.raw-input-orchestration.workerterminaluserinput-1.json
@@ -3,10 +3,10 @@
"family": "terminal.raw-input",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "68c039f74da08523d67d8d5b0a178c1d12507ec88d25891cd1377cd3fb40205c",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-terminal.raw-input-terminal.send-1.json b/mobile/rpc-foundation/goldens/matrix-terminal.raw-input-terminal.send-1.json
index 85214afde8c..5204b12e3a8 100644
--- a/mobile/rpc-foundation/goldens/matrix-terminal.raw-input-terminal.send-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-terminal.raw-input-terminal.send-1.json
@@ -3,10 +3,10 @@
"family": "terminal.raw-input",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "19d55a77e9c2f64f062070c9985f756e0ba72f3ccc3c884a80843fe888f42a47",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-terminal.takeover-report-orchestration.workerterminaluserinput-1.json b/mobile/rpc-foundation/goldens/matrix-terminal.takeover-report-orchestration.workerterminaluserinput-1.json
index 1184de9497c..f505e5796bf 100644
--- a/mobile/rpc-foundation/goldens/matrix-terminal.takeover-report-orchestration.workerterminaluserinput-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-terminal.takeover-report-orchestration.workerterminaluserinput-1.json
@@ -3,10 +3,10 @@
"family": "terminal.takeover-report",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "6913de3f553b47a7e6663e21b0b93e97df26405c210db876f0b9593bd38936be",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-terminal.takeover-report-orchestration.workerterminaluserinput-2.json b/mobile/rpc-foundation/goldens/matrix-terminal.takeover-report-orchestration.workerterminaluserinput-2.json
index 6dc587eba94..b9c439efcb8 100644
--- a/mobile/rpc-foundation/goldens/matrix-terminal.takeover-report-orchestration.workerterminaluserinput-2.json
+++ b/mobile/rpc-foundation/goldens/matrix-terminal.takeover-report-orchestration.workerterminaluserinput-2.json
@@ -3,10 +3,10 @@
"family": "terminal.takeover-report",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "da13ec556c0f672371a8cd2aabd4dcc68001c0f9aa47015dfa4b5937355c4c2c",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-terminal.viewport-refit-terminal.updateviewport-1.json b/mobile/rpc-foundation/goldens/matrix-terminal.viewport-refit-terminal.updateviewport-1.json
index 2df5f72aef4..2a108be84ca 100644
--- a/mobile/rpc-foundation/goldens/matrix-terminal.viewport-refit-terminal.updateviewport-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-terminal.viewport-refit-terminal.updateviewport-1.json
@@ -3,10 +3,10 @@
"family": "terminal.viewport-refit",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "bde05ca916393d7f5ccd48686cf13a52fb2dfa599ea874b084c58bd59adb7e7f",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/matrix-transport.capability-probe-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-transport.capability-probe-status.get-1.json
index 62f2b1af669..6db96292ba9 100644
--- a/mobile/rpc-foundation/goldens/matrix-transport.capability-probe-status.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-transport.capability-probe-status.get-1.json
@@ -3,7 +3,7 @@
"family": "transport.capability-probe",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/matrix-transport.host-status-gates-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-transport.host-status-gates-status.get-1.json
index c4c0131d991..c8b59e0185e 100644
--- a/mobile/rpc-foundation/goldens/matrix-transport.host-status-gates-status.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-transport.host-status-gates-status.get-1.json
@@ -3,7 +3,7 @@
"family": "transport.host-status-gates",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/matrix-transport.pairing-race-direct-status.json b/mobile/rpc-foundation/goldens/matrix-transport.pairing-race-direct-status.json
index fe6a6126dbd..79cb47a8caa 100644
--- a/mobile/rpc-foundation/goldens/matrix-transport.pairing-race-direct-status.json
+++ b/mobile/rpc-foundation/goldens/matrix-transport.pairing-race-direct-status.json
@@ -3,7 +3,7 @@
"family": "transport.pairing-race",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/matrix-transport.pairing-race-relay-status.json b/mobile/rpc-foundation/goldens/matrix-transport.pairing-race-relay-status.json
index 36bb3f8ea29..8f82062e017 100644
--- a/mobile/rpc-foundation/goldens/matrix-transport.pairing-race-relay-status.json
+++ b/mobile/rpc-foundation/goldens/matrix-transport.pairing-race-relay-status.json
@@ -3,7 +3,7 @@
"family": "transport.pairing-race",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.agent-launch-create-agent.launch-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.agent-launch-create-agent.launch-1.json
index f84a5424232..eefc85fe1a2 100644
--- a/mobile/rpc-foundation/goldens/matrix-worktree.agent-launch-create-agent.launch-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-worktree.agent-launch-create-agent.launch-1.json
@@ -3,11 +3,11 @@
"family": "worktree.agent-launch-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
- "scenarioSha256": "b3d017cee84fc133ab0b0a8d588750f8af907d4688e6c2900a307de25fab8473",
+ "scenarioSha256": "887b5d16b4bee027edf5e2f1122a79a34b223f6926322a99f6e3de83f40bf6ee",
"platform": "darwin",
"scenarioVersion": 1,
"projectionVersion": 2,
diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.catalog-snapshot-worktree.ps-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.catalog-snapshot-worktree.ps-1.json
index 1d6226a7814..ae509cdf525 100644
--- a/mobile/rpc-foundation/goldens/matrix-worktree.catalog-snapshot-worktree.ps-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-worktree.catalog-snapshot-worktree.ps-1.json
@@ -3,7 +3,7 @@
"family": "worktree.catalog-snapshot",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e942ddfbaa0ba6bfc2993969276987f6528ac53765d125e99a830e261f93a8e",
diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.create-retry-worktree.create-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.create-retry-worktree.create-1.json
index 014af279bb3..ffe4a7ef2a8 100644
--- a/mobile/rpc-foundation/goldens/matrix-worktree.create-retry-worktree.create-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-worktree.create-retry-worktree.create-1.json
@@ -3,7 +3,7 @@
"family": "worktree.create-retry",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.home-catalog-worktree.ps-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.home-catalog-worktree.ps-1.json
index e437713a891..61a36e1b326 100644
--- a/mobile/rpc-foundation/goldens/matrix-worktree.home-catalog-worktree.ps-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-worktree.home-catalog-worktree.ps-1.json
@@ -3,7 +3,7 @@
"family": "worktree.home-catalog",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e942ddfbaa0ba6bfc2993969276987f6528ac53765d125e99a830e261f93a8e",
diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolvemrbase-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolvemrbase-1.json
index 021d98847be..23a6359dd93 100644
--- a/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolvemrbase-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolvemrbase-1.json
@@ -3,7 +3,7 @@
"family": "worktree.hosted-base",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolveprbase-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolveprbase-1.json
index d038aaf1b3c..4bbc628922c 100644
--- a/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolveprbase-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolveprbase-1.json
@@ -3,7 +3,7 @@
"family": "worktree.hosted-base",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.retired-names-worktree.listretirednames-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.retired-names-worktree.listretirednames-1.json
index 9f23f542901..1ea68b39078 100644
--- a/mobile/rpc-foundation/goldens/matrix-worktree.retired-names-worktree.listretirednames-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-worktree.retired-names-worktree.listretirednames-1.json
@@ -3,7 +3,7 @@
"family": "worktree.retired-names",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e942ddfbaa0ba6bfc2993969276987f6528ac53765d125e99a830e261f93a8e",
diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json
index 145703a0e5a..a388f5c0775 100644
--- a/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json
@@ -3,7 +3,7 @@
"family": "worktree.review-link",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.runtime-capabilities-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.runtime-capabilities-status.get-1.json
index 9589c64b1ba..d26247dff58 100644
--- a/mobile/rpc-foundation/goldens/matrix-worktree.runtime-capabilities-status.get-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-worktree.runtime-capabilities-status.get-1.json
@@ -3,7 +3,7 @@
"family": "worktree.runtime-capabilities",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.setup-hook-trust-ui.set-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.setup-hook-trust-ui.set-1.json
index c9b20fab63c..2596e969072 100644
--- a/mobile/rpc-foundation/goldens/matrix-worktree.setup-hook-trust-ui.set-1.json
+++ b/mobile/rpc-foundation/goldens/matrix-worktree.setup-hook-trust-ui.set-1.json
@@ -3,7 +3,7 @@
"family": "worktree.setup-hook-trust",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/mobile-web-bundle-build-changed.json b/mobile/rpc-foundation/goldens/mobile-web-bundle-build-changed.json
index 1f55833f9f4..04df881a60a 100644
--- a/mobile/rpc-foundation/goldens/mobile-web-bundle-build-changed.json
+++ b/mobile/rpc-foundation/goldens/mobile-web-bundle-build-changed.json
@@ -3,7 +3,7 @@
"family": "mobileWeb.bundle-fetch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "af339fef2c684d5709c6d3f279e5f0d9c33d17b6d4e5c89e501963400901b564",
diff --git a/mobile/rpc-foundation/goldens/mobile-web-bundle-fetch-paged.json b/mobile/rpc-foundation/goldens/mobile-web-bundle-fetch-paged.json
index 69cfbab2baf..d194ccbaf4d 100644
--- a/mobile/rpc-foundation/goldens/mobile-web-bundle-fetch-paged.json
+++ b/mobile/rpc-foundation/goldens/mobile-web-bundle-fetch-paged.json
@@ -3,7 +3,7 @@
"family": "mobileWeb.bundle-fetch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "af339fef2c684d5709c6d3f279e5f0d9c33d17b6d4e5c89e501963400901b564",
diff --git a/mobile/rpc-foundation/goldens/mobile-web-bundle-manifest-read.json b/mobile/rpc-foundation/goldens/mobile-web-bundle-manifest-read.json
index da335beff11..71c57191f47 100644
--- a/mobile/rpc-foundation/goldens/mobile-web-bundle-manifest-read.json
+++ b/mobile/rpc-foundation/goldens/mobile-web-bundle-manifest-read.json
@@ -3,7 +3,7 @@
"family": "mobileWeb.bundle-manifest",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "af339fef2c684d5709c6d3f279e5f0d9c33d17b6d4e5c89e501963400901b564",
diff --git a/mobile/rpc-foundation/goldens/mobile-web-bundle-unavailable.json b/mobile/rpc-foundation/goldens/mobile-web-bundle-unavailable.json
index 17a8f57e712..9467539ba39 100644
--- a/mobile/rpc-foundation/goldens/mobile-web-bundle-unavailable.json
+++ b/mobile/rpc-foundation/goldens/mobile-web-bundle-unavailable.json
@@ -3,7 +3,7 @@
"family": "mobileWeb.bundle-fetch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "af339fef2c684d5709c6d3f279e5f0d9c33d17b6d4e5c89e501963400901b564",
diff --git a/mobile/rpc-foundation/goldens/native-chat-image-paste-single.json b/mobile/rpc-foundation/goldens/native-chat-image-paste-single.json
index b1df0cb105d..c600880dba7 100644
--- a/mobile/rpc-foundation/goldens/native-chat-image-paste-single.json
+++ b/mobile/rpc-foundation/goldens/native-chat-image-paste-single.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-paste",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/native-chat-image-paste-stops-on-rejection.json b/mobile/rpc-foundation/goldens/native-chat-image-paste-stops-on-rejection.json
index 116955aa7ca..77c453270f5 100644
--- a/mobile/rpc-foundation/goldens/native-chat-image-paste-stops-on-rejection.json
+++ b/mobile/rpc-foundation/goldens/native-chat-image-paste-stops-on-rejection.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-paste",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/native-chat-image-paste-trailing-image.json b/mobile/rpc-foundation/goldens/native-chat-image-paste-trailing-image.json
index 08a6fd86045..e2e1c2d81f9 100644
--- a/mobile/rpc-foundation/goldens/native-chat-image-paste-trailing-image.json
+++ b/mobile/rpc-foundation/goldens/native-chat-image-paste-trailing-image.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-paste",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/native-chat-image-paste-two-images.json b/mobile/rpc-foundation/goldens/native-chat-image-paste-two-images.json
index 1661d13214a..fa156646e3e 100644
--- a/mobile/rpc-foundation/goldens/native-chat-image-paste-two-images.json
+++ b/mobile/rpc-foundation/goldens/native-chat-image-paste-two-images.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-paste",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/native-chat-image-upload-cancelled.json b/mobile/rpc-foundation/goldens/native-chat-image-upload-cancelled.json
index f075807a1ff..2603c1af994 100644
--- a/mobile/rpc-foundation/goldens/native-chat-image-upload-cancelled.json
+++ b/mobile/rpc-foundation/goldens/native-chat-image-upload-cancelled.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/native-chat-image-upload-second-fails.json b/mobile/rpc-foundation/goldens/native-chat-image-upload-second-fails.json
index 5b923b6bdf6..d3022a44345 100644
--- a/mobile/rpc-foundation/goldens/native-chat-image-upload-second-fails.json
+++ b/mobile/rpc-foundation/goldens/native-chat-image-upload-second-fails.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/native-chat-image-upload-single.json b/mobile/rpc-foundation/goldens/native-chat-image-upload-single.json
index aa6ec6be75e..6efedc9f7f9 100644
--- a/mobile/rpc-foundation/goldens/native-chat-image-upload-single.json
+++ b/mobile/rpc-foundation/goldens/native-chat-image-upload-single.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/native-chat-image-upload-start-refused.json b/mobile/rpc-foundation/goldens/native-chat-image-upload-start-refused.json
index 8028f115eac..eec517f79f4 100644
--- a/mobile/rpc-foundation/goldens/native-chat-image-upload-start-refused.json
+++ b/mobile/rpc-foundation/goldens/native-chat-image-upload-start-refused.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/native-chat-image-upload-two.json b/mobile/rpc-foundation/goldens/native-chat-image-upload-two.json
index c2c743a6dbc..ee8acc72bf0 100644
--- a/mobile/rpc-foundation/goldens/native-chat-image-upload-two.json
+++ b/mobile/rpc-foundation/goldens/native-chat-image-upload-two.json
@@ -3,7 +3,7 @@
"family": "nativeChat.image-upload",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "16779b663f4faec8cbccdb42efd7b568a2912845b161f8a4827754687eb4235c",
diff --git a/mobile/rpc-foundation/goldens/native-chat-page-earlier.json b/mobile/rpc-foundation/goldens/native-chat-page-earlier.json
index 21bf3c07991..4622a00d452 100644
--- a/mobile/rpc-foundation/goldens/native-chat-page-earlier.json
+++ b/mobile/rpc-foundation/goldens/native-chat-page-earlier.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-page",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "60ce67f66134d6385aa7fb47f2135436a7b3ce0221e3b2514bea65e06dba5518",
diff --git a/mobile/rpc-foundation/goldens/native-chat-readability-local-repo.json b/mobile/rpc-foundation/goldens/native-chat-readability-local-repo.json
index 3bcfc1e6b3a..5d7e2a8b35e 100644
--- a/mobile/rpc-foundation/goldens/native-chat-readability-local-repo.json
+++ b/mobile/rpc-foundation/goldens/native-chat-readability-local-repo.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-readability",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/native-chat-readability-refused.json b/mobile/rpc-foundation/goldens/native-chat-readability-refused.json
index 9837bcd0670..c95d2e51fda 100644
--- a/mobile/rpc-foundation/goldens/native-chat-readability-refused.json
+++ b/mobile/rpc-foundation/goldens/native-chat-readability-refused.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-readability",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/native-chat-readability-remote-repo.json b/mobile/rpc-foundation/goldens/native-chat-readability-remote-repo.json
index 9d124e6b324..9082a47d732 100644
--- a/mobile/rpc-foundation/goldens/native-chat-readability-remote-repo.json
+++ b/mobile/rpc-foundation/goldens/native-chat-readability-remote-repo.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-readability",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-empty.json b/mobile/rpc-foundation/goldens/native-chat-session-option-pick-empty.json
index 82236b78669..2485293b4a1 100644
--- a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-empty.json
+++ b/mobile/rpc-foundation/goldens/native-chat-session-option-pick-empty.json
@@ -3,7 +3,7 @@
"family": "nativeChat.session-option-pick",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b98a3ca3818678b88cf629bc4635300a103637126a136f025a1600dc16f08008",
diff --git a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-refused.json b/mobile/rpc-foundation/goldens/native-chat-session-option-pick-refused.json
index 35e1cff0ca2..5aa52c6bd24 100644
--- a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-refused.json
+++ b/mobile/rpc-foundation/goldens/native-chat-session-option-pick-refused.json
@@ -3,7 +3,7 @@
"family": "nativeChat.session-option-pick",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b98a3ca3818678b88cf629bc4635300a103637126a136f025a1600dc16f08008",
diff --git a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-written.json b/mobile/rpc-foundation/goldens/native-chat-session-option-pick-written.json
index c07575ddaf3..cebae58375e 100644
--- a/mobile/rpc-foundation/goldens/native-chat-session-option-pick-written.json
+++ b/mobile/rpc-foundation/goldens/native-chat-session-option-pick-written.json
@@ -3,7 +3,7 @@
"family": "nativeChat.session-option-pick",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b98a3ca3818678b88cf629bc4635300a103637126a136f025a1600dc16f08008",
diff --git a/mobile/rpc-foundation/goldens/native-chat-stop-accepted.json b/mobile/rpc-foundation/goldens/native-chat-stop-accepted.json
index d6494cbeee5..aaadf20e074 100644
--- a/mobile/rpc-foundation/goldens/native-chat-stop-accepted.json
+++ b/mobile/rpc-foundation/goldens/native-chat-stop-accepted.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-stop",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/native-chat-stop-both-rejected.json b/mobile/rpc-foundation/goldens/native-chat-stop-both-rejected.json
index fdc48871739..dfed38ee14f 100644
--- a/mobile/rpc-foundation/goldens/native-chat-stop-both-rejected.json
+++ b/mobile/rpc-foundation/goldens/native-chat-stop-both-rejected.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-stop",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/native-chat-stop-delivery-unknown.json b/mobile/rpc-foundation/goldens/native-chat-stop-delivery-unknown.json
index cf2ce77ae0a..2c966e243ce 100644
--- a/mobile/rpc-foundation/goldens/native-chat-stop-delivery-unknown.json
+++ b/mobile/rpc-foundation/goldens/native-chat-stop-delivery-unknown.json
@@ -3,7 +3,7 @@
"family": "session.native-chat-stop",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/native-chat-write-accepted.json b/mobile/rpc-foundation/goldens/native-chat-write-accepted.json
index d49ef50d80d..8e934e9492b 100644
--- a/mobile/rpc-foundation/goldens/native-chat-write-accepted.json
+++ b/mobile/rpc-foundation/goldens/native-chat-write-accepted.json
@@ -3,7 +3,7 @@
"family": "nativeChat.terminal-write",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b98a3ca3818678b88cf629bc4635300a103637126a136f025a1600dc16f08008",
diff --git a/mobile/rpc-foundation/goldens/native-chat-write-clear-line.json b/mobile/rpc-foundation/goldens/native-chat-write-clear-line.json
index 19c7df9d454..55168585b18 100644
--- a/mobile/rpc-foundation/goldens/native-chat-write-clear-line.json
+++ b/mobile/rpc-foundation/goldens/native-chat-write-clear-line.json
@@ -3,7 +3,7 @@
"family": "nativeChat.terminal-write",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b98a3ca3818678b88cf629bc4635300a103637126a136f025a1600dc16f08008",
diff --git a/mobile/rpc-foundation/goldens/native-chat-write-delivery-unknown.json b/mobile/rpc-foundation/goldens/native-chat-write-delivery-unknown.json
index 7b07572022d..5544bb4877b 100644
--- a/mobile/rpc-foundation/goldens/native-chat-write-delivery-unknown.json
+++ b/mobile/rpc-foundation/goldens/native-chat-write-delivery-unknown.json
@@ -3,7 +3,7 @@
"family": "nativeChat.terminal-write",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b98a3ca3818678b88cf629bc4635300a103637126a136f025a1600dc16f08008",
diff --git a/mobile/rpc-foundation/goldens/native-chat-write-rejected.json b/mobile/rpc-foundation/goldens/native-chat-write-rejected.json
index 19b84ac122b..90d3789a371 100644
--- a/mobile/rpc-foundation/goldens/native-chat-write-rejected.json
+++ b/mobile/rpc-foundation/goldens/native-chat-write-rejected.json
@@ -3,7 +3,7 @@
"family": "nativeChat.terminal-write",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b98a3ca3818678b88cf629bc4635300a103637126a136f025a1600dc16f08008",
diff --git a/mobile/rpc-foundation/goldens/native-chat-write-typed-command.json b/mobile/rpc-foundation/goldens/native-chat-write-typed-command.json
index b0706a82713..5d9bcbd1c1d 100644
--- a/mobile/rpc-foundation/goldens/native-chat-write-typed-command.json
+++ b/mobile/rpc-foundation/goldens/native-chat-write-typed-command.json
@@ -3,7 +3,7 @@
"family": "nativeChat.terminal-write",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b98a3ca3818678b88cf629bc4635300a103637126a136f025a1600dc16f08008",
diff --git a/mobile/rpc-foundation/goldens/new-tab-local-agents.json b/mobile/rpc-foundation/goldens/new-tab-local-agents.json
index d21c1b30223..27e7b91e5ca 100644
--- a/mobile/rpc-foundation/goldens/new-tab-local-agents.json
+++ b/mobile/rpc-foundation/goldens/new-tab-local-agents.json
@@ -3,7 +3,7 @@
"family": "settings.new-tab-local-agents",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/new-workspace-repositories-fulfilled.json b/mobile/rpc-foundation/goldens/new-workspace-repositories-fulfilled.json
index 08a038d5e02..d77510ab2b1 100644
--- a/mobile/rpc-foundation/goldens/new-workspace-repositories-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/new-workspace-repositories-fulfilled.json
@@ -3,7 +3,7 @@
"family": "components.new-workspace-repositories",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "64c1772f0f95a3c43fbb14398a8804b2b4784f7f18874e4fd79767ae634c7faa",
diff --git a/mobile/rpc-foundation/goldens/notifications-desktop-stream-closed.json b/mobile/rpc-foundation/goldens/notifications-desktop-stream-closed.json
index 2e25b68d67b..893a8ccbc6f 100644
--- a/mobile/rpc-foundation/goldens/notifications-desktop-stream-closed.json
+++ b/mobile/rpc-foundation/goldens/notifications-desktop-stream-closed.json
@@ -3,7 +3,7 @@
"family": "notifications.desktop-stream",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "eacf859143588ae6bee2804975d642b6c1088d57ae77ffe298620250d9a9f0e4",
diff --git a/mobile/rpc-foundation/goldens/notifications-desktop-stream-replayed.json b/mobile/rpc-foundation/goldens/notifications-desktop-stream-replayed.json
index ce0c297a5d6..3adabb6ea40 100644
--- a/mobile/rpc-foundation/goldens/notifications-desktop-stream-replayed.json
+++ b/mobile/rpc-foundation/goldens/notifications-desktop-stream-replayed.json
@@ -3,7 +3,7 @@
"family": "notifications.desktop-stream",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "eacf859143588ae6bee2804975d642b6c1088d57ae77ffe298620250d9a9f0e4",
diff --git a/mobile/rpc-foundation/goldens/notifications-desktop-stream.json b/mobile/rpc-foundation/goldens/notifications-desktop-stream.json
index 97a8a7df36b..2095440edb6 100644
--- a/mobile/rpc-foundation/goldens/notifications-desktop-stream.json
+++ b/mobile/rpc-foundation/goldens/notifications-desktop-stream.json
@@ -3,7 +3,7 @@
"family": "notifications.desktop-stream",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "eacf859143588ae6bee2804975d642b6c1088d57ae77ffe298620250d9a9f0e4",
diff --git a/mobile/rpc-foundation/goldens/notifications-display-test-accepted.json b/mobile/rpc-foundation/goldens/notifications-display-test-accepted.json
index e329c7c5dba..40d0e5a55b6 100644
--- a/mobile/rpc-foundation/goldens/notifications-display-test-accepted.json
+++ b/mobile/rpc-foundation/goldens/notifications-display-test-accepted.json
@@ -3,7 +3,7 @@
"family": "notifications.display-test-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "f55275c268e49679b37d72ce6cbe71186ce02c77fe3fd53f0f21e796502d62e8",
diff --git a/mobile/rpc-foundation/goldens/notifications-display-test-not-registered.json b/mobile/rpc-foundation/goldens/notifications-display-test-not-registered.json
index d82fd8859a8..623c63fc50a 100644
--- a/mobile/rpc-foundation/goldens/notifications-display-test-not-registered.json
+++ b/mobile/rpc-foundation/goldens/notifications-display-test-not-registered.json
@@ -3,7 +3,7 @@
"family": "notifications.display-test-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "f55275c268e49679b37d72ce6cbe71186ce02c77fe3fd53f0f21e796502d62e8",
diff --git a/mobile/rpc-foundation/goldens/notifications-display-test-rate-limited.json b/mobile/rpc-foundation/goldens/notifications-display-test-rate-limited.json
index bfce5308101..fe0f81c73c9 100644
--- a/mobile/rpc-foundation/goldens/notifications-display-test-rate-limited.json
+++ b/mobile/rpc-foundation/goldens/notifications-display-test-rate-limited.json
@@ -3,7 +3,7 @@
"family": "notifications.display-test-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "f55275c268e49679b37d72ce6cbe71186ce02c77fe3fd53f0f21e796502d62e8",
diff --git a/mobile/rpc-foundation/goldens/notifications-display-test-unknown-reason.json b/mobile/rpc-foundation/goldens/notifications-display-test-unknown-reason.json
index b22b00dc7c6..1efb5baabdc 100644
--- a/mobile/rpc-foundation/goldens/notifications-display-test-unknown-reason.json
+++ b/mobile/rpc-foundation/goldens/notifications-display-test-unknown-reason.json
@@ -3,7 +3,7 @@
"family": "notifications.display-test-screen",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "f55275c268e49679b37d72ce6cbe71186ce02c77fe3fd53f0f21e796502d62e8",
diff --git a/mobile/rpc-foundation/goldens/notifications-push-gateway-rejected.json b/mobile/rpc-foundation/goldens/notifications-push-gateway-rejected.json
index e8fb49db6c9..8ff714c172e 100644
--- a/mobile/rpc-foundation/goldens/notifications-push-gateway-rejected.json
+++ b/mobile/rpc-foundation/goldens/notifications-push-gateway-rejected.json
@@ -3,7 +3,7 @@
"family": "notifications.push-registration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2e3d939dc162dbc5a38d8a7207111688204a825fd70348721917b3016e1c9470",
diff --git a/mobile/rpc-foundation/goldens/notifications-push-registered.json b/mobile/rpc-foundation/goldens/notifications-push-registered.json
index 22ffafe7395..e355038f68e 100644
--- a/mobile/rpc-foundation/goldens/notifications-push-registered.json
+++ b/mobile/rpc-foundation/goldens/notifications-push-registered.json
@@ -3,7 +3,7 @@
"family": "notifications.push-registration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "2e3d939dc162dbc5a38d8a7207111688204a825fd70348721917b3016e1c9470",
diff --git a/mobile/rpc-foundation/goldens/pairing-pre-profile-direct-wins-and-provisions.json b/mobile/rpc-foundation/goldens/pairing-pre-profile-direct-wins-and-provisions.json
index fc644cc8e0b..d2fa56dad74 100644
--- a/mobile/rpc-foundation/goldens/pairing-pre-profile-direct-wins-and-provisions.json
+++ b/mobile/rpc-foundation/goldens/pairing-pre-profile-direct-wins-and-provisions.json
@@ -3,7 +3,7 @@
"family": "pairing.pre-profile",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "57c8ad93d162ea69e4a0ecd5de7d8fae6806f8f7a51945c2c13661d81bae6497",
diff --git a/mobile/rpc-foundation/goldens/pairing-pre-profile-provision-unsupported-saves-direct-host.json b/mobile/rpc-foundation/goldens/pairing-pre-profile-provision-unsupported-saves-direct-host.json
index f3244912bb7..49dabc4919c 100644
--- a/mobile/rpc-foundation/goldens/pairing-pre-profile-provision-unsupported-saves-direct-host.json
+++ b/mobile/rpc-foundation/goldens/pairing-pre-profile-provision-unsupported-saves-direct-host.json
@@ -3,7 +3,7 @@
"family": "pairing.pre-profile",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "57c8ad93d162ea69e4a0ecd5de7d8fae6806f8f7a51945c2c13661d81bae6497",
diff --git a/mobile/rpc-foundation/goldens/pairing-pre-profile-times-out.json b/mobile/rpc-foundation/goldens/pairing-pre-profile-times-out.json
index ea1db64ea4d..5d4f2a3b7e1 100644
--- a/mobile/rpc-foundation/goldens/pairing-pre-profile-times-out.json
+++ b/mobile/rpc-foundation/goldens/pairing-pre-profile-times-out.json
@@ -3,7 +3,7 @@
"family": "pairing.pre-profile",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "57c8ad93d162ea69e4a0ecd5de7d8fae6806f8f7a51945c2c13661d81bae6497",
diff --git a/mobile/rpc-foundation/goldens/pr-branch-identity.json b/mobile/rpc-foundation/goldens/pr-branch-identity.json
index 482303ad436..f66cf79630a 100644
--- a/mobile/rpc-foundation/goldens/pr-branch-identity.json
+++ b/mobile/rpc-foundation/goldens/pr-branch-identity.json
@@ -3,10 +3,10 @@
"family": "session.pr-branch-context",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "d1b208a7bee947a603949fdc1f0d145e8c5576926f89f3e32330585f3a115290",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/pr-branch-repo-context.json b/mobile/rpc-foundation/goldens/pr-branch-repo-context.json
index f22e73e4d76..82069390082 100644
--- a/mobile/rpc-foundation/goldens/pr-branch-repo-context.json
+++ b/mobile/rpc-foundation/goldens/pr-branch-repo-context.json
@@ -3,10 +3,10 @@
"family": "session.pr-branch-context",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "bd715681a856254e0c374b504cece07e5df4c9a75fa2b97c35498df12210fbab",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/pr-comment-mutation.json b/mobile/rpc-foundation/goldens/pr-comment-mutation.json
index 6633a299644..4f4943938a7 100644
--- a/mobile/rpc-foundation/goldens/pr-comment-mutation.json
+++ b/mobile/rpc-foundation/goldens/pr-comment-mutation.json
@@ -3,10 +3,10 @@
"family": "github.pr-comment-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "73cc5da2649b9687bb0d8247fa4ecf3c085746cf398515e8d2b40be2ed0da688",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/pr-comment-resolve-unconfirmed.json b/mobile/rpc-foundation/goldens/pr-comment-resolve-unconfirmed.json
index d75fbf81976..2be5190aebb 100644
--- a/mobile/rpc-foundation/goldens/pr-comment-resolve-unconfirmed.json
+++ b/mobile/rpc-foundation/goldens/pr-comment-resolve-unconfirmed.json
@@ -3,10 +3,10 @@
"family": "github.pr-comment-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "f425131d29fee8826c00a550fb537d0bd1a37bbaf3b33992984d5e04a990a512",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/pr-mutation-in-band-failure.json b/mobile/rpc-foundation/goldens/pr-mutation-in-band-failure.json
index 93e75da0432..feafcb833d3 100644
--- a/mobile/rpc-foundation/goldens/pr-mutation-in-band-failure.json
+++ b/mobile/rpc-foundation/goldens/pr-mutation-in-band-failure.json
@@ -3,10 +3,10 @@
"family": "github.pr-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "70a94f45dbf7d58d9024c1cc4c94edd98fa48cd5ccffe8f2b7c53fa3e55d18d3",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/pr-mutation-status.json b/mobile/rpc-foundation/goldens/pr-mutation-status.json
index 12ac5703b63..2a139a74c95 100644
--- a/mobile/rpc-foundation/goldens/pr-mutation-status.json
+++ b/mobile/rpc-foundation/goldens/pr-mutation-status.json
@@ -3,10 +3,10 @@
"family": "github.pr-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "e9291209234bacab12201f4c13bb592e06bd405215389e19f0754c23e79eb197",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/pr-read-fork-routing.json b/mobile/rpc-foundation/goldens/pr-read-fork-routing.json
index de32121b3b1..c715b9fcc2c 100644
--- a/mobile/rpc-foundation/goldens/pr-read-fork-routing.json
+++ b/mobile/rpc-foundation/goldens/pr-read-fork-routing.json
@@ -3,10 +3,10 @@
"family": "github.pr-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "ba21f7fc3966cb1e3c1e59d6e8a8b184fa0559bf3037365391ce23e364befd7f",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/pr-read-surface.json b/mobile/rpc-foundation/goldens/pr-read-surface.json
index 5d428472b11..68f5d6391b4 100644
--- a/mobile/rpc-foundation/goldens/pr-read-surface.json
+++ b/mobile/rpc-foundation/goldens/pr-read-surface.json
@@ -3,10 +3,10 @@
"family": "github.pr-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "4246e7ffa62e85aac489c561171a6468f862b7f18eefac9926b65073616b6d35",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/pr-read-upstream-error.json b/mobile/rpc-foundation/goldens/pr-read-upstream-error.json
index fe578c8c622..81fc076d446 100644
--- a/mobile/rpc-foundation/goldens/pr-read-upstream-error.json
+++ b/mobile/rpc-foundation/goldens/pr-read-upstream-error.json
@@ -3,10 +3,10 @@
"family": "github.pr-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "b2445b299e18664b698d659c5041860b8a253314687666ae467aab441ab07235",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json b/mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json
index 9f90a584783..cc88806225f 100644
--- a/mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json
+++ b/mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json
@@ -3,7 +3,7 @@
"family": "session.pr-sidebar",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "87ffa2daea415d2682f1112025b5bd9d52404c6fc7c239180a3ad2120678ff1f",
diff --git a/mobile/rpc-foundation/goldens/pr-sidebar-load.json b/mobile/rpc-foundation/goldens/pr-sidebar-load.json
index 5268feb67bb..6164f9f3891 100644
--- a/mobile/rpc-foundation/goldens/pr-sidebar-load.json
+++ b/mobile/rpc-foundation/goldens/pr-sidebar-load.json
@@ -3,7 +3,7 @@
"family": "session.pr-sidebar",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "87ffa2daea415d2682f1112025b5bd9d52404c6fc7c239180a3ad2120678ff1f",
diff --git a/mobile/rpc-foundation/goldens/pr-title-mutation.json b/mobile/rpc-foundation/goldens/pr-title-mutation.json
index e995616885c..7ea0aadadca 100644
--- a/mobile/rpc-foundation/goldens/pr-title-mutation.json
+++ b/mobile/rpc-foundation/goldens/pr-title-mutation.json
@@ -3,10 +3,10 @@
"family": "github.pr-title-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "071e745453795d18d683aaab63e810783e3cee4927b47425c20a3d915397d0dd",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/pr-title-unconfirmed.json b/mobile/rpc-foundation/goldens/pr-title-unconfirmed.json
index d227d588c7f..9c1f08180fd 100644
--- a/mobile/rpc-foundation/goldens/pr-title-unconfirmed.json
+++ b/mobile/rpc-foundation/goldens/pr-title-unconfirmed.json
@@ -3,10 +3,10 @@
"family": "github.pr-title-mutation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
"scenarioSha256": "669260c675021b37252dc5023a7a78e4e90536c2f35d9a5da3e53778e6a0cf52",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/pr-triage-launch.json b/mobile/rpc-foundation/goldens/pr-triage-launch.json
index 661f1ee932e..cf7698c10cf 100644
--- a/mobile/rpc-foundation/goldens/pr-triage-launch.json
+++ b/mobile/rpc-foundation/goldens/pr-triage-launch.json
@@ -3,101 +3,36 @@
"family": "session.pr-triage",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "5f65c5b318f4764b0f58a5e7b593333759a9cfa799db45b11190ac26f4083335",
- "scenarioSha256": "b7c9498eea67df2f670911e3b868a44ba77833813c17e7800dba52ebff530350",
+ "adapterSha256": "f560ff1582487c118756c527faa1fb1f65e37ce22ca9573491fd4b2dbcedf38d",
+ "scenarioSha256": "8bb2ff4e899ee873289fed7c1ef12e7f9dba91949125b1f0e4336d378ceb071e",
"platform": "darwin",
"scenarioVersion": 1,
"projectionVersion": 2,
"goldenFormatVersion": 5,
"values": {
- "02188f091419": {
- "name": "settings.get#1",
- "ordinal": 2,
- "args": [
- {
- "name": "method",
- "value": "settings.get"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-2",
- "ok": true,
- "result": {
- "settings": {
- "defaultTuiAgent": "codex",
- "disabledTuiAgents": []
- }
- }
- }
- }
- },
- "1c2564f1daca": {
- "name": "settings.get#1",
+ "280ce0d6f832": {
+ "name": "terminal.send#1",
"ordinal": 4,
- "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
+ "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"terminal.send\",\"params\":{\"terminal\":\"term-1\",\"text\":\"Fix the failing checks\",\"enter\":true}}"
},
- "28339abecf78": {
- "name": "agent.launchReplay#1",
- "ordinal": 8,
- "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"agent.launchReplay\",\"params\":{\"agent\":\"codex\",\"operationId\":\"1767225600000-00000000000040008000000000000001\",\"target\":{\"kind\":\"existing\",\"worktree\":\"id:repo-9::/w\"},\"prompt\":{\"text\":\"Fix the failing checks\",\"delivery\":\"submit\"},\"launchSource\":\"task_page\"}}"
- },
- "35f85fe3b71c": {
- "name": "repo.list#1",
+ "5093e98ba369": {
+ "name": "session.tabs.createTerminal#1",
"ordinal": 1,
"args": [
{
"name": "method",
- "value": "repo.list"
+ "value": "session.tabs.createTerminal"
},
{
"name": "params",
"value": {
- "$rpc": "absent"
- }
- },
- {
- "name": "options",
- "value": {
- "$rpc": "absent"
- }
- }
- ],
- "settlement": {
- "status": "pending",
- "startedAt": 0
- }
- },
- "3e6a0417d2ee": {
- "name": "repo.list#1",
- "ordinal": 1,
- "args": [
- {
- "name": "method",
- "value": "repo.list"
- },
- {
- "name": "params",
- "value": {
- "$rpc": "absent"
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
}
},
{
@@ -115,27 +50,51 @@
"id": "frame-1",
"ok": true,
"result": {
- "repos": [
- {
- "id": "repo-9"
- }
- ]
+ "tab": {
+ "id": "tab-1",
+ "terminal": "term-1",
+ "title": "Agent",
+ "type": "terminal"
+ }
}
}
}
},
- "51d4cb56be85": {
- "name": "settings.get#1",
+ "9270aeb7d9c6": {
+ "status": "pending",
+ "startedAt": 0
+ },
+ "94d38f1838f6": {
+ "name": "session.tabs.createTerminal#1",
"ordinal": 2,
+ "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"session.tabs.createTerminal\",\"params\":{\"worktree\":\"id:repo-9::/w\",\"activate\":false,\"select\":true,\"navigation\":\"caller\"}}"
+ },
+ "a4273b38df83": {
+ "launched": "unlaunched"
+ },
+ "eb79a9b3682a": {
+ "status": "fulfilled",
+ "startedAt": 0,
+ "settledAt": 0,
+ "value": {
+ "$rpc": "undefined"
+ }
+ },
+ "f9b284ac2424": {
+ "name": "session.tabs.createTerminal#1",
+ "ordinal": 1,
"args": [
{
"name": "method",
- "value": "settings.get"
+ "value": "session.tabs.createTerminal"
},
{
"name": "params",
"value": {
- "$rpc": "absent"
+ "activate": false,
+ "navigation": "caller",
+ "select": true,
+ "worktree": "id:repo-9::/w"
}
},
{
@@ -150,22 +109,23 @@
"startedAt": 0
}
},
- "9270aeb7d9c6": {
- "status": "pending",
- "startedAt": 0
+ "fe1fe746e77a": {
+ "launched": "sent"
},
- "9c16efc31903": {
- "name": "preflight.detectAgents#1",
- "ordinal": 5,
+ "fe53d3bce307": {
+ "name": "terminal.send#1",
+ "ordinal": 3,
"args": [
{
"name": "method",
- "value": "preflight.detectAgents"
+ "value": "terminal.send"
},
{
"name": "params",
"value": {
- "$rpc": "absent"
+ "enter": true,
+ "terminal": "term-1",
+ "text": "Fix the failing checks"
}
},
{
@@ -180,95 +140,15 @@
"startedAt": 0,
"settledAt": 0,
"value": {
- "id": "frame-3",
- "ok": true,
- "result": ["codex"]
- }
- }
- },
- "a4273b38df83": {
- "launched": "unlaunched"
- },
- "ba3fac1eb199": {
- "name": "agent.launchReplay#1",
- "ordinal": 7,
- "args": [
- {
- "name": "method",
- "value": "agent.launchReplay"
- },
- {
- "name": "params",
- "value": {
- "agent": "codex",
- "launchSource": "task_page",
- "operationId": "1767225600000-00000000000040008000000000000001",
- "prompt": {
- "delivery": "submit",
- "text": "Fix the failing checks"
- },
- "target": {
- "kind": "existing",
- "worktree": "id:repo-9::/w"
- }
- }
- },
- {
- "name": "options",
- "value": {
- "timeoutMs": 90000
- }
- }
- ],
- "settlement": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "id": "frame-4",
+ "id": "frame-2",
"ok": true,
"result": {
- "outcome": {
- "handle": "term-1",
- "kind": "terminal"
- },
- "prompt": {
- "delivery": "submit",
- "outcome": "handed-to-terminal"
- },
- "receipt": {
- "detail": "Started a terminal agent, the default for new agent tabs in your settings.",
- "mode": "terminal",
- "preferred": "terminal",
- "reason": "user_default"
- },
- "worktreeId": "repo-9::/w"
+ "send": {
+ "accepted": true
+ }
}
}
}
- },
- "e0eef7c9fafe": {
- "name": "repo.list#1",
- "ordinal": 3,
- "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
- },
- "eb79a9b3682a": {
- "status": "fulfilled",
- "startedAt": 0,
- "settledAt": 0,
- "value": {
- "$rpc": "undefined"
- }
- },
- "eb8d47f90956": {
- "launched": {
- "kind": "sent"
- }
- },
- "f49d184679d1": {
- "name": "preflight.detectAgents#1",
- "ordinal": 6,
- "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectAgents\"}"
}
},
"recording": {
@@ -277,8 +157,8 @@
{
"id": "pending",
"observation": {
- "sender": ["35f85fe3b71c", "51d4cb56be85"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca"],
+ "sender": ["f9b284ac2424"],
+ "payloads": ["94d38f1838f6"],
"settlements": {
"launch": "9270aeb7d9c6"
},
@@ -289,12 +169,12 @@
{
"id": "launched",
"observation": {
- "sender": ["3e6a0417d2ee", "02188f091419", "9c16efc31903", "ba3fac1eb199"],
- "payloads": ["e0eef7c9fafe", "1c2564f1daca", "f49d184679d1", "28339abecf78"],
+ "sender": ["5093e98ba369", "fe53d3bce307"],
+ "payloads": ["94d38f1838f6", "280ce0d6f832"],
"settlements": {
"launch": "eb79a9b3682a"
},
- "state": "eb8d47f90956",
+ "state": "fe1fe746e77a",
"effects": []
}
}
diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json
index 97282b9f6a6..7c910ca21b2 100644
--- a/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json
+++ b/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json
@@ -3,7 +3,7 @@
"family": "settings-agent-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json
index 81ae2dd73c9..45df1788131 100644
--- a/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json
+++ b/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json
@@ -3,7 +3,7 @@
"family": "settings-agent-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json b/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json
index 4d6c2d4a61e..222aaccca17 100644
--- a/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json
+++ b/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json
@@ -3,7 +3,7 @@
"family": "settings-agent-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json
index 931181c6925..09fe006b04b 100644
--- a/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json
+++ b/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json
@@ -3,7 +3,7 @@
"family": "settings-agent-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/push-dismissal-tray-reconciled.json b/mobile/rpc-foundation/goldens/push-dismissal-tray-reconciled.json
index b8a0a1048e9..afd8573259e 100644
--- a/mobile/rpc-foundation/goldens/push-dismissal-tray-reconciled.json
+++ b/mobile/rpc-foundation/goldens/push-dismissal-tray-reconciled.json
@@ -3,7 +3,7 @@
"family": "notifications.push-dismissal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "595a3eb2994d0596b9fcd0707b175b4e978625053dfbc5c541b0350c0cbfb524",
diff --git a/mobile/rpc-foundation/goldens/quick-commands-load-refused.json b/mobile/rpc-foundation/goldens/quick-commands-load-refused.json
index 4e93d3130e3..6f8973598fb 100644
--- a/mobile/rpc-foundation/goldens/quick-commands-load-refused.json
+++ b/mobile/rpc-foundation/goldens/quick-commands-load-refused.json
@@ -3,7 +3,7 @@
"family": "settings.quick-commands",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "42334358b5e5966001639653b553f15033f6e201d785107871fe056536f0a5e2",
diff --git a/mobile/rpc-foundation/goldens/quick-commands-loaded-and-saved.json b/mobile/rpc-foundation/goldens/quick-commands-loaded-and-saved.json
index 7b6c2f7abea..6e5f97a0d5a 100644
--- a/mobile/rpc-foundation/goldens/quick-commands-loaded-and-saved.json
+++ b/mobile/rpc-foundation/goldens/quick-commands-loaded-and-saved.json
@@ -3,7 +3,7 @@
"family": "settings.quick-commands",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "42334358b5e5966001639653b553f15033f6e201d785107871fe056536f0a5e2",
diff --git a/mobile/rpc-foundation/goldens/quick-commands-save-refused-rolls-back.json b/mobile/rpc-foundation/goldens/quick-commands-save-refused-rolls-back.json
index fab24c7eb7c..d0873be6ba1 100644
--- a/mobile/rpc-foundation/goldens/quick-commands-save-refused-rolls-back.json
+++ b/mobile/rpc-foundation/goldens/quick-commands-save-refused-rolls-back.json
@@ -3,7 +3,7 @@
"family": "settings.quick-commands",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "42334358b5e5966001639653b553f15033f6e201d785107871fe056536f0a5e2",
diff --git a/mobile/rpc-foundation/goldens/relay-direct-upgrade-commits.json b/mobile/rpc-foundation/goldens/relay-direct-upgrade-commits.json
index ca3bc006d64..3a75dffa1a1 100644
--- a/mobile/rpc-foundation/goldens/relay-direct-upgrade-commits.json
+++ b/mobile/rpc-foundation/goldens/relay-direct-upgrade-commits.json
@@ -3,7 +3,7 @@
"family": "relay.direct-upgrade",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "374a16da4187ee44fcc6e07daf822ae96ecfc13ab47ee6c29d048b1c0bd0f291",
diff --git a/mobile/rpc-foundation/goldens/relay-direct-upgrade-unsupported-host-declines.json b/mobile/rpc-foundation/goldens/relay-direct-upgrade-unsupported-host-declines.json
index 625f979ccc2..a3070e19e8f 100644
--- a/mobile/rpc-foundation/goldens/relay-direct-upgrade-unsupported-host-declines.json
+++ b/mobile/rpc-foundation/goldens/relay-direct-upgrade-unsupported-host-declines.json
@@ -3,7 +3,7 @@
"family": "relay.direct-upgrade",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "374a16da4187ee44fcc6e07daf822ae96ecfc13ab47ee6c29d048b1c0bd0f291",
diff --git a/mobile/rpc-foundation/goldens/relay-pairing-recovery-invite-authorizes.json b/mobile/rpc-foundation/goldens/relay-pairing-recovery-invite-authorizes.json
index e5fa243f256..71306eca520 100644
--- a/mobile/rpc-foundation/goldens/relay-pairing-recovery-invite-authorizes.json
+++ b/mobile/rpc-foundation/goldens/relay-pairing-recovery-invite-authorizes.json
@@ -3,7 +3,7 @@
"family": "relay.pairing-recovery",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "57c8ad93d162ea69e4a0ecd5de7d8fae6806f8f7a51945c2c13661d81bae6497",
diff --git a/mobile/rpc-foundation/goldens/relay-pairing-recovery-resume-committed.json b/mobile/rpc-foundation/goldens/relay-pairing-recovery-resume-committed.json
index 74d18004bab..f3f2cd6770b 100644
--- a/mobile/rpc-foundation/goldens/relay-pairing-recovery-resume-committed.json
+++ b/mobile/rpc-foundation/goldens/relay-pairing-recovery-resume-committed.json
@@ -3,7 +3,7 @@
"family": "relay.pairing-recovery",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "57c8ad93d162ea69e4a0ecd5de7d8fae6806f8f7a51945c2c13661d81bae6497",
diff --git a/mobile/rpc-foundation/goldens/relay-rotation-installs-and-commits.json b/mobile/rpc-foundation/goldens/relay-rotation-installs-and-commits.json
index 0b294268bfd..d889372f3a6 100644
--- a/mobile/rpc-foundation/goldens/relay-rotation-installs-and-commits.json
+++ b/mobile/rpc-foundation/goldens/relay-rotation-installs-and-commits.json
@@ -3,7 +3,7 @@
"family": "relay.credential-rotation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "374a16da4187ee44fcc6e07daf822ae96ecfc13ab47ee6c29d048b1c0bd0f291",
diff --git a/mobile/rpc-foundation/goldens/relay-rotation-resumes-committed-pending.json b/mobile/rpc-foundation/goldens/relay-rotation-resumes-committed-pending.json
index f9dc4ceb930..551bbd469bf 100644
--- a/mobile/rpc-foundation/goldens/relay-rotation-resumes-committed-pending.json
+++ b/mobile/rpc-foundation/goldens/relay-rotation-resumes-committed-pending.json
@@ -3,7 +3,7 @@
"family": "relay.credential-rotation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "374a16da4187ee44fcc6e07daf822ae96ecfc13ab47ee6c29d048b1c0bd0f291",
diff --git a/mobile/rpc-foundation/goldens/review-branch-diff-shapes.json b/mobile/rpc-foundation/goldens/review-branch-diff-shapes.json
index a3a1b3852f7..989e935206e 100644
--- a/mobile/rpc-foundation/goldens/review-branch-diff-shapes.json
+++ b/mobile/rpc-foundation/goldens/review-branch-diff-shapes.json
@@ -3,7 +3,7 @@
"family": "session.review-branch-diff",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/review-file-diff-shapes.json b/mobile/rpc-foundation/goldens/review-file-diff-shapes.json
index 8fc47c4d997..4ac8364c774 100644
--- a/mobile/rpc-foundation/goldens/review-file-diff-shapes.json
+++ b/mobile/rpc-foundation/goldens/review-file-diff-shapes.json
@@ -3,7 +3,7 @@
"family": "session.review-file-diff",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a8016eb61915cf80a3bdeb622ee67d35be8b4b9862a75e4ef2e8f4ff8e93e7f2",
diff --git a/mobile/rpc-foundation/goldens/review-git-mutations-run.json b/mobile/rpc-foundation/goldens/review-git-mutations-run.json
index 7acd8380fe5..bbf3e6e4800 100644
--- a/mobile/rpc-foundation/goldens/review-git-mutations-run.json
+++ b/mobile/rpc-foundation/goldens/review-git-mutations-run.json
@@ -3,10 +3,10 @@
"family": "session.review-git-mutations",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "7981ac87c4397b9703330835327c70828cb5a76633f1c4803ded1b66520d184d",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/review-mark-reviewed-persists.json b/mobile/rpc-foundation/goldens/review-mark-reviewed-persists.json
index 8eab1e23c96..903c81db2eb 100644
--- a/mobile/rpc-foundation/goldens/review-mark-reviewed-persists.json
+++ b/mobile/rpc-foundation/goldens/review-mark-reviewed-persists.json
@@ -3,10 +3,10 @@
"family": "session.diff-review-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "9f1c39e91a97266b0a550d2b2d061592ae050078401ef23177dd2e00db67bf04",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/review-mark-reviewed-rolls-back.json b/mobile/rpc-foundation/goldens/review-mark-reviewed-rolls-back.json
index f2031e38a92..2123c983287 100644
--- a/mobile/rpc-foundation/goldens/review-mark-reviewed-rolls-back.json
+++ b/mobile/rpc-foundation/goldens/review-mark-reviewed-rolls-back.json
@@ -3,10 +3,10 @@
"family": "session.diff-review-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "c858cfca59148548146b4c0a775e9518d3ab826ef268ccc9af60b04e52cc9e3d",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/review-open-in-session.json b/mobile/rpc-foundation/goldens/review-open-in-session.json
index b8757f5ecea..8762e9163ca 100644
--- a/mobile/rpc-foundation/goldens/review-open-in-session.json
+++ b/mobile/rpc-foundation/goldens/review-open-in-session.json
@@ -3,10 +3,10 @@
"family": "session.diff-review-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "2f0a6aa8ce100edbce9ccf64c81efe64356fccbdcd2e16f561360e2b11b5700f",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/review-send-notes-heals-stale-input.json b/mobile/rpc-foundation/goldens/review-send-notes-heals-stale-input.json
index eaf1503e10a..c63f3eb7406 100644
--- a/mobile/rpc-foundation/goldens/review-send-notes-heals-stale-input.json
+++ b/mobile/rpc-foundation/goldens/review-send-notes-heals-stale-input.json
@@ -3,10 +3,10 @@
"family": "session.diff-review-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "7099d7311b2046dde21a2750201718995c0869bc4f17fb7f3ce2b997ce0e6506",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/review-send-sheet-lists-terminals.json b/mobile/rpc-foundation/goldens/review-send-sheet-lists-terminals.json
index 1f9bb68760d..04e253838be 100644
--- a/mobile/rpc-foundation/goldens/review-send-sheet-lists-terminals.json
+++ b/mobile/rpc-foundation/goldens/review-send-sheet-lists-terminals.json
@@ -3,10 +3,10 @@
"family": "session.review-send-sheet",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "8b4a06c1b2918d5ed5f40102c1c7cb411e02aba5e7601e98658d673634784bb0",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/review-stage-file.json b/mobile/rpc-foundation/goldens/review-stage-file.json
index 8634fa1ab28..5ec53a81a4a 100644
--- a/mobile/rpc-foundation/goldens/review-stage-file.json
+++ b/mobile/rpc-foundation/goldens/review-stage-file.json
@@ -3,10 +3,10 @@
"family": "session.diff-review-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "793e954960d371c6477d4cd3d70a5215c0bd90764684eafdb1e1a2e09790cc86",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/review-stage-refused.json b/mobile/rpc-foundation/goldens/review-stage-refused.json
index dd6bdfc908e..aef207226d1 100644
--- a/mobile/rpc-foundation/goldens/review-stage-refused.json
+++ b/mobile/rpc-foundation/goldens/review-stage-refused.json
@@ -3,10 +3,10 @@
"family": "session.diff-review-actions",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "dc3a746274b4197b02b0b3060bbf8ab0f67eb54355c8b9888e1f061e37f777af",
+ "adapterSha256": "86ef3d98ee6c11726bf0991e1a40400b60666b0a2e24d137abe66562fe5876bc",
"scenarioSha256": "46b720fed417d29f79dbde4cc7941579f2d6a2f920bae24234537480079e7de5",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-default.json b/mobile/rpc-foundation/goldens/sc-base-ref-default.json
index 4e2104e33d8..6df3080de54 100644
--- a/mobile/rpc-foundation/goldens/sc-base-ref-default.json
+++ b/mobile/rpc-foundation/goldens/sc-base-ref-default.json
@@ -3,7 +3,7 @@
"family": "git.base-ref-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json b/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json
index 3dce9510b28..f3dc9ae7834 100644
--- a/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json
+++ b/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json
@@ -3,7 +3,7 @@
"family": "git.base-ref-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json b/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json
index 0fc1c6c0a92..1dbdb118320 100644
--- a/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json
+++ b/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json
@@ -3,7 +3,7 @@
"family": "git.base-ref-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json b/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json
index 70d9e423c1c..11a6308c70a 100644
--- a/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json
+++ b/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json
@@ -3,7 +3,7 @@
"family": "git.base-ref-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-branch-diff-previewed.json b/mobile/rpc-foundation/goldens/sc-branch-diff-previewed.json
index 0a7b317274f..ba10deb68d4 100644
--- a/mobile/rpc-foundation/goldens/sc-branch-diff-previewed.json
+++ b/mobile/rpc-foundation/goldens/sc-branch-diff-previewed.json
@@ -3,7 +3,7 @@
"family": "git.branch-diff-preview",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "48ccada93f208a24160483e98ee94a771ab6d63222f29ac4bbd6979157f98333",
diff --git a/mobile/rpc-foundation/goldens/sc-changes-loaded.json b/mobile/rpc-foundation/goldens/sc-changes-loaded.json
index fadad8fbc24..c016cf328bb 100644
--- a/mobile/rpc-foundation/goldens/sc-changes-loaded.json
+++ b/mobile/rpc-foundation/goldens/sc-changes-loaded.json
@@ -3,7 +3,7 @@
"family": "git.changes-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "48ccada93f208a24160483e98ee94a771ab6d63222f29ac4bbd6979157f98333",
diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json b/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json
index 6f99c95e161..f5400fc135f 100644
--- a/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json
+++ b/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json
@@ -3,7 +3,7 @@
"family": "git.commit-message-ai",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json b/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json
index 09856117f2c..20e5cbead2d 100644
--- a/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json
+++ b/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json
@@ -3,7 +3,7 @@
"family": "git.commit-message-ai",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-generated.json b/mobile/rpc-foundation/goldens/sc-commit-message-generated.json
index a7b6ea6a1cb..c1ed89ff9d2 100644
--- a/mobile/rpc-foundation/goldens/sc-commit-message-generated.json
+++ b/mobile/rpc-foundation/goldens/sc-commit-message-generated.json
@@ -3,7 +3,7 @@
"family": "git.commit-message-ai",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-create-existing-review.json b/mobile/rpc-foundation/goldens/sc-create-existing-review.json
index 411186ec2e7..33de7f54a83 100644
--- a/mobile/rpc-foundation/goldens/sc-create-existing-review.json
+++ b/mobile/rpc-foundation/goldens/sc-create-existing-review.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json b/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json
index 7ba801fd133..e93034cccba 100644
--- a/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json
+++ b/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-create-intent-unlisted-provider.json b/mobile/rpc-foundation/goldens/sc-create-intent-unlisted-provider.json
index 2ac7211e6ef..ad6511c94ea 100644
--- a/mobile/rpc-foundation/goldens/sc-create-intent-unlisted-provider.json
+++ b/mobile/rpc-foundation/goldens/sc-create-intent-unlisted-provider.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-intent",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json b/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json
index ce5f1d6ee98..d2e07b8bd5f 100644
--- a/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json
+++ b/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json b/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json
index e7b52b81cbb..ec8982ed6dd 100644
--- a/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json
+++ b/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json b/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json
index 7061bf38331..d6ac8f18856 100644
--- a/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json
+++ b/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json b/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json
index fcaa15921b6..1aa2aed3cad 100644
--- a/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json
+++ b/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json
@@ -3,7 +3,7 @@
"family": "hostedReview.create-chain",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json b/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json
index 829fe5fe68e..8c69f7504ae 100644
--- a/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json
+++ b/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json
@@ -3,7 +3,7 @@
"family": "hostedReview.eligibility",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-history-commit-files.json b/mobile/rpc-foundation/goldens/sc-history-commit-files.json
index 09a5888c92a..23f2847f93c 100644
--- a/mobile/rpc-foundation/goldens/sc-history-commit-files.json
+++ b/mobile/rpc-foundation/goldens/sc-history-commit-files.json
@@ -3,7 +3,7 @@
"family": "git.history-commit-files",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "48ccada93f208a24160483e98ee94a771ab6d63222f29ac4bbd6979157f98333",
diff --git a/mobile/rpc-foundation/goldens/sc-history-loaded.json b/mobile/rpc-foundation/goldens/sc-history-loaded.json
index 3b6c757d928..893640bc704 100644
--- a/mobile/rpc-foundation/goldens/sc-history-loaded.json
+++ b/mobile/rpc-foundation/goldens/sc-history-loaded.json
@@ -3,7 +3,7 @@
"family": "git.history-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json b/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json
index 1e18cacab43..1feb3cb1814 100644
--- a/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json
+++ b/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json
@@ -3,7 +3,7 @@
"family": "worktree.review-link",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-read.json b/mobile/rpc-foundation/goldens/sc-pr-link-read.json
index bcd724d7bbe..e275ba74231 100644
--- a/mobile/rpc-foundation/goldens/sc-pr-link-read.json
+++ b/mobile/rpc-foundation/goldens/sc-pr-link-read.json
@@ -3,7 +3,7 @@
"family": "worktree.review-link",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-set.json b/mobile/rpc-foundation/goldens/sc-pr-link-set.json
index 5ed54fbb2f5..97668379bf5 100644
--- a/mobile/rpc-foundation/goldens/sc-pr-link-set.json
+++ b/mobile/rpc-foundation/goldens/sc-pr-link-set.json
@@ -3,7 +3,7 @@
"family": "worktree.review-link",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json
index 68636f1d20c..e387920494d 100644
--- a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json
+++ b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json
@@ -3,7 +3,7 @@
"family": "hostedReview.eligibility",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json
index f3f53d95f2d..3215dff50cc 100644
--- a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json
+++ b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json
@@ -3,7 +3,7 @@
"family": "hostedReview.eligibility",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json b/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json
index bab5a791629..26a535638b2 100644
--- a/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json
+++ b/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json
@@ -3,7 +3,7 @@
"family": "git.remote-prerequisite",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json b/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json
index d91e37030ad..0c9f8b46ab1 100644
--- a/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json
+++ b/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json
@@ -3,7 +3,7 @@
"family": "git.remote-prerequisite",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-push.json b/mobile/rpc-foundation/goldens/sc-prerequisite-push.json
index daacc58e7d7..5c78df7a2e0 100644
--- a/mobile/rpc-foundation/goldens/sc-prerequisite-push.json
+++ b/mobile/rpc-foundation/goldens/sc-prerequisite-push.json
@@ -3,7 +3,7 @@
"family": "git.remote-prerequisite",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json b/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json
index bef09d140f8..d39070adb22 100644
--- a/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json
+++ b/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json
@@ -3,7 +3,7 @@
"family": "git.remote-prerequisite",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json b/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json
index 70ab595f98a..519db73bcb3 100644
--- a/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json
+++ b/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json
@@ -3,7 +3,7 @@
"family": "session.tab-reveal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-reveal-timeout.json b/mobile/rpc-foundation/goldens/sc-reveal-timeout.json
index fb206b872a9..feb0b6e2e43 100644
--- a/mobile/rpc-foundation/goldens/sc-reveal-timeout.json
+++ b/mobile/rpc-foundation/goldens/sc-reveal-timeout.json
@@ -3,7 +3,7 @@
"family": "session.tab-reveal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5e47c7960b9352753f0751d4ccf5e3ff7fb7b74a63cc4e4df3c3ffdcc6c1e66b",
diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json b/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json
index 78c353e9e17..8d9358da2e1 100644
--- a/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json
+++ b/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json
@@ -3,7 +3,7 @@
"family": "git.review-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json b/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json
index 3af15059d0b..43259c0204c 100644
--- a/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json
+++ b/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json
@@ -3,7 +3,7 @@
"family": "git.review-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json b/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json
index 7e191d57c75..e93d03b75bc 100644
--- a/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json
+++ b/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json
@@ -3,7 +3,7 @@
"family": "git.review-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-review-commit.json b/mobile/rpc-foundation/goldens/sc-review-commit.json
index 6862660951f..138f19fbe4d 100644
--- a/mobile/rpc-foundation/goldens/sc-review-commit.json
+++ b/mobile/rpc-foundation/goldens/sc-review-commit.json
@@ -3,7 +3,7 @@
"family": "git.review-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json b/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json
index fde69778827..79c7440a004 100644
--- a/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json
+++ b/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json
@@ -3,7 +3,7 @@
"family": "git.review-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/sc-review-status-normalized.json b/mobile/rpc-foundation/goldens/sc-review-status-normalized.json
index 42542b10a0d..3c4f90c59f9 100644
--- a/mobile/rpc-foundation/goldens/sc-review-status-normalized.json
+++ b/mobile/rpc-foundation/goldens/sc-review-status-normalized.json
@@ -3,7 +3,7 @@
"family": "git.review-preparation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c582ce355b0704b38d7e84cbce352630096c91231bf09aecd1f6dbb409fed17f",
diff --git a/mobile/rpc-foundation/goldens/schedules-b3.json b/mobile/rpc-foundation/goldens/schedules-b3.json
index 386dc102c49..22804fede52 100644
--- a/mobile/rpc-foundation/goldens/schedules-b3.json
+++ b/mobile/rpc-foundation/goldens/schedules-b3.json
@@ -3,7 +3,7 @@
"family": "linear-detail-barrier",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d3b7f33d810e1fa420ac41a628cde9fe4a9e65fd57f89fbca0a40fc7d74951ab",
diff --git a/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json
index 57254df3d70..af728444215 100644
--- a/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.home-providers",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json b/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json
index 1f6b17e152f..c920fabd939 100644
--- a/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json
+++ b/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json
@@ -3,7 +3,7 @@
"family": "settings-agent-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json
index 7e8aa00cafd..1b95c26e609 100644
--- a/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json
index c933995a406..a2b54e45657 100644
--- a/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.resume-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json
index 4440e9c54e9..d220a0d5d71 100644
--- a/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.task-hydration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json
index b62ed64e741..fbee0b8b473 100644
--- a/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-context",
"namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/session-browser-tab-created.json b/mobile/rpc-foundation/goldens/session-browser-tab-created.json
index 023e9e3bdd2..cd208d04e14 100644
--- a/mobile/rpc-foundation/goldens/session-browser-tab-created.json
+++ b/mobile/rpc-foundation/goldens/session-browser-tab-created.json
@@ -3,7 +3,7 @@
"family": "session.browser-tab-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/session-create-browser-refused.json b/mobile/rpc-foundation/goldens/session-create-browser-refused.json
index 5f5005a35d7..b493cbe3b51 100644
--- a/mobile/rpc-foundation/goldens/session-create-browser-refused.json
+++ b/mobile/rpc-foundation/goldens/session-create-browser-refused.json
@@ -3,7 +3,7 @@
"family": "session.content-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/session-create-browser-tab.json b/mobile/rpc-foundation/goldens/session-create-browser-tab.json
index 746f35db033..b5a3eb30614 100644
--- a/mobile/rpc-foundation/goldens/session-create-browser-tab.json
+++ b/mobile/rpc-foundation/goldens/session-create-browser-tab.json
@@ -3,7 +3,7 @@
"family": "session.content-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/session-create-markdown-name-collision.json b/mobile/rpc-foundation/goldens/session-create-markdown-name-collision.json
index ecf0a19114a..f758d48f2cf 100644
--- a/mobile/rpc-foundation/goldens/session-create-markdown-name-collision.json
+++ b/mobile/rpc-foundation/goldens/session-create-markdown-name-collision.json
@@ -3,7 +3,7 @@
"family": "session.content-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/session-create-markdown-note.json b/mobile/rpc-foundation/goldens/session-create-markdown-note.json
index 393fbfb7064..bb8f96bc950 100644
--- a/mobile/rpc-foundation/goldens/session-create-markdown-note.json
+++ b/mobile/rpc-foundation/goldens/session-create-markdown-note.json
@@ -3,7 +3,7 @@
"family": "session.content-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/session-create-terminal-ignores-a-second-create-in-flight.json b/mobile/rpc-foundation/goldens/session-create-terminal-ignores-a-second-create-in-flight.json
index 6d57100e936..67c96e0e2aa 100644
--- a/mobile/rpc-foundation/goldens/session-create-terminal-ignores-a-second-create-in-flight.json
+++ b/mobile/rpc-foundation/goldens/session-create-terminal-ignores-a-second-create-in-flight.json
@@ -3,7 +3,7 @@
"family": "session.create-terminal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fa7d9fd6428e89282f08e04fefba4289000eb3aed1462489a2f11efed374382c",
diff --git a/mobile/rpc-foundation/goldens/session-create-terminal-launches-an-agent-quick-command.json b/mobile/rpc-foundation/goldens/session-create-terminal-launches-an-agent-quick-command.json
index 18cd4013128..0b133ccfa95 100644
--- a/mobile/rpc-foundation/goldens/session-create-terminal-launches-an-agent-quick-command.json
+++ b/mobile/rpc-foundation/goldens/session-create-terminal-launches-an-agent-quick-command.json
@@ -3,7 +3,7 @@
"family": "session.create-terminal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fa7d9fd6428e89282f08e04fefba4289000eb3aed1462489a2f11efed374382c",
diff --git a/mobile/rpc-foundation/goldens/session-create-terminal-refused.json b/mobile/rpc-foundation/goldens/session-create-terminal-refused.json
index 0dab9b0ce79..99cb58af8a1 100644
--- a/mobile/rpc-foundation/goldens/session-create-terminal-refused.json
+++ b/mobile/rpc-foundation/goldens/session-create-terminal-refused.json
@@ -3,7 +3,7 @@
"family": "session.create-terminal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fa7d9fd6428e89282f08e04fefba4289000eb3aed1462489a2f11efed374382c",
diff --git a/mobile/rpc-foundation/goldens/session-create-terminal-replaces-active.json b/mobile/rpc-foundation/goldens/session-create-terminal-replaces-active.json
index 172a0286cff..7ff9bd442e7 100644
--- a/mobile/rpc-foundation/goldens/session-create-terminal-replaces-active.json
+++ b/mobile/rpc-foundation/goldens/session-create-terminal-replaces-active.json
@@ -3,7 +3,7 @@
"family": "session.create-terminal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fa7d9fd6428e89282f08e04fefba4289000eb3aed1462489a2f11efed374382c",
diff --git a/mobile/rpc-foundation/goldens/session-create-terminal-runs-a-quick-command.json b/mobile/rpc-foundation/goldens/session-create-terminal-runs-a-quick-command.json
index 242fad093c0..5d3ad4f5a5b 100644
--- a/mobile/rpc-foundation/goldens/session-create-terminal-runs-a-quick-command.json
+++ b/mobile/rpc-foundation/goldens/session-create-terminal-runs-a-quick-command.json
@@ -3,7 +3,7 @@
"family": "session.create-terminal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fa7d9fd6428e89282f08e04fefba4289000eb3aed1462489a2f11efed374382c",
diff --git a/mobile/rpc-foundation/goldens/session-create-terminal-with-prompt.json b/mobile/rpc-foundation/goldens/session-create-terminal-with-prompt.json
index 578d8d9c090..38a47b44a8e 100644
--- a/mobile/rpc-foundation/goldens/session-create-terminal-with-prompt.json
+++ b/mobile/rpc-foundation/goldens/session-create-terminal-with-prompt.json
@@ -3,7 +3,7 @@
"family": "session.create-terminal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fa7d9fd6428e89282f08e04fefba4289000eb3aed1462489a2f11efed374382c",
diff --git a/mobile/rpc-foundation/goldens/session-create-terminal-without-active-tab.json b/mobile/rpc-foundation/goldens/session-create-terminal-without-active-tab.json
index d2fc9d0c5c8..47ced3dad4b 100644
--- a/mobile/rpc-foundation/goldens/session-create-terminal-without-active-tab.json
+++ b/mobile/rpc-foundation/goldens/session-create-terminal-without-active-tab.json
@@ -3,7 +3,7 @@
"family": "session.create-terminal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fa7d9fd6428e89282f08e04fefba4289000eb3aed1462489a2f11efed374382c",
diff --git a/mobile/rpc-foundation/goldens/session-create-terminal-without-handle.json b/mobile/rpc-foundation/goldens/session-create-terminal-without-handle.json
index 744f5d59d66..0a369faee45 100644
--- a/mobile/rpc-foundation/goldens/session-create-terminal-without-handle.json
+++ b/mobile/rpc-foundation/goldens/session-create-terminal-without-handle.json
@@ -3,7 +3,7 @@
"family": "session.create-terminal",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fa7d9fd6428e89282f08e04fefba4289000eb3aed1462489a2f11efed374382c",
diff --git a/mobile/rpc-foundation/goldens/session-diff-notes-load-refused.json b/mobile/rpc-foundation/goldens/session-diff-notes-load-refused.json
index bc7bfc94a31..662eaa4289c 100644
--- a/mobile/rpc-foundation/goldens/session-diff-notes-load-refused.json
+++ b/mobile/rpc-foundation/goldens/session-diff-notes-load-refused.json
@@ -3,7 +3,7 @@
"family": "session.diff-notes",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "42334358b5e5966001639653b553f15033f6e201d785107871fe056536f0a5e2",
diff --git a/mobile/rpc-foundation/goldens/session-diff-notes-loaded.json b/mobile/rpc-foundation/goldens/session-diff-notes-loaded.json
index 0cefbf6dca7..ceababf7aee 100644
--- a/mobile/rpc-foundation/goldens/session-diff-notes-loaded.json
+++ b/mobile/rpc-foundation/goldens/session-diff-notes-loaded.json
@@ -3,7 +3,7 @@
"family": "session.diff-notes",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "42334358b5e5966001639653b553f15033f6e201d785107871fe056536f0a5e2",
diff --git a/mobile/rpc-foundation/goldens/session-file-tab-read.json b/mobile/rpc-foundation/goldens/session-file-tab-read.json
index 83f65476848..d994300f650 100644
--- a/mobile/rpc-foundation/goldens/session-file-tab-read.json
+++ b/mobile/rpc-foundation/goldens/session-file-tab-read.json
@@ -3,7 +3,7 @@
"family": "session.tab-documents",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/session-markdown-disk-read.json b/mobile/rpc-foundation/goldens/session-markdown-disk-read.json
index 06b5adad1c1..bc585366f51 100644
--- a/mobile/rpc-foundation/goldens/session-markdown-disk-read.json
+++ b/mobile/rpc-foundation/goldens/session-markdown-disk-read.json
@@ -3,7 +3,7 @@
"family": "session.markdown-disk-fallback",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/session-markdown-disk-served.json b/mobile/rpc-foundation/goldens/session-markdown-disk-served.json
index fb68dd3bcbc..a58b982b032 100644
--- a/mobile/rpc-foundation/goldens/session-markdown-disk-served.json
+++ b/mobile/rpc-foundation/goldens/session-markdown-disk-served.json
@@ -3,7 +3,7 @@
"family": "session.markdown-disk-fallback",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/session-markdown-save-conflict.json b/mobile/rpc-foundation/goldens/session-markdown-save-conflict.json
index 294c1382db8..05ef486efd3 100644
--- a/mobile/rpc-foundation/goldens/session-markdown-save-conflict.json
+++ b/mobile/rpc-foundation/goldens/session-markdown-save-conflict.json
@@ -3,7 +3,7 @@
"family": "session.markdown-save",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "42334358b5e5966001639653b553f15033f6e201d785107871fe056536f0a5e2",
diff --git a/mobile/rpc-foundation/goldens/session-markdown-saved.json b/mobile/rpc-foundation/goldens/session-markdown-saved.json
index 8bcb31c6e9c..2ca7429d687 100644
--- a/mobile/rpc-foundation/goldens/session-markdown-saved.json
+++ b/mobile/rpc-foundation/goldens/session-markdown-saved.json
@@ -3,7 +3,7 @@
"family": "session.markdown-save",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "42334358b5e5966001639653b553f15033f6e201d785107871fe056536f0a5e2",
diff --git a/mobile/rpc-foundation/goldens/session-markdown-tab-disk-fallback.json b/mobile/rpc-foundation/goldens/session-markdown-tab-disk-fallback.json
index 2848f3c2591..8e1d814c42f 100644
--- a/mobile/rpc-foundation/goldens/session-markdown-tab-disk-fallback.json
+++ b/mobile/rpc-foundation/goldens/session-markdown-tab-disk-fallback.json
@@ -3,7 +3,7 @@
"family": "session.tab-documents",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/session-markdown-tab-read.json b/mobile/rpc-foundation/goldens/session-markdown-tab-read.json
index 375edc49824..bb8d4d1c3cc 100644
--- a/mobile/rpc-foundation/goldens/session-markdown-tab-read.json
+++ b/mobile/rpc-foundation/goldens/session-markdown-tab-read.json
@@ -3,7 +3,7 @@
"family": "session.tab-documents",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/session-markdown-tab-refused.json b/mobile/rpc-foundation/goldens/session-markdown-tab-refused.json
index c9cb264b619..7fc0d4c2316 100644
--- a/mobile/rpc-foundation/goldens/session-markdown-tab-refused.json
+++ b/mobile/rpc-foundation/goldens/session-markdown-tab-refused.json
@@ -3,7 +3,7 @@
"family": "session.tab-documents",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/session-startup-both-activation-sites.json b/mobile/rpc-foundation/goldens/session-startup-both-activation-sites.json
index bc124647440..140568a674b 100644
--- a/mobile/rpc-foundation/goldens/session-startup-both-activation-sites.json
+++ b/mobile/rpc-foundation/goldens/session-startup-both-activation-sites.json
@@ -3,7 +3,7 @@
"family": "session.startup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "6b08c394e37fd572cf63a4c11934247d379008f11117aa5af33b2926fbd32d1e",
diff --git a/mobile/rpc-foundation/goldens/session-startup-floating-route-skips-activation.json b/mobile/rpc-foundation/goldens/session-startup-floating-route-skips-activation.json
index df761781bb0..e4ba7d6609e 100644
--- a/mobile/rpc-foundation/goldens/session-startup-floating-route-skips-activation.json
+++ b/mobile/rpc-foundation/goldens/session-startup-floating-route-skips-activation.json
@@ -3,7 +3,7 @@
"family": "session.startup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "6b08c394e37fd572cf63a4c11934247d379008f11117aa5af33b2926fbd32d1e",
diff --git a/mobile/rpc-foundation/goldens/session-startup-keeps-terminals-visible-on-reconnect.json b/mobile/rpc-foundation/goldens/session-startup-keeps-terminals-visible-on-reconnect.json
index 04420749fc4..47c68de8a4e 100644
--- a/mobile/rpc-foundation/goldens/session-startup-keeps-terminals-visible-on-reconnect.json
+++ b/mobile/rpc-foundation/goldens/session-startup-keeps-terminals-visible-on-reconnect.json
@@ -3,7 +3,7 @@
"family": "session.startup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "6b08c394e37fd572cf63a4c11934247d379008f11117aa5af33b2926fbd32d1e",
diff --git a/mobile/rpc-foundation/goldens/session-startup-refused-tab-load-still-loads-terminals.json b/mobile/rpc-foundation/goldens/session-startup-refused-tab-load-still-loads-terminals.json
index c616693b8b2..b74a116393a 100644
--- a/mobile/rpc-foundation/goldens/session-startup-refused-tab-load-still-loads-terminals.json
+++ b/mobile/rpc-foundation/goldens/session-startup-refused-tab-load-still-loads-terminals.json
@@ -3,7 +3,7 @@
"family": "session.startup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "6b08c394e37fd572cf63a4c11934247d379008f11117aa5af33b2926fbd32d1e",
diff --git a/mobile/rpc-foundation/goldens/session-tab-activation-focus-and-activate.json b/mobile/rpc-foundation/goldens/session-tab-activation-focus-and-activate.json
index 3a119832326..237eb95ba4e 100644
--- a/mobile/rpc-foundation/goldens/session-tab-activation-focus-and-activate.json
+++ b/mobile/rpc-foundation/goldens/session-tab-activation-focus-and-activate.json
@@ -3,7 +3,7 @@
"family": "session.tab-activation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4a1e81ab3229c8fd10b3ad435568efec11a944e0f02a183f94e4b1f44a7e5de0",
diff --git a/mobile/rpc-foundation/goldens/session-tab-activation-refused.json b/mobile/rpc-foundation/goldens/session-tab-activation-refused.json
index 116766aa3c5..4a08a057eb8 100644
--- a/mobile/rpc-foundation/goldens/session-tab-activation-refused.json
+++ b/mobile/rpc-foundation/goldens/session-tab-activation-refused.json
@@ -3,7 +3,7 @@
"family": "session.tab-activation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4a1e81ab3229c8fd10b3ad435568efec11a944e0f02a183f94e4b1f44a7e5de0",
diff --git a/mobile/rpc-foundation/goldens/session-tab-activation-transport-error.json b/mobile/rpc-foundation/goldens/session-tab-activation-transport-error.json
index 5d27722efff..d7816c487bf 100644
--- a/mobile/rpc-foundation/goldens/session-tab-activation-transport-error.json
+++ b/mobile/rpc-foundation/goldens/session-tab-activation-transport-error.json
@@ -3,7 +3,7 @@
"family": "session.tab-activation",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4a1e81ab3229c8fd10b3ad435568efec11a944e0f02a183f94e4b1f44a7e5de0",
diff --git a/mobile/rpc-foundation/goldens/session-tab-close-refused-keeps-tab.json b/mobile/rpc-foundation/goldens/session-tab-close-refused-keeps-tab.json
index c139ddd4898..3729c8a4e0d 100644
--- a/mobile/rpc-foundation/goldens/session-tab-close-refused-keeps-tab.json
+++ b/mobile/rpc-foundation/goldens/session-tab-close-refused-keeps-tab.json
@@ -3,7 +3,7 @@
"family": "session.tab-close",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/session-tab-close-session-tab.json b/mobile/rpc-foundation/goldens/session-tab-close-session-tab.json
index 04e9f418fba..890988141f1 100644
--- a/mobile/rpc-foundation/goldens/session-tab-close-session-tab.json
+++ b/mobile/rpc-foundation/goldens/session-tab-close-session-tab.json
@@ -3,7 +3,7 @@
"family": "session.tab-close",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/session-tab-close-terminal.json b/mobile/rpc-foundation/goldens/session-tab-close-terminal.json
index 00e141a9c9a..d0c0b4e1e54 100644
--- a/mobile/rpc-foundation/goldens/session-tab-close-terminal.json
+++ b/mobile/rpc-foundation/goldens/session-tab-close-terminal.json
@@ -3,7 +3,7 @@
"family": "session.tab-close",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/session-tab-closed.json b/mobile/rpc-foundation/goldens/session-tab-closed.json
index 532937e1a1f..58f7d2c89b5 100644
--- a/mobile/rpc-foundation/goldens/session-tab-closed.json
+++ b/mobile/rpc-foundation/goldens/session-tab-closed.json
@@ -3,7 +3,7 @@
"family": "session.tab-close-session",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/session-tab-rename.json b/mobile/rpc-foundation/goldens/session-tab-rename.json
index 28e0b286c1b..25d6dd7ff72 100644
--- a/mobile/rpc-foundation/goldens/session-tab-rename.json
+++ b/mobile/rpc-foundation/goldens/session-tab-rename.json
@@ -3,7 +3,7 @@
"family": "session.tab-close",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/session-tab-renamed.json b/mobile/rpc-foundation/goldens/session-tab-renamed.json
index 8823dfd0293..ed066a87423 100644
--- a/mobile/rpc-foundation/goldens/session-tab-renamed.json
+++ b/mobile/rpc-foundation/goldens/session-tab-renamed.json
@@ -3,7 +3,7 @@
"family": "session.tab-rename",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "562c2f4ab669e774dd7045ecd9518e483845433fef6034688090f3b056df2815",
diff --git a/mobile/rpc-foundation/goldens/session-tabs-health-errored.json b/mobile/rpc-foundation/goldens/session-tabs-health-errored.json
index 40201b61b71..6da5f28240a 100644
--- a/mobile/rpc-foundation/goldens/session-tabs-health-errored.json
+++ b/mobile/rpc-foundation/goldens/session-tabs-health-errored.json
@@ -3,7 +3,7 @@
"family": "session.tabs-stream-health",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4a1e81ab3229c8fd10b3ad435568efec11a944e0f02a183f94e4b1f44a7e5de0",
diff --git a/mobile/rpc-foundation/goldens/session-tabs-health-reconciled.json b/mobile/rpc-foundation/goldens/session-tabs-health-reconciled.json
index b00802178bb..9329f6d8151 100644
--- a/mobile/rpc-foundation/goldens/session-tabs-health-reconciled.json
+++ b/mobile/rpc-foundation/goldens/session-tabs-health-reconciled.json
@@ -3,7 +3,7 @@
"family": "session.tabs-stream-health",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4a1e81ab3229c8fd10b3ad435568efec11a944e0f02a183f94e4b1f44a7e5de0",
diff --git a/mobile/rpc-foundation/goldens/session-tabs-health-refused.json b/mobile/rpc-foundation/goldens/session-tabs-health-refused.json
index ab94ed29547..157fefada79 100644
--- a/mobile/rpc-foundation/goldens/session-tabs-health-refused.json
+++ b/mobile/rpc-foundation/goldens/session-tabs-health-refused.json
@@ -3,7 +3,7 @@
"family": "session.tabs-stream-health",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4a1e81ab3229c8fd10b3ad435568efec11a944e0f02a183f94e4b1f44a7e5de0",
diff --git a/mobile/rpc-foundation/goldens/session-tabs-health-stale-application-revision.json b/mobile/rpc-foundation/goldens/session-tabs-health-stale-application-revision.json
index 2eadd813589..611c202a758 100644
--- a/mobile/rpc-foundation/goldens/session-tabs-health-stale-application-revision.json
+++ b/mobile/rpc-foundation/goldens/session-tabs-health-stale-application-revision.json
@@ -3,7 +3,7 @@
"family": "session.tabs-stream-health",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4a1e81ab3229c8fd10b3ad435568efec11a944e0f02a183f94e4b1f44a7e5de0",
diff --git a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-take-floor.json b/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-take-floor.json
index adf5fbff712..a9d96292fd2 100644
--- a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-take-floor.json
+++ b/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-take-floor.json
@@ -3,7 +3,7 @@
"family": "session.terminal-display-mode",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "9e90ad39a8d4257adf30166757a6364c4710dc3ae9f06365f80a3dd8f1c94d89",
diff --git a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-device-token.json b/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-device-token.json
index 5418f441db7..53323a00850 100644
--- a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-device-token.json
+++ b/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-device-token.json
@@ -3,7 +3,7 @@
"family": "session.terminal-display-mode",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "9e90ad39a8d4257adf30166757a6364c4710dc3ae9f06365f80a3dd8f1c94d89",
diff --git a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-viewport.json b/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-viewport.json
index 121c6a2f9ab..fc57e97eb1f 100644
--- a/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-viewport.json
+++ b/mobile/rpc-foundation/goldens/session-terminal-display-mode-auto-without-viewport.json
@@ -3,7 +3,7 @@
"family": "session.terminal-display-mode",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "9e90ad39a8d4257adf30166757a6364c4710dc3ae9f06365f80a3dd8f1c94d89",
diff --git a/mobile/rpc-foundation/goldens/session-terminal-display-mode-drops-second-toggle.json b/mobile/rpc-foundation/goldens/session-terminal-display-mode-drops-second-toggle.json
index 6de5a5d6d2e..fa0f936bac5 100644
--- a/mobile/rpc-foundation/goldens/session-terminal-display-mode-drops-second-toggle.json
+++ b/mobile/rpc-foundation/goldens/session-terminal-display-mode-drops-second-toggle.json
@@ -3,7 +3,7 @@
"family": "session.terminal-display-mode",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "9e90ad39a8d4257adf30166757a6364c4710dc3ae9f06365f80a3dd8f1c94d89",
diff --git a/mobile/rpc-foundation/goldens/session-terminal-display-mode-to-desktop.json b/mobile/rpc-foundation/goldens/session-terminal-display-mode-to-desktop.json
index 1864a5dbd75..267ee68b793 100644
--- a/mobile/rpc-foundation/goldens/session-terminal-display-mode-to-desktop.json
+++ b/mobile/rpc-foundation/goldens/session-terminal-display-mode-to-desktop.json
@@ -3,7 +3,7 @@
"family": "session.terminal-display-mode",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "9e90ad39a8d4257adf30166757a6364c4710dc3ae9f06365f80a3dd8f1c94d89",
diff --git a/mobile/rpc-foundation/goldens/session-terminal-list-dedupes-handles.json b/mobile/rpc-foundation/goldens/session-terminal-list-dedupes-handles.json
index 60fcb870949..dde7b4e2b1d 100644
--- a/mobile/rpc-foundation/goldens/session-terminal-list-dedupes-handles.json
+++ b/mobile/rpc-foundation/goldens/session-terminal-list-dedupes-handles.json
@@ -3,7 +3,7 @@
"family": "session.terminal-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/session-terminal-list-empty-guarded.json b/mobile/rpc-foundation/goldens/session-terminal-list-empty-guarded.json
index cace4dc8432..1304b6d2d15 100644
--- a/mobile/rpc-foundation/goldens/session-terminal-list-empty-guarded.json
+++ b/mobile/rpc-foundation/goldens/session-terminal-list-empty-guarded.json
@@ -3,7 +3,7 @@
"family": "session.terminal-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/session-terminal-list-merged.json b/mobile/rpc-foundation/goldens/session-terminal-list-merged.json
index 3221a29beba..2466a6acb85 100644
--- a/mobile/rpc-foundation/goldens/session-terminal-list-merged.json
+++ b/mobile/rpc-foundation/goldens/session-terminal-list-merged.json
@@ -3,7 +3,7 @@
"family": "session.terminal-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/session-terminal-list-refused.json b/mobile/rpc-foundation/goldens/session-terminal-list-refused.json
index bf26523ba64..3060f266068 100644
--- a/mobile/rpc-foundation/goldens/session-terminal-list-refused.json
+++ b/mobile/rpc-foundation/goldens/session-terminal-list-refused.json
@@ -3,7 +3,7 @@
"family": "session.terminal-inventory",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "a3daf9a05d05424959baf77feb45cb0c076d77d8c49e877941ed612cc1e5ce95",
diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json
index 6b1c2c84311..ea89099af12 100644
--- a/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.bot-overrides",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json
index 6de323b4f41..7b34727382f 100644
--- a/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json
+++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json
@@ -3,7 +3,7 @@
"family": "settings.bot-overrides",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json
index b62449ba10d..289cea6a4dd 100644
--- a/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json
+++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json
@@ -3,7 +3,7 @@
"family": "settings.bot-overrides",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json
index a851964b460..469cc04e8ba 100644
--- a/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json
+++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json
@@ -3,7 +3,7 @@
"family": "settings.bot-overrides",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-home-coalesced.json b/mobile/rpc-foundation/goldens/settings-home-coalesced.json
index 226a1a20f2d..4bbda1487af 100644
--- a/mobile/rpc-foundation/goldens/settings-home-coalesced.json
+++ b/mobile/rpc-foundation/goldens/settings-home-coalesced.json
@@ -3,7 +3,7 @@
"family": "settings.home-providers",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json b/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json
index ebd04a3356e..6331f10b5b1 100644
--- a/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.home-providers",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json
index 429c80d4b08..fc844d3e4c5 100644
--- a/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json
+++ b/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json
@@ -3,7 +3,7 @@
"family": "settings.home-providers",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-refused.json b/mobile/rpc-foundation/goldens/settings-home-providers-refused.json
index 1474568ae39..a33e64c910d 100644
--- a/mobile/rpc-foundation/goldens/settings-home-providers-refused.json
+++ b/mobile/rpc-foundation/goldens/settings-home-providers-refused.json
@@ -3,7 +3,7 @@
"family": "settings.home-providers",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json b/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json
index 715286e8ebe..d226228b33c 100644
--- a/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json
+++ b/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json
@@ -3,7 +3,7 @@
"family": "settings.home-providers",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-refused.json b/mobile/rpc-foundation/goldens/settings-new-tab-refused.json
index f9604a5b3bc..0fd8b5c545f 100644
--- a/mobile/rpc-foundation/goldens/settings-new-tab-refused.json
+++ b/mobile/rpc-foundation/goldens/settings-new-tab-refused.json
@@ -3,7 +3,7 @@
"family": "settings-agent-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json b/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json
index 4d9ce988867..dd636c43ac7 100644
--- a/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json
+++ b/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json
@@ -3,7 +3,7 @@
"family": "settings-agent-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json b/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json
index de64e9a41cc..0e85224755f 100644
--- a/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json
+++ b/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json
@@ -3,7 +3,7 @@
"family": "settings-agent-read",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "448cdbd12f4f6a14bb33947bfbbb1837aebeb28979db70c62f2ba2fbb4d89c8f",
diff --git a/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json b/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json
index d3481d643dc..284bb8dccb9 100644
--- a/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json
+++ b/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json
index 8ebbc2753f7..7dc7dafba2d 100644
--- a/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-icons.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-icons.json
index f048620d0d5..74b9b368ead 100644
--- a/mobile/rpc-foundation/goldens/settings-repo-metadata-icons.json
+++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-icons.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json
index 15dba24c9bb..048e91bc4a8 100644
--- a/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json
+++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json
index 3a1a65f8dcb..ab5ab06802b 100644
--- a/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json
+++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json
index bd538d91102..295f1a89e66 100644
--- a/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json
+++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json
index 6da7fe8d072..762aa330182 100644
--- a/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json
+++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json
@@ -3,7 +3,7 @@
"family": "settings.repo-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json
index 471ab71032e..59f94319994 100644
--- a/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.resume-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json
index 2ee613a3134..238e05b697f 100644
--- a/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json
+++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json
@@ -3,7 +3,7 @@
"family": "settings.resume-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json
index be7838631e7..0d2aea110fe 100644
--- a/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json
+++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json
@@ -3,7 +3,7 @@
"family": "settings.resume-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json
index aa99242acec..b493d8301c2 100644
--- a/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json
+++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json
@@ -3,7 +3,7 @@
"family": "settings.resume-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json
index 3fcec8c482f..f7402150df1 100644
--- a/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.task-hydration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json
index 4f0f96f0e41..675935e6a07 100644
--- a/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json
+++ b/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json
@@ -3,7 +3,7 @@
"family": "settings.task-hydration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json b/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json
index 937baf88e37..6f8b8978654 100644
--- a/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json
+++ b/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json
@@ -3,7 +3,7 @@
"family": "settings.task-hydration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json b/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json
index b782fb5e591..6f16b412587 100644
--- a/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json
+++ b/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json
@@ -3,7 +3,7 @@
"family": "settings.task-hydration",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-create-linear.json b/mobile/rpc-foundation/goldens/settings-task-workspace-create-linear.json
index 0c438fc92df..d1e31a418e8 100644
--- a/mobile/rpc-foundation/goldens/settings-task-workspace-create-linear.json
+++ b/mobile/rpc-foundation/goldens/settings-task-workspace-create-linear.json
@@ -3,7 +3,7 @@
"family": "settings.task-workspace-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-create-pr-start-point.json b/mobile/rpc-foundation/goldens/settings-task-workspace-create-pr-start-point.json
index d55e85421d2..6f6ad5a0181 100644
--- a/mobile/rpc-foundation/goldens/settings-task-workspace-create-pr-start-point.json
+++ b/mobile/rpc-foundation/goldens/settings-task-workspace-create-pr-start-point.json
@@ -3,7 +3,7 @@
"family": "settings.task-workspace-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json b/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json
index 492651b81ff..fe964a2851b 100644
--- a/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.task-workspace",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json b/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json
index 188aa5e90aa..a4cf15ec20d 100644
--- a/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json
+++ b/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json
@@ -3,7 +3,7 @@
"family": "settings.task-workspace",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json b/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json
index e6291280731..bf1825fc881 100644
--- a/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json
+++ b/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json
@@ -3,7 +3,7 @@
"family": "settings.task-workspace",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/settings-task-write.json b/mobile/rpc-foundation/goldens/settings-task-write.json
index 8a6c1c8b10f..16b50f96b15 100644
--- a/mobile/rpc-foundation/goldens/settings-task-write.json
+++ b/mobile/rpc-foundation/goldens/settings-task-write.json
@@ -3,7 +3,7 @@
"family": "settings-best-effort",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d3b7f33d810e1fa420ac41a628cde9fe4a9e65fd57f89fbca0a40fc7d74951ab",
diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json
index f799c1c49ac..6d9360e04cb 100644
--- a/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-context",
"namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json
index c8ff050f3f3..5a194a928fc 100644
--- a/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json
+++ b/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-context",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json b/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json
index 61d83e93fcc..66dfc1b18a6 100644
--- a/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json
+++ b/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-context",
"namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json b/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json
index 21613db1119..a4355d8caed 100644
--- a/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json
+++ b/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-context",
"namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "fc73116d95985606fe32f22d3f14f434a6d5cd49219416c9fa0f47f971fa6ff0",
diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json
index 63e4a0a9a7e..cceb0745c9b 100644
--- a/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-submit",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json
index f10d21c18bf..3de0a24d855 100644
--- a/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json
+++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-submit",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json
index b3bde4982df..0e4952a9c40 100644
--- a/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json
+++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json
@@ -3,7 +3,7 @@
"family": "settings.workspace-submit",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c2eed306311a844cd6f2f84b6513c0a1182f86a5e3cace434385b8287c80d7c5",
diff --git a/mobile/rpc-foundation/goldens/speech-audio-chunk-acknowledged.json b/mobile/rpc-foundation/goldens/speech-audio-chunk-acknowledged.json
index 22f6bb82c19..9dc8018eb3a 100644
--- a/mobile/rpc-foundation/goldens/speech-audio-chunk-acknowledged.json
+++ b/mobile/rpc-foundation/goldens/speech-audio-chunk-acknowledged.json
@@ -3,7 +3,7 @@
"family": "speech.dictation-chunk",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/speech-desktop-start-fulfilled.json b/mobile/rpc-foundation/goldens/speech-desktop-start-fulfilled.json
index c3510db9168..5829932c84a 100644
--- a/mobile/rpc-foundation/goldens/speech-desktop-start-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/speech-desktop-start-fulfilled.json
@@ -3,7 +3,7 @@
"family": "speech.dictation-start",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/speech-desktop-start-recording-failed.json b/mobile/rpc-foundation/goldens/speech-desktop-start-recording-failed.json
index 92489c0eacd..c357fd080b1 100644
--- a/mobile/rpc-foundation/goldens/speech-desktop-start-recording-failed.json
+++ b/mobile/rpc-foundation/goldens/speech-desktop-start-recording-failed.json
@@ -3,7 +3,7 @@
"family": "speech.dictation-start",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/speech-desktop-start-superseded.json b/mobile/rpc-foundation/goldens/speech-desktop-start-superseded.json
index 5073763f67c..ff341a979c2 100644
--- a/mobile/rpc-foundation/goldens/speech-desktop-start-superseded.json
+++ b/mobile/rpc-foundation/goldens/speech-desktop-start-superseded.json
@@ -3,7 +3,7 @@
"family": "speech.dictation-start",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/speech-dictation-session-cancelled.json b/mobile/rpc-foundation/goldens/speech-dictation-session-cancelled.json
index 89a63fad74a..33dce7408fe 100644
--- a/mobile/rpc-foundation/goldens/speech-dictation-session-cancelled.json
+++ b/mobile/rpc-foundation/goldens/speech-dictation-session-cancelled.json
@@ -3,7 +3,7 @@
"family": "speech.dictation-session",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/speech-dictation-session-transcript.json b/mobile/rpc-foundation/goldens/speech-dictation-session-transcript.json
index ae60401c885..bbdd2636205 100644
--- a/mobile/rpc-foundation/goldens/speech-dictation-session-transcript.json
+++ b/mobile/rpc-foundation/goldens/speech-dictation-session-transcript.json
@@ -3,7 +3,7 @@
"family": "speech.dictation-session",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/speech-setup-sheet-denied-to-mobile.json b/mobile/rpc-foundation/goldens/speech-setup-sheet-denied-to-mobile.json
index e3d2438bb88..e074e2b00fb 100644
--- a/mobile/rpc-foundation/goldens/speech-setup-sheet-denied-to-mobile.json
+++ b/mobile/rpc-foundation/goldens/speech-setup-sheet-denied-to-mobile.json
@@ -3,7 +3,7 @@
"family": "speech.setup-sheet",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/speech-setup-sheet-fulfilled.json b/mobile/rpc-foundation/goldens/speech-setup-sheet-fulfilled.json
index a8377b0a20a..ad2c2b29997 100644
--- a/mobile/rpc-foundation/goldens/speech-setup-sheet-fulfilled.json
+++ b/mobile/rpc-foundation/goldens/speech-setup-sheet-fulfilled.json
@@ -3,7 +3,7 @@
"family": "speech.setup-sheet",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/speech-setup-sheet-legacy-desktop.json b/mobile/rpc-foundation/goldens/speech-setup-sheet-legacy-desktop.json
index 993bb15fa76..f9ff05f9bfa 100644
--- a/mobile/rpc-foundation/goldens/speech-setup-sheet-legacy-desktop.json
+++ b/mobile/rpc-foundation/goldens/speech-setup-sheet-legacy-desktop.json
@@ -3,7 +3,7 @@
"family": "speech.setup-sheet",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/speech-setup-sheet-model-vocabulary.json b/mobile/rpc-foundation/goldens/speech-setup-sheet-model-vocabulary.json
index 3a93947f175..a861cd3df34 100644
--- a/mobile/rpc-foundation/goldens/speech-setup-sheet-model-vocabulary.json
+++ b/mobile/rpc-foundation/goldens/speech-setup-sheet-model-vocabulary.json
@@ -3,7 +3,7 @@
"family": "speech.setup-sheet",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "5d978690e3626892b83bdba64537f9b1e1bb66c2060a00517ceead042a6d2334",
diff --git a/mobile/rpc-foundation/goldens/structured-agent-session-created.json b/mobile/rpc-foundation/goldens/structured-agent-session-created.json
index 0cbd771d2d9..c6ee43ea489 100644
--- a/mobile/rpc-foundation/goldens/structured-agent-session-created.json
+++ b/mobile/rpc-foundation/goldens/structured-agent-session-created.json
@@ -3,7 +3,7 @@
"family": "agentSession.structured-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d340697a64a198066b1037a550afb9a0de7507246a545901d2fc0a23407f38d6",
diff --git a/mobile/rpc-foundation/goldens/structured-launch-created.json b/mobile/rpc-foundation/goldens/structured-launch-created.json
index 90d70038ec3..fee02228fc6 100644
--- a/mobile/rpc-foundation/goldens/structured-launch-created.json
+++ b/mobile/rpc-foundation/goldens/structured-launch-created.json
@@ -3,7 +3,7 @@
"family": "agentSession.structured-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d340697a64a198066b1037a550afb9a0de7507246a545901d2fc0a23407f38d6",
diff --git a/mobile/rpc-foundation/goldens/structured-launch-definitive-refusal.json b/mobile/rpc-foundation/goldens/structured-launch-definitive-refusal.json
index 1e71a87e696..a8ee592e54e 100644
--- a/mobile/rpc-foundation/goldens/structured-launch-definitive-refusal.json
+++ b/mobile/rpc-foundation/goldens/structured-launch-definitive-refusal.json
@@ -3,7 +3,7 @@
"family": "agentSession.structured-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d340697a64a198066b1037a550afb9a0de7507246a545901d2fc0a23407f38d6",
diff --git a/mobile/rpc-foundation/goldens/structured-launch-replays-dropped-create.json b/mobile/rpc-foundation/goldens/structured-launch-replays-dropped-create.json
index 46b2de730fa..682e73782d9 100644
--- a/mobile/rpc-foundation/goldens/structured-launch-replays-dropped-create.json
+++ b/mobile/rpc-foundation/goldens/structured-launch-replays-dropped-create.json
@@ -3,7 +3,7 @@
"family": "agentSession.structured-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d340697a64a198066b1037a550afb9a0de7507246a545901d2fc0a23407f38d6",
diff --git a/mobile/rpc-foundation/goldens/structured-launch-support-refused.json b/mobile/rpc-foundation/goldens/structured-launch-support-refused.json
index 6e8d7887fc3..11a1ae08e72 100644
--- a/mobile/rpc-foundation/goldens/structured-launch-support-refused.json
+++ b/mobile/rpc-foundation/goldens/structured-launch-support-refused.json
@@ -3,7 +3,7 @@
"family": "agentSession.structured-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d340697a64a198066b1037a550afb9a0de7507246a545901d2fc0a23407f38d6",
diff --git a/mobile/rpc-foundation/goldens/structured-launch-unsupported.json b/mobile/rpc-foundation/goldens/structured-launch-unsupported.json
index de2a78d32bb..1d2957a2394 100644
--- a/mobile/rpc-foundation/goldens/structured-launch-unsupported.json
+++ b/mobile/rpc-foundation/goldens/structured-launch-unsupported.json
@@ -3,7 +3,7 @@
"family": "agentSession.structured-launch",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d340697a64a198066b1037a550afb9a0de7507246a545901d2fc0a23407f38d6",
diff --git a/mobile/rpc-foundation/goldens/tasks-route-repo-list.json b/mobile/rpc-foundation/goldens/tasks-route-repo-list.json
index 19bcbd46f91..f8ef9c417d6 100644
--- a/mobile/rpc-foundation/goldens/tasks-route-repo-list.json
+++ b/mobile/rpc-foundation/goldens/tasks-route-repo-list.json
@@ -3,7 +3,7 @@
"family": "tasks.route-repo-list",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "23f974df8b57c723069605de1db80c339ead286b18aae38e67fce03ea50c5180",
diff --git a/mobile/rpc-foundation/goldens/terminal-gesture-flush-and-clear.json b/mobile/rpc-foundation/goldens/terminal-gesture-flush-and-clear.json
index 01688f75af6..3f3a88e9bae 100644
--- a/mobile/rpc-foundation/goldens/terminal-gesture-flush-and-clear.json
+++ b/mobile/rpc-foundation/goldens/terminal-gesture-flush-and-clear.json
@@ -3,7 +3,7 @@
"family": "session.terminal-gesture-input",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "9d119d5ec320e2538105d6ff673b9f4b8e3decbe46527947489dffbcf2ac0472",
diff --git a/mobile/rpc-foundation/goldens/terminal-input-send-accepted.json b/mobile/rpc-foundation/goldens/terminal-input-send-accepted.json
index 58cea0d2054..10cd3e65573 100644
--- a/mobile/rpc-foundation/goldens/terminal-input-send-accepted.json
+++ b/mobile/rpc-foundation/goldens/terminal-input-send-accepted.json
@@ -3,7 +3,7 @@
"family": "session.terminal-input-send",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/terminal-input-send-refused.json b/mobile/rpc-foundation/goldens/terminal-input-send-refused.json
index 863e9b841de..7ffb62337a0 100644
--- a/mobile/rpc-foundation/goldens/terminal-input-send-refused.json
+++ b/mobile/rpc-foundation/goldens/terminal-input-send-refused.json
@@ -3,7 +3,7 @@
"family": "session.terminal-input-send",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/terminal-live-input-accepted.json b/mobile/rpc-foundation/goldens/terminal-live-input-accepted.json
index 771f682039a..ca673c6d596 100644
--- a/mobile/rpc-foundation/goldens/terminal-live-input-accepted.json
+++ b/mobile/rpc-foundation/goldens/terminal-live-input-accepted.json
@@ -3,7 +3,7 @@
"family": "session.terminal-input-send",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/terminal-paste-accepted.json b/mobile/rpc-foundation/goldens/terminal-paste-accepted.json
index 47bb77f8481..e8fd3b767c4 100644
--- a/mobile/rpc-foundation/goldens/terminal-paste-accepted.json
+++ b/mobile/rpc-foundation/goldens/terminal-paste-accepted.json
@@ -3,7 +3,7 @@
"family": "session.terminal-paste",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/terminal-paste-refused.json b/mobile/rpc-foundation/goldens/terminal-paste-refused.json
index 4064a4633a2..f488db77f38 100644
--- a/mobile/rpc-foundation/goldens/terminal-paste-refused.json
+++ b/mobile/rpc-foundation/goldens/terminal-paste-refused.json
@@ -3,7 +3,7 @@
"family": "session.terminal-paste",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/terminal-query-reply-accepted.json b/mobile/rpc-foundation/goldens/terminal-query-reply-accepted.json
index e15624ff3bf..19d2effe75d 100644
--- a/mobile/rpc-foundation/goldens/terminal-query-reply-accepted.json
+++ b/mobile/rpc-foundation/goldens/terminal-query-reply-accepted.json
@@ -3,10 +3,10 @@
"family": "terminal.query-reply",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "bfa1d5f83b4112d3cce6a19e9dc27daf9281ed99745bc01bd19226dd7b268c71",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/terminal-query-reply-unsubscribed.json b/mobile/rpc-foundation/goldens/terminal-query-reply-unsubscribed.json
index 3077fb26458..d7676e22d1c 100644
--- a/mobile/rpc-foundation/goldens/terminal-query-reply-unsubscribed.json
+++ b/mobile/rpc-foundation/goldens/terminal-query-reply-unsubscribed.json
@@ -3,10 +3,10 @@
"family": "terminal.query-reply",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "ad03596f31eeccc5e9eb7e5061b1af705f9af249f76377c8f5ce1a9db257770f",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/terminal-raw-input-refused.json b/mobile/rpc-foundation/goldens/terminal-raw-input-refused.json
index fc9bbc698d8..9946ad0e68d 100644
--- a/mobile/rpc-foundation/goldens/terminal-raw-input-refused.json
+++ b/mobile/rpc-foundation/goldens/terminal-raw-input-refused.json
@@ -3,10 +3,10 @@
"family": "terminal.raw-input",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "76fc0c1499ec48a67428f35eba705f68147d2ff2c344b67aa0c9d60ed999f173",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/terminal-raw-input-reported.json b/mobile/rpc-foundation/goldens/terminal-raw-input-reported.json
index cbf95b31627..3c20eb9d6a9 100644
--- a/mobile/rpc-foundation/goldens/terminal-raw-input-reported.json
+++ b/mobile/rpc-foundation/goldens/terminal-raw-input-reported.json
@@ -3,10 +3,10 @@
"family": "terminal.raw-input",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "579077efd3a4652a6930af3f6690138c20536270cbcd7274246047d2e322199f",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/terminal-takeover-report-accepted.json b/mobile/rpc-foundation/goldens/terminal-takeover-report-accepted.json
index 7b44d646c84..e3fab46651a 100644
--- a/mobile/rpc-foundation/goldens/terminal-takeover-report-accepted.json
+++ b/mobile/rpc-foundation/goldens/terminal-takeover-report-accepted.json
@@ -3,10 +3,10 @@
"family": "terminal.takeover-report",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "c2236257032fab72ebb007391313eec4e5f0a1bdb4fbcbd907117f9914ffafc6",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/terminal-takeover-report-retried.json b/mobile/rpc-foundation/goldens/terminal-takeover-report-retried.json
index 01b71dfff14..58e97af466f 100644
--- a/mobile/rpc-foundation/goldens/terminal-takeover-report-retried.json
+++ b/mobile/rpc-foundation/goldens/terminal-takeover-report-retried.json
@@ -3,10 +3,10 @@
"family": "terminal.takeover-report",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "8ad436ca6c3de8b0b3148326337acce18a8a4cf3c514acad1a4530a001f28c75",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/terminal-viewport-refit-applied.json b/mobile/rpc-foundation/goldens/terminal-viewport-refit-applied.json
index 26e3a4753a5..174eef0fa8f 100644
--- a/mobile/rpc-foundation/goldens/terminal-viewport-refit-applied.json
+++ b/mobile/rpc-foundation/goldens/terminal-viewport-refit-applied.json
@@ -3,10 +3,10 @@
"family": "terminal.viewport-refit",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "f966c2ef2e747a5231f423147ddaf38458cb08c719434b274016a5e4abc10771",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/terminal-viewport-refit-legacy-desktop.json b/mobile/rpc-foundation/goldens/terminal-viewport-refit-legacy-desktop.json
index 33e3ca46682..8ea1c81bd6b 100644
--- a/mobile/rpc-foundation/goldens/terminal-viewport-refit-legacy-desktop.json
+++ b/mobile/rpc-foundation/goldens/terminal-viewport-refit-legacy-desktop.json
@@ -3,10 +3,10 @@
"family": "terminal.viewport-refit",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
- "adapterSha256": "7588d30f33a8bb846c48f160aa9a4a8138176662bb2fb6be7bbdf352f553d05f",
+ "adapterSha256": "42e1fe434b591ab5a945b6b366bbb20b567085d58bade63413f2251e8202b255",
"scenarioSha256": "88961a369cb7a7fa92708bb83aa7f818e904018e8cfcedc2f50ef9a0058c8b9d",
"platform": "darwin",
"scenarioVersion": 1,
diff --git a/mobile/rpc-foundation/goldens/terminal-worktree-connection-resolved.json b/mobile/rpc-foundation/goldens/terminal-worktree-connection-resolved.json
index 1ec22f27a7c..b60492b1439 100644
--- a/mobile/rpc-foundation/goldens/terminal-worktree-connection-resolved.json
+++ b/mobile/rpc-foundation/goldens/terminal-worktree-connection-resolved.json
@@ -3,7 +3,7 @@
"family": "session.worktree-connection",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "e7e3718f685e3713cf1b8209d59d618741f892bd286853b79bb456c59cec8d86",
diff --git a/mobile/rpc-foundation/goldens/tk-create-github.json b/mobile/rpc-foundation/goldens/tk-create-github.json
index a726a46c4f6..9edbf4c7c5b 100644
--- a/mobile/rpc-foundation/goldens/tk-create-github.json
+++ b/mobile/rpc-foundation/goldens/tk-create-github.json
@@ -3,7 +3,7 @@
"family": "tasks.task-create-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/tk-create-gitlab.json b/mobile/rpc-foundation/goldens/tk-create-gitlab.json
index f4f9c9afa2b..9ac18768f93 100644
--- a/mobile/rpc-foundation/goldens/tk-create-gitlab.json
+++ b/mobile/rpc-foundation/goldens/tk-create-gitlab.json
@@ -3,7 +3,7 @@
"family": "tasks.task-create-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/tk-create-linear.json b/mobile/rpc-foundation/goldens/tk-create-linear.json
index 20b8040d9ed..23757a18f58 100644
--- a/mobile/rpc-foundation/goldens/tk-create-linear.json
+++ b/mobile/rpc-foundation/goldens/tk-create-linear.json
@@ -3,7 +3,7 @@
"family": "tasks.task-create-linear",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/tk-item-checks-files.json b/mobile/rpc-foundation/goldens/tk-item-checks-files.json
index 4cabc430fff..15de8ca9770 100644
--- a/mobile/rpc-foundation/goldens/tk-item-checks-files.json
+++ b/mobile/rpc-foundation/goldens/tk-item-checks-files.json
@@ -3,7 +3,7 @@
"family": "tasks.item-checks-files",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8c4218bfb2af227da5386f29989cec438f2c6187f39ce1c06859e136ea920bfa",
diff --git a/mobile/rpc-foundation/goldens/tk-item-comment-github.json b/mobile/rpc-foundation/goldens/tk-item-comment-github.json
index 0a55ca31202..37c60805918 100644
--- a/mobile/rpc-foundation/goldens/tk-item-comment-github.json
+++ b/mobile/rpc-foundation/goldens/tk-item-comment-github.json
@@ -3,7 +3,7 @@
"family": "tasks.item-comment-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/tk-item-comment-gitlab-mr.json b/mobile/rpc-foundation/goldens/tk-item-comment-gitlab-mr.json
index 40e605fe433..3ba00962b59 100644
--- a/mobile/rpc-foundation/goldens/tk-item-comment-gitlab-mr.json
+++ b/mobile/rpc-foundation/goldens/tk-item-comment-gitlab-mr.json
@@ -3,7 +3,7 @@
"family": "tasks.item-comment-gitlab-mr",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/tk-item-comment-gitlab.json b/mobile/rpc-foundation/goldens/tk-item-comment-gitlab.json
index 14f5ead074a..d2149f2bbb8 100644
--- a/mobile/rpc-foundation/goldens/tk-item-comment-gitlab.json
+++ b/mobile/rpc-foundation/goldens/tk-item-comment-gitlab.json
@@ -3,7 +3,7 @@
"family": "tasks.item-comment-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/tk-item-detail-github-reactions.json b/mobile/rpc-foundation/goldens/tk-item-detail-github-reactions.json
index 4f23edc6f67..ec05baaebff 100644
--- a/mobile/rpc-foundation/goldens/tk-item-detail-github-reactions.json
+++ b/mobile/rpc-foundation/goldens/tk-item-detail-github-reactions.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c0ef16b959002e4a3c5347114a0844b95670e274ef010d910b6671ac5f49e783",
diff --git a/mobile/rpc-foundation/goldens/tk-item-detail-github.json b/mobile/rpc-foundation/goldens/tk-item-detail-github.json
index 51d4ec36f3f..b9c0b5cf4d9 100644
--- a/mobile/rpc-foundation/goldens/tk-item-detail-github.json
+++ b/mobile/rpc-foundation/goldens/tk-item-detail-github.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c0ef16b959002e4a3c5347114a0844b95670e274ef010d910b6671ac5f49e783",
diff --git a/mobile/rpc-foundation/goldens/tk-item-detail-gitlab-reactions.json b/mobile/rpc-foundation/goldens/tk-item-detail-gitlab-reactions.json
index e2e39f7c74f..3a85e9dfb3b 100644
--- a/mobile/rpc-foundation/goldens/tk-item-detail-gitlab-reactions.json
+++ b/mobile/rpc-foundation/goldens/tk-item-detail-gitlab-reactions.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c0ef16b959002e4a3c5347114a0844b95670e274ef010d910b6671ac5f49e783",
diff --git a/mobile/rpc-foundation/goldens/tk-item-detail-gitlab.json b/mobile/rpc-foundation/goldens/tk-item-detail-gitlab.json
index 2023b9c80bc..85466d2d9a5 100644
--- a/mobile/rpc-foundation/goldens/tk-item-detail-gitlab.json
+++ b/mobile/rpc-foundation/goldens/tk-item-detail-gitlab.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c0ef16b959002e4a3c5347114a0844b95670e274ef010d910b6671ac5f49e783",
diff --git a/mobile/rpc-foundation/goldens/tk-item-detail-linear.json b/mobile/rpc-foundation/goldens/tk-item-detail-linear.json
index 2f3ae90a849..4104e9807b0 100644
--- a/mobile/rpc-foundation/goldens/tk-item-detail-linear.json
+++ b/mobile/rpc-foundation/goldens/tk-item-detail-linear.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-linear",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c0ef16b959002e4a3c5347114a0844b95670e274ef010d910b6671ac5f49e783",
diff --git a/mobile/rpc-foundation/goldens/tk-item-detail-metadata.json b/mobile/rpc-foundation/goldens/tk-item-detail-metadata.json
index cc85399092f..b7d3c3548a8 100644
--- a/mobile/rpc-foundation/goldens/tk-item-detail-metadata.json
+++ b/mobile/rpc-foundation/goldens/tk-item-detail-metadata.json
@@ -3,7 +3,7 @@
"family": "tasks.item-detail-metadata",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "58ea1553e04017c993aea4753aace41ee664705a3fdb3b18569c5a9d7968cf06",
diff --git a/mobile/rpc-foundation/goldens/tk-item-merge-gitlab.json b/mobile/rpc-foundation/goldens/tk-item-merge-gitlab.json
index 2c31e18c383..f0f1cee85a6 100644
--- a/mobile/rpc-foundation/goldens/tk-item-merge-gitlab.json
+++ b/mobile/rpc-foundation/goldens/tk-item-merge-gitlab.json
@@ -3,7 +3,7 @@
"family": "tasks.item-merge-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/tk-item-metadata-github.json b/mobile/rpc-foundation/goldens/tk-item-metadata-github.json
index 82b72617e49..5baef64f2e6 100644
--- a/mobile/rpc-foundation/goldens/tk-item-metadata-github.json
+++ b/mobile/rpc-foundation/goldens/tk-item-metadata-github.json
@@ -3,7 +3,7 @@
"family": "tasks.item-metadata-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "97cfbcd82778ed6517ca2d10b2f3ad5a8d366e380d7846c1e89d5a5baf17e739",
diff --git a/mobile/rpc-foundation/goldens/tk-item-metadata-gitlab-mr.json b/mobile/rpc-foundation/goldens/tk-item-metadata-gitlab-mr.json
index 814c8263b05..084b033b396 100644
--- a/mobile/rpc-foundation/goldens/tk-item-metadata-gitlab-mr.json
+++ b/mobile/rpc-foundation/goldens/tk-item-metadata-gitlab-mr.json
@@ -3,7 +3,7 @@
"family": "tasks.item-metadata-gitlab-mr",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "97cfbcd82778ed6517ca2d10b2f3ad5a8d366e380d7846c1e89d5a5baf17e739",
diff --git a/mobile/rpc-foundation/goldens/tk-item-metadata-gitlab.json b/mobile/rpc-foundation/goldens/tk-item-metadata-gitlab.json
index 44142a90a86..ce49d95e747 100644
--- a/mobile/rpc-foundation/goldens/tk-item-metadata-gitlab.json
+++ b/mobile/rpc-foundation/goldens/tk-item-metadata-gitlab.json
@@ -3,7 +3,7 @@
"family": "tasks.item-metadata-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "97cfbcd82778ed6517ca2d10b2f3ad5a8d366e380d7846c1e89d5a5baf17e739",
diff --git a/mobile/rpc-foundation/goldens/tk-item-reply-merge.json b/mobile/rpc-foundation/goldens/tk-item-reply-merge.json
index e210a5ead08..0b84be2a477 100644
--- a/mobile/rpc-foundation/goldens/tk-item-reply-merge.json
+++ b/mobile/rpc-foundation/goldens/tk-item-reply-merge.json
@@ -3,7 +3,7 @@
"family": "tasks.item-reply-merge",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/tk-item-review-github.json b/mobile/rpc-foundation/goldens/tk-item-review-github.json
index e41d0e3f547..4f77e5964ab 100644
--- a/mobile/rpc-foundation/goldens/tk-item-review-github.json
+++ b/mobile/rpc-foundation/goldens/tk-item-review-github.json
@@ -3,7 +3,7 @@
"family": "tasks.item-review-github",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8f68885d57a9aa76d80ba0ee29a95bdbaa98cef29c79c68ce75d67202cde7bfe",
diff --git a/mobile/rpc-foundation/goldens/tk-item-status-gitlab-mr.json b/mobile/rpc-foundation/goldens/tk-item-status-gitlab-mr.json
index ba7d9ac3817..fd4bf42ab43 100644
--- a/mobile/rpc-foundation/goldens/tk-item-status-gitlab-mr.json
+++ b/mobile/rpc-foundation/goldens/tk-item-status-gitlab-mr.json
@@ -3,7 +3,7 @@
"family": "tasks.item-status-gitlab-mr",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8c4218bfb2af227da5386f29989cec438f2c6187f39ce1c06859e136ea920bfa",
diff --git a/mobile/rpc-foundation/goldens/tk-item-status-gitlab.json b/mobile/rpc-foundation/goldens/tk-item-status-gitlab.json
index d6dd3ba15f4..f1f85970c98 100644
--- a/mobile/rpc-foundation/goldens/tk-item-status-gitlab.json
+++ b/mobile/rpc-foundation/goldens/tk-item-status-gitlab.json
@@ -3,7 +3,7 @@
"family": "tasks.item-status-gitlab",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "8c4218bfb2af227da5386f29989cec438f2c6187f39ce1c06859e136ea920bfa",
diff --git a/mobile/rpc-foundation/goldens/tk-linear-connect.json b/mobile/rpc-foundation/goldens/tk-linear-connect.json
index bfc0ed83f31..74b99af9a03 100644
--- a/mobile/rpc-foundation/goldens/tk-linear-connect.json
+++ b/mobile/rpc-foundation/goldens/tk-linear-connect.json
@@ -3,7 +3,7 @@
"family": "tasks.linear-connect",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/tk-linear-item.json b/mobile/rpc-foundation/goldens/tk-linear-item.json
index 08f7b0f1356..ed7a2a596ab 100644
--- a/mobile/rpc-foundation/goldens/tk-linear-item.json
+++ b/mobile/rpc-foundation/goldens/tk-linear-item.json
@@ -3,7 +3,7 @@
"family": "tasks.linear-item",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "97cfbcd82778ed6517ca2d10b2f3ad5a8d366e380d7846c1e89d5a5baf17e739",
diff --git a/mobile/rpc-foundation/goldens/tk-linear-team-context.json b/mobile/rpc-foundation/goldens/tk-linear-team-context.json
index 6dbb8334cc3..a6770bfc5ac 100644
--- a/mobile/rpc-foundation/goldens/tk-linear-team-context.json
+++ b/mobile/rpc-foundation/goldens/tk-linear-team-context.json
@@ -3,7 +3,7 @@
"family": "tasks.linear-team-context",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "58ea1553e04017c993aea4753aace41ee664705a3fdb3b18569c5a9d7968cf06",
diff --git a/mobile/rpc-foundation/goldens/tk-list-gitlab-items.json b/mobile/rpc-foundation/goldens/tk-list-gitlab-items.json
index 64059fab834..37eff4e2533 100644
--- a/mobile/rpc-foundation/goldens/tk-list-gitlab-items.json
+++ b/mobile/rpc-foundation/goldens/tk-list-gitlab-items.json
@@ -3,7 +3,7 @@
"family": "tasks.task-list-gitlab-items",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/tk-list-gitlab-todos.json b/mobile/rpc-foundation/goldens/tk-list-gitlab-todos.json
index 210cfd07a12..2cbfdc71345 100644
--- a/mobile/rpc-foundation/goldens/tk-list-gitlab-todos.json
+++ b/mobile/rpc-foundation/goldens/tk-list-gitlab-todos.json
@@ -3,7 +3,7 @@
"family": "tasks.task-list-gitlab-todos",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/tk-list-linear.json b/mobile/rpc-foundation/goldens/tk-list-linear.json
index 96a532789fc..2cdee6f7f84 100644
--- a/mobile/rpc-foundation/goldens/tk-list-linear.json
+++ b/mobile/rpc-foundation/goldens/tk-list-linear.json
@@ -3,7 +3,7 @@
"family": "tasks.task-list-linear",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/tk-project-board-load.json b/mobile/rpc-foundation/goldens/tk-project-board-load.json
index 22a42461470..d495876e45a 100644
--- a/mobile/rpc-foundation/goldens/tk-project-board-load.json
+++ b/mobile/rpc-foundation/goldens/tk-project-board-load.json
@@ -3,7 +3,7 @@
"family": "tasks.project-board-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c4272385ed3b0de4feab38de9e4f6363ecd6317fdd4de47f76a98eb18abaf371",
diff --git a/mobile/rpc-foundation/goldens/tk-project-repo-slugs.json b/mobile/rpc-foundation/goldens/tk-project-repo-slugs.json
index 961d20cf95a..13bea2fa111 100644
--- a/mobile/rpc-foundation/goldens/tk-project-repo-slugs.json
+++ b/mobile/rpc-foundation/goldens/tk-project-repo-slugs.json
@@ -3,7 +3,7 @@
"family": "tasks.project-repo-slugs",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "c4272385ed3b0de4feab38de9e4f6363ecd6317fdd4de47f76a98eb18abaf371",
diff --git a/mobile/rpc-foundation/goldens/tk-project-row-comments-issue.json b/mobile/rpc-foundation/goldens/tk-project-row-comments-issue.json
index bf33769920e..ad2609c4a53 100644
--- a/mobile/rpc-foundation/goldens/tk-project-row-comments-issue.json
+++ b/mobile/rpc-foundation/goldens/tk-project-row-comments-issue.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-comments-issue",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55058202df36c8b951510215936e496ea88d3d71a6690090a13c52deb13e34e1",
diff --git a/mobile/rpc-foundation/goldens/tk-project-row-comments-pr.json b/mobile/rpc-foundation/goldens/tk-project-row-comments-pr.json
index afb5f3acb3d..cc93506baee 100644
--- a/mobile/rpc-foundation/goldens/tk-project-row-comments-pr.json
+++ b/mobile/rpc-foundation/goldens/tk-project-row-comments-pr.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-comments-pr",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55058202df36c8b951510215936e496ea88d3d71a6690090a13c52deb13e34e1",
diff --git a/mobile/rpc-foundation/goldens/tk-project-row-detail.json b/mobile/rpc-foundation/goldens/tk-project-row-detail.json
index 3c65285510b..f81ea5085c2 100644
--- a/mobile/rpc-foundation/goldens/tk-project-row-detail.json
+++ b/mobile/rpc-foundation/goldens/tk-project-row-detail.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-detail",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "f8f6e5d500f959b9b15c5498885a05422747880b6aef4ad795bc3064ebbacea6",
diff --git a/mobile/rpc-foundation/goldens/tk-project-row-fields.json b/mobile/rpc-foundation/goldens/tk-project-row-fields.json
index 2a2cab6daf8..ecf900b7b9b 100644
--- a/mobile/rpc-foundation/goldens/tk-project-row-fields.json
+++ b/mobile/rpc-foundation/goldens/tk-project-row-fields.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-fields",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "370aeaee59978071ccb821da13c9e6114936c168947b608539cdb80d40cc9889",
diff --git a/mobile/rpc-foundation/goldens/tk-project-row-files-merge.json b/mobile/rpc-foundation/goldens/tk-project-row-files-merge.json
index 2fc2ea87383..50770208962 100644
--- a/mobile/rpc-foundation/goldens/tk-project-row-files-merge.json
+++ b/mobile/rpc-foundation/goldens/tk-project-row-files-merge.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-files-merge",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "b228732762828412ad3d9eec3ece00a897d866046e37044322c3911758d6e0a9",
diff --git a/mobile/rpc-foundation/goldens/tk-project-row-metadata-load.json b/mobile/rpc-foundation/goldens/tk-project-row-metadata-load.json
index 500429e320a..b22f912af37 100644
--- a/mobile/rpc-foundation/goldens/tk-project-row-metadata-load.json
+++ b/mobile/rpc-foundation/goldens/tk-project-row-metadata-load.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-metadata-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "f8f6e5d500f959b9b15c5498885a05422747880b6aef4ad795bc3064ebbacea6",
diff --git a/mobile/rpc-foundation/goldens/tk-project-row-review-checks.json b/mobile/rpc-foundation/goldens/tk-project-row-review-checks.json
index 4ec4863bda4..065975ecbd2 100644
--- a/mobile/rpc-foundation/goldens/tk-project-row-review-checks.json
+++ b/mobile/rpc-foundation/goldens/tk-project-row-review-checks.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-review-checks",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "370aeaee59978071ccb821da13c9e6114936c168947b608539cdb80d40cc9889",
diff --git a/mobile/rpc-foundation/goldens/tk-project-row-threads.json b/mobile/rpc-foundation/goldens/tk-project-row-threads.json
index 23bdef3a306..3f77cab43cf 100644
--- a/mobile/rpc-foundation/goldens/tk-project-row-threads.json
+++ b/mobile/rpc-foundation/goldens/tk-project-row-threads.json
@@ -3,7 +3,7 @@
"family": "tasks.project-row-threads",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "55058202df36c8b951510215936e496ea88d3d71a6690090a13c52deb13e34e1",
diff --git a/mobile/rpc-foundation/goldens/tk-provider-load.json b/mobile/rpc-foundation/goldens/tk-provider-load.json
index e88a216086d..ad1489bb3ad 100644
--- a/mobile/rpc-foundation/goldens/tk-provider-load.json
+++ b/mobile/rpc-foundation/goldens/tk-provider-load.json
@@ -3,7 +3,7 @@
"family": "tasks.provider-load",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "07a15e900363faa25bc364f5bc1c330f96798abfeaed35210428c2ac558586b8",
diff --git a/mobile/rpc-foundation/goldens/transport-capability-probe-cutover-reasks-fast.json b/mobile/rpc-foundation/goldens/transport-capability-probe-cutover-reasks-fast.json
index 54bcd548b6e..fc3e688a0d5 100644
--- a/mobile/rpc-foundation/goldens/transport-capability-probe-cutover-reasks-fast.json
+++ b/mobile/rpc-foundation/goldens/transport-capability-probe-cutover-reasks-fast.json
@@ -3,7 +3,7 @@
"family": "transport.capability-probe",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/transport-capability-probe-non-string-capabilities-drop.json b/mobile/rpc-foundation/goldens/transport-capability-probe-non-string-capabilities-drop.json
index d3c7c22440b..c5f1d44911e 100644
--- a/mobile/rpc-foundation/goldens/transport-capability-probe-non-string-capabilities-drop.json
+++ b/mobile/rpc-foundation/goldens/transport-capability-probe-non-string-capabilities-drop.json
@@ -3,7 +3,7 @@
"family": "transport.capability-probe",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/transport-capability-probe-publishes.json b/mobile/rpc-foundation/goldens/transport-capability-probe-publishes.json
index 0090c0cba62..4283db94a47 100644
--- a/mobile/rpc-foundation/goldens/transport-capability-probe-publishes.json
+++ b/mobile/rpc-foundation/goldens/transport-capability-probe-publishes.json
@@ -3,7 +3,7 @@
"family": "transport.capability-probe",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/transport-capability-probe-refused-backs-off.json b/mobile/rpc-foundation/goldens/transport-capability-probe-refused-backs-off.json
index ae52069f08e..ebb9d1fb932 100644
--- a/mobile/rpc-foundation/goldens/transport-capability-probe-refused-backs-off.json
+++ b/mobile/rpc-foundation/goldens/transport-capability-probe-refused-backs-off.json
@@ -3,7 +3,7 @@
"family": "transport.capability-probe",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/transport-host-status-gates-drop-keeps-capabilities.json b/mobile/rpc-foundation/goldens/transport-host-status-gates-drop-keeps-capabilities.json
index 68cee611928..9aa6562f39f 100644
--- a/mobile/rpc-foundation/goldens/transport-host-status-gates-drop-keeps-capabilities.json
+++ b/mobile/rpc-foundation/goldens/transport-host-status-gates-drop-keeps-capabilities.json
@@ -3,7 +3,7 @@
"family": "transport.host-status-gates",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/transport-host-status-gates-ready.json b/mobile/rpc-foundation/goldens/transport-host-status-gates-ready.json
index 88bdfee6cd3..40132e9e1ec 100644
--- a/mobile/rpc-foundation/goldens/transport-host-status-gates-ready.json
+++ b/mobile/rpc-foundation/goldens/transport-host-status-gates-ready.json
@@ -3,7 +3,7 @@
"family": "transport.host-status-gates",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/transport-host-status-gates-refused-degrades.json b/mobile/rpc-foundation/goldens/transport-host-status-gates-refused-degrades.json
index ad65205ce63..99d4963780d 100644
--- a/mobile/rpc-foundation/goldens/transport-host-status-gates-refused-degrades.json
+++ b/mobile/rpc-foundation/goldens/transport-host-status-gates-refused-degrades.json
@@ -3,7 +3,7 @@
"family": "transport.host-status-gates",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/transport-pairing-race-both-refused.json b/mobile/rpc-foundation/goldens/transport-pairing-race-both-refused.json
index e1f6c3668e4..3d655a8f42b 100644
--- a/mobile/rpc-foundation/goldens/transport-pairing-race-both-refused.json
+++ b/mobile/rpc-foundation/goldens/transport-pairing-race-both-refused.json
@@ -3,7 +3,7 @@
"family": "transport.pairing-race",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/transport-pairing-race-direct-completes-first.json b/mobile/rpc-foundation/goldens/transport-pairing-race-direct-completes-first.json
index ef39cd9db68..92a2b4eecd7 100644
--- a/mobile/rpc-foundation/goldens/transport-pairing-race-direct-completes-first.json
+++ b/mobile/rpc-foundation/goldens/transport-pairing-race-direct-completes-first.json
@@ -3,7 +3,7 @@
"family": "transport.pairing-race",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/transport-pairing-race-relay-completes-first.json b/mobile/rpc-foundation/goldens/transport-pairing-race-relay-completes-first.json
index ebb1c60ac0c..2feb84554d1 100644
--- a/mobile/rpc-foundation/goldens/transport-pairing-race-relay-completes-first.json
+++ b/mobile/rpc-foundation/goldens/transport-pairing-race-relay-completes-first.json
@@ -3,7 +3,7 @@
"family": "transport.pairing-race",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/transport-pairing-race-relay-wins-when-direct-refused.json b/mobile/rpc-foundation/goldens/transport-pairing-race-relay-wins-when-direct-refused.json
index 75ab705edc8..957af87f160 100644
--- a/mobile/rpc-foundation/goldens/transport-pairing-race-relay-wins-when-direct-refused.json
+++ b/mobile/rpc-foundation/goldens/transport-pairing-race-relay-wins-when-direct-refused.json
@@ -3,7 +3,7 @@
"family": "transport.pairing-race",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "34b382b13fe75e8ef4002325287c95b3c4db62eeaaf3762af7fbaf6f836c2fa1",
diff --git a/mobile/rpc-foundation/goldens/tw-capabilities-advertised.json b/mobile/rpc-foundation/goldens/tw-capabilities-advertised.json
index 92e5862a0de..556c4b649c2 100644
--- a/mobile/rpc-foundation/goldens/tw-capabilities-advertised.json
+++ b/mobile/rpc-foundation/goldens/tw-capabilities-advertised.json
@@ -3,7 +3,7 @@
"family": "worktree.runtime-capabilities",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-capabilities-cutover-retried.json b/mobile/rpc-foundation/goldens/tw-capabilities-cutover-retried.json
index 426010a0005..8573b4902c7 100644
--- a/mobile/rpc-foundation/goldens/tw-capabilities-cutover-retried.json
+++ b/mobile/rpc-foundation/goldens/tw-capabilities-cutover-retried.json
@@ -3,7 +3,7 @@
"family": "worktree.runtime-capabilities",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-capabilities-legacy-idempotency.json b/mobile/rpc-foundation/goldens/tw-capabilities-legacy-idempotency.json
index 6d525a05c69..12ac26904e2 100644
--- a/mobile/rpc-foundation/goldens/tw-capabilities-legacy-idempotency.json
+++ b/mobile/rpc-foundation/goldens/tw-capabilities-legacy-idempotency.json
@@ -3,7 +3,7 @@
"family": "worktree.runtime-capabilities",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-agent-launched.json b/mobile/rpc-foundation/goldens/tw-create-retry-agent-launched.json
index 01a9a5577ab..35bcbfa6500 100644
--- a/mobile/rpc-foundation/goldens/tw-create-retry-agent-launched.json
+++ b/mobile/rpc-foundation/goldens/tw-create-retry-agent-launched.json
@@ -3,11 +3,11 @@
"family": "worktree.agent-launch-create",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
- "scenarioSha256": "d193972745f28b4a8da9b19176ba9825b7b6eb78f28802c6f6eea99e155fdfe6",
+ "scenarioSha256": "85595f5fdde16441d22bf07c14c65edda6cb90019d036aae2c5031d19664e66f",
"platform": "darwin",
"scenarioVersion": 1,
"projectionVersion": 2,
diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-after-drop.json b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-after-drop.json
index d398ba67dd7..0e109a4c28c 100644
--- a/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-after-drop.json
+++ b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-after-drop.json
@@ -3,7 +3,7 @@
"family": "worktree.create-retry",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-while-connected.json b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-while-connected.json
index b18f96b3a00..5174ee540e1 100644
--- a/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-while-connected.json
+++ b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-while-connected.json
@@ -3,7 +3,7 @@
"family": "worktree.create-retry",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-without-idempotency.json b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-without-idempotency.json
index 3953f544385..1937c32ae84 100644
--- a/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-without-idempotency.json
+++ b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-without-idempotency.json
@@ -3,7 +3,7 @@
"family": "worktree.create-retry",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-created.json b/mobile/rpc-foundation/goldens/tw-create-retry-created.json
index 93cf39b3cca..b419ccb9433 100644
--- a/mobile/rpc-foundation/goldens/tw-create-retry-created.json
+++ b/mobile/rpc-foundation/goldens/tw-create-retry-created.json
@@ -3,7 +3,7 @@
"family": "worktree.create-retry",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-name-collision.json b/mobile/rpc-foundation/goldens/tw-create-retry-name-collision.json
index 2688ddeca28..addd1959fa9 100644
--- a/mobile/rpc-foundation/goldens/tw-create-retry-name-collision.json
+++ b/mobile/rpc-foundation/goldens/tw-create-retry-name-collision.json
@@ -3,7 +3,7 @@
"family": "worktree.create-retry",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-unretryable-refusal.json b/mobile/rpc-foundation/goldens/tw-create-retry-unretryable-refusal.json
index 16590290455..38dfeaf46a9 100644
--- a/mobile/rpc-foundation/goldens/tw-create-retry-unretryable-refusal.json
+++ b/mobile/rpc-foundation/goldens/tw-create-retry-unretryable-refusal.json
@@ -3,7 +3,7 @@
"family": "worktree.create-retry",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-warning-kept.json b/mobile/rpc-foundation/goldens/tw-create-retry-warning-kept.json
index 9d28ac5e786..6516a11579d 100644
--- a/mobile/rpc-foundation/goldens/tw-create-retry-warning-kept.json
+++ b/mobile/rpc-foundation/goldens/tw-create-retry-warning-kept.json
@@ -3,7 +3,7 @@
"family": "worktree.create-retry",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-hosted-base-resolved.json b/mobile/rpc-foundation/goldens/tw-hosted-base-resolved.json
index 76953af095b..ee87403dcdd 100644
--- a/mobile/rpc-foundation/goldens/tw-hosted-base-resolved.json
+++ b/mobile/rpc-foundation/goldens/tw-hosted-base-resolved.json
@@ -3,7 +3,7 @@
"family": "worktree.hosted-base",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-hosted-base-soft-error.json b/mobile/rpc-foundation/goldens/tw-hosted-base-soft-error.json
index 39f0f001989..ca34001ac4f 100644
--- a/mobile/rpc-foundation/goldens/tw-hosted-base-soft-error.json
+++ b/mobile/rpc-foundation/goldens/tw-hosted-base-soft-error.json
@@ -3,7 +3,7 @@
"family": "worktree.hosted-base",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-paste-lookup-resolved.json b/mobile/rpc-foundation/goldens/tw-paste-lookup-resolved.json
index 6689f2bbbb0..74e3431b0c5 100644
--- a/mobile/rpc-foundation/goldens/tw-paste-lookup-resolved.json
+++ b/mobile/rpc-foundation/goldens/tw-paste-lookup-resolved.json
@@ -3,7 +3,7 @@
"family": "tasks.paste-lookup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-refused.json b/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-refused.json
index 367f5ffbcdc..382f8b47a98 100644
--- a/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-refused.json
+++ b/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-refused.json
@@ -3,7 +3,7 @@
"family": "tasks.paste-lookup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-unsupported.json b/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-unsupported.json
index f917e9f58fa..5cf0fb3c664 100644
--- a/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-unsupported.json
+++ b/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-unsupported.json
@@ -3,7 +3,7 @@
"family": "tasks.paste-lookup",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-setup-hook-trust-always.json b/mobile/rpc-foundation/goldens/tw-setup-hook-trust-always.json
index feb1f1fcdcd..07943ec8864 100644
--- a/mobile/rpc-foundation/goldens/tw-setup-hook-trust-always.json
+++ b/mobile/rpc-foundation/goldens/tw-setup-hook-trust-always.json
@@ -3,7 +3,7 @@
"family": "worktree.setup-hook-trust",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-setup-hook-trust-approved.json b/mobile/rpc-foundation/goldens/tw-setup-hook-trust-approved.json
index 2a4d94f99b2..e9c9c89dd10 100644
--- a/mobile/rpc-foundation/goldens/tw-setup-hook-trust-approved.json
+++ b/mobile/rpc-foundation/goldens/tw-setup-hook-trust-approved.json
@@ -3,7 +3,7 @@
"family": "worktree.setup-hook-trust",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-smart-search-all-providers.json b/mobile/rpc-foundation/goldens/tw-smart-search-all-providers.json
index ec8cc0c3ed4..eb5eec8394d 100644
--- a/mobile/rpc-foundation/goldens/tw-smart-search-all-providers.json
+++ b/mobile/rpc-foundation/goldens/tw-smart-search-all-providers.json
@@ -3,7 +3,7 @@
"family": "tasks.smart-source-search",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-smart-search-gitlab-provider-error.json b/mobile/rpc-foundation/goldens/tw-smart-search-gitlab-provider-error.json
index 62c836bdb6e..c5a55c67575 100644
--- a/mobile/rpc-foundation/goldens/tw-smart-search-gitlab-provider-error.json
+++ b/mobile/rpc-foundation/goldens/tw-smart-search-gitlab-provider-error.json
@@ -3,7 +3,7 @@
"family": "tasks.smart-source-search",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-smart-search-linear-listed.json b/mobile/rpc-foundation/goldens/tw-smart-search-linear-listed.json
index 4df4df34170..a1b1cdd0247 100644
--- a/mobile/rpc-foundation/goldens/tw-smart-search-linear-listed.json
+++ b/mobile/rpc-foundation/goldens/tw-smart-search-linear-listed.json
@@ -3,7 +3,7 @@
"family": "tasks.smart-source-search",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "52a76b7a830b32287bce14abbe1b9d9ac70e71eafe5b4c6801c2eb14a4150125",
diff --git a/mobile/rpc-foundation/goldens/tw-task-preferences-resume-write.json b/mobile/rpc-foundation/goldens/tw-task-preferences-resume-write.json
index c7d527bbb11..6184077cf59 100644
--- a/mobile/rpc-foundation/goldens/tw-task-preferences-resume-write.json
+++ b/mobile/rpc-foundation/goldens/tw-task-preferences-resume-write.json
@@ -3,7 +3,7 @@
"family": "settings-best-effort",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "d3b7f33d810e1fa420ac41a628cde9fe4a9e65fd57f89fbca0a40fc7d74951ab",
diff --git a/mobile/rpc-foundation/goldens/tw-workspace-source-presets-refused.json b/mobile/rpc-foundation/goldens/tw-workspace-source-presets-refused.json
index 0f0de6b95f3..0b246c45426 100644
--- a/mobile/rpc-foundation/goldens/tw-workspace-source-presets-refused.json
+++ b/mobile/rpc-foundation/goldens/tw-workspace-source-presets-refused.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-source",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/tw-workspace-source-presets.json b/mobile/rpc-foundation/goldens/tw-workspace-source-presets.json
index d5461af71c6..ada7e73f232 100644
--- a/mobile/rpc-foundation/goldens/tw-workspace-source-presets.json
+++ b/mobile/rpc-foundation/goldens/tw-workspace-source-presets.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-source",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/tw-workspace-sparse-missing-preset.json b/mobile/rpc-foundation/goldens/tw-workspace-sparse-missing-preset.json
index b104a2455c9..aa5fb681f76 100644
--- a/mobile/rpc-foundation/goldens/tw-workspace-sparse-missing-preset.json
+++ b/mobile/rpc-foundation/goldens/tw-workspace-sparse-missing-preset.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-sparse",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/tw-workspace-sparse-saved.json b/mobile/rpc-foundation/goldens/tw-workspace-sparse-saved.json
index 544c156a0b2..a9a0adfbd30 100644
--- a/mobile/rpc-foundation/goldens/tw-workspace-sparse-saved.json
+++ b/mobile/rpc-foundation/goldens/tw-workspace-sparse-saved.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-sparse",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-connect-refused.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-connect-refused.json
index a0b373b47ba..f77e63d59d4 100644
--- a/mobile/rpc-foundation/goldens/tw-workspace-ssh-connect-refused.json
+++ b/mobile/rpc-foundation/goldens/tw-workspace-ssh-connect-refused.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-ssh",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-connected.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-connected.json
index d686144493e..dbdf3aa282d 100644
--- a/mobile/rpc-foundation/goldens/tw-workspace-ssh-connected.json
+++ b/mobile/rpc-foundation/goldens/tw-workspace-ssh-connected.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-ssh",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-local-agents.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-local-agents.json
index 25be3c5da35..42ab1548b5c 100644
--- a/mobile/rpc-foundation/goldens/tw-workspace-ssh-local-agents.json
+++ b/mobile/rpc-foundation/goldens/tw-workspace-ssh-local-agents.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-ssh-local",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-not-ready.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-not-ready.json
index b58c3a9d770..31f60e7b635 100644
--- a/mobile/rpc-foundation/goldens/tw-workspace-ssh-not-ready.json
+++ b/mobile/rpc-foundation/goldens/tw-workspace-ssh-not-ready.json
@@ -3,7 +3,7 @@
"family": "tasks.workspace-ssh",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e567302ac8acffcfd602c9b323ecf8b5b7c0c4692bda1a4c881011a91d98979",
diff --git a/mobile/rpc-foundation/goldens/worktree-catalog-snapshot-unreadable.json b/mobile/rpc-foundation/goldens/worktree-catalog-snapshot-unreadable.json
index 3ae6f12c913..14d129b25f2 100644
--- a/mobile/rpc-foundation/goldens/worktree-catalog-snapshot-unreadable.json
+++ b/mobile/rpc-foundation/goldens/worktree-catalog-snapshot-unreadable.json
@@ -3,7 +3,7 @@
"family": "worktree.catalog-snapshot",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e942ddfbaa0ba6bfc2993969276987f6528ac53765d125e99a830e261f93a8e",
diff --git a/mobile/rpc-foundation/goldens/worktree-catalog-snapshot.json b/mobile/rpc-foundation/goldens/worktree-catalog-snapshot.json
index b2970073a31..79b9fd77f2a 100644
--- a/mobile/rpc-foundation/goldens/worktree-catalog-snapshot.json
+++ b/mobile/rpc-foundation/goldens/worktree-catalog-snapshot.json
@@ -3,7 +3,7 @@
"family": "worktree.catalog-snapshot",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e942ddfbaa0ba6bfc2993969276987f6528ac53765d125e99a830e261f93a8e",
diff --git a/mobile/rpc-foundation/goldens/worktree-home-catalog.json b/mobile/rpc-foundation/goldens/worktree-home-catalog.json
index f22373adb55..596cae592e7 100644
--- a/mobile/rpc-foundation/goldens/worktree-home-catalog.json
+++ b/mobile/rpc-foundation/goldens/worktree-home-catalog.json
@@ -3,7 +3,7 @@
"family": "worktree.home-catalog",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e942ddfbaa0ba6bfc2993969276987f6528ac53765d125e99a830e261f93a8e",
diff --git a/mobile/rpc-foundation/goldens/worktree-retired-names.json b/mobile/rpc-foundation/goldens/worktree-retired-names.json
index 82bbadcc79a..4d24bf3cb44 100644
--- a/mobile/rpc-foundation/goldens/worktree-retired-names.json
+++ b/mobile/rpc-foundation/goldens/worktree-retired-names.json
@@ -3,7 +3,7 @@
"family": "worktree.retired-names",
"namedDeltas": [],
"runnerVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"lockfileSha256": "9317f3a98ab047f9f96fe26fd8531b8a632ac5954064b322f41a904148cbf6bb",
"recorderSha256": "0317fe2aebe4743ce5e7ae194531aa91b4fe0a84df457640851fe6dfdb9362af",
"adapterSha256": "4e942ddfbaa0ba6bfc2993969276987f6528ac53765d125e99a830e261f93a8e",
diff --git a/mobile/rpc-foundation/pilot-scenarios.json b/mobile/rpc-foundation/pilot-scenarios.json
index ba0616def2d..6e8f716a83b 100644
--- a/mobile/rpc-foundation/pilot-scenarios.json
+++ b/mobile/rpc-foundation/pilot-scenarios.json
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
- "baseline": "44b829c8178af0e08ba953aa45e5c4c907164bf5",
+ "baseline": "2077956254c707d904c066ca890dc25f3671fb70",
"scenarios": [
{
"id": "b1",
diff --git a/mobile/src/components/MobileDiffReviewDrawers.tsx b/mobile/src/components/MobileDiffReviewDrawers.tsx
index 1fcf17a9fcb..828a09beaec 100644
--- a/mobile/src/components/MobileDiffReviewDrawers.tsx
+++ b/mobile/src/components/MobileDiffReviewDrawers.tsx
@@ -1,8 +1,7 @@
import { useMemo } from 'react'
-import { KeyboardAvoidingView, Platform, Pressable, Text, TextInput, View } from 'react-native'
+import { KeyboardAvoidingView, Pressable, Text, TextInput, View } from 'react-native'
import { Check, Copy, FileText, Plus, Send, Trash2, X } from 'lucide-react-native'
import type { DiffComment } from '../../../src/shared/diff-comment-types'
-import { useKeyboardAvoidingPadding } from '../platform/keyboard-occlusion'
import { colors } from '../theme/mobile-theme'
import type { ActionSheetAction } from './ActionSheetModal'
import { ActionSheetContent } from './ActionSheetModal'
@@ -17,6 +16,7 @@ import {
import { reviewSheetKey, type ReviewSheet } from '../session/mobile-diff-review-sheets'
import type { useMobileDiffReviewController } from '../session/use-mobile-diff-review-controller'
import { mobileDiffReviewStyles as styles } from './mobile-diff-review-screen-styles'
+import { hostOs } from '../platform/host-os'
type Props = {
controller: ReturnType
@@ -196,15 +196,8 @@ function sendSheetMessage(
}
function NoteComposerContent({ controller, composer }: Props & { composer: ComposerState }) {
- // Zero on a phone, where `KeyboardAvoidingView` above already moved this; the page's own
- // keyboard measurement where it cannot, because that view is driven by events RN Web never
- // sends. Padding rather than a second avoiding view: the drawer owns the position.
- const keyboardPadding = useKeyboardAvoidingPadding()
return (
- 0 ? { paddingBottom: keyboardPadding } : undefined}
- >
+
diff --git a/mobile/src/components/MobileHostCard.tsx b/mobile/src/components/MobileHostCard.tsx
index cadaf186fb2..19cf9d93993 100644
--- a/mobile/src/components/MobileHostCard.tsx
+++ b/mobile/src/components/MobileHostCard.tsx
@@ -178,7 +178,6 @@ const styles = StyleSheet.create({
metaText: { flex: 1, fontSize: 12, color: colors.textSecondary },
worktreeMetaText: {
marginTop: 2,
- marginLeft: spacing.xl,
fontSize: 12,
color: colors.textMuted
},
diff --git a/mobile/src/components/ProtocolBlockScreen.test.ts b/mobile/src/components/ProtocolBlockScreen.test.ts
index a69b52566e3..c0dd920293d 100644
--- a/mobile/src/components/ProtocolBlockScreen.test.ts
+++ b/mobile/src/components/ProtocolBlockScreen.test.ts
@@ -151,6 +151,19 @@ describe('ProtocolBlockScreen', () => {
expect(primaryActionUrl()).toBe(RELEASES_URL)
})
+ it('sends a desktop whose page is older than this shell to the desktop update', () => {
+ const output = render({
+ kind: 'blocked',
+ reason: 'bundle-incompatible',
+ side: 'desktop',
+ pageVersion: 0,
+ requiredPageVersion: 1
+ })
+ expect(output).toContain('Update Orca on your computer')
+ expect(output).toContain('This paired desktop app is too old for your current Orca Mobile app')
+ expect(primaryActionUrl()).toBe(RELEASES_URL)
+ })
+
it('routes an Android bundle wall to GitHub Releases, not a store that has no listing', () => {
nativeTestState.platform.OS = 'android'
const output = render({
diff --git a/mobile/src/components/StatusDot.tsx b/mobile/src/components/StatusDot.tsx
index f9514b4e0bf..a1e974f1cd2 100644
--- a/mobile/src/components/StatusDot.tsx
+++ b/mobile/src/components/StatusDot.tsx
@@ -42,7 +42,6 @@ const styles = StyleSheet.create({
dot: {
width: 8,
height: 8,
- borderRadius: 4,
- marginRight: 8
+ borderRadius: 4
}
})
diff --git a/mobile/src/components/mobile-agent-icon-assets.ts b/mobile/src/components/mobile-agent-icon-assets.ts
index 473b557096e..8d0a6d474f7 100644
--- a/mobile/src/components/mobile-agent-icon-assets.ts
+++ b/mobile/src/components/mobile-agent-icon-assets.ts
@@ -18,6 +18,7 @@ export const MOBILE_AGENT_ICON_ASSETS: Partial ({
NotificationFeedbackType: {}
}))
vi.mock('expo-clipboard', () => ({ setStringAsync: vi.fn() }))
-vi.mock('../platform/keyboard-occlusion', () => ({ useKeyboardAvoidingPadding: () => 0 }))
vi.mock('./mobile-diff-review-screen-styles', () => ({
mobileDiffReviewStyles: new Proxy({}, { get: () => ({}) })
}))
diff --git a/mobile/src/components/mounted-bottom-drawer-page-keyboard.web.test.tsx b/mobile/src/components/mounted-bottom-drawer-page-keyboard.web.test.tsx
index a741f5c864d..d7d0c67a0cb 100644
--- a/mobile/src/components/mounted-bottom-drawer-page-keyboard.web.test.tsx
+++ b/mobile/src/components/mounted-bottom-drawer-page-keyboard.web.test.tsx
@@ -69,6 +69,7 @@ vi.mock('react-native-reanimated', () => ({
}))
import { MountedBottomDrawer } from './mounted-bottom-drawer'
+import { publishShellKeyboardSource } from '../platform/keyboard-occlusion.web'
const RESTING_HEIGHT = 900
const IME_HEIGHT = 300
@@ -106,15 +107,36 @@ describe('a fill-mode sheet on the page', () => {
act(() => renderer.unmount())
})
- it('does not lift over a keyboard the shell already shortened the WebView for', () => {
- setWindowHeight(RESTING_HEIGHT)
- const renderer = renderFillSheet()
- act(() => setWindowHeight(RESTING_HEIGHT - IME_HEIGHT))
- // The shortened window is the whole avoidance: the sheet's height follows it and nothing lifts.
- expect(sheetStyle(renderer)).toMatchObject({
- marginBottom: 0,
- height: RESTING_HEIGHT - IME_HEIGHT - 24 - 16
+ it('sits on the keyboard the shell says covers the page, as it does natively', () => {
+ let height = 0
+ const listeners = new Set<(next: number) => void>()
+ publishShellKeyboardSource({
+ read: () => height,
+ subscribe: (listener) => {
+ listeners.add(listener)
+ return () => listeners.delete(listener)
+ }
})
- act(() => renderer.unmount())
+ try {
+ setWindowHeight(RESTING_HEIGHT)
+ const renderer = renderFillSheet()
+ act(() => {
+ height = IME_HEIGHT
+ listeners.forEach((listener) => listener(IME_HEIGHT))
+ })
+ expect(sheetStyle(renderer)).toMatchObject({
+ marginBottom: IME_HEIGHT,
+ height: RESTING_HEIGHT - IME_HEIGHT - 24 - 16
+ })
+ act(() => {
+ height = 0
+ listeners.forEach((listener) => listener(0))
+ })
+ expect(sheetStyle(renderer).marginBottom).toBe(0)
+ act(() => renderer.unmount())
+ expect(listeners.size).toBe(0)
+ } finally {
+ publishShellKeyboardSource(null)
+ }
})
})
diff --git a/mobile/src/components/mounted-bottom-drawer.tsx b/mobile/src/components/mounted-bottom-drawer.tsx
index d42fce7912a..764a3c5437e 100644
--- a/mobile/src/components/mounted-bottom-drawer.tsx
+++ b/mobile/src/components/mounted-bottom-drawer.tsx
@@ -1,13 +1,5 @@
import { type ReactNode, useCallback, useEffect, useRef, useState } from 'react'
-import {
- View,
- Pressable,
- useWindowDimensions,
- ScrollView,
- Keyboard,
- Modal,
- Platform
-} from 'react-native'
+import { View, Pressable, useWindowDimensions, ScrollView, Keyboard, Modal } from 'react-native'
import { useSafeAreaInsets } from 'react-native-safe-area-context'
import { Gesture, GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler'
import Animated, {
@@ -29,6 +21,7 @@ import { useInsideBottomDrawerModalHost } from './bottom-drawer-modal-host'
import { useResponsiveLayout } from '../layout/responsive-layout'
import { useBackClaim } from '../navigation/use-back-claim'
import { currentSoftKeyboardHeight, subscribeSoftKeyboard } from '../platform/keyboard-occlusion'
+import { hostOs } from '../platform/host-os'
const DISMISS_THRESHOLD = 80
const SPRING_CONFIG = { damping: 28, stiffness: 400 }
@@ -131,8 +124,7 @@ export function MountedBottomDrawer({
// Why: KeyboardAvoidingView and useAnimatedKeyboard are both unreliable
// inside Modal (iOS ignores KAV; Android needs adjustNothing for
// useAnimatedKeyboard). The keyboard seam's events work on both platforms
- // and give the exact height; inside the shell's page none fire, because
- // the shell shortens the WebView above the IME.
+ // and give the exact height; inside the shell's page they are the shell's.
useEffect(() => {
// Pinned-under sheets stay visible for size but must not ride the keyboard —
// only the top interactive sheet owns inset/lift.
@@ -147,7 +139,7 @@ export function MountedBottomDrawer({
keyboardHeight,
bottomInset: insets.bottom,
fillAvailable,
- platform: Platform.OS
+ platform: hostOs()
})
setKeyboardInset(inset)
if (duration > 0) {
diff --git a/mobile/src/host-screen/host-screen-primary-styles.ts b/mobile/src/host-screen/host-screen-primary-styles.ts
index 1f13dd17b16..e262af906b5 100644
--- a/mobile/src/host-screen/host-screen-primary-styles.ts
+++ b/mobile/src/host-screen/host-screen-primary-styles.ts
@@ -39,7 +39,7 @@ export const hostScreenPrimaryStyles = StyleSheet.create({
minWidth: 0,
marginRight: spacing.md
},
- hostIdentityLine: { flexDirection: 'row', alignItems: 'center', minWidth: 0 },
+ hostIdentityLine: { flexDirection: 'row', alignItems: 'center', gap: spacing.sm, minWidth: 0 },
hostPlatformText: {
marginLeft: 16,
color: colors.textSecondary,
diff --git a/mobile/src/mobile-web-shell/MobileWebShellScreen.test.tsx b/mobile/src/mobile-web-shell/MobileWebShellScreen.test.tsx
index b41c67a2d71..a93f503bd63 100644
--- a/mobile/src/mobile-web-shell/MobileWebShellScreen.test.tsx
+++ b/mobile/src/mobile-web-shell/MobileWebShellScreen.test.tsx
@@ -39,14 +39,13 @@ import {
textOf,
updateScreen as reRenderScreen
} from './mobile-web-shell-screen-test-harness'
-import { BRIDGE_BACK_CLAIM_NOTIFY, BRIDGE_BACK_FRAME } from './bridge/bridge-page-back'
+import { BRIDGE_BACK_CLAIM_NOTIFY } from './bridge/bridge-page-back'
import { BRIDGE_PAGE_PAINTED } from './bridge/bridge-page-painted'
import {
BRIDGE_FAULT_GRANT,
BRIDGE_NAVIGATE_BACK_NOTIFY,
readBridgeHostMessage
} from './bridge/bridge-envelope'
-import { BRIDGE_ROUTE_UPDATE_ACCEPT } from './bridge/bridge-route-update'
import { MobileWebShellScreen } from './MobileWebShellScreen'
import type { MobileWebShellSessionState } from './mobile-web-shell-session-contract'
import type { ReactTestInstance, ReactTestRenderer } from 'react-test-renderer'
@@ -227,7 +226,7 @@ describe('the hybrid shell screen', () => {
tree: ReactTestRenderer
initRoutes: () => (Record | undefined)[]
move: (next: Record) => Promise
- ready: (accepts?: readonly string[]) => Promise
+ ready: () => Promise
}> {
const element = (next: Record) =>
createElement(MobileWebShellScreen, {
@@ -259,10 +258,10 @@ describe('the hybrid shell screen', () => {
tree.update(element(next))
})
},
- ready: async (accepts = [BRIDGE_ROUTE_UPDATE_ACCEPT]) => {
+ ready: async () => {
await act(async () => {
byName(tree, 'ShellViewProbe')[0]?.props.onBridgeMessage({
- nativeEvent: { json: clientFrame({ type: 'ready', accepts }) }
+ nativeEvent: { json: clientFrame({ type: 'ready' }) }
})
})
}
@@ -302,18 +301,6 @@ describe('the hybrid shell screen', () => {
warned.mockRestore()
})
- it('sends no second init to a page that never said it takes one', async () => {
- dependencies.client = createFakeRpcClient()
- const page = await renderForRoute({ paneKey: '' })
- // A page built before route updates existed declares nothing, and reads a second `init` as a
- // replacement: the route still moves, so its next `ready` is answered with the new one.
- await page.ready([])
- await page.move({ paneKey: 'pane-1' })
- expect(page.initRoutes()).toEqual([{ paneKey: '' }])
- await page.ready([])
- expect(page.initRoutes()).toEqual([{ paneKey: '' }, { paneKey: 'pane-1' }])
- })
-
it('ends that wait on the page asking for a session', async () => {
dependencies.client = createFakeRpcClient()
const tree = await renderScreen(readyState('session-one'))
@@ -434,7 +421,7 @@ describe('the hybrid shell screen', () => {
const tree = await renderScreen(readyState('session-one'))
await act(async () => {
byName(tree, 'ShellViewProbe')[0].props.onBridgeMessage({
- nativeEvent: { json: clientFrame({ type: 'ready', accepts: [BRIDGE_BACK_FRAME] }) }
+ nativeEvent: { json: clientFrame({ type: 'ready' }) }
})
byName(tree, 'ShellViewProbe')[0].props.onBridgeMessage({
nativeEvent: {
@@ -661,25 +648,6 @@ describe('what one case mutates does not reach the next', () => {
client: null
})
})
-
- it('keeps both bar strips off the view for a page that does not pad for them', async () => {
- // A page served from an older desktop has no reader for the insets, so the shell reserves
- // the strips itself. Edge-to-edge makes the manifest's `adjustResize` inert, so the keyboard
- // strip comes off the view too: the page's `visualViewport` reads full height with the IME up.
- const tree = await renderScreen(readyState('session-keyboard'))
- const root = tree.root.find((node) => node.props.testID === 'mobile-web-shell-ready')
- expect(root.props.style[1]).toEqual({ paddingTop: 44, paddingBottom: 8 })
-
- await act(async () => {
- dependencies.keyboardListeners.get('keyboardWillShow')?.({ endCoordinates: { height: 336 } })
- })
- expect(root.props.style[1]).toEqual({ paddingTop: 44, paddingBottom: 336 })
-
- await act(async () => {
- dependencies.keyboardListeners.get('keyboardWillHide')?.({ endCoordinates: { height: 0 } })
- })
- expect(root.props.style[1]).toEqual({ paddingTop: 44, paddingBottom: 8 })
- })
})
/**
@@ -718,17 +686,17 @@ describe('the frame under a page that has not painted', () => {
expect(tree.root.findAll((node) => node.props.testID === 'mobile-web-shell-cover')).toEqual([])
})
- it('covers the same box the view gets, which is what the keyboard strip shortens', async () => {
+ it('covers the same box the view gets, which the keyboard does not shorten', async () => {
// Both are children of the padded root: the view is `flex: 1` and the cover is an absolute
- // fill, so Yoga lays each of them out against the same content box. The keyboard takes its
- // strip off that box, so it takes it off both, and the cover cannot leave a gap the view fills.
+ // fill, so Yoga lays each of them out against the same content box, and the cover cannot leave
+ // a gap the view fills. The keyboard covers that box rather than taking a strip off it.
dependencies.pageFrame = 'unpainted'
const tree = await renderScreen(readyState('session-keyboard-cover'))
const root = tree.root.find((node) => node.props.testID === 'mobile-web-shell-ready')
await act(async () => {
dependencies.keyboardListeners.get('keyboardWillShow')?.({ endCoordinates: { height: 336 } })
})
- expect(root.props.style[1]).toEqual({ paddingTop: 44, paddingBottom: 336 })
+ expect(root.props.style[1]).toEqual({ paddingTop: 0 })
const cover = tree.root.find((node) => node.props.testID === 'mobile-web-shell-cover')
expect(cover.props.style[0]).toMatchObject({
position: 'absolute',
@@ -750,13 +718,10 @@ describe('the frame under a page that has not painted', () => {
const probe = byName(tree, 'ShellViewProbe')[0]
await act(async () => {
probe.props.onBridgeMessage({
- nativeEvent: { json: clientFrame({ type: 'ready', reports: [BRIDGE_PAGE_PAINTED] }) }
+ nativeEvent: { json: clientFrame({ type: 'ready' }) }
})
})
- expect(dependencies.reportPageReady).toHaveBeenCalledWith({
- reports: [BRIDGE_PAGE_PAINTED],
- accepts: []
- })
+ expect(dependencies.reportPageReady).toHaveBeenCalledTimes(1)
await act(async () => {
probe.props.onBridgeMessage({
nativeEvent: { json: clientFrame({ type: 'notify', name: BRIDGE_PAGE_PAINTED }) }
diff --git a/mobile/src/mobile-web-shell/MobileWebShellScreen.tsx b/mobile/src/mobile-web-shell/MobileWebShellScreen.tsx
index 83d6d172499..88cedd9fd6d 100644
--- a/mobile/src/mobile-web-shell/MobileWebShellScreen.tsx
+++ b/mobile/src/mobile-web-shell/MobileWebShellScreen.tsx
@@ -1,13 +1,5 @@
import { useEffect, useState, type ReactNode } from 'react'
-import {
- ActivityIndicator,
- Linking,
- Platform,
- Pressable,
- StyleSheet,
- Text,
- View
-} from 'react-native'
+import { ActivityIndicator, Linking, Pressable, StyleSheet, Text, View } from 'react-native'
import { useNavigation, useRouter } from 'expo-router'
import { useSafeAreaInsets } from 'react-native-safe-area-context'
import {
@@ -34,7 +26,6 @@ import { playPageHaptic } from './page-haptics'
import { useMobileWebShellBridge } from './use-mobile-web-shell-bridge'
import type { MobileWebShellRuntime } from './mobile-web-shell-runtime'
import { useKeyboardOcclusion } from '../platform/keyboard-occlusion'
-import { softwareKeyboardWindowInset } from '../platform/software-keyboard-window-inset'
import { useNativeDeviceVerbs } from '../platform/use-native-device-verbs'
import { useShellPageBack } from './use-shell-page-back'
import { useShellStackPop } from './use-shell-stack-pop'
@@ -178,16 +169,6 @@ export function MobileWebShellScreen({
runtime
}: MobileWebShellScreenProps) {
const insets = useSafeAreaInsets()
- // The page cannot see the IME for itself: edge-to-edge makes the manifest's `adjustResize` inert,
- // so the window never shrinks and `visualViewport` inside the WebView reads full height with the
- // keyboard up — the session route lays its live input row out under the keys. The shell owns the
- // window, so it takes the strip off the view and the page lays out in what is left.
- const keyboardHeight = useKeyboardOcclusion()
- const keyboardInset = softwareKeyboardWindowInset({
- keyboardHeight,
- bottomInset: insets.bottom,
- platform: Platform.OS
- })
const router = useRouter()
const navigation = useNavigation()
const popShellStack = useShellStackPop()
@@ -207,19 +188,18 @@ export function MobileWebShellScreen({
reportPageBackClaim,
pageReady,
pageFrame,
- backClaimed,
- pageOwnsSafeArea
+ backClaimed
} = useMobileWebShellSession({ hostId, routePathname: route.pathname, runtime })
// Which mount the notice was dismissed on, not whether it was: a later refusal opens its own
// generation under a new session id, so it is not silenced by a tap on the one before it.
const [noticeDismissedFor, setNoticeDismissedFor] = useState(null)
const noticeShown =
updateNotice !== null && state.kind === 'ready' && noticeDismissedFor !== state.sessionId
- const pageInsets = pageSafeAreaInsets({
- insets,
- keyboardInset,
- topCovered: noticeShown
- })
+ // The page cannot see the IME for itself: edge-to-edge makes `adjustResize` inert and the view's
+ // IME insets are zeroed, so `visualViewport` never shrinks. The keyboard covers the view like a
+ // native screen, and the page lifts by the height native screens read.
+ const keyboardInset = Math.max(0, useKeyboardOcclusion())
+ const pageInsets = pageSafeAreaInsets({ insets, topCovered: noticeShown })
const { snapshot, unreadable, readStorage, refreshStorage, writeStorage } = usePageHostSnapshot(
hostId,
route.pathname
@@ -242,6 +222,7 @@ export function MobileWebShellScreen({
hostId,
route,
safeAreaInsets: pageInsets,
+ keyboardInset,
pageRoutes,
pageRouteGrants,
routeGrants,
@@ -264,12 +245,12 @@ export function MobileWebShellScreen({
// the map as they are made. This re-seats that map on the store afterwards, for the key whose
// write never persisted, and it runs on every ask because a document that reloads inside this
// mount asks again.
- onPageReady: (ready) => {
- reportPageReady(ready)
+ onPageReady: () => {
+ reportPageReady()
void refreshStorage()
},
// The one thing that says the page is something to look at. The cover below stays up until it
- // lands, for a page that declared it would send one.
+ // lands.
onPagePainted: reportPagePainted,
// While this is true the key below belongs to the page, not to the stack this screen sits on.
onPageBackClaim: reportPageBackClaim,
@@ -323,6 +304,11 @@ export function MobileWebShellScreen({
}, [publishRoute, route])
usePublishedSafeAreaInsets(bridge.publishSafeAreaInsets, pageInsets)
+ // Every keyboard event, a height change while open included, so the page never holds a stale one.
+ const publishKeyboardInset = bridge.publishKeyboardInset
+ useEffect(() => {
+ publishKeyboardInset(keyboardInset)
+ }, [publishKeyboardInset, keyboardInset])
// The navigation object rather than the router: what this takes away is this screen's own place
// on the stack, which is a screen option, and the router has no member that says it.
@@ -372,12 +358,9 @@ export function MobileWebShellScreen({
diff --git a/mobile/src/mobile-web-shell/bridge-host-back.test.ts b/mobile/src/mobile-web-shell/bridge-host-back.test.ts
index 7010e85ea8b..d368c74d524 100644
--- a/mobile/src/mobile-web-shell/bridge-host-back.test.ts
+++ b/mobile/src/mobile-web-shell/bridge-host-back.test.ts
@@ -3,8 +3,8 @@ import { clientFrame } from './bridge-host-test-fakes'
import { harness } from './bridge-host-test-harness'
import { BRIDGE_BACK_CLAIM_NOTIFY, BRIDGE_BACK_FRAME } from './bridge/bridge-page-back'
-function ready(accepts?: readonly string[]): string {
- return clientFrame(accepts === undefined ? { type: 'ready' } : { type: 'ready', accepts })
+function ready(): string {
+ return clientFrame({ type: 'ready' })
}
function claim(claimed: boolean): string {
@@ -21,7 +21,7 @@ function claim(claimed: boolean): string {
describe('the claim a host holds on the device Back key', () => {
it('carries the page taking the key and letting it go, and says neither twice', () => {
const bridge = harness()
- bridge.host.receive(ready([BRIDGE_BACK_FRAME]))
+ bridge.host.receive(ready())
bridge.host.receive(claim(true))
bridge.host.receive(claim(true))
bridge.host.receive(claim(false))
@@ -30,15 +30,15 @@ describe('the claim a host holds on the device Back key', () => {
it('drops it on the next document saying ready, which is the one that has to claim again', () => {
const bridge = harness()
- bridge.host.receive(ready([BRIDGE_BACK_FRAME]))
+ bridge.host.receive(ready())
bridge.host.receive(claim(true))
- bridge.host.receive(ready([BRIDGE_BACK_FRAME]))
+ bridge.host.receive(ready())
expect(bridge.backClaims).toEqual([true, false])
})
it('drops it when the page closes, which is the document saying it is going', () => {
const bridge = harness()
- bridge.host.receive(ready([BRIDGE_BACK_FRAME]))
+ bridge.host.receive(ready())
bridge.host.receive(claim(true))
bridge.host.receive(clientFrame({ type: 'close' }))
expect(bridge.backClaims).toEqual([true, false])
@@ -53,7 +53,7 @@ describe('the claim a host holds on the device Back key', () => {
*/
it('reports nothing when the host itself ends: the claim belongs to the session', () => {
const bridge = harness()
- bridge.host.receive(ready([BRIDGE_BACK_FRAME]))
+ bridge.host.receive(ready())
bridge.host.receive(claim(true))
bridge.host.dispose()
expect(bridge.backClaims).toEqual([true])
@@ -61,35 +61,35 @@ describe('the claim a host holds on the device Back key', () => {
it('hands what the session established to the host that takes over from it', () => {
const bridge = harness()
- bridge.host.receive(ready([BRIDGE_BACK_FRAME]))
+ bridge.host.receive(ready())
bridge.host.receive(claim(true))
bridge.host.dispose()
- expect(bridge.host.readSessionBack()).toEqual({ accepts: [BRIDGE_BACK_FRAME], claimed: true })
+ expect(bridge.host.readSessionBack()).toEqual({ claimed: true })
})
it('takes that seed without announcing a claim the screen never heard go', () => {
const rebuilt = harness({
- sessionBack: { accepts: [BRIDGE_BACK_FRAME], claimed: true },
+ sessionBack: { claimed: true },
sessionEstablished: true
})
expect(rebuilt.backClaims).toEqual([])
- // And it delivers on it: the page said it takes a press, over a session that is still open.
+ // And it delivers on it, over a session that is still open.
expect(rebuilt.host.sendBack()).toBe(true)
expect(rebuilt.last()).toEqual({ v: 1, type: BRIDGE_BACK_FRAME })
})
it('lets the next document reset a carried claim, so the seed is not a latch', () => {
const rebuilt = harness({
- sessionBack: { accepts: [BRIDGE_BACK_FRAME], claimed: true },
+ sessionBack: { claimed: true },
sessionEstablished: true
})
- rebuilt.host.receive(ready([BRIDGE_BACK_FRAME]))
+ rebuilt.host.receive(ready())
expect(rebuilt.backClaims).toEqual([false])
})
it('says nothing on a document that never claimed, so a drop is always a real one', () => {
const bridge = harness()
- bridge.host.receive(ready([BRIDGE_BACK_FRAME]))
+ bridge.host.receive(ready())
bridge.host.receive(clientFrame({ type: 'close' }))
bridge.host.dispose()
expect(bridge.backClaims).toEqual([])
@@ -110,7 +110,7 @@ describe('the claim a host holds on the device Back key', () => {
describe('handing one press to the page', () => {
it('posts a back frame to a page that said it takes one', () => {
const bridge = harness()
- bridge.host.receive(ready([BRIDGE_BACK_FRAME]))
+ bridge.host.receive(ready())
expect(bridge.host.sendBack()).toBe(true)
expect(bridge.last()).toEqual({ v: 1, type: BRIDGE_BACK_FRAME })
})
@@ -120,24 +120,16 @@ describe('handing one press to the page', () => {
* one as `unrecognised-message` and drops the whole thing, so the shell must not send it. False
* is what leaves the press to the navigator, which is what Back did before this lane.
*/
- it('sends nothing to a page that never declared it, and says so to the caller', () => {
- const bridge = harness()
- bridge.host.receive(ready())
- const before = bridge.posted.length
- expect(bridge.host.sendBack()).toBe(false)
- expect(bridge.posted).toHaveLength(before)
- })
-
it('sends nothing between documents, when the view belongs to no page', () => {
const bridge = harness()
- bridge.host.receive(ready([BRIDGE_BACK_FRAME]))
+ bridge.host.receive(ready())
bridge.host.receive(clientFrame({ type: 'close' }))
expect(bridge.host.sendBack()).toBe(false)
})
it('sends nothing once the host is disposed', () => {
const bridge = harness()
- bridge.host.receive(ready([BRIDGE_BACK_FRAME]))
+ bridge.host.receive(ready())
bridge.host.dispose()
expect(bridge.host.sendBack()).toBe(false)
})
diff --git a/mobile/src/mobile-web-shell/bridge-host-back.ts b/mobile/src/mobile-web-shell/bridge-host-back.ts
index b9cbe108e55..a835be0e354 100644
--- a/mobile/src/mobile-web-shell/bridge-host-back.ts
+++ b/mobile/src/mobile-web-shell/bridge-host-back.ts
@@ -2,8 +2,7 @@ import { BRIDGE_PROTOCOL_VERSION, type BridgeHostMessage } from './bridge/bridge
import { BRIDGE_BACK_FRAME } from './bridge/bridge-page-back'
/**
- * What one session has established about the device Back key: what its page declared it takes, and
- * whether it is holding the key right now.
+ * What one session has established about the device Back key: whether its page is holding it.
*
* Carried across a host rebuild rather than relearned, the way `sessionEstablished` already is. A
* client swapped under a live page is not a new document — the WebView stays mounted and the page
@@ -11,8 +10,6 @@ import { BRIDGE_BACK_FRAME } from './bridge/bridge-page-back'
* under an open sheet.
*/
export type BridgeSessionBack = {
- /** What the page's last `ready` said it takes. Empty for a page too old to name the frame. */
- readonly accepts: readonly string[]
readonly claimed: boolean
}
@@ -29,14 +26,12 @@ export type BridgeSessionBack = {
* whoever builds the replacement, and reports nothing, because the claim belongs to the session.
*/
export type BridgeHostBack = {
- /** A document has spoken: it takes what it named, and claims nothing until it says otherwise. */
- readonly readReady: (accepts: readonly string[]) => void
+ /** A document has spoken: it claims nothing until it says otherwise. */
+ readonly readReady: () => void
/** The page holding Back, or letting it go. */
readonly readClaim: (claimed: boolean) => void
- /**
- * Posts one press. False when this page never said it takes one — every page older than the
- * frame — and the caller then leaves Back to the navigator, which is what it did before this.
- */
+ /** Posts one press. False when no document can take it, and the caller leaves Back to the
+ * navigator. */
readonly send: () => boolean
/** The document is gone; whatever it claimed goes with it. */
readonly drop: () => void
@@ -53,7 +48,6 @@ export function createBridgeHostBack(args: {
* a host opening a session of its own, which has established nothing yet. */
established?: BridgeSessionBack
}): BridgeHostBack {
- let accepts: readonly string[] = args.established?.accepts ?? []
// Seeded without a report: the screen never heard this claim go, because it did not.
let claimed = args.established?.claimed ?? false
@@ -66,10 +60,7 @@ export function createBridgeHostBack(args: {
}
return {
- readReady: (next) => {
- accepts = next
- drop()
- },
+ readReady: drop,
readClaim: (next) => {
if (next === claimed) {
return
@@ -78,13 +69,13 @@ export function createBridgeHostBack(args: {
args.onClaim(next)
},
send: () => {
- if (!accepts.includes(BRIDGE_BACK_FRAME) || !args.deliverable()) {
+ if (!args.deliverable()) {
return false
}
args.send({ v: BRIDGE_PROTOCOL_VERSION, type: BRIDGE_BACK_FRAME })
return true
},
drop,
- read: () => ({ accepts, claimed })
+ read: () => ({ claimed })
}
}
diff --git a/mobile/src/mobile-web-shell/bridge-host-contract.ts b/mobile/src/mobile-web-shell/bridge-host-contract.ts
index f360fdc0d96..a9f9dfcb10b 100644
--- a/mobile/src/mobile-web-shell/bridge-host-contract.ts
+++ b/mobile/src/mobile-web-shell/bridge-host-contract.ts
@@ -5,7 +5,6 @@ import type { BridgeRefusal } from './bridge/bridge-caps'
import type { BridgeInitHost, BridgeInitRoute } from './bridge/bridge-envelope'
import type { BridgeClearableRouteParam } from './bridge/bridge-route-update'
import type { BridgeSafeAreaInsets } from './bridge/bridge-safe-area-insets'
-import type { PageReadyDeclaration } from './mobile-web-shell-session-contract'
import type { BridgeHapticsKind } from './bridge/bridge-haptics-notify'
import type { BridgeErrorCapture } from './bridge/bridge-error-capture'
import type { BridgeNativeVerb } from './bridge/bridge-native-verbs'
@@ -133,6 +132,9 @@ export type BridgeHostOptions = {
/** How much of the WebView sits under a system bar when it is drawn edge-to-edge. Zeros when
* absent; moved later with `publishSafeAreaInsets`. */
safeAreaInsets?: BridgeSafeAreaInsets
+ /** The keyboard height native screens read on the shell's OS. 0 when absent; moved later with
+ * `publishKeyboardInset`. */
+ keyboardInset?: number
/**
* This device's identity to that host, as the native screens already send it, swapped in for the
* page's placeholder on the way out. Read at forward time rather than captured: the host outlives
@@ -202,12 +204,8 @@ export type BridgeHostOptions = {
* the same reason as the fault: the shell bounds the wait for it, and a host built without this
* would leave a document that never spoke looking exactly like one still starting up.
*/
- onPageReady: (ready: PageReadyDeclaration) => void
- /**
- * The page has a frame on screen. Only pages whose `ready` listed `BRIDGE_PAGE_PAINTED` post it,
- * which is why `onPageReady` carries that list: a caller covering the view until this arrives
- * has to know whether it is coming, and a page served from an older desktop never sends one.
- */
+ onPageReady: () => void
+ /** The page has a frame on screen, which a caller covering the view until then waits for. */
onPagePainted: () => void
/**
* The page is holding the device Back key, or has let it go. Required, because the shell only
diff --git a/mobile/src/mobile-web-shell/bridge-host-init.test.ts b/mobile/src/mobile-web-shell/bridge-host-init.test.ts
index 6e2f86788f2..0b0b52687fc 100644
--- a/mobile/src/mobile-web-shell/bridge-host-init.test.ts
+++ b/mobile/src/mobile-web-shell/bridge-host-init.test.ts
@@ -7,10 +7,6 @@ import {
BRIDGE_MAX_SUBSCRIPTIONS
} from './bridge/bridge-caps'
import { BRIDGE_FAULT_GRANT } from './bridge/bridge-envelope'
-import { BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT } from './bridge/bridge-page-client-identity'
-import { BRIDGE_BACK_CLAIM_NOTIFY } from './bridge/bridge-page-back'
-import { BRIDGE_PAGE_PAINTED } from './bridge/bridge-page-painted'
-import { BRIDGE_ROUTE_PARAM_CLEAR } from './bridge/bridge-route-update'
import { routeViewOf } from './page-route-policy'
describe('init and state', () => {
@@ -29,13 +25,6 @@ describe('init and state', () => {
type: 'init',
sessionId: 'session-a',
buildId: 'build-a',
- // What this shell takes from the page, which is the page's own check before it posts one.
- accepts: [
- BRIDGE_ROUTE_PARAM_CLEAR,
- BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT,
- BRIDGE_PAGE_PAINTED,
- BRIDGE_BACK_CLAIM_NOTIFY
- ],
connection: {
state: 'reconnecting',
reconnectAttempt: 3,
@@ -265,7 +254,7 @@ describe('init and state', () => {
route: { pathname: '/h/host-a/session/wt-1' },
post: () => (view.gone ? Promise.reject(new Error('the view is gone')) : Promise.resolve())
})
- // A page that declares nothing is never sent a second `init`, so the tap can only be held.
+ // The second `init` the tap sends is refused with the view, so only the held route is left.
bridge.host.receive(clientFrame({ type: 'ready' }))
bridge.host.publishRoute({
pathname: '/h/host-a/session/wt-1',
@@ -274,7 +263,7 @@ describe('init and state', () => {
for (let turn = 0; turn < 4; turn += 1) {
await Promise.resolve()
}
- expect(bridge.posted).toHaveLength(1)
+ expect(bridge.posted).toHaveLength(2)
// The next document over the same host: a reload, or the view coming back.
view.gone = false
bridge.host.receive(clientFrame({ type: 'ready' }))
diff --git a/mobile/src/mobile-web-shell/bridge-host-notifications.test.ts b/mobile/src/mobile-web-shell/bridge-host-notifications.test.ts
index dc9436074e8..1e7b7904a10 100644
--- a/mobile/src/mobile-web-shell/bridge-host-notifications.test.ts
+++ b/mobile/src/mobile-web-shell/bridge-host-notifications.test.ts
@@ -6,8 +6,6 @@ import {
BRIDGE_FAULT_GRANT,
BRIDGE_NAVIGATE_BACK_NOTIFY
} from './bridge/bridge-envelope'
-import { BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT } from './bridge/bridge-page-client-identity'
-import { BRIDGE_BACK_CLAIM_NOTIFY } from './bridge/bridge-page-back'
import { BRIDGE_PAGE_PAINTED } from './bridge/bridge-page-painted'
import { BRIDGE_ROUTE_PARAM_CLEAR } from './bridge/bridge-route-update'
import {
@@ -462,20 +460,6 @@ describe('the page erasing a one-shot route param', () => {
expect(bridge.routeParamClears()).toEqual([])
expect(bridge.diagnostics).toEqual([{ kind: 'refused', refusal: 'unrecognised-message' }])
})
-
- it('tells the page it takes a clear, so a page built for an older shell does not post one', () => {
- const bridge = harness({ route: { pathname: '/h/host-a/session/wt-1' } })
- bridge.host.receive(clientFrame({ type: 'ready' }))
- const init = bridge.last()
- // Written out rather than compared against `BRIDGE_SHELL_ACCEPTS`: a list that pins itself
- // pins nothing, and this is the frame an older page reads to decide what it may post.
- expect(init.type === 'init' && init.accepts).toEqual([
- BRIDGE_ROUTE_PARAM_CLEAR,
- BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT,
- BRIDGE_PAGE_PAINTED,
- BRIDGE_BACK_CLAIM_NOTIFY
- ])
- })
})
/**
@@ -485,20 +469,13 @@ describe('the page erasing a one-shot route param', () => {
describe('the page reporting its first frame', () => {
it('hands the report to the session and asks the client for nothing', () => {
const bridge = harness()
- bridge.host.receive(clientFrame({ type: 'ready', reports: [BRIDGE_PAGE_PAINTED] }))
+ bridge.host.receive(clientFrame({ type: 'ready' }))
bridge.host.receive(clientFrame({ type: 'notify', name: BRIDGE_PAGE_PAINTED }))
expect(bridge.pagePaintCount()).toBe(1)
expect(bridge.client.requests).toHaveLength(0)
expect(bridge.client.foregroundCalls).toHaveLength(0)
})
- it('forwards what each ready declared, including a name this shell does not implement', () => {
- const bridge = harness()
- bridge.host.receive(clientFrame({ type: 'ready', reports: [BRIDGE_PAGE_PAINTED, 'weather'] }))
- bridge.host.receive(clientFrame({ type: 'ready' }))
- expect(bridge.pageReports()).toEqual([[BRIDGE_PAGE_PAINTED, 'weather'], []])
- })
-
it('refuses a report from a document nothing has answered', () => {
const bridge = harness()
bridge.host.receive(clientFrame({ type: 'notify', name: BRIDGE_PAGE_PAINTED }))
diff --git a/mobile/src/mobile-web-shell/bridge-host-route.ts b/mobile/src/mobile-web-shell/bridge-host-route.ts
index 055932a5ffe..1306ea276a2 100644
--- a/mobile/src/mobile-web-shell/bridge-host-route.ts
+++ b/mobile/src/mobile-web-shell/bridge-host-route.ts
@@ -1,11 +1,6 @@
-import {
- BridgeInitRouteSchema,
- type BridgeClientMessage,
- type BridgeInitRoute
-} from './bridge/bridge-envelope'
+import { BridgeInitRouteSchema, type BridgeInitRoute } from './bridge/bridge-envelope'
import { readBridgeRouteUpdate } from './bridge/bridge-route-update'
import {
- BRIDGE_SAFE_AREA_ACCEPT,
sameSafeAreaInsets,
ZERO_SAFE_AREA_INSETS,
type BridgeSafeAreaInsets
@@ -17,13 +12,10 @@ export type BridgeHostRoute = {
readonly current: () => BridgeInitRoute | null
/** Why the opened route was refused, for the line the host prints at construction. */
readonly openIssue: () => string
- /** What the page's latest `ready` said it can be sent. Reset by each document's `ready`. */
- readonly readReady: (message: Extract) => void
/**
* Hands the page a rewritten param for the screen it is already on, and sends one `init` when
* that moved the route. The held route moves either way, so a page that reloads inside this
- * mount is given the newest one on its next `ready` even when it is too old to be sent one in
- * flight.
+ * mount is given the newest one on its next `ready`.
*
* Answers nothing, and nothing here learns anything from a post (ruling 34). It cannot: a frame
* the page received and then failed to handle is caught by the page and reported there, so what
@@ -36,10 +28,14 @@ export type BridgeHostRoute = {
/** The insets the next `init` carries. */
readonly safeAreaInsets: () => BridgeSafeAreaInsets
/**
- * Moves the held insets, and sends one `init` when they moved and the page reads them. The same
- * lane as a pane update: held either way, so the next `ready` carries them.
+ * Moves the held insets, and sends one `init` when they moved. The same lane as a pane update:
+ * held either way, so the next `ready` carries them.
*/
readonly publishSafeAreaInsets: (next: BridgeSafeAreaInsets, deliverable: boolean) => void
+ /** The keyboard height the next `init` carries. */
+ readonly keyboardInset: () => number
+ /** Moves the held keyboard height on the same lane as the insets. */
+ readonly publishKeyboardInset: (next: number, deliverable: boolean) => void
}
/**
@@ -65,19 +61,17 @@ export function createBridgeHostRoute(args: {
sendInit: () => void
onRefused: (issue: string) => void
safeAreaInsets?: BridgeSafeAreaInsets
+ keyboardInset?: number
}): BridgeHostRoute {
const parsed = BridgeInitRouteSchema.safeParse(args.opened)
let route = parsed.success && !args.refused ? parsed.data : null
- let accepts: readonly string[] = []
let insets = args.safeAreaInsets ?? ZERO_SAFE_AREA_INSETS
+ let keyboard = args.keyboardInset ?? 0
return {
current: () => route,
openIssue: () => (parsed.success ? 'unknown' : (parsed.error.issues[0]?.message ?? 'unknown')),
- readReady: (message) => {
- accepts = message.accepts ?? []
- },
publish: (next, deliverable) => {
- const update = readBridgeRouteUpdate({ held: route, next, accepts, deliverable })
+ const update = readBridgeRouteUpdate({ held: route, next, deliverable })
if (update.kind === 'refuse') {
args.onRefused(update.issue)
return
@@ -93,8 +87,17 @@ export function createBridgeHostRoute(args: {
return
}
insets = next
- // Only to a page that reads them: a re-init to one that does not is a wasted frame per move.
- if (deliverable && accepts.includes(BRIDGE_SAFE_AREA_ACCEPT)) {
+ if (deliverable) {
+ args.sendInit()
+ }
+ },
+ keyboardInset: () => keyboard,
+ publishKeyboardInset: (next, deliverable) => {
+ if (keyboard === next) {
+ return
+ }
+ keyboard = next
+ if (deliverable) {
args.sendInit()
}
}
diff --git a/mobile/src/mobile-web-shell/bridge-host-test-harness.ts b/mobile/src/mobile-web-shell/bridge-host-test-harness.ts
index 835698e24ac..5c3d602a4ed 100644
--- a/mobile/src/mobile-web-shell/bridge-host-test-harness.ts
+++ b/mobile/src/mobile-web-shell/bridge-host-test-harness.ts
@@ -50,7 +50,6 @@ export type Harness = {
/** Every claim the host reported, in order, including the false it sends when a document ends. */
backClaims: boolean[]
/** What each answered `ready` declared it reports, in order. */
- pageReports: () => readonly (readonly string[])[]
/** One entry per `ready` answered, saying whether its `init` reached the page. Filled as each
* post settles, so a case reads it after awaiting the turn the post resolves on. */
/** Every clear the page asked for, in order. */
@@ -120,7 +119,6 @@ export function harness(
let pageReadies = 0
let pagePaints = 0
/** What each answered `ready` declared it reports, in order. */
- const pageReports: (readonly string[])[] = []
/** One entry per `ready` answered, saying whether an `init` actually went out for it. */
const routeParamClears: { param: string; value: string }[] = []
const routeRefusals: string[] = []
@@ -146,9 +144,8 @@ export function harness(
readStorage:
options.readStorage ?? (() => ({ storage: options.storage ?? {}, storageOversize: [] })),
onStorageWrite: (key, value) => storageWrites.push({ key, value }),
- onPageReady: ({ reports }) => {
+ onPageReady: () => {
pageReadies += 1
- pageReports.push(reports)
},
onPageBackClaim: (claimed) => backClaims.push(claimed),
onPagePainted: () => {
@@ -212,7 +209,6 @@ export function harness(
pageReadyCount: () => pageReadies,
pagePaintCount: () => pagePaints,
backClaims,
- pageReports: () => pageReports,
routeParamClears: () => routeParamClears,
routeRefusals,
pageFaults,
diff --git a/mobile/src/mobile-web-shell/bridge-host.ts b/mobile/src/mobile-web-shell/bridge-host.ts
index 28e25c2e452..9431b4500db 100644
--- a/mobile/src/mobile-web-shell/bridge-host.ts
+++ b/mobile/src/mobile-web-shell/bridge-host.ts
@@ -13,7 +13,7 @@ import {
type BridgeInitRoute
} from './bridge/bridge-envelope'
import { BridgePageRouteGrantsSchema } from './bridge/bridge-page-route-grants'
-import { BRIDGE_SHELL_ACCEPTS, createBridgeInitFrame } from './bridge/bridge-init-frame'
+import { createBridgeInitFrame } from './bridge/bridge-init-frame'
import { splitBridgeReply } from './bridge/bridge-reply-chunking'
import { createBridgeHostFrames } from './bridge-host-frames'
import { createBridgeHostBack, type BridgeSessionBack } from './bridge-host-back'
@@ -31,9 +31,8 @@ export type BridgeHost = {
* Hands this session a rewritten route: same screen, different params (ruling 33.1).
*
* The held route moves either way, so a page that reloads inside this mount is told the newest
- * one; the frame goes out only to a page that declared `BRIDGE_ROUTE_UPDATE_ACCEPT`, because a
- * page too old to name it reads a second `init` as a replacement. A different pathname is a
- * different screen and is refused here — that is a remount, which is what the shell already does.
+ * one. A different pathname is a different screen and is refused here — that is a remount,
+ * which is what the shell already does.
*
* Answers nothing, and nothing is tracked (ruling 34): a frame the view refused is repaired by
* the next `init`, and the request it carried is spent by the page, which erases the param it
@@ -42,6 +41,8 @@ export type BridgeHost = {
publishRoute: (next: BridgeInitRoute) => void
/** Hands this session moved safe-area insets over the same re-sent `init` a route update takes. */
publishSafeAreaInsets: (next: BridgeSafeAreaInsets) => void
+ /** Hands this session a moved keyboard height over the same re-sent `init`. */
+ publishKeyboardInset: (next: number) => void
/**
* Hands the page one Back press. False when this document never said it takes one, which is
* every page older than the frame; the caller then leaves the key to the navigator.
@@ -87,7 +88,8 @@ export function createBridgeHost(options: BridgeHostOptions): BridgeHost {
sendInit()
},
onRefused: (issue) => options.onDiagnostic?.({ kind: 'route-update-refused', issue }),
- ...(options.safeAreaInsets === undefined ? {} : { safeAreaInsets: options.safeAreaInsets })
+ ...(options.safeAreaInsets === undefined ? {} : { safeAreaInsets: options.safeAreaInsets }),
+ ...(options.keyboardInset === undefined ? {} : { keyboardInset: options.keyboardInset })
})
let closed = false
// One document's turn at the bridge. `close` ends it and the next `ready` begins the next one;
@@ -163,12 +165,12 @@ export function createBridgeHost(options: BridgeHostOptions): BridgeHost {
connection: snapshot(),
route,
safeAreaInsets: routes.safeAreaInsets(),
+ keyboardInset: routes.keyboardInset(),
pageRoutes,
...(parsedRouteGrants?.success === true
? { pageRouteGrants: parsedRouteGrants.data }
: {}),
granted,
- accepts: BRIDGE_SHELL_ACCEPTS,
host,
...options.readStorage()
})
@@ -249,16 +251,12 @@ export function createBridgeHost(options: BridgeHostOptions): BridgeHost {
// re-asked `ready` from the document already being served is answered the same way.
if (message.type === 'ready') {
serving = true
- routes.readReady(message)
- back.readReady(message.accepts ?? [])
+ back.readReady()
// Every time it is asked, not once: the page re-asks on a backoff, and each ask is answered
// with the route the shell holds now. That is the whole repair path for a frame that never
// arrived (ruling 34) — nothing here waits on one, and nothing retries one.
sendInit()
- // Forwarded verbatim, including a name this shell has never implemented: what each report
- // means is the caller's, and this host's job is that the list belongs to the document that
- // just spoke rather than to the one before it.
- options.onPageReady({ reports: message.reports ?? [], accepts: message.accepts ?? [] })
+ options.onPageReady()
return
}
if (!serving) {
@@ -337,6 +335,9 @@ export function createBridgeHost(options: BridgeHostOptions): BridgeHost {
publishSafeAreaInsets: (next) => {
routes.publishSafeAreaInsets(next, deliverable())
},
+ publishKeyboardInset: (next) => {
+ routes.publishKeyboardInset(next, deliverable())
+ },
sendBack: back.send,
readSessionBack: back.read,
dispose
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-back-round-trip.test.ts b/mobile/src/mobile-web-shell/bridge/bridge-back-round-trip.test.ts
index 1ceb977eb71..a4940d4d9d8 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-back-round-trip.test.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-back-round-trip.test.ts
@@ -1,6 +1,6 @@
import { describe, expect, it, vi } from 'vitest'
import { BRIDGE_PROTOCOL_VERSION } from './bridge-envelope'
-import { BRIDGE_BACK_CLAIM_NOTIFY, BRIDGE_BACK_FRAME } from './bridge-page-back'
+import { BRIDGE_BACK_CLAIM_NOTIFY } from './bridge-page-back'
import { createFakeBridgePortPair, type BridgePortPair } from './bridge-port-pair-test-harness'
import type { FakeRpcClient } from '../bridge-host-test-fakes'
@@ -58,9 +58,7 @@ describe('a Back press crossing from the shell to the page', () => {
release()
await pair.flush()
// The shell still sends one, standing in for a claim that went stale in flight.
- pair.host.receive(
- JSON.stringify({ v: BRIDGE_PROTOCOL_VERSION, type: 'ready', accepts: [BRIDGE_BACK_FRAME] })
- )
+ pair.host.receive(JSON.stringify({ v: BRIDGE_PROTOCOL_VERSION, type: 'ready' }))
await pair.flush()
expect(pair.host.sendBack()).toBe(true)
await pair.flush()
@@ -83,18 +81,14 @@ describe('a Back press crossing from the shell to the page', () => {
expect(pair.backClaims).toEqual([true])
// The page re-asks, which is what a stale `state` frame makes it do; the host drops the claim
// answering it, and the page's re-assert is what puts the two back in step.
- pair.host.receive(
- JSON.stringify({ v: BRIDGE_PROTOCOL_VERSION, type: 'ready', accepts: [BRIDGE_BACK_FRAME] })
- )
+ pair.host.receive(JSON.stringify({ v: BRIDGE_PROTOCOL_VERSION, type: 'ready' }))
await pair.flush()
expect(pair.backClaims).toEqual([true, false, true])
})
it('says nothing again when this document is holding nothing', async () => {
const pair = await opened()
- pair.host.receive(
- JSON.stringify({ v: BRIDGE_PROTOCOL_VERSION, type: 'ready', accepts: [BRIDGE_BACK_FRAME] })
- )
+ pair.host.receive(JSON.stringify({ v: BRIDGE_PROTOCOL_VERSION, type: 'ready' }))
await pair.flush()
expect(notifies(pair)).toEqual([])
expect(pair.backClaims).toEqual([])
@@ -111,66 +105,22 @@ describe('a Back press crossing from the shell to the page', () => {
})
})
-/**
- * Both halves of the mixed-version matrix. The page bundle is served by a desktop that updates
- * independently of the installed shell, so one side older than the other is the normal state and
- * each direction has to degrade to exactly what Back did before this lane: the navigator pops.
- */
-describe('a shell and a page built either side of the Back lane', () => {
- it('old shell, new page: the page never posts a claim it was not offered', async () => {
- // The `init.accepts` this shell sends, with the claim taken back out of it on the wire — which
- // is exactly the frame a shell built before the name would have posted.
- const pair = createFakeBridgePortPair({
- rewriteToPage: (json) => {
- const frame: Record = JSON.parse(json)
- const accepts = frame.accepts
- if (frame.type !== 'init' || !Array.isArray(accepts)) {
- return json
- }
- return JSON.stringify({
- ...frame,
- accepts: accepts.filter((name) => name !== BRIDGE_BACK_CLAIM_NOTIFY)
- })
- }
- })
- await pair.flush()
- pair.client.claimBack(() => true)
- await pair.flush()
- expect(notifies(pair)).toEqual([])
- expect(pair.backClaims).toEqual([])
- // And the re-assert is held to the same declaration: a second `init` from a shell that never
- // named the claim is still one the page says nothing back to.
- pair.host.receive(JSON.stringify({ v: BRIDGE_PROTOCOL_VERSION, type: 'ready' }))
- await pair.flush()
- expect(notifies(pair)).toEqual([])
- })
-
- it('new shell, old page: the shell never sends a press the page would refuse', async () => {
+describe('the Back lane with no negotiation', () => {
+ it('hands a press to any page it serves, whose ready declares nothing', async () => {
const pair = await opened()
- // The same document reloaded as a build that declares nothing, which is what a released page is.
pair.host.receive(JSON.stringify({ v: BRIDGE_PROTOCOL_VERSION, type: 'ready' }))
await pair.flush()
const before = pair.toPage.length
- expect(pair.host.sendBack()).toBe(false)
- await pair.flush()
- expect(pair.toPage).toHaveLength(before)
- })
-
- /** Why that gate has to exist: an older page's reader takes the whole frame down rather than
- * ignoring a type it has never heard of. */
- it('a page too old to read the frame refuses it whole', async () => {
- const pair = createFakeBridgePortPair({
- rewriteToPage: (json) =>
- JSON.parse(json).type === BRIDGE_BACK_FRAME ? '{"v":1,"type":"b4ck"}' : json
- })
- await pair.flush()
- pair.host.receive(
- JSON.stringify({ v: BRIDGE_PROTOCOL_VERSION, type: 'ready', accepts: [BRIDGE_BACK_FRAME] })
- )
- await pair.flush()
expect(pair.host.sendBack()).toBe(true)
await pair.flush()
- expect(pair.diagnostics).toContainEqual({ kind: 'refused', refusal: 'unrecognised-message' })
- expect(pair.backPops).toEqual([])
+ expect(pair.toPage.length).toBe(before + 1)
+ })
+
+ it('posts the claim to the shell with nothing offered in init', async () => {
+ const pair = await opened()
+ pair.client.claimBack(() => true)
+ await pair.flush()
+ expect(notifies(pair)).toEqual([BRIDGE_BACK_CLAIM_NOTIFY])
+ expect(pair.backClaims).toEqual([true])
})
})
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-caps.ts b/mobile/src/mobile-web-shell/bridge/bridge-caps.ts
index de7056a9b70..4e625884b84 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-caps.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-caps.ts
@@ -138,15 +138,6 @@ export function isBridgeExternalLinkUrl(url: string): boolean {
}
export const BRIDGE_MAX_PAGE_ROUTES = 64
-/**
- * What a page may say it can be sent, bounded the way every other list on the envelope is.
- *
- * A frame bound and not a vocabulary: the shell acts on the names it knows and ignores the rest,
- * which is what lets a newer page declare one an older shell has never heard of.
- */
-export const BRIDGE_MAX_PAGE_ACCEPTS = 16
-export const BRIDGE_MAX_PAGE_ACCEPT_CHARS = 64
-
/** A host id, its name and its endpoint. Bounded because the page renders all three. */
export const BRIDGE_MAX_HOST_FIELD_CHARS = 1024
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-client-init-handshake.ts b/mobile/src/mobile-web-shell/bridge/bridge-client-init-handshake.ts
index 609016f033e..24060668e24 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-client-init-handshake.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-client-init-handshake.ts
@@ -1,8 +1,4 @@
import { BRIDGE_PROTOCOL_VERSION, type BridgeClientMessage } from './bridge-envelope'
-import { BRIDGE_BACK_FRAME } from './bridge-page-back'
-import { BRIDGE_PAGE_PAINTED } from './bridge-page-painted'
-import { BRIDGE_ROUTE_UPDATE_ACCEPT } from './bridge-route-update'
-import { BRIDGE_SAFE_AREA_ACCEPT } from './bridge-safe-area-insets'
/** The page asks again until the shell answers; a session has no other way to start. */
export const BRIDGE_READY_RETRY_MIN_MS = 50
@@ -53,17 +49,8 @@ export function createBridgeInitHandshake(ask: () => void): BridgeInitHandshake
}
}
-/**
- * What the page says on every ask, because the shell reads it off whichever `ready` it answers.
- * `accepts` is what this page build can be sent: a second `init` for the session it holds, the
- * Back frame, and insets it pads for itself. `reports` runs the other way: what a shell may wait
- * for this page to post, and the shell holds a frame over the view until it arrives.
- */
+/** What the page says on every ask. It declares nothing: the shell serves no page older than its
+ * floor, so every page it talks to takes everything the shell sends. */
export function createPageReadyFrame(): Extract {
- return {
- v: BRIDGE_PROTOCOL_VERSION,
- type: 'ready',
- accepts: [BRIDGE_ROUTE_UPDATE_ACCEPT, BRIDGE_BACK_FRAME, BRIDGE_SAFE_AREA_ACCEPT],
- reports: [BRIDGE_PAGE_PAINTED]
- }
+ return { v: BRIDGE_PROTOCOL_VERSION, type: 'ready' }
}
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-client-notifications.ts b/mobile/src/mobile-web-shell/bridge/bridge-client-notifications.ts
index b900a095725..993782d8818 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-client-notifications.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-client-notifications.ts
@@ -43,8 +43,6 @@ export type BridgeClientNotificationDeps = {
isClosed: () => boolean
/** What `init.grants.native` named. A grant the shell did not give is a frame it would refuse. */
hasGrant: (name: string) => boolean
- /** What `init.accepts` named. The other half of the same read: a capability rather than a grant. */
- shellAccepts: (name: string) => boolean
}
export type BridgeClientNotifications = {
@@ -140,25 +138,12 @@ export function createBridgeClientNotifications(
error: captureBridgeError(error)
})
},
- // Gated on the shell saying it takes one, not on a grant: `notify` is a closed union, so an
- // older shell answers an unknown name with an error frame per mount. Answering nothing, because
- // a page that has painted has nothing else to do about a shell that will not hear it.
+ // Not on a grant: every session takes it, and a page that has painted has nothing else to do.
notifyPagePainted: () => {
- if (deps.shellAccepts(BRIDGE_PAGE_PAINTED)) {
- post({ v: BRIDGE_PROTOCOL_VERSION, type: 'notify', name: BRIDGE_PAGE_PAINTED })
- }
+ post({ v: BRIDGE_PROTOCOL_VERSION, type: 'notify', name: BRIDGE_PAGE_PAINTED })
},
- // Gated the same way, for the same reason, and answering nothing: a shell that will not hear
- // the claim keeps the key, which is what every shell did before this frame existed.
notifyBackClaim: (claimed) => {
- if (deps.shellAccepts(BRIDGE_BACK_CLAIM_NOTIFY)) {
- post({
- v: BRIDGE_PROTOCOL_VERSION,
- type: 'notify',
- name: BRIDGE_BACK_CLAIM_NOTIFY,
- claimed
- })
- }
+ post({ v: BRIDGE_PROTOCOL_VERSION, type: 'notify', name: BRIDGE_BACK_CLAIM_NOTIFY, claimed })
}
}
}
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-client-session.ts b/mobile/src/mobile-web-shell/bridge/bridge-client-session.ts
index 02d8a534829..09085cb2ec6 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-client-session.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-client-session.ts
@@ -27,6 +27,8 @@ export type BridgeShellSession = {
/** How much of the WebView sits under a system bar. Zeros for a shell that reserves the bars
* outside the view, which is every shell before the field. */
safeAreaInsets: BridgeSafeAreaInsets
+ /** The keyboard height native screens read on the shell's OS; 0 while it is closed. */
+ keyboardInset: number
/** Null for a shell too old to name it; the page's own `loadHosts()` then answers with nothing. */
host: BridgeInitHost | null
/** The allowlisted keys as the app held them when this page opened. */
@@ -34,14 +36,6 @@ export type BridgeShellSession = {
/** The allowlisted keys `storage` could not carry because the app's value is over the page's cap
* (ruling 33.6). Empty for a shell too old to name them, which is what it was before. */
storageOversize: readonly string[]
- /**
- * What this shell takes from the page beyond the frames every shell has taken (ruling 34).
- *
- * Empty for a shell that named none, which is every shell before this field: a page that posts
- * one of these to one of those has the whole frame refused as `unrecognised-message`, so the
- * check is the page's and it is made from here.
- */
- accepts: readonly string[]
}
/**
@@ -61,9 +55,9 @@ export function readShellSession(
pageRoutes: message.pageRoutes ?? [],
pageRouteGrants: message.pageRouteGrants ?? null,
safeAreaInsets: message.safeAreaInsets ?? ZERO_SAFE_AREA_INSETS,
+ keyboardInset: message.keyboardInset ?? 0,
host: message.host ?? null,
storage: message.storage ?? {},
- storageOversize: message.storageOversize ?? [],
- accepts: message.accepts ?? []
+ storageOversize: message.storageOversize ?? []
}
}
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-client-shell-session.ts b/mobile/src/mobile-web-shell/bridge/bridge-client-shell-session.ts
index db5614119e8..03181a4e03f 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-client-shell-session.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-client-shell-session.ts
@@ -31,6 +31,8 @@ export type BridgeClientShellSession = {
onRouteUpdate: (listener: (route: BridgeInitRoute | null) => void) => () => void
/** Fires when an `init` moved the safe-area insets the page holds, including a replacement's. */
onSafeAreaInsetsUpdate: (listener: (insets: BridgeSafeAreaInsets) => void) => () => void
+ /** Fires when an `init` moved the keyboard height the page holds, including a replacement's. */
+ onKeyboardInsetUpdate: (listener: (height: number) => void) => () => void
/** Drops the session and every listener waiting on one, which `close` is the only caller of. */
close: () => void
}
@@ -45,6 +47,7 @@ export function createBridgeClientShellSession(args: {
const readyListeners = new Set<() => void>()
const routeUpdateListeners = new Set<(route: BridgeInitRoute | null) => void>()
const insetsListeners = new Set<(insets: BridgeSafeAreaInsets) => void>()
+ const keyboardListeners = new Set<(height: number) => void>()
return {
current: () => session,
@@ -62,10 +65,12 @@ export function createBridgeClientShellSession(args: {
// The held object when the values match, so a reader keyed on identity does not re-render
// for a re-asked `ready`.
const safeAreaInsets = held === null || movedInsets ? sent : held.safeAreaInsets
+ const keyboardInset = message.keyboardInset ?? 0
+ const movedKeyboard = held !== null && held.keyboardInset !== keyboardInset
session =
update === null
? { ...readShellSession(message), safeAreaInsets }
- : { ...update, route: message.route ?? null, safeAreaInsets }
+ : { ...update, route: message.route ?? null, safeAreaInsets, keyboardInset }
// Re-primed either way, because a second `init` is also how the page recovers a cache it has
// refused a `state` frame into: the shell rebuilt under it publishes a generation the page's
// own is newer than, and this frame is what puts the two back in step. A pane update carries
@@ -80,6 +85,11 @@ export function createBridgeClientShellSession(args: {
listener(safeAreaInsets)
}
}
+ if (movedKeyboard) {
+ for (const listener of keyboardListeners) {
+ listener(keyboardInset)
+ }
+ }
// Only a route that moved is an update. The shell answers every `ready` with the route it
// holds, and the page re-asks after a refused `state` frame, so publishing each of those
// would hand the pane hook the route it is already on.
@@ -114,6 +124,12 @@ export function createBridgeClientShellSession(args: {
insetsListeners.delete(listener)
}
},
+ onKeyboardInsetUpdate: (listener) => {
+ keyboardListeners.add(listener)
+ return () => {
+ keyboardListeners.delete(listener)
+ }
+ },
close: () => {
session = null
readyListeners.clear()
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-envelope.test.ts b/mobile/src/mobile-web-shell/bridge/bridge-envelope.test.ts
index 056dcf7bb18..4542949ac32 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-envelope.test.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-envelope.test.ts
@@ -34,7 +34,7 @@ import {
type BridgeHostMessage,
type BridgeReplyPayload
} from './bridge-envelope'
-import { BRIDGE_BACK_CLAIM_NOTIFY, BRIDGE_BACK_FRAME } from './bridge-page-back'
+import { BRIDGE_BACK_CLAIM_NOTIFY } from './bridge-page-back'
import { BRIDGE_PAGE_PAINTED } from './bridge-page-painted'
const ID = 'AAAAAAAAAAAAAAAAAAAAAA'
@@ -89,20 +89,12 @@ function client(fields: Record): Record {
describe('client messages', () => {
const accepted = [
['ready', { type: 'ready' }],
- ['ready naming what it reports', { type: 'ready', reports: [BRIDGE_PAGE_PAINTED] }],
- // A shell with no row for the name reads a report it will never wait on, which is what an
- // additive field has to look like in the older direction.
- [
- 'ready naming a report this shell does not implement',
- { type: 'ready', reports: ['weather'] }
- ],
['a page painted notify', { type: 'notify', name: BRIDGE_PAGE_PAINTED }],
['a back claim', { type: 'notify', name: BRIDGE_BACK_CLAIM_NOTIFY, claimed: true }],
[
'a back claim being let go',
{ type: 'notify', name: BRIDGE_BACK_CLAIM_NOTIFY, claimed: false }
],
- ['ready naming what it takes', { type: 'ready', accepts: [BRIDGE_BACK_FRAME] }],
['request without params', { type: 'request', id: ID, method: 'status.get' }],
['request with params', { type: 'request', id: ID, method: 'status.get', params: { a: 1 } }],
[
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-envelope.ts b/mobile/src/mobile-web-shell/bridge/bridge-envelope.ts
index ae8729f96ce..d24f1ab599c 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-envelope.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-envelope.ts
@@ -7,6 +7,7 @@ import { BridgeErrorCaptureSchema } from './bridge-error-capture'
import { BridgeInitRouteSchema, type BridgeInitRoute } from './bridge-init-route'
import { BridgePageRouteGrantsSchema } from './bridge-page-route-grants'
import { BridgeSafeAreaInsetsSchema } from './bridge-safe-area-insets'
+import { BridgeKeyboardInsetSchema } from './bridge-keyboard-inset'
import { BridgeNotifySchema } from './bridge-notify-envelope'
import { BRIDGE_BACK_FRAME } from './bridge-page-back'
import { BRIDGE_ID_PATTERN, idSchema, methodSchema, versionSchema } from './bridge-frame-fields'
@@ -26,8 +27,6 @@ import {
PAGE_STORAGE_MAX_VALUE_CHARS
} from '../page-storage-keys'
import {
- BRIDGE_MAX_PAGE_ACCEPT_CHARS,
- BRIDGE_MAX_PAGE_ACCEPTS,
BRIDGE_MAX_PAGE_ROUTES,
BRIDGE_MAX_REPLY_PARTS,
BRIDGE_MAX_ROUTE_PATHNAME_CHARS,
@@ -170,37 +169,7 @@ const replyPartSchema = z.object({
const BridgeClientMessageSchema = z.discriminatedUnion('type', [
z.object({
v: versionSchema,
- type: z.literal('ready'),
- /**
- * What this page can be sent beyond its first `init`; the names and why live in
- * `bridge-route-update.ts`, which is the only one there is.
- *
- * Optional, and safe in both directions without a version bump: a page that sends none is
- * never sent a second `init`, and a shell that reads none never sends one. An unknown name is
- * accepted by the schema and ignored by the shell, which is what a newer page declaring a
- * capability this shell has never implemented has to look like.
- */
- accepts: z
- .array(z.string().min(1).max(BRIDGE_MAX_PAGE_ACCEPT_CHARS))
- .max(BRIDGE_MAX_PAGE_ACCEPTS)
- .optional(),
- /**
- * What this page will post that the shell may have to wait for, which today is
- * `BRIDGE_PAGE_PAINTED` and nothing else.
- *
- * `accepts` runs the other way and cannot stand in for this: it says what may be sent *to* the
- * page. A shell waiting on a frame has to know the page will send one, because the generation
- * is served by a desktop that updates independently of the installed shell — an undeclared
- * wait would hide a working page built before the frame existed.
- *
- * Optional and additive in both directions, on the same bounds as `accepts`: a page that
- * declares none is waited for by nothing, and an unknown name is a report this shell does not
- * act on.
- */
- reports: z
- .array(z.string().min(1).max(BRIDGE_MAX_PAGE_ACCEPT_CHARS))
- .max(BRIDGE_MAX_PAGE_ACCEPTS)
- .optional()
+ type: z.literal('ready')
}),
z.object({
v: versionSchema,
@@ -282,8 +251,7 @@ const BridgeHostMessageSchema = z.union([
connection: BridgeConnectionSnapshotSchema
}),
// One Back press, and nothing else: the shell pops what it pushed, so a frame naming where to go
- // back to would be naming a screen the page cannot see. Sent only to a page whose `ready` listed
- // `BRIDGE_BACK_FRAME`, because an older page's reader refuses the whole frame.
+ // back to would be naming a screen the page cannot see.
z.object({ v: versionSchema, type: z.literal(BRIDGE_BACK_FRAME) }),
z.object({
v: versionSchema,
@@ -307,6 +275,8 @@ const BridgeHostMessageSchema = z.union([
route: BridgeInitRouteSchema.optional(),
/** How much of the WebView is under a system bar; absent reads as zeros. */
safeAreaInsets: BridgeSafeAreaInsetsSchema.optional(),
+ /** The keyboard height native screens read on the shell's OS; absent reads as 0. */
+ keyboardInset: BridgeKeyboardInsetSchema.optional(),
host: BridgeInitHostSchema.optional(),
storage: BridgeInitStorageSchema.optional(),
/**
@@ -343,19 +313,7 @@ const BridgeHostMessageSchema = z.union([
* behaviour, an older page ignores it. The grant grammar is the manifest's own, so a name the
* bundle could not have declared cannot arrive here either.
*/
- pageRouteGrants: BridgePageRouteGrantsSchema.optional(),
- /**
- * What this shell accepts from the page beyond the frames every shell has always taken, which
- * today is `BRIDGE_ROUTE_PARAM_CLEAR` and nothing else.
- *
- * The mirror of `ready.accepts`, and optional for the same reason: a shell that sends none is
- * never posted a clear, and a page that reads none never posts one. An unknown name is a
- * capability this page has never heard of and is ignored.
- */
- accepts: z
- .array(z.string().min(1).max(BRIDGE_MAX_PAGE_ACCEPT_CHARS))
- .max(BRIDGE_MAX_PAGE_ACCEPTS)
- .optional()
+ pageRouteGrants: BridgePageRouteGrantsSchema.optional()
})
])
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-init-frame.ts b/mobile/src/mobile-web-shell/bridge/bridge-init-frame.ts
index 582ed79548c..c31244c23ac 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-init-frame.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-init-frame.ts
@@ -8,10 +8,6 @@ import {
type BridgeInitHost,
type BridgeInitRoute
} from './bridge-envelope'
-import { BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT } from './bridge-page-client-identity'
-import { BRIDGE_BACK_CLAIM_NOTIFY } from './bridge-page-back'
-import { BRIDGE_PAGE_PAINTED } from './bridge-page-painted'
-import { BRIDGE_ROUTE_PARAM_CLEAR } from './bridge-route-update'
import {
sameSafeAreaInsets,
ZERO_SAFE_AREA_INSETS,
@@ -34,18 +30,6 @@ export const BRIDGE_NATIVE_GRANTS: readonly string[] = [
...MOBILE_WEB_SHELL_GRANTS
]
-/**
- * What this shell accepts from a page beyond the frames every shell has always taken. Additive
- * names on an optional list, so no version moves: a page that knows none posts none, one told
- * nothing claims no identity, and one told nothing reports no paint.
- */
-export const BRIDGE_SHELL_ACCEPTS: readonly string[] = [
- BRIDGE_ROUTE_PARAM_CLEAR,
- BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT,
- BRIDGE_PAGE_PAINTED,
- BRIDGE_BACK_CLAIM_NOTIFY
-]
-
/** The one frame that starts a session, built in one place so its caps and its grants agree. */
export function createBridgeInitFrame(args: {
sessionId: string
@@ -57,13 +41,13 @@ export function createBridgeInitFrame(args: {
pageRoutes: readonly string[]
/** How much of the WebView sits under a system bar, for a page that pads for them itself. */
safeAreaInsets?: BridgeSafeAreaInsets
+ /** The keyboard height native screens read on the shell's OS. */
+ keyboardInset?: number
/** What each of those patterns declared, so the page can tell a hop it may keep from one it
* must hand back. Omitted by a shell that has none, which leaves the page on its old rule. */
pageRouteGrants?: readonly { pathname: string; grants: readonly string[] }[]
/** What this session may do: the protocol's own grant plus what its route declared. */
granted: readonly string[]
- /** What this shell takes from the page beyond the frames every shell has taken (ruling 34). */
- accepts?: readonly string[]
/** The host the page is showing, minus the credential the bridge already carries for it. */
host: BridgeInitHost
/** The allowlisted keys as the app holds them right now. */
@@ -94,12 +78,10 @@ export function createBridgeInitFrame(args: {
sameSafeAreaInsets(args.safeAreaInsets, ZERO_SAFE_AREA_INSETS)
? {}
: { safeAreaInsets: { ...args.safeAreaInsets } }),
- pageRoutes: [...args.pageRoutes],
- // Omitted when empty for the reason `storageOversize` is: a shell that declares nothing and
- // one that declares an empty list are the same answer to the page's check.
- ...(args.accepts === undefined || args.accepts.length === 0
+ ...(args.keyboardInset === undefined || args.keyboardInset === 0
? {}
- : { accepts: [...args.accepts] }),
+ : { keyboardInset: args.keyboardInset }),
+ pageRoutes: [...args.pageRoutes],
// Copied entry by entry for the reason the grants are: nothing the shell keeps may be
// reachable through a frame it hands out.
...(args.pageRouteGrants === undefined
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-keyboard-inset.test.ts b/mobile/src/mobile-web-shell/bridge/bridge-keyboard-inset.test.ts
new file mode 100644
index 00000000000..9cdf24ae99b
--- /dev/null
+++ b/mobile/src/mobile-web-shell/bridge/bridge-keyboard-inset.test.ts
@@ -0,0 +1,91 @@
+import { describe, expect, it } from 'vitest'
+import { createFakeBridgePortPair } from './bridge-port-pair-test-harness'
+import { readBridgeHostMessage } from './bridge-envelope'
+import { createBridgeInitFrame } from './bridge-init-frame'
+import { readShellSession } from './bridge-client-session'
+
+function initFrame(keyboardInset?: number) {
+ return createBridgeInitFrame({
+ sessionId: 'session-a',
+ buildId: 'build-a',
+ connection: {
+ state: 'connected',
+ reconnectAttempt: 0,
+ lastConnectedAt: null,
+ lastInboundAt: null,
+ generation: null
+ },
+ route: { pathname: '/h/host-a' },
+ pageRoutes: ['/h/[hostId]'],
+ granted: [],
+ host: { id: 'host-a', name: 'Host A', endpoint: 'ws://host-a', lastConnected: 0 },
+ storage: {},
+ ...(keyboardInset === undefined ? {} : { keyboardInset })
+ })
+}
+
+function readInit(json: string) {
+ const read = readBridgeHostMessage(json)
+ if (!read.ok || read.message.type !== 'init') {
+ throw new Error(
+ `not an init the page would read: ${read.ok ? read.message.type : read.refusal}`
+ )
+ }
+ return read.message
+}
+
+describe('keyboardInset on init', () => {
+ it('reads an init without the field as 0, which is every shell before it', () => {
+ const init = readInit(JSON.stringify(initFrame()))
+ expect('keyboardInset' in init).toBe(false)
+ expect(readShellSession(init).keyboardInset).toBe(0)
+ })
+
+ it('passes the keyboard height through to the session the page holds', () => {
+ expect(readShellSession(readInit(JSON.stringify(initFrame(312)))).keyboardInset).toBe(312)
+ })
+
+ it('omits 0, since absent and closed are the same answer', () => {
+ expect('keyboardInset' in initFrame(0)).toBe(false)
+ })
+
+ it('refuses an init whose keyboard no device produces', () => {
+ for (const bad of [-1, 1e9, Number.NaN, '312']) {
+ const frame = { ...initFrame(), keyboardInset: bad }
+ expect(readBridgeHostMessage(JSON.stringify(frame)).ok, String(bad)).toBe(false)
+ }
+ })
+})
+
+describe('a keyboard that moves under a live page', () => {
+ it('re-sends init on show, height change and hide, and the page reads each in place', async () => {
+ const pair = createFakeBridgePortPair()
+ await pair.flush()
+ const session = pair.client.getShellSession()
+ expect(session?.keyboardInset).toBe(0)
+ const seen: number[] = []
+ pair.client.onKeyboardInsetUpdate((height) => seen.push(height))
+
+ // Pixel_API_37: the IME opens at 312, the suggestion strip grows it by 34, then it closes.
+ for (const height of [312, 346, 0]) {
+ pair.host.publishKeyboardInset(height)
+ await pair.flush()
+ expect(pair.client.getShellSession()?.keyboardInset).toBe(height)
+ }
+ expect(seen).toEqual([312, 346, 0])
+ // Same session: a keyboard update is not a replacement.
+ expect(pair.client.getShellSession()?.sessionId).toBe(session?.sessionId)
+ expect(pair.client.getShellSession()?.route).toEqual(session?.route)
+ })
+
+ it('sends nothing for a height that did not move', async () => {
+ const pair = createFakeBridgePortPair({ keyboardInset: 312 })
+ await pair.flush()
+ const inits = () => pair.readToPage().filter((frame) => frame.type === 'init').length
+ const before = inits()
+ pair.host.publishKeyboardInset(312)
+ await pair.flush()
+ expect(inits()).toBe(before)
+ expect(pair.client.getShellSession()?.keyboardInset).toBe(312)
+ })
+})
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-keyboard-inset.ts b/mobile/src/mobile-web-shell/bridge/bridge-keyboard-inset.ts
new file mode 100644
index 00000000000..c11a642e8c2
--- /dev/null
+++ b/mobile/src/mobile-web-shell/bridge/bridge-keyboard-inset.ts
@@ -0,0 +1,9 @@
+import { z } from 'zod'
+import { BRIDGE_MAX_SAFE_AREA_INSET } from './bridge-safe-area-insets'
+
+/**
+ * The software keyboard's height as native screens read it on the shell's OS (iOS from the
+ * window's bottom, Android above the bars), in the page's px; 0 while it is closed. The shell
+ * overlays the IME on the view like a native screen, and the page cannot measure it.
+ */
+export const BridgeKeyboardInsetSchema = z.number().finite().min(0).max(BRIDGE_MAX_SAFE_AREA_INSET)
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-notify-grants.ts b/mobile/src/mobile-web-shell/bridge/bridge-notify-grants.ts
index d363be3f5fd..04683d78739 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-notify-grants.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-notify-grants.ts
@@ -37,11 +37,10 @@ const BRIDGE_NOTIFY_GRANTS: Readonly> =
// The protocol's own as well: it spends a request this shell handed the page, on a param closed
// to the one the shell hands over, so there is nothing here for a grant to gate.
[BRIDGE_ROUTE_PARAM_CLEAR]: null,
- // The page reporting on its own document. Nothing here reaches the host or the device, and the
- // shell acts on it only for a page that declared it in `ready.reports`.
+ // The page reporting on its own document. Nothing here reaches the host or the device.
[BRIDGE_PAGE_PAINTED]: null,
// The page reporting on its own document as well. A claim is not a capability: the shell decides
- // whether to hand the key over, and it acts on this only for a page that declared it takes one.
+ // whether to hand the key over.
[BRIDGE_BACK_CLAIM_NOTIFY]: null,
navigate: 'navigate',
[BRIDGE_NAVIGATE_BACK_NOTIFY]: 'navigate',
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-page-back.ts b/mobile/src/mobile-web-shell/bridge/bridge-page-back.ts
index 87d08d46d6f..e7c151f63e4 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-page-back.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-page-back.ts
@@ -1,12 +1,8 @@
-/**
- * The device Back key, in the two places it is named: the page's claim on it, and the frame that
- * hands one press over. Negotiated both ways, because each is a closed list on the other side — a
- * claim to a shell that never advertised it is an error frame per mount on every shell installed,
- * and a `back` to a page that never asked for one is a frame its reader drops.
- */
+/** The device Back key, in the two places it is named: the page's claim on it, and the frame that
+ * hands one press over. */
-/** Page to shell, on `init.accepts`: this document is holding Back, or has let it go. */
+/** Page to shell, a notify: this document is holding Back, or has let it go. */
export const BRIDGE_BACK_CLAIM_NOTIFY = 'back-claim'
-/** Shell to page, on `ready.accepts`: one Back press, handed to whoever claimed it. */
+/** Shell to page, a frame: one Back press, handed to whoever claimed it. */
export const BRIDGE_BACK_FRAME = 'back'
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-page-client-identity.test.ts b/mobile/src/mobile-web-shell/bridge/bridge-page-client-identity.test.ts
index bda9737f02f..b65a8faeee2 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-page-client-identity.test.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-page-client-identity.test.ts
@@ -1,7 +1,6 @@
import { describe, expect, it } from 'vitest'
import {
BRIDGE_PAGE_CLIENT_ID,
- BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT,
BridgePageClientIdentityUnavailableError,
substituteBridgePageClientIdentity
} from './bridge-page-client-identity'
@@ -39,7 +38,6 @@ describe('the placeholder a page claims', () => {
// The composer's send journal refuses a retained operation whose caller changed, and it has no
// expiry. A per-document identity would turn "send it again" into a permanent refusal.
expect(BRIDGE_PAGE_CLIENT_ID).toBe('orca-page-client')
- expect(BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT).toBe('page-client-identity')
})
it('becomes the device identity in both fields a page carries one in', () => {
@@ -184,12 +182,6 @@ describe('the shell substitutes on both doors to the client', () => {
}
})
})
-
- it('tells the page it performs the swap, on a list an older page ignores', () => {
- const bridge = harness({ ready: true })
- const init = bridge.frames().find((message) => message.type === 'init')
- expect(init?.accepts).toContain(BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT)
- })
})
describe('what the page hears when the shell has no identity', () => {
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-page-client-identity.ts b/mobile/src/mobile-web-shell/bridge/bridge-page-client-identity.ts
index a23a8b4c319..44277fa0d24 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-page-client-identity.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-page-client-identity.ts
@@ -8,9 +8,6 @@
/** What a page puts in `client.id`. Fixed, so a resent message fingerprints the same caller. */
export const BRIDGE_PAGE_CLIENT_ID = 'orca-page-client'
-/** `init.accepts` name for a shell that swaps. A page told nothing claims no identity at all. */
-export const BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT = 'page-client-identity'
-
/** The two fields a page carries an identity in. `mobileClient` is native chat's spelling. */
const IDENTITY_FIELDS = ['client', 'mobileClient'] as const
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-page-painted.ts b/mobile/src/mobile-web-shell/bridge/bridge-page-painted.ts
index effa3c07a05..41266b01fe0 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-page-painted.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-page-painted.ts
@@ -1,6 +1,2 @@
-/**
- * The page's first frame, in all three places it is named: `ready.reports`, the notify, and
- * `init.accepts`. Negotiated both ways, because the notify union is closed — a report to a shell
- * that never advertised it is an error frame per mount on every shell already installed.
- */
+/** The notify a page posts when its first frame is on screen; the shell covers the view until it. */
export const BRIDGE_PAGE_PAINTED = 'painted'
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-port-pair-test-harness.test.ts b/mobile/src/mobile-web-shell/bridge/bridge-port-pair-test-harness.test.ts
index 705360361db..ac532410aa0 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-port-pair-test-harness.test.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-port-pair-test-harness.test.ts
@@ -2,10 +2,6 @@ import { describe, expect, it } from 'vitest'
import type { RpcClient } from '../../transport/rpc-client'
import type { RpcResponse } from '../../transport/types'
import { createBridgePortPair, createFakeBridgePortPair } from './bridge-port-pair-test-harness'
-import { BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT } from './bridge-page-client-identity'
-import { BRIDGE_BACK_CLAIM_NOTIFY } from './bridge-page-back'
-import { BRIDGE_PAGE_PAINTED } from './bridge-page-painted'
-import { BRIDGE_ROUTE_PARAM_CLEAR } from './bridge-route-update'
/** Every member of the contract, none of them a fake anything: the pair must carry a plain client. */
function plainShellClient(record: string[]): RpcClient {
@@ -43,15 +39,10 @@ describe('the bridge port pair', () => {
pageRoutes: expect.any(Array),
pageRouteGrants: null,
safeAreaInsets: { top: 0, right: 0, bottom: 0, left: 0 },
+ keyboardInset: 0,
host: expect.objectContaining({ id: expect.any(String) }),
storage: expect.any(Object),
- storageOversize: [],
- accepts: [
- BRIDGE_ROUTE_PARAM_CLEAR,
- BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT,
- BRIDGE_PAGE_PAINTED,
- BRIDGE_BACK_CLAIM_NOTIFY
- ]
+ storageOversize: []
})
})
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-port-pair-test-harness.ts b/mobile/src/mobile-web-shell/bridge/bridge-port-pair-test-harness.ts
index bf9b611a540..1b329207d53 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-port-pair-test-harness.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-port-pair-test-harness.ts
@@ -60,7 +60,6 @@ export type BridgePortPair = {
/** Every claim on the device Back key the host reported, in order. */
readonly backClaims: boolean[]
/** What each answered `ready` declared it reports, in order. */
- readonly pageReports: () => readonly (readonly string[])[]
/** Every clear the page asked the shell for, in order. */
readonly routeParamClears: () => readonly { param: string; value: string }[]
/** Why the host refused to open a session at all, if it did. */
@@ -105,6 +104,7 @@ export type BridgePortPairOptions = {
/** Replaces the verb handler, for the arms where the shell refuses rather than answers. */
serveNativeVerb?: (verb: BridgeNativeVerb, params: unknown) => Promise
safeAreaInsets?: BridgeSafeAreaInsets
+ keyboardInset?: number
}
type Lane = {
@@ -210,7 +210,6 @@ export function createBridgePortPair(
let pageReadies = 0
let pagePaints = 0
/** What each answered `ready` declared it reports, in order. */
- const pageReports: (readonly string[])[] = []
const routeParamClears: { param: string; value: string }[] = []
const routeRefusals: string[] = []
let receiveOnPage: ((json: string) => void) | null = null
@@ -229,6 +228,7 @@ export function createBridgePortPair(
sessionId: options.sessionId ?? 'session-a',
route: options.route ?? { pathname: '/h/host-a' },
...(options.safeAreaInsets === undefined ? {} : { safeAreaInsets: options.safeAreaInsets }),
+ ...(options.keyboardInset === undefined ? {} : { keyboardInset: options.keyboardInset }),
readClientIdentity: () =>
options.clientIdentity === undefined ? PORT_PAIR_CLIENT_IDENTITY : options.clientIdentity,
pageRoutes: options.pageRoutes ?? ['/h/[hostId]'],
@@ -254,9 +254,8 @@ export function createBridgePortPair(
}),
onStorageWrite: (key, value) => storageWrites.push({ key, value }),
onPageFault: (error) => pageFaults.push(error),
- onPageReady: ({ reports }) => {
+ onPageReady: () => {
pageReadies += 1
- pageReports.push(reports)
},
onPagePainted: () => {
pagePaints += 1
@@ -299,7 +298,6 @@ export function createBridgePortPair(
pageReadyCount: () => pageReadies,
pagePaintCount: () => pagePaints,
backClaims,
- pageReports: () => pageReports,
routeParamClears: () => routeParamClears,
routeRefusals,
async flush(): Promise {
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-route-update.test.ts b/mobile/src/mobile-web-shell/bridge/bridge-route-update.test.ts
index aaef95a00ff..ff3b1c0b3bb 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-route-update.test.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-route-update.test.ts
@@ -1,7 +1,6 @@
import { describe, expect, it } from 'vitest'
import { createFakeBridgePortPair } from './bridge-port-pair-test-harness'
import type { BridgeInitRoute } from './bridge-envelope'
-import { BRIDGE_ROUTE_UPDATE_ACCEPT } from './bridge-route-update'
const SESSION = '/h/host-a/session/wt-1'
@@ -79,17 +78,13 @@ describe('a route update over a re-sent init', () => {
it('publishes nothing for a re-asked ready that carries the route the page holds', async () => {
const pair = await openedOnTheSession()
const seen = recordRouteUpdates(pair)
- pair.host.receive(
- JSON.stringify({ v: 1, type: 'ready', accepts: [BRIDGE_ROUTE_UPDATE_ACCEPT] })
- )
+ pair.host.receive(JSON.stringify({ v: 1, type: 'ready' }))
await pair.flush()
expect(seen).toEqual([])
// And the same ask after a real update still leaves exactly the one delivery behind it.
pair.host.publishRoute(sessionRoute('pane-1'))
await pair.flush()
- pair.host.receive(
- JSON.stringify({ v: 1, type: 'ready', accepts: [BRIDGE_ROUTE_UPDATE_ACCEPT] })
- )
+ pair.host.receive(JSON.stringify({ v: 1, type: 'ready' }))
await pair.flush()
expect(seen).toEqual(['pane-1'])
})
@@ -114,32 +109,13 @@ describe('a route update over a re-sent init', () => {
expect(pair.client.getShellSession()?.storage).toBe(before)
})
- /**
- * Wire compatibility, the half a schema cannot state: an older page never declares `accepts`, so
- * the shell must not post it a second `init`. That page would read one as a replacement and
- * settle every request it held; the tap it degrades to losing is what it loses today.
- */
- it('sends no second init to a page that never declared it accepts one', async () => {
+ it('sends the second init to a page whose ready declares nothing', async () => {
const pair = await openedOnTheSession()
- expect(pair.readToShell().find((frame) => frame.type === 'ready')?.accepts).toContain(
- BRIDGE_ROUTE_UPDATE_ACCEPT
- )
- // This page, then the same document reloaded as a build that declares nothing -- which is what
- // a released page is. The host reads `accepts` off whichever `ready` it last answered.
pair.host.receive(JSON.stringify({ v: 1, type: 'ready' }))
await pair.flush()
const framesBefore = pair.toPage.length
pair.host.publishRoute(sessionRoute('pane-1'))
await pair.flush()
- expect(pair.toPage.length).toBe(framesBefore)
- // And the contrast, so the case fails when the gate stops gating rather than when it starts.
- pair.host.receive(
- JSON.stringify({ v: 1, type: 'ready', accepts: [BRIDGE_ROUTE_UPDATE_ACCEPT] })
- )
- await pair.flush()
- const framesAfterReady = pair.toPage.length
- pair.host.publishRoute(sessionRoute('pane-2'))
- await pair.flush()
- expect(pair.toPage.length).toBe(framesAfterReady + 1)
+ expect(pair.toPage.length).toBe(framesBefore + 1)
})
})
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-route-update.ts b/mobile/src/mobile-web-shell/bridge/bridge-route-update.ts
index 93e42564424..1f5d3c00e5a 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-route-update.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-route-update.ts
@@ -2,23 +2,15 @@ import { BridgeInitRouteSchema, type BridgeInitRoute } from './bridge-init-route
import { shellScreenRouteKey } from '../shell-screen-route'
/**
- * The one thing a page can say it accepts, which is a second `init` for the session it already has.
- *
* A notification tap for another pane of the session on screen rewrites one route param of a page
* that is already mounted, and the shell has no push lane to deliver it on: `notify` runs
* page-to-shell only, and a shell-to-page frame kind would need a capability of its own
* (`bridge-audio-verbs.ts` refused one for raw PCM). `init` already carries `route`, is already
- * re-sent on every `ready` and is already re-read, so the pane request rides it.
- *
- * Declared by the page rather than assumed by the shell, in both directions. A page too old to
- * name it reads a second `init` as a replacement and settles every request it holds, so a shell
- * that sent one unasked would break it; a shell too old to re-send one leaves a newer page exactly
- * where it is today. Both degrade to the repeat tap doing nothing, which is what it does now.
+ * re-sent on every `ready` and is already re-read, so the pane request rides a second `init`.
*/
-export const BRIDGE_ROUTE_UPDATE_ACCEPT = 'route-update'
/**
- * The one thing a shell can say it accepts, which is a page erasing a one-shot route param.
+ * The notify a page posts to erase a one-shot route param.
*
* The reader erases (ruling 34). A notification tap writes `paneKey` onto the native route, the
* shell re-sends `init` for as long as it holds one, and the page — having applied the pane — asks
@@ -28,10 +20,6 @@ export const BRIDGE_ROUTE_UPDATE_ACCEPT = 'route-update'
* Every one of those is followed by a fresh document's `ready`, answered with the route the shell
* holds then. A clear naming a pane the tap has already moved past is refused by the comparison
* rather than by a sequence number.
- *
- * Declared in `init` rather than assumed, in the direction `ready.accepts` runs the other way. No
- * shipped shell serves a page, so nothing needs negotiating today; the declaration is here so the
- * page's check exists from the first version that can post one.
*/
export const BRIDGE_ROUTE_PARAM_CLEAR = 'route-param-clear'
@@ -67,8 +55,8 @@ export function bridgeRouteMoved(
* What a host does with a rewritten route: hold it for the next `init`, send one now, or refuse.
*
* `hold` and `send` both move what the host will publish, because a page that reloads inside this
- * mount must be handed the newest route on its next `ready` even when it is too old to be sent one
- * in flight. Only `send` is a frame, and only a frame lets the caller clear the param it delivered.
+ * mount must be handed the newest route on its next `ready`. Only `send` is a frame, and only a
+ * frame lets the caller clear the param it delivered.
*/
export type BridgeRouteUpdate =
| { readonly kind: 'send'; readonly route: BridgeInitRoute }
@@ -86,8 +74,6 @@ export type BridgeRouteUpdate =
export function readBridgeRouteUpdate(args: {
held: BridgeInitRoute | null
next: BridgeInitRoute
- /** What the page's last `ready` declared. Empty for every page built before this existed. */
- accepts: readonly string[]
/** Whether this host has a served document that has already had an `init`. */
deliverable: boolean
}): BridgeRouteUpdate {
@@ -100,6 +86,5 @@ export function readBridgeRouteUpdate(args: {
return { kind: 'refuse', issue: 'not-this-screen' }
}
const moved = bridgeRouteMoved(held, parsed.data)
- const sendable = moved && args.deliverable && args.accepts.includes(BRIDGE_ROUTE_UPDATE_ACCEPT)
- return { kind: sendable ? 'send' : 'hold', route: parsed.data }
+ return { kind: moved && args.deliverable ? 'send' : 'hold', route: parsed.data }
}
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-rpc-client-frames.test.ts b/mobile/src/mobile-web-shell/bridge/bridge-rpc-client-frames.test.ts
index 55cff6ace69..f651e23b080 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-rpc-client-frames.test.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-rpc-client-frames.test.ts
@@ -12,10 +12,6 @@ import {
BRIDGE_ACK_INTERVAL_FRAMES
} from './bridge-client-subscriptions'
import { BRIDGE_PROTOCOL_VERSION, type BridgeHostMessage } from './bridge-envelope'
-import { BRIDGE_BACK_FRAME } from './bridge-page-back'
-import { BRIDGE_PAGE_PAINTED } from './bridge-page-painted'
-import { BRIDGE_ROUTE_UPDATE_ACCEPT } from './bridge-route-update'
-import { BRIDGE_SAFE_AREA_ACCEPT } from './bridge-safe-area-insets'
import {
BRIDGE_READY_RETRY_MAX_MS,
BRIDGE_READY_RETRY_MIN_MS
@@ -43,16 +39,9 @@ afterEach(() => {
})
describe('bridge client handshake', () => {
- it('asks for a session as soon as it exists, naming what it can be sent and what it reports', () => {
+ it('asks for a session as soon as it exists, declaring nothing', () => {
const page = createPageClient()
- expect(page.frames()).toEqual([
- {
- v: BRIDGE_PROTOCOL_VERSION,
- type: 'ready',
- accepts: [BRIDGE_ROUTE_UPDATE_ACCEPT, BRIDGE_BACK_FRAME, BRIDGE_SAFE_AREA_ACCEPT],
- reports: [BRIDGE_PAGE_PAINTED]
- }
- ])
+ expect(page.frames()).toEqual([{ v: BRIDGE_PROTOCOL_VERSION, type: 'ready' }])
})
it('keeps asking on a widening backoff until init answers', () => {
@@ -141,13 +130,11 @@ describe('bridge client handshake', () => {
pageRouteGrants: null,
// And no insets, which is the shell that reserves the bar strips outside the view.
safeAreaInsets: { top: 0, right: 0, bottom: 0, left: 0 },
+ keyboardInset: 0,
// And no host and no stored keys, which is what `host-store.web.ts` then answers with.
host: null,
storage: {},
- storageOversize: [],
- // And one that takes nothing from the page beyond the frames every shell has taken, which
- // is what stops the page posting an erase it would refuse whole (ruling 34).
- accepts: []
+ storageOversize: []
})
})
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-rpc-client.ts b/mobile/src/mobile-web-shell/bridge/bridge-rpc-client.ts
index 452bcceb57c..687d26637f7 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-rpc-client.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-rpc-client.ts
@@ -77,6 +77,8 @@ export type BridgeRpcClient = RpcClient & {
onRouteUpdate: (listener: (route: BridgeInitRoute | null) => void) => () => void
/** Fires when an `init` moved the safe-area insets; the value itself is on `getShellSession`. */
onSafeAreaInsetsUpdate: (listener: (insets: BridgeSafeAreaInsets) => void) => () => void
+ /** Fires when an `init` moved the keyboard height; the value itself is on `getShellSession`. */
+ onKeyboardInsetUpdate: (listener: (height: number) => void) => () => void
getShellSession: () => BridgeShellSession | null
/**
* Asks the shell to open a screen this page does not render. False when the shell granted no
@@ -108,7 +110,6 @@ export type BridgeRpcClient = RpcClient & {
/**
* Tells the shell this document has a frame on screen, which is the only thing that does: the
* shell sees a document commit and a page say `ready`, and neither of those is a painted tree.
- * Declared in `ready.reports`, so a shell waiting for it is one this page will answer.
*/
notifyPagePainted: () => void
/**
@@ -141,9 +142,8 @@ export type BridgeRpcClient = RpcClient & {
* (ruling 34). The reader erases: the shell tracks no delivery, so a request stays on the route
* and keeps arriving until the page that applied it says so.
*
- * False when this shell never declared it takes one, which is every shell older than the field.
- * Nothing is owed the caller either way — a clear that did not leave is repaired by the request
- * arriving again, which is the same path a lost frame takes.
+ * False when the frame could not leave. Nothing is owed the caller — a clear that did not leave
+ * is repaired by the request arriving again, which is the same path a lost frame takes.
*/
clearRouteParam: (param: BridgeClearableRouteParam, value: string) => boolean
}
@@ -292,8 +292,7 @@ export function createBridgeRpcClient(options: BridgeRpcClientOptions): BridgeRp
subscriptions,
report,
// Declared here rather than beside the others: the re-assert has to run after the session has
- // taken this frame, so the claim's own gate reads this `init`'s `accepts` and a shell that
- // never named it still hears nothing.
+ // taken this frame.
acceptInit: (message) => {
handshake.stop()
shellSession.accept(message)
@@ -412,8 +411,7 @@ export function createBridgeRpcClient(options: BridgeRpcClientOptions): BridgeRp
send: posted,
requireSession,
isClosed: () => closed,
- hasGrant: (name) => shellSession.current()?.grants.native.includes(name) === true,
- shellAccepts: (name) => shellSession.current()?.accepts.includes(name) === true
+ hasGrant: (name) => shellSession.current()?.grants.native.includes(name) === true
})
const unsubscribeFromMessages = options.onMessage(receive)
@@ -465,9 +463,9 @@ export function createBridgeRpcClient(options: BridgeRpcClientOptions): BridgeRp
onReady: shellSession.onReady,
onRouteUpdate: shellSession.onRouteUpdate,
onSafeAreaInsetsUpdate: shellSession.onSafeAreaInsetsUpdate,
+ onKeyboardInsetUpdate: shellSession.onKeyboardInsetUpdate,
getShellSession: shellSession.current,
clearRouteParam: (param, value) =>
- shellSession.current()?.accepts.includes(BRIDGE_ROUTE_PARAM_CLEAR) === true &&
posted({
v: BRIDGE_PROTOCOL_VERSION,
type: 'notify',
diff --git a/mobile/src/mobile-web-shell/bridge/bridge-safe-area-insets.ts b/mobile/src/mobile-web-shell/bridge/bridge-safe-area-insets.ts
index ada32878371..67d42c774c4 100644
--- a/mobile/src/mobile-web-shell/bridge/bridge-safe-area-insets.ts
+++ b/mobile/src/mobile-web-shell/bridge/bridge-safe-area-insets.ts
@@ -41,10 +41,3 @@ export function sameSafeAreaInsets(
left.left === right.left
)
}
-
-/**
- * What a page puts in `ready.accepts` to say it pads for the system bars itself. The shell draws
- * the WebView edge-to-edge only for such a page: an older page has no reader for the insets and
- * would lay its header under the status bar, so it keeps the strips the shell reserves.
- */
-export const BRIDGE_SAFE_AREA_ACCEPT = 'safe-area-insets'
diff --git a/mobile/src/mobile-web-shell/bridge/page-first-paint-through-the-bridge.test.ts b/mobile/src/mobile-web-shell/bridge/page-first-paint-through-the-bridge.test.ts
index 86d5189db5e..c4962ebe16c 100644
--- a/mobile/src/mobile-web-shell/bridge/page-first-paint-through-the-bridge.test.ts
+++ b/mobile/src/mobile-web-shell/bridge/page-first-paint-through-the-bridge.test.ts
@@ -1,37 +1,18 @@
/**
- * The paint report end to end, and the three pairings it has to survive: a shell that never
- * advertised it, a page that never declared it, and two halves that did both.
- *
- * Driven through the real port pair rather than a mocked host, because what is worth proving is
- * that each half reads the other's word off a real frame rather than assuming it.
+ * The paint report end to end, driven through the real port pair rather than a mocked host, because
+ * what is worth proving is that the page's post reaches the shell's cover over a real frame.
*/
import { describe, expect, it } from 'vitest'
import { readFileSync } from 'node:fs'
import { join } from 'node:path'
import { createFakeRpcClient } from '../bridge-host-test-fakes'
import { createFakeBridgePortPair } from './bridge-port-pair-test-harness'
-import { BRIDGE_PAGE_PAINTED } from './bridge-page-painted'
import { createRouteScreenPaintReporter } from './page-first-paint'
-/** One `init` frame with one name taken out of `accepts`, which is what an older shell sends. */
-function stripAccept(json: string, name: string): string {
- const frame: unknown = JSON.parse(json)
- if (typeof frame !== 'object' || frame === null || !('type' in frame)) {
- return json
- }
- const record: Record = { ...frame }
- if (record.type !== 'init' || !Array.isArray(record.accepts)) {
- return json
- }
- record.accepts = record.accepts.filter((entry) => entry !== name)
- return JSON.stringify(record)
-}
-
describe('the page telling the shell it has a frame', () => {
- it('new shell, new page: declares on ready and posts after the first paint', async () => {
+ it('posts after the first paint, and not before', async () => {
const pair = createFakeBridgePortPair({ rpc: createFakeRpcClient() })
await pair.flush()
- expect(pair.pageReports()).toEqual([[BRIDGE_PAGE_PAINTED]])
expect(pair.pagePaintCount()).toBe(0)
// The two frames the entry waits out, drained by hand so "after the paint" is a step.
@@ -52,31 +33,6 @@ describe('the page telling the shell it has a frame', () => {
expect(pair.pagePaintCount()).toBe(1)
})
- it('old shell, new page: posts nothing, so no shell is left refusing a frame', async () => {
- // Stands for every shell installed before this change: `notify` is a closed union there, so an
- // unasked-for report is an error frame per mount rather than a dropped one.
- const pair = createFakeBridgePortPair({
- rpc: createFakeRpcClient(),
- rewriteToPage: (json) => stripAccept(json, BRIDGE_PAGE_PAINTED)
- })
- await pair.flush()
- expect(pair.client.getShellSession()?.accepts).not.toContain(BRIDGE_PAGE_PAINTED)
- const framesToShell = pair.toShell.length
- pair.client.notifyPagePainted()
- await pair.flush()
- expect(pair.toShell).toHaveLength(framesToShell)
- expect(pair.pagePaintCount()).toBe(0)
- expect(pair.hostDiagnostics).not.toContainEqual(
- expect.objectContaining({ refusal: 'unrecognised-message' })
- )
- })
-
- it('advertises the report in init, which is what the page reads before posting one', async () => {
- const pair = createFakeBridgePortPair({ rpc: createFakeRpcClient() })
- await pair.flush()
- expect(pair.client.getShellSession()?.accepts).toContain(BRIDGE_PAGE_PAINTED)
- })
-
it('is reported by the page entry, from the effect that runs after the tree commits', () => {
// The one call site, pinned: every test above drives the client directly, so a deleted line in
// the entry would leave a shell covering a page that has painted and will never say so.
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-back-claim-state.test.ts b/mobile/src/mobile-web-shell/mobile-web-shell-back-claim-state.test.ts
index 29c0d802860..b75cd2b5447 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-back-claim-state.test.ts
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-back-claim-state.test.ts
@@ -13,7 +13,7 @@ describe('the page claiming the device Back key', () => {
function claimed(): MobileWebShellStep {
return run(
readySession().session,
- { type: 'page-ready', reports: [], accepts: [] },
+ { type: 'page-ready' },
{ type: 'page-back-claim', claimed: true }
)
}
@@ -38,7 +38,7 @@ describe('the page claiming the device Back key', () => {
})
it('drops it when the document asks for a session again, so the page has to claim again', () => {
- const reasked = run(claimed().session, { type: 'page-ready', reports: [], accepts: [] })
+ const reasked = run(claimed().session, { type: 'page-ready' })
expect(shellPageBackClaimed(reasked.session)).toBe(false)
})
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-failed-update-fallback.test.ts b/mobile/src/mobile-web-shell/mobile-web-shell-failed-update-fallback.test.ts
index 7814b33c73f..3ae35fc7a6e 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-failed-update-fallback.test.ts
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-failed-update-fallback.test.ts
@@ -122,6 +122,7 @@ function manifestOf(
buildId: computeMobileWebBundleId(assets),
minCompatibleRuntimeProtocolVersion: 2,
runtimeProtocolVersion,
+ pageVersion: 1,
entrypoint: 'index.html',
totalBytes: TOTAL_BYTES,
assets,
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-keyboard-overlay-screen.test.tsx b/mobile/src/mobile-web-shell/mobile-web-shell-keyboard-overlay-screen.test.tsx
new file mode 100644
index 00000000000..bc0c93968c9
--- /dev/null
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-keyboard-overlay-screen.test.tsx
@@ -0,0 +1,108 @@
+import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
+
+const harness = await vi.hoisted(async () => await import('./mobile-web-shell-screen-test-harness'))
+const dependencies = vi.hoisted(() => harness.createScreenDependencies())
+
+const { screenModuleMocks } = await vi.hoisted(
+ async () => await import('./mobile-web-shell-screen-test-mocks')
+)
+const mocks = vi.hoisted(() => screenModuleMocks(dependencies))
+vi.mock('react-native', mocks['react-native'])
+vi.mock('expo-clipboard', mocks['expo-clipboard'])
+vi.mock('expo-haptics', mocks['expo-haptics'])
+vi.mock('expo-document-picker', mocks['expo-document-picker'])
+vi.mock('@orca/expo-two-way-audio', mocks['@orca/expo-two-way-audio'])
+vi.mock('expo-keep-awake', mocks['expo-keep-awake'])
+vi.mock('expo-image-picker', mocks['expo-image-picker'])
+vi.mock('expo-file-system', mocks['expo-file-system'])
+vi.mock('lucide-react-native', mocks['lucide-react-native'])
+vi.mock('react-native-safe-area-context', mocks['react-native-safe-area-context'])
+vi.mock('expo-router', mocks['expo-router'])
+vi.mock('../../modules/orca-mobile-web-shell/src', mocks['../../modules/orca-mobile-web-shell/src'])
+vi.mock('../transport/client-context', mocks['../transport/client-context'])
+vi.mock('./use-page-host-snapshot', mocks['./use-page-host-snapshot'])
+vi.mock('./use-mobile-web-shell-session', mocks['./use-mobile-web-shell-session'])
+
+import { act } from 'react-test-renderer'
+import { clientFrame, createFakeRpcClient } from './bridge-host-test-fakes'
+import {
+ byName,
+ readyState,
+ renderScreen as mountScreen
+} from './mobile-web-shell-screen-test-harness'
+import { readBridgeHostMessage } from './bridge/bridge-envelope'
+import { MobileWebShellScreen } from './MobileWebShellScreen'
+import type { MobileWebShellSessionState } from './mobile-web-shell-session-contract'
+import type { ReactTestRenderer } from 'react-test-renderer'
+
+const renderScreen = (state: MobileWebShellSessionState): Promise =>
+ mountScreen(MobileWebShellScreen, dependencies, state)
+
+afterEach(harness.unmountRenderedScreens)
+
+beforeEach(() => {
+ harness.resetScreenDependencies(dependencies)
+})
+
+const WINDOW = { top: 44, right: 0, bottom: 8, left: 0 }
+
+/**
+ * The page is covered by the keyboard like a native screen: the view keeps its size, and the page
+ * is told the height on every keyboard event.
+ */
+describe('a page the keyboard covers', () => {
+ async function openPage(sessionId: string) {
+ dependencies.client = createFakeRpcClient()
+ const tree = await renderScreen(readyState(sessionId))
+ await act(async () => {
+ byName(tree, 'ShellViewProbe')[0]?.props.onBridgeMessage({
+ nativeEvent: { json: clientFrame({ type: 'ready' }) }
+ })
+ })
+ const root = () => tree.root.find((node) => node.props.testID === 'mobile-web-shell-ready')
+ const inits = () =>
+ dependencies.posted.flatMap((json) => {
+ const read = readBridgeHostMessage(json)
+ return read.ok && read.message.type === 'init'
+ ? [{ keyboard: read.message.keyboardInset ?? 0, insets: read.message.safeAreaInsets }]
+ : []
+ })
+ const keyboard = async (height: number) => {
+ await act(async () => {
+ const ios = dependencies.platform === 'ios'
+ const name =
+ height > 0
+ ? ios
+ ? 'keyboardWillShow'
+ : 'keyboardDidShow'
+ : ios
+ ? 'keyboardWillHide'
+ : 'keyboardDidHide'
+ dependencies.keyboardListeners.get(name)?.({ endCoordinates: { height } })
+ })
+ }
+ return { root, inits, keyboard }
+ }
+
+ for (const platform of ['ios', 'android'] as const) {
+ it(`never shortens the view, and publishes show, a height change and hide (${platform})`, async () => {
+ dependencies.platform = platform
+ const page = await openPage(`session-overlay-${platform}`)
+ // Pixel_API_37: 312 up, 346 with the suggestion strip, then closed. The inset tracks each, so
+ // a keyboard that changes height while open leaves no gap above it.
+ for (const height of [312, 346, 0]) {
+ await page.keyboard(height)
+ expect(page.root().props.style[1]).toEqual({ paddingTop: 0 })
+ }
+ // The keyboard's own height as native screens read it on this OS, home indicator included on
+ // iOS; the page's arithmetic branches on the shell's OS, as native does. The bottom inset
+ // stays the window's.
+ expect(page.inits()).toEqual([
+ { keyboard: 0, insets: WINDOW },
+ { keyboard: 312, insets: WINDOW },
+ { keyboard: 346, insets: WINDOW },
+ { keyboard: 0, insets: WINDOW }
+ ])
+ })
+ }
+})
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-offline-grant-staleness.test.ts b/mobile/src/mobile-web-shell/mobile-web-shell-offline-grant-staleness.test.ts
index c39c5560464..1fb8acee474 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-offline-grant-staleness.test.ts
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-offline-grant-staleness.test.ts
@@ -110,6 +110,7 @@ function manifestGranting(
buildId: BUILD_ID,
minCompatibleRuntimeProtocolVersion: 2,
runtimeProtocolVersion: 5,
+ pageVersion: 1,
entrypoint: 'index.html',
totalBytes: TOTAL_BYTES,
assets: ASSETS,
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-safe-area-screen.test.tsx b/mobile/src/mobile-web-shell/mobile-web-shell-safe-area-screen.test.tsx
index e8fcf93aad7..446f57b5062 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-safe-area-screen.test.tsx
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-safe-area-screen.test.tsx
@@ -31,8 +31,6 @@ import {
renderScreen as mountScreen
} from './mobile-web-shell-screen-test-harness'
import { readBridgeHostMessage } from './bridge/bridge-envelope'
-import { BRIDGE_ROUTE_UPDATE_ACCEPT } from './bridge/bridge-route-update'
-import { BRIDGE_SAFE_AREA_ACCEPT } from './bridge/bridge-safe-area-insets'
import { MobileWebShellScreen } from './MobileWebShellScreen'
import type { MobileWebShellSessionState } from './mobile-web-shell-session-contract'
import type { ReactTestRenderer } from 'react-test-renderer'
@@ -47,16 +45,16 @@ beforeEach(() => {
})
/**
- * A page that pads for the system bars itself gets the whole window, like a native screen: it
+ * Every page pads for the system bars itself and gets the whole window, like a native screen: it
* paints under both bars and its SafeAreaViews pad by the insets `init` carries.
*/
describe('a page that owns its safe area', () => {
- async function openPage(sessionId: string, accepts: readonly string[]) {
+ async function openPage(sessionId: string) {
dependencies.client = createFakeRpcClient()
const tree = await renderScreen(readyState(sessionId))
await act(async () => {
byName(tree, 'ShellViewProbe')[0]?.props.onBridgeMessage({
- nativeEvent: { json: clientFrame({ type: 'ready', accepts }) }
+ nativeEvent: { json: clientFrame({ type: 'ready' }) }
})
})
const root = () => tree.root.find((node) => node.props.testID === 'mobile-web-shell-ready')
@@ -65,73 +63,31 @@ describe('a page that owns its safe area', () => {
const read = readBridgeHostMessage(json)
return read.ok && read.message.type === 'init' ? [read.message.safeAreaInsets ?? null] : []
})
- const keyboard = async (height: number) => {
- await act(async () => {
- const ios = dependencies.platform === 'ios'
- const name =
- height > 0
- ? ios
- ? 'keyboardWillShow'
- : 'keyboardDidShow'
- : ios
- ? 'keyboardWillHide'
- : 'keyboardDidHide'
- dependencies.keyboardListeners.get(name)?.({ endCoordinates: { height } })
- })
- }
- return { tree, root, initInsets, keyboard }
- }
- const ownedPage = (sessionId: string) => {
- dependencies.pageOwnsSafeArea = true
- return openPage(sessionId, [BRIDGE_ROUTE_UPDATE_ACCEPT, BRIDGE_SAFE_AREA_ACCEPT])
+ return { tree, root, initInsets }
}
+ // A `ready` that declares nothing: every page the shell serves reads the insets.
+ const ownedPage = openPage
const WINDOW = { top: 44, right: 0, bottom: 8, left: 0 }
it('draws the view edge-to-edge and hands the page the insets it now sits under', async () => {
const page = await ownedPage('session-owned')
- expect(page.root().props.style[1]).toEqual({ paddingTop: 0, paddingBottom: 0 })
+ expect(page.root().props.style[1]).toEqual({ paddingTop: 0 })
expect(page.initInsets()).toEqual([WINDOW])
})
- it('re-sends init with no bottom inset while the keyboard ends the view', async () => {
- const page = await ownedPage('session-owned-keyboard')
- await page.keyboard(336)
- // The view ends at the keyboard's top, so nothing of it is under the gesture bar.
- expect(page.root().props.style[1]).toEqual({ paddingTop: 0, paddingBottom: 336 })
- await page.keyboard(0)
- expect(page.root().props.style[1]).toEqual({ paddingTop: 0, paddingBottom: 0 })
- expect(page.initInsets()).toEqual([WINDOW, { ...WINDOW, bottom: 0 }, WINDOW])
- })
-
- it('does the same on Android, where the IME strip is measured above the gesture bar', async () => {
- dependencies.platform = 'android'
- const page = await ownedPage('session-owned-android')
- await page.keyboard(336)
- expect(page.root().props.style[1]).toEqual({ paddingTop: 0, paddingBottom: 344 })
- await page.keyboard(0)
- expect(page.root().props.style[1]).toEqual({ paddingTop: 0, paddingBottom: 0 })
- expect(page.initInsets()).toEqual([WINDOW, { ...WINDOW, bottom: 0 }, WINDOW])
- })
-
it('gives the status bar strip to the update banner while it shows', async () => {
dependencies.updateNotice = 'update-failed'
const page = await ownedPage('session-owned-banner')
- expect(page.root().props.style[1]).toEqual({ paddingTop: 44, paddingBottom: 0 })
+ expect(page.root().props.style[1]).toEqual({ paddingTop: 44 })
expect(page.initInsets()).toEqual([{ ...WINDOW, top: 0 }])
+ const dismiss = byName(page.tree, 'Pressable').find(
+ (node) => node.props.accessibilityLabel === 'Dismiss notice'
+ )
+ expect(dismiss).toBeDefined()
await act(async () => {
- byName(page.tree, 'Pressable')
- .find((node) => node.props.accessibilityLabel === 'Dismiss notice')
- ?.props.onPress()
+ dismiss?.props.onPress()
})
- expect(page.root().props.style[1]).toEqual({ paddingTop: 0, paddingBottom: 0 })
+ expect(page.root().props.style[1]).toEqual({ paddingTop: 0 })
expect(page.initInsets()).toEqual([{ ...WINDOW, top: 0 }, WINDOW])
})
-
- it('sends no second init to an older page that takes route updates but not insets', async () => {
- const page = await openPage('session-older', [BRIDGE_ROUTE_UPDATE_ACCEPT])
- await page.keyboard(336)
- await page.keyboard(0)
- expect(page.root().props.style[1]).toEqual({ paddingTop: 44, paddingBottom: 8 })
- expect(page.initInsets()).toHaveLength(1)
- })
})
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-safe-area-state.test.ts b/mobile/src/mobile-web-shell/mobile-web-shell-safe-area-state.test.ts
deleted file mode 100644
index 0ea58b85b0b..00000000000
--- a/mobile/src/mobile-web-shell/mobile-web-shell-safe-area-state.test.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { describe, expect, it } from 'vitest'
-import { readySession, run } from './mobile-web-shell-session-test-fixtures'
-import { BRIDGE_SAFE_AREA_ACCEPT } from './bridge/bridge-safe-area-insets'
-import { shellPageOwnsSafeArea } from './page-document-state'
-
-/** Whether the shell may draw the view edge-to-edge, which only the document on screen can say. */
-describe('the page declaring it pads for the system bars', () => {
- const owned = () =>
- run(readySession().session, {
- type: 'page-ready',
- reports: [],
- accepts: [BRIDGE_SAFE_AREA_ACCEPT]
- })
-
- it('is read off the ready that declared it', () => {
- expect(shellPageOwnsSafeArea(owned().session)).toBe(true)
- })
-
- it('is false for a page that did not declare it, which is every page before the name', () => {
- const older = run(readySession().session, { type: 'page-ready', reports: [], accepts: [] })
- expect(shellPageOwnsSafeArea(older.session)).toBe(false)
- })
-
- it('is dropped when a replacement document starts, so the next one has to say it again', () => {
- expect(shellPageOwnsSafeArea(run(owned().session, { type: 'document-started' }).session)).toBe(
- false
- )
- })
-
- it('is not read once the generation is off screen', () => {
- const failed = run(owned().session, { type: 'shell-failed', reason: 'document-load-failed' })
- expect(shellPageOwnsSafeArea(failed.session)).toBe(false)
- })
-})
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-screen-test-harness.tsx b/mobile/src/mobile-web-shell/mobile-web-shell-screen-test-harness.tsx
index 64135cef248..2abeff8fd96 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-screen-test-harness.tsx
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-screen-test-harness.tsx
@@ -55,9 +55,7 @@ export type ScreenDependencies = {
setScreenOptions: Mock
/** Whether the session says the page is holding the device Back key. */
backClaimed: boolean
- /** Whether the session says the page pads for the system bars itself. */
- pageOwnsSafeArea: boolean
- /** What `Platform.OS` answers, which picks the keyboard events and the IME strip. */
+ /** What `Platform.OS` answers, which picks the keyboard events. */
platform: 'ios' | 'android'
reportPageBackClaim: Mock
/** Whether the mounted host would take a press, which is a page that declared it takes one. */
@@ -114,7 +112,6 @@ export function createScreenDependencies(): ScreenDependencies {
backHandlers: new Map(),
setScreenOptions: vi.fn(),
backClaimed: false,
- pageOwnsSafeArea: false,
platform: 'ios',
reportPageBackClaim: vi.fn(),
sendBackDelivers: true,
@@ -154,7 +151,6 @@ export function resetScreenDependencies(dependencies: ScreenDependencies): void
dependencies.setScreenOptions.mockReset()
dependencies.reportPageBackClaim.mockReset()
dependencies.backClaimed = false
- dependencies.pageOwnsSafeArea = false
dependencies.platform = 'ios'
dependencies.sendBackDelivers = true
dependencies.backSends = 0
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-screen-test-mocks.tsx b/mobile/src/mobile-web-shell/mobile-web-shell-screen-test-mocks.tsx
index c622c77f11d..1976c3d700f 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-screen-test-mocks.tsx
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-screen-test-mocks.tsx
@@ -180,8 +180,7 @@ export function screenModuleMocks(dependencies: ScreenDependencies) {
reportPageBackClaim: dependencies.reportPageBackClaim,
pageReady: dependencies.pageReady,
pageFrame: dependencies.pageFrame,
- backClaimed: dependencies.backClaimed,
- pageOwnsSafeArea: dependencies.pageOwnsSafeArea
+ backClaimed: dependencies.backClaimed
})
})
}
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-session-contract.ts b/mobile/src/mobile-web-shell/mobile-web-shell-session-contract.ts
index 98f0df8a900..bfc8c5f385e 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-session-contract.ts
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-session-contract.ts
@@ -11,11 +11,6 @@ import type {
MobileWebShellUpdateFailureFacts
} from './mobile-web-shell-update-failure'
-/** What one `ready` declared: what the page will report, and what it can be sent. */
-export type PageReadyDeclaration = {
- readonly reports: readonly string[]
- readonly accepts: readonly string[]
-}
/**
* Whether the host can be asked anything right now.
*
@@ -218,12 +213,9 @@ export type MobileWebShellSessionEvent =
/** The native view finished a document. Unstamped, like the view's failure and for the same
* reason: the view exists only under the generation on screen. */
| { readonly type: 'document-loaded' }
- /**
- * The page said `ready` over the bridge, which is the only proof its code ran at all, carrying
- * what that `ready` declared it reports and accepts.
- */
- | ({ readonly type: 'page-ready' } & PageReadyDeclaration)
- /** The page has a frame on screen. Only a page that declared it ever sends one. */
+ /** The page said `ready` over the bridge, which is the only proof its code ran at all. */
+ | { readonly type: 'page-ready' }
+ /** The page has a frame on screen. */
| { readonly type: 'page-painted' }
/** The page is holding the device Back key, or has let it go. The host sends false on its own
* for every way a document ends, so this never has to be inferred from silence. */
@@ -251,9 +243,6 @@ export type MobileWebShellSession = {
/** Whether the document on screen has spoken over the bridge. Cleared by every new document,
* because each one has to prove itself: the last one's word says nothing about this one. */
readonly pageReady: boolean
- /** Whether this document said it would report its first paint. Cleared with `pageReady`, and
- * false for every page built before the report existed. */
- readonly pageReportsPaint: boolean
/** Whether this document has reported a frame on screen. Cleared with `pageReady`. */
readonly pagePainted: boolean
/**
@@ -264,9 +253,6 @@ export type MobileWebShellSession = {
* with it, which is a key that does nothing at all.
*/
readonly pageBackClaimed: boolean
- /** Whether this document pads for the system bars itself, so the view may go edge-to-edge.
- * Cleared with `pageReady`, and false for every page built before the declaration existed. */
- readonly pageOwnsSafeArea: boolean
/** The gates the current step was taken on; null until the first one arrives. */
readonly gates: MobileWebShellGates | null
readonly cached: CachedGeneration | null
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-session-effects.test.ts b/mobile/src/mobile-web-shell/mobile-web-shell-session-effects.test.ts
index 24f3e9a01b8..5777cb8173f 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-session-effects.test.ts
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-session-effects.test.ts
@@ -20,7 +20,7 @@ import { MobileWebBundleFetchError } from '../transport/mobile-web-bundle-fetch-
import { markRpcDeliveryUnknown } from '../transport/rpc-delivery-ambiguity'
import type { RpcClient } from '../transport/rpc-client'
import type { GenerationStore } from './generation-store'
-import { download, readManifest } from './mobile-web-shell-session-effects'
+import { download, openCache, readManifest } from './mobile-web-shell-session-effects'
// The mocked operations never touch the client; they only need one to exist.
const CLIENT: RpcClient = {
@@ -128,6 +128,27 @@ describe('the manifest read', () => {
})
})
+describe('the page version the floor reads', () => {
+ it('is carried from the host manifest to the reducer', async () => {
+ doubles.manifest = () => Promise.resolve({ manifest: { ...MANIFEST, pageVersion: 4 } })
+ const { events, send } = collect()
+ await readManifest(CLIENT, 3, send)
+ expect(events).toMatchObject([{ type: 'manifest-read', manifest: { pageVersion: 4 } }])
+ })
+
+ it('is carried from the cached manifest to the generation judged against the host', async () => {
+ const store: GenerationStore = {
+ ...storeThat(null),
+ readActiveGeneration: async () => ({
+ buildId: MANIFEST.buildId,
+ directory: 'd',
+ manifest: { ...MANIFEST, pageVersion: 4, routes: [] }
+ })
+ }
+ expect((await openCache(store, 'k'))?.compat.pageVersion).toBe(4)
+ })
+})
+
describe('the download', () => {
beforeEach(() => {
doubles.fetch = () =>
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-session-effects.ts b/mobile/src/mobile-web-shell/mobile-web-shell-session-effects.ts
index 989f56bb99b..56f3ab554d0 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-session-effects.ts
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-session-effects.ts
@@ -40,7 +40,9 @@ export async function openCache(
compat: {
schemaVersion: active.manifest.schemaVersion,
runtimeProtocolVersion: active.manifest.runtimeProtocolVersion,
- minCompatibleRuntimeProtocolVersion: active.manifest.minCompatibleRuntimeProtocolVersion
+ minCompatibleRuntimeProtocolVersion:
+ active.manifest.minCompatibleRuntimeProtocolVersion,
+ pageVersion: active.manifest.pageVersion
}
}
} catch {
@@ -78,6 +80,7 @@ export async function readManifest(
schemaVersion: manifest.schemaVersion,
runtimeProtocolVersion: manifest.runtimeProtocolVersion,
minCompatibleRuntimeProtocolVersion: manifest.minCompatibleRuntimeProtocolVersion,
+ pageVersion: manifest.pageVersion,
totalBytes: manifest.totalBytes,
totalAssets: manifest.assets.length,
routes: manifest.routes,
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-session-test-fixtures.ts b/mobile/src/mobile-web-shell/mobile-web-shell-session-test-fixtures.ts
index 2151597353e..17fb655dba6 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-session-test-fixtures.ts
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-session-test-fixtures.ts
@@ -41,6 +41,7 @@ export const MANIFEST_WIRE: MobileWebBundleManifestRead = {
buildId: 'b'.repeat(64),
minCompatibleRuntimeProtocolVersion: 2,
runtimeProtocolVersion: 5,
+ pageVersion: 1,
entrypoint: 'index.html',
totalBytes: 4096,
assets: [
@@ -86,6 +87,7 @@ export function manifestFacts(wire: MobileWebBundleManifestRead): MobileWebShell
schemaVersion: wire.schemaVersion,
runtimeProtocolVersion: wire.runtimeProtocolVersion,
minCompatibleRuntimeProtocolVersion: wire.minCompatibleRuntimeProtocolVersion,
+ pageVersion: wire.pageVersion,
totalBytes: wire.totalBytes,
totalAssets: wire.assets.length,
routes: wire.routes,
@@ -103,7 +105,8 @@ export const CACHED: CachedGeneration = {
compat: {
schemaVersion: MANIFEST.schemaVersion,
runtimeProtocolVersion: MANIFEST.runtimeProtocolVersion,
- minCompatibleRuntimeProtocolVersion: MANIFEST.minCompatibleRuntimeProtocolVersion
+ minCompatibleRuntimeProtocolVersion: MANIFEST.minCompatibleRuntimeProtocolVersion,
+ pageVersion: MANIFEST.pageVersion
}
}
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-session.test.ts b/mobile/src/mobile-web-shell/mobile-web-shell-session.test.ts
index 1cf6c0914b0..a0cf5fd0774 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-session.test.ts
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-session.test.ts
@@ -14,7 +14,6 @@ import {
LINK_LOST,
withoutRecord
} from './mobile-web-shell-session-test-fixtures'
-import { BRIDGE_PAGE_PAINTED } from './bridge/bridge-page-painted'
import { shellPageFrame } from './shell-page-frame'
describe('the gates decide whether a step is taken at all', () => {
@@ -221,6 +220,25 @@ describe('the connected flow', () => {
})
})
+ it('walls a listed route whose page is older than this shell, as a desktop to update', () => {
+ for (const manifest of [
+ { ...MANIFEST, pageVersion: 0 },
+ { ...MANIFEST, pageVersion: undefined }
+ ]) {
+ const step = run(afterCacheRead(null).session, { type: 'manifest-read', manifest })
+ expect(step.session.state).toEqual({
+ kind: 'wall',
+ verdict: {
+ kind: 'blocked',
+ reason: 'bundle-incompatible',
+ side: 'desktop',
+ pageVersion: 0,
+ requiredPageVersion: 1
+ }
+ })
+ }
+ })
+
it('tells the page which routes it may keep, so it hands the rest back', () => {
const step = run(afterCacheRead(null).session, { type: 'manifest-read', manifest: MANIFEST })
expect(step.session.pageRoutes).toEqual(['/h/[hostId]'])
@@ -690,11 +708,7 @@ describe('the page has to speak for the document that loaded', () => {
})
it('arms nothing when the page spoke first, because there is nothing left to wait for', () => {
- const step = run(
- readySession().session,
- { type: 'page-ready', reports: [], accepts: [] },
- { type: 'document-loaded' }
- )
+ const step = run(readySession().session, { type: 'page-ready' }, { type: 'document-loaded' })
expect(step.effects).toEqual([])
expect(step.session.pageReady).toBe(true)
})
@@ -718,7 +732,7 @@ describe('the page has to speak for the document that loaded', () => {
const step = run(
readySession().session,
{ type: 'document-loaded' },
- { type: 'page-ready', reports: [], accepts: [] },
+ { type: 'page-ready' },
{ type: 'page-ready-deadline' }
)
expect(step.effects).toEqual([])
@@ -737,7 +751,7 @@ describe('the page has to speak for the document that loaded', () => {
})
it('makes the second document prove itself, rather than riding the first one word', () => {
- const spoken = run(readySession().session, { type: 'page-ready', reports: [], accepts: [] })
+ const spoken = run(readySession().session, { type: 'page-ready' })
const remounted = run(spoken.session, { type: 'remounted', sessionId: 'session-two' })
expect(remounted.session.pageReady).toBe(false)
expect(run(remounted.session, { type: 'document-loaded' }).effects).toEqual([
@@ -746,11 +760,7 @@ describe('the page has to speak for the document that loaded', () => {
})
it('leaves a remounted document its own wait when the first one expires late', () => {
- const first = run(
- readySession().session,
- { type: 'document-loaded' },
- { type: 'page-ready', reports: [], accepts: [] }
- )
+ const first = run(readySession().session, { type: 'document-loaded' }, { type: 'page-ready' })
const armed = first.session.flow
const second = run(
first.session,
@@ -766,7 +776,7 @@ describe('the page has to speak for the document that loaded', () => {
})
it('makes a freshly activated generation prove itself too', () => {
- const spoken = run(readySession().session, { type: 'page-ready', reports: [], accepts: [] })
+ const spoken = run(readySession().session, { type: 'page-ready' })
const reactivated = run(spoken.session, {
type: 'activated',
generationDirectory: CACHED.directory,
@@ -784,13 +794,8 @@ describe('the page has to speak for the document that loaded', () => {
* thing that says the view is worth showing is the page saying so.
*/
describe('the page reporting a frame on screen', () => {
- it('records what the ready declared and keeps the frame covered until the report', () => {
- const spoken = run(readySession().session, {
- type: 'page-ready',
- reports: [BRIDGE_PAGE_PAINTED],
- accepts: []
- })
- expect(spoken.session.pageReportsPaint).toBe(true)
+ it('keeps the frame covered past ready until the report', () => {
+ const spoken = run(readySession().session, { type: 'page-ready' })
expect(spoken.session.pagePainted).toBe(false)
expect(shellPageFrame(spoken.session)).toBe('unpainted')
const painted = run(spoken.session, { type: 'page-painted' })
@@ -798,42 +803,15 @@ describe('the page reporting a frame on screen', () => {
expect(shellPageFrame(painted.session)).toBe('painted')
})
- it('new shell, old page: ignores an undeclared report and uncovers on ready', () => {
- const spoken = run(readySession().session, { type: 'page-ready', reports: [], accepts: [] })
- const step = run(spoken.session, { type: 'page-painted' })
- expect(step.session.pagePainted).toBe(false)
- // Uncovered anyway: `ready` is the newest word a page built before the report can say.
- expect(shellPageFrame(step.session)).toBe('painted')
- })
-
- it('re-reads the declaration on every ask, because a reload asks again', () => {
- const declared = run(readySession().session, {
- type: 'page-ready',
- reports: [BRIDGE_PAGE_PAINTED],
- accepts: []
- })
- const reloaded = run(declared.session, { type: 'page-ready', reports: [], accepts: [] })
- expect(reloaded.session.pageReportsPaint).toBe(false)
- })
-
it('makes a remounted document report its own frame', () => {
- const painted = run(
- readySession().session,
- { type: 'page-ready', reports: [BRIDGE_PAGE_PAINTED], accepts: [] },
- { type: 'page-painted' }
- )
+ const painted = run(readySession().session, { type: 'page-ready' }, { type: 'page-painted' })
const remounted = run(painted.session, { type: 'remounted', sessionId: 'session-two' })
expect(remounted.session.pagePainted).toBe(false)
- expect(remounted.session.pageReportsPaint).toBe(false)
expect(shellPageFrame(remounted.session)).toBe('unpainted')
})
it('makes a freshly activated generation report its own frame', () => {
- const painted = run(
- readySession().session,
- { type: 'page-ready', reports: [BRIDGE_PAGE_PAINTED], accepts: [] },
- { type: 'page-painted' }
- )
+ const painted = run(readySession().session, { type: 'page-ready' }, { type: 'page-painted' })
const reactivated = run(painted.session, {
type: 'activated',
generationDirectory: CACHED.directory,
@@ -843,24 +821,15 @@ describe('the page reporting a frame on screen', () => {
elapsedMs: 9
})
expect(reactivated.session.pagePainted).toBe(false)
- expect(reactivated.session.pageReportsPaint).toBe(false)
})
it('makes the document that replaced a painted one inside this mount report its own frame', () => {
- const painted = run(
- readySession().session,
- { type: 'page-ready', reports: [BRIDGE_PAGE_PAINTED], accepts: [] },
- { type: 'page-painted' }
- )
+ const painted = run(readySession().session, { type: 'page-ready' }, { type: 'page-painted' })
expect(shellPageFrame(painted.session)).toBe('painted')
// No new session and no new generation: the view reloaded under the one already on screen.
const restarted = run(painted.session, { type: 'document-started' })
expect(restarted.session.pagePainted).toBe(false)
- const reasked = run(restarted.session, {
- type: 'page-ready',
- reports: [BRIDGE_PAGE_PAINTED],
- accepts: []
- })
+ const reasked = run(restarted.session, { type: 'page-ready' })
expect(shellPageFrame(reasked.session)).toBe('unpainted')
expect(shellPageFrame(run(reasked.session, { type: 'page-painted' }).session)).toBe('painted')
})
@@ -869,11 +838,7 @@ describe('the page reporting a frame on screen', () => {
const loaded = run(readySession().session, { type: 'document-loaded' })
expect(loaded.effects).toEqual([{ kind: 'await-page-ready' }])
const armed = loaded.session.flow
- const spoken = run(loaded.session, {
- type: 'page-ready',
- reports: [BRIDGE_PAGE_PAINTED],
- accepts: []
- })
+ const spoken = run(loaded.session, { type: 'page-ready' })
const restarted = run(spoken.session, { type: 'document-started' })
// The replacement is still loading and has said nothing, which is exactly what the retired
// document's deadline reads as a document that never loaded.
@@ -888,9 +853,9 @@ describe('the page reporting a frame on screen', () => {
it('keeps the frame of a document that repeats its own handshake', () => {
const painted = run(
readySession().session,
- { type: 'page-ready', reports: [BRIDGE_PAGE_PAINTED], accepts: [] },
+ { type: 'page-ready' },
{ type: 'page-painted' },
- { type: 'page-ready', reports: [BRIDGE_PAGE_PAINTED], accepts: [] }
+ { type: 'page-ready' }
)
// The document never restarted, so its frame is still the one on screen.
expect(painted.session.pagePainted).toBe(true)
@@ -900,8 +865,9 @@ describe('the page reporting a frame on screen', () => {
it('records nothing from a page whose generation is no longer on screen', () => {
const failed = run(readySession().session, {
type: 'shell-failed',
- reason: 'render-process-gone'
+ reason: 'document-load-failed'
})
+ expect(failed.session.state.kind).not.toBe('ready')
expect(run(failed.session, { type: 'page-painted' }).session.pagePainted).toBe(false)
})
})
diff --git a/mobile/src/mobile-web-shell/mobile-web-shell-session.ts b/mobile/src/mobile-web-shell/mobile-web-shell-session.ts
index 5a0a25b7db6..595e1d92dfd 100644
--- a/mobile/src/mobile-web-shell/mobile-web-shell-session.ts
+++ b/mobile/src/mobile-web-shell/mobile-web-shell-session.ts
@@ -39,10 +39,8 @@ export function createMobileWebShellSession(routePathname: string): MobileWebShe
retriedOnce: false,
remountedOnce: false,
pageReady: false,
- pageReportsPaint: false,
pagePainted: false,
pageBackClaimed: false,
- pageOwnsSafeArea: false,
gates: null,
cached: null,
updateNotice: null,
diff --git a/mobile/src/mobile-web-shell/page-document-state.ts b/mobile/src/mobile-web-shell/page-document-state.ts
index 935f201d346..e2405f24591 100644
--- a/mobile/src/mobile-web-shell/page-document-state.ts
+++ b/mobile/src/mobile-web-shell/page-document-state.ts
@@ -1,5 +1,3 @@
-import { BRIDGE_PAGE_PAINTED } from './bridge/bridge-page-painted'
-import { BRIDGE_SAFE_AREA_ACCEPT } from './bridge/bridge-safe-area-insets'
import type {
MobileWebShellSession,
MobileWebShellSessionEvent
@@ -8,10 +6,8 @@ import type {
/** Everything one document told the shell about itself, which the next one has to say again. */
export const CLEAR_PAGE_DOCUMENT_STATE = {
pageReady: false,
- pageReportsPaint: false,
pagePainted: false,
- pageBackClaimed: false,
- pageOwnsSafeArea: false
+ pageBackClaimed: false
} as const
/** The three things a document reports about itself, as the reducer receives them. */
@@ -25,7 +21,7 @@ export type PageDocumentEvent = Extract<
* view exists only under the generation on screen.
*/
export function pageDocumentStatePatch(
- session: Pick,
+ session: Pick,
event: PageDocumentEvent
): Partial {
if (session.state.kind !== 'ready') {
@@ -35,25 +31,8 @@ export function pageDocumentStatePatch(
return { pageBackClaimed: event.claimed }
}
if (event.type === 'page-ready') {
- // Re-read on every ask rather than latched: a document that reloads inside this mount asks
- // again, and it is the newest ask that says whether a paint report is coming. The key goes with
- // it: the host drops the claim on the same `ready`, so a page that still holds one re-claims.
- return {
- pageReady: true,
- pageReportsPaint: event.reports.includes(BRIDGE_PAGE_PAINTED),
- pageBackClaimed: false,
- pageOwnsSafeArea: event.accepts.includes(BRIDGE_SAFE_AREA_ACCEPT)
- }
+ // The host drops the claim on the same `ready`, so a page that still holds one re-claims.
+ return { pageReady: true, pageBackClaimed: false }
}
- // Kept off a page that never said it would report: acting on an unasked-for frame would make
- // the wait depend on a name arriving instead of on a claim the page made.
- return session.pageReportsPaint ? { pagePainted: true } : {}
-}
-
-/** Whether the shell may draw the view edge-to-edge: gated on `ready` like the Back claim, so a
- * declaration never outlives the document on screen. */
-export function shellPageOwnsSafeArea(
- session: Pick
-): boolean {
- return session.state.kind === 'ready' && session.pageOwnsSafeArea
+ return { pagePainted: true }
}
diff --git a/mobile/src/mobile-web-shell/page-safe-area-insets.test.ts b/mobile/src/mobile-web-shell/page-safe-area-insets.test.ts
index 76877567b31..e0bd1305405 100644
--- a/mobile/src/mobile-web-shell/page-safe-area-insets.test.ts
+++ b/mobile/src/mobile-web-shell/page-safe-area-insets.test.ts
@@ -5,22 +5,10 @@ const WINDOW = { top: 52, right: 12, bottom: 24, left: 12 }
describe('the insets the page pads for', () => {
it('is the window insets while nothing of the shell stands over the view', () => {
- expect(pageSafeAreaInsets({ insets: WINDOW, keyboardInset: 0, topCovered: false })).toEqual(
- WINDOW
- )
- })
-
- it('has no bottom while the keyboard ends the view above the gesture bar', () => {
- expect(pageSafeAreaInsets({ insets: WINDOW, keyboardInset: 360, topCovered: false })).toEqual({
- ...WINDOW,
- bottom: 0
- })
+ expect(pageSafeAreaInsets({ insets: WINDOW, topCovered: false })).toEqual(WINDOW)
})
it('has no top while the shell banner takes the status bar strip', () => {
- expect(pageSafeAreaInsets({ insets: WINDOW, keyboardInset: 0, topCovered: true })).toEqual({
- ...WINDOW,
- top: 0
- })
+ expect(pageSafeAreaInsets({ insets: WINDOW, topCovered: true })).toEqual({ ...WINDOW, top: 0 })
})
})
diff --git a/mobile/src/mobile-web-shell/page-safe-area-insets.ts b/mobile/src/mobile-web-shell/page-safe-area-insets.ts
index 3b9666baca9..71da590370b 100644
--- a/mobile/src/mobile-web-shell/page-safe-area-insets.ts
+++ b/mobile/src/mobile-web-shell/page-safe-area-insets.ts
@@ -4,26 +4,24 @@ import type { BridgeSafeAreaInsets } from './bridge/bridge-safe-area-insets'
/**
* The part of an edge-to-edge WebView that sits under a system bar, which is what the page pads for.
*
- * Not the window's insets as they are: with the keyboard up the shell already ends the view at the
- * keyboard's top, so nothing of the page is under the gesture bar, and a banner the shell draws above
- * the view takes the status bar strip itself.
+ * The window's insets, as a native screen reads them with the keyboard covering it, except where
+ * the shell's banner stands above the view and takes the status bar strip itself.
*/
export function pageSafeAreaInsets(input: {
insets: BridgeSafeAreaInsets
- keyboardInset: number
topCovered: boolean
}): BridgeSafeAreaInsets {
const { insets } = input
return {
top: input.topCovered ? 0 : insets.top,
right: insets.right,
- bottom: input.keyboardInset > 0 ? 0 : insets.bottom,
+ bottom: insets.bottom,
left: insets.left
}
}
-/** Hands moved insets to the page over the re-sent `init` a pane move takes: the keyboard, a
- * rotation, or the shell's banner. Keyed on the four numbers, so a render moves nothing. */
+/** Hands moved insets to the page over the re-sent `init` a pane move takes: a rotation or the
+ * shell's banner. Keyed on the four numbers, so a render moves nothing. */
export function usePublishedSafeAreaInsets(
publish: (insets: BridgeSafeAreaInsets) => void,
insets: BridgeSafeAreaInsets
diff --git a/mobile/src/mobile-web-shell/shell-older-page-paths-census.test.ts b/mobile/src/mobile-web-shell/shell-older-page-paths-census.test.ts
new file mode 100644
index 00000000000..a1d40ccf49a
--- /dev/null
+++ b/mobile/src/mobile-web-shell/shell-older-page-paths-census.test.ts
@@ -0,0 +1,89 @@
+/**
+ * The shell serves no page older than its floor (`MOBILE_WEB_PAGE_VERSION_FLOOR`), so it keeps no
+ * path for one: no negotiated `accepts`/`reports`, and no WebView resized for the keyboard. The
+ * retired names are listed so a reintroduction goes red.
+ */
+import { readFileSync } from 'node:fs'
+import { join, relative } from 'node:path'
+import { describe, expect, it } from 'vitest'
+import { censusSourceFiles } from '../test-support/census-source-files'
+
+const MOBILE_DIR = join(import.meta.dirname, '..', '..')
+const SHELL_DIR = import.meta.dirname
+const RETIRED = new RegExp(
+ [
+ 'softwareKeyboardWindowInset',
+ 'viewShortenedBy',
+ 'pageReadsKeyboardInset',
+ 'shellPageReadsKeyboardInset',
+ 'shellKeyboardGeometry',
+ 'BRIDGE_KEYBOARD_INSET_ACCEPT',
+ 'BRIDGE_ROUTE_UPDATE_ACCEPT',
+ 'BRIDGE_SAFE_AREA_ACCEPT',
+ 'BRIDGE_PAGE_CLIENT_IDENTITY_ACCEPT',
+ 'BRIDGE_SHELL_ACCEPTS',
+ 'BRIDGE_MAX_PAGE_ACCEPTS',
+ 'pageReportsPaint',
+ 'pageOwnsSafeArea',
+ 'shellPageOwnsSafeArea',
+ 'shellAccepts',
+ 'PageReadyDeclaration',
+ "'keyboard-inset'",
+ "'route-update'",
+ "'safe-area-insets'",
+ "'page-client-identity'"
+ ].join('|')
+)
+/** The negotiated fields themselves, in code: a `ready` or `init` declaring what it takes or reports. */
+const NEGOTIATED_FIELD = /\.(accepts|reports)\b|\b(accepts|reports)\??:/
+const COMMENT = /^\s*(\/\/|\*|\/\*)/
+const KEYBOARD_SIZES_VIEW = /\b(padding|margin)?(Bottom|bottom|height|Height)\s*:[^,}\n]*keyboard/i
+
+/** Lines that bring back a path for an older page, or size the view from the keyboard. */
+export function olderPagePaths(source: string, inShell: boolean): number[] {
+ return source
+ .split('\n')
+ .flatMap((line, index) =>
+ RETIRED.test(line) ||
+ (inShell &&
+ ((NEGOTIATED_FIELD.test(line) && !COMMENT.test(line)) || KEYBOARD_SIZES_VIEW.test(line)))
+ ? [index + 1]
+ : []
+ )
+}
+
+function sources(dir: string): string[] {
+ return censusSourceFiles(dir).filter(
+ (file) => /\.tsx?$/.test(file) && !/\.test\.tsx?$/.test(file)
+ )
+}
+
+describe('the shell and a page older than its floor', () => {
+ it('finds the lines it is looking for', () => {
+ expect(olderPagePaths('style={{ paddingBottom: keyboardInset }}', true)).toEqual([1])
+ expect(olderPagePaths("accepts.includes('keyboard-inset')", false)).toEqual([1])
+ expect(olderPagePaths('if (accepts.includes(BRIDGE_SAFE_AREA_ACCEPT)) {', false)).toEqual([1])
+ expect(olderPagePaths(' accepts: z.array(z.string()).optional(),', true)).toEqual([1])
+ expect(olderPagePaths('return message.reports ?? []', true)).toEqual([1])
+ expect(olderPagePaths('session.pageOwnsSafeArea', false)).toEqual([1])
+ expect(
+ olderPagePaths('{ paddingTop: insets.top, paddingBottom: insets.bottom }', true)
+ ).toEqual([])
+ expect(olderPagePaths('publishKeyboardInset(keyboardInset)', true)).toEqual([])
+ // The field rule is the shell's code: elsewhere, and in prose, `accepts` is an ordinary word.
+ expect(olderPagePaths('gate.accepts(byteCount)', false)).toEqual([])
+ expect(olderPagePaths(' // the answer is what the caller reports: a page', true)).toEqual([])
+ })
+
+ it('keeps no path for one anywhere in the app or the page entry', () => {
+ const offenders = [
+ ...sources(join(MOBILE_DIR, 'src')),
+ ...sources(join(MOBILE_DIR, 'web-entry'))
+ ].flatMap((file) =>
+ olderPagePaths(readFileSync(file, 'utf8'), file.startsWith(SHELL_DIR)).map(
+ (line) => `${relative(MOBILE_DIR, file)}:${line}`
+ )
+ )
+ expect(offenders).toEqual([])
+ })
+})
diff --git a/mobile/src/mobile-web-shell/shell-page-frame.test.ts b/mobile/src/mobile-web-shell/shell-page-frame.test.ts
index 243f5763d77..8c4d7b5b6d8 100644
--- a/mobile/src/mobile-web-shell/shell-page-frame.test.ts
+++ b/mobile/src/mobile-web-shell/shell-page-frame.test.ts
@@ -1,5 +1,4 @@
import { describe, expect, it } from 'vitest'
-import { BRIDGE_PAGE_PAINTED } from './bridge/bridge-page-painted'
import type { MobileWebShellSessionState } from './mobile-web-shell-session-contract'
import { shellPageFrame } from './shell-page-frame'
@@ -12,18 +11,8 @@ const READY: MobileWebShellSessionState = {
elapsedMs: 1
}
-function frame(patch: {
- state?: MobileWebShellSessionState
- pageReady?: boolean
- pageReportsPaint?: boolean
- pagePainted?: boolean
-}) {
- return shellPageFrame({
- state: patch.state ?? READY,
- pageReady: patch.pageReady ?? false,
- pageReportsPaint: patch.pageReportsPaint ?? false,
- pagePainted: patch.pagePainted ?? false
- })
+function frame(patch: { state?: MobileWebShellSessionState; pagePainted?: boolean }) {
+ return shellPageFrame({ state: patch.state ?? READY, pagePainted: patch.pagePainted ?? false })
}
describe('how long the shell keeps its own frame up', () => {
@@ -38,33 +27,13 @@ describe('how long the shell keeps its own frame up', () => {
}
})
- it('covers a mounted view that has said nothing, which is the whole of the page boot', () => {
+ it('covers a mounted view until the page reports a frame, handshake or not', () => {
+ // `ready` is posted before the tree is built, so the view is mounted, empty and showing the
+ // surface behind it for every frame between the two.
expect(frame({})).toBe('unpainted')
})
- it('keeps covering a page that has handshaken and not yet painted', () => {
- // The gap this exists for: `ready` is posted before the tree is built, so the view is mounted,
- // empty and showing the surface behind it for every frame between the two.
- expect(frame({ pageReady: true, pageReportsPaint: true })).toBe('unpainted')
- })
-
- it('new shell, new page: uncovers on the page reporting a frame', () => {
- expect(frame({ pageReady: true, pageReportsPaint: true, pagePainted: true })).toBe('painted')
- })
-
- it('new shell, old page: uncovers on ready, the newest word that page will ever say', () => {
- // A generation served by a desktop built before the report exists. Waiting on a frame it
- // cannot send would hide a working workspace for the life of the document.
- expect(frame({ pageReady: true, pageReportsPaint: false })).toBe('painted')
- })
-
- it('reads the declaration off the list the page sent, not off the shell', () => {
- // The name is what the page puts in `ready.reports`, so the frame follows that list and not a
- // flag the shell set: a list without it is a page whose newest word is `ready`.
- const declared = [BRIDGE_PAGE_PAINTED].includes(BRIDGE_PAGE_PAINTED)
- expect(frame({ pageReady: true, pageReportsPaint: declared })).toBe('unpainted')
- expect(
- frame({ pageReady: true, pageReportsPaint: ['other'].includes(BRIDGE_PAGE_PAINTED) })
- ).toBe('painted')
+ it('uncovers on the page reporting a frame', () => {
+ expect(frame({ pagePainted: true })).toBe('painted')
})
})
diff --git a/mobile/src/mobile-web-shell/shell-page-frame.ts b/mobile/src/mobile-web-shell/shell-page-frame.ts
index 02d870a0f48..45094d9d0a0 100644
--- a/mobile/src/mobile-web-shell/shell-page-frame.ts
+++ b/mobile/src/mobile-web-shell/shell-page-frame.ts
@@ -7,19 +7,12 @@ import type { MobileWebShellSession } from './mobile-web-shell-session-contract'
*/
export type ShellPageFrame = 'pending' | 'unpainted' | 'painted'
-/**
- * Bounded by the page's declaration, never by a timer. A page that declared none is one served by
- * a desktop older than the report, and `ready` is the newest thing it will ever say: waiting on a
- * word it cannot speak would hide a working workspace for the life of the document.
- */
+/** Up until the page reports a frame of its own; every page the shell serves reports one. */
export function shellPageFrame(
- session: Pick
+ session: Pick
): ShellPageFrame {
if (session.state.kind !== 'ready') {
return 'pending'
}
- if (session.pagePainted) {
- return 'painted'
- }
- return session.pageReportsPaint || !session.pageReady ? 'unpainted' : 'painted'
+ return session.pagePainted ? 'painted' : 'unpainted'
}
diff --git a/mobile/src/mobile-web-shell/shell-view-keyboard-accessory.test.ts b/mobile/src/mobile-web-shell/shell-view-keyboard-accessory.test.ts
new file mode 100644
index 00000000000..56e542fd40a
--- /dev/null
+++ b/mobile/src/mobile-web-shell/shell-view-keyboard-accessory.test.ts
@@ -0,0 +1,31 @@
+import { describe, expect, it } from 'vitest'
+import { readFileSync } from 'node:fs'
+import { join } from 'node:path'
+
+/**
+ * The iOS shell's keyboard, read off the Swift view: a property of a live WKWebView, so what is
+ * checkable here is that the view installs the fix, and the simulator proof measures its effect.
+ *
+ * iPhone 17 simulator, measured: WKWebView's form accessory bar (up, down, done) rides on the
+ * keyboard, and the keyboard event's height counts it, so the page's terminal lifted 376 pt against
+ * native's 274 and its dock stood 52 pt above the bar.
+ */
+const SHELL = join(import.meta.dirname, '..', '..', 'modules', 'orca-mobile-web-shell', 'ios')
+
+describe("the iOS WebView's keyboard", () => {
+ it('carries no form accessory bar, so the keyboard is the height a native screen reads', () => {
+ const view = readFileSync(join(SHELL, 'MobileWebShellView.swift'), 'utf8')
+ expect(view).toContain('hideKeyboardAccessoryBar(of: webView)')
+ const accessory = readFileSync(join(SHELL, 'MobileWebShellKeyboardAccessory.swift'), 'utf8')
+ expect(accessory).toContain('inputAccessoryView')
+ })
+
+ it('does not scroll the page to reveal a focused field, which the page lifts itself', () => {
+ // iPhone 17 simulator: focusing the page's commit message scrolled the whole document up, the
+ // header off screen and the bar 384 pt above the keyboard (shot ios-43).
+ const view = readFileSync(join(SHELL, 'MobileWebShellView.swift'), 'utf8')
+ expect(view).toContain('ignoreKeyboardNotifications(in: webView)')
+ const accessory = readFileSync(join(SHELL, 'MobileWebShellKeyboardAccessory.swift'), 'utf8')
+ expect(accessory).toContain('keyboardWillChangeFrameNotification')
+ })
+})
diff --git a/mobile/src/mobile-web-shell/use-mobile-web-shell-bridge.test.ts b/mobile/src/mobile-web-shell/use-mobile-web-shell-bridge.test.ts
index 82ed511a223..67bc07fba2c 100644
--- a/mobile/src/mobile-web-shell/use-mobile-web-shell-bridge.test.ts
+++ b/mobile/src/mobile-web-shell/use-mobile-web-shell-bridge.test.ts
@@ -151,6 +151,7 @@ function Harness(props: {
// Built inline on every render, as a caller writes it: the host is not rebuilt for it.
route: { pathname: '/h/host-1' },
safeAreaInsets: { top: 0, right: 0, bottom: 0, left: 0 },
+ keyboardInset: 0,
pageRoutes: ['/h/[hostId]'],
pageRouteGrants: [{ pathname: '/h/[hostId]', grants: ['navigate', 'storage'] }],
routeGrants: [
@@ -338,7 +339,7 @@ describe('the bridge channel', () => {
it("hands the page's first paint to the caller that owns the cover over the view", async () => {
const mounted = await mount(readyState('session-one'))
- await mounted.deliver(clientFrame({ type: 'ready', reports: [BRIDGE_PAGE_PAINTED] }))
+ await mounted.deliver(clientFrame({ type: 'ready' }))
expect(mounted.probe.paints).toBe(0)
await mounted.deliver(clientFrame({ type: 'notify', name: BRIDGE_PAGE_PAINTED }))
expect(mounted.probe.paints).toBe(1)
@@ -657,13 +658,13 @@ describe('client changes', () => {
*
* A client swapped under a live page is not a new document: the WebView stays mounted, the
* session id does not move, and the page neither handshakes again nor hears that anything
- * happened. What it declared and what it is holding therefore belong to the session, the way
+ * happened. What it is holding therefore belongs to the session, the way
* `sessionEstablished` already does — a rebuilt host that started over would answer every press
* with "I cannot deliver this" and pop the screen out from under an open sheet.
*/
it('keeps delivering Back to an open sheet after the host is rebuilt under it', async () => {
const mounted = await mount(readyState('session-one'))
- await mounted.deliver(clientFrame({ type: 'ready', accepts: [BRIDGE_BACK_FRAME] }))
+ await mounted.deliver(clientFrame({ type: 'ready' }))
await mounted.deliver(
clientFrame({ type: 'notify', name: BRIDGE_BACK_CLAIM_NOTIFY, claimed: true })
)
@@ -681,47 +682,17 @@ describe('client changes', () => {
expect(mounted.frames('session-one').slice(before)).toEqual([{ v: 1, type: BRIDGE_BACK_FRAME }])
})
- /** The other half of the same seed: a page that never said it takes a press is still one the
- * rebuilt host will not send to. An empty declaration is a declaration. */
- it('sends nothing after a rebuild to a page that never declared the frame', async () => {
- const mounted = await mount(readyState('session-one'))
- await mounted.deliver(clientFrame({ type: 'ready' }))
- doubles.client = createFakeRpcClient()
- await mounted.update(readyState('session-one'))
- const before = mounted.frames('session-one').length
- expect(mounted.probe.view?.sendBack()).toBe(false)
- expect(mounted.frames('session-one')).toHaveLength(before)
- })
-
- /** The seed is the session's, not the hook's. A different session id is a different document,
- * which has declared nothing and is holding nothing until it says so itself. */
- it('carries nothing into a host built for a different session', async () => {
- // Both mounts stand for an established session, so the rebuilt host's own pre-handshake gate
- // is already open and the declaration is the only thing left that can refuse the press.
- const mounted = await mount(readyState('session-one'), true)
- await mounted.deliver(clientFrame({ type: 'ready', accepts: [BRIDGE_BACK_FRAME] }))
- await mounted.deliver(
- clientFrame({ type: 'notify', name: BRIDGE_BACK_CLAIM_NOTIFY, claimed: true })
- )
- // The control: the same rebuild inside the session does keep delivering.
- doubles.client = createFakeRpcClient()
- await mounted.update(readyState('session-one'))
- expect(mounted.probe.view?.sendBack()).toBe(true)
- await mounted.update(readyState('session-two'))
- expect(mounted.probe.view?.sendBack()).toBe(false)
- })
-
/** A new document inside the same session still starts over: its own `ready` is what the host
* reads, and the seed is not a latch. */
it('drops the carried claim when the next document says ready', async () => {
const mounted = await mount(readyState('session-one'))
- await mounted.deliver(clientFrame({ type: 'ready', accepts: [BRIDGE_BACK_FRAME] }))
+ await mounted.deliver(clientFrame({ type: 'ready' }))
await mounted.deliver(
clientFrame({ type: 'notify', name: BRIDGE_BACK_CLAIM_NOTIFY, claimed: true })
)
doubles.client = createFakeRpcClient()
await mounted.update(readyState('session-one'))
- await mounted.deliver(clientFrame({ type: 'ready', accepts: [BRIDGE_BACK_FRAME] }))
+ await mounted.deliver(clientFrame({ type: 'ready' }))
expect(mounted.probe.backClaims).toEqual([true, false])
})
diff --git a/mobile/src/mobile-web-shell/use-mobile-web-shell-bridge.ts b/mobile/src/mobile-web-shell/use-mobile-web-shell-bridge.ts
index 2489e1ef564..3a55096ac32 100644
--- a/mobile/src/mobile-web-shell/use-mobile-web-shell-bridge.ts
+++ b/mobile/src/mobile-web-shell/use-mobile-web-shell-bridge.ts
@@ -14,10 +14,7 @@ import type { BridgeSessionBack } from './bridge-host-back'
import type { BridgeNavigateBackOutcome } from './bridge-host-contract'
import type { BridgeNativeVerb } from './bridge/bridge-native-verbs'
import type { BridgeErrorCapture } from './bridge/bridge-error-capture'
-import type {
- MobileWebShellSessionState,
- PageReadyDeclaration
-} from './mobile-web-shell-session-contract'
+import type { MobileWebShellSessionState } from './mobile-web-shell-session-contract'
import type { PageHostSnapshot } from './use-page-host-snapshot'
import type { PageStorageForInit } from './page-storage-keys'
@@ -62,6 +59,8 @@ export type MobileWebShellBridgeView = {
readonly publishRoute: (route: BridgeInitRoute) => void
/** Hands the mounted host moved safe-area insets; dropped with no host, as a route is. */
readonly publishSafeAreaInsets: (insets: BridgeSafeAreaInsets) => void
+ /** Hands the mounted host a moved keyboard height; dropped with no host, as the insets are. */
+ readonly publishKeyboardInset: (height: number) => void
/**
* Hands the mounted host one Back press. False when there is no host, or when the document it
* serves never said it takes one — the caller then leaves the key to the navigator.
@@ -86,6 +85,8 @@ export type MobileWebShellBridgeArgs = {
route: BridgeInitRoute
/** What the first `init` of a new host carries; later moves go through `publishSafeAreaInsets`. */
safeAreaInsets: BridgeSafeAreaInsets
+ /** What the first `init` of a new host carries; later moves go through `publishKeyboardInset`. */
+ keyboardInset: number
/** The route patterns the page keeps for itself; everything else comes back as `navigate`. */
pageRoutes: readonly string[]
pageRouteGrants: readonly { pathname: string; grants: readonly string[] }[]
@@ -113,10 +114,9 @@ export type MobileWebShellBridgeArgs = {
onStorageWrite: (key: string, value: string | null) => void
/** The page could not render the generation on screen. Reported, never recovered from here. */
onPageFault: (error: BridgeErrorCapture) => void
- /** The page asked for a session, and what it declared it reports. Reported so the screen can
- * stop waiting for it, and so it knows whether a paint report is coming. */
- onPageReady: (ready: PageReadyDeclaration) => void
- /** The page has a frame on screen, from a page that said it would report one. */
+ /** The page asked for a session. Reported so the screen can stop waiting for it. */
+ onPageReady: () => void
+ /** The page has a frame on screen. */
onPagePainted: () => void
/** The page is holding the device Back key, or has let it go. False arrives on its own for
* every way a document ends, so no claim outlives the page that made it. */
@@ -195,6 +195,7 @@ export function useMobileWebShellBridge(args: MobileWebShellBridgeArgs): MobileW
sessionId,
route: latest.route,
safeAreaInsets: latest.safeAreaInsets,
+ keyboardInset: latest.keyboardInset,
pageRoutes: latest.pageRoutes,
pageRouteGrants: latest.pageRouteGrants,
routeGrants: latest.routeGrants,
@@ -222,7 +223,7 @@ export function useMobileWebShellBridge(args: MobileWebShellBridgeArgs): MobileW
onRouteParamClear: (param, value) => argsRef.current.onRouteParamClear(param, value),
onRouteRefused: (issue) => argsRef.current.onRouteRefused(issue),
onBinaryFramesDropped: (total) => argsRef.current.onBinaryFramesDropped(total),
- onPageReady: (ready) => argsRef.current.onPageReady(ready),
+ onPageReady: () => argsRef.current.onPageReady(),
onPagePainted: () => argsRef.current.onPagePainted(),
onPageBackClaim: (claimed) => argsRef.current.onPageBackClaim(claimed)
})
@@ -283,6 +284,15 @@ export function useMobileWebShellBridge(args: MobileWebShellBridgeArgs): MobileW
},
[buildId, client, sessionId, snapshot]
),
+ publishKeyboardInset: useCallback(
+ (height: number) => {
+ const mounted = hostRef.current
+ if (mounted !== null && mounted.sessionId === sessionId) {
+ mounted.host.publishKeyboardInset(height)
+ }
+ },
+ [buildId, client, sessionId, snapshot]
+ ),
// Fenced on the session the way inbound frames are, and answering false rather than throwing
// when there is no host: the caller is a hardware key handler, and a press it cannot forward
// is one the navigator has to be left to answer.
diff --git a/mobile/src/mobile-web-shell/use-mobile-web-shell-session.test.ts b/mobile/src/mobile-web-shell/use-mobile-web-shell-session.test.ts
index 0787874b441..f9ab6443788 100644
--- a/mobile/src/mobile-web-shell/use-mobile-web-shell-session.test.ts
+++ b/mobile/src/mobile-web-shell/use-mobile-web-shell-session.test.ts
@@ -41,6 +41,7 @@ const doubles = vi.hoisted((): Doubles => {
buildId: 'b'.repeat(64),
minCompatibleRuntimeProtocolVersion: 2,
runtimeProtocolVersion: 5,
+ pageVersion: 1,
entrypoint: 'index.html',
totalBytes: 2048,
assets: [
@@ -210,7 +211,7 @@ type Mounted = {
/** Whether the page had spoken, as every render of the hook reported it. */
handshakes: () => readonly boolean[]
documentLoaded: () => void
- pageReady: (reports?: readonly string[]) => void
+ pageReady: () => void
timers: ReturnType
}
@@ -219,7 +220,7 @@ async function mount(store: GenerationStore): Promise {
const handle: {
retry: () => void
documentLoaded: () => void
- pageReady: (ready: { reports: readonly string[]; accepts: readonly string[] }) => void
+ pageReady: () => void
states: MobileWebShellSessionState[]
handshakes: boolean[]
} = {
@@ -262,7 +263,7 @@ async function mount(store: GenerationStore): Promise {
states: () => handle.states,
handshakes: () => handle.handshakes,
documentLoaded: () => handle.documentLoaded(),
- pageReady: (reports: readonly string[] = []) => handle.pageReady({ reports, accepts: [] }),
+ pageReady: () => handle.pageReady(),
timers
}
}
diff --git a/mobile/src/mobile-web-shell/use-mobile-web-shell-session.ts b/mobile/src/mobile-web-shell/use-mobile-web-shell-session.ts
index da22cd69a2e..57eea752065 100644
--- a/mobile/src/mobile-web-shell/use-mobile-web-shell-session.ts
+++ b/mobile/src/mobile-web-shell/use-mobile-web-shell-session.ts
@@ -21,10 +21,8 @@ import type {
MobileWebShellSessionEffect,
MobileWebShellSessionEvent,
MobileWebShellSessionState,
- MobileWebShellUpdateNotice,
- PageReadyDeclaration
+ MobileWebShellUpdateNotice
} from './mobile-web-shell-session-contract'
-import { shellPageOwnsSafeArea } from './page-document-state'
export type MobileWebShellSessionView = {
readonly state: MobileWebShellSessionState
@@ -42,10 +40,9 @@ export type MobileWebShellSessionView = {
readonly reportDocumentStarted: () => void
/** The native view finished a document; starts the wait for the page's first word. */
readonly reportDocumentLoaded: () => void
- /** The page spoke over the bridge; ends that wait, whichever of the two arrived first. Carries
- * what that `ready` declared it reports, which is what says whether a paint is coming. */
- readonly reportPageReady: (ready: PageReadyDeclaration) => void
- /** The page has a frame on screen. Ignored for a page that never said it would report one. */
+ /** The page spoke over the bridge; ends that wait, whichever of the two arrived first. */
+ readonly reportPageReady: () => void
+ /** The page has a frame on screen. */
readonly reportPagePainted: () => void
/** The page took the device Back key, or let it go. */
readonly reportPageBackClaim: (claimed: boolean) => void
@@ -62,9 +59,6 @@ export type MobileWebShellSessionView = {
/** Whether the shell should take Back off the navigator. Projected for the same reason as
* `pageReady`: a claim moves nothing else, so no other value would re-render to carry it. */
readonly backClaimed: boolean
- /** Whether the document on screen pads for the system bars itself. Projected for the same
- * reason as `backClaimed`. */
- readonly pageOwnsSafeArea: boolean
}
/**
@@ -95,9 +89,6 @@ export function useMobileWebShellSession(args: {
const [pageReady, setPageReady] = useState(sessionRef.current.pageReady)
const [pageFrame, setPageFrame] = useState(() => shellPageFrame(sessionRef.current))
const [backClaimed, setBackClaimed] = useState(() => shellPageBackClaimed(sessionRef.current))
- const [pageOwnsSafeArea, setPageOwnsSafeArea] = useState(() =>
- shellPageOwnsSafeArea(sessionRef.current)
- )
const hostKey = useMemo(() => deriveHostCacheKey(hostId), [hostId])
const startedAtRef = useRef(runtime.now())
// Bumped by anything that invalidates work in flight; every dispatch out of an effect checks it.
@@ -121,7 +112,6 @@ export function useMobileWebShellSession(args: {
setPageReady(stepped.session.pageReady)
setPageFrame(shellPageFrame(stepped.session))
setBackClaimed(shellPageBackClaimed(stepped.session))
- setPageOwnsSafeArea(shellPageOwnsSafeArea(stepped.session))
for (const effect of stepped.effects) {
// Every effect of a step belongs to the flow that step produced, and its result carries that
// number back, so a flow the session has since restarted reports into nothing.
@@ -281,12 +271,9 @@ export function useMobileWebShellSession(args: {
dispatch(epochRef.current, { type: 'document-loaded' })
}, [dispatch])
- const reportPageReady = useCallback(
- (ready: PageReadyDeclaration) => {
- dispatch(epochRef.current, { type: 'page-ready', ...ready })
- },
- [dispatch]
- )
+ const reportPageReady = useCallback(() => {
+ dispatch(epochRef.current, { type: 'page-ready' })
+ }, [dispatch])
const reportPagePainted = useCallback(() => {
dispatch(epochRef.current, { type: 'page-painted' })
@@ -314,7 +301,6 @@ export function useMobileWebShellSession(args: {
reportPageReady,
reportPagePainted,
reportPageBackClaim,
- backClaimed,
- pageOwnsSafeArea
+ backClaimed
}
}
diff --git a/mobile/src/mobile-web-shell/use-shell-page-back.ts b/mobile/src/mobile-web-shell/use-shell-page-back.ts
index dd1ac0ac7b1..ecf8f145f20 100644
--- a/mobile/src/mobile-web-shell/use-shell-page-back.ts
+++ b/mobile/src/mobile-web-shell/use-shell-page-back.ts
@@ -9,7 +9,7 @@ import { BackHandler, Platform } from 'react-native'
* and posted; iOS has none, so what is taken away is the stack's swipe-back gesture — a swipe while
* a sheet is open would leave the screen with the sheet still on it.
*
- * Nothing is registered without a live claim, so a page too old to make one, a shell whose page has
+ * Nothing is registered without a live claim, so a page holding nothing, a shell whose page has
* faulted, and a session between documents all keep today's behaviour: the navigator pops.
*/
export function useShellPageBack(args: {
diff --git a/mobile/src/platform/host-os.ts b/mobile/src/platform/host-os.ts
new file mode 100644
index 00000000000..da58fbe0d1e
--- /dev/null
+++ b/mobile/src/platform/host-os.ts
@@ -0,0 +1,8 @@
+import { Platform } from 'react-native'
+
+/** The OS a screen's keyboard and inset arithmetic is for. Natively, the one it runs on. */
+export type HostOs = 'ios' | 'android' | 'windows' | 'macos' | 'web'
+
+export function hostOs(): HostOs {
+ return Platform.OS
+}
diff --git a/mobile/src/platform/host-os.web.test.ts b/mobile/src/platform/host-os.web.test.ts
new file mode 100644
index 00000000000..fcc3d446f36
--- /dev/null
+++ b/mobile/src/platform/host-os.web.test.ts
@@ -0,0 +1,38 @@
+// @vitest-environment happy-dom
+import { afterEach, describe, expect, it } from 'vitest'
+import { hostOs } from './host-os.web'
+
+function agent(userAgent: string, platform = '', maxTouchPoints = 0) {
+ Object.defineProperty(navigator, 'userAgent', { value: userAgent, configurable: true })
+ Object.defineProperty(navigator, 'platform', { value: platform, configurable: true })
+ Object.defineProperty(navigator, 'maxTouchPoints', { value: maxTouchPoints, configurable: true })
+}
+
+afterEach(() => agent(''))
+
+describe("the page's host OS", () => {
+ it('reads the phone off the WebView user agent', () => {
+ agent(
+ 'Mozilla/5.0 (iPhone; CPU iPhone OS 26_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
+ )
+ expect(hostOs()).toBe('ios')
+ agent(
+ 'Mozilla/5.0 (Linux; Android 17; sdk_gphone64_arm64 Build/CP1A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/144.0 Mobile Safari/537.36'
+ )
+ expect(hostOs()).toBe('android')
+ })
+
+ it('reads an iPad that still names itself in the user agent', () => {
+ agent(
+ 'Mozilla/5.0 (iPad; CPU OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
+ )
+ expect(hostOs()).toBe('ios')
+ })
+
+ it('takes an iPad, which reports a Mac, by its touch points', () => {
+ agent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15', 'MacIntel', 5)
+ expect(hostOs()).toBe('ios')
+ agent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15', 'MacIntel', 0)
+ expect(hostOs()).toBe('web')
+ })
+})
diff --git a/mobile/src/platform/host-os.web.ts b/mobile/src/platform/host-os.web.ts
new file mode 100644
index 00000000000..755cf3a2ace
--- /dev/null
+++ b/mobile/src/platform/host-os.web.ts
@@ -0,0 +1,19 @@
+import type { HostOs } from './host-os'
+
+export type { HostOs } from './host-os'
+
+/**
+ * Web sibling: `Platform.OS` is `web` inside the shell's page, but the keyboard it lifts over is the
+ * phone's, whose height the shell reports in that OS's own terms. So the page answers the phone's
+ * OS from the WebView's user agent. iPadOS reports a Mac, which only its touch points give away.
+ */
+export function hostOs(): HostOs {
+ const agent = globalThis.navigator?.userAgent ?? ''
+ if (/iP(ad|hone|od)/.test(agent)) {
+ return 'ios'
+ }
+ if (globalThis.navigator?.platform === 'MacIntel' && globalThis.navigator.maxTouchPoints > 1) {
+ return 'ios'
+ }
+ return agent.includes('Android') ? 'android' : 'web'
+}
diff --git a/mobile/src/platform/keyboard-geometry-host-os-census.test.ts b/mobile/src/platform/keyboard-geometry-host-os-census.test.ts
new file mode 100644
index 00000000000..81b7259395d
--- /dev/null
+++ b/mobile/src/platform/keyboard-geometry-host-os-census.test.ts
@@ -0,0 +1,69 @@
+/**
+ * Keyboard and inset arithmetic branches on the host OS, never on `Platform.OS`.
+ *
+ * The page runs as `web` while the keyboard it lifts over is the phone's, reported in that OS's own
+ * terms (iOS counts the home indicator). A `Platform.OS === 'ios'` there takes the Android branch on
+ * an iPhone page: measured on the iPhone 17 simulator, the terminal lifted 34 pt past native.
+ */
+import { readFileSync } from 'node:fs'
+import { relative } from 'node:path'
+import { fileURLToPath } from 'node:url'
+import { describe, expect, it } from 'vitest'
+import { censusSourceFiles } from '../test-support/census-source-files'
+
+const MOBILE_DIR = fileURLToPath(new URL('../../', import.meta.url))
+const GEOMETRY =
+ /keyboardHeight|keyboardLift|keyboardInset|bottomInset|insets\.bottom|KeyboardAvoidingView|keyboard(Will|Did)(Show|Hide)/
+
+const KEYBOARD_READ =
+ /keyboardHeight|keyboardLift|keyboardInset|useKeyboardOcclusion|useSoftKeyboard/
+const KEYBOARD_IMPORT = /from '[^']*(keyboard|inset)[^']*'/i
+const KEYBOARD_FILE = /(keyboard|inset|drawer|lift)[^/]*$/i
+const COMMENT = /^\s*(\/\/|\*|\/\*)/
+
+/**
+ * `Platform.OS` reads near keyboard or inset arithmetic, or anywhere in a file that reads the keyboard,
+ * imports a keyboard/inset module or is named for one: a live-input reopen flag four lines from its
+ * keyboard height escaped the proximity rule alone. Comments are not reads.
+ */
+export function platformReadsInGeometry(source: string, file = ''): number[] {
+ const lines = source.split('\n')
+ const wholeFile =
+ KEYBOARD_READ.test(source) || KEYBOARD_IMPORT.test(source) || KEYBOARD_FILE.test(file)
+ return lines.flatMap((line, index) =>
+ line.includes('Platform.OS') &&
+ !COMMENT.test(line) &&
+ (wholeFile ||
+ lines.slice(Math.max(0, index - 2), index + 3).some((near) => GEOMETRY.test(near)))
+ ? [index + 1]
+ : []
+ )
+}
+
+function files(): string[] {
+ return ['src', 'app'].flatMap((dir) =>
+ censusSourceFiles(fileURLToPath(new URL(`../../${dir}/`, import.meta.url))).filter(
+ (file) => /\.tsx?$/.test(file) && !/\.test\.tsx?$/.test(file) && !file.endsWith('host-os.ts')
+ )
+ )
+}
+
+describe('keyboard and inset arithmetic', () => {
+ it('finds the reads it is looking for', () => {
+ expect(
+ platformReadsInGeometry("const lift = Platform.OS === 'ios' ? keyboardHeight - 1 : 0")
+ ).toEqual([1])
+ expect(
+ platformReadsInGeometry("keyboardType={Platform.OS === 'ios' ? 'url' : 'default'}")
+ ).toEqual([])
+ })
+
+ it('reads the host OS, never Platform.OS', () => {
+ const offenders = files().flatMap((file) =>
+ platformReadsInGeometry(readFileSync(file, 'utf8'), file).map(
+ (line) => `${relative(MOBILE_DIR, file)}:${line}`
+ )
+ )
+ expect(offenders).toEqual([])
+ })
+})
diff --git a/mobile/src/platform/keyboard-geometry-owner-census.test.ts b/mobile/src/platform/keyboard-geometry-owner-census.test.ts
index 25c90d0d1ee..b3bee07b5f4 100644
--- a/mobile/src/platform/keyboard-geometry-owner-census.test.ts
+++ b/mobile/src/platform/keyboard-geometry-owner-census.test.ts
@@ -15,8 +15,8 @@ const MOBILE_DIR = fileURLToPath(new URL('../../', import.meta.url))
const SRC_DIR = fileURLToPath(new URL('../', import.meta.url))
const SEAM = 'src/platform/keyboard-occlusion.ts'
-/** A one-shot "open after the keyboard hides" with a timer fallback; it subscribes only while the
- * seam reports a keyboard, which on the page is never, so there it cannot wait forever. */
+/** A one-shot "open after the keyboard hides" with a timer fallback; on the page, where the event
+ * never fires, the timer is what opens the sheet, so it cannot wait forever. */
const TAB_SHEET_AFTER_HIDE = 'src/session/use-mobile-session-terminal-send-actions.ts'
const asksKeyboard = (line: string): boolean =>
diff --git a/mobile/src/platform/keyboard-occlusion.test.tsx b/mobile/src/platform/keyboard-occlusion.test.tsx
index 526da87f12d..c388c775de2 100644
--- a/mobile/src/platform/keyboard-occlusion.test.tsx
+++ b/mobile/src/platform/keyboard-occlusion.test.tsx
@@ -47,14 +47,12 @@ vi.mock('react-native', () => ({
import {
currentSoftKeyboardHeight,
subscribeSoftKeyboard,
- useKeyboardAvoidingPadding,
useKeyboardOcclusion,
useSoftKeyboard,
type SoftKeyboardState
} from './keyboard-occlusion'
let lift = 0
-let padding = 0
let keyboardState: SoftKeyboardState = { height: 0, visible: false }
function Harness(): null {
@@ -62,12 +60,6 @@ function Harness(): null {
return null
}
-/** Separate, so the padding case measures the padding hook's own subscriptions and nothing else. */
-function PaddingHarness(): null {
- padding = useKeyboardAvoidingPadding()
- return null
-}
-
function StateHarness(): null {
keyboardState = useSoftKeyboard()
return null
@@ -94,7 +86,6 @@ describe('the keyboard the phone reports', () => {
keyboard.addListenerCalls = 0
keyboard.metrics = undefined
lift = 0
- padding = 0
keyboardState = { height: 0, visible: false }
})
@@ -137,17 +128,6 @@ describe('the keyboard the phone reports', () => {
expect(keyboard.removed.sort()).toEqual(['keyboardWillHide', 'keyboardWillShow'])
})
- it('asks a phone for no composer padding, because KeyboardAvoidingView already moved it', async () => {
- // Rendered, not called: a hook read outside a component measures whatever the module does at
- // the top of its body and nothing its effects do, which is where a subscription would live.
- // And it subscribes to nothing doing it, so a composer that calls this renders as often as it
- // does today — which is what makes adding the call to a shared component safe.
- await mountComponent(PaddingHarness)
- expect(padding).toBe(0)
- expect(keyboard.addListenerCalls).toBe(0)
- expect(keyboard.listeners.size).toBe(0)
- })
-
it('answers both facts from one subscription, so a screen wanting each pays for one', async () => {
// The session screen reads the height to lift its dock and the flag to hold off the terminal
// refit. Two hooks would mean two listener pairs and two renders per keyboard event.
diff --git a/mobile/src/platform/keyboard-occlusion.ts b/mobile/src/platform/keyboard-occlusion.ts
index 6b0fc0deb2b..aa952871d98 100644
--- a/mobile/src/platform/keyboard-occlusion.ts
+++ b/mobile/src/platform/keyboard-occlusion.ts
@@ -1,5 +1,6 @@
import { useEffect, useState } from 'react'
-import { Keyboard, Platform } from 'react-native'
+import { Keyboard } from 'react-native'
+import { hostOs } from './host-os'
/** How much of the bottom of the layout viewport it covers, and whether it is open at all. */
export type SoftKeyboardState = { readonly height: number; readonly visible: boolean }
@@ -44,8 +45,8 @@ export function subscribeSoftKeyboard(
onShow: (height: number, duration: number) => void,
onHide: (duration: number) => void
): () => void {
- const showEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow'
- const hideEvent = Platform.OS === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide'
+ const showEvent = hostOs() === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow'
+ const hideEvent = hostOs() === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide'
const show = Keyboard.addListener(showEvent, (event) =>
onShow(event.endCoordinates.height, event.duration)
)
@@ -68,17 +69,3 @@ export function currentSoftKeyboardHeight(): number {
export function useKeyboardOcclusion(): number {
return useSoftKeyboard().height
}
-
-/**
- * The bottom padding a composer needs to clear the keyboard, which natively is none.
- *
- * `KeyboardAvoidingView` already moves the composer on a phone, so adding padding there would move
- * it twice. It is inert on the web for the same reason the `Keyboard` stub is — it is driven by
- * those events — so there the padding is the whole of the avoidance.
- *
- * A second name rather than a `Platform.OS` branch at the call site: this one subscribes to nothing
- * on a phone, so a composer that asks for it renders exactly as many times as it does today.
- */
-export function useKeyboardAvoidingPadding(): number {
- return 0
-}
diff --git a/mobile/src/platform/keyboard-occlusion.web.test.tsx b/mobile/src/platform/keyboard-occlusion.web.test.tsx
index 11e96afff8f..b6bae0e8547 100644
--- a/mobile/src/platform/keyboard-occlusion.web.test.tsx
+++ b/mobile/src/platform/keyboard-occlusion.web.test.tsx
@@ -5,9 +5,9 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'
import {
currentSoftKeyboardHeight,
subscribeSoftKeyboard,
- useKeyboardAvoidingPadding,
useKeyboardOcclusion,
useSoftKeyboard,
+ publishShellKeyboardSource,
type SoftKeyboardState
} from './keyboard-occlusion.web'
@@ -62,11 +62,9 @@ class FakeVisualViewport extends EventTarget {
const LAYOUT_HEIGHT = 800
let viewport: FakeVisualViewport | null = null
let lift = 0
-let padding = 0
function Harness(): null {
lift = useKeyboardOcclusion()
- padding = useKeyboardAvoidingPadding()
return null
}
@@ -83,7 +81,6 @@ async function mount(): Promise> {
beforeEach(() => {
lift = 0
- padding = 0
viewport = new FakeVisualViewport(LAYOUT_HEIGHT)
Object.defineProperty(window, 'innerHeight', { value: LAYOUT_HEIGHT, configurable: true })
Object.defineProperty(window, 'visualViewport', { value: viewport, configurable: true })
@@ -189,15 +186,9 @@ describe('the keyboard the browser reports', () => {
expect(lift).toBe(0)
})
- it('is the whole of the avoidance here, where KeyboardAvoidingView is inert', async () => {
- await mount()
- await act(async () => viewport?.resizeTo(464))
- expect(padding).toBe(336)
- })
-
it('removes both listeners on unmount', async () => {
const tree = await mount()
- expect(viewport?.counts).toEqual({ resize: 2, scroll: 2 })
+ expect(viewport?.counts).toEqual({ resize: 1, scroll: 1 })
await act(async () => tree.unmount())
expect(viewport?.counts).toEqual({ resize: 0, scroll: 0 })
})
@@ -237,7 +228,7 @@ describe('the keyboard as events, for a sheet', () => {
expect(lift).toBe(0)
})
- it('stays silent when nothing is covered, which is the shell shortening the WebView', () => {
+ it('stays silent while the visual viewport covers nothing', () => {
const calls: string[] = []
const unsubscribe = subscribeSoftKeyboard(
() => calls.push('show'),
@@ -262,7 +253,6 @@ describe('the keyboard as events, for a sheet', () => {
})
})
-const LAYOUT_WIDTH = 400
let keyboardState: SoftKeyboardState = { height: 0, visible: false }
function StateHarness(): null {
@@ -270,16 +260,6 @@ function StateHarness(): null {
return null
}
-function resizeWindow(width: number, height: number): void {
- Object.defineProperty(window, 'innerWidth', { value: width, configurable: true })
- Object.defineProperty(window, 'innerHeight', { value: height, configurable: true })
- window.dispatchEvent(new Event('resize'))
-}
-
-/** Tracked so a case that resizes the window is not also re-rendering an earlier case's harness,
- * which shares this file's one `keyboardState`. */
-const mountedStateHarnesses: ReturnType[] = []
-
async function mountState(): Promise> {
let tree: ReturnType | null = null
await act(async () => {
@@ -288,65 +268,102 @@ async function mountState(): Promise> {
if (tree === null) {
throw new Error('the harness did not mount')
}
- mountedStateHarnesses.push(tree)
return tree
}
-/**
- * The shell shortens the WebView to sit above the IME, so by the time the page measures itself
- * nothing is covered and `visualViewport` reads full height. The resize is what is left.
- */
-describe('the keyboard the page cannot see, because the shell already moved it', () => {
- beforeEach(() => {
- act(() => {
- for (const tree of mountedStateHarnesses.splice(0)) {
- tree.unmount()
+/** The shell's side of the bridge, as the entry publishes it: the height `init` last carried. */
+function createShellKeyboard(initial = 0) {
+ let height = initial
+ const listeners = new Set<(height: number) => void>()
+ return {
+ source: {
+ read: () => height,
+ subscribe: (listener: (height: number) => void) => {
+ listeners.add(listener)
+ return () => {
+ listeners.delete(listener)
+ }
}
- })
- keyboardState = { height: 0, visible: false }
- Object.defineProperty(window, 'innerWidth', { value: LAYOUT_WIDTH, configurable: true })
- Object.defineProperty(window, 'innerHeight', { value: LAYOUT_HEIGHT, configurable: true })
- })
+ },
+ move: (next: number) => {
+ height = next
+ for (const listener of listeners) {
+ listener(next)
+ }
+ },
+ listenerCount: () => listeners.size
+ }
+}
- it('reads no keyboard while the window keeps the height it mounted at', async () => {
- await mountState()
- expect(keyboardState).toEqual({ height: 0, visible: false })
- })
-
- it('calls the window shortened at an unchanged width the keyboard, and covers nothing by it', async () => {
- await mountState()
- await act(async () => resizeWindow(LAYOUT_WIDTH, LAYOUT_HEIGHT - 336))
- expect(keyboardState).toEqual({ height: 0, visible: true })
- })
-
- it('drops the flag when the window gets its height back', async () => {
- await mountState()
- await act(async () => resizeWindow(LAYOUT_WIDTH, LAYOUT_HEIGHT - 336))
- await act(async () => resizeWindow(LAYOUT_WIDTH, LAYOUT_HEIGHT))
- expect(keyboardState.visible).toBe(false)
- })
-
- it('reads a rotation as a new window rather than a keyboard, because the width moved too', async () => {
- await mountState()
- await act(async () => resizeWindow(LAYOUT_HEIGHT, LAYOUT_WIDTH))
- expect(keyboardState.visible).toBe(false)
- // And the shorter window is now the one the next keyboard is measured against.
- await act(async () => resizeWindow(LAYOUT_HEIGHT, LAYOUT_WIDTH - 200))
- expect(keyboardState.visible).toBe(true)
- })
-
- it('takes a window that grew as the new resting height, not as a keyboard closing twice', async () => {
- await mountState()
- await act(async () => resizeWindow(LAYOUT_WIDTH, LAYOUT_HEIGHT + 60))
- expect(keyboardState.visible).toBe(false)
- await act(async () => resizeWindow(LAYOUT_WIDTH, LAYOUT_HEIGHT))
- expect(keyboardState.visible).toBe(true)
- })
-
- it('stops listening on unmount', async () => {
+describe('the state a native screen reads, from the browser outside the shell', () => {
+ it('is open exactly while something is covered', async () => {
const tree = await mountState()
+ expect(keyboardState).toEqual({ height: 0, visible: false })
+ await act(async () => viewport?.resizeTo(464))
+ expect(keyboardState).toEqual({ height: 336, visible: true })
+ await act(async () => viewport?.resizeTo(LAYOUT_HEIGHT))
+ expect(keyboardState).toEqual({ height: 0, visible: false })
await act(async () => tree.unmount())
- await act(async () => resizeWindow(LAYOUT_WIDTH, LAYOUT_HEIGHT - 336))
- expect(keyboardState.visible).toBe(false)
+ })
+})
+
+/**
+ * Inside the shell the keyboard covers the page as it covers a native screen, but the page cannot
+ * measure it: the WebView's IME insets are zeroed, so `visualViewport` never moves. The shell says
+ * the height over the bridge, and every reader here answers from that.
+ */
+describe('the keyboard the shell says covers the page', () => {
+ afterEach(() => {
+ publishShellKeyboardSource(null)
+ })
+
+ it('answers the height the shell sent, and ignores the visual viewport', async () => {
+ const shell = createShellKeyboard()
+ publishShellKeyboardSource(shell.source)
+ const tree = await mountState()
+ const lifted = await mount()
+ // Pixel_API_37: the IME opens at 312 and the suggestion strip grows it to 346.
+ for (const height of [312, 346]) {
+ await act(async () => shell.move(height))
+ expect(keyboardState).toEqual({ height, visible: true })
+ expect(lift).toBe(height)
+ }
+ await act(async () => viewport?.resizeTo(464))
+ expect(keyboardState.height).toBe(346)
+ await act(async () => shell.move(0))
+ expect(keyboardState).toEqual({ height: 0, visible: false })
+ expect(lift).toBe(0)
+ await act(async () => {
+ tree.unmount()
+ lifted.unmount()
+ })
+ expect(shell.listenerCount()).toBe(0)
+ })
+
+ it('reads a keyboard already up at mount, which the shell sent in the first init', async () => {
+ publishShellKeyboardSource(createShellKeyboard(312).source)
+ expect(currentSoftKeyboardHeight()).toBe(312)
+ const tree = await mountState()
+ expect(keyboardState).toEqual({ height: 312, visible: true })
+ await act(async () => tree.unmount())
+ })
+
+ it('hands a sheet each height as a show and the close as one hide', () => {
+ const shell = createShellKeyboard()
+ publishShellKeyboardSource(shell.source)
+ const calls: string[] = []
+ const unsubscribe = subscribeSoftKeyboard(
+ (height, duration) => calls.push(`show ${height} ${duration}`),
+ (duration) => calls.push(`hide ${duration}`)
+ )
+ viewport?.resizeTo(464)
+ shell.move(312)
+ shell.move(346)
+ shell.move(0)
+ shell.move(0)
+ expect(calls).toEqual(['show 312 0', 'show 346 0', 'hide 0'])
+ unsubscribe()
+ expect(shell.listenerCount()).toBe(0)
+ expect(viewport?.counts).toEqual({ resize: 0, scroll: 0 })
})
})
diff --git a/mobile/src/platform/keyboard-occlusion.web.ts b/mobile/src/platform/keyboard-occlusion.web.ts
index 05500f369ee..c157f24cb4c 100644
--- a/mobile/src/platform/keyboard-occlusion.web.ts
+++ b/mobile/src/platform/keyboard-occlusion.web.ts
@@ -1,7 +1,24 @@
import { useEffect, useState } from 'react'
+/** The height the shell last said over the bridge, and a way to hear it move. */
+export type ShellKeyboardSource = {
+ read: () => number
+ subscribe: (listener: (height: number) => void) => () => void
+}
+
+let shellKeyboard: ShellKeyboardSource | null = null
+
/**
- * Web sibling: the keyboard's height as the browser reports it, which is not as an event.
+ * Called once by the page entry. Inside the shell the keyboard covers the page as it covers a
+ * native screen, but the WebView's IME insets are zeroed, so `visualViewport` never moves: the
+ * shell is the only thing that knows the height, and every reader below answers from it.
+ */
+export function publishShellKeyboardSource(source: ShellKeyboardSource | null): void {
+ shellKeyboard = source
+}
+
+/**
+ * Outside the shell: the keyboard's height as the browser reports it, which is not as an event.
*
* react-native-web's `Keyboard` is a stub whose `addListener` returns a subscription that never
* fires, so every screen waiting for `keyboardDidShow` inside the shell's page waits forever and
@@ -48,21 +65,15 @@ function visualViewport(): VisualViewport | undefined {
}
/**
- * The strip as events, with duration 0: the browser has already moved the viewport by the time it
- * says so. Inside the shell nothing fires, because the shell shortens the WebView above the IME and
- * the strip stays 0; in a plain mobile browser the keyboard overlays the page and this is the lift.
+ * The strip as events, with duration 0: the shell and the browser have both moved the keyboard by
+ * the time they say so.
*/
export function subscribeSoftKeyboard(
onShow: (height: number, duration: number) => void,
onHide: (duration: number) => void
): () => void {
- const viewport = visualViewport()
- if (viewport === undefined) {
- return () => {}
- }
- let open = occlusion(viewport) > 0
- const read = (): void => {
- const height = occlusion(viewport)
+ let open = currentSoftKeyboardHeight() > 0
+ const read = (height: number): void => {
if (height > 0) {
open = true
onShow(height, 0)
@@ -71,17 +82,28 @@ export function subscribeSoftKeyboard(
onHide(0)
}
}
- viewport.addEventListener('resize', read)
- viewport.addEventListener('scroll', read)
+ if (shellKeyboard !== null) {
+ return shellKeyboard.subscribe(read)
+ }
+ const viewport = visualViewport()
+ if (viewport === undefined) {
+ return () => {}
+ }
+ const measure = (): void => read(occlusion(viewport))
+ viewport.addEventListener('resize', measure)
+ viewport.addEventListener('scroll', measure)
return () => {
- viewport.removeEventListener('resize', read)
- viewport.removeEventListener('scroll', read)
+ viewport.removeEventListener('resize', measure)
+ viewport.removeEventListener('scroll', measure)
}
}
/** A keyboard already up when a composer opens gets no event at all. */
export function currentSoftKeyboardHeight(): number {
+ if (shellKeyboard !== null) {
+ return shellKeyboard.read()
+ }
const viewport = visualViewport()
return viewport === undefined ? 0 : occlusion(viewport)
}
@@ -100,50 +122,10 @@ export function useKeyboardOcclusion(): number {
return keyboardLift
}
-/**
- * On the web the padding is the whole of the avoidance: `KeyboardAvoidingView` is driven by the
- * `Keyboard` events this file exists because the page never receives.
- */
-export function useKeyboardAvoidingPadding(): number {
- return useKeyboardOcclusion()
-}
-
-/** The sibling's shape; the two facts it answers together are measured separately here. */
+/** The sibling's shape. Open is a covered strip here: neither source reports a keyboard of 0. */
export type SoftKeyboardState = { readonly height: number; readonly visible: boolean }
-/**
- * Whether a keyboard is open, which here is not what it covers: the shell shortens the WebView to
- * sit above the IME, so nothing covers the page and the occlusion above reads 0, correctly. The
- * resize is what is left of the keyboard — inside the shell's WebView the shell's own bottom
- * padding is the one thing that changes this window's height without changing its width too.
- */
-function useShortenedWindow(): boolean {
- const [shortened, setShortened] = useState(false)
-
- useEffect(() => {
- // The tallest height seen at this width is the resting one; a width change is a rotation or a
- // fold, which starts the comparison again. A page that mounts with the keyboard already up
- // reads false until it closes once, which costs one terminal refit and no correctness.
- let width = window.innerWidth
- let tallest = window.innerHeight
- const read = (): void => {
- if (window.innerWidth !== width) {
- width = window.innerWidth
- tallest = window.innerHeight
- } else if (window.innerHeight > tallest) {
- tallest = window.innerHeight
- }
- setShortened(window.innerHeight < tallest)
- }
- read()
- window.addEventListener('resize', read)
-
- return () => window.removeEventListener('resize', read)
- }, [])
-
- return shortened
-}
-
export function useSoftKeyboard(): SoftKeyboardState {
- return { height: useKeyboardOcclusion(), visible: useShortenedWindow() }
+ const height = useKeyboardOcclusion()
+ return { height, visible: height > 0 }
}
diff --git a/mobile/src/platform/keyboard-persisting-taps.ts b/mobile/src/platform/keyboard-persisting-taps.ts
new file mode 100644
index 00000000000..77185a5f2b3
--- /dev/null
+++ b/mobile/src/platform/keyboard-persisting-taps.ts
@@ -0,0 +1,6 @@
+export type KeyboardPersistingTaps = 'always' | 'handled'
+
+/** Natively a Pressable never takes focus; the ScrollView's `keyboardShouldPersistTaps` is the rule. */
+export function useKeyboardPersistingTaps(_mode: KeyboardPersistingTaps): undefined {
+ return undefined
+}
diff --git a/mobile/src/platform/keyboard-persisting-taps.web.test.ts b/mobile/src/platform/keyboard-persisting-taps.web.test.ts
new file mode 100644
index 00000000000..9bea438b405
--- /dev/null
+++ b/mobile/src/platform/keyboard-persisting-taps.web.test.ts
@@ -0,0 +1,87 @@
+// @vitest-environment happy-dom
+/**
+ * The page's form of `keyboardShouldPersistTaps`, which react-native-web ignores.
+ *
+ * Measured on Pixel_API_37: a tap on a dock key or a session tab moves focus from the live input
+ * to the Pressable (tabindex 0) on mousedown, and the IME closes. Natively a Pressable never takes
+ * focus, so the same taps keep the keyboard up.
+ */
+import { afterEach, describe, expect, it } from 'vitest'
+import { keepTextFocusThroughTaps } from './keyboard-persisting-taps.web'
+
+function plant() {
+ const container = document.createElement('div')
+ const button = document.createElement('div')
+ button.tabIndex = 0
+ const label = document.createElement('span')
+ button.appendChild(label)
+ const gap = document.createElement('span')
+ const field = document.createElement('input')
+ container.append(button, gap, field)
+ const liveInput = document.createElement('input')
+ document.body.append(container, liveInput)
+ return { container, label, gap, field, liveInput }
+}
+
+/** Whether a mousedown on `target` was kept from moving focus. */
+function pressKeepsFocus(target: Element): boolean {
+ const event = new MouseEvent('mousedown', { bubbles: true, cancelable: true })
+ target.dispatchEvent(event)
+ return event.defaultPrevented
+}
+
+afterEach(() => {
+ document.body.innerHTML = ''
+})
+
+describe('keepTextFocusThroughTaps', () => {
+ it("keeps a text field's focus through a tap on a pressable, in both modes", () => {
+ for (const mode of ['always', 'handled'] as const) {
+ const { container, label, liveInput } = plant()
+ const release = keepTextFocusThroughTaps(container, mode)
+ liveInput.focus()
+ expect(pressKeepsFocus(label), mode).toBe(true)
+ release()
+ document.body.innerHTML = ''
+ }
+ })
+
+ it('lets a tap on nothing pressable dismiss only when taps are handled', () => {
+ const always = plant()
+ keepTextFocusThroughTaps(always.container, 'always')
+ always.liveInput.focus()
+ expect(pressKeepsFocus(always.gap)).toBe(true)
+ document.body.innerHTML = ''
+
+ const handled = plant()
+ keepTextFocusThroughTaps(handled.container, 'handled')
+ handled.liveInput.focus()
+ expect(pressKeepsFocus(handled.gap)).toBe(false)
+ })
+
+ it('leaves focus alone when no text field holds it, or when the tap is on a text field', () => {
+ const { container, label, field, liveInput } = plant()
+ keepTextFocusThroughTaps(container, 'always')
+ expect(pressKeepsFocus(label)).toBe(false)
+ liveInput.focus()
+ expect(pressKeepsFocus(field)).toBe(false)
+ })
+
+ it('does not count a focusable ancestor above the container as a pressable in the bar', () => {
+ const outer = document.createElement('div')
+ outer.tabIndex = 0
+ const { container, gap, liveInput } = plant()
+ outer.append(container)
+ document.body.prepend(outer)
+ keepTextFocusThroughTaps(container, 'handled')
+ liveInput.focus()
+ expect(pressKeepsFocus(gap)).toBe(false)
+ })
+
+ it('stops when released', () => {
+ const { container, label, liveInput } = plant()
+ keepTextFocusThroughTaps(container, 'always')()
+ liveInput.focus()
+ expect(pressKeepsFocus(label)).toBe(false)
+ })
+})
diff --git a/mobile/src/platform/keyboard-persisting-taps.web.ts b/mobile/src/platform/keyboard-persisting-taps.web.ts
new file mode 100644
index 00000000000..ae05cf0355f
--- /dev/null
+++ b/mobile/src/platform/keyboard-persisting-taps.web.ts
@@ -0,0 +1,56 @@
+import { useCallback, useRef } from 'react'
+import type { KeyboardPersistingTaps } from './keyboard-persisting-taps'
+
+export type { KeyboardPersistingTaps } from './keyboard-persisting-taps'
+
+function isTextField(element: Element | null): boolean {
+ if (!(element instanceof HTMLElement)) {
+ return false
+ }
+ return (
+ element instanceof HTMLInputElement ||
+ element instanceof HTMLTextAreaElement ||
+ element.isContentEditable
+ )
+}
+
+/** A focusable element between the tap and the container; an ancestor above it is not in the bar. */
+function isPressableInside(container: HTMLElement, target: Element): boolean {
+ const pressable = target.closest('[tabindex]:not([tabindex="-1"])')
+ return pressable !== null && pressable !== container && container.contains(pressable)
+}
+
+/**
+ * `keyboardShouldPersistTaps` for the page: react-native-web ignores it, and a Pressable there is a
+ * focusable element that takes focus on mousedown, which blurs the text field and closes the IME.
+ * `handled` keeps focus only for a tap on something pressable; `always` for any tap.
+ */
+export function keepTextFocusThroughTaps(
+ container: HTMLElement,
+ mode: KeyboardPersistingTaps
+): () => void {
+ const onMouseDown = (event: MouseEvent) => {
+ const target = event.target instanceof Element ? event.target : null
+ if (!isTextField(document.activeElement) || !target || isTextField(target)) {
+ return
+ }
+ if (mode === 'handled' && !isPressableInside(container, target)) {
+ return
+ }
+ event.preventDefault()
+ }
+ container.addEventListener('mousedown', onMouseDown, true)
+ return () => container.removeEventListener('mousedown', onMouseDown, true)
+}
+
+/** A ref for the View that holds the taps; on the page that View is its DOM element. */
+export function useKeyboardPersistingTaps(mode: KeyboardPersistingTaps) {
+ const releaseRef = useRef<(() => void) | null>(null)
+ return useCallback(
+ (node: unknown) => {
+ releaseRef.current?.()
+ releaseRef.current = node instanceof HTMLElement ? keepTextFocusThroughTaps(node, mode) : null
+ },
+ [mode]
+ )
+}
diff --git a/mobile/src/platform/software-keyboard-window-inset.test.ts b/mobile/src/platform/software-keyboard-window-inset.test.ts
deleted file mode 100644
index b458993d0ea..00000000000
--- a/mobile/src/platform/software-keyboard-window-inset.test.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { describe, expect, it } from 'vitest'
-import { softwareKeyboardWindowInset } from './software-keyboard-window-inset'
-
-describe('the strip of the window the software keyboard takes', () => {
- it('is nothing while the keyboard is closed', () => {
- expect(
- softwareKeyboardWindowInset({ keyboardHeight: 0, bottomInset: 48, platform: 'android' })
- ).toBe(0)
- })
-
- it('is the iOS frame height as reported, which already spans the home indicator', () => {
- expect(
- softwareKeyboardWindowInset({ keyboardHeight: 336, bottomInset: 34, platform: 'ios' })
- ).toBe(336)
- })
-
- it('adds the navigation bar back on Android, whose IME height stops above it', () => {
- // The session dock is the proof this split is real: it pads itself by the inset and then
- // translates by the raw height, which lands on the keys only if Android's excludes the bar.
- expect(
- softwareKeyboardWindowInset({ keyboardHeight: 336, bottomInset: 48, platform: 'android' })
- ).toBe(384)
- })
-
- it('takes the page host as a phone, since it is one: the shell runs no web build', () => {
- expect(
- softwareKeyboardWindowInset({ keyboardHeight: 300, bottomInset: 20, platform: 'web' })
- ).toBe(320)
- })
-
- it('never reports a negative strip, whatever the event and the inset say', () => {
- expect(
- softwareKeyboardWindowInset({ keyboardHeight: -10, bottomInset: 48, platform: 'android' })
- ).toBe(0)
- expect(
- softwareKeyboardWindowInset({ keyboardHeight: 336, bottomInset: -48, platform: 'android' })
- ).toBe(336)
- })
-})
diff --git a/mobile/src/platform/software-keyboard-window-inset.ts b/mobile/src/platform/software-keyboard-window-inset.ts
deleted file mode 100644
index 0c15bba7c2a..00000000000
--- a/mobile/src/platform/software-keyboard-window-inset.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * The strip at the bottom of the window the software keyboard takes, for a view that owns the
- * window and has to shorten itself out of the way. The two platforms measure the IME from
- * different edges: iOS's frame height starts at the bottom of the window and already spans the
- * home indicator, Android's starts above the system bars, so only Android adds the bar back.
- */
-export function softwareKeyboardWindowInset(input: {
- keyboardHeight: number
- bottomInset: number
- platform: 'ios' | 'android' | 'windows' | 'macos' | 'web'
-}): number {
- const keyboardHeight = Math.max(0, input.keyboardHeight)
- if (keyboardHeight === 0) {
- return 0
- }
- return input.platform === 'ios' ? keyboardHeight : keyboardHeight + Math.max(0, input.bottomInset)
-}
diff --git a/mobile/src/session/MobileNativeChatMessage.tsx b/mobile/src/session/MobileNativeChatMessage.tsx
index 9b480fdd7d9..a290a999161 100644
--- a/mobile/src/session/MobileNativeChatMessage.tsx
+++ b/mobile/src/session/MobileNativeChatMessage.tsx
@@ -148,7 +148,6 @@ function MobileNativeChatMessageImpl({
{turnStatus ? (
onToggleTurn(turnKey) : undefined}
diff --git a/mobile/src/session/MobileNativeChatTurnStatus.test.ts b/mobile/src/session/MobileNativeChatTurnStatus.test.ts
index 6b6a1d49e07..e99412b42bf 100644
--- a/mobile/src/session/MobileNativeChatTurnStatus.test.ts
+++ b/mobile/src/session/MobileNativeChatTurnStatus.test.ts
@@ -19,27 +19,34 @@ vi.mock('react-native', async () => {
})
vi.mock('lucide-react-native', () => ({ ChevronRight: 'ChevronRight' }))
-import { MobileNativeChatTurnStatus } from './MobileNativeChatTurnStatus'
+import {
+ MobileNativeChatTurnActivity,
+ MobileNativeChatTurnStatus
+} from './MobileNativeChatTurnStatus'
+
+const labels = (node: ReactTestInstance): string[] =>
+ node.findAllByType('Text' as never).map((text) => String(text.children.join('')))
+
+const spinners = (node: ReactTestInstance): ReactTestInstance[] =>
+ node.findAllByType('ActivityIndicator' as never)
+
+let renderer: ReactTestRenderer | null = null
+
+beforeEach(() => {
+ vi.useFakeTimers()
+ vi.setSystemTime(new Date('2026-09-04T00:00:00Z'))
+})
+
+afterEach(() => {
+ act(() => renderer?.unmount())
+ renderer = null
+ vi.useRealTimers()
+})
describe('MobileNativeChatTurnStatus', () => {
- let renderer: ReactTestRenderer | null = null
-
- beforeEach(() => {
- vi.useFakeTimers()
- vi.setSystemTime(new Date('2026-09-04T00:00:00Z'))
- })
-
- afterEach(() => {
- act(() => renderer?.unmount())
- renderer = null
- vi.useRealTimers()
- })
-
function render(props: {
startedAt: number | null
- thinking: boolean
workedSeconds?: number | null
- activityText?: string | null
expanded?: boolean
onToggleExpanded?: () => void
}): ReactTestRenderer {
@@ -49,49 +56,19 @@ describe('MobileNativeChatTurnStatus', () => {
return renderer!
}
- const labels = (node: ReactTestInstance): string[] =>
- node.findAllByType('Text' as never).map((text) => String(text.children.join('')))
-
- const spinners = (node: ReactTestInstance): ReactTestInstance[] =>
- node.findAllByType('ActivityIndicator' as never)
-
- it('reads "Thinking" beside one spinner while the turn reasons', () => {
- const tree = render({ startedAt: Date.now(), thinking: true })
- expect(labels(tree.root)).toEqual(['Thinking'])
- expect(spinners(tree.root)).toHaveLength(1)
- })
-
- it('counts up on that same single row when the turn is not reasoning', () => {
- const startedAt = Date.now()
- const tree = render({ startedAt, thinking: false })
+ it('counts up from the first second while the turn runs, with no spinner', () => {
+ const tree = render({ startedAt: Date.now() })
expect(labels(tree.root)).toEqual(['Working for 0s'])
act(() => {
vi.advanceTimersByTime(12_000)
})
expect(labels(tree.root)).toEqual(['Working for 12s'])
- expect(spinners(tree.root)).toHaveLength(1)
- })
-
- it('lets provider activity text beat both fallbacks and hold the clock', () => {
- const tree = render({
- startedAt: Date.now(),
- thinking: true,
- activityText: 'Running pnpm test'
- })
- expect(labels(tree.root)).toEqual(['Running pnpm test'])
- expect(spinners(tree.root)).toHaveLength(1)
- // No label consumes the duration, so nothing schedules a tick for it.
- expect(vi.getTimerCount()).toBe(0)
+ expect(spinners(tree.root)).toHaveLength(0)
})
it('settles to a tappable "Worked for" row that toggles the turn', () => {
const onToggleExpanded = vi.fn()
- const tree = render({
- startedAt: Date.now(),
- thinking: false,
- workedSeconds: 184,
- onToggleExpanded
- })
+ const tree = render({ startedAt: Date.now(), workedSeconds: 184, onToggleExpanded })
expect(labels(tree.root)).toEqual(['Worked for 3m 4s'])
const button = tree.root.findByType('Pressable' as never)
expect(button.props.accessibilityLabel).toBe('Toggle turn details')
@@ -101,19 +78,46 @@ describe('MobileNativeChatTurnStatus', () => {
})
it('stays a plain row when the settled turn has nothing to disclose', () => {
- const tree = render({ startedAt: Date.now(), thinking: false, workedSeconds: 5 })
+ const tree = render({ startedAt: Date.now(), workedSeconds: 5 })
expect(tree.root.findAllByType('Pressable' as never)).toHaveLength(0)
expect(labels(tree.root)).toEqual(['Worked for 5s'])
})
- it('holds no interval, and no spinner, once the turn has settled', () => {
- const tree = render({ startedAt: Date.now(), thinking: false, workedSeconds: 5 })
+ it('holds no interval once the turn has settled', () => {
+ render({ startedAt: Date.now(), workedSeconds: 5 })
expect(vi.getTimerCount()).toBe(0)
- expect(spinners(tree.root)).toHaveLength(0)
+ })
+})
+
+describe('MobileNativeChatTurnActivity', () => {
+ function render(props: { thinking: boolean; activityText?: string | null }): ReactTestRenderer {
+ act(() => {
+ renderer = create(createElement(MobileNativeChatTurnActivity, props))
+ })
+ return renderer!
+ }
+
+ it('reads "Thinking" beside one spinner while the turn reasons', () => {
+ const tree = render({ thinking: true })
+ expect(labels(tree.root)).toEqual(['Thinking'])
+ expect(spinners(tree.root)).toHaveLength(1)
})
- it('announces the live row to assistive tech', () => {
- const tree = render({ startedAt: Date.now(), thinking: true })
+ // The bar owns the clock; the tail line never repeats it.
+ it('reads plain "Working…" when the turn is not reasoning, and holds no timer', () => {
+ const tree = render({ thinking: false })
+ expect(labels(tree.root)).toEqual(['Working…'])
+ expect(vi.getTimerCount()).toBe(0)
+ })
+
+ it('lets provider activity text beat both fallbacks', () => {
+ const tree = render({ thinking: true, activityText: 'Running pnpm test' })
+ expect(labels(tree.root)).toEqual(['Running pnpm test'])
+ expect(spinners(tree.root)).toHaveLength(1)
+ })
+
+ it('announces the live line to assistive tech', () => {
+ const tree = render({ thinking: true })
const row = tree.root.findByType('View' as never)
expect(row.props.accessibilityLiveRegion).toBe('polite')
expect(row.props.accessibilityLabel).toBe('Agent is responding')
diff --git a/mobile/src/session/MobileNativeChatTurnStatus.tsx b/mobile/src/session/MobileNativeChatTurnStatus.tsx
index acf922265f6..25003685240 100644
--- a/mobile/src/session/MobileNativeChatTurnStatus.tsx
+++ b/mobile/src/session/MobileNativeChatTurnStatus.tsx
@@ -26,38 +26,28 @@ function useElapsedSeconds(startedAt: number | null, counting: boolean): number
return counting ? nativeChatElapsedSeconds(startedAt, mountedAt, now) : 0
}
-/** The per-turn status row. While the turn runs it is the one live indicator — a
- * spinner beside what the provider says it is doing, else "Thinking", else
- * "Working for 12s". It settles to a tappable "Worked for 3m 4s" that discloses
- * the turn's tool activity. Desktop parity: `NativeChatTurnActivityLine` for the
- * live row, `NativeChatWorkingStatus` for the settled one. */
+/** The turn bar under the user's message: "Working for 12s" while the turn runs,
+ * settling in place to a tappable "Worked for 3m 4s" that discloses the turn's
+ * tool activity. Desktop parity: `NativeChatWorkingStatus`. */
export function MobileNativeChatTurnStatus({
startedAt,
- thinking,
workedSeconds,
- activityText,
expanded = false,
onToggleExpanded
}: {
startedAt: number | null
- thinking: boolean
workedSeconds?: number | null
- /** Provider activity copy for a live turn; outranks the other two labels. */
- activityText?: string | null
expanded?: boolean
onToggleExpanded?: () => void
}): React.JSX.Element {
const settled = workedSeconds != null
- const counting = !settled && !thinking && !activityText?.trim()
- const elapsedSeconds = useElapsedSeconds(startedAt, counting)
- const label = settled
- ? formatNativeChatTurnStatusLabel({ thinking, workedSeconds, elapsedSeconds })
- : formatNativeChatActiveTurnLabel({ activityText, thinking, elapsedSeconds })
+ const elapsedSeconds = useElapsedSeconds(startedAt, !settled)
+ const label = formatNativeChatTurnStatusLabel({ workedSeconds, elapsedSeconds })
if (settled && onToggleExpanded) {
return (
[styles.row, styles.rowSettled, pressed && styles.pressed]}
+ style={({ pressed }) => [styles.row, styles.bar, pressed && styles.pressed]}
onPress={onToggleExpanded}
hitSlop={6}
accessibilityRole="button"
@@ -72,15 +62,34 @@ export function MobileNativeChatTurnStatus({
)
}
+ return (
+
+
+ {label}
+
+
+ )
+}
+
+/** The live turn's tail line: a spinner beside what the provider says it is doing,
+ * else "Thinking", else "Working…". The clock stays in the turn bar. Desktop
+ * parity: `NativeChatTurnActivityLine`. */
+export function MobileNativeChatTurnActivity({
+ thinking,
+ activityText
+}: {
+ thinking: boolean
+ activityText?: string | null
+}): React.JSX.Element {
return (
- {settled ? null : }
+
- {label}
+ {formatNativeChatActiveTurnLabel({ activityText, thinking })}
)
@@ -94,7 +103,7 @@ const styles = StyleSheet.create({
minHeight: 28,
paddingHorizontal: spacing.md
},
- rowSettled: {
+ bar: {
borderBottomWidth: StyleSheet.hairlineWidth,
borderBottomColor: colors.borderSubtle
},
diff --git a/mobile/src/session/MobileNativeChatView.test.ts b/mobile/src/session/MobileNativeChatView.test.ts
index 6b80c3500ae..fa29e13c8c8 100644
--- a/mobile/src/session/MobileNativeChatView.test.ts
+++ b/mobile/src/session/MobileNativeChatView.test.ts
@@ -703,14 +703,14 @@ describe('MobileNativeChatView', () => {
return renderer!.root.findAll((node) => node.type === 'WorkingIndicator')
}
- it('puts the live status at the turn tail and drops the three-dot indicator', async () => {
+ it('puts the clock bar under the prompt, activity at the tail, and drops the three dots', async () => {
const folded = [userTurn('u1', 'go'), assistantTurn('a1', 'still working')]
await render({ messages: folded, folded, structuredActivityUi: true, agentWorking: true })
const props = rowProps('u1')
expect(props.structuredActivityUi).toBe(true)
- expect(props.turnStatus).toBeNull()
- // Nothing reports reasoning, so the one live footer counts instead of guessing.
- expect(footerProps()).toMatchObject({ thinking: false, workedSeconds: null })
+ expect(props.turnStatus).toMatchObject({ workedSeconds: null })
+ // Nothing reports reasoning, so the tail line reads plain working instead of guessing.
+ expect(footerProps()).toEqual({ thinking: false, activityText: null })
expect(listIds().at(-1)).toBe('a1')
expect(props.activeTurnIsWorking).toBe(true)
expect(workingIndicators()).toHaveLength(0)
@@ -778,7 +778,7 @@ describe('MobileNativeChatView', () => {
expect(renderer!.root.findAll((node) => node.type === testCase.cardType)).toHaveLength(1)
await update(working)
- expect(footerProps()).toMatchObject({ thinking: false, workedSeconds: null })
+ expect(footerProps()).toMatchObject({ thinking: false })
expect(rowProps('a1').activeTurnIsWorking).toBe(true)
})
@@ -791,8 +791,8 @@ describe('MobileNativeChatView', () => {
agentWorking: true,
turnIndicator: { thinking: true, activityText: null }
})
- expect(rowProps('u1').turnStatus).toBeNull()
- expect(footerProps()).toMatchObject({ thinking: true, workedSeconds: null })
+ expect(rowProps('u1').turnStatus).toMatchObject({ workedSeconds: null })
+ expect(footerProps()).toMatchObject({ thinking: true })
})
it('hands the live row the provider activity copy that outranks its fallbacks', async () => {
@@ -838,8 +838,8 @@ describe('MobileNativeChatView', () => {
it('settles the finished turn to a tappable duration', async () => {
const folded = [userTurn('u1', 'go'), assistantTurn('a1', 'done')]
await render({ messages: folded, folded, structuredActivityUi: true, agentWorking: true })
- expect(rowProps('u1').turnStatus).toBeNull()
- expect(footerProps()).toMatchObject({ thinking: false, workedSeconds: null })
+ expect(rowProps('u1').turnStatus).toMatchObject({ workedSeconds: null })
+ expect(footerProps()).toMatchObject({ thinking: false })
await update({ messages: folded, folded, structuredActivityUi: true, agentWorking: false })
const settled = rowProps('u1')
expect(settled.turnStatus).toMatchObject({ thinking: false })
@@ -857,7 +857,7 @@ describe('MobileNativeChatView', () => {
expect(rowProps('a1').turnStatus).toBeNull()
// The assistant row still belongs to the live turn, so its tool row stays visible.
expect(rowProps('a1').activeTurnIsWorking).toBe(true)
- expect(footerProps()).toMatchObject({ workedSeconds: null })
+ expect(footerProps()).toMatchObject({ thinking: false })
})
it('does not carry a running turn clock across chat surfaces', async () => {
@@ -872,7 +872,7 @@ describe('MobileNativeChatView', () => {
agentWorking: true,
sendSurfaceId: 'host\0worktree\0tab-a'
})
- expect(footerProps()).toMatchObject({ startedAt: 1_000 })
+ expect(rowProps('u1').turnStatus).toMatchObject({ startedAt: 1_000 })
vi.setSystemTime(12_000)
const secondTab = [userTurn('u2', 'second')]
@@ -884,7 +884,7 @@ describe('MobileNativeChatView', () => {
sendSurfaceId: 'host\0worktree\0tab-b'
})
- expect(footerProps()).toMatchObject({ startedAt: 12_000 })
+ expect(rowProps('u2').turnStatus).toMatchObject({ startedAt: 12_000 })
} finally {
vi.useRealTimers()
}
diff --git a/mobile/src/session/MobileNativeChatView.tsx b/mobile/src/session/MobileNativeChatView.tsx
index 6a51601d151..050a532de3c 100644
--- a/mobile/src/session/MobileNativeChatView.tsx
+++ b/mobile/src/session/MobileNativeChatView.tsx
@@ -28,7 +28,7 @@ import { useMobileNativeChatPinchGesture } from './use-mobile-native-chat-pinch-
import { useMobileNativeChatTailFollow } from './use-mobile-native-chat-tail-follow'
import { useMobileNativeChatTurnDisclosure } from './use-mobile-native-chat-turn-disclosure'
import { useSettledMobileNativeChatInputLock } from './use-mobile-native-chat-input-lease'
-import { MobileNativeChatTurnStatus } from './MobileNativeChatTurnStatus'
+import { MobileNativeChatTurnActivity } from './MobileNativeChatTurnStatus'
import { MobileAgentWorkingIndicator } from './MobileAgentWorkingIndicator'
import type { PendingNativeChatImage } from './mobile-native-chat-image-attachment'
import { MobileNativeChatComposer } from './MobileNativeChatComposer'
@@ -338,10 +338,8 @@ export function MobileNativeChatView({
agentWorking &&
!hasPendingStructuredInteraction &&
turns.active ? (
-
) : null
diff --git a/mobile/src/session/MobileSessionActiveContent.tsx b/mobile/src/session/MobileSessionActiveContent.tsx
index eb7b6c558dd..9c4f0eb313f 100644
--- a/mobile/src/session/MobileSessionActiveContent.tsx
+++ b/mobile/src/session/MobileSessionActiveContent.tsx
@@ -32,8 +32,6 @@ export function MobileSessionActiveContent({
setShowCreateTabDrawer,
dictationMode,
toastMessage,
- terminalFrameHeightRef,
- setTerminalFrameWidth,
handleTerminalTap,
browserScreencastSupported,
showToast,
@@ -53,9 +51,10 @@ export function MobileSessionActiveContent({
copyMarkdownLocalContent,
discardMarkdownLocalContent,
saveMarkdownTab,
- notifyTerminalFrameHeight,
setTerminalWebViewRef,
handleTerminalWebReady,
+ notifyTerminalFrame,
+ notifyTerminalCellBoxChange,
handleFileTap,
handleNativeChatFileTap,
handleTerminalOpenUrl,
@@ -208,6 +207,7 @@ export function MobileSessionActiveContent({
}}
onRef={setTerminalWebViewRef}
onWebReady={handleTerminalWebReady}
+ onCellBoxChange={notifyTerminalCellBoxChange}
onSelectionMode={handleSelectionMode}
onSelectionCopy={handleSelectionCopy}
onSelectionEvicted={handleSelectionEvicted}
@@ -249,12 +249,8 @@ export function MobileSessionActiveContent({
// Why: one frame under every branch; react-native-web observes onLayout only on a View that mounts with it.
style={styles.contentFrame}
onLayout={(e) => {
- terminalFrameHeightRef.current = e.nativeEvent.layout.height
- // Why: notify height imperatively so dock settling re-fits the PTY without rerendering SessionScreen.
- const nextWidth = Math.round(e.nativeEvent.layout.width)
- const nextHeight = Math.round(e.nativeEvent.layout.height)
- setTerminalFrameWidth((prev) => (prev === nextWidth ? prev : nextWidth))
- notifyTerminalFrameHeight(nextHeight)
+ const { width, height } = e.nativeEvent.layout
+ notifyTerminalFrame({ width, height })
}}
>
{content}
diff --git a/mobile/src/session/MobileSessionCommandDock.tsx b/mobile/src/session/MobileSessionCommandDock.tsx
index ed12bb6e51a..87b46246572 100644
--- a/mobile/src/session/MobileSessionCommandDock.tsx
+++ b/mobile/src/session/MobileSessionCommandDock.tsx
@@ -1,4 +1,5 @@
-import { View, Text, ScrollView, TextInput, Pressable, Platform } from 'react-native'
+import { View, Text, ScrollView, TextInput, Pressable } from 'react-native'
+import { hostOs } from '../platform/host-os'
import {
ArrowUp,
ChevronDown,
@@ -19,6 +20,7 @@ import { MobileTerminalInputActions } from './MobileTerminalInputActions'
import { isTerminalPhoneDisplayMode } from './mobile-session-route-helpers'
import { colors } from '../theme/mobile-theme'
import { styles } from './mobile-session-styles'
+import { useKeyboardPersistingTaps } from '../platform/keyboard-persisting-taps'
import type { MobileSessionController } from './use-mobile-session-controller'
export function MobileSessionCommandDock({ controller }: { controller: MobileSessionController }) {
@@ -65,6 +67,7 @@ export function MobileSessionCommandDock({ controller }: { controller: MobileSes
activeBrowserTab,
keyboardLift
} = controller
+ const accessoryBarKeepsKeyboard = useKeyboardPersistingTaps('always')
return (
!activeMarkdownTab &&
!activeFileTab &&
@@ -77,7 +80,7 @@ export function MobileSessionCommandDock({ controller }: { controller: MobileSes
]}
>
{/* Accessory keys */}
-
+
{/* Why: fixed keyboard escape hatch; outside ScrollView + shortcut path so it can't scroll away or be hidden (#5106). */}
{keyboardLift > 0 && (
@@ -119,7 +121,7 @@ export function MobileSessionHeader({ controller }: { controller: MobileSessionC
{visibleTabs.length > 0 && (
-
+
{/* Why: tab taps must register on first press with the keyboard open instead of being eaten by dismissal (#5106). */}
void
onOpenUrl: (handle: string, url: string) => void
onTextScaleChange: (scale: number) => void
+ onCellBoxChange: (handle: string) => void
}
export function TerminalPaneView({
@@ -49,7 +50,8 @@ export function TerminalPaneView({
onTerminalTap,
onFileTap,
onOpenUrl,
- onTextScaleChange
+ onTextScaleChange,
+ onCellBoxChange
}: TerminalPaneViewProps) {
const setRef = useCallback(
(ref: TerminalWebViewHandle | null) => {
@@ -74,6 +76,7 @@ export function TerminalPaneView({
style={styles.terminalWebView}
terminalTheme={terminalTheme}
textScale={textScale}
+ shownAtMount={active}
onWebReady={() => onWebReady(handle)}
onSelectionMode={(a) => onSelectionMode(handle, a)}
onSelectionCopy={(t) => onSelectionCopy(handle, t)}
@@ -87,6 +90,7 @@ export function TerminalPaneView({
onFileTap={(pathText, line, column) => onFileTap(handle, pathText, line, column)}
onOpenUrl={(url) => onOpenUrl(handle, url)}
onTextScaleChange={onTextScaleChange}
+ onCellBoxChange={() => onCellBoxChange(handle)}
/>
)
diff --git a/mobile/src/session/mobile-session-connection-retry.test.tsx b/mobile/src/session/mobile-session-connection-retry.test.tsx
index 0102819b311..410c6dea196 100644
--- a/mobile/src/session/mobile-session-connection-retry.test.tsx
+++ b/mobile/src/session/mobile-session-connection-retry.test.tsx
@@ -30,7 +30,7 @@ function present(forceReconnectHost: ForceReconnect): Presentation {
toastOpacityRef: { current: 1 },
hostEndpoint: null,
initialSessionAutoCreateRef: { current: null },
- terminalFrameHeightRef: { current: 0 },
+ terminalFrameRef: { current: null },
handleCreateTerminal: () => Promise.resolve(),
visibleTabs: [],
forceReconnectHost
diff --git a/mobile/src/session/mobile-session-frame-styles.ts b/mobile/src/session/mobile-session-frame-styles.ts
index c6117fc8aae..22ac97d23c8 100644
--- a/mobile/src/session/mobile-session-frame-styles.ts
+++ b/mobile/src/session/mobile-session-frame-styles.ts
@@ -70,6 +70,7 @@ export const mobileSessionFrameStyles = StyleSheet.create({
sessionMetaRow: {
flexDirection: 'row',
alignItems: 'center',
+ gap: spacing.sm,
marginTop: 2
},
sessionMetaText: {
diff --git a/mobile/src/session/mobile-session-route-parity.test.ts b/mobile/src/session/mobile-session-route-parity.test.ts
index 4910151d071..6083ecbcd68 100644
--- a/mobile/src/session/mobile-session-route-parity.test.ts
+++ b/mobile/src/session/mobile-session-route-parity.test.ts
@@ -92,11 +92,23 @@ const HOST_COMPONENT_NAMES = new Set([
// never pass it. Found by pullfrog on #22300.
// Moved, count unchanged, when the Markdown actions' Back `useEffect` became `useBackClaim`, the
// seam that also claims the key on the page while a draft is dirty.
-const HEAD_MAIN_HOOK_SHA256 = 'f161e14a9c53d80c3dc75f51dd8ecb339b59b7239c9c3e067791b8612f51ede2'
-// Moved when the prompt-cancel flag became one structured-session host support object.
-const HEAD_HOOK_BINDING_SHA256 = 'db9f32cc60fc68adbcbb2acf9f9384ad0d78bbc6feef5d581449fadb647405fc'
+// Refreshed when the first subscribe began sizing itself from the document's reported cell box:
+// the first-subscribe mark ref and `measureViewportOnce` are gone (hooks 282 → 280, callbacks 79 → 78).
+// Again when xterm became the only cell measurer: `useTerminalCellBoxRefit` is gone, the frame's
+// width ref and `handleTerminalFrameLayout` subscribe a known box on layout (hooks 282, callbacks 79),
+// and the pane's `onCellBoxChange` goes to the viewport refit.
+// Again when one frame ref replaced the height ref, width ref and width state (hooks 280).
+// Again when one `notifyTerminalFrame` took the frame's layout (hooks 281, callbacks 80).
+const HEAD_MAIN_HOOK_SHA256 = '004b011722b17ac82c96f0b3c8e303d39b2431a216424e9b86a1ee6a4896f23e'
+// Moved when the prompt-cancel flag became one structured-session host support object (main).
+// Re-recorded against the merged tree. Again when the frame-layout and cell-box-change callbacks
+// named the refs they read in their dependency lists (react-doctor).
+// Again when the frame's width and height became one `terminalFrameRef`.
+// Again when the frame's layout moved into `notifyTerminalFrame`.
+const HEAD_HOOK_BINDING_SHA256 = 'c1bcb859202aaf8d612d3023cb4d895719da513879c61b01545a249a0bda662b'
+// Moved when `notifyTerminalFrame` joined and `handleTerminalFrameLayout` became `subscribeIntendedActiveTerminal`.
const HEAD_CALLBACK_IDENTITY_SHA256 =
- '373dca17a060e63d8cb4e32416ca2889b8404cee78f7b47e632940a9980baf23'
+ '9c966301b373c11b27359ef1388c593b638c7f6831186d5c5321553504183e07'
// Pins that no callback body in the route changed unnoticed. Body text, not behaviour: the sends
// and repo reads inside them now name their `RpcOperation` instead of the raw `sendRequest` port.
// Refreshed in step 6 for the gesture flush, whose `terminal.send` became `terminalInputSend` and
@@ -116,8 +128,16 @@ const HEAD_CALLBACK_IDENTITY_SHA256 =
// the other's body. The hook and string counts are C7.2's and stand.
// Refreshed once more for the two dictation failure handlers, which now both call
// `reportDictationFailure` instead of each choosing between the setup sheet and a toast.
-// Moved when the metrics handler compared every field, the row pitch included.
-const HEAD_CALLBACK_BODY_SHA256 = '65f5c1274967cecef39660430169dcfde81b362e8aa5878833b9f20bc8e43a6a'
+// Moved when the metrics handler compared every field, the row pitch included (main).
+// Again when the subscribe waited for web-ready and `handleTerminalWebReady` lost `documentHasInit`.
+// Again when the subscribe's inits began carrying the laid-out terminal frame, and its resize too.
+// Again when those grids read the one frame ref.
+// Again when the subscribe sized its viewport inline instead of through a helper.
+// Again when the document took the hold rule and the subscribe stopped holding its grid.
+// Again when an init took one options object.
+// Again when the frame's layout became one `notifyTerminalFrame`.
+// Again when the init option took the message's name, `initialData`.
+const HEAD_CALLBACK_BODY_SHA256 = '4848e925f478f1656f26031c1bdebbb9f2da60811c7e91cfd732fc9da9764079'
// Refreshed for the startup effect: both `worktree.activate` sends became `worktreeActivate`, and
// the sleeping-agent check reads that operation's verdict instead of the reply envelope. Refreshed
// again when the reporter took the reply and interpreted it itself, retiring the hand-built
@@ -179,11 +199,20 @@ const HEAD_TIMER_CLEANUP_SHA256 = 'c73f1d1c2cc89642f3d727d6f3b6b81860a9d6f342345
// every branch and carries the frame's onLayout, so the page's frame mounts with it. The page measured
// 47 rows before and after; native was measured only on main's bundle (47), and the wrapper is a
// flex:1 View around the same flex:1 frame, so its box is the frame's.
+// Count unchanged: `'frame-not-laid-out'`, the gate awaiting the frame's first layout, replaced `'measuring-viewport'`.
+// 530 -> 532, and the host-JSX hash: the tab bar and the accessory bar take a ref that gives the
+// page `keyboardShouldPersistTaps` ('handled', 'always'), which react-native-web ignores. Natively
+// the ref is undefined. 532 -> 531: the live input's reopen flag reads the host OS, not an 'android' literal.
const HEAD_RUNTIME_STRING_SHA256 =
- '7dd03af1ad61e2f394b8cba35a422f7195de60ae5d608923b52575a56a4dbe42'
-// Moved by both of the dock's fields: their refs, and the live one's submit handler, are the seam's now.
-const HEAD_HOST_JSX_SHA256 = '1478283a1597c88920aedfea9f6ed13d119ea8f93546e1628d0918cd0a5248ef'
-const HEAD_LEAF_JSX_SHA256 = 'c7e1a4b90197697f1eaa640c38da63281b4f7b84fb036ae2152f00c2f7d7cb77'
+ 'ab8cc43940d3a3e0fdb8df3bdc178b9b61e51c7ccd55a944933862a3c290e8e3'
+// Moved by both of the dock's fields: their refs, and the live one's submit handler, are the seam's now;
+// their keyboard type and remount key read the host OS.
+// Moved again when the terminal frame kept its laid-out width unrounded, for every fit.
+// Again when the frame's onLayout wrote one frame ref and notified a new width imperatively.
+// Again when the frame's first laid-out layout alone subscribes a held-back document.
+// Again when the frame's onLayout made one `notifyTerminalFrame` call.
+const HEAD_HOST_JSX_SHA256 = 'f71b1ee495f67a6e389abf597948ffdff1f9a4a10cde6abefd2611ea4dd94245'
+const HEAD_LEAF_JSX_SHA256 = '62eb05c6e2ac0be6d553a141fc8aa1641fcb0c678777d5d539f490aab8648417'
const HEAD_STYLE_REFERENCE_SHA256 =
'56a005a1f65b30c11092e3422caef67810e1ec50f66fdd06471c370138b1eeb6'
const HEAD_IDENTITY_FIELD_SHA256 =
@@ -580,10 +609,10 @@ describe('mobile session route extraction parity', () => {
const contentBindings = CONTENT_COMPONENT_NAMES.flatMap(
(name) => readHookFacts(name, definitions).bindings
)
- expect(main.hooks).toHaveLength(282)
+ expect(main.hooks).toHaveLength(281)
expect(hash(main.hooks)).toBe(HEAD_MAIN_HOOK_SHA256)
expect(hash(main.bindings)).toBe(HEAD_HOOK_BINDING_SHA256)
- expect(main.callbacks).toHaveLength(79)
+ expect(main.callbacks).toHaveLength(80)
expect(hash(main.callbacks)).toBe(HEAD_CALLBACK_IDENTITY_SHA256)
expect(hash(main.callbackBodies)).toBe(HEAD_CALLBACK_BODY_SHA256)
expect(main.effects).toHaveLength(24)
@@ -625,7 +654,7 @@ describe('mobile session route extraction parity', () => {
it('preserves runtime strings, styles, and the expanded JSX tree', () => {
const strings = readRuntimeStrings()
- expect(strings).toHaveLength(530)
+ expect(strings).toHaveLength(531)
expect(hash(strings)).toBe(HEAD_RUNTIME_STRING_SHA256)
const jsx = readJsxFacts(readDefinitions())
expect(jsx.host).toHaveLength(125)
diff --git a/mobile/src/session/mobile-session-terminal-frame-layout.test.tsx b/mobile/src/session/mobile-session-terminal-frame-layout.test.tsx
index 80370a44aad..1cec63717c7 100644
--- a/mobile/src/session/mobile-session-terminal-frame-layout.test.tsx
+++ b/mobile/src/session/mobile-session-terminal-frame-layout.test.tsx
@@ -49,7 +49,7 @@ type Branch = 'loading' | 'pending' | 'terminal'
function controller(
branch: Branch | boolean,
- notifyTerminalFrameHeight: (height: number) => void
+ notifyTerminalFrame: (frame: { width: number; height: number }) => void
): Controller {
const shown = branch === true ? 'loading' : branch === false ? 'terminal' : branch
const scope = {
@@ -58,9 +58,7 @@ function controller(
isPendingTerminalRecoveryParked: false,
showEmptyState: false,
terminals: [],
- terminalFrameHeightRef: { current: 0 },
- setTerminalFrameWidth: () => {},
- notifyTerminalFrameHeight,
+ notifyTerminalFrame,
dictation: { isRecording: false },
nativeChatSendError: { message: null, clear: () => {} }
}
@@ -71,8 +69,8 @@ function controller(
describe('the terminal frame on the page', () => {
it('reports its height when the session opens from the loading state', () => {
const heights: number[] = []
- const notify = (height: number): void => {
- heights.push(height)
+ const notify = (frame: { height: number }): void => {
+ heights.push(frame.height)
}
let renderer: ReturnType | undefined
act(() => {
@@ -91,8 +89,8 @@ describe('the terminal frame on the page', () => {
it('stays one mounted frame across loading, a pending terminal and the terminal', () => {
// A frame that remounts per branch reports again on every return; one that stays reports once.
const heights: number[] = []
- const notify = (height: number): void => {
- heights.push(height)
+ const notify = (frame: { height: number }): void => {
+ heights.push(frame.height)
}
let renderer: ReturnType | undefined
const show = (branch: Branch) => {
diff --git a/mobile/src/session/mobile-structured-agent-session-rpc.ts b/mobile/src/session/mobile-structured-agent-session-rpc.ts
index 712b181cbbc..bca14e293f7 100644
--- a/mobile/src/session/mobile-structured-agent-session-rpc.ts
+++ b/mobile/src/session/mobile-structured-agent-session-rpc.ts
@@ -10,13 +10,15 @@ import type {
import { structuredAgentSessionPayloadFingerprint } from '../../../src/shared/structured-agent-session-mutation'
import {
agentSessionRefusalNotice,
- agentSessionRpcErrorFailure,
agentSessionWriteFailureNotice,
- agentSessionWriteKindForMethod,
agentSessionWriteNoticeEnglish,
- agentSessionWriteNoticeParts,
- type AgentSessionWriteKind
+ agentSessionWriteNoticeParts
} from '../../../src/shared/agent-session-refusal-notice'
+import {
+ agentSessionRpcErrorFailure,
+ agentSessionWriteKindForMethod,
+ type AgentSessionWriteKind
+} from '../../../src/shared/agent-session-write-failure'
import { structuredSessionOperationId } from './structured-session-operation-id'
import { isRpcDeliveryUnknown } from '../transport/rpc-delivery-ambiguity'
import type { RpcClient } from '../transport/rpc-client'
diff --git a/mobile/src/session/mobile-structured-operation-id-retirement.test.ts b/mobile/src/session/mobile-structured-operation-id-retirement.test.ts
index 887aeb7e208..82ccd1e19dc 100644
--- a/mobile/src/session/mobile-structured-operation-id-retirement.test.ts
+++ b/mobile/src/session/mobile-structured-operation-id-retirement.test.ts
@@ -161,6 +161,36 @@ describe('what a structured refusal says on the phone', () => {
})
})
+ it('says what the host named as the reason, in the same words as desktop', async () => {
+ const result = await requestStructuredAgentSessionMutation({
+ client: fakeClient(async () => ({
+ ok: true,
+ result: {
+ ok: false,
+ refusal: {
+ code: 'agent_session_operation_invalid',
+ message: 'This conversation has been cleared. Use the current conversation.',
+ details: { reason: 'conversationCleared' }
+ }
+ },
+ _meta: { runtimeId: 'runtime-1' }
+ })),
+ method: 'agentSession.send',
+ fingerprintMethod: 'agentSession.send',
+ sessionId: 'session-1',
+ expectedRuntimeFence: 1,
+ fields: { body: 'hello' },
+ clientOperationId: `1900000000000-${'e'.repeat(32)}`
+ })
+
+ expect(result).toEqual({
+ status: 'refused',
+ code: 'agent_session_operation_invalid',
+ message:
+ 'This conversation has been cleared. Your message was not sent. Open the current conversation to continue.'
+ })
+ })
+
const stop = {
method: 'agentSession.cancel',
fingerprintMethod: 'agentSession.cancel',
diff --git a/mobile/src/session/mobile-terminal-first-subscribe-viewport.test.ts b/mobile/src/session/mobile-terminal-first-subscribe-viewport.test.ts
deleted file mode 100644
index e1da3e5d2f1..00000000000
--- a/mobile/src/session/mobile-terminal-first-subscribe-viewport.test.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-import { describe, expect, it, vi } from 'vitest'
-import {
- deferFirstSubscribeUntilViewportMeasured,
- measureTerminalViewportOnce,
- type FirstSubscribeViewportGateArgs,
- type TerminalViewportOnceArgs
-} from './mobile-terminal-first-subscribe-viewport'
-
-const PHONE = { cols: 55, rows: 47 }
-
-function onceArgs(overrides: Partial = {}): TerminalViewportOnceArgs {
- return {
- handle: 'term-1',
- ref: {
- init: vi.fn(),
- awaitReady: vi.fn(async () => {}),
- measureFitDimensions: vi.fn(async () => PHONE)
- },
- documentHasTerminal: true,
- viewportRef: { current: null },
- viewportMeasuredRef: { current: false },
- terminalFrameHeightRef: { current: 751 },
- onMeasured: vi.fn(),
- ...overrides
- }
-}
-
-describe('measureTerminalViewportOnce', () => {
- it('stores the measured dims against the frame height', async () => {
- const args = onceArgs()
- await measureTerminalViewportOnce(args)
- expect(args.ref?.measureFitDimensions).toHaveBeenCalledWith(751)
- expect(args.viewportRef.current).toEqual(PHONE)
- expect(args.viewportMeasuredRef.current).toBe(true)
- expect(args.onMeasured).toHaveBeenCalledWith('term-1', PHONE, 751)
- })
-
- it('does nothing once the route has a viewport', async () => {
- const args = onceArgs({ viewportMeasuredRef: { current: true } })
- await measureTerminalViewportOnce(args)
- expect(args.ref?.measureFitDimensions).not.toHaveBeenCalled()
- })
-
- it('leaves the viewport unmeasured when the document cannot measure', async () => {
- const args = onceArgs({
- ref: {
- init: vi.fn(),
- awaitReady: vi.fn(async () => {}),
- measureFitDimensions: vi.fn(async () => null)
- }
- })
- await measureTerminalViewportOnce(args)
- expect(args.viewportMeasuredRef.current).toBe(false)
- expect(args.viewportRef.current).toBe(null)
- })
-})
-
-describe('measureTerminalViewportOnce on a fresh document', () => {
- it('opens an empty terminal and waits for it before measuring, so cell metrics exist', async () => {
- const order: string[] = []
- const args = onceArgs({
- documentHasTerminal: false,
- ref: {
- init: vi.fn((cols: number, rows: number, data?: string) => {
- order.push(`init ${cols}x${rows} ${JSON.stringify(data)}`)
- }),
- awaitReady: vi.fn(async () => {
- order.push('awaitReady')
- }),
- measureFitDimensions: vi.fn(async () => {
- order.push('measure')
- return PHONE
- })
- }
- })
- await measureTerminalViewportOnce(args)
- expect(order).toEqual(['init 80x24 ""', 'awaitReady', 'measure'])
- expect(args.viewportRef.current).toEqual(PHONE)
- })
-
- it('never re-inits a document that already holds a terminal', async () => {
- const args = onceArgs({ documentHasTerminal: true })
- await measureTerminalViewportOnce(args)
- expect(args.ref?.init).not.toHaveBeenCalled()
- expect(args.viewportRef.current).toEqual(PHONE)
- })
-})
-
-function gateArgs(
- overrides: Partial = {}
-): FirstSubscribeViewportGateArgs {
- return {
- handle: 'term-1',
- covered: false,
- viewportMeasured: false,
- subscribedDocuments: new Set(),
- subscribingHandles: new Set(),
- subscribeSeq: new Map([['term-1', 1]]),
- measure: vi.fn(async () => {}),
- subscribe: vi.fn(),
- ...overrides
- }
-}
-
-describe('deferFirstSubscribeUntilViewportMeasured', () => {
- it('holds the first subscribe of a document until the measure lands, then subscribes once', async () => {
- let finishMeasure = (): void => {}
- const args = gateArgs({
- measure: vi.fn(
- () =>
- new Promise((resolve) => {
- finishMeasure = resolve
- })
- )
- })
- expect(deferFirstSubscribeUntilViewportMeasured(args)).toBe(true)
- expect(args.measure).toHaveBeenCalledWith('term-1')
- // Other callers see a subscribe in flight and stay out.
- expect(args.subscribingHandles.has('term-1')).toBe(true)
- expect(args.subscribe).not.toHaveBeenCalled()
- finishMeasure()
- await vi.waitFor(() => expect(args.subscribe).toHaveBeenCalledTimes(1))
- expect(args.subscribingHandles.has('term-1')).toBe(false)
- // The resumed subscribe passes straight through.
- expect(deferFirstSubscribeUntilViewportMeasured(args)).toBe(false)
- })
-
- it('still subscribes, without dims, when the measure fails', async () => {
- const args = gateArgs({ measure: vi.fn(() => Promise.reject(new Error('gone'))) })
- expect(deferFirstSubscribeUntilViewportMeasured(args)).toBe(true)
- await vi.waitFor(() => expect(args.subscribe).toHaveBeenCalledTimes(1))
- })
-
- function heldSubscribe(subscribeSeq = new Map([['term-1', 1]])) {
- let finishMeasure = (): void => {}
- const args = gateArgs({
- subscribeSeq,
- measure: vi.fn(
- () =>
- new Promise((resolve) => {
- finishMeasure = resolve
- })
- )
- })
- deferFirstSubscribeUntilViewportMeasured(args)
- return { args, finish: () => finishMeasure() }
- }
- const flush = async () => {
- await Promise.resolve()
- await Promise.resolve()
- }
-
- it('drops the held subscribe when a newer subscribe generation started during the measure', async () => {
- const subscribeSeq = new Map([['term-1', 1]])
- const { args, finish } = heldSubscribe(subscribeSeq)
- subscribeSeq.set('term-1', 2)
- finish()
- await flush()
- expect(args.subscribe).not.toHaveBeenCalled()
- })
-
- it('drops the held subscribe when its in-flight mark was cleared during the measure', async () => {
- const { args, finish } = heldSubscribe()
- args.subscribingHandles.delete('term-1')
- finish()
- await flush()
- expect(args.subscribe).not.toHaveBeenCalled()
- })
-
- it('passes through when the viewport is known, but remembers the document', () => {
- const args = gateArgs({ viewportMeasured: true })
- expect(deferFirstSubscribeUntilViewportMeasured(args)).toBe(false)
- expect(args.subscribedDocuments.has('term-1')).toBe(true)
- // A later refit invalidation must not re-open a live terminal's document.
- expect(deferFirstSubscribeUntilViewportMeasured({ ...args, viewportMeasured: false })).toBe(
- false
- )
- expect(args.measure).not.toHaveBeenCalled()
- })
-
- it('passes through a native-chat-covered lease, which has no document', () => {
- const args = gateArgs({ covered: true })
- expect(deferFirstSubscribeUntilViewportMeasured(args)).toBe(false)
- expect(args.subscribedDocuments.has('term-1')).toBe(false)
- expect(args.measure).not.toHaveBeenCalled()
- })
-})
diff --git a/mobile/src/session/mobile-terminal-first-subscribe-viewport.ts b/mobile/src/session/mobile-terminal-first-subscribe-viewport.ts
deleted file mode 100644
index e6c79f5c5f9..00000000000
--- a/mobile/src/session/mobile-terminal-first-subscribe-viewport.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import type { TerminalWebViewHandle } from '../terminal/terminal-webview-contract'
-import type { MutableRef, TerminalViewportDims } from './mobile-terminal-viewport-resubscribe'
-
-/** Any size opens xterm; cell metrics, not the grid, are what the measure needs. */
-const EMPTY_TERMINAL_COLS = 80
-const EMPTY_TERMINAL_ROWS = 24
-
-export type TerminalViewportMeasureTarget = Pick<
- TerminalWebViewHandle,
- 'init' | 'awaitReady' | 'measureFitDimensions'
->
-
-export type TerminalViewportOnceArgs = {
- handle: string
- ref: TerminalViewportMeasureTarget | undefined
- /** False until the document's first init; it has no xterm, so no cell metrics, before one. */
- documentHasTerminal: boolean
- viewportRef: MutableRef
- viewportMeasuredRef: MutableRef
- terminalFrameHeightRef: MutableRef
- onMeasured: (
- handle: string,
- dims: TerminalViewportDims | null | undefined,
- frameHeight: number
- ) => void
-}
-
-/** Measures the phone viewport once per route; the dims then ride every subscribe so the host fits the PTY itself. */
-export async function measureTerminalViewportOnce(args: TerminalViewportOnceArgs): Promise {
- if (args.viewportMeasuredRef.current) {
- return
- }
- const ref = args.ref
- if (ref && !args.documentHasTerminal) {
- // Why: without this the first subscribe goes dimensionless, paints at the desktop's size, then resubscribes.
- ref.init(EMPTY_TERMINAL_COLS, EMPTY_TERMINAL_ROWS, '')
- await ref.awaitReady()
- }
- const dims = await ref?.measureFitDimensions(args.terminalFrameHeightRef.current || undefined)
- args.onMeasured(args.handle, dims, args.terminalFrameHeightRef.current)
- if (dims) {
- args.viewportRef.current = dims
- args.viewportMeasuredRef.current = true
- }
-}
-
-export type FirstSubscribeViewportGateArgs = {
- handle: string
- covered: boolean
- viewportMeasured: boolean
- /** Handles whose current document has already been subscribed; cleared when that document goes away. */
- subscribedDocuments: Set
- subscribingHandles: Set
- subscribeSeq: ReadonlyMap
- measure: (handle: string) => Promise
- subscribe: (handle: string) => void
-}
-
-/**
- * Holds a document's first subscribe until the route's viewport is measured, so the host
- * serializes the snapshot at the phone's size. Returns true when it took over the subscribe.
- */
-export function deferFirstSubscribeUntilViewportMeasured(
- args: FirstSubscribeViewportGateArgs
-): boolean {
- const { handle } = args
- // A covered lease has no document to measure and asks for no viewport.
- if (args.covered) {
- return false
- }
- const firstForDocument = !args.subscribedDocuments.has(handle)
- args.subscribedDocuments.add(handle)
- if (!firstForDocument || args.viewportMeasured) {
- return false
- }
- args.subscribingHandles.add(handle)
- const seq = args.subscribeSeq.get(handle)
- const resume = (): void => {
- // Why: unsubscribeTerminal bumps the seq and clears the in-flight mark; a torn-down handle stays down.
- if (args.subscribeSeq.get(handle) !== seq || !args.subscribingHandles.has(handle)) {
- return
- }
- args.subscribingHandles.delete(handle)
- args.subscribe(handle)
- }
- void args.measure(handle).then(resume, resume)
- return true
-}
diff --git a/mobile/src/session/mobile-terminal-viewport-resubscribe.test.ts b/mobile/src/session/mobile-terminal-viewport-resubscribe.test.ts
index 14f11b15c40..752d2016979 100644
--- a/mobile/src/session/mobile-terminal-viewport-resubscribe.test.ts
+++ b/mobile/src/session/mobile-terminal-viewport-resubscribe.test.ts
@@ -252,7 +252,7 @@ describe('runTerminalViewportFitPass', () => {
const scheduled: { fn: () => void; ms: number }[] = []
const webView = {
awaitReady: () => Promise.resolve(),
- measureFitDimensions: () => Promise.resolve(overrides.measured ?? PHONE)
+ fitDimensions: () => (overrides.measured === undefined ? PHONE : overrides.measured)
}
const unsubscribeTerminal = vi.fn((handle: string) => {
terminalUnsubsRef.current.delete(handle)
@@ -275,7 +275,7 @@ describe('runTerminalViewportFitPass', () => {
subscribeSeqRef: { current: new Map([[HANDLE, 1]]) },
initializedHandlesRef: { current: new Set([HANDLE]) },
terminalUnsubsRef,
- terminalFrameHeightRef: { current: 0 },
+ terminalFrameRef: { current: { width: 390, height: 600 } },
getTerminalRef: () => webView,
unsubscribeTerminal,
subscribeToTerminal,
diff --git a/mobile/src/session/mobile-terminal-viewport-resubscribe.ts b/mobile/src/session/mobile-terminal-viewport-resubscribe.ts
index 9113e84f1f4..f0fc70a1333 100644
--- a/mobile/src/session/mobile-terminal-viewport-resubscribe.ts
+++ b/mobile/src/session/mobile-terminal-viewport-resubscribe.ts
@@ -2,6 +2,7 @@
* frame dims can never equal the phone viewport must not re-arm the stream
* forever — it broke gesture recognition and drained battery at ~25 cycles/s. */
+import type { TerminalFrame } from '../terminal/terminal-webview-messages'
import type { MobileTerminalDiagnostics } from './mobile-terminal-diagnostics'
export const MAX_TERMINAL_VIEWPORT_RESUBSCRIBE_ATTEMPTS = 3
@@ -177,7 +178,7 @@ export type MutableRef = { current: T }
type TerminalFitWebView = {
awaitReady: () => Promise
- measureFitDimensions: (frameHeight?: number) => Promise
+ fitDimensions: (frame: { width: number; height: number }) => TerminalViewportDims | null
}
export type TerminalViewportFitPassArgs = {
@@ -197,7 +198,7 @@ export type TerminalViewportFitPassArgs = {
subscribeSeqRef: MutableRef |