From 72267e27f117cea438d9c32bdb257c2b1c57b430 Mon Sep 17 00:00:00 2001 From: mcfn Date: Wed, 22 Apr 2026 15:39:08 +0800 Subject: [PATCH] chore(changesets): simplify entries to one sentence each MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per junliang review on PR #590: shorten each changeset to a single sentence and drop multi-paragraph explanations. Descriptive detail belongs in the linked PRs and docs, not the release notes. Pre-existing cli-hyperbrowser-proxy-country.md and .changeset/config.json left untouched — the "Thanks @author!" prefix comes from the @changesets/changelog-github generator and is controllable only via config, flagged for junliang's call. --- .changeset/cli-browser-close-idempotent.md | 2 +- .changeset/cli-cdp-error-taxonomy.md | 4 +--- .changeset/cli-daemon-sweep-empty-session-dirs.md | 2 +- .changeset/cli-eval-file-stdin-sources.md | 2 +- .changeset/cli-eval-structured-error-codes.md | 2 +- .changeset/cli-har-truncation-signal.md | 2 +- .changeset/cli-session-reuse-collapse.md | 4 +--- .changeset/cli-wait-network-idle-edge-triggered.md | 2 +- 8 files changed, 8 insertions(+), 12 deletions(-) diff --git a/.changeset/cli-browser-close-idempotent.md b/.changeset/cli-browser-close-idempotent.md index 6dd283ebc..d0b4b2a0a 100644 --- a/.changeset/cli-browser-close-idempotent.md +++ b/.changeset/cli-browser-close-idempotent.md @@ -2,4 +2,4 @@ "@actionbookdev/cli": patch --- -`browser close` is now idempotent. When the target session is already gone (never started, or closed by another caller), the command returns success with `meta.warnings: ["SESSION_ALREADY_GONE: ..."]` instead of a fatal error. Cleanup scripts can call `browser close` unconditionally without having to first check session existence. A concurrent close for the same session still returns the fatal `SESSION_CLOSING` code (unchanged). +`browser close` is idempotent — when the session is already gone it returns ok with `meta.warnings: ["SESSION_ALREADY_GONE: ..."]` instead of a fatal error. diff --git a/.changeset/cli-cdp-error-taxonomy.md b/.changeset/cli-cdp-error-taxonomy.md index e535e3881..f91b908be 100644 --- a/.changeset/cli-cdp-error-taxonomy.md +++ b/.changeset/cli-cdp-error-taxonomy.md @@ -2,6 +2,4 @@ "@actionbookdev/cli": minor --- -Structured CDP error taxonomy. CDP failures now surface through a fixed set of codes in `error.code` — `CDP_NAV_TIMEOUT`, `CDP_NOT_INTERACTABLE`, `CDP_NODE_NOT_FOUND`, `CDP_TARGET_CLOSED`, `CDP_PROTOCOL_ERROR`, `CDP_GENERIC` — each with a stable `retryable` flag and `error.details` containing `cdp_code` (upstream numeric code) and `reason` (raw message). Replaces the previous single `CDP_ERROR` literal for classified cases. - -Behavior change: `CDP_NAV_TIMEOUT` and `CDP_TARGET_CLOSED` now report `retryable: true` (previously all CDP errors were `retryable: false`). Callers that key retry decisions off the envelope's `retryable` flag should verify the new behavior matches their expectations. Fifteen-plus hand-crafted `CDP_ERROR` literals remain as a legacy fallback and will migrate in a follow-up. +CDP errors surface as six classified codes (`CDP_NAV_TIMEOUT`, `CDP_NOT_INTERACTABLE`, `CDP_NODE_NOT_FOUND`, `CDP_TARGET_CLOSED`, `CDP_PROTOCOL_ERROR`, `CDP_GENERIC`), with `CDP_NAV_TIMEOUT` and `CDP_TARGET_CLOSED` now `retryable: true`. diff --git a/.changeset/cli-daemon-sweep-empty-session-dirs.md b/.changeset/cli-daemon-sweep-empty-session-dirs.md index 811ca6fe8..2fb80927a 100644 --- a/.changeset/cli-daemon-sweep-empty-session-dirs.md +++ b/.changeset/cli-daemon-sweep-empty-session-dirs.md @@ -2,4 +2,4 @@ "@actionbookdev/cli": patch --- -Daemon now sweeps empty session directories and stale `__fetch_*.json` files at start and stop. Prevents `~/.actionbook/sessions/` from accumulating orphan directories when sessions exit abnormally. +Daemon sweeps empty session directories and stale `__fetch_*.json` files at start and stop. diff --git a/.changeset/cli-eval-file-stdin-sources.md b/.changeset/cli-eval-file-stdin-sources.md index 5c488e8d9..c107b37be 100644 --- a/.changeset/cli-eval-file-stdin-sources.md +++ b/.changeset/cli-eval-file-stdin-sources.md @@ -2,4 +2,4 @@ "@actionbookdev/cli": minor --- -`browser eval` now accepts expression input from a file via `--file ` or from stdin when the positional expression is omitted. Existing positional-arg usage is unchanged. Useful for evaluating multi-line scripts without escaping them on the shell. +`browser eval` accepts expressions from `--file ` or stdin when no positional expression is given. diff --git a/.changeset/cli-eval-structured-error-codes.md b/.changeset/cli-eval-structured-error-codes.md index 478958241..267da1ce5 100644 --- a/.changeset/cli-eval-structured-error-codes.md +++ b/.changeset/cli-eval-structured-error-codes.md @@ -2,4 +2,4 @@ "@actionbookdev/cli": minor --- -`browser eval` now returns a structured error envelope with an `EvalErrorCode` taxonomy in `error.code`: `EVAL_COMPILE_ERROR`, `EVAL_RUNTIME_ERROR`, `EVAL_TIMEOUT`, `EVAL_SERIALIZATION_ERROR`, `EVAL_INVALID_INPUT`. The raw V8 reason and line/column offsets are preserved under `error.details`. Replaces the previous free-form error message so callers can branch on the code instead of string-matching. +`browser eval` returns structured error codes (`EVAL_COMPILE_ERROR`, `EVAL_RUNTIME_ERROR`, `EVAL_TIMEOUT`, `EVAL_SERIALIZATION_ERROR`, `EVAL_INVALID_INPUT`) with the raw V8 reason preserved in `error.details`. diff --git a/.changeset/cli-har-truncation-signal.md b/.changeset/cli-har-truncation-signal.md index c1ca831c2..e2743d7e4 100644 --- a/.changeset/cli-har-truncation-signal.md +++ b/.changeset/cli-har-truncation-signal.md @@ -2,4 +2,4 @@ "@actionbookdev/cli": minor --- -HAR truncation now surfaces explicitly in the `browser network har stop` envelope. When the FIFO ring buffer dropped older entries, the response adds `meta.truncated: true`, `meta.warnings: ["HAR_TRUNCATED: N earlier entries dropped (max_entries=M); raise --max-entries or stop recording sooner to keep the full trace"]`, and `data.max_entries` (the configured cap). Clean stops emit no truncation marker. `DEFAULT_MAX_ENTRIES` is bumped from 2000 to 10000 so longer interactive sessions fit without truncation. +`browser network har stop` surfaces truncation via `meta.truncated` / `meta.warnings` / `data.max_entries`, and `DEFAULT_MAX_ENTRIES` is raised from 2000 to 10000. diff --git a/.changeset/cli-session-reuse-collapse.md b/.changeset/cli-session-reuse-collapse.md index 2ee3470ad..a888cc4cb 100644 --- a/.changeset/cli-session-reuse-collapse.md +++ b/.changeset/cli-session-reuse-collapse.md @@ -2,6 +2,4 @@ "@actionbookdev/cli": minor --- -`browser start --set-session-id ` is now get-or-create (functional alias for `--session `). Previously it always created a new session and failed with `SESSION_ALREADY_EXISTS` when the ID was already running; scripts calling it twice for idempotent attach had to handle that error. Both flags now reuse a Running session with the given ID or create one if not found. - -When reusing, passing `--profile ` that does not match the session's bound profile fails with the new `SESSION_PROFILE_MISMATCH` error code (retryable: false). `error.hint` explains the required profile; `error.details` includes `session_id`, `bound_profile`, and `requested_profile`. Omit `--profile` or pass the matching value to reuse successfully. +`browser start --set-session-id` is get-or-create (alias for `--session`); reusing with a conflicting `--profile` returns the new `SESSION_PROFILE_MISMATCH` error code. diff --git a/.changeset/cli-wait-network-idle-edge-triggered.md b/.changeset/cli-wait-network-idle-edge-triggered.md index 90a00e89f..0fb92c7b2 100644 --- a/.changeset/cli-wait-network-idle-edge-triggered.md +++ b/.changeset/cli-wait-network-idle-edge-triggered.md @@ -2,4 +2,4 @@ "@actionbookdev/cli": patch --- -`wait network-idle` is now edge-triggered: pre-existing long-lived connections at the start of the wait (websockets, long-poll requests that opened before the command ran) are ignored. Previously these could keep the wait from ever resolving on pages with persistent background traffic. +`wait network-idle` is edge-triggered: long-lived connections opened before the wait started are ignored.