Conversation
Replace the single-extension relay restriction with isolated per-profile runtimes, persistent installation identities and labels, and explicit CLI/MCP selection. Keep target and RPC IDs, reconnect cleanup, recording, and session ownership isolated so accounts cannot be silently switched. Migrate legacy sessions only using exact target evidence or explicit targetless selection; preserve all profile catalogs on shutdown. Verified typecheck, CLI/extension builds, all existing suite cases with failed/affected groups rerun after fixes, and added collision, migration, disconnect, and persistence cases. Live Helium checks ran parallel executes in the original and Rebase Accounts profiles with separate page titles/state, rejected ambiguous and conflicting selectors, and recovered the Rebase label after relay restart. Full browser smoke suite not run. Record transient profile-specific reconnect waiting as a follow-up. Preserve pre-existing documentation edits and untracked todos.
Preserve upstream RelayShutdown admission/draining/cancellation, RootTargetLifecycle reconciliation, CdpRuntime identity guards, and exactly pinned Effect cohort. Aggregate safe restart across all profiles while retaining isolated RPC/targets and durable session migration. Replace the old single-runtime shutdown integration rather than weakening newer root-health or raw-client protections. Make existing smoke/lifecycle drivers select the intended profile and explicitly restore legacy sessions. Verified strict unused-locals typecheck, Knip, 749 tests across 55 files, standalone runtime preparation (CLI/extension builds, packaged SDK, CLI and MCP validation), and the installed-artifact lifecycle mechanism check against an upstream 0.6.0 baseline. Static review found no lost upstream shutdown safeguards. Live updated-browser verification follows local deployment.
Include the existing Manifest V3 storage permission in the strict Chrome Web Store packaging allowlist. Multi-profile installation IDs and labels require chrome.storage.local; keep all other permission and host-permission checks unchanged. Reproduced GitHub CI's manifest-allowlist rejection locally, then verified pnpm package:extension succeeds and all four extension package tests pass.
R44VC0RP
marked this pull request as ready for review
September 5, 2026 16:55
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.
Summary
Allow multiple Chromium browser profiles to stay connected to one Browser Control relay simultaneously, with explicit profile selection and persistent session pinning.
profile list,profile name, CLI--profile/BROWSER_CONTROL_PROFILE, and MCPprofileIdselection.Upstream integration
Merged current upstream
main(e0f6176, 0.6.0) without rewriting history. The integration preserves the lifecycle, root-health, and reconciliation safeguards from #69 and #70 and the exactly pinned Effect dependency cohort from #71.One shared
RelayShutdowncoordinates every profile's session drain, native work, raw-CDP/recording blockers, root reconciliation, and final catalog persistence. Each profile retains upstreamRootTargetLifecycle,CdpRuntime, and private CDP pool transitions. Cancellation resumes admission across profiles.The branch deliberately excludes unrelated local recording changes, investigation notes, and uncommitted files. Those remain local only.
Verification
pnpm check:locals,pnpm check:unused, and all 749 tests across 55 files passed.pnpm runtime:preparepassed: CLI/extension builds, packaged SDK checks, pnpm consumer dependency validation, CLI validation, and MCP handshake/tool/skill validation.pnpm runtime:check-lifecyclepassed against standalone upstream 0.6.0 and integrated candidate artifacts, including explicit restart attribution and exact-target legacy session restoration.storagepermission in its strict reviewed allowlist; all four package tests passed.986ba95, including all 749 tests, both builds, Chrome Web Store packaging, and standalone runtime validation.Known follow-up
Immediately after a relay restart, a named-profile request can return
profile-not-foundwhile that profile reconnects, because the generic readiness wait may already be satisfied by another profile. Retrying afterprofile listshows the connection succeeds. Add profile-specific startup waiting during integration; the current behavior fails closed and does not route commands to the wrong account.