Commit Graph

113 Commits

Author SHA1 Message Date
Sawyer Hood 528064b850 fix: restore BrowserEntry export 2026-03-26 14:35:02 -07:00
Sawyer Hood 9c83e5cbbb chore: dead code cleanup and update CLAUDE.md 2026-03-26 14:15:42 -07:00
Sawyer Hood e000e1398c docs: update changelog for 0.2.3 2026-03-25 15:45:14 -07:00
Sawyer Hood b8e592f134 fix: increase timeout for navigation test on Windows CI v0.2.3 2026-03-25 15:37:23 -07:00
Sawyer Hood afe83d847f chore: bump version to 0.2.3 (#67) 2026-03-25 15:32:16 -07:00
Sawyer Hood 7f94dae877 fix: resolve Windows CI test timeout in sandbox-file-io 2026-03-25 15:17:33 -07:00
BestLux 0817e87dcb feat: add Windows x64 support and npm packaging (#66)
* feat(cli): add Windows IPC and daemon lifecycle support

* feat(release): add Windows x64 packaging and CI

* docs: document Windows installation and verification

* fix(windows): align pipe naming and shutdown detection
2026-03-25 15:08:42 -07:00
Sawyer Hood a5d27d7544 Merge branch 'dev-browser-claude-permissions' into main 2026-03-23 14:34:16 -07:00
Sawyer Hood 6145abc808 docs: add Claude Code permission allowlist instructions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 14:16:58 -07:00
Sawyer Hood 285b1cdad8 release: v0.2.2 v0.2.2 2026-03-20 09:04:02 -07:00
Sawyer Hood a4574acac9 release: v0.2.2 (#60)
* fix: gracefully close all connections on daemon stop

* refactor: extract help text to static file

* fix: install command properly extracts daemon and installs deps

* fix: improve postinstall binary download reliability
2026-03-20 08:59:10 -07:00
Sawyer Hood 207ceea8d9 release: v0.2.1 (#58)
* docs: note Windows is not currently supported

* chore: align marketplace version with package.json

* docs: rewrite CHANGELOG with 0.2.0 as initial CLI release

* docs: remove zero startup cost from README features

* feat: add install-skill interactive command

* chore: add rustfmt and prettier with CI checks

* docs: simplify changelog

* docs: add _snapshotForAI to help output

* docs: expand LLM usage guide in help output

* feat: add --timeout flag for script execution

* feat: add snapshot helper for LLM-friendly page inspection

* docs: document snapshotForAI, remove custom snapshot helper

* docs: add approach guidance to LLM help

* release: v0.2.1
v0.2.1
2026-03-19 15:49:16 -07:00
Sawyer Hood 80880ab0c4 fix: build daemon bundles before Rust compilation in release workflow v0.2.0 2026-03-19 13:25:28 -07:00
Sawyer Hood 83ab897601 release: v0.2.0 2026-03-19 13:24:04 -07:00
Sawyer Hood 9ddbc132a6 feat: dev-browser CLI 2026-03-19 13:21:51 -07:00
Sawyer Hood 66682fb051 Add contributing guide
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 14:53:10 -08:00
tomasrollo cb0a51eb8b Fix the Chrome extension dropping connection to the server (#21)
* Fixed the extension dropping connection to the server

* Only create keep-alive alarm when extension is active

The alarm was being created unconditionally on every service worker
startup, causing unnecessary wake-ups every 30 seconds even when the
extension was disabled. Now the alarm is:

- Created when the extension is enabled (via handleStateChange or init)
- Cleared when the extension is disabled

This avoids wasting resources when the user has turned off the extension.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Tomas Rollo <tomas@Tomass-MacBook-Pro.local>
Co-authored-by: Sawyer Hood <sawyerjhood@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 14:37:30 -08:00
Sawyer Hood f33e9c11b9 Add viewport option to client.page()
Allow users to specify a default viewport size when creating pages,
avoiding the need to manually call setViewportSize() after each page
creation.

Closes #28

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 14:13:03 -08:00
Sawyer Hood eef5d7ecc0 Clarify extension connection status message
Added note about waiting for 'Extension connected' message to confirm
the browser is ready to be controlled.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 14:04:33 -08:00
Sawyer Hood 16987a133f Clarify Chrome extension usage instructions
Split installation and usage into separate sections with clear steps
for activating the extension and asking Claude to connect.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 13:59:31 -08:00
Sawyer Hood b549fb0ecf Improve copy archive/browser-skill-v1.0.0 2025-12-23 11:20:57 -05:00
Sawyer Hood 6207a1374f New note 2025-12-23 11:18:26 -05:00
Sawyer Hood 84cf43a5a8 Better 2025-12-23 11:02:22 -05:00
Sawyer Hood b2cd485ae6 Scraping instructions 2025-12-23 10:19:22 -05:00
Sawyer Hood a0082121ce Add extension installation instructions to README
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 18:24:23 -05:00
Sawyer Hood fede99d338 Condense SKILL.md for better guideline compliance
Reduce documentation from ~350 to ~175 lines by removing redundant
explanations and trusting that Claude already knows TypeScript and
Playwright basics. Keep the TypeScript-in-evaluate warning since
models have actually made that mistake.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:53:06 -05:00
Sawyer Hood a0cca48b7b Clean up wording for skill and extension 2025-12-22 17:04:48 -05:00
Sawyer Hood ef58f5ae4c Add walkthrough documentation for chrome extension feature
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:17:58 -05:00
Sawyer Hood c828e5acb8 Add popup UI with active/inactive toggle for extension
Replace per-tab click-to-connect behavior with a global toggle:
- Add popup with toggle switch to enable/disable extension
- Persist active state to chrome.storage.local across restarts
- Add StateManager service for state persistence
- Add checkConnection() to validate relay is actually reachable
- Poll connection status while popup is open for real-time updates
- Show badge "ON" when extension is active

When inactive, extension does not connect to relay or run CDP commands.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:05:13 -05:00
Sawyer Hood 7012a32595 Auto-activate tab when client fetches page in extension mode
When a client requests a page via POST /pages, the relay sends a
Target.activateTarget CDP command. The extension intercepts this and
uses chrome.tabs.update() to activate the tab, since the CDP command
is not allowed through the debugger API.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 11:04:00 -05:00
Sawyer Hood 5e1ff947db Add tab grouping for dev-browser created tabs
New tabs created by the extension are now automatically added to a
blue "Dev Browser" tab group for better organization.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 10:15:53 -05:00
Sawyer Hood a174718f5d Refactor extension: extract services and add tests
- Split monolithic background.ts (635 lines) into focused services:
  - TabManager: tab state and debugger attachment
  - ConnectionManager: WebSocket lifecycle and reconnection
  - CDPRouter: CDP command routing
  - logger: structured logging utility

- Remove all icon/badge management code (~45 lines)
- Add Vitest testing with WXT's fake-browser mocks
- Add 28 unit tests for all services
- Bump version to 1.0.0
- Add @types/chrome for TypeScript support

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 09:20:08 -05:00
Sawyer Hood 8bfebaf950 Move extension to repository root
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 16:21:25 -05:00
Sawyer Hood ae80968b70 Replace extension icons with custom favicon
Use a single custom favicon for all extension states instead of
state-based colored icons. Removes dynamic icon switching and
simplifies the updateIcons function to only update tooltip text.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 16:20:22 -05:00
Sawyer Hood 88c25fdeef Remove WXT build artifacts from git and improve extension reconnection
- Remove .wxt and .output directories from version control (already gitignored)
- Add auto-reconnect logic to extension background script
- Create tabs automatically in extension mode instead of requiring manual attachment
- Remove unused listUnnamed API and endpoint

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 16:08:11 -05:00
Sawyer Hood c9ead0cd8e Add WXT generated directories to gitignore
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 15:39:36 -05:00
Sawyer Hood f35e53c88e Fix extension mode CDP session handling and page lookup
- Add Target.attachToBrowserTarget handler (returns fake "browser" session)
- Add Target.detachFromTarget handler for "browser" session cleanup
- Add per-client target tracking to prevent duplicate attachedToTarget events
- Fix page lookup in extension mode to avoid newCDPSession corruption
  (newCDPSession was breaking the page's event routing)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-20 18:24:41 -05:00
Sawyer Hood c411a6e0f7 Extension 2025-12-20 17:57:30 -05:00
Sawyer Hood 58c332a7c6 Update language to have more unique names 2025-12-20 16:28:49 -05:00
Sawyer Hood 0845959b22 Make README simpler 2025-12-20 09:37:38 -05:00
Sawyer Hood fc5128f5b6 Migrate from Bun to Node.js/npm (#13)
* Migrate from Bun to Node.js/npm

Replace all Bun-specific commands with Node.js/npm equivalents:
- bun install → npm install
- bun run → npm run
- bun x tsx → npx tsx

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add typescript as devDependency

Required for npx tsc --noEmit to work on fresh installs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Update GitHub Actions to use Node.js/npm

- Replace oven-sh/setup-bun with actions/setup-node@v4
- Use npm ci for deterministic installs
- Add package-lock.json for skills/dev-browser
- Remove @types/bun from root devDependencies

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add root package-lock.json for CI

Required for npm ci in the format check job.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix CI: use npm install for cross-platform compatibility

npm ci fails with platform-specific optional dependencies (rollup)
when the lockfile was generated on a different platform. Using
npm install resolves the correct platform binaries.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix CI: add rollup Linux binary as optional dependency

npm has a known bug where platform-specific optional dependencies
aren't properly resolved when the lockfile was generated on a
different platform. Adding @rollup/rollup-linux-x64-gnu as an
explicit optional dependency ensures it's available on Linux CI.

See: https://github.com/npm/cli/issues/4828

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-20 06:31:27 -08:00
Sawyer Hood 13e470b6f0 Update permissions config with full settings.json example
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-19 08:21:44 -05:00
Sawyer Hood febf09025d Add Claude Chrome Extension benchmark comparison
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-19 07:09:52 -05:00
Sawyer Hood 93d87971f3 Update Codex skills launch flag 2025-12-18 17:07:27 -05:00
Sawyer Hood 354fc44642 Add codex support 2025-12-18 17:02:29 -05:00
Sawyer Hood e77f8ab8bd Auto-connect to existing server instead of restarting (#8)
* Auto-connect to existing server instead of restarting

- Make `connect()` default to `http://localhost:9222` so callers don't need to pass a URL
- Change `start-server.ts` to no-op if server is already running instead of killing it
- Keep CDP port cleanup for crash recovery (when Node dies but Chrome is still running)
- Update SKILL.md documentation examples to use `connect()` without arguments

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add clarity for directory requirement and viewport setup in SKILL.md

- Add prominent callout warning that scripts must run from skills/dev-browser/
- Explain why: @/ path alias is configured in that directory's config files
- Add setViewportSize to basic template to prevent screenshot errors

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 15:21:23 -08:00
Sawyer Hood 0563717610 Add header image to README (#7)
- Add centered hero banner at top of README
- Crop image to banner aspect ratio
- Update header styling for proper GitHub rendering

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 17:36:47 -08:00
Sawyer Hood 45c3e37c9b Add permissions configuration section to README.md
Introduce options for users to configure permission prompts in Claude, including a YOLO mode to skip all prompts and a method to allowlist specific commands in settings.json. This enhances user control over script execution permissions.
2025-12-12 14:29:58 -08:00
Sawyer Hood 82b390a6e1 Add instructions for Amp 2025-12-10 23:31:14 -08:00
Sawyer Hood 5281e4ac95 Update marketplace.json to increment version from 1.0.0 to 1.0.1 2025-12-10 20:09:48 -08:00