@elvatis_com/openclaw-cli-bridge-elvatis 1.3.5 β 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai/handoff/DASHBOARD.md +10 -13
- package/.ai/handoff/HEADLESS_ROADMAP.md +7 -4
- package/.ai/handoff/LOG.md +44 -0
- package/.ai/handoff/NEXT_ACTIONS.md +8 -18
- package/.ai/handoff/STATUS.md +13 -11
- package/.claude/settings.local.json +14 -0
- package/README.md +33 -35
- package/index.ts +117 -402
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/src/claude-browser.ts +2 -0
- package/src/proxy-server.ts +0 -114
- package/test/chatgpt-proxy.test.ts +0 -107
- package/test/claude-proxy.test.ts +0 -235
package/.ai/handoff/DASHBOARD.md
CHANGED
|
@@ -1,39 +1,36 @@
|
|
|
1
1
|
# DASHBOARD.md β openclaw-cli-bridge-elvatis
|
|
2
2
|
|
|
3
|
-
_Last updated: 2026-03-
|
|
3
|
+
_Last updated: 2026-03-12_
|
|
4
4
|
|
|
5
5
|
<!-- SECTION: plugin_status -->
|
|
6
|
-
##
|
|
6
|
+
## Plugin Status
|
|
7
7
|
|
|
8
8
|
| Component | Version | Build | Tests | Status |
|
|
9
9
|
|-----------|---------|-------|-------|--------|
|
|
10
|
-
| openclaw-cli-bridge-elvatis |
|
|
10
|
+
| openclaw-cli-bridge-elvatis | 1.4.0 | β
| β
96/96 | β
Stable |
|
|
11
11
|
<!-- /SECTION: plugin_status -->
|
|
12
12
|
|
|
13
13
|
<!-- SECTION: release_state -->
|
|
14
|
-
##
|
|
14
|
+
## Release State
|
|
15
15
|
|
|
16
16
|
| Platform | Published Version | Status |
|
|
17
17
|
|----------|------------------|--------|
|
|
18
|
-
| GitHub |
|
|
19
|
-
|
|
|
20
|
-
| ClawHub | 0.2.23 | β
Published |
|
|
21
|
-
| Local | 0.2.25 | β³ Built + tested, pending publish |
|
|
18
|
+
| GitHub | v1.3.5 | β
Tagged + Release |
|
|
19
|
+
| Local | 1.4.0 | β³ Built + tested, pending push |
|
|
22
20
|
<!-- /SECTION: release_state -->
|
|
23
21
|
|
|
24
22
|
<!-- SECTION: open_tasks -->
|
|
25
|
-
##
|
|
23
|
+
## Open Tasks
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
|----|------|----------|-----------|--------|
|
|
29
|
-
| T-010 | Publish v0.2.25 to GitHub + npm + ClawHub | π‘ MEDIUM | β | β
Ready |
|
|
25
|
+
_No open tasks._
|
|
30
26
|
<!-- /SECTION: open_tasks -->
|
|
31
27
|
|
|
32
28
|
<!-- SECTION: completed_tasks -->
|
|
33
|
-
##
|
|
29
|
+
## Completed Tasks
|
|
34
30
|
|
|
35
31
|
| Task | Title | Version |
|
|
36
32
|
|------|-------|---------|
|
|
33
|
+
| T-012 | Persistent browser fallback for Claude/Gemini/ChatGPT (no CDP required) | 1.4.0 |
|
|
37
34
|
| T-011 | Session-safe staged model switching (/cli-apply, /cli-pending, --now) | 0.2.25 |
|
|
38
35
|
| T-009 | Stability: sleep-resilient token refresh + stopTokenRefresh cleanup | 0.2.25 |
|
|
39
36
|
| T-103 | Explicit model allowlist for CLI execution | 0.2.23 |
|
|
@@ -4,11 +4,14 @@
|
|
|
4
4
|
Alle Provider (Claude, Gemini, Codex/ChatGPT, Grok) ΓΌber Playwright Browser-Sessions
|
|
5
5
|
betreiben β keine lokalen CLI-Binaries mehr nΓΆtig. Ein headless Chromium, ein Proxy.
|
|
6
6
|
|
|
7
|
-
## Aktueller Stand (
|
|
7
|
+
## Aktueller Stand (v1.4.0)
|
|
8
8
|
- β
Grok: DOM-Polling via grok.com (FERTIG, produktiv)
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
9
|
+
- β
Claude: claude.ai headless (FERTIG, persistent Chromium fallback)
|
|
10
|
+
- β
Gemini: gemini.google.com headless (FERTIG, persistent Chromium fallback)
|
|
11
|
+
- β
ChatGPT: chatgpt.com headless (FERTIG, persistent Chromium fallback)
|
|
12
|
+
|
|
13
|
+
All 4 providers now work without CDP (OpenClaw browser). Persistent Chromium profiles
|
|
14
|
+
are used as fallback when CDP on port 18800 is unavailable.
|
|
12
15
|
|
|
13
16
|
## Reihenfolge
|
|
14
17
|
1. **Claude headless** (claude.ai) β hΓΆchste PrioritΓ€t, meistgenutzt
|
package/.ai/handoff/LOG.md
CHANGED
|
@@ -4,6 +4,50 @@ _Last 10 sessions. Older entries in LOG-ARCHIVE.md._
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## 2026-03-12 β Session 7 (Claude Opus 4.6)
|
|
8
|
+
|
|
9
|
+
> **Agent:** claude-opus-4-6
|
|
10
|
+
> **Phase:** fix
|
|
11
|
+
> **Commit before:** v1.3.5
|
|
12
|
+
> **Commit after:** v1.4.0
|
|
13
|
+
|
|
14
|
+
**T-012: Persistent browser fallback for Claude/Gemini/ChatGPT login commands**
|
|
15
|
+
|
|
16
|
+
### Problem
|
|
17
|
+
`/claude-login`, `/gemini-login`, `/chatgpt-login` all called `connectToOpenClawBrowser()` directly,
|
|
18
|
+
which only tries CDP on `http://127.0.0.1:18800`. If Chrome was not running with
|
|
19
|
+
`--remote-debugging-port=18800`, all three commands failed with "Could not connect to OpenClaw browser".
|
|
20
|
+
Grok already had the fallback pattern (CDP -> persistent Chromium) since v0.2.27, but the other
|
|
21
|
+
three providers never got it.
|
|
22
|
+
|
|
23
|
+
### Fix (index.ts)
|
|
24
|
+
|
|
25
|
+
**New constants:** `CLAUDE_PROFILE_DIR`, `GEMINI_PROFILE_DIR`, `CHATGPT_PROFILE_DIR`
|
|
26
|
+
|
|
27
|
+
**New functions:** `getOrLaunchClaudeContext()`, `getOrLaunchGeminiContext()`, `getOrLaunchChatGPTContext()`
|
|
28
|
+
- Same pattern as `getOrLaunchGrokContext()`: return existing context -> try CDP -> fall back to persistent Chromium
|
|
29
|
+
- Concurrent launch requests coalesced via promise guard (no duplicate Chromium spawns)
|
|
30
|
+
|
|
31
|
+
**Updated login handlers:** `/claude-login`, `/gemini-login`, `/chatgpt-login` now follow the Grok pattern:
|
|
32
|
+
1. Try to import cookies from CDP (optional, catches errors gracefully)
|
|
33
|
+
2. `getOrLaunchXxxContext()` (CDP or persistent Chromium fallback)
|
|
34
|
+
3. Inject imported cookies if available
|
|
35
|
+
4. Navigate and verify
|
|
36
|
+
|
|
37
|
+
**Updated proxy callbacks:** `connectClaudeContext`, `connectGeminiContext`, `connectChatGPTContext` in
|
|
38
|
+
both proxy server setup blocks now use `getOrLaunchXxxContext()` instead of `connectToOpenClawBrowser()`.
|
|
39
|
+
|
|
40
|
+
**Updated `cleanupBrowsers()`:** Now properly closes Claude, Gemini, and ChatGPT persistent contexts.
|
|
41
|
+
|
|
42
|
+
### Build + Tests
|
|
43
|
+
- `npm run build` - only pre-existing errors (openclaw/plugin-sdk not available locally)
|
|
44
|
+
- `npm test` - 96/96 green, 0 failures
|
|
45
|
+
|
|
46
|
+
### Version
|
|
47
|
+
1.3.5 -> 1.4.0 (feature: persistent fallback for all providers)
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
7
51
|
## 2026-03-11 β Session 6 (Akido / claude-sonnet-4-6)
|
|
8
52
|
|
|
9
53
|
> **Agent:** claude-sonnet-4-6
|
|
@@ -1,46 +1,36 @@
|
|
|
1
1
|
# NEXT_ACTIONS.md β openclaw-cli-bridge-elvatis
|
|
2
2
|
|
|
3
|
-
_Last updated: 2026-03-
|
|
3
|
+
_Last updated: 2026-03-12_
|
|
4
4
|
|
|
5
5
|
<!-- SECTION: summary -->
|
|
6
6
|
## Status Summary
|
|
7
7
|
|
|
8
8
|
| Status | Count |
|
|
9
9
|
|---------|-------|
|
|
10
|
-
| Done |
|
|
11
|
-
| Ready |
|
|
10
|
+
| Done | 12 |
|
|
11
|
+
| Ready | 0 |
|
|
12
12
|
| Blocked | 0 |
|
|
13
13
|
<!-- /SECTION: summary -->
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## Ready - Work These Next
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
- **Goal:** Publish v0.2.25 to GitHub, npm, and ClawHub.
|
|
22
|
-
- **Context:** v0.2.25 built + 51/51 tests pass. Changes: staged model switching (session-safe /cli-*), sleep-resilient token refresh, stopTokenRefresh cleanup.
|
|
23
|
-
- **What to do:**
|
|
24
|
-
1. `git add -u && git commit -m "feat(cli): staged switch + token refresh stability (v0.2.25)"`
|
|
25
|
-
2. `git tag v0.2.25 && git push origin main && git push origin v0.2.25`
|
|
26
|
-
3. `gh release create v0.2.25 --title "v0.2.25 β Session-safe model switching" --notes "..."`
|
|
27
|
-
4. `npm publish --access public`
|
|
28
|
-
5. ClawHub publish via rsync workaround (see CONVENTIONS.md)
|
|
29
|
-
6. Update STATUS.md platform table after publish
|
|
30
|
-
- **Definition of done:** v0.2.25 live on GitHub + npm + ClawHub.
|
|
19
|
+
_No pending tasks._
|
|
31
20
|
|
|
32
21
|
---
|
|
33
22
|
|
|
34
|
-
##
|
|
23
|
+
## Blocked
|
|
35
24
|
|
|
36
25
|
_No blocked tasks._
|
|
37
26
|
|
|
38
27
|
---
|
|
39
28
|
|
|
40
|
-
##
|
|
29
|
+
## Recently Completed
|
|
41
30
|
|
|
42
31
|
| Task | Title | Date |
|
|
43
32
|
|-------|--------------------------------------------------------------------|------------|
|
|
33
|
+
| T-012 | Persistent browser fallback for Claude/Gemini/ChatGPT (no CDP) | 2026-03-12 |
|
|
44
34
|
| T-011 | Session-safe staged model switching (/cli-apply, /cli-pending) | 2026-03-11 |
|
|
45
35
|
| T-009 | Stability: sleep-resilient token refresh + stopTokenRefresh cleanup | 2026-03-11 |
|
|
46
36
|
| T-008 | Validate proxy endpoints + vllm model calls end-to-end | 2026-03-08 |
|
package/.ai/handoff/STATUS.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# STATUS β openclaw-cli-bridge-elvatis
|
|
2
2
|
|
|
3
|
-
## Current Version: 1.
|
|
3
|
+
## Current Version: 1.4.0
|
|
4
4
|
|
|
5
|
-
## All 4 Providers Available β on-demand via /xxx-login
|
|
5
|
+
## All 4 Providers Available β on-demand via /xxx-login (no CDP required)
|
|
6
6
|
| Provider | Status | Models | Command |
|
|
7
7
|
|---|---|---|---|
|
|
8
8
|
| Grok | β
| web-grok/grok-3, grok-3-fast, grok-3-mini, grok-3-mini-fast | /grok-login |
|
|
@@ -16,29 +16,31 @@
|
|
|
16
16
|
- 0 zombie Chromium processes at startup (browsers on-demand only)
|
|
17
17
|
- Cookie expiry tracking for all 4 providers
|
|
18
18
|
- Singleton guard on ensureAllProviderContexts (no concurrent spawns)
|
|
19
|
+
- Persistent Chromium fallback for all 4 providers (no CDP dependency)
|
|
19
20
|
|
|
20
21
|
## Architecture: Browser Lifecycle
|
|
21
22
|
- **On plugin start:** NO browser launched automatically
|
|
22
|
-
- **On /xxx-login:** launches persistent Chromium for that provider
|
|
23
|
-
- **
|
|
23
|
+
- **On /xxx-login:** tries CDP import (optional) then launches persistent Chromium for that provider
|
|
24
|
+
- **CDP unavailable?** No problem - persistent Chromium from saved profile is used automatically
|
|
25
|
+
- **On request (no context):** proxy callbacks also use persistent fallback before returning null
|
|
24
26
|
- **On /xxx-logout:** closes context + deletes session file
|
|
25
27
|
|
|
26
28
|
## Known Issues
|
|
27
|
-
- Cloudflare may block headless Chromium for
|
|
28
|
-
|
|
29
|
+
- Cloudflare may block headless Chromium for some providers without cookies
|
|
30
|
+
- Workaround: first login via OpenClaw browser (CDP), subsequent restarts use saved profile
|
|
29
31
|
|
|
30
32
|
## Release History
|
|
31
|
-
- v1.
|
|
33
|
+
- v1.4.0 (2026-03-12): Persistent browser fallback for Claude/Gemini/ChatGPT (no CDP required)
|
|
34
|
+
- v1.3.5 (2026-03-12): Startup restore guard - runs only once per process (SIGUSR1 fix)
|
|
35
|
+
- v1.3.4 (2026-03-12): Safe sequential session restore from saved profiles
|
|
36
|
+
- v1.3.3 (2026-03-12): Remove startup auto-connect - browsers on-demand only (OOM fix)
|
|
32
37
|
- v1.3.2 (2026-03-12): Singleton guard on ensureAllProviderContexts (resource leak fix)
|
|
33
38
|
- v1.3.1 (2026-03-11): Cookie baking into persistent profiles on login
|
|
34
39
|
- v1.3.0 (2026-03-11): Browser auto-reconnect after gateway restart
|
|
35
40
|
- v1.2.0 (2026-03-11): Fresh page per request + ChatGPT model switching
|
|
36
41
|
- v1.1.0 (2026-03-11): Auto-connect on startup + /bridge-status
|
|
37
|
-
- v1.0.0 (2026-03-11): All 4 providers headless (Grok/Claude/Gemini/ChatGPT)
|
|
38
|
-
- v0.2.x: Grok (v0.2.26-28), Claude (v0.2.29), Gemini (v0.2.30)
|
|
39
|
-
- v0.2.25: Sleep-resilient token refresh + staged /cli-* switching
|
|
42
|
+
- v1.0.0 (2026-03-11): All 4 providers headless (Grok/Claude/Gemini/ChatGPT) - 96/96 tests
|
|
40
43
|
|
|
41
44
|
## Next Steps
|
|
42
45
|
- Context-window management for long conversations
|
|
43
46
|
- Gemini model switching (2.5 Pro vs Flash vs 3) via UI
|
|
44
|
-
- /bridge-status: show per-provider login state + cookie expiry
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(npm run:*)",
|
|
5
|
+
"Bash(npx tsc:*)",
|
|
6
|
+
"Bash(ls node_modules/.bin/tsc*)",
|
|
7
|
+
"Bash(npm install:*)",
|
|
8
|
+
"Bash(./node_modules/.bin/tsc)",
|
|
9
|
+
"Bash(node_modules/.bin/tsc)",
|
|
10
|
+
"Bash(node_modules/.bin/tsc -p tsconfig.check.json)",
|
|
11
|
+
"Bash(node_modules/.bin/vitest run:*)"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
}
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> OpenClaw plugin that bridges locally installed AI CLIs (Codex, Gemini, Claude Code) as model providers β with slash commands for instant model switching, restore, health testing, and model listing.
|
|
4
4
|
|
|
5
|
-
**Current version:** `1.
|
|
5
|
+
**Current version:** `1.5.0`
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -100,20 +100,6 @@ Routes requests through real browser sessions on the provider's web UI. Requires
|
|
|
100
100
|
| `/grok-status` | Show session validity + cookie expiry |
|
|
101
101
|
| `/grok-logout` | Clear session |
|
|
102
102
|
|
|
103
|
-
**Claude** (claude.ai):
|
|
104
|
-
|
|
105
|
-
| Model | Notes |
|
|
106
|
-
|---|---|
|
|
107
|
-
| `web-claude/claude-sonnet` | Sonnet |
|
|
108
|
-
| `web-claude/claude-opus` | Opus |
|
|
109
|
-
| `web-claude/claude-haiku` | Haiku |
|
|
110
|
-
|
|
111
|
-
| Command | What it does |
|
|
112
|
-
|---|---|
|
|
113
|
-
| `/claude-login` | Authenticate, save cookies to `~/.openclaw/claude-profile/` |
|
|
114
|
-
| `/claude-status` | Show session validity + cookie expiry |
|
|
115
|
-
| `/claude-logout` | Clear session |
|
|
116
|
-
|
|
117
103
|
**Gemini** (gemini.google.com):
|
|
118
104
|
|
|
119
105
|
| Model | Notes |
|
|
@@ -129,26 +115,11 @@ Routes requests through real browser sessions on the provider's web UI. Requires
|
|
|
129
115
|
| `/gemini-status` | Show session validity + cookie expiry |
|
|
130
116
|
| `/gemini-logout` | Clear session |
|
|
131
117
|
|
|
132
|
-
**ChatGPT** (chatgpt.com):
|
|
133
|
-
|
|
134
|
-
| Model | Notes |
|
|
135
|
-
|---|---|
|
|
136
|
-
| `web-chatgpt/gpt-4o` | GPT-4o |
|
|
137
|
-
| `web-chatgpt/gpt-4o-mini` | GPT-4o Mini |
|
|
138
|
-
| `web-chatgpt/gpt-o3` | o3 |
|
|
139
|
-
| `web-chatgpt/gpt-o4-mini` | o4-mini |
|
|
140
|
-
| `web-chatgpt/gpt-5` | GPT-5 |
|
|
141
|
-
|
|
142
|
-
| Command | What it does |
|
|
143
|
-
|---|---|
|
|
144
|
-
| `/chatgpt-login` | Authenticate, save cookies to `~/.openclaw/chatgpt-profile/` |
|
|
145
|
-
| `/chatgpt-status` | Show session validity + cookie expiry |
|
|
146
|
-
| `/chatgpt-logout` | Clear session |
|
|
147
|
-
|
|
148
118
|
**Session lifecycle:**
|
|
149
|
-
- First use: run `/xxx-login` once
|
|
119
|
+
- First use: run `/xxx-login` once - authenticates and saves cookies to persistent Chromium profile
|
|
120
|
+
- **No CDP required:** `/xxx-login` no longer depends on the OpenClaw browser (CDP port 18800). If CDP is available, cookies are imported from it; otherwise a standalone persistent Chromium is launched automatically.
|
|
150
121
|
- After gateway restart: sessions are **automatically restored** from saved profiles on startup (sequential, ~25s after start)
|
|
151
|
-
- `/bridge-status` β shows all
|
|
122
|
+
- `/bridge-status` β shows all providers at a glance with login state + expiry info
|
|
152
123
|
|
|
153
124
|
---
|
|
154
125
|
|
|
@@ -351,13 +322,40 @@ Slash commands (requireAuth=false, gateway commands.allowFrom is the auth layer)
|
|
|
351
322
|
|
|
352
323
|
```bash
|
|
353
324
|
npm run typecheck # tsc --noEmit
|
|
354
|
-
npm test # vitest run (
|
|
325
|
+
npm test # vitest run (83 tests)
|
|
355
326
|
```
|
|
356
327
|
|
|
357
328
|
---
|
|
358
329
|
|
|
359
330
|
## Changelog
|
|
360
331
|
|
|
332
|
+
### v1.5.0
|
|
333
|
+
- **refactor:** Removed `/claude-login`, `/claude-logout`, `/claude-status`, `/chatgpt-login`, `/chatgpt-logout`, `/chatgpt-status` commands and all related browser automation code. Claude is fully covered by `cli-claude/*` via CLI proxy, ChatGPT by `openai-codex` + `copilot-proxy`.
|
|
334
|
+
- **refactor:** Removed `web-claude/*` and `web-chatgpt/*` proxy routes and model entries from proxy server.
|
|
335
|
+
- **refactor:** Removed `getOrLaunchClaudeContext()` and `getOrLaunchChatGPTContext()` functions, claude/chatgpt session state, cookie expiry tracking, and startup restore for these providers.
|
|
336
|
+
- **cleanup:** Deleted `test/claude-proxy.test.ts` and `test/chatgpt-proxy.test.ts`.
|
|
337
|
+
- **result:** Cleaner codebase, no browser timeout on startup for unused providers. Only Grok and Gemini browser providers remain.
|
|
338
|
+
|
|
339
|
+
### v1.4.3
|
|
340
|
+
- **fix:** Full stealth mode for all browser launches - `ignoreDefaultArgs: ['--enable-automation']` removes Playwright's automation flag, `--disable-blink-features=AutomationControlled` hides `navigator.webdriver`, and `--disable-infobars` suppresses the "Chrome is being controlled by automated software" banner. Combined with `channel: "chrome"` (v1.4.2), this bypasses Cloudflare human verification completely.
|
|
341
|
+
- **root cause:** Even with system Chrome (`channel: "chrome"`), Playwright injects `--enable-automation` by default, which sets `navigator.webdriver = true` and shows the automation infobar. Cloudflare checks both signals.
|
|
342
|
+
|
|
343
|
+
### v1.4.2
|
|
344
|
+
- **fix:** All browser launches now use `channel: "chrome"` (real system Chrome) instead of Playwright's bundled Chromium. Cloudflare human verification no longer blocks `/xxx-login` commands.
|
|
345
|
+
- **root cause:** Playwright's bundled Chromium is fingerprinted by Cloudflare as an automation browser, triggering CAPTCHA challenges that cannot be completed. System Chrome is not flagged.
|
|
346
|
+
|
|
347
|
+
### v1.4.1
|
|
348
|
+
- **fix:** `/claude-login`, `/gemini-login`, `/chatgpt-login` now fall back to a **headed** (visible) Chromium browser when headless login fails (no saved cookies in profile). The user can log in manually in the opened browser window (5 min timeout). After login, cookies are saved to the persistent profile for future headless use.
|
|
349
|
+
- **fix:** Added missing `claude-opus-4-6` and `claude-haiku-4-5` entries to the Claude browser MODEL_MAP
|
|
350
|
+
- **root cause:** Headless Chromium without saved cookies sees a login page, not the editor - the user cannot interact with a headless browser to log in
|
|
351
|
+
|
|
352
|
+
### v1.4.0
|
|
353
|
+
- **feat:** Persistent browser fallback for all providers - `/claude-login`, `/gemini-login`, `/chatgpt-login` no longer require the OpenClaw browser (CDP port 18800). If CDP is available, cookies are imported; otherwise a standalone persistent headless Chromium is launched automatically from the saved profile directory.
|
|
354
|
+
- **feat:** New helper functions `getOrLaunchClaudeContext()`, `getOrLaunchGeminiContext()`, `getOrLaunchChatGPTContext()` - same pattern as the existing `getOrLaunchGrokContext()` (try CDP, fall back to persistent Chromium, coalesce concurrent launches)
|
|
355
|
+
- **fix:** Proxy server `connectXxxContext` callbacks now use the persistent fallback too - no more "not logged in" errors when CDP is unavailable but a saved profile exists
|
|
356
|
+
- **fix:** `cleanupBrowsers()` now properly closes Claude, Gemini, and ChatGPT persistent contexts on plugin teardown (previously only cleaned up Grok + CDP)
|
|
357
|
+
- **root cause:** All 3 login commands (Claude, Gemini, ChatGPT) called `connectToOpenClawBrowser()` directly, which only tries CDP on 127.0.0.1:18800. If Chrome was not running with `--remote-debugging-port=18800`, login always failed. Grok already had the fallback pattern since v0.2.27 - now all 4 providers are consistent.
|
|
358
|
+
|
|
361
359
|
### v1.3.5
|
|
362
360
|
- **fix:** Startup session restore now runs only once per process lifetime β `_startupRestoreDone` module-level guard prevents re-running on every hot-reload (SIGUSR1), which was triggered every ~60s by the openclaw-control-ui dashboard poll
|
|
363
361
|
- **root cause:** Gateway `reload.mode=hybrid` + dashboard status polling caused plugin to reinitialize every 60s β each reload spawned a new Gemini Chromium instance β RAM/CPU OOM loop
|
|
@@ -416,7 +414,7 @@ No CLI binaries required β just authenticated browser sessions.
|
|
|
416
414
|
- **feat:** `web-chatgpt/*` models: gpt-4o, gpt-4o-mini, gpt-o3, gpt-o4-mini, gpt-5
|
|
417
415
|
- **feat:** `/chatgpt-login`, `/chatgpt-status`, `/chatgpt-logout` + cookie-expiry tracking
|
|
418
416
|
- **feat:** All 4 providers headless: Grok β
Claude β
Gemini β
ChatGPT β
|
|
419
|
-
- **test:** 96/
|
|
417
|
+
- **test:** 96/83 tests green (8 test files)
|
|
420
418
|
- **fix:** Singleton CDP connection, cleanupBrowsers() on plugin stop
|
|
421
419
|
|
|
422
420
|
### v0.2.30
|