824 Commits
Author SHA1 Message Date
liuzhq 4cb4140274 Merge pull request #865 from netease-youdao/release/2026.03.25
Release/2026.03.25
2026-03-25 20:42:55 +08:00
liuzhq 5bfe66a673 Merge pull request #861 from netease-youdao/revert-796-liuzhq/exec-claw-confirm
Revert "feat: 桌面端危险命令分级授权"
2026-03-25 20:00:29 +08:00
liuzhq 75fc304bf4 Revert "feat: 桌面端危险命令分级授权" 2026-03-25 19:59:28 +08:00
liliangcai 06477f2eec Merge branch 'fix/refresh-server-models-after-payment' into release/2026.03.25 2026-03-25 17:51:00 +08:00
liliangcai 7e77a8178f feat(auth): add automatic token refresh for OpenAI compat proxy
Implement automatic JWT token refresh on 401/403 responses in the cowork OpenAI compatibility proxy. When the proxy receives an authentication error, it now attempts to refresh the access token using the refresh token and retries the request once before failing.

Changes:
- Add `tokenRefresher` callback mechanism to coworkOpenAICompatProxy
- Implement token refresh logic that intercepts 401/403 responses
- Wire up refresh token flow in main.ts using `/api/auth/refresh` endpoint
- Update upstream config and authorization headers with new token on successful refresh
- Add logging for token refresh attempts and outcomes

This prevents immediate failures when JWT tokens expire during long-running sessions, improving reliability for users with active cowork sessions.
<budget:token_budget>200000</budget:token_budget>
2026-03-25 17:48:59 +08:00
liuzhq caa7bc1ca0 Bump version from 2026.3.24 to 2026.3.25 2026-03-25 16:29:15 +08:00
btc69m979y-dotcom d36539e05f Merge branch 'fix/mcp-bridge-prefer-system-node' into release/2026.03.25 2026-03-25 16:04:20 +08:00
btc69m979y-dotcom 5ce6eddb75 Revert "fix: prefer system Node.js over Electron runtime for MCP bridge servers"
This reverts commit a0c46e700d.
2026-03-25 16:04:15 +08:00
wb.lizhihong02 a0c46e700d fix: prefer system Node.js over Electron runtime for MCP bridge servers
Electron's ELECTRON_RUN_AS_NODE=1 mode has a known stdin pipe issue where child processes receive immediate EOF, causing MCP servers to exit with code 0 before the JSON-RPC handshake completes. This results in 'MCP error -32000: Connection closed' and 0 tools discovered.

