Commit Graph

33 Commits

Author SHA1 Message Date
yan5xu 690a8dc6e4 chore: add harness — tests, CI, protocol types, design invariants
Context layer:
- Rewrite AGENTS.md: new daemon architecture, 3-file command pattern,
  7 design invariants (INV-1 through INV-7), testing section
- Update protocol.ts: add tab/seq/cursor/since fields, update
  DaemonStatus, remove SSE types, widen TabInfo.tabId to string

Constraints layer:
- Unit tests: RingBuffer (14), TabState + TabStateManager (36)
- Contract tests: all 7 invariants verified (48)
- Protocol drift tests: real daemon HTTP response shape checks (13,
  skipped when Chrome unavailable)
- CI workflow: build + lint + test on push/PR to main
- Pre-commit hook: pnpm build && pnpm test via husky

GC layer:
- Harness scenarios doc: 6 reusable Agent workflow scenarios for
  periodic UX validation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 11:59:14 +08:00
Yanwu 1fe733b416 feat: auto-launch Chrome in bb-browserd + clip.json (#123)
* fix: auto-reconnect after Hub restart

Two bugs prevented reconnection when pinixd restarts:

1. reconnectTimer was unref'd via maybeUnref(), so it didn't keep the
   event loop alive — the setTimeout callback never fired
2. gRPC transport was reused across reconnects, causing "protocol error:
   missing status" loops from stale HTTP/2 connection state

Fix: remove maybeUnref on reconnect timer, create fresh transport on
each reconnect attempt, remove unused runPromise guard.

Closes #103

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: auto-launch Chrome when CDP not available in bb-browserd

bb-browserd now automatically starts a managed Chrome instance if no
CDP connection is found, instead of failing with "Chrome not reachable".

Also adds clip.json for Pinix Registry publishing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 17:42:51 +08:00
yan5xu 4ad258994b release: v0.10.1
Fixes:
- fix: remove replMode from CDP evaluate to fix async/Promise results
- fix: open new tabs in background (background: true)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 19:49:09 +08:00
github-actions[bot] 2a41d67a27 chore(main): release bb-browser 0.10.0 (#93)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-22 14:20:37 +08:00
yan5xu e730b0ef55 feat: bb-browserd migrate from WebSocket to Connect-RPC ProviderStream
Replace WebSocket /ws/provider with Connect-RPC ProviderStream for
communicating with pinixd Hub. Same functionality, unified protocol.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 00:02:28 +08:00
github-actions[bot] 2f2e153ef1 chore(main): release bb-browser 0.9.0 2026-03-19 16:08:24 +00:00
Yanwu 1215b01604 Merge pull request #86 from ox01024/chore/release-please
chore(release): automate versioning and publishing
2026-03-19 20:17:28 +08:00
Waffle 570737c957 chore(release): automate versioning and publishing 2026-03-19 17:25:33 +08:00
Waffle 0a2e150238 chore(lint): add small-scope eslint checks 2026-03-19 16:37:41 +08:00
Yanwu e7de67c4df fix(cli): add Chrome Dev/Canary/Beta/Arc to browser detection (#42) (#43)
- Add missing browser candidates to findBrowserExecutable() on macOS
- Remove obsolete daemon-era commands (start/stop/status/reload)
- Bump to v0.8.3

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 11:04:29 +08:00
yan5xu f36297300c chore: bump to v0.8.2 2026-03-16 10:05:00 +08:00
yan5xu 64bb52ae00 chore: bump to v0.9.0 2026-03-16 10:03:49 +08:00
yan5xu 6a112990e4 chore: bump to 0.8.1 (fix process hang) 2026-03-16 02:16:48 +08:00
yan5xu d84e45da71 chore: bump version to 0.8.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 02:07:27 +08:00
yan5xu 0551493aa0 feat(cli): auto-check for CLI updates on site update, bump to 0.7.0
- Bump version to 0.7.0
- Fix VERSION constant in index.ts (was stuck at 0.3.0)
- On `site update`, check npm registry for newer version and show upgrade hint
- Only prompt when npm version is higher than current

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 00:54:31 +08:00
yan5xu 1a79c3f7d1 chore: bump version to 0.6.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 13:40:33 +08:00
yan5xu 423e430765 chore: bump version to 0.5.2
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:48:08 +08:00
yan5xu c9d28d5d4e chore: bump version to 0.5.1
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:37:42 +08:00
yan5xu f96490d8d7 chore: bump version to 0.5.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:02:18 +08:00
yan5xu 73c4891e6e chore: bump version to 0.4.5
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 01:22:48 +08:00
yan5xu 40c8567514 chore: bump version to 0.4.4 2026-03-15 00:30:57 +08:00
yan5xu 52b4aa7314 chore: bump version to 0.4.3 2026-03-15 00:17:37 +08:00
yan5xu 51d9d56acb chore: update description 2026-03-14 23:26:35 +08:00
yan5xu 1698c27d7a chore: bump version to 0.4.2 2026-03-14 23:23:24 +08:00
yan5xu cb28e815aa feat(cli): add --mcp flag to start MCP server
`bb-browser --mcp` spawns the MCP server with stdio transport.
Users can configure AI tools with: npx -y bb-browser --mcp

Also fixes root tsup bundling to properly exclude ws while
bundling all other deps (MCP SDK, ajv, zod).

Bump version to 0.4.1.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:15:33 +08:00
yan5xu eb62804e1f chore: prepare v0.4.0 for npm publish
- Bump version to 0.4.0
- Add MCP runtime deps (ajv, ajv-formats, @modelcontextprotocol/sdk)
- Bundle all deps in root tsup for npx compatibility
- Fix repo URL to epiral/bb-browser
- Add mcp keyword

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:03:32 +08:00
yan5xu 537e5536f9 feat(mcp): add MCP server for AI agent integration
New package @bb-browser/mcp exposes all browser commands as MCP tools:
browser_snapshot, browser_click, browser_fill, browser_type, browser_open,
browser_tab_list, browser_tab_new, browser_press, browser_scroll,
browser_eval, browser_network, browser_screenshot, browser_get,
browser_close, browser_hover, browser_wait

All tools support `tab` parameter for concurrent multi-tab operations.
Uses stdio transport, connects to daemon via HTTP (same as CLI).

Also adds missing fields to shared protocol types:
- Request: key, modifiers, direction, pixels, waitType, ms
- ResponseData: dataUrl

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 21:59:22 +08:00
yan5xu 4e85c29728 chore: bump version to 0.3.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-13 20:03:04 +08:00
yan5xu 77c8e668bd chore: bump version to 0.2.0 2026-02-07 09:54:13 +08:00
yan5xu 7acd596073 feat: 全局 --tab 参数支持多 tab 并发隔离
- CLI: 全局 --tab <tabId> 参数,透传给所有子命令
- Extension: resolveTab() 按 tabId 定位目标 tab,fallback activeTab
- Extension: 状态 (refs/frame) 按 tabId 隔离
- Extension: SSE 去除 await,支持并发处理命令
- bump version to 0.1.2
2026-02-06 10:41:41 +08:00
yan5xu 1fc42dc990 chore: bump version to 0.1.1 2026-02-06 09:35:57 +08:00
yan5xu 67bfe2ac9a chore: 更新仓库地址为 yan5xu/bb-browser 2026-01-31 11:56:15 +08:00
yan5xu 601f4ae813 feat: 实现 bb-browser 核心功能
- CLI: open, snapshot, click, fill, status, stop 命令
- Extension: buildDomTree 移植, DOM 服务, SSE 通信
- Daemon: HTTP SSE 架构, 请求管理
- Shared: 通信协议类型定义

snapshot 支持两种模式:
- 默认完整树模式 (含文本节点)
- -i 交互元素模式 (只含可交互元素)

已验证: 推特/Reddit 登录态页面访问正常
2026-01-29 21:17:28 +08:00