mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-02 11:45:20 +02:00
chore: bump version and changelog (v0.12.1.0)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,31 @@
|
||||
# Changelog
|
||||
|
||||
## [0.12.1.0] - 2026-03-26 — Smarter Browsing: Network Idle, State Persistence, Iframes
|
||||
|
||||
Every click, fill, and select now waits for the page to settle before returning. No more stale snapshots because an XHR was still in-flight. Chain accepts pipe-delimited format for faster multi-step flows. You can save and restore browser sessions (cookies + open tabs). And iframe content is now reachable.
|
||||
|
||||
### Added
|
||||
|
||||
- **Network idle detection.** `click`, `fill`, and `select` auto-wait up to 2s for network requests to settle before returning. Catches XHR/fetch triggered by interactions. Uses Playwright's built-in `waitForLoadState('networkidle')`, not a custom tracker.
|
||||
|
||||
- **`$B state save/load`.** Save your browser session (cookies + open tabs) to a named file, load it back later. Files stored at `.gstack/browse-states/{name}.json` with 0o600 permissions. V1 saves cookies + URLs only (not localStorage, which breaks on load-before-navigate). Load replaces the current session, not merge.
|
||||
|
||||
- **`$B frame` command.** Switch command context into an iframe: `$B frame iframe`, `$B frame --name checkout`, `$B frame --url stripe`, or `$B frame @e5`. All subsequent commands (click, fill, snapshot, etc.) operate inside the iframe. `$B frame main` returns to the main page. Snapshot shows `[Context: iframe src="..."]` header. Detached frames auto-recover.
|
||||
|
||||
- **Chain pipe format.** Chain now accepts `$B chain 'goto url | click @e5 | snapshot -ic'` as a fallback when JSON parsing fails. Pipe-delimited with quote-aware tokenization.
|
||||
|
||||
### Changed
|
||||
|
||||
- **Chain post-loop idle wait.** After executing all commands in a chain, if the last was a write command, chain waits for network idle before returning.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Iframe ref scoping.** Snapshot ref locators, cursor-interactive scan, and cursor locators now use the frame-aware target instead of always scoping to the main page.
|
||||
- **Detached frame recovery.** `getActiveFrameOrPage()` checks `isDetached()` and auto-recovers.
|
||||
- **State load resets frame context.** Loading a saved state clears the active frame reference.
|
||||
- **elementHandle leak in frame command.** Now properly disposed after getting contentFrame.
|
||||
- **Upload command frame-aware.** `upload` uses the frame-aware target for file input locators.
|
||||
|
||||
## [0.12.0.0] - 2026-03-26 — Headed Mode + Sidebar Agent
|
||||
|
||||
You can now watch Claude work in a real Chrome window and direct it from a sidebar chat.
|
||||
|
||||
@@ -80,17 +80,14 @@ May replace `/setup-browser-cookies` for most use cases since the user's real co
|
||||
**Effort:** S
|
||||
**Priority:** P3
|
||||
|
||||
### State persistence
|
||||
### State persistence — SHIPPED
|
||||
|
||||
**What:** Save/load cookies + localStorage to JSON files for reproducible test sessions.
|
||||
~~**What:** Save/load cookies + localStorage to JSON files for reproducible test sessions.~~
|
||||
|
||||
**Why:** Enables "resume where I left off" for QA sessions and repeatable auth states.
|
||||
`$B state save/load` ships in v0.12.1.0. V1 saves cookies + URLs only (not localStorage, which breaks on load-before-navigate). Files at `.gstack/browse-states/{name}.json` with 0o600 permissions. Load replaces session (closes all pages first). Name sanitized to `[a-zA-Z0-9_-]`.
|
||||
|
||||
**Context:** The `saveState()`/`restoreState()` helpers from the handoff feature (browser-manager.ts) already capture cookies + localStorage + sessionStorage + URLs. Adding file I/O on top is ~20 lines.
|
||||
|
||||
**Effort:** S
|
||||
**Priority:** P3
|
||||
**Depends on:** Sessions
|
||||
**Remaining:** V2 localStorage support (needs pre-navigation injection strategy).
|
||||
**Completed:** v0.12.1.0 (2026-03-26)
|
||||
|
||||
### Auth vault
|
||||
|
||||
@@ -102,14 +99,13 @@ May replace `/setup-browser-cookies` for most use cases since the user's real co
|
||||
**Priority:** P3
|
||||
**Depends on:** Sessions, state persistence
|
||||
|
||||
### Iframe support
|
||||
### Iframe support — SHIPPED
|
||||
|
||||
**What:** `frame <sel>` and `frame main` commands for cross-frame interaction.
|
||||
~~**What:** `frame <sel>` and `frame main` commands for cross-frame interaction.~~
|
||||
|
||||
**Why:** Many web apps use iframes (embeds, payment forms, ads). Currently invisible to browse.
|
||||
`$B frame` ships in v0.12.1.0. Supports CSS selector, @ref, `--name`, and `--url` pattern matching. Execution target abstraction (`getActiveFrameOrPage()`) across all read/write/snapshot commands. Frame context cleared on navigation, tab switch, resume. Detached frame auto-recovery. Page-only operations (goto, screenshot, viewport) throw clear error when in frame context.
|
||||
|
||||
**Effort:** M
|
||||
**Priority:** P4
|
||||
**Completed:** v0.12.1.0 (2026-03-26)
|
||||
|
||||
### Semantic locators
|
||||
|
||||
|
||||
Reference in New Issue
Block a user