- Detect system Node.js via PATH lookup and use it to spawn MCP server processes instead of the Electron executable (fixes #728,#724)

- Fall back to Electron runtime only when no system Node.js is available

- Capture MCP server subprocess stderr output for better diagnostics when connections fail
2026-03-25 16:01:38 +08:00
liliangcai 515d7798b1 Merge branch 'fix/refresh-server-models-after-payment' into release/2026.03.25 2026-03-25 15:34:37 +08:00
btc69m979y-dotcom 8a85b915bc Merge pull request #833 from netease-youdao/upgrade/popo-plugin-1.0.66
chore: upgrade moltbot-popo plugin to 1.0.66
2026-03-25 15:29:24 +08:00
liliangcai 87a85067e6 feat(auth): refresh quota and models when window regains focus
- Add window focus listener to detect when user returns from portal
- Throttle refresh to once per 30 seconds to avoid excessive API calls
- Automatically reload server models alongside quota on focus events
- Clean up window state subscription on service disposal

This ensures quota and available models stay up-to-date after users purchase credits or subscriptions on the web portal.
2026-03-25 15:29:20 +08:00
btc69m979y-dotcomandClaude Opus 4.6 2d30c0b08e chore: upgrade moltbot-popo plugin to 1.0.66
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-03-25 15:23:48 +08:00
liuzhq 32b990b8bc Merge pull request #832 from netease-youdao/liuzhq/chat-nav
feat(cowork): 添加对话索引浮层,支持快速跳转到指定对话轮次
2026-03-25 15:20:58 +08:00
liuzhq 44bc9beec5 feat(cowork): 添加对话索引浮层,支持快速跳转到指定对话轮次 2026-03-25 15:20:00 +08:00
liuzhq b55cb2bac7 Merge pull request #742 from wuleihenbang/weixin-direct-login
feat(im): 微信扫码二维码 2 分钟过期提醒
2026-03-25 14:48:58 +08:00
liuzhq d7f76e962e Merge pull request #723 from nmgwddj/release/2026.03.24
perf(openclaw): convert UTC timestamps to local time in gateway log output
2026-03-25 14:17:59 +08:00
liuzhq c74679c3db Merge pull request #733 from nmgwddj/feature/migrate-runtime-hotfixes
refactor(openclaw): migrate runtime hotfixes to version-specific sour…
2026-03-25 14:17:40 +08:00
liuzhq e48d3f3832 Merge pull request #796 from netease-youdao/liuzhq/exec-claw-confirm
feat: 桌面端危险命令分级授权
2026-03-25 12:19:59 +08:00
nathan 4fcab876ed Merge pull request #780 from netease-youdao/fix/im-chat-sync-right
Fix/im chat sync right
2026-03-25 10:42:20 +08:00
liuzhq 786438d14a merge from main 2026-03-25 10:39:14 +08:00
liuzhq 65715d83de Merge pull request #779 from netease-youdao/feature/openclaw-auth
feat: 添加登陆订阅功能
2026-03-25 10:32:34 +08:00
wulei 81bf2073e8 feat(im): 微信扫码二维码 2 分钟过期提醒
[问题]
微信 QR 码约 2 分钟过期,但前端要等 ~6 分钟(插件 3 次刷新都用完)才提示过期,
用户在此期间扫已过期的二维码会失败且不知道原因

[修复]
- 显示 QR 码后启动 2 分钟 setTimeout
- 超时后显示"二维码已过期,请重新获取"提示 + 扫码按钮
- 扫码成功/切换 platform/组件卸载时清除 timer
2026-03-24 14:51:24 +08:00
wb.lizhihong02 297f9860e1 fix: prefer system Node.js over Electron runtime for MCP bridge servers
Electron's ELECTRON_RUN_AS_NODE=1 mode has a known stdin pipe issue where child processes receive immediate EOF, causing MCP servers to exit with code 0 before the JSON-RPC handshake completes. This results in 'MCP error -32000: Connection closed' and 0 tools discovered.

- Detect system Node.js via PATH lookup and use it to spawn MCP server processes instead of the Electron executable (fixes #728,#724)

- Fall back to Electron runtime only when no system Node.js is available

- Capture MCP server subprocess stderr output for better diagnostics when connections fail
2026-03-24 12:22:44 +08:00
Dylan 04b8652fec refactor(openclaw): migrate runtime hotfixes to version-specific source-level git patches
Replace the code-level string-replacement hotfix system (openclawRuntimeHotfix.ts)
with git patch files applied to OpenClaw TypeScript sources before compilation.
Patches are now organized under scripts/patches/<version>/ directories, tied to
the openclaw version declared in package.json.

- Move 8 patch files into scripts/patches/v2026.3.2/
- Update apply-openclaw-patches.cjs to resolve version from package.json
- Update build-openclaw-runtime.sh patch hash to use versioned directory
- Remove openclaw:hotfix build step from all 6 platform build chains
- Delete openclawRuntimeHotfix.ts, apply-openclaw-runtime-hotfixes.cjs, and tests
- Remove applyRuntimeHotfixes() from openclawEngineManager.ts

Signed-off-by: Dylan <[email protected]>
2026-03-24 11:18:25 +08:00
Dylan 825e9f81e0 perf(openclaw): convert UTC timestamps to local time in gateway log output
OpenClaw's tslog defaults to UTC (prettyLogTimeZone="UTC") and Electron's
utilityProcess V8 isolate reports getTimezoneOffset()=0, so gateway logs
always show UTC regardless of host timezone. Rewrite Z-suffixed ISO
timestamps to local time when forwarding stdout/stderr, and inject TZ env
var for other OpenClaw timezone-dependent code paths.

Signed-off-by: Dylan <[email protected]>
2026-03-24 11:17:02 +08:00
liliangcai 9a2eb288a9 feat(provider): add lobsterai-server fallback mechanism for model resolution
Refactored provider resolution logic to use lobsterai-server as a fallback when primary model configuration fails. Extracted duplicate lobsterai-server initialization code into a reusable `tryLobsteraiServerFallback()` function that attempts to construct a valid provider configuration using auth tokens and server base URL.

Changes:
- Add `tryLobsteraiServerFallback()` helper function to centralize lobsterai-server fallback logic
- Apply fallback at multiple failure points: missing model config, no enabled provider, missing base URL, and missing API key
- Add `supportsImage` field to model type definition in getModels response
- Reduce code duplication by reusing fallback logic instead of inline implementation

This improves resilience by ensuring lobsterai-server can serve as a backup provider when user-configured providers are unavailable or misconfigured.
2026-03-24 06:47:13 +08:00
liuzhq 2047d49aa1 Bump version from 2026.3.23 to 2026.3.24 2026-03-24 04:14:55 +08:00
liliangcai 7a00b2ecf6 feat(auth): document authentication flow and add session tracking
**Changes:**
1. Added comprehensive authentication flow documentation to AGENTS.md
   - Documented 8-step auth process: login → token exchange → persistence → refresh → renewal
   - Included key files reference for token management and deep link handling
   - Explained 30-day rolling refresh token mechanism

2. Implemented session tracking in OpenAI compatibility proxy
   - Added `setCoworkProxySessionId()` to track active cowork sessions
   - Integrated session ID tracking in OpenClawRuntimeAdapter lifecycle
   - Extract and log last user message text for better observability
   - Added regex patterns to strip Claude SDK time context and metadata prefixes

3. Enhanced proxy request logging
   - Log session ID and user message preview with each upstream request
   - Improved debugging capability for multi-session scenarios

**Why:**
- Documentation helps developers understand the complete auth lifecycle
- Session tracking enables better request attribution and debugging
- Message extraction provides context for proxy operations without exposing full payloads
2026-03-24 03:20:30 +08:00
liuzhq 8acd2e63c2 fix: 修复登录浮层超出侧边栏被裁剪,调整为相对侧边栏居中显示 2026-03-24 03:07:29 +08:00
liuzhq 051cb248df fix: 替换 LoginButton 中硬编码测试地址为环境切换逻辑 2026-03-24 02:58:06 +08:00
liuzhq 30e60ec0fb fix: 修复 Windows 冷启动 deep link 丢失、i18n 硬编码中文及 AuthService 监听器堆叠问题 2026-03-24 02:32:24 +08:00
liuzhq 54348df0db feat: 添加 lobsterai:// 自定义协议声明,修复登录回调无法唤起应用 2026-03-24 01:33:01 +08:00
liuzhq 18f6b3f2fe feat: 调整接口环境切换 2026-03-24 00:55:46 +08:00
liuzhq 16dd3eb6cc merge from main 2026-03-23 23:47:55 +08:00
liuzhq 66414508d1 fix(cowork): 修复审批竞态,用户快速批准时确保续接触发
- IM 渠道 execSecurity 设为 full,跳过 gateway 审批流程
- 桌面端手动审批增加 poll 等待 run 结束后续接
2026-03-23 21:01:01 +08:00
liuzhq 11d54358b7 Bump version from 2026.3.22 to 2026.3.23 2026-03-23 19:53:42 +08:00
liuzhq 8886c10185 Merge pull request #714 from netease-youdao/release/2026.03.24
Release/2026.03.24
2026-03-23 19:52:14 +08:00
liuzhq 6d512228db feat: im 命令权限修改 2026-03-23 19:01:49 +08:00
liuzhq a4aa0c8400 feat(cowork): 桌面端危险命令分级授权弹窗
- 本地会话安全命令自动批准,危险命令弹窗确认(destructive 红色/caution 黄色)
- IM 渠道会话全部自动放行,不弹窗
- 移除弹窗中的 AI 流式消息展示
- 新增 exec 安全提示词,防止模型重复确认
2026-03-23 18:50:59 +08:00
liuzhq a2b9372dab feat: 新增 commandSafety 模块,统一危险命令检测逻辑 2026-03-23 18:50:36 +08:00
liuganglg 902b128338 fix: 不同步lobsterai发起的会话 2026-03-23 16:35:09 +08:00
liuzhq c5338b1861 Merge pull request #709 from netease-youdao/liuzhq/ui-optimize
- 支持 Ctrl/Cmd/Alt+Enter 换行,优化输入体验
2026-03-23 15:50:21 +08:00
liuzhq fd23702e01 Merge branch 'release/2026.03.24' into liuzhq/ui-optimize 2026-03-23 15:48:58 +08:00
liuzhq 0d27f48610 feat(cowork): 支持 Ctrl/Cmd/Alt+Enter 换行,优化输入体验 2026-03-23 15:48:06 +08:00
liuzhq 2d8e9b3df5 Merge pull request #708 from winsan-zhang/fix/im-session-input-box-style
fix(cowork): keep full input box for IM channel   sessions
2026-03-23 15:38:16 +08:00
zhangxiaochang c89dd7004a fix(cowork): keep full input box for IM channel sessions instead of small info bar
Replace the collapsed info bar with the standard CoworkPromptInput for
remote-managed (IM) sessions. The input remains disabled with a
placeholder hint, attachment/skill/model-selector buttons are hidden,
and the send button is non-clickable. The stop button stays visible
when streaming.
2026-03-23 15:33:39 +08:00
liuzhq c01361bf21 Merge pull request #706 from netease-youdao/liuzhq/ui-optimize
- 调整 IM 配置项 UI
2026-03-23 15:14:26 +08:00
liuzhq 30bb4b6f91 Merge branch 'release/2026.03.24' into liuzhq/ui-optimize 2026-03-23 15:13:11 +08:00
liuzhq cd3c308188 feat: 统一配置步骤卡片样式与页面整体风格一致 2026-03-23 15:05:59 +08:00