Files
Kagura da84782969 fix(extension): serialize tab group creation to prevent duplicates (fixes #1692) (#1693)
* fix(extension): serialize tab group creation to prevent duplicates (fixes #1692)

Add per-role groupPromise serialization to ensureOwnedContainerTabGroup(),
preventing concurrent callers from each creating a new tab group when they
simultaneously observe no existing group.

The fix mirrors the existing promise serialization pattern used by
ensureOwnedContainerWindow(). When a second caller arrives while group
creation is in-flight, it awaits the first call's promise, then finds the
newly created group via the existing getOwnedContainerGroupId() cache path.

* test(extension): cover concurrent tab group creation

* fix(extension): queue tab group serialization waiters

---------

Co-authored-by: jackwener <jakevingoo@gmail.com>
2026-05-20 19:36:31 +08:00
..
2026-05-03 23:14:37 +08:00
2026-05-14 19:36:41 +08:00
2026-05-14 19:36:41 +08:00
2026-05-03 23:14:37 +08:00
2026-05-03 23:14:37 +08:00
2026-05-03 23:14:37 +08:00

OpenCLI Browser Bridge Extension

The extension connects Chrome tabs to the local OpenCLI daemon. It uses Chrome extension APIs only as a transport and browser-control layer for explicit CLI commands.

Permission Notes

  • debugger: sends CDP commands to OpenCLI-controlled or bound tabs.
  • tabs / tabGroups: manages the dedicated OpenCLI automation container and reports selected tab metadata back to the CLI.
  • cookies: reads cookies for browser-backed adapters that need authenticated fetches.
  • downloads: surfaces download lifecycle to opencli browser wait download. The extension observes started / in-progress / completed / failed downloads so the CLI can wait for a file triggered by an automation command. OpenCLI filters by the command's filename/URL pattern and timeout, and does not modify, redirect, or persist browser download history.

Suggested Chrome Web Store justification for downloads:

This extension uses chrome.downloads to surface download lifecycle (started / in-progress / completed / failed) to the OpenCLI command-line tool, so agents can wait for downloads triggered during an automation workflow. The command filters by a user-provided filename or URL pattern and timeout. We do not modify, redirect, or persist user download history.