869 Commits

Author SHA1 Message Date
程序员阿江(Relakkes) ab5f66f101 Merge commit '9d598003b' 2026-09-28 01:02:41 +08:00
程序员阿江(Relakkes) 9d598003b0 fix(runtime): recover malformed tool arguments through the agent loop 2026-09-28 01:02:36 +08:00
程序员阿江(Relakkes) a7bc888a07 fix: use model decisions for automatic question answers 2026-09-28 00:00:16 +08:00
程序员阿江(Relakkes) 417ca5f283 fix(agent-teams): dismiss approved configuration and preserve runtime controls 2026-09-27 23:47:38 +08:00
程序员阿江(Relakkes) 45113d11df fix: finalize stopped teammates when roster removal fails 2026-09-27 19:24:52 +08:00
程序员阿江(Relakkes) 700f7b9dcc fix: preserve Space Bunny images through OpenCode Go 2026-09-27 19:24:52 +08:00
程序员阿江(Relakkes) f8d0406d6e fix: preserve session metadata across oversized messages 2026-09-27 19:24:52 +08:00
程序员阿江(Relakkes) 26d3a3d558 fix: restore session model selections and normalize runtime effort 2026-09-27 19:24:52 +08:00
gugugaga 9ce414ae4c fix(provider): honor configured output budget for direct Anthropic providers (#1392)
* fix(provider): honor configured output budget for direct Anthropic providers

Anthropic-format providers connecting directly to an upstream could not set a
reply output budget: the field was hidden in the UI, stripped before
persistence, and dropped by a local-proxy-only gate at request build time, so
low-cap relay upstreams returned 400/truncation with no user recourse.

Surface the budget for Anthropic, persist it as a budget-only object so stale
OpenAI-compatibility options cannot leak, and remove only the numeric gate in
getConfiguredProviderOutputBudget. getOutputBudgetHeaders keeps its local-proxy
guard so the internal provenance header never reaches an external provider.

Adds kernel/desktop unit tests for the direct-budget path and the provenance
non-leak.

* fix(provider): disable optional manual thinking below its token minimum

---------

Co-authored-by: gugugaga <267102352+omazili-guga@users.noreply.github.com>
Co-authored-by: 程序员阿江(Relakkes) <relakkes@gmail.com>
2026-09-27 19:11:04 +08:00
yuehua-meng 3326a880e6 teamLib 里一半写路径绕过文件锁,且所有写都是非原子裸写 (#1387)
* fix(swarm): serialize team config writes under the file lock

Route every team config.json mutation through mutateTeamFileAsync so each update reads its snapshot inside the lock, and publish via a same-directory temp file + rename with bounded Windows retry instead of truncating the live file. Await the now-async writers in the UI and CLI callers.

* test(teams): cover TeamsDialog mode cycling and teammate removal

The changed-lines gate scored TeamsDialog.tsx as 0/20 because no test
imported it, so the new async removeMemberFromTeam/setMemberMode paths went
unrecorded in LCOV. Drive both the list and detail views through input
handlers and keybindings, including the rejection paths, to bring
changed-lines coverage from 84.91% to 93.53%.
2026-09-27 19:02:19 +08:00
MikhailTail 760a858e8e fix(computer-use): 修正 Windows 上垂直滚动方向相反 (#1378)
executor 的 delta 是平台原生的滚轮单位,正值向上滚(MOUSEEVENTF_WHEEL
的语义),macOS helper 也是同一套约定。但 handleScroll 把
scroll_direction "down" 映射成了正 dy,于是垂直方向整个反了:down 实际
向上滚,且目标面板已在顶部时表现为"完全无反应"。

只翻转垂直轴。水平轴的映射(right → +dx)与 MOUSEEVENTF_HWHEEL 的正值
语义一致,保持不变。

同时在 platformRouting.test.ts 的 win32 fixture 里记录 scroll 的 delta,
并断言 down → -amount、up → +amount,锁住该映射。

Co-authored-by: 程序员阿江-Relakkes <relakkes@gmail.com>
2026-09-27 19:01:57 +08:00
Logan-Luo 462a8dfde5 fix(title): budget thinking models in AI session title generation (#1340) (#1382)
Co-authored-by: realLoganLuo <realLoganLuo@users.noreply.github.com>
Co-authored-by: 程序员阿江-Relakkes <relakkes@gmail.com>
2026-09-27 18:57:01 +08:00
程序员阿江(Relakkes) 4ef3867ef3 fix(server): bound session discovery and report history page limits 2026-09-25 20:08:56 +08:00
程序员阿江(Relakkes) 143e4dea13 fix(server): allow trusted dev H5 control preflight 2026-09-25 19:40:04 +08:00
程序员阿江(Relakkes) f49e6ffae8 fix: keep scheduled task history readable after concurrent runs 2026-09-25 19:39:50 +08:00
程序员阿江(Relakkes) 98b67dda4d fix: preserve streamed reply when generation stops 2026-09-25 19:39:45 +08:00
程序员阿江(Relakkes) f84a456977 fix: repair team review results and shutdown visibility 2026-09-25 19:39:40 +08:00
程序员阿江(Relakkes) ddef7950ff merge: update OAuth model support 2026-09-25 17:59:01 +08:00
程序员阿江(Relakkes) 9438743665 feat: update OAuth models and add configurable mappings 2026-09-25 17:58:47 +08:00
程序员阿江(Relakkes) 2cac7c471b feat(agent-teams): add human review and per-member runtime selection 2026-09-25 17:47:39 +08:00
程序员阿江(Relakkes) 8e8e92c82b feat(connectors): add Remotion skill plugin 2026-09-25 17:43:20 +08:00
程序员阿江(Relakkes) 089ba2063d merge: integrate workspace side chats with local main 2026-09-25 15:56:54 +08:00
程序员阿江(Relakkes) c5892b5353 feat: add contextual side chats in desktop workspace 2026-09-25 15:55:13 +08:00
程序员阿江(Relakkes) afbf56d0d4 Merge commit '20bb48128' 2026-09-25 14:50:42 +08:00
程序员阿江(Relakkes) 20bb48128b fix: recover oversized conversations using provider token limits 2026-09-25 14:50:35 +08:00
程序员阿江(Relakkes) f26c1770ea fix(desktop): prevent duplicate prompt replay after guiding a conversation 2026-09-25 14:26:50 +08:00
程序员阿江(Relakkes) 7e7d455249 fix: align Claude OAuth with 2.1.281 and harden CLI compatibility 2026-09-25 02:34:18 +08:00
程序员阿江(Relakkes) 5d6f5d6609 feat(desktop): auto-answer pending questions after timeout 2026-09-24 18:57:37 +08:00
程序员阿江(Relakkes) 3597b9f973 fix(server): forward Kimi K3 images via OpenCode Go 2026-09-24 01:05:23 +08:00
yuehua-meng cf0ef50bee Merge branch 'main' into fix/cron-concurrent-writes 2026-09-23 20:24:54 +08:00
yuehua-meng c05d24c5e2 fix: serialize scheduled task persistence to prevent concurrent overwrites
并发读-改-写会导致数据丢失(执行时间被覆盖、创建不落盘、已删任务复活)。用模块级互斥队列串行化写入,并重试 EPERM 错误。
2026-09-23 20:03:20 +08:00
程序员阿江(Relakkes) 1fc51a30a7 fix(server): restore preflight gates and Fable 1M persistence 2026-09-23 16:05:13 +08:00
王珺祺 1c4fd1ac59 feat(agent-teams): 显示成员模型信息 + 修复 CORS 预检 + 补 Fable 槽位
1. Agent Teams UI 模型显示
   - 成员卡片显示模型短名 (opus/sonnet/haiku/fable)
   - Inspector 详情面板显示完整模型 ID
   - 继承主代理时显示「Inherit from lead · claude-opus-4-8」
   - 历史帧不再丢失模型信息
   - 剥离 [1m] 标记避免标签过长

2. 修复 CORS 预检导致 Failed to fetch
   - Loopback 源的 OPTIONS 预检提前应答,不经过 H5 门禁
   - 远程源仍保持严格的 403 拒绝

3. 修复 store 丢弃 model 字段
   - toTeamMember 现在保留 model

4. 补 Fable 模型槽位
   - MODEL_SLOTS 从 4 个扩展到 5 个
   - Model1mSupport schema 增加 fable
   - cc-switch 导入和运行时环境写入 ANTHROPIC_DEFAULT_FABLE_MODEL
   - Fable 槽位使用独立占位文案(不回落到主模型)

5. 测试
   - 新增 12 个回归测试
   - 桌面套件: 6006 passed
   - 服务端套件: 5488 passed
2026-09-23 14:51:55 +08:00
程序员阿江(Relakkes) 23eb6ce9b6 fix(sessions): persist collaboration titles in local index 2026-09-22 09:16:24 +08:00
程序员阿江(Relakkes) 1be51c9298 fix(sessions): surface collaboration titles immediately 2026-09-22 08:41:02 +08:00
程序员阿江(Relakkes) 2b27167d68 fix(sessions): preserve collaboration titles across worktree startup 2026-09-22 08:05:34 +08:00
程序员阿江(Relakkes) 0258ff7f96 fix(desktop): diagnose and reduce session loading stalls 2026-09-22 07:29:50 +08:00
程序员阿江(Relakkes) 613cf1374c fix(sessions): keep collaboration titles when the placeholder transcript is removed
Worktree startup writes the title onto the launch-directory transcript, then deletes that file after the CLI moves into the worktree.
2026-09-22 05:23:14 +08:00
程序员阿江(Relakkes) 4ed18f090e fix(sessions): stop referenced reads from stalling the session list
A referenced ReadSession walked backward through the whole transcript and scanned it from the start, which starved the sidebar poll into a flashing load-failure banner. Bound that read and keep a failed list refresh off the sidebar.
2026-09-22 04:46:21 +08:00
程序员阿江(Relakkes) 6a287bf210 fix(sessions): keep one transcript when a worktree session starts
Startup metadata could recreate the source placeholder after the CLI had written the conversation into its worktree. Open and update the file that already contains the conversation.
2026-09-22 03:47:45 +08:00
程序员阿江(Relakkes) b21dabc5dd fix(sessions): keep mention search and transcript edits off the request thread
A Chinese @ query scanned the whole session table twice and then ran a body search, so every other request queued behind it. Cap that scan, skip the body lookup once the budget is spent, and stream session clears and trims instead of holding the transcript in memory.
2026-09-22 03:29:35 +08:00
程序员阿江(Relakkes) 9c88a5cc47 fix(sessions): keep a servable index snapshot stable while it reconciles
The sidebar's "using standard history" notice flickered because a busy
passive checkpoint marked the index degraded, and the next reconciliation
cleared it again, bouncing the session list between the index and a full
JSONL scan. Incremental reconciliation now keeps serving a snapshot that
already has committed rows, and a transient SQLITE_BUSY no longer changes
the public state.
2026-09-22 03:05:19 +08:00
程序员阿江(Relakkes) b5a6af8966 fix(sessions): clamp collaboration waits to 10s–5min
A zero timeout let a session poll WaitSessions in a tight loop. Short requests now wait the 10s minimum and report the clamp, while a newer revision still returns immediately.
2026-09-22 02:56:35 +08:00
程序员阿江(Relakkes) d25b789803 Merge branch 'main' into worktree-desktop-main-a8423a35 2026-09-22 01:52:00 +08:00
程序员阿江(Relakkes) cd0d2a1d7b fix(desktop): mount the whole transcript so large sessions scroll smoothly
The bounded history window stitched pages behind the scrollbar and dropped
rows from the far end, which made big sessions flicker and lag. Load the
transcript in one byte-bounded response, keep it as a single mounted array,
and remember disclosure choices across virtualized row remounts.
2026-09-22 01:51:55 +08:00
程序员阿江(Relakkes) b3c09a1e4b refactor: render session collaboration as inline messages
Drop the collapsible collaboration panel and show cross-session deliveries as ordinary user bubbles with a source label, while created sessions carry titles immediately.
2026-09-22 01:20:05 +08:00
程序员阿江(Relakkes) a26deab8d7 feat(provider): support Grok 4.7 and resolve effort from the live catalog
Grok 4.7 shipped with a faster variant (grok-4.7-build-fast), and the
gateway's /v1/models feed no longer advertises grok-composer-2.5-fast.

Resolving reasoning effort against the bundled catalog alone gave a model
newer than this build no effort at all, and the request transform reads
that as a model which rejects the parameter and strips the whole reasoning
block. Selecting xhigh on 4.7 therefore ran at the upstream default, while
the picker and the server-side validation both accepted the choice. Effort
now resolves against the live catalog first, and a model neither catalog
describes keeps the requested effort instead of losing it.

The runtime catalog pointer moves into the dependency-free catalog module
so the request transform can read it without an import cycle back through
fetch.ts.

Both bundled catalogs gain 4.7 and its fast variant and default to
grok-4.7, and the retired composer model migrates pinned sessions to that
default rather than sending an ID the gateway no longer serves.
2026-09-22 00:43:44 +08:00
程序员阿江(Relakkes) d922507fc6 Merge commit 'edc612c34' 2026-09-21 22:24:45 +08:00
程序员阿江(Relakkes) edc612c34f fix: preserve session payloads across bounded history and replay 2026-09-21 22:24:34 +08:00
程序员阿江(Relakkes) 02a4a66a11 fix: filter external sources from ClawHub search results 2026-09-21 22:14:36 +08:00