Repository navigation
Conversation
A Limrun iPhone reports a native UITabBar as one childless Group along the viewport's bottom edge, so snapshots had no tabs to press. Limrun's elementTree(point) hit-test does return the tab buttons. The snapshot adapter now probes a bounded row of points across such a bar, in parallel, and publishes the distinct TabButton hits as its children, applying the Apple runner's collapsed tab container rule. Fixes #3992 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
There was a problem hiding this comment.
All reported issues were addressed across 5 files
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
|
Size Report
Startup median (7 runs, lower is better):
|
Review round 1 on #4019. - A candidate whose hit-tests find no tabs no longer hides a later one. One 24-probe budget spans every candidate; each gets at least one probe per 44 pt. - Expansion is all or nothing. A rejected hit-test, or one slower than 1.5 s, keeps that bar as reported and adds a typed `collapsed-tab-bar-probe-failed` residue, which the snapshot presents as a warning. A partial tab set would look complete. - The container, candidate and row geometry now lives in contracts/fixtures/ios-collapsed-tab-geometry.json, read by both the Limrun tests and the runner's XCTest; the runner's row check moves to `collapsedTabRowFits` for that. - The fixture carries all five live test-app tabs; a landscape case is added. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 13 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
Review round 1 on #4019, second Cubic pass, plus the R73 layering fix. - Candidates are probed most tab-bar-like first: a tab bar's height (44-100 pt), then the lowest top edge. The tree's label is not used. - Each candidate gets an even share of the probes left, raised to one probe per 44 pt, so a decoy cannot spend the whole budget. - When the budget runs out before a candidate is confirmed, the snapshot carries the same typed residue with reason `budget-exhausted`. - The provider now reports `collapsedTabBarProbeFailure` and capture-kit derives the residue, as R73 requires. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 7 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The code needs one live check before merge. At 4558c85 the 1.5 s probe timeout could leave real Limrun iPhone snapshots without the tabs. CI is green (21 checks, none failing), and there are no conflicts. The only live run in the PR body is at b4651d6. That commit had no 1.5 s race, no candidate ranking and no budget sharing. The head fires 13 Not blocking, take or leave: a childless Group of at least 160 pt docked along the sides and bottom is a candidate whatever its height, so a budget-exhausted result can warn "retry the snapshot" when no tab bar exists (for example a wide bottom strip on iPad). You could report budget exhaustion only for candidates with a tab-bar height (44-100 pt), or drop "Retry the snapshot" from that wording. Also, each snapshot with such a Group sends about 13 hit-tests and there is no cache, so reporting the added latency in the live run would help. Of the other review threads, the five from cubic-dev-ai (tab fixtures, rejection handling, probe midline test, budget sharing and the doc comment) are fixed at this head, so they can be resolved. No other thread still applies. I could not tell whether Limrun's device server runs concurrent hit-tests in parallel, and I did not run the TS or Swift tests locally. The next step before merge is the live run above at 4558c85. |
…ates A wide bottom strip outside the tab-bar height range, such as a home indicator area on iPad, no longer adds a budget-exhausted residue when no tab bar exists. The budget-exhausted warning no longer suggests a retry, which cannot change a deterministic result. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 5 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Live check done at 5e8c71d. fa03636 on top of it changes comments only. Setup: Limrun iPhone 16 Pro, iOS 26.4 (402×874), the test app's Release build with a native Probe batch:
CLI at the head, same instance, attached through
The instance is deleted. Your take-or-leave note: applied in 5e8c71d. Budget exhaustion is now reported only when an unreached candidate has a tab-bar height (44–100 pt), so a 20 pt bottom strip 1194 pt wide gives no warning. A 50 pt bar of the same width still reports one. The Gate: |
|
The code looks good at fa03636. The earlier review at 4558c85 asked for live evidence and doc fixes. The comment fixes are in, and the live Limrun run is now reported at 5e8c71d (batch wall time 155-157 ms, tabs listed, press by label). I could not reproduce that run without a Limrun instance, and I did not run the TS tests or check:affected locally. I read the earlier code to confirm the new strip test would have failed before the change. CI is green: 21 checks, 0 not passing. There are no conflicts. Not blocking, take or leave: the warning suffix in packages/capture-kit/src/snapshot/ios-snapshot-runtime.ts#L111 now depends on entry.reason (no "Retry the snapshot." for budget-exhausted), but no test asserts the presented warning text, so inverting the condition keeps every test green. A check of the full presented warning through presentIosSnapshotAcquisition for one budget-exhausted case and one timed-out or rejected case would cover it. Both P3 threads from cubic-dev-ai are fixed at this commit, so please resolve them: contracts/src/ios-snapshot.ts now lists rejected, timed-out and budget-exhausted with their conditions (#4019 (comment)), and provider-limrun/src/ios-collapsed-tab-bar.ts now names each probeFailure value and its condition (#4019 (comment)). |
Summary
On a Limrun iPhone, a native
UITabBararrives fromelementTree()as one childlessGroup "Tab Bar", sosnapshothad no tabs. The adapter now hit-tests across it withelementTree(point)and publishes the tabs as its children, with labels, frames and selected state.Groups docked along the bottom edge, ranked by tab-bar height (44–100 pt), then lowest top edge.TabButtonhits passing the runner's rule; geometry shared viacontracts/fixtures/ios-collapsed-tab-geometry.json.collapsed-tab-bar-probe-failed(rejected,timed-out,budget-exhausted), shown as a warning. Exhaustion is reported only for tab-bar-sized candidates.iPhone scope: a bar wider than 1,056 pt reports
budget-exhaustedbefore any probe. #3967 edits the same call; on rebase, probes use its source option.Fixes #3992
Validation
provider-limrunandcapture-kittests passed.snapshot --jsonlists Home*, Catalog, Form, Audio, Settings underTab Bar, no tab-bar warning, 925–991 ms.press label="Catalog"then shows Catalog selected.check:affected --run --head fa03636: passed,exactCommit: true.🤖 Generated with Claude Code