Skip to content

Releases: lyd123qw2008/pi-control-chrome

v0.8.0 — generic MCP surface and durable browser reads

Choose a tag to compare

@lyd123qw2008 lyd123qw2008 released this 18 Sep 18:06
a6d6680

Highlights

  • Renamed the local MCP adapter from codex/ to mcp/. The published package keeps both the ./codex/mcp-server.mjs export and pi-control-chrome-codex executable as compatibility aliases, and adds pi-control-chrome-mcp.
  • Generic MCP clients now receive the complete 44-operation browser catalog by default. Codex remains intentionally bounded to 13 model-visible tools through the named PI_CONTROL_CHROME_TOOLS=codex mode in .mcp.json.
  • Unscoped snapshots now sample a still-loading top-level document briefly: a settled follow-up carries settleSamples; a coherent result that remains loading carries unsettled: true. Selector-scoped snapshots retain caller-owned readiness.
  • The root and bundled DSH Skills are synchronized, including the new snapshot contract and the mcp/ adapter location.

Published surfaces

Surface Version
Pi root package pi-control-chrome@0.8.0
Manifest V3 extension 0.8.0
DSH companion package @lyd123qw2008/dsh-tool-control-chrome@0.8.0

The root and companion packages were published from commit a6d6680.

Verification

  • CI push gate and Compatibility push gate passed for the exact release commit, including the isolated Chrome/Edge matrix.
  • Root Trusted Publishing and DSH companion Trusted Publishing passed.
  • Registry metadata confirms both root executable entries: pi-control-chrome-mcp and the compatibility alias pi-control-chrome-codex, each targeting mcp/mcp-server.mjs.
  • The reusable Profile update merged as dsh-profile-config#19: its lockfile resolves the DSH companion and transitive root package to 0.8.0.
  • The active DSH Profile now pins pi-control-chrome@0.8.0; its frozen install and composed-profile dump confirm the installed mcp/mcp-server.mjs node-repl provider path.

Upgrade note

The active profile currently consumes pi-control-chrome directly through the node-repl cap.chrome provider, so it intentionally pins the root package rather than mounting the companion DSH plugin. No DSH process was restarted during this release. Restart DSH manually to load the updated active Profile and provider configuration.

v0.6.2 — an inherited tab can actually be closed

Choose a tag to compare

@lyd123qw2008 lyd123qw2008 released this 15 Sep 09:10

v0.6.2 — an inherited tab can actually be closed

Patch release completing what 0.6.1 started. 0.6.1 let close, release and cleanup cross an
extension-runtime generation, but they still compared the live tab fence against the fence stored in
the ownership record — and a replaced runtime cannot reproduce that fence by definition. A real
leftover tab therefore answered BROWSER_TAB_FENCE_CHANGED and stayed unclosable: the same wall one
check deeper. Observed live, the record carried tab:bb6803dd… while the new runtime reported
tab:d0f05bd3….

Closing, releasing or cleaning up an inherited Agent record now identifies the tab by its tabId
plus this session's own ownership record and uses the fence the current runtime actually observes. A
claimed user tab keeps the stricter treatment, and document-bound work still fails closed with
BROWSER_TAB_RUNTIME_INHERITED naming the exit that works.

Versions

Surface Version
pi-control-chrome 0.6.2
extension/manifest.json 0.6.2
@lyd123qw2008/dsh-tool-control-chrome 0.6.2 (depends on pi-control-chrome@^0.6.0)
Codex plugin manifest 0.6.2

Verification

The active DSH Profile links the local checkout, so it needs no reinstall.

v0.6.1 — a read must say what it dropped, and a failure must say what to do

Choose a tag to compare

@lyd123qw2008 lyd123qw2008 released this 15 Sep 08:49

v0.6.1 — a read must say what it dropped, and a failure must say what to do

Patch release: three behaviour fixes found by verifying the 0.6.0 runtime against real pages, plus
the recovery-path fix that came out of the same verification.

Versions

