Skip to content

Commit f0a5889

Browse files
committed
Merge branch 'codex/2198-runner-demand' into codex/2198-proxy-parity
* codex/2198-runner-demand: feat(apple): release a speculative runner when the plan is proven observation-only refactor(daemon): move four pure leaves to their kits (#2347) fix(ios): stop charging every capture for a slow Simulator app discovery (#2331) refactor(commands): move commands-side rendering out of src/daemon and retire the doctor progress flag (#2349)
2 parents dfc9149 + b36d2ce commit f0a5889

83 files changed

Lines changed: 1529 additions & 402 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.fallowrc.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
"exports": [
9898
"detachIosSimulatorRunnerSessionsForShutdown",
9999
"hasLiveIosRunnerSession",
100+
"releaseSpeculativeIosRunnerSessionFor",
100101
"stopAllIosRunnerSessions"
101102
]
102103
},

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
## Unreleased
44

5+
- Fixed: the iOS Simulator AX snapshot route bounds how long a capture waits for app discovery
6+
and stops starting a discovery per capture. Discovery (`simctl launchctl list` through xcrun)
7+
takes seconds on a loaded host; a capture now waits at most 1.5s for the one in-flight
8+
discovery, takes the XCTest fallback, and the discovery keeps running under its own 15s
9+
deadline for the captures that follow. Previously each capture ran its own probe with a 3s
10+
timeout on its critical path, so a `wait` issued right after `open` could spend its budget on
11+
probe timeouts and report `wait_capture_stalled` with the app already on screen.
512
- Fixed: iOS snapshots no longer report `truncated: true` merely because a later backend produced
613
them. The runner stamped every recovered capture as truncated — including a complete private-AX
714
tree taken while the XCTest channel was penalized as slow — so a strict `is absent` / `wait absent`

CONTEXT.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ The daemon-side truth for route ownership and request-policy traits.
125125
Per-command classes steering Apple runner lifecycle and recovery, independent of the public surface.
126126

127127
**Runner demand**:
128-
What a local-Simulator open prepares of the XCTest runner for the remaining batch steps.
128+
What a Simulator open prepares, or releases unused, of the XCTest runner for remaining steps.
129129

130130
**Daemon RPC protocol version**:
131131
The integer that detects breaking compatibility across the remote daemon boundary.

packages/capture-kit/package.json

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@
2626
"types": "./src/ios-snapshot-acquisition.ts",
2727
"default": "./src/ios-snapshot-acquisition.ts"
2828
},
29-
"./ios-snapshot-planning": {
30-
"types": "./src/ios-snapshot-planning.ts",
31-
"default": "./src/ios-snapshot-planning.ts"
32-
},
3329
"./ios-snapshot-engine": {
3430
"types": "./src/ios-snapshot-engine/index.ts",
3531
"default": "./src/ios-snapshot-engine/index.ts"
3632
},
33+
"./ios-snapshot-planning": {
34+
"types": "./src/ios-snapshot-planning.ts",
35+
"default": "./src/ios-snapshot-planning.ts"
36+
},
3737
"./mobile-snapshot-semantics": {
3838
"types": "./src/mobile-snapshot-semantics.ts",
3939
"default": "./src/mobile-snapshot-semantics.ts"
@@ -62,6 +62,14 @@
6262
"types": "./src/png-worker-client.ts",
6363
"default": "./src/png-worker-client.ts"
6464
},
65+
"./post-gesture-stability": {
66+
"types": "./src/post-gesture-stability.ts",
67+
"default": "./src/post-gesture-stability.ts"
68+
},
69+
"./react-native-overlay": {
70+
"types": "./src/react-native-overlay.ts",
71+
"default": "./src/react-native-overlay.ts"
72+
},
6573
"./screenshot-density": {
6674
"types": "./src/screenshot-density.ts",
6775
"default": "./src/screenshot-density.ts"
@@ -70,6 +78,10 @@
7078
"types": "./src/screenshot-diff-pixels.ts",
7179
"default": "./src/screenshot-diff-pixels.ts"
7280
},
81+
"./screenshot-overlay": {
82+
"types": "./src/screenshot-overlay.ts",
83+
"default": "./src/screenshot-overlay.ts"
84+
},
7385
"./snapshot-desktop-projection": {
7486
"types": "./src/snapshot-desktop-projection.ts",
7587
"default": "./src/snapshot-desktop-projection.ts"
File renamed without changes.
File renamed without changes.

src/snapshot/__tests__/screenshot-overlay-android.test.ts renamed to packages/capture-kit/src/screenshot-overlay-android.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import assert from 'node:assert/strict';
22
import { test } from 'vitest';
33
import type { SnapshotNode } from '@agent-device/kernel/snapshot';
4-
import { makeSnapshotState } from '../../__tests__/test-utils/snapshot-builders.ts';
4+
import { makeSnapshotState } from './snapshot-state.fixtures.ts';
55
import {
66
isAndroidUnlabeledClickableSource,
77
resolveAndroidOverlaySourceRect,
8-
} from '../screenshot-overlay/android.ts';
8+
} from './screenshot-overlay-android.ts';
99

1010
const SCREEN = { x: 0, y: 0, width: 1080, height: 1920 };
1111

src/snapshot/screenshot-overlay/android.ts renamed to packages/capture-kit/src/screenshot-overlay-android.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { Rect, SnapshotNode, SnapshotState } from '@agent-device/kernel/snapshot';
22
import { isViewportRootNode, normalizeType } from '@agent-device/contracts/snapshot';
3-
import { hasPositiveRect, rectArea, rectContains, unionRects } from './rects.ts';
3+
import { hasPositiveRect, rectArea, rectContains, unionRects } from './screenshot-overlay-rects.ts';
44

55
/**
66
* Android overlay policy (#1983): which Android nodes earn an overlay ref, and what rectangle

src/daemon/screenshot-overlay-draw.ts renamed to packages/capture-kit/src/screenshot-overlay-draw.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { Rect, ScreenshotOverlayRef } from '@agent-device/kernel/snapshot';
2-
import type { PNG } from '@agent-device/capture-kit/png';
3-
import { clamp } from '../snapshot/screenshot-overlay/rects.ts';
2+
import type { PNG } from './png.ts';
3+
import { clamp } from './screenshot-overlay-rects.ts';
44

55
/**
66
* Rasterizing one overlay ref onto a decoded PNG: border, badge, and the bitmap glyphs the badge
File renamed without changes.

0 commit comments

Comments
 (0)