Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
401 commits
Select commit Hold shift + click to select a range
081cbb5
fix(P0): enable Immer MapSet plugin in production entry
Aug 13, 2026
73b3be8
Merge remote-tracking branch 'upstream/main' (sync 20260813, 3 commi…
Aug 13, 2026
a0f3e05
feat(task): background completion notice carries final output text
Aug 13, 2026
5dbfb33
feat(group-chat): W1 global data ownership (PathManager group_chats_r…
Aug 13, 2026
8346a73
feat(group-chat): W2 member source unification (real Claw sessions ∪ …
Aug 13, 2026
5199f1a
fix(group-chat): W2 P2-1/P2-2 (梦情退回修正 114/120)
Aug 13, 2026
b42a1f0
test(group-chat): W3 cross-process lock contention harness + concurre…
Aug 13, 2026
a7b9639
feat(group-chat): W4 frontend init contract (plugin checklist + store…
Aug 13, 2026
3521083
fix(group-chat): W4 P2-1 consistency assertion dual-source check (梦情退…
Aug 13, 2026
f649ecb
feat(group-chat): W5 reply ingestion reliability (retry + counter + a…
Aug 13, 2026
c8cbc90
fix(CI): W2-W5 CJK comments violate i18n audit (budget=0)
Aug 13, 2026
4183d20
fix(CI): remove uncontractable var() fallbacks in CreateLegionPage.scss
Aug 13, 2026
080741b
fix(CI): register inactiveBadge appearance part in both descriptors
Aug 13, 2026
422c5b2
Merge remote-tracking branch 'upstream/main'
Aug 13, 2026
be9c244
fix(group-chat): re-sync room list after create so new room is visible
Aug 13, 2026
1179400
feat(group-chat): auto-migrate legacy workspace-local group chats to …
Aug 13, 2026
e74c074
Merge remote-tracking branch 'upstream/main'
Aug 14, 2026
5392cd2
feat: 群聊 v3 + 异步回复全文化(R-GC+R-AR 双链交付)
Aug 14, 2026
028ce6d
fix(ci): core-boundaries 保留符号下限 34→15(GroupChat 契约移除后收缩)
Aug 14, 2026
94ee7c2
Merge remote-tracking branch 'upstream/main'
Aug 14, 2026
94f728a
fix(ci): dsh-adapter 补 license.workspace=true(Cargo Deny unlicensed 修复)
Aug 14, 2026
92b7366
Merge remote-tracking branch 'upstream/main'
Aug 14, 2026
f78015c
Merge remote-tracking branch 'upstream/main'
Aug 14, 2026
f4739ba
feat(group-chat): v3 前端入口+视图+成员fork+验证 (R-GC-13~16)
Aug 14, 2026
e2ff1d3
feat(exec): 工具轮/消息/读取黑洞多层防御+阈值配置化 (R-MR-01/02/05b/07/10/11/12/15)
Aug 14, 2026
132f458
fix(bot): 空文本拦截 feishu+共享层+weixin/telegram (R-FE-01/02)
Aug 14, 2026
4e596f7
fix(web): GroupChatView dialog 组件改函数声明修复 eslint no-use-before-define …
Aug 14, 2026
f4c3abc
Merge remote-tracking branch 'upstream/main'
Aug 14, 2026
ac09871
fix(group-chat): 实测反馈三修+workspace双端兜底 (R-GC-17/18/19/20)
Aug 14, 2026
ed7c93a
fix(web): GroupChatView.scss tokens @use 路径修正 (R-GC-21)
Aug 14, 2026
50fea6a
feat(group-chat): 群主对话模型+布局回归+邀请Select (R-GC-22/23/24/25)
Aug 14, 2026
c181c3a
fix(cli): remove dead-code peer turn session functions aligned with u…
Aug 14, 2026
6e88f91
Merge remote-tracking branch 'upstream/main'
Aug 14, 2026
4bbe002
feat(group-chat): 群聊入口合并进助理会话创建菜单 (R-GC-27)
Aug 14, 2026
9e6880e
feat(server): dispatch host 能力接线 + warning 清理 (R-COMMIT-warnzero)
Aug 14, 2026
d191f65
fix(group-chat): R-GC-26 group-owner conversation creation fix + CI f…
Aug 14, 2026
b38d9bf
fix(group-chat): R-GC-28 invite/fork members always freshly created (…
Aug 14, 2026
28e0e65
docs(pr): R-DM-01 文档脱敏 — pr-docs/document-center 内部绝对路径替换为占位符
Aug 14, 2026
d1bc6e3
archive(quant): W1-0/W1-1 量化报告存档(R-DC-01 解耦前置存档,量化内容完整历史保留于此分支)
Aug 14, 2026
907da23
refactor(decouple): R-DC-01 量化解耦 — quant/gbrain/taiji-quant 移出开发版(LVP…
Aug 14, 2026
fd0607f
fix(group-chat): R-GC-28b invite/fork member agent type = Claw — defa…
Aug 14, 2026
4a5b94a
Merge remote-tracking branch 'upstream/main'
Aug 14, 2026
fce44c9
fix(group-chat): R-GC-29/30 建群交互修正 — 提示去重 + Claw 成员多选(主人定标)
Aug 14, 2026
58fee47
fix(group-chat): R-GC-31/32/33 两 P0 根因修复 — 建群提示单条 + 成员源真实化(主人实测)
Aug 14, 2026
20d9ba9
fix(ci): R-GC-28b/29/30/31/32/33 前端 CJK 合约合规 — 3 文件 23 行中文注释改英文(web-u…
Aug 14, 2026
d2285f8
Merge remote-tracking branch 'upstream/main'
Aug 14, 2026
9bcc569
fix(session-manager): construct active_turn_permission_modes in all S…
Aug 14, 2026
91207f1
Merge remote-tracking branch 'upstream/main'
Aug 15, 2026
6c26abe
fix(agent-runtime): remove leftover conflict-marker fragment in sched…
Aug 15, 2026
231126c
R-TA-01: desktop notification body minimal metadata
Aug 15, 2026
3bef2ea
R-TA-03: acp send_input notice carries full reply via follow_up_message
Aug 15, 2026
983ec69
R-GC-R1R4: rebuild group chat with real member session ids
Aug 15, 2026
abb01ae
R-GC-R6: member picker includes every real session, drop agentType fi…
Aug 15, 2026
bdac691
fix(agentic): 上游同步 merge 91207f1de 修复轮固化 - P0 x2 + P1 x3 + turn admis…
Aug 15, 2026
7c9d3b5
Merge remote-tracking branch 'upstream/main'
Aug 15, 2026
2e18810
Merge branch 'task/R-TA-01-20260815'
Aug 15, 2026
b324b1a
Merge branch 'task/R-TA-03-20260815'
Aug 15, 2026
547c077
Merge branch 'task/R-GC-R1R4-20260815'
Aug 15, 2026
5ffde1a
Merge branch 'task/R-GC-R6-20260815'
Aug 15, 2026
da875ab
Merge remote-tracking branch 'upstream/main'
Aug 15, 2026
0b9b669
R-NS-01: hide no-sessions empty state
Aug 15, 2026
f70849a
CI macos 测试竞态修复 - missing_coordinator_yields_clear_error
Aug 15, 2026
f58ef6a
fix(group-chat): CI ubuntu timing - master send config scope + robust…
Aug 15, 2026
a562fa5
Merge remote-tracking branch 'upstream/main'
Aug 15, 2026
db590b1
fix(bitfun-server): add missing dispatch_host in test constructors
Aug 15, 2026
f89467b
Merge remote-tracking branch 'upstream/main'
Aug 15, 2026
c1669ad
Merge remote-tracking branch 'upstream/main'
Aug 15, 2026
9f3fc46
fix(R-GC-36): group chat id passthrough on forwarded SessionMessage
Aug 15, 2026
8b5f5a5
fix(R-GC-34): group chat owner identity is the master actor (Commande…
Aug 15, 2026
15b1061
fix(R-GC-37): resolve group member names across all workspace roots
Aug 15, 2026
9a4a474
fix(R-GC-38): 群工具双磁盘回退 + fork 空成员登记 + delete 级联清反标
Aug 15, 2026
22f5ce0
fix(R-GC-35): restore isGroupChat from backend metadata
Aug 15, 2026
72453ff
chore(R-GC-39): clean stale group member creation comments, keep Claw…
Aug 15, 2026
33119e6
Merge remote-tracking branch 'upstream/main' (0ecbef978 fix(peer): re…
Aug 16, 2026
7abfef2
feat(state): add display_state to AgentSessionSummary wire contract
Aug 16, 2026
429ce0e
feat(state): add 7 display states, preserve Error runtime state
Aug 16, 2026
2787638
feat(state): project 7 display states into web-ui session types
Aug 16, 2026
0b082c3
fix(state): expose display_state in session list/tree text output
Aug 16, 2026
4ffaedc
fix(state): wire display_state into SessionMetadata and sidebar consu…
Aug 16, 2026
0dab02d
fix(state): persist display markers and restore display_state on rebuild
Aug 16, 2026
f48a6b9
fix(state): keep Interrupted display state until next turn starts
Aug 16, 2026
c7ef8e3
fix(state): mark session viewed on open so green dot clears
Aug 16, 2026
21b984c
refactor(rbac): drop SubagentParentInfo.role field and RBAC-related d…
Aug 16, 2026
c3182f3
refactor(rbac): remove role system, keep ToolRuntimeRestrictions + pa…
Aug 16, 2026
3f0a70e
refactor(rbac): remove session-restriction consumers from catalog, co…
Aug 16, 2026
f66e998
refactor(rbac): drop role registration/restore/delegation functions a…
Aug 16, 2026
84d0f31
refactor(rbac): remove role consumers from tool implementations (owne…
Aug 16, 2026
2a97af6
refactor(rbac): remove rbac_enabled config surface (types/global/serv…
Aug 16, 2026
d057e9b
fix(rbac): restore official session ownership authz after RBAC remova…
Aug 16, 2026
116d0df
fix(rbac): restore owner bypass for orphan deletion (R-26)
Aug 16, 2026
bec9c33
docs(rbac): clarify owner-bypass comments in session_control_tool tes…
Aug 16, 2026
483209e
fix(state): re-export SessionDisplayState and derive_display_state vi…
Aug 16, 2026
2a38731
docs(state): register hung watchdog long-stream false-positive as kno…
Aug 16, 2026
2104726
docs(task/schema): remove stale RBAC role param docs from live docstr…
Aug 16, 2026
823ca00
feat(core): add display_state field to persisted SessionMetadata
Aug 16, 2026
7bab9cd
feat(desktop): persist displayState through UI metadata save path
Aug 16, 2026
0861cc9
feat(desktop): expose display_state in SessionResponse list/restore
Aug 16, 2026
1389737
feat(web-ui): persist displayState through buildSessionMetadata save …
Aug 16, 2026
8f1f980
feat(web-ui): wire displayState into Session load/restore/reconcile p…
Aug 16, 2026
84975ba
fix(agent-runtime): preserve Processing in persisted state so hung su…
Aug 16, 2026
e77b90c
fix(agent-runtime): stop user restore paths from silently erasing hun…
Aug 16, 2026
6eea137
fix(agent-runtime): treat any persisted Processing as crash leftover …
Aug 16, 2026
ba2e895
fix(agent-runtime): exclude Processing sessions from idle eviction (R…
Aug 16, 2026
92caf81
merge: R-WF-01 RBAC removal + orphan deletion owner bypass (task/rwf0…
Aug 16, 2026
56208f1
merge: R-WF-11 seven-state display + hung/interrupted persistence (ta…
Aug 16, 2026
df37179
feat(session): enforce workspace inheritance + hierarchy on session c…
Aug 16, 2026
f974577
feat(agent): add group as first-class agent type
Aug 16, 2026
ac7f46f
feat(acp): align ACP agent tools with agentic mode
Aug 16, 2026
f90c5c9
merge: R-WF-23 session hierarchy enforcement (task/rwf23-hierarchy)
Aug 16, 2026
68fe30e
merge: R-WF-10 ACP agentic alignment (task/rwf10-acp)
Aug 16, 2026
d275d7e
fix(agent): replace serde untagged with hand-written string serde for…
Aug 16, 2026
6bc82ad
docs(rwf02): correct batch2 verification results in fix log (20/50/77…
Aug 16, 2026
284acfb
merge: R-WF-02 group as first-class agent type (task/rwf02-group)
Aug 16, 2026
e63988f
feat(group): keep 9 tools + add orchestration control suite
Aug 16, 2026
e13fd25
feat(group): no model response + open delivery
Aug 16, 2026
71abf58
docs(rwf04): fix log for R-WF-04 no model response + open delivery
Aug 16, 2026
0855acf
merge: R-WF-03 group orchestration tool suite (task/rwf03-tools)
Aug 16, 2026
5da7cb3
merge: R-WF-04 no model response + open delivery (task/rwf04-open)
Aug 16, 2026
41807c0
feat(workflow): template-instance model for group
Aug 16, 2026
87ab9a7
docs(rwf06): fix log for R-WF-06 template-instance model
Aug 16, 2026
a941a22
feat(group): async replicate member turns to group log
Aug 16, 2026
d43b366
docs(rwf05): archive R-WF-05 fix record for async group replicate
Aug 16, 2026
b607a61
fix(rwf06): isolate workflow test coordinator, drop order assumption,…
Aug 16, 2026
4215032
fix(group): unify back-mark storage domain + add cross-domain/async/s…
Aug 16, 2026
e6c3e4e
docs(rwf05): append batch4 return-fix round to R-WF-05 fix record
Aug 16, 2026
6f946bd
merge: R-WF-05 async group replicate (task/rwf05-replicate)
Aug 16, 2026
8ac78ec
merge: R-WF-06 template-instance model (task/rwf06-workflow)
Aug 16, 2026
1572ed8
Merge remote-tracking branch 'upstream/main' (965de28d9 fix(tool-card…
Aug 16, 2026
0d90690
fix(group-room): P1-A remove_member clears member back-mark + P1-B ti…
Aug 16, 2026
42592d9
merge: R-WF-05 P1 fix remove_member back-mark + timing assert (task/r…
Aug 16, 2026
6b472cc
fix(ci): align deferred-tool contract assertion, agent registry group…
Aug 16, 2026
3e86aaa
merge: CI fix deferred-tool contract + registry group spec (task/cifix)
Aug 16, 2026
916becc
feat(member): instantiate members as Claw with persona files + own wo…
Aug 16, 2026
0b208dc
docs(rwf07): add R-WF-07 fix record
Aug 16, 2026
4af6574
feat(member): instantiate members as Claw with persona files + own wo…
Aug 16, 2026
a334e0b
docs(rwf07): add R-WF-07 fix record
Aug 16, 2026
aff4c2d
feat(group): sender identity + group mode system prompt
Aug 16, 2026
29a6754
docs(rwf08): add R-WF-08 fix record
Aug 16, 2026
3b2d607
feat(group): orchestration tools main-session only
Aug 16, 2026
d97860f
fix(rwf09): reuse global coordinator consistently in orchestration test
Aug 16, 2026
638ab6e
docs(rwf09): archive R-WF-09 fix record for orchestration main-sessio…
Aug 16, 2026
4a72713
merge: R-WF-07 member-as-Claw instantiation (task/rwf07-member-claw)
Aug 16, 2026
0311bf8
merge: R-WF-08 sender identity + group mode prompt (task/rwf08-sender…
Aug 16, 2026
ca75e3c
merge: R-WF-09 orchestration tools main-session only (task/rwf09-orch…
Aug 16, 2026
f3c0d36
fix(ci): remove CJK comments to satisfy i18n contract
Aug 16, 2026
debc16d
fix(ci): isolate group_room roundtrip test from global coordinator ra…
Aug 16, 2026
356c336
merge: CI race fix isolate group_room roundtrip test (fix/batch5-ci)
Aug 16, 2026
b636e53
fix(ci): call_send_impl 直接用传入 coordinator 调 send_message,删 _coordinat…
Aug 16, 2026
59d43be
fix(session): canonicalize path comparison in resolved_sessions_dir_kind
Aug 17, 2026
8732918
docs(rwf26): archive R-WF-26 fix record for path canonicalization
Aug 17, 2026
5320eb1
merge: R-WF-26 path canonicalization fix (task/rwf26)
Aug 17, 2026
6c9de1b
feat(ui): group-chats nav section + two create entries
Aug 16, 2026
43764fb
docs(rwf12): archive R-WF-12 fix record for group-chats nav section
Aug 16, 2026
a7dfa2f
merge: R-WF-12 group-chats nav section + two create entries (task/rwf…
Aug 17, 2026
8137949
fix(ui): remove redundant Boolean cast in workflow member restore (es…
Aug 17, 2026
69d326b
fix(state): overlay live in-memory state in persisted session list
Aug 17, 2026
85a1e0e
docs(rwf24): archive R-WF-24 fix record for background activity visib…
Aug 17, 2026
b07dec6
merge: R-WF-24 background activity visibility (task/rwf24)
Aug 17, 2026
1779339
fix(ui): register group-chats appearance surfaces (contract audit)
Aug 17, 2026
de6a336
fix(state): keep processing while background command alive
Aug 17, 2026
52e00d7
feat(ui): bridge background command lifecycle to state machine
Aug 17, 2026
121b20a
docs(rwf25): archive R-WF-25 fix record for background activity visib…
Aug 17, 2026
6ddd3e5
fix(rwf25): wire watchdog params to ai.thresholds + full-chain tests
Aug 17, 2026
1e1c3a6
merge: R-WF-25 background activity visibility (task/rwf25)
Aug 17, 2026
fca338f
feat(R-THR-01): compression trigger percent + config contract domains…
Aug 17, 2026
7215cca
feat(R-THR-01): configurable hard-coded thresholds at consumer sites …
Aug 17, 2026
00202c4
merge: R-THR-01 hard-coded thresholds completion (task/rwf-hardcode-01)
Aug 17, 2026
4987b77
feat(ui): recover official AgentTeam UI from afc8c0aa1~1
Aug 17, 2026
ff28c12
feat(ui): recover ReviewTeam page from f072467ea~1
Aug 17, 2026
a9cf44f
feat(ui): wire agent team + review team into AgentsScene
Aug 17, 2026
26e9d34
docs(rwf13): archive R-WF-13 fix record for official team UI recovery
Aug 17, 2026
aa7701c
fix(ui): complete zh-TW traditional conversion for recovered A-suite …
Aug 17, 2026
45e498a
docs(rwf13): record CQO rework round for zh-TW conversion + P2 items
Aug 17, 2026
dc8f869
merge: R-WF-13 official team UI three-suite recovery (task/rwf13)
Aug 17, 2026
0d5cdd9
fix(async): remove coalescing + suppress injected reply + 16k truncation
Aug 17, 2026
6c1afbf
merge: R-ASYNC-01 async reply mechanism unification (task/rasync01)
Aug 17, 2026
cdb6909
Merge remote-tracking branch 'upstream/main' into main (11 commits)
Aug 17, 2026
e94361d
test(R-THR-01): 上游同步适配 session_control 测试用 std::env::temp_dir 替换硬编码 C…
Aug 17, 2026
47cc136
style(R-WF-13): 上游同步适配 agents 组件 appearance token color-primary -> co…
Aug 17, 2026
8d7aab8
fix(ui): register agent-team domain tokens; replace remaining appUi b…
Aug 17, 2026
228dd72
fix(cli): upstream adaptation - restore cli 0e0w after upstream sync
Aug 17, 2026
487d388
refactor(ui): rename legion to workflow wording
Aug 17, 2026
c2abb51
merge(R-WF-15): 军团表述 -> 工作流表述 (i18n legion wording, S-85)
Aug 17, 2026
a7f817f
docs(R-WF-15): add rename legion to workflow execution record
Aug 17, 2026
122844a
feat(ui): read-only group log view
Aug 17, 2026
82bbc4e
docs(R-WF-14): add read-only group log view execution record (pr-docs…
Aug 17, 2026
9654287
merge(R-WF-14): 前端只读群聊视图 (read-only group log view, S-85)
Aug 17, 2026
8fb9edb
feat(rwf16): backend tool settings commands (set_global_tool_disabled…
Aug 17, 2026
ba15e17
feat(ui): four-column custom bar + tools panel (WIP frontend)
Aug 17, 2026
acee0d7
feat(ui): four-column custom bar + tools panel (appearance contract +…
Aug 17, 2026
c0a4302
fix(rwf16): CQO review round 1 - global tool disabled runtime consump…
Aug 17, 2026
e384e9b
merge(R-WF-16): 定制栏四栏+工具栏 (four-column custom bar + tools panel, S-85)
Aug 17, 2026
7cc0a8b
fix(backend): rename Legion mode display to Workflow + differentiate …
Aug 17, 2026
1d2cc1b
fix(ui): workflow badge + Legion description override + sidebar ellip…
Aug 17, 2026
b77e074
merge(batch7-fix): 截图补修 P0x2+P1x3 数据层残留 (screenshot rework, S-85)
Aug 17, 2026
075ca80
feat(ui): independent workflow Claw frontend (detail jumps to Assista…
Aug 17, 2026
b68a154
docs(rwf18): R-WF-18 fix record (independent workflow Claw frontend)
Aug 17, 2026
e6f6793
merge(R-WF-18): 独立工作流 Claw 前端 (independent workflow Claw frontend, S-85)
Aug 17, 2026
4126528
feat(ui): DAG canvas workflow orchestration
Aug 17, 2026
d8effef
fix(ui): R-WF-17 CQO review round - i18n sharedTerm + appearance parts
Aug 17, 2026
dc367f1
merge(R-WF-17): DAG canvas workflow orchestration (S-85)
Aug 17, 2026
4d13326
feat(sub-auth): add codebuddy provider with private auth API flow
Aug 17, 2026
ed32df0
feat(sub-auth): add qoder provider with device flow
Aug 17, 2026
cd70dee
docs(sub-auth): R-LOGIN-01/02/04 execution record
Aug 17, 2026
5c3334c
fix(sub-auth): qoder nonce/refresh contract + 401/403 force refresh (…
Aug 17, 2026
5a7f238
docs(sub-auth): record CQO review fix (P0x2 + P1 + P2x2)
Aug 17, 2026
0d4c60e
fix(sub-auth): 401/403 auto-refresh retry loop (CQO round 2)
Aug 17, 2026
7834a7f
docs(sub-auth): record round-2 fix (401/403 auto-refresh loop)
Aug 17, 2026
8dd993a
fix(sub-auth): rebind retry client with rotated token after 401/403 (…
Aug 17, 2026
0f14cb7
docs(sub-auth): record round-3 fix (rebind retry client)
Aug 17, 2026
96f67a3
merge(R-LOGIN): codebuddy + qoder subscription auth providers (S-85)
Aug 17, 2026
829d85a
feat(ui): subscription login panel for codebuddy + qoder
Aug 17, 2026
27f2d17
docs(pr-docs): record R-LOGIN-03 frontend subscription login panel ex…
Aug 17, 2026
f22c592
fix(injection): extend write-like tool coverage + no mid-execution in…
Aug 17, 2026
0bcda1e
fix(agent): decouple review semantics from readonly tool stripping (r…
Aug 17, 2026
7132110
docs(pr-docs): record R-WF-21 review/readonly decoupling execution
Aug 17, 2026
db6b929
fix(agent): rustfmt formatting for review/readonly decoupling (CQO re…
Aug 17, 2026
b005946
docs(pr-docs): record R-WF-21 rustfmt rework per CQO review
Aug 17, 2026
d95ad04
fix(injection): english comments + remove dead scheduler guard (CQO r…
Aug 17, 2026
13163a7
merge(R-WF-22): tool injection write-like protection + no mid-executi…
Aug 17, 2026
5850bdb
merge(R-WF-21): review/readonly semantics decoupling (S-85)
Aug 17, 2026
2a0539a
fix(ui): agent team tab delete confirm, explicit rename save/cancel, …
Aug 17, 2026
5ccef16
fix(ui): register new appearance parts for rename buttons and panel t…
Aug 17, 2026
7155517
docs(pr-docs): record UI fix batch A (P0-1/P0-2/P1-5/P1-6) execution
Aug 17, 2026
e2462ee
Merge remote-tracking branch 'upstream/main' into main
Aug 17, 2026
9deeacc
merge(task/ui-fix-a): frontend UI fix batch A - agent team tab delete…
Aug 17, 2026
f9a7e4c
fix(ui): AgentsScene zone layout + action ordering + danger styling (…
Aug 17, 2026
8563b20
docs(pr-docs): record batch B AgentsScene UI layout fix execution
Aug 17, 2026
1a80241
docs(pr-docs): record batch A/B composer save/cancel unification (CQO…
Aug 17, 2026
8e165d1
merge(task/ui-fix-b): frontend UI fix batch B - AgentsScene zone layo…
Aug 17, 2026
ba85b3b
fix(ui): batch C cleanup and independent-domain UI fixes (P2-1..P2-4)
Aug 17, 2026
531350d
Merge branch 'task/ui-fix-c'
Aug 17, 2026
a7d8cb7
fix(ci): register token-usage-statistics as reviewed aggregate of run…
Aug 17, 2026
318edf9
fix(ci): local CI replica align remote 9-job matrix (P0)
Aug 17, 2026
6f97479
fix(ci): add bitfun-core product-full feature-combination gate (7 con…
Aug 17, 2026
33df298
merge(task/ci-fix): local CI replica align remote 9-job matrix + prod…
Aug 17, 2026
6676097
feat(compression): structured context checkpoint template with confid…
Aug 17, 2026
28c2385
fix(r13-r14): guard empty first-round requests in execution engine an…
Aug 18, 2026
121a25c
fix(r15): urgent fix - scheduler/session_message_tool/agent_api empty…
Aug 18, 2026
c954e79
fix(r12): unread session state attention resolution + tests (CQO 92/1…
Aug 18, 2026
535de33
merge(task/r13-emptyreq-guard): guard empty first-round requests (fix…
Aug 18, 2026
e330586
merge(task/r15-urgent-fix): urgent empty-request hardening scheduler/…
Aug 18, 2026
cb650b4
merge(task/r12-unread-guard): unread session state attention resoluti…
Aug 18, 2026
fbd6584
Revert "merge(task/r15-urgent-fix): urgent empty-request hardening sc…
Aug 18, 2026
86724d6
Revert "merge(task/r12-unread-guard): unread session state attention …
Aug 18, 2026
caa35f5
fix(r-urgent-01): W2 拼接层根治+守卫替换式+单测七件套
Aug 18, 2026
6765cc5
fix(r-urgent-01): W1 构造层根治(工厂分道+空防护+消费端空校验)
Aug 18, 2026
9e9febc
merge(task/r-urgent-01-w1): W1 构造层根治(工厂分道+空防护+消费端空校验)
Aug 18, 2026
51ab4a7
merge(task/r-urgent-01-w2): W2 拼接层根治+守卫替换式+单测七件套
Aug 18, 2026
a25cfc1
fix(r-urgent-01-w2): D7 断言对齐 W1 空防护(空文本 internal_reminder 不产壳)
Aug 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
95 changes: 94 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,9 @@ jobs:
name: CLI Tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 15
env:
# Same warning gate as rust-build-check.
RUSTFLAGS: "-D warnings"
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -138,14 +141,55 @@ jobs:
cargo test --locked -p terminal-core background_only_binding_is_owned_by_the_session -- --test-threads=1

# ── Rust: build check ─────────────────────────────────────────────
# Cargo-deny gate: advisories + licenses + sources (+ bans at warn level).
# Kept on Linux only - the license/source graph is OS-independent, so a
# single check covers the whole workspace without triplicating the run.
cargo-deny:
name: Cargo Deny (advisories + licenses)
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v5

- uses: dtolnay/rust-toolchain@stable

- uses: swatinem/rust-cache@v2
with:
shared-key: "cargo-deny-v1"
cache-bin: false

- name: Install cargo-deny
run: cargo install cargo-deny --locked --version 0.20.2

- name: Deny advisories
run: cargo deny check advisories

- name: Deny licenses
# -A no-license-field silences the diagnostic for crates that declare
# `license-file` instead of the SPDX `license` expression field
# (display-info 0.4.8 via screenshots); the actual LICENSE text is
# still parsed and gated by the allow list below.
run: cargo deny check licenses -A no-license-field

- name: Deny sources
run: cargo deny check sources

rust-build-check:
name: Rust Build Check (${{ matrix.os }})
runs-on: ${{ matrix.os }}
# Rust workspace check + 6 test groups across 3 OS; generous but bounded
# so a wedged dependency/network cannot burn the full 6h default.
timeout-minutes: 60
env:
# Keep the workspace check plus desktop test profiles within hosted-runner disk limits.
CARGO_INCREMENTAL: "0"
CARGO_PROFILE_DEV_DEBUG: "0"
CARGO_PROFILE_TEST_DEBUG: "0"
# Warning gate: any rustc warning (dead code, unused imports, ...) fails
# the build, so a warning regression cannot re-enter silently. The
# linker_messages lint intentionally ignores -D warnings (see workspace
# lints), so MSVC link noise stays non-fatal.
RUSTFLAGS: "-D warnings"
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -204,6 +248,50 @@ jobs:
save-if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
cache-on-failure: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}

# sherpa-onnx-sys downloads its native static libraries from GitHub
# Releases at build time. Hosted runners intermittently fail that
# download (network/rate limits), so pre-fetch and extract the archive
# here, then point SHERPA_ONNX_LIB_DIR at the extracted lib directory.
# The build script uses that variable directly without any cache/rerun
# logic, so both `cargo check` and `cargo test` link against the same
# pre-fetched libraries. Windows is skipped: its archive is already
# cached in the rust-cache path and the previous failures were Linux and
# macOS only.
- name: Pre-download sherpa-onnx native libraries
if: runner.os != 'Windows'
shell: bash
env:
SHERPA_VERSION: "1.13.4"
run: |
set -euo pipefail
case "${{ runner.os }}" in
Linux)
archive="sherpa-onnx-v${SHERPA_VERSION}-linux-x64-static-lib.tar.bz2"
;;
macOS)
archive="sherpa-onnx-v${SHERPA_VERSION}-osx-arm64-static-lib.tar.bz2"
;;
*)
exit 0
;;
esac
mkdir -p "$RUNNER_TEMP/sherpa-onnx-libs"
archive_path="$RUNNER_TEMP/sherpa-onnx-libs/$archive"
if [ ! -f "$archive_path" ]; then
curl -fL --retry 5 --retry-all-errors \
"https://github.com/k2-fsa/sherpa-onnx/releases/download/v${SHERPA_VERSION}/${archive}" \
-o "$archive_path"
fi
lib_dir="$RUNNER_TEMP/sherpa-onnx-libs/lib"
if [ ! -d "$lib_dir" ]; then
tar -xjf "$archive_path" -C "$RUNNER_TEMP/sherpa-onnx-libs"
# The archive extracts to a versioned directory; its lib/ is the
# native library directory the build script expects.
lib_dir="$(find "$RUNNER_TEMP/sherpa-onnx-libs" -maxdepth 2 -type d -name lib | head -n 1)"
fi
test -n "$lib_dir" && test -f "$lib_dir/libsherpa-onnx-c-api.a"
echo "SHERPA_ONNX_LIB_DIR=$lib_dir" >> "$GITHUB_ENV"

# rust-cache prunes the workspace target directory before saving it, so
# native libraries stored under target need an independent cache lifecycle.
- name: Restore Sherpa native libraries
Expand Down Expand Up @@ -337,6 +425,9 @@ jobs:
frontend-build:
name: Frontend Build
runs-on: ubuntu-latest
# Full web-ui test + build + i18n audits; bounded so a stuck install or
# test cannot burn the full 6h default.
timeout-minutes: 40
env:
NODE_OPTIONS: --max-old-space-size=6144
steps:
Expand Down Expand Up @@ -394,7 +485,9 @@ jobs:
run: pnpm run verify:webkit-compatibility:test

- name: Lint web UI
run: pnpm run lint:web
# Warning gate: any eslint warning (not just errors) fails the job so
# lint regressions cannot re-enter silently.
run: pnpm --dir src/web-ui exec eslint . --max-warnings=0

- name: Run web UI tests
run: pnpm --dir src/web-ui run test:run
Expand Down
25 changes: 16 additions & 9 deletions .github/workflows/desktop-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ jobs:
prepare:
name: Prepare
runs-on: ubuntu-latest
timeout-minutes: 10
outputs:
version: ${{ steps.meta.outputs.version }}
release_tag: ${{ steps.meta.outputs.release_tag }}
Expand Down Expand Up @@ -140,11 +141,15 @@ jobs:
runs-on: ${{ matrix.platform.os }}
needs: prepare
if: needs.prepare.outputs.relay_image_only != 'true'
# Release packaging: full release-profile build + bundles per platform.
# 6h default is far too long for a wedged job; cap it at 120m.
timeout-minutes: 120
env:
NODE_OPTIONS: --max-old-space-size=6144
BITFUN_ENABLE_UPDATER_ARTIFACTS: ${{ needs.prepare.outputs.upload_to_release }}
BITFUN_RELEASE_CHANNEL: ${{ needs.prepare.outputs.release_channel }}
TAURI_UPDATER_ENDPOINT: ${{ github.repository != 'GCWing/BitFun' && needs.prepare.outputs.release_channel == 'beta' && format('https://github.com/{0}/releases/download/channel-beta/latest.json', github.repository) || '' }}
# 本侧定制:stable 直链 latest.json(updater 常规路径)
TAURI_UPDATER_ENDPOINT: ${{ github.repository != 'GCWing/BitFun' && needs.prepare.outputs.release_channel == 'beta' && format('https://github.com/{0}/releases/download/channel-beta/latest.json', github.repository) || format('https://github.com/{0}/releases/latest/download/latest.json', github.repository) }}
TAURI_UPDATER_FALLBACK_ENDPOINT: ${{ github.repository != 'GCWing/BitFun' && needs.prepare.outputs.release_channel == 'beta' && format('https://github.com/{0}/releases/download/channel-beta/latest.json', github.repository) || '' }}
TAURI_UPDATER_PUBKEY: ${{ secrets.TAURI_UPDATER_PUBKEY }}
# Same trust root, compiled into the Desktop binary so one-click relay
Expand Down Expand Up @@ -346,6 +351,7 @@ jobs:
publish-relay-image:
name: Publish Relay Server Image
needs: [prepare, linux-binaries]
timeout-minutes: 60
if: >-
always() &&
((needs.prepare.outputs.upload_to_release == 'true' &&
Expand All @@ -358,7 +364,7 @@ jobs:
contents: write
packages: write
env:
IMAGE: ghcr.io/gcwing/bitfun-relay-server
IMAGE: ghcr.io/${{ github.repository_owner }}/bitfun-relay-server

steps:
- name: Checkout
Expand All @@ -384,7 +390,7 @@ jobs:
set -euo pipefail
mkdir -p linux-release-assets
gh release download "${RELEASE_TAG}" \
--repo GCWing/BitFun \
--repo "${{ github.repository }}" \
--dir linux-release-assets \
--pattern 'bitfun-relay-server-*.tar.gz' \
--pattern 'bitfun-relay-server-*.tar.gz.sha256'
Expand Down Expand Up @@ -432,7 +438,7 @@ jobs:
if [[ "${IMAGE_ONLY}" == "true" ]]; then
# Backfilling an older release must not roll the floating tag
# backwards. GitHub's latest endpoint excludes prereleases.
latest_release="$(gh api repos/GCWing/BitFun/releases/latest --jq .tag_name)"
latest_release="$(gh api repos/${{ github.repository }}/releases/latest --jq .tag_name)"
if [[ "${RELEASE_TAG}" == "${latest_release}" ]]; then
echo "${IMAGE}:latest"
fi
Expand Down Expand Up @@ -538,6 +544,7 @@ jobs:
upload-release-assets:
name: Upload Release Assets
needs: [prepare, package, linux-binaries, publish-relay-image]
timeout-minutes: 30
if: >-
always() &&
needs.prepare.outputs.upload_to_release == 'true' &&
Expand Down Expand Up @@ -637,7 +644,7 @@ jobs:
--assets-dir linux-release-assets \
--version "${{ needs.prepare.outputs.version }}" \
--tag "${{ needs.prepare.outputs.release_tag }}" \
--repo "GCWing/BitFun" \
--repo "${{ github.repository }}" \
--out linux-release-assets/linux-binaries.json

# The Tauri bundler signs the five updater artifacts during `tauri build`,
Expand Down Expand Up @@ -748,7 +755,7 @@ jobs:
if: needs.prepare.outputs.release_channel == 'stable'
run: |
curl -fsSL --retry 5 --retry-delay 3 \
"https://github.com/GCWing/BitFun/releases/download/${{ needs.prepare.outputs.release_tag }}/linux-binaries.json" \
"https://github.com/${{ github.repository }}/releases/download/${{ needs.prepare.outputs.release_tag }}/linux-binaries.json" \
-o linux-binaries.published.json
test "$(jq -r '.version' linux-binaries.published.json)" = "${{ needs.prepare.outputs.version }}"
while IFS= read -r cli_url; do
Expand All @@ -760,13 +767,13 @@ jobs:
if: needs.prepare.outputs.release_channel == 'stable'
run: |
curl -fsSL --retry 5 --retry-delay 3 \
"https://github.com/GCWing/BitFun/releases/download/${{ needs.prepare.outputs.release_tag }}/relay-image.json" \
"https://github.com/${{ github.repository }}/releases/download/${{ needs.prepare.outputs.release_tag }}/relay-image.json" \
-o relay-image.published.json
test "$(jq -r '.tag' relay-image.published.json)" = "${{ needs.prepare.outputs.release_tag }}"
test "$(jq -r '.image' relay-image.published.json)" = "ghcr.io/gcwing/bitfun-relay-server"
test "$(jq -r '.image' relay-image.published.json)" = "ghcr.io/${{ github.repository_owner }}/bitfun-relay-server"
jq -e '.digest | test("^sha256:[0-9a-f]{64}$")' relay-image.published.json >/dev/null
curl -fsSL --retry 5 --retry-delay 3 \
"https://github.com/GCWing/BitFun/releases/download/${{ needs.prepare.outputs.release_tag }}/relay-image.json.sig" \
"https://github.com/${{ github.repository }}/releases/download/${{ needs.prepare.outputs.release_tag }}/relay-image.json.sig" \
-o /dev/null

- name: Resolve beta channel promotion
Expand Down
37 changes: 37 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,44 @@ target/
sdk/typescript/src/internal/wire/
sdk/typescript/src/internal/wire-validators.ts
**/target/
.target/
/.targets/
# Local evidence working dir (fully ignored; intermediate artifacts go to
# outside the repo)
target2/
# The deployable Rust services use the workspace lockfile for reproducible
# container builds.
!Cargo.lock

# Work artifacts that must never enter the repo (S-37/S-56 hygiene):
# recon/fix/verify/report/sediment intermediates, sync records, ws-check data.
/docs/plans/RECON-*
/docs/plans/FIX-*
/docs/plans/VERIFY-*
/docs/plans/REPORT-*
/docs/plans/SEDIMENT-*
/docs/plans/sync-record-*
/docs/plans/recon-*
/docs/plans/fix-*
/docs/plans/doc-governance-report-*
/docs/plans/pr-final-*
/docs/plans/ws-check-*
/docs/plans/del-*.json
/docs/plans/侦查-*
/docs/plans/核对-*
/docs/plans/核查-*
/docs/plans/*.log
/docs/plans/*.json
/docs/plans/*.cjs

# Local customization docs stay out of the repo (S-56 sanitize)

/docs/功能文档/
/交接文档-现状与决议.md
/fix-dualfeed-停止回报.md
/docs/plans/review-upstream-sync-*
/docs/features/agent-hot-reload.md

# Monaco Editor - copied from node_modules
public/monaco-editor/
src/web-ui/public/monaco-editor/
Expand Down Expand Up @@ -93,5 +126,9 @@ external/
/.bitfun/search/flashgrep-index/
.agents/
/.flashgrep-index-engine/
/src/apps/desktop/.bitfun/search/flashgrep-index/
/target/debug/.bitfun/search/flashgrep-index/

.design/
__pycache__/
*.pyc
4 changes: 3 additions & 1 deletion BitFun-Installer/src-tauri/src/installer/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,9 @@ unsafe fn windows_sys_get_disk_free_space(
lpTotalNumberOfFreeBytes: *mut u64,
) -> i32;
}
GetDiskFreeSpaceExW(path, free_bytes_available, total_bytes, total_free_bytes)
// SAFETY: callers guarantee the pointers reference valid kernel32
// arguments; the foreign function only writes through the out-pointers.
unsafe { GetDiskFreeSpaceExW(path, free_bytes_available, total_bytes, total_free_bytes) }
}

#[tauri::command]
Expand Down
9 changes: 6 additions & 3 deletions BitFun-Installer/src/i18n/generatedLocaleContract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ export const SHARED_TERMS_BY_APP_LANGUAGE = {
"code": "Code Session",
"cowork": "Cowork Session",
"claw": "Claw",
"default": "Default Assistant"
"default": "Default Assistant",
"master": "Master"
},
"tools": {
"explore": "Explore",
Expand Down Expand Up @@ -123,7 +124,8 @@ export const SHARED_TERMS_BY_APP_LANGUAGE = {
"code": "代码会话",
"cowork": "协作会话",
"claw": "Claw",
"default": "默认助手"
"default": "默认助手",
"master": "主人"
},
"tools": {
"explore": "探索",
Expand Down Expand Up @@ -173,7 +175,8 @@ export const SHARED_TERMS_BY_APP_LANGUAGE = {
"code": "程式碼會話",
"cowork": "協作會話",
"claw": "Claw",
"default": "預設助手"
"default": "預設助手",
"master": "主人"
},
"tools": {
"explore": "探索",
Expand Down
Loading
Loading