Surface Version
pi-control-chrome 0.6.1
extension/manifest.json 0.6.1
@lyd123qw2008/dsh-tool-control-chrome 0.6.1 (depends on pi-control-chrome@^0.6.0)
Codex plugin manifest 0.6.1

Fixes

  • A second projection no longer erases the first one's omission report. The Bridge renders a
    compact response and a host projects it again; the re-projection recomputed its own omission set,
    so a live Jenkins digest came back as truncated: true with omitted: {} — incomplete, and silent
    about what was missing. Upstream counts and guidance now carry forward, and sequential cuts add up
    because they are measured against different sources. The same page now reports
    omitted {"characters":6886,"controls":225,"regions":1} with a next step and a recovery path.
  • A post-effect wait names the reason it failed. waitForTabState threw a code-less error while
    the other wait path already reported a structured BROWSER_WAIT_TIMEOUT, and the uncertainty
    envelope can only forward a failure that carries a code. A navigate(wait: true) whose page
    redirected (/git → /git/) now reports BROWSER_WAIT_TIMEOUT with postEffectUrlMismatch and
    postEffectLoaded, so a redirect is distinguishable from a changed tab fence. Page URL and title
    stay out of the envelope.
  • A table's shape is no longer read as page data. A chart legend's header row published
    w: Description · % and a single-character placeholder cell published x: x. Header rows and
    one-character labels are now skipped; a real row-header pair still publishes.
  • A session can clean up after its own runtime. A tab this session opened used to become both
    unreadable and unclosable once the extension runtime that recorded it was replaced. Closing it is
    now the calling session's own bookkeeping, browser_release drops the record without touching the
    tab, and browser_cleanup closes inherited Agent tabs. A claimed user tab keeps the stricter
    treatment, and document-bound work still fails closed with BROWSER_TAB_RUNTIME_INHERITED naming
    the exit that works.

Verification

DSH companion package

Correction

The "session can clean up after its own runtime" fix in this release was incomplete: close, release
and cleanup still compared the recorded tab fence, so a real leftover tab could not be closed until
v0.6.2 removed that
comparison. Upgrade to 0.6.2 for the behaviour described above.

v0.6.0 — neutral page digest and retrievable bounded reads

Choose a tag to compare

@lyd123qw2008 lyd123qw2008 released this 15 Sep 08:49

v0.6.0 — neutral page digest and retrievable bounded reads

Back-filled release record: pi-control-chrome@0.6.0 was published to npm on 2026-09-15
from commit 51761c7, but no GitHub Release was created for it at the time.

Versions

Surface Version
pi-control-chrome 0.6.0
extension/manifest.json 0.6.0
@lyd123qw2008/dsh-tool-control-chrome 0.6.0 (depends on pi-control-chrome@^0.6.0)
Codex plugin manifest 0.6.0

Highlights

  • Replaced the ranked Page Map with a neutral page digest: regions in document order, repeated
    containers as counts, no Primary, no key-action ordering — identical DOM yields identical output.
  • Made every bounded read retrievable: omitted counts, nextAction/recommendation, an
    addressable region list, and a shadow-root boundary instead of an empty-looking page.
  • Made truncation mean an incomplete answer and gave a failed semantic target a named next step.
  • Converged Pi, DSH and Codex on one diagnostic contract; browser_status stays small while
    browser_doctor carries the capability map, metrics and recovery detail.
  • Documented the capability-layer/personalization-layer boundary: the plugin owns page structure,
    identity and safety boundaries; a site's DOM shape, workflow and field names belong to the calling
    Skill.

Verification

v0.5.9 — Stable browser automation baseline

Choose a tag to compare

@lyd123qw2008 lyd123qw2008 released this 12 Sep 15:50

pi-control-chrome v0.5.9

Stable Chrome and Edge browser control for Pi, Codex, and DSH through a local Bridge and Manifest V3 extension.

