Skip to content

Commit 22eb25e

Browse files
committed
Release v0.1.16
1 parent 57a485c commit 22eb25e

20 files changed

Lines changed: 102 additions & 62 deletions

File tree

README.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,17 @@ While the Chrome Web Store item is pending review, use the latest GitHub
5050
Release zip as an unpacked extension instead:
5151

5252
```bash
53-
open-browser-use setup release
53+
open-browser-use setup beta
5454
```
5555

56-
`setup release` downloads the latest
56+
`setup beta` downloads the latest
5757
`open-browser-use-chrome-extension-*.zip` from
5858
[GitHub Releases](https://github.com/iFurySt/open-codex-browser-use/releases)
5959
and unpacks it under Application Support. It pins a stable unpacked extension
6060
id, registers the native host for that id, opens `chrome://extensions/`, and
6161
reveals a keyed manual-install ZIP in Finder or the system file manager. Enable
6262
Developer mode, then drag that ZIP file into the Chrome extensions page to
63-
install it manually with the same id. The alias `open-browser-use setup offline`
64-
is also available for this non-Web-Store path.
63+
install it manually with the same id.
6564

6665
If you only need to repair the native messaging host registration, run:
6766

README.zh-CN.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,16 @@ Chrome Web Store 条目还在审核时,可以改用最新 GitHub Release zip
4747
unpacked extension 方式安装:
4848

4949
```bash
50-
open-browser-use setup release
50+
open-browser-use setup beta
5151
```
5252

53-
`setup release` 会从
53+
`setup beta` 会从
5454
[GitHub Releases](https://github.com/iFurySt/open-codex-browser-use/releases)
5555
下载最新的 `open-browser-use-chrome-extension-*.zip`,展开到 Application
5656
Support,写入稳定 unpacked extension id,并用该 id 注册 native host,然后打开
5757
`chrome://extensions/`,同时在 Finder 或系统文件管理器中定位已写入稳定 key 的
5858
手动安装 ZIP。打开 Developer mode 后,把这个 ZIP 拖到 Chrome 扩展页面即可用同
5959
一个 id 手动安装。
60-
`open-browser-use setup offline` 也作为这个非商店安装路径的别名可用。
6160

6261
如果只需要修复 native messaging host 注册,运行:
6362

apps/chrome-extension/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"manifest_version": 3,
33
"name": "Open Browser Use",
44
"description": "Open Browser Use Chrome automation extension.",
5-
"version": "0.1.15",
5+
"version": "0.1.16",
66
"icons": {
77
"16": "icons/icon-16.png",
88
"32": "icons/icon-32.png",

cmd/open-browser-use/main.go

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ import (
2424
"github.com/spf13/cobra"
2525
)
2626

27-
const version = "0.1.15"
27+
const version = "0.1.16"
2828
const defaultChromeExtensionID = "bgjoihaepiejlfjinojjfgokghnodnhd"
2929
const chromeWebStoreUpdateURL = "https://clients2.google.com/service/update2/crx"
30-
const offlineExtensionPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnBLT95WWVnHYH0pOBRH/eP+BWtlKVmLE/RHkERUTI2+PGDSQrbWVabmTw4CZ3yhjko04dijSX2Az8cnp65xh23Dh5mP5TCtiP9LexRFJokd8EsyeFdtKamMYr0hF1ZUc1/8ZpLnetAU65ZMB9VzHQBqpJWeUwuIvecgfRtGklDgJMjnvcq5J6pttZrzWrI/2B0BNufwsTQfEt7qLtDFPHXmUdtZfQbc2EfYFvkXLDAXicYviiocedrsAGIKUxpyQegobhUFL+tNLOuXKBpZlLFQn3xgm5CyGZwN6bueiV/S7reigVTKAMQ8BX0eacT22e8r0UzjsjkugeHOIonIvtQIDAQAB"
30+
const betaExtensionPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnBLT95WWVnHYH0pOBRH/eP+BWtlKVmLE/RHkERUTI2+PGDSQrbWVabmTw4CZ3yhjko04dijSX2Az8cnp65xh23Dh5mP5TCtiP9LexRFJokd8EsyeFdtKamMYr0hF1ZUc1/8ZpLnetAU65ZMB9VzHQBqpJWeUwuIvecgfRtGklDgJMjnvcq5J6pttZrzWrI/2B0BNufwsTQfEt7qLtDFPHXmUdtZfQbc2EfYFvkXLDAXicYviiocedrsAGIKUxpyQegobhUFL+tNLOuXKBpZlLFQn3xgm5CyGZwN6bueiV/S7reigVTKAMQ8BX0eacT22e8r0UzjsjkugeHOIonIvtQIDAQAB"
3131

3232
func main() {
3333
if err := run(os.Args[1:]); err != nil {
@@ -135,20 +135,19 @@ func newSetupCommand() *cobra.Command {
135135
cmd.Flags().StringVar(&extensionID, "extension-id", defaultChromeExtensionID, "Chrome extension id for allowed_origins")
136136
cmd.Flags().StringVar(&binaryPath, "path", "", "native host binary target for the stable host link")
137137
cmd.Flags().StringVar(&externalExtensionOutput, "external-extension-output", "", "Chrome external extension JSON output path")
138-
cmd.AddCommand(newSetupReleaseCommand())
138+
cmd.AddCommand(newSetupBetaCommand())
139139
return cmd
140140
}
141141

142-
func newSetupReleaseCommand() *cobra.Command {
142+
func newSetupBetaCommand() *cobra.Command {
143143
extensionID := defaultChromeExtensionID
144144
var binaryPath string
145145
var zipPath string
146146
var noOpen bool
147147
cmd := &cobra.Command{
148-
Use: "release",
149-
Aliases: []string{"offline"},
150-
Short: "Register the native host and prepare the latest release extension",
151-
Args: cobra.NoArgs,
148+
Use: "beta",
149+
Short: "Register the native host and prepare the beta extension package",
150+
Args: cobra.NoArgs,
152151
RunE: func(cmd *cobra.Command, _ []string) error {
153152
resolvedZIPPath := zipPath
154153
if resolvedZIPPath == "" {
@@ -192,8 +191,8 @@ func newSetupReleaseCommand() *cobra.Command {
192191
}
193192
}
194193
status := detectBrowserExtension(host.DefaultSocketDir, 700*time.Millisecond)
195-
status.InstallCommand = "open-browser-use setup offline"
196-
status.UpgradeCommand = "open-browser-use setup offline"
194+
status.InstallCommand = "open-browser-use setup beta"
195+
status.UpgradeCommand = "open-browser-use setup beta"
197196
return renderManualSetupResult(cmd.OutOrStdout(), manualSetupResult{
198197
NativeManifestPath: manifestPath,
199198
ExtensionID: effectiveExtensionID,
@@ -340,7 +339,7 @@ func renderStartupStatus(writer io.Writer) error {
340339
fmt.Fprintln(writer, "Next steps:")
341340
if status.needsInstall() {
342341
fmt.Fprintf(writer, " 1. Install the browser extension: %s\n", status.InstallCommand)
343-
fmt.Fprintln(writer, " If the Chrome Web Store item is unavailable, use: open-browser-use setup offline")
342+
fmt.Fprintln(writer, " If the Chrome Web Store item is unavailable, use: open-browser-use setup beta")
344343
fmt.Fprintln(writer, " 2. Restart Chrome if it asks you to enable the extension.")
345344
fmt.Fprintln(writer, " 3. Verify the connection: open-browser-use info")
346345
return nil
@@ -452,8 +451,8 @@ type detectedExtension struct {
452451

453452
func detectInstalledChromeExtension() (detectedExtension, bool) {
454453
candidates := []string{defaultChromeExtensionID}
455-
if offlineID, err := extensionIDFromPublicKey(offlineExtensionPublicKey); err == nil && offlineID != defaultChromeExtensionID {
456-
candidates = append(candidates, offlineID)
454+
if betaID, err := extensionIDFromPublicKey(betaExtensionPublicKey); err == nil && betaID != defaultChromeExtensionID {
455+
candidates = append(candidates, betaID)
457456
}
458457
var best detectedExtension
459458
for _, extensionID := range candidates {
@@ -1390,7 +1389,7 @@ func pinUnpackedExtensionKey(manifestPath string) (string, error) {
13901389
}
13911390
key, _ := manifest["key"].(string)
13921391
if strings.TrimSpace(key) == "" {
1393-
key = offlineExtensionPublicKey
1392+
key = betaExtensionPublicKey
13941393
manifest["key"] = key
13951394
updated, err := json.MarshalIndent(manifest, "", " ")
13961395
if err != nil {

cmd/open-browser-use/main_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ func TestCobraSetupWritesNativeAndExternalManifests(t *testing.T) {
240240
}
241241
}
242242

243-
func TestCobraSetupOfflineAliasUsesProvidedZIP(t *testing.T) {
243+
func TestCobraSetupBetaUsesProvidedZIP(t *testing.T) {
244244
if runtime.GOOS == "windows" {
245245
t.Skip("stable native host link is not implemented on windows")
246246
}
@@ -251,7 +251,7 @@ func TestCobraSetupOfflineAliasUsesProvidedZIP(t *testing.T) {
251251
t.Fatal(err)
252252
}
253253
zipPath := filepath.Join(t.TempDir(), "open-browser-use-chrome-extension.zip")
254-
expectedExtensionID, err := extensionIDFromPublicKey(offlineExtensionPublicKey)
254+
expectedExtensionID, err := extensionIDFromPublicKey(betaExtensionPublicKey)
255255
if err != nil {
256256
t.Fatal(err)
257257
}
@@ -262,23 +262,23 @@ func TestCobraSetupOfflineAliasUsesProvidedZIP(t *testing.T) {
262262
cmd := newRootCommand()
263263
var output bytes.Buffer
264264
cmd.SetOut(&output)
265-
cmd.SetArgs([]string{"setup", "offline", "--path", targetPath, "--zip", zipPath, "--no-open"})
265+
cmd.SetArgs([]string{"setup", "beta", "--path", targetPath, "--zip", zipPath, "--no-open"})
266266
if err := cmd.Execute(); err != nil {
267267
t.Fatal(err)
268268
}
269269
manualZIPPath := manualInstallZIPPath(zipPath)
270270
got := output.String()
271271
if !strings.Contains(got, "ZIP:") || !strings.Contains(got, manualZIPPath) {
272-
t.Fatalf("expected setup offline output to mention manual ZIP path, got %q", got)
272+
t.Fatalf("expected setup beta output to mention manual ZIP path, got %q", got)
273273
}
274274
if strings.Contains(got, "ZIP: "+zipPath) {
275-
t.Fatalf("expected setup offline output to avoid the raw release ZIP path, got %q", got)
275+
t.Fatalf("expected setup beta output to avoid the raw release ZIP path, got %q", got)
276276
}
277277
if !strings.Contains(got, "Extension id: "+expectedExtensionID) {
278-
t.Fatalf("expected setup offline output to mention unpacked extension id, got %q", got)
278+
t.Fatalf("expected setup beta output to mention unpacked extension id, got %q", got)
279279
}
280280
if !strings.Contains(got, "Drag the ZIP file into the Chrome extensions page") {
281-
t.Fatalf("expected setup offline output to mention manual ZIP drag install, got %q", got)
281+
t.Fatalf("expected setup beta output to mention manual ZIP drag install, got %q", got)
282282
}
283283
manifestPath := filepath.Join(home, "Library/Application Support/Google/Chrome/NativeMessagingHosts", host.NativeHostName+".json")
284284
if runtime.GOOS == "linux" {
@@ -299,14 +299,14 @@ func TestCobraSetupOfflineAliasUsesProvidedZIP(t *testing.T) {
299299
if err != nil {
300300
t.Fatal(err)
301301
}
302-
if !strings.Contains(string(unpackedManifest), offlineExtensionPublicKey) {
302+
if !strings.Contains(string(unpackedManifest), betaExtensionPublicKey) {
303303
t.Fatalf("expected unpacked manifest to include stable key, got %s", unpackedManifest)
304304
}
305305
manualManifest, err := readManifestFromZIP(manualZIPPath)
306306
if err != nil {
307307
t.Fatal(err)
308308
}
309-
if !strings.Contains(string(manualManifest), offlineExtensionPublicKey) {
309+
if !strings.Contains(string(manualManifest), betaExtensionPublicKey) {
310310
t.Fatalf("expected manual ZIP manifest to include stable key, got %s", manualManifest)
311311
}
312312
}

docs/ARCHITECTURE.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,23 +94,22 @@ dot;hyphen 版本 `com.ifuryst.open-computer-use.extension` 会被
9494
注册,再写入 Chrome External Extensions JSON,让 Chrome 从 Web Store
9595
安装正式扩展。macOS/Windows 仍需要用户在 Chrome 中确认启用扩展;Linux
9696
的 External Extensions 写入默认使用 Chrome 官方系统路径,可能需要更高权限。
97-
- `open-browser-use setup release`:审核期或非 Web Store 路径,注册 native
97+
- `open-browser-use setup beta`:审核期或非 Web Store 路径,注册 native
9898
host 后从 GitHub Releases 下载最新
9999
`open-browser-use-chrome-extension-*.zip`,展开为 unpacked extension,写入稳定
100100
public key 生成固定 extension id,用该 id 注册 native host allowed origin,再
101101
从 keyed unpacked 目录生成手动安装 ZIP,并打开 `chrome://extensions/`
102-
Finder/文件管理器,引导用户把这个 ZIP 拖到扩展页面手动安装;
103-
`setup offline` 是这个 release 路径的别名。
102+
Finder/文件管理器,引导用户把这个 ZIP 拖到扩展页面手动安装。
104103
- manifest 的 `path` 默认统一写入稳定 native host link:
105104
macOS 为
106105
`~/Library/Application Support/OpenBrowserUse/native-host/open-browser-use`
107106
Linux 为 `~/.local/share/open-browser-use/native-host/open-browser-use`
108107
`install-manifest --path` 表示这个稳定 link 指向的真实二进制 target。
109108
- npm 包 `open-browser-use` 是 CLI 二进制分发入口,安装后提供
110-
`open-browser-use``obu``postinstall` 只提示用户运行显式
111-
`open-browser-use setup`
109+
`open-browser-use``obu`Chrome Web Store 上架前,`postinstall` 只提示
110+
用户运行显式 `open-browser-use setup beta`
112111
- Homebrew formula 安装后提供 `open-browser-use``obu`,并在
113-
caveats 中提示用户运行显式 `open-browser-use setup`
112+
caveats 中提示用户运行显式 `open-browser-use setup beta`
114113
- CLI 命令层使用 Cobra 实现;Chrome native messaging
115114
`chrome-extension://...` origin 参数启动时会绕过 Cobra,直接进入 host mode。
116115
这依赖 Chrome Native Messaging 的标准启动形状:MV3 service worker 调用

docs/CHROME_WEB_STORE_RELEASE.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,14 @@ open-browser-use install-manifest
2828
Chrome Web Store 条目仍在审核时,用 GitHub Release zip 的 unpacked 路径:
2929

3030
```bash
31-
open-browser-use setup release
31+
open-browser-use setup beta
3232
```
3333

34-
`setup release` 会下载最新 release zip,展开到用户 Application Support 目录,
34+
`setup beta` 会下载最新 release zip,展开到用户 Application Support 目录,
3535
给 unpacked manifest 写入稳定 public key,注册 native host allowed origin,并打开
3636
`chrome://extensions/`,同时在 Finder 或系统文件管理器中定位已写入稳定 key 的
3737
手动安装 ZIP。用户需要打开 Developer mode,把这个 ZIP 拖到 Chrome 扩展页面完
3838
成手动安装。
39-
`setup offline` 是同一路径的别名,但它仍会联网访问 GitHub Release。
4039

4140
`install-manifest` 会把 manifest 的 `path` 写成稳定 native host link:
4241
`~/Library/Application Support/OpenBrowserUse/native-host/open-browser-use`,并
@@ -67,16 +66,16 @@ dist/chrome-extension/package-manifest.json
6766
dist/chrome-extension/crx-manifest.json
6867
```
6968

70-
`.zip` 是 Chrome Web Store 上传包,也是 `setup release` 下载并展开的审核期安装包。
69+
`.zip` 是 Chrome Web Store 上传包,也是 `setup beta` 下载并展开的审核期安装包。
7170
`.crx` 会保留在 GitHub Release 里用于制品归档、Chromium/企业策略/自托管更新等
7271
场景;Chrome Stable 对非 Web Store CRX 会报 `CRX_REQUIRED_PROOF_MISSING`
7372
不要把它作为普通用户安装入口。
7473

75-
`setup release` 默认会用 CLI 内置的 unpacked public key 计算 extension id;如果需要
74+
`setup beta` 默认会用 CLI 内置的 unpacked public key 计算 extension id;如果需要
7675
手工覆盖 native host allowed origin,可以运行:
7776

7877
```bash
79-
open-browser-use setup release --extension-id <extensionId>
78+
open-browser-use setup beta --extension-id <extensionId>
8079
```
8180

8281
## GitHub Release

docs/SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
`allowed_origins` 限制可启动 extension 来源。
2727
- `open-browser-use setup` 会写入 Chrome External Extensions JSON,让 Chrome
2828
从 Chrome Web Store 安装正式扩展;用户仍需要接受 Chrome 的扩展启用提示。
29-
`setup release` 只用于审核期或非商店路径,会下载 GitHub Release zip,展开为
29+
`setup beta` 只用于审核期或非商店路径,会下载 GitHub Release zip,展开为
3030
unpacked extension,写入稳定 key 后重新生成手动安装 ZIP,并要求用户在 Chrome
3131
扩展页显式拖入该 ZIP 完成手动安装。
3232
- MV3 extension 使用 `chrome.debugger``tabs``tabGroups``history`
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
## [2026-05-09 18:08] | Task: rename manual setup command to beta
2+
3+
### 🤖 Execution Context
4+
5+
- **Agent ID**: `Codex`
6+
- **Base Model**: `GPT-5`
7+
- **Runtime**: `Codex CLI`
8+
9+
### 📥 User Query
10+
11+
> 安装后不要再提示 `open-browser-use setup release`;干掉 `setup release`
12+
> 只保留 `setup``setup beta`(原来的 offline 路径),安装提示改成:
13+
> `执行以下命令安装: open-browser-use setup beta`
14+
15+
### 🛠 Changes Overview
16+
17+
**Scope:** Go CLI, npm CLI package, Homebrew formula renderer, docs, skill references, version metadata.
18+
19+
**Key Actions:**
20+
21+
- **[CLI]**: 将手动安装入口从 `setup release/offline` 改为 `setup beta`,并让状态输出中的备用安装命令指向 `open-browser-use setup beta`
22+
- **[Install Guidance]**: 将 npm `postinstall` 和 Homebrew caveats 缩短为只提示执行 `open-browser-use setup beta`
23+
- **[Docs]**: 同步 README、架构、安全、Chrome Web Store 发布和 skill 安装/排障文档,并记录 `0.1.16` 用户可感知变更。
24+
25+
### 🧠 Design Intent (Why)
26+
27+
Chrome Web Store 条目上架前,用户真正需要的是一条稳定的审核期安装路径。
28+
`release``offline` 两个名字收口为 `beta`,可以降低安装后提示的分叉和误解;
29+
后续商店上架后再把默认提示切回正式 `setup` 路径。
30+
31+
### 📁 Files Modified
32+
33+
- `cmd/open-browser-use/main.go`
34+
- `cmd/open-browser-use/main_test.go`
35+
- `packages/open-browser-use-cli/cli/postinstall.js`
36+
- `scripts/render-homebrew-formula.sh`
37+
- `README.md`
38+
- `README.zh-CN.md`
39+
- `packages/open-browser-use-cli/README.md`
40+
- `docs/ARCHITECTURE.md`
41+
- `docs/SECURITY.md`
42+
- `docs/CHROME_WEB_STORE_RELEASE.md`
43+
- `docs/releases/feature-release-notes.md`
44+
- `skills/open-browser-use/references/installation.md`
45+
- `skills/open-browser-use/references/troubleshooting.md`
46+
- version metadata under `apps/`, `cmd/`, and `packages/`

docs/releases/feature-release-notes.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
| 日期 | 功能域 | 用户价值 | 变更摘要 |
66
| --- | --- | --- | --- |
7+
| 2026-05-09 | Tab Group Naming | Agent 浏览器任务组和交付组的命名更清楚,当前任务保留在 `<short task> - OBU` 组,最终交付统一移动到 `🫪 Open Browser Use`| 发布 `0.1.16` patch 版本,默认 session group 改为 `Task - OBU`,deliverable group 改为 `🫪 Open Browser Use`,并补齐 legacy group title 迁移和 skill 指南。 |
8+
| 2026-05-09 | Beta Setup Guidance | Chrome Web Store 上架前,安装后的下一步只引导用户走 keyed manual-install ZIP 路径,避免 `setup release` / `setup offline` 两套名字造成混淆。 | 发布 `0.1.16` patch 版本,移除 `open-browser-use setup release/offline` 用户入口,保留 `open-browser-use setup``open-browser-use setup beta`,并把 npm postinstall、Homebrew caveats、README、架构、安全和 skill 文档同步到 `setup beta`|
79
| 2026-05-09 | SDK High-Level Browser API | JS/Python SDK 用户可以保留底层 JSON-RPC/CDP 原子调用,同时用 browser/tab/playwright-like helper 编排常见浏览器自动化流程。 | 发布 `0.1.15` patch 版本,新增 JS `connectOpenBrowserUse` 与 Python `connect_open_browser_use` 高层 browser/tab API;覆盖 `goto`、load-state wait、DOM snapshot 和 Python notification 插队读取。 |
810
| 2026-05-09 | Homebrew Setup Guidance | Homebrew 安装后的提示文案和当前审核期手动安装路径一致,用户会被引导生成 keyed manual-install ZIP,而不是旧的 Load unpacked 表述。 | 发布 `0.1.14` patch 版本,同步 Homebrew formula caveat 模板,并把 CLI、扩展、SDK 和 npm CLI 包版本提升到 `0.1.14`|
911
| 2026-05-09 | Guided Manual Install | 审核期手动安装不会因为 release ZIP 缺少稳定 key 而生成错误 extension id,native host allowed origin 与浏览器实际安装 id 保持一致。 | 发布 `0.1.13` patch 版本,`setup release/offline` 会从已写入稳定 key 的 unpacked 目录重新生成 `*-manual.zip`,并只定位这个 keyed ZIP 给用户拖入安装。 |

0 commit comments

Comments
 (0)