Repository navigation
fix: review of #21 — one browser per session, real DPR for maxWidth, GIF follows replaced tab - #22
Merged
Merged
Conversation
|
ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…dth, GIF follows replaced tab - Multi-browser: an "auto" session is pinned to the browser its first call went to. A browser connecting mid-session no longer takes over its calls (a batch did click in "work" then type in "home" with the same tabId). If the pinned browser disconnects, calls fail with a clear error instead of switching silently; browser_select_browser re-pins. - Screenshot maxWidth at DPR 2: real Chrome reports equal device and CSS viewport widths, so the ratio came out 1 and maxWidth 800 gave 1600 px. Read window.devicePixelRatio, and if the image is still wider than maxWidth, re-capture once scaled by the real image size. - GIF: replaceFrozenTab moves the recording to the new tab id (frames keep coming; the router records on replacedTabId's successor), and status/stop/export resolve the old id without needing the closed tab. Tests: 4 new, all failing on the old code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…failed select, frame on recovery navigate - Router: a browser_gif call naming a replaced tab is rewritten to the replacement id BEFORE the lock check and per-tab queue, so another session can't stop/clear/export/capture a locked replacement via the old id. - browser_select_browser: a failed selection no longer drops the auto pin (the next call used to run in the newest browser with the old browser's tab ids). - Frozen-tab recovery navigate (mutex-bypass path) records a frame of the replacement tab, queued on its mutex. Tests: 3 new, failing on the old code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Fixes the 3 issues from the post-merge review of #21.
autosession is now pinned to the browser its first call went to (bridge-connections.ts), so batches and retries stay in one browser. If that browser disconnects, calls fail with a clear error instead of switching silently.browser_select_browserre-pins.maxWidthat DPR 2.window.devicePixelRatio, because real Chrome reports equal device and CSS viewport widths.maxWidth, it is captured once more, scaled by the real image size.replaceFrozenTabmoves the recording to the new tab id, and the router records on the replacement.status/stop/exportresolve the old id without looking up the closed tab.Test plan
🤖 Generated with Claude Code