Highlights

  • Added robust browser target lifecycle management with session-scoped leases, connection-generation fencing, reconnect recovery, and fail-closed handling for uncertain operations.
  • Added Chrome/Edge target inventory, explicit browserId routing, Bridge Doctor diagnostics, bounded recovery metrics, and cooperative Bridge restart support.
  • Added real Chromium Accessibility Tree snapshots with bounded full/diff/unchanged output, document-scoped aN refs, AX-first semantic locators, and safe DOM fallback only when AX is unavailable.
  • Added semantic locator and wait support for role/name, label, text, placeholder, test id, URL, visible/hidden/enabled state, plus DOM-CUA and coordinate interactions.
  • Added screenshots, bounded page extraction, Console/pageerror diagnostics, Network inspection, JavaScript dialogs, upload/download, clipboard, native CDP, and interaction probes.
  • Added Codex stdio MCP integration and DSH browser tools with shared lifecycle, target, output-compaction, and recovery semantics.
  • Added isolated Chrome for Testing and Edge E2E coverage, multi-Profile routing tests, and Bridge restart regression coverage.
  • Hardened publishing with exact-commit CI/Compatibility gates, installed-package smoke coverage, stale-run cancellation, and Node 24-compatible GitHub Actions.

Package versions

  • pi-control-chrome@0.5.9 — npm
  • @lyd123qw2008/dsh-tool-control-chrome@0.5.9 — npm
  • Manifest V3 extension version: 0.5.9

DSH plugin

The DSH package now declares a dsh.bundle.patch manifest and ships cordis.patch.yml, so one command mounts it into a Profile:

dsh plugin --profile web add @lyd123qw2008/dsh-tool-control-chrome

Before this release the Profile needed a hand-merged cordis.patch.yml entry.

Verification

CI and Compatibility passed on commit 018cc2aef73f5cbcb6f2fb0e949333ebe83b2488, and the DSH publish workflow published 0.5.9 from that same commit.

v0.3.6

Choose a tag to compare

@lyd123qw2008 lyd123qw2008 released this 25 Aug 03:22
e3a7043

Highlights

  • Publish the post-0.3.5 Pi extension status update.
  • Keep the bundled pi-control-chrome Skill guidance aligned with the DSH /chrome connect and /chrome disconnect lifecycle commands.
  • DSH browser tools now wait for the extension's background reconnect and retry read-only readiness automatically before requesting human connection.
  • Synchronize the package, browser extension manifest, and lockfile at 0.3.6.

Compatibility

  • Pi package, Bridge, and unpacked browser extension: 0.3.6.
  • DSH browser-control package: @lyd123qw2008/dsh-tool-control-chrome@0.3.12.
  • The extension must be manually reloaded when updating an unpacked installation.

Links

v0.3.5

Choose a tag to compare

@lyd123qw2008 lyd123qw2008 released this 24 Aug 11:51
af5cadc

Highlights

  • Gate Pi and DSH browser tools behind the pi-control-chrome Skill.
  • Keep the complete 38-tool browser catalog together; DSH lazyTools: false remains available for eager compatibility.
  • Add the canonical DSH pi-control-chrome Skill registration and Agent-scoped activation.
  • Preserve Bridge target identity, session ownership, browser safety checks, debugger lease reuse, and cleanup behavior.
  • Fix Pi extension startup by deferring active-tool API calls until session_start.
  • Add DSH /chrome connect and /chrome disconnect commands; /chrome status reports Bridge-only readiness, and /chrome restart waits for extension reconnection.

Compatibility

  • Pi package and unpacked browser extension: 0.3.5.
  • DSH browser-control package: @lyd123qw2008/dsh-tool-control-chrome@0.3.9.
  • The extension must be manually reloaded when updating an unpacked installation.

Links

v0.2.4

Choose a tag to compare

@lyd123qw2008 lyd123qw2008 released this 17 Aug 11:51

Full Changelog: v0.2.3...v0.2.4

v0.2.3

Choose a tag to compare

@lyd123qw2008 lyd123qw2008 released this 17 Aug 11:47

Full Changelog: v0.2.2...v0.2.3

v0.2.2

Choose a tag to compare

@lyd123qw2008 lyd123qw2008 released this 17 Aug 11:27