Repository navigation
feat: make browser control reusable on dynamic pages - #530
Merged
Merged
Conversation
Publish initial control policy and refs only after a successful sync, preserving concurrent observations. Reduce readiness polling to target checks while keeping final dispatch fences, and preserve selector provenance in successful receipts. Cover hidden blur, negotiation and observation overlap, Unicode limits, compatible-peer guidance, and shared action schemas with regression tests.
Apply device setup on the initial blank tab before opening the responsive fixture. Keep exact viewport, execution and cleanup assertions, and cover failed setup without navigation. Retain loaded-page emulation coverage with real Chrome tests through strict and target control, including responsive text, viewport, touch and user-agent checks.
2 tasks done
…ser-control # Conflicts: # apps/extension/src/cooperation/controller.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dynamic page updates and supplementary observations can invalidate the context for the next action. This change lets callers inspect a page, refine a decision, and perform multiple DOM-targeted actions with one control receipt while preserving human takeover and input dispatch checks.
Behavior
auto/target/strictpolicies. Publish the initial policy and refs only after a successful sync. Failed or overlapping initialization cannot overwrite an accepted policy or rebind issued refs.expectconditions without comparing the whole page. Scripts, untargeted keys, visual actions and displacement-only drags require an explicit, single-use observation. Protect relevant prices, record IDs and action text explicitly; a stable node does not imply unchanged business facts.blurdoes not wait for visibility. No fixed delays or automatic action replay were added.Review fixes
main, retaining the completed-action handling and avoiding a duplicate unguarded post-action collection.attribute equals null;exists:falseremains valid. A failed action check remains latched through handler fallbacks, so a price changing back cannot cause input after a refusal. Initial readiness retries retain their existing behavior.effect_state:none, allowing callers to select a new target without reconciling an unsent action.Compatible protocol 1.x peers at version 1.8 or later are required for target control and conditions. Older extensions require explicit strict policy; conditions are never silently dropped. Auto keeps its existing acknowledgement requirement. Browser preconditions are not server transactions, and a completed input receipt does not establish application-level business success. Reconcile uncertain outcomes before another action.
Validation
Validation was repeated on the merged tree:
The full installed cooperation eval is not fully passing. On Chrome 156 it timed out in the foreground responsive fixture while the renderer reported hidden; the merged pre-fix revision reproduced the same failure. The isolated CLI/DSH compatibility suite passed. On Chrome for Testing 145, the full run failed an unrelated-tab visibility assertion (
hiddeninstead ofvisible), while its expected untouched value and click count matched. These failures remain recorded; the full suite is not reported as green.Validation limits
Browser validation uses isolated Chrome 156 and Chrome for Testing 145 with local fixtures; it does not establish compatibility with the reported production business website or provide semantic toast history.
The first Rust workspace run failed one existing
auto_spawndaemon-stop assertion. The isolated test and final complete workspace run passed without changing that path or its assertions. The initial failure is retained in the validation record; its cause was not established.The initial full cooperation eval timed out waiting for responsive text on a hidden page, although the actual viewport was 390 pixels and the media query had switched. The merged pre-fix revision reproduced the same failure; an extension-free Chrome reproduction also delayed the resize listener until the page was shown. The full Chrome 156 run remains a validation limitation. No emulation production logic, event delivery, assertions or timeouts were changed to make this test pass.