程序员阿江(Relakkes)
8ae68c1805
fix(desktop): ClaudeOfficialLogin — i18n、错误反馈、冗余清理
...
Code review follow-ups on ae5437a:
- I1: 使用 useTranslation 替代硬编码中文, 新增 settings.claudeOfficialLogin.* 双语 key
- I2: shellOpen 失败时 console.error + 写入 store.error, 不再静默吞
- M1: disabled={isLoading || false} → disabled={isLoading}
- M2: onClick={() => logout()} → onClick={logout}
- M3: 首次 fetchStatus 失败时显示 error 而非永远 "加载中…"
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 20:33:08 +08:00
程序员阿江(Relakkes)
ae5437af43
feat(desktop): add ClaudeOfficialLogin component
...
未登录时显示引导文案 + 登录按钮(点击 Tauri shell.open 打开浏览器)。
已登录时显示 subscription type + 登出按钮。Polling 由 store 驱动,
浏览器完成 OAuth 后 2s 内 UI 自动更新。
使用 Tailwind + CSS custom properties 对齐项目现有组件风格。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 20:28:29 +08:00
程序员阿江(Relakkes)
e9ae8c93ae
fix(desktop): haha-oauth store — logout 停 polling + recursive setTimeout 避免 overlap
...
Code review follow-ups on f10396e:
- logout() 首行调 stopPolling, 避免登出后 poll timer 还在跑
- setInterval 改为 recursive setTimeout, fetchStatus >2s 时不会产生 parallel 请求
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 20:26:47 +08:00
程序员阿江(Relakkes)
f10396e5bf
feat(desktop): frontend API client + zustand store for haha OAuth
...
- api/hahaOAuth.ts: start/status/logout 3 个方法,基于现有 api client
- stores/hahaOAuthStore.ts: 状态管理 + 2s 间隔轮询 /status
port 从 getBaseUrl() 动态 parse,避免 Tauri 每次启动端口变化时失效。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 20:21:15 +08:00
程序员阿江(Relakkes)
669be1fbc6
fix(desktop): align conversationService log format + document deferred import
...
Code review follow-up on 94b445c:
- console.error 改用 err instanceof Error ? err.message : err (跟 hahaOAuthService 一致)
- dynamic import hahaOAuthService 加注释说明 defer 目的
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 20:19:31 +08:00
程序员阿江(Relakkes)
94b445cd06
feat(desktop): inject CLAUDE_CODE_OAUTH_TOKEN from haha oauth.json
...
在 buildChildEnv 官方模式分支下,调 hahaOAuthService.ensureFreshAccessToken()
(自动 refresh),成功则通过 env 注入给 CLI 子进程。
CLI 的 src/utils/auth.ts:1260 优先读 CLAUDE_CODE_OAUTH_TOKEN env,完全
不碰 Keychain —— DMG 装的 .app 在 macOS 下也能正常用官方 Claude,不再 403。
buildChildEnv 签名改为 async, 所有 caller 加 await。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 20:12:43 +08:00
程序员阿江(Relakkes)
7421db2857
fix(desktop): align haha-oauth handler with sibling error-handling convention
...
Code review follow-up on 142eb9cd:
- 加 outer try/catch + errorResponse wrapper (parity with providers.ts)
- 400 响应改用 ApiError.badRequest (shape 跟其他 handler 一致: {error: 'BAD_REQUEST', message})
- test 加上对 error shape 的断言
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 20:06:22 +08:00
程序员阿江(Relakkes)
142eb9cd11
feat(desktop): add /api/haha-oauth REST endpoints
...
Endpoints:
- POST /api/haha-oauth/start — 生成 PKCE,返回 authorize URL
- GET /api/haha-oauth/callback — 浏览器 redirect 到此,完成 token exchange,
渲染 success/fail HTML 页(自动关闭)
- GET /api/haha-oauth — 查询登录状态(不回传 token 本体)
- DELETE /api/haha-oauth — 登出,清除 token 文件
前端用 start 拿到 authorizeUrl → shell.open(浏览器) → 浏览器走 OAuth → redirect
到 callback → callback 完成后显示 '登录成功,可关闭窗口' 页面。前端并行轮询
/api/haha-oauth 检测 loggedIn=true 后刷新 UI。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 19:59:42 +08:00
程序员阿江(Relakkes)
a1b2530fab
fix(desktop): cleanup HahaOAuthService — 删除 dead code、加 fetch timeout、log refresh errors
...
Code review follow-ups on b0ca5861:
- 删除 dead code exchangeFn/setExchangeFn (completeSession 总走 exchangeWithCustomCallback)
- exchangeWithCustomCallback fetch 加 15s AbortController timeout (parity with client.ts)
- ensureFreshAccessToken refresh 失败时 console.error,不再静默吞异常
- test 删除未用的 mock import
- getOauthConfig 改为 static import
- saveTokens 加注释说明 atomic write 意图
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 19:55:12 +08:00
程序员阿江(Relakkes)
b0ca586190
feat(desktop): add HahaOAuthService for self-managed Claude OAuth
...
新增 service 层管理桌面端自己的 OAuth token 生命周期:
- PKCE + state 生成(复用 oauth/crypto.ts)
- Token 存 ~/.claude/cc-haha/oauth.json, 权限 0600
- In-memory session map (5min TTL)
- ensureFreshAccessToken: 自动 refresh (5min buffer)
目的: 绕开 macOS Keychain ACL 对未公证 .app 的静默拒绝,
让 DMG 装的 .app 也能正常走官方 Claude OAuth。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 19:38:31 +08:00
程序员阿江(Relakkes)
25bd594dcf
chore: 新增 LOC 统计脚本并清理旧 PLAN.md
...
- scripts/count-app-loc.ts: 按 area/purpose/extension 维度统计代码行数
- bun.lock: 依赖更新
- PLAN.md: 删除已废弃的根目录 plan(plan 已迁移到 docs/superpowers/plans/)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 19:32:52 +08:00
言志伟
bd15816a29
fix: resolve Chinese mojibake issue
2026-04-17 17:04:17 +08:00
言志伟
02a2a622e8
fix: replace remaining em-dash mojibake in claude.ts
...
25 occurrences of corrupted em-dash (鈥?) were still present in
code comments from the initial import. Restored to proper em-dash
(—) with trailing space.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 14:57:14 +08:00
程序员阿江(Relakkes)
28b1ccf0d2
fix(desktop): 移除 canonical .app 重签名,避免 Keychain ACL 失配导致 403
...
症状: 桌面端激活 Claude Official provider 后所有请求报
403 "Request not allowed",Tauri 原生产物(target/.../bundle/macos/)
能跑,但脚本输出的 canonical 产物(build-artifacts/macos-arm64/)报错。
根因: 脚本里的 sign_app_bundle() 用 `codesign --force --deep --sign -`
对 sidecar 和外层 .app 重签,想统一 signing identifier,但这会改变
sidecar binary 的 code signature hash。macOS Keychain ACL 按 hash
识别 caller —— 重签后的 sidecar 对 Keychain 来说是"陌生 binary",
弹"允许访问"对话框但 sidecar 无 UI 弹不出,被静默拒绝,CLI 读不到
OAuth token,SDK 构造空 Authorization,Anthropic 返回 403。
修复: 移除 sign_app_bundle 及其调用。Tauri 的 --no-sign flag 只是不做
Developer ID 签名,ad-hoc 签名 Tauri 自己已经做好了,再签一次纯属
多此一举,还破坏了 Tauri 签好的 Keychain ACL 关系。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 21:13:43 +08:00
程序员阿江(Relakkes)
d0cf2544d2
fix(desktop): DMG Finder 美化失败时降级为默认布局而非整脚本 fail
...
macOS Sequoia+ 对 Finder AppleScript 做了限制,"toolbar visible"
"statusbar visible" 之类的 container window 属性不再支持,会返回
-10006 错误。在 set -e 下导致整个 build-macos-arm64.sh 炸掉,canonical
目录里没有 DMG。
美化失败不是 blocker —— DMG 本身是可用的,只是用户双击打开看到的
是 Finder 默认排布。这里:
- osascript 非零退出只 warn,不让 set -e 中断脚本
- 顺手把 hdiutil detach 也加了 -force fallback,osascript 可能
把 volume 窗口打开了导致 normal detach 因 "Resource busy" 失败
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 21:02:57 +08:00
程序员阿江(Relakkes)
bea8153d17
fix(desktop): build 脚本加 fresh-build 保险,避免 sidecar 缓存复用
...
修 src/ 后 build 出来的 .app 里 sidecar 还是旧代码的诡异问题 ——
Bun.build/Tauri bundler 某层缓存把 desktop/src-tauri/binaries/ 里的
旧 sidecar binary 复用进了新 .app,即便删掉 .app 也救不回来,因为
binary 源目录不在 .app 里。
加 3 道保险:
- 硬删 sidecar 源 binary + Tauri bundle + 前端 dist 目录
- 显式跑 bun run build + bun run build:sidecars(set -e 会捕获失败)
- tauri build 用 --config 覆盖 beforeBuildCommand 为 no-op,避免
build:sidecars 被重复执行浪费 ~10s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 20:40:46 +08:00
程序员阿江(Relakkes)
ec3be47108
fix(desktop): provider 激活后联动重置聊天页 currentModel
...
切换模型供应商后聊天页底部选择器仍显示上一个 model, 要手动点一下才切过去。
根因: settings.json 的 model 字段 (explicit current model) 不会在
activateProvider/activateOfficial 时被清除, 但新 provider 的模型列表里
往往没这个旧 id, ModelSelector 就卡在"显示旧名字 + radio 不选中"的状态。
providerStore.activateProvider 成功后主动 setModel(provider.models.main)
+ settingsStore.fetchAll() 刷新 availableModels / currentModel。
activateOfficial 对应重置到 'claude-opus-4-6' (与后端 DEFAULT_MODEL 一致)。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 19:45:02 +08:00
程序员阿江(Relakkes)
05cbc0119e
fix(desktop): 激活官方时把 CLI 标记为 managed-OAuth 避免 403
...
桌面端激活"官方"后请求被服务端返回 403 "Request not allowed":
CLI 继承到的 env 里只要残留 ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN /
apiKeyHelper, isAnthropicAuthEnabled() 就会静默禁用 OAuth, 请求缺
oauth-2025 beta header。
conversationService.buildChildEnv 新增 shouldMarkManagedOAuth(): 只有
cc-haha/settings.json 没写 provider env (即"官方"模式) 时,才给子进程设
CLAUDE_CODE_ENTRYPOINT=claude-desktop, 让 CLI 忽略外部凭据强制走 OAuth。
自定义 provider 场景下不设, 避免 CLI 把 provider 的 AUTH_TOKEN 当作需忽略
的残留、错走 OAuth 打到第三方 endpoint。
详见 src/utils/auth.ts isManagedOAuthContext()。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 19:44:54 +08:00
程序员阿江(Relakkes)
4c4945c9a8
fix(ci): Linux AppImage 构建补充 libfuse2 依赖
...
linuxdeploy 工具链本身是 AppImage 格式,运行时需要 libfuse2;
Ubuntu 22.04(x64 / ARM)默认不带,导致 AppImage bundle 失败。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 16:19:45 +08:00
程序员阿江(Relakkes)
c99fed1664
docs(im): 重写飞书/Telegram 接入指南,替换为真实操作截图
...
- 飞书:简化为「一键创建 OpenClaw 官方模板 + 配置自定义菜单 + 桌面端配对」的三步流程,新增 15 张实操截图
- Telegram:精简为「BotFather 取 Token + 桌面端填 Token + 配对」三步,新增 6 张截图
- 两份文档均保留命令别名、权限审批、环境变量等代码层信息,并同步 FAQ 到当前 adapter 实现
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 15:06:36 +08:00
程序员阿江(Relakkes)
560e365e79
docs(readme): 新增「请作者喝杯咖啡」打赏区块
...
在 README(中文/英文)赞助与合作区块之后追加打赏入口,同时内置微信赞赏码、支付宝收款码和 Buy Me a Coffee 入口,降低个人用户支持门槛。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 15:06:27 +08:00
程序员阿江(Relakkes)
970521a41f
docs: 重写 README 精炼开头,补充桌面端预览与赞助信息,更新 Computer Use Windows 支持
...
- README/README.en:精简开头为单句介绍,新增桌面端预览区(2x3 截图网格 + 下载按钮)、桌面端导航链接、赞助与合作联系方式
- docs/index:首页新增桌面端功能卡片,logo 替换为去背景透明 PNG
- docs/features/computer-use:更新 Windows 平台完整支持说明,补充 win_helper.py 和 Windows 依赖说明
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 11:26:36 +08:00
程序员阿江(Relakkes)
467bc85300
feat(docs): 集成 vitepress-plugin-mermaid 支持 Mermaid 流程图渲染
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 11:26:29 +08:00
程序员阿江-Relakkes
8f0e46ec5c
Merge pull request #59 from xiaomingbusi/pr/companion-randomization
...
feat: fix companion randomization - support 18 species with rarity sy…
2026-04-16 11:02:14 +08:00
程序员阿江(Relakkes)
3893d1c759
docs(desktop): 补充 Write 工具 Diff 视图截图
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 10:55:03 +08:00
程序员阿江(Relakkes)
0b4c742d55
fix(desktop): 修复桌面端多个渲染和权限问题
...
1. 修复 Tauri CSP 导致 Emotion CSS-in-JS 样式失效的问题
- Tauri 编译时自动给 style-src 添加 nonce,使 unsafe-inline 失效
- 添加 dangerousDisableAssetCspModification 阻止 Tauri 修改 style-src
- 解决 DiffViewer 背景色/缩进等样式丢失
2. 修复 CodeViewer 代码块内容不显示的问题
- react-shiki 异步加载 WASM 期间返回 null,代码区域空白
- 添加 CodeArea 组件,纯文本 fallback + MutationObserver 检测加载完成
3. 修复 Bypass 权限模式切换不生效的问题
- CLI 的 bypassPermissions 需要启动时带 --dangerously-skip-permissions
- 运行中切换被 CLI 静默拒绝,前端不知情
- 改为重启 CLI 子进程以正确的参数启动
4. 修复 stream_event tool input JSON 解析失败时 DiffViewer 不渲染
- content_block_stop 的 JSON parse 失败时暂存到 pendingToolBlocks
- 由后续 assistant 消息补发完整的 tool input
2026-04-16 10:50:02 +08:00
程序员阿江(Relakkes)
870e03d88b
docs(desktop): 全面更新桌面端文档,替换真实截图,修复 DMG 布局
...
- 重写 02-architecture.md:修正 Rust 函数签名、补充 AdapterSidecar/Updater 插件、更新目录结构
- 重写 03-features.md:补充 ComputerUse/ToolInspection/ImageGallery 等新组件和页面
- 精简 04-installation.md:仅保留 macOS/Windows,新增 Web UI 模式说明
- 精简 index.md:移除过时配图说明表格
- 删除 8 张 AI 渲染概念图,替换为 9 张真实应用截图
- 新增 desktop/README.md:开发/构建指南 + macOS 常见问题
- 修复 DMG 构建脚本:通过 AppleScript 控制图标布局(App 左/Applications 右)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 10:25:36 +08:00
程序员阿江(Relakkes)
ec436986c5
feat(computer-use): 添加 Windows 平台支持
...
Computer Use 原本仅限 macOS,现在扩展支持 Windows:
- 新增 win_helper.py,用 win32gui/psutil/pyperclip/screeninfo 替代 macOS 专有 API
- 服务端按平台选择 helper 脚本、venv 路径 (bin→Scripts)、Python 命令 (python3→python)
- 前端权限区域仅在 macOS 上显示,Windows 无需 TCC 权限
- 跨平台测试验证两个 helper 的命令集和协议一致性
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 10:03:27 +08:00
xiaomingbusi
1a07c25059
feat: fix companion randomization - support 18 species with rarity system
2026-04-16 08:35:52 +08:00
程序员阿江(Relakkes)
abf8e3f141
fix(ci): artifact 名称加上产品名和版本号
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 22:40:32 +08:00
程序员阿江(Relakkes)
4919405948
fix(ci): artifact 名称加上产品名和版本号
...
格式: Claude-Code-Haha-v{version}-{platform}
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 22:40:13 +08:00
程序员阿江(Relakkes)
da95101aa7
fix(ci): 补充 dev 构建 workflow 的 adapters 依赖安装
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 22:16:09 +08:00
程序员阿江(Relakkes)
08534e70af
fix(ci): 补充 adapters 依赖安装步骤
...
build:sidecars 编译时引用了 adapters/ 下的模块(grammy, @larksuiteoapi/node-sdk),
需要先安装 adapters 目录的依赖。同时修复 release-desktop.yml 的相同问题。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 22:15:51 +08:00
程序员阿江(Relakkes)
5b2c414277
fix(ci): 修复 dev 构建 workflow 矩阵 JSON 输出格式
...
多行 JSON 写入 GITHUB_OUTPUT 不被支持,改为用 jq -c 压缩成单行输出。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 21:57:23 +08:00
程序员阿江(Relakkes)
97a32b5347
fix(ci): 修复 dev 构建 workflow 矩阵 JSON 输出格式
...
多行 JSON 写入 GITHUB_OUTPUT 不被支持,改为用 jq -c 压缩成单行输出。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 21:57:03 +08:00
程序员阿江(Relakkes)
a143477969
ci(desktop): 添加开发阶段桌面端构建 workflow
...
支持在任意分支手动触发构建,产物上传为 GitHub Artifact 供下载测试。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 21:54:44 +08:00
程序员阿江(Relakkes)
5daa3812fb
ci(desktop): 添加开发阶段桌面端构建 workflow
...
支持在任意分支手动触发构建,产物上传为 GitHub Artifact 供下载测试,
无需签名密钥,可选单平台或全平台构建。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 21:50:37 +08:00
Relakkes Yang
5d243b657a
feat(desktop): Windows 自定义标题栏 & 服务端改进
...
- Windows 上隐藏原生菜单栏和窗口装饰,前端渲染自定义窗口控制按钮(最小化/最大化/关闭)
- macOS 保持原生菜单栏不变(条件编译)
- Sidebar 在 Windows 上不再添加 macOS 红绿灯的额外顶部间距
- 新增 Windows 构建脚本和 NSIS 安装钩子
- 服务端 CORS、会话服务、对话服务改进及测试补充
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 21:29:35 +08:00
程序员阿江(Relakkes)
5016bc0049
chore: 移除启动时自动检测认证并跳转设置页的逻辑
2026-04-15 14:43:32 +08:00
程序员阿江(Relakkes)
5fdf50436c
test: 更新测试用例适配 provider 隔离与新 API
...
- providers-real.test.ts 重写适配 ModelMapping 对象格式
- e2e 测试适配 cc-haha/settings.json 路径
- settings.test.ts 验证写入隔离
- models.ts 小调整
2026-04-15 14:19:04 +08:00
程序员阿江(Relakkes)
0e60cadb13
chore(desktop): 构建改进与 UI 完善
...
- build-sidecars.ts macOS 编译后自动 ad-hoc codesign
- build-macos-arm64.sh 构建流程优化
- tauri.conf.json 配置更新
- i18n 中英文翻译补充
- Settings 页面与 uiStore 调整
2026-04-15 14:18:55 +08:00
程序员阿江(Relakkes)
651ab936b7
fix: 停止生成不再显示错误提示 & GrowthBook clientKey 检查
...
- ws/handler.ts 增加 sessionStopRequested 追踪,用户主动停止时返回 message_complete 而非 error
- growthbook.ts 在 isGrowthBookEnabled() 中先检查 clientKey 是否存在
2026-04-15 14:18:46 +08:00
程序员阿江(Relakkes)
166fe5b676
fix: Computer Use 点击功能修复
...
- ensureRuntimeFiles() 改为始终同步源文件而非仅缺失时复制
- pre-authorized apps 增加 tier: 'full',与现有 allowedApps 合并而非替换
- normalizeOsPermissions() 将 screenRecording: null 视为非阻塞
- config 路径改为 cc-haha/computer-use-config.json
- mac_helper.py 改进鼠标点击与坐标处理
2026-04-15 14:18:37 +08:00
程序员阿江(Relakkes)
b002447436
fix: provider 隔离与 Claude 官方认证修复
...
- provider 配置写入 ~/.claude/cc-haha/settings.json,不再污染原版 settings.json
- 子进程 env 剥离 PROVIDER_ENV_KEYS,防止残留 key 传递
- bin/claude-haha 在 CC_HAHA_SKIP_DOTENV=1 时用 --env-file=/dev/null 阻止 Bun 自动加载 .env
- managedEnv.ts 增加 getCcHahaSettingsEnv() 读取隔离配置
- 新增 /api/providers/auth-status 端点,启动时检测认证状态
- AppShell 启动时无认证则跳转 provider 设置页
2026-04-15 14:18:25 +08:00
程序员阿江(Relakkes)
23b31b397a
Prevent local team sessions from dropping members and stalling adapters
...
This bundles the pending desktop/server team-session fixes with the local adapter recovery changes already in the worktree. The team path now keeps teammate membership stable under concurrent spawns, surfaces real teammate identities in the desktop UI, and allows direct interaction with member transcripts. The adapter changes recover automatically when stale thinking signatures invalidate an existing session.
Constraint: Team config writes can happen concurrently while multiple reviewers spawn in parallel
Constraint: Desktop member views must follow mailbox/transcript semantics rather than hijacking teammate runtime sessions
Rejected: Keep relying on config.json alone for member discovery | in-process teammates can be lost after concurrent writes
Rejected: Open teammate sessionIds as normal desktop sessions | would attach a second CLI instead of the running teammate
Confidence: medium
Scope-risk: moderate
Reversibility: clean
Directive: Preserve locked team-file mutation for any future teammate registration path and keep teammate labels sourced from member names before agent types
Tested: bun test src/server/__tests__/teams.test.ts src/server/__tests__/team-watcher.test.ts
Tested: cd desktop && bun run test --run src/stores/chatStore.test.ts src/pages/ActiveSession.test.tsx
Tested: cd desktop && bun run lint
Tested: cd desktop && bun run build
Not-tested: Manual end-to-end validation against a live Agent Teams run in the desktop app
2026-04-14 17:27:07 +08:00
程序员阿江(Relakkes)
9eb3be4b11
perf: optimize recent projects loading with parallel git queries and caching
...
目录选择器每次打开都串行执行大量 git 子进程导致卡顿,现改为并行查询 + 前后端双层 30s 缓存,选择新目录时自动失效缓存。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 16:02:35 +08:00
程序员阿江(Relakkes)
8888e1c3fb
chore: comprehensive code review fixes — security, perf, leaks, quality, docs
...
- security: XSS sanitization with DOMPurify in Markdown/Mermaid/PermissionDialog;
path whitelist in filesystem API; fake keys in test/config files
- perf: fine-grained Zustand selectors in Sidebar/StatusBar/ContentRouter;
50ms throttle on streaming deltas; React.memo + useMemo in MessageList;
useRef for frequent keyboard shortcut state; AbortController 30s timeout
- leaks: WS session TTL timers (5-min cleanup on close); batch splice for
sdkMessages/stderrLines; folderPath validation in cronScheduler
- quality: optimistic update rollback in settingsStore; error state in
providerStore/teamStore; i18n for all hardcoded English strings
- docs: desktop architecture and features docs updated; VitePress nav fixed
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 22:27:17 +08:00
程序员阿江(Relakkes)
a0fa8751b3
ui(desktop): localize macOS menu items to Chinese (关于/设置)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 20:57:46 +08:00
程序员阿江(Relakkes)
301e0c3a33
feat(desktop): route macOS native About menu to in-app Settings page
...
Replace the default macOS about dialog with a custom menu that emits
a Tauri event, navigating to the Settings > About tab within the React app.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 20:30:57 +08:00
YanZhiwei
fff08ee545
fix: address PR review issues for Azure Codex integration
2026-04-12 21:12:53 +08:00