Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
412 commits
Select commit Hold shift + click to select a range
daa7d61
feat(daemon): add batch extension activation APIs (#8788)
callmeYe Aug 19, 2026
0530cb0
fix(triage): diff the flake-gate file list against the pinned base OI…
yiliang114 Aug 19, 2026
577f719
fix(cli): surface daemon duplicate tool-call breaker as loop-detected…
doudouOUC Aug 19, 2026
ff5aa6b
feat(providers): add qwen3.8-max to Token Plan model list (#9383)
qqqys Aug 19, 2026
aa0178d
fix(cli): prevent /rewind from dropping conversation history after /c…
yiliang114 Aug 19, 2026
6d06b2d
fix(tools): reject run_in_background: false for named teammates (#9433)
yiliang114 Aug 19, 2026
e352037
fix(review): clamp the posting volume at its origin, not only where i…
wenshao Aug 19, 2026
e4f5504
feat(extensions): support authenticated HTTPS Git installs (#9458)
callmeYe Aug 19, 2026
8b2593d
docs(tools): clarify list_agents excludes Agent Team teammates (#9432)
yiliang114 Aug 19, 2026
bb45a09
fix(core): reject upstream fail-fast placeholder responses (#8938)
yiliang114 Aug 19, 2026
872dd61
fix(core): isolate image payload eviction state (#9423)
yiliang114 Aug 19, 2026
4b77a6e
fix(core): treat duplicate provider tool-call ids as replays only whe…
doudouOUC Aug 19, 2026
d96f264
feat(telemetry): link daemon HTTP request spans to inbound W3C tracep…
chiga0 Aug 19, 2026
5003ab3
feat(web-shell): add transcript contract prevalidation (#9388)
water-in-stone Aug 19, 2026
517a2bf
fix(triage): compute the flake-gate diff before the env -i re-exec (#…
yiliang114 Aug 19, 2026
b5577b7
fix(sdk): route unrecognized diagnostics onto a bounded transcript si…
yiliang114 Aug 19, 2026
fd2dcd3
fix(ci): clone qwen-autofix into a recovery workflow entity (#9482)
wenshao Aug 19, 2026
133cf8b
refactor(cli): consolidate shared helpers ahead of the legacy audit s…
wenshao Aug 19, 2026
4154bd7
fix(ci): no-op touch to re-register the autofix workflow triggers (#9…
wenshao Aug 19, 2026
b604da3
fix(review): keep the blocker in a COMMENT body every softening path …
wenshao Aug 19, 2026
d3202c6
feat(web-shell): Consume live-state session activity timestamps (#9476)
doudouOUC Aug 19, 2026
c1b8f1a
refactor(review): define each certification-bar atom exactly once (#9…
wenshao Aug 19, 2026
39fc769
feat(cli): show loaded context files alongside the first prompt (#8855)
ZijianZhang989 Aug 19, 2026
f3cb3a1
feat(review): add runtime-axis, table-sweep and isolation witness for…
wenshao Aug 20, 2026
3b3818d
fix(ci): keep qwen-autofix.yml under GitHub's 500 KB start-runs limit…
wenshao Aug 20, 2026
bba2e1a
feat(cli): Add agent view PTY workers (#7800)
ZijianZhang989 Aug 20, 2026
36c77ff
fix(dingtalk): attach media from quoted messages (#9347)
qqqys Aug 20, 2026
63fe7c1
feat(core): expose workflow execution state (#9034)
qqqys Aug 20, 2026
d4b54a4
refactor(review): route the certification path atoms through one need…
wenshao Aug 20, 2026
b219e3a
chore(ci): Add --provenance to npm publish and id-token permission (#…
yiliang114 Aug 20, 2026
4b750b5
fix(cli): suppress Homebrew update notification when brew has nothing…
yiliang114 Aug 20, 2026
a659539
feat(cli): Add standalone conversation isolation primitives (#9341)
doudouOUC Aug 20, 2026
a41d5ec
feat(web-shell): unify file uploads and references (#9477)
ytahdn Aug 20, 2026
50a0d2a
fix(web-shell): keep sidebar sessions synchronized (#9533)
ytahdn Aug 20, 2026
48b3064
refactor: centralize cross-package contracts (#9497)
yiliang114 Aug 20, 2026
43aea24
fix(cli): give the case-variant delete test the attachments mock (#9551)
wenshao Aug 20, 2026
02d303f
feat(serve): persist prompt terminal ledger for cold-load reconciliat…
chiga0 Aug 20, 2026
a8a8559
fix(review): run verifier probes in a private scratch worktree (#9207…
wenshao Aug 20, 2026
2e6151a
fix(serve): Harden standalone conversation primitives (#9512)
doudouOUC Aug 20, 2026
a07f52a
fix(tests): retry acp-cron cleanup rm on transient ENOTEMPTY (#9559)
yiliang114 Aug 20, 2026
0baaec2
chore(ci): Drop NPM_TOKEN in favor of npm Trusted Publishing (#9552)
yiliang114 Aug 20, 2026
313f191
fix(autofix): make the brake's BLOCKED handoff a first-class round ou…
wenshao Aug 20, 2026
50d2700
fix(web-shell): Stop repeated session title catalog refreshes (#9563)
doudouOUC Aug 20, 2026
5f3165f
fix(daemon): avoid custom attachment upload header (#9567)
ytahdn Aug 20, 2026
5832c49
feat(review): rule on contract documentation, and matrix layered guar…
wenshao Aug 20, 2026
bf0dbb1
feat(web-shell): support mid-turn file attachments (#9570)
ytahdn Aug 20, 2026
4839935
feat: register toggle-only Qwen reasoning (#9574)
callmeYe Aug 20, 2026
2870eee
feat(web-shell): adopt canonical Goal v3 controls (#9393)
qqqys Aug 20, 2026
d0cd552
test(review): single-encode the diff-read fixture and pin the failed-…
wenshao Aug 20, 2026
a20a724
refactor(review): build the incremental scope from the PR's diff, not…
wenshao Aug 20, 2026
6fe9ce4
fix(ci): stop counting wedged queued runs as in-flight in the shepher…
wenshao Aug 20, 2026
099a71c
fix(ci): heal a symlinked workspace instead of wedging the runner on …
wenshao Aug 20, 2026
4807d06
fix(autofix): mutation-probe new guards before a round commits (#9578)
wenshao Aug 20, 2026
027772d
test(ci): stage on-disk session state in the serve A/B (#9444)
wenshao Aug 20, 2026
c59910b
fix(ci): make autofix finding replies idempotent (#9463)
wenshao Aug 20, 2026
d6732ea
fix(ci): author the release PR with a third bot PAT (#9592)
yiliang114 Aug 20, 2026
808c9c9
chore(release): v0.21.14 (#9594)
qwen-code-review-bot Aug 20, 2026
e501628
fix(cli): persist skipped duplicate tool results (#9593)
yiliang114 Aug 20, 2026
f700f8e
fix(web-shell): fall back to execCommand copy in non-secure contexts …
yiliang114 Aug 20, 2026
3e99b71
fix(ui): collapse duplicate in-flight tool_group rendered from histor…
qwen-code-dev-bot Aug 20, 2026
5715782
feat(review): post --comment reviews to Aone Code via the a1 CLI (#9491)
wenshao Aug 20, 2026
375ff49
feat(review): tell the author why a review loop is not settling (#9461)
wenshao Aug 20, 2026
9f2342d
fix(ci): stop the fallback comment from denying a review it already p…
wenshao Aug 20, 2026
54a3a7f
fix(web-shell): bound daemon transcript retention to stop renderer OO…
wenshao Aug 21, 2026
a074d3b
chore(ci): Disable install scripts in release CI and guard security-c…
yiliang114 Aug 21, 2026
e443f26
feat(web-shell): keep a turn expanded while its background shell runs…
ytahdn Aug 21, 2026
2c64ebe
feat(autofix): audit the approach instead of stopping on growth-budge…
wenshao Aug 21, 2026
fee826c
docs(ci): the ECS pool does run containers — correct two comments tha…
wenshao Aug 21, 2026
575e62e
fix(autofix): bind the sandbox image to its pulled digest (#9527)
wenshao Aug 21, 2026
7142a4f
docs(autofix): design runner-level isolation for PAT-bearing steps (#…
wenshao Aug 21, 2026
ef86d1f
fix(web-shell): settle parallel-agents collapse and unify agent detai…
ytahdn Aug 21, 2026
6b64468
fix(web-shell): show create-group tooltip (#9400)
deggs7 Aug 21, 2026
98854a3
feat(review): fold the one-hop import widening into `fetch-pr --since…
wenshao Aug 21, 2026
e09399e
feat(core): make list_directory opt-in (disabled by default) (#9424)
DragonnZhang Aug 21, 2026
fad5ae0
docs: document inline terminal image previews (#8656)
DragonnZhang Aug 21, 2026
459c04a
docs: document Session Workflow setting (#8554)
DragonnZhang Aug 21, 2026
d0d68c0
feat(cli): extend non-blocking slash commands to more builtins (#9495)
DragonnZhang Aug 21, 2026
94a8c40
docs(autofix): pin the publish-side checks to the patch text (#9652)
wenshao Aug 21, 2026
e40263e
chore(deps): Clear high-severity CVE baseline and harden the security…
yiliang114 Aug 21, 2026
7e56bd0
docs(autofix): add an operator guide for `/takeover from N` (#9622)
wenshao Aug 21, 2026
07405e6
fix(artifacts): expand recorded directories into per-file artifacts (…
zjgzx1988 Aug 21, 2026
0dd518f
feat(review): disclose that Aone posts join the discussion gate only …
wenshao Aug 21, 2026
04886c4
fix(review): make the incremental cache work for Aone AGit-Flow CRs (…
wenshao Aug 21, 2026
f1d05b7
feat(review): detect self-MR on Aone targets in presubmit (#9629)
wenshao Aug 21, 2026
83f2589
fix(autofix): include pending runs in the busy-PR enumeration (#9662)
wenshao Aug 21, 2026
c9b9a56
docs(autofix): correct the round-seed guide on leading whitespace (#9…
wenshao Aug 21, 2026
43da894
fix(web-shell): use daemon live-state hasActivePrompt for loading ind…
yiliang114 Aug 21, 2026
414187a
fix(web-shell): don't steal approval focus while the user is typing (…
yiliang114 Aug 21, 2026
e44a16d
fix(cli): keep slash menu selection stable during streaming (#9494) (…
yiliang114 Aug 21, 2026
7a4566c
fix(core): clarify Git requirement for public extensions (#9680)
yiliang114 Aug 21, 2026
e2de7d2
feat(web-shell): Bind GitHub PRs to sessions with sidebar badge and s…
wenshao Aug 22, 2026
df768f0
fix(ci): bump vulnerable dependencies to unblock CVE audit (#9703)
yiliang114 Aug 22, 2026
7bc0d80
fix(review): audit Aone targets in cleanup's bypass tripwire (#9633)
wenshao Aug 22, 2026
7703d1c
docs: classify architecture invariants by enforcement mechanism (#915…
yiliang114 Aug 22, 2026
f89335e
fix(autofix): stop counting idle timeouts toward the timeout cap (#9673)
wenshao Aug 22, 2026
4188486
feat(review): give the convergence observation a machine-readable hal…
wenshao Aug 22, 2026
6bbb273
perf(web-shell): optimize streaming transcript rendering (#9672)
ytahdn Aug 22, 2026
3260890
fix(web-shell): route goal messages by session activity (#9667)
ytahdn Aug 22, 2026
6e787aa
i18n(cli): translate Unset in the settings dialog (#9714)
yiliang114 Aug 22, 2026
7330a02
perf(review): give review agents their own subagent type (#9678)
wenshao Aug 22, 2026
cef54b8
refactor(autofix): move the push-and-report body out of the workflow …
wenshao Aug 22, 2026
fcc1dfb
feat(review): report the address a drive's service actually bound (#9…
wenshao Aug 22, 2026
5efb424
fix(autofix): pass CI=true through the gate's env -i launches (#9649)
wenshao Aug 22, 2026
b455bad
refactor(cli): keep acp-integration off serve internals (#8084) (#9144)
yiliang114 Aug 22, 2026
0c36e50
feat(review): close Aone residual gaps — composeUrl, test-plan routin…
wenshao Aug 22, 2026
4b014c9
fix(review): stop shedding the convergence observation first (#9715)
wenshao Aug 22, 2026
2a99e84
fix(review): clear the deferred Round-5 findings from the Aone write …
wenshao Aug 22, 2026
10c647f
refactor(core): remove root barrel self-imports and enforce the bound…
yiliang114 Aug 22, 2026
af25c45
fix(cli): Recover sessions across archive races (#9513)
doudouOUC Aug 22, 2026
39378ac
feat(serve): restore ask_user_question HITL on session load/resume (#…
doudouOUC Aug 22, 2026
867ded5
fix(sdk): support "auto" permission mode (#9003)
shenyankm Aug 22, 2026
4f830dc
fix(web-shell): pass session workspace cwd when opening from overview…
wenshao Aug 22, 2026
d40ec04
fix(web-shell): fall back after stale mid-turn rejection (#9732)
ytahdn Aug 22, 2026
c10143a
chore(release): v0.22.0 (#9736)
qwen-code-review-bot Aug 22, 2026
ea872a4
fix(review): stop the fallback comment from firing on superseded runs…
wenshao Aug 22, 2026
079e22a
feat(review): add temporal-reachability and incident-replay lenses (#…
wenshao Aug 22, 2026
295e6e5
fix(web-shell): stable pinned-section order and instant pin feedback …
yiliang114 Aug 22, 2026
6c742ec
feat(review): ask each fix for its test, and rule on non-convergence …
wenshao Aug 22, 2026
a5d77eb
chore(ci): migrate autofix prose to the design record and ratchet gro…
wenshao Aug 22, 2026
2172721
feat(cli): restore each daemon session onto its last selected model (…
doudouOUC Aug 22, 2026
f829a02
feat(review): validate Aone inline anchors against the captured diff …
wenshao Aug 22, 2026
7c039e0
fix(ci): record qwen-autofix.yml's shipped size in the workflow size …
wenshao Aug 22, 2026
2a57f86
fix(ci): gate the fork signal on fields the review payload delivers (…
qqqys Aug 22, 2026
bd24712
feat(goal): account the tokens a Goal spends (#9583)
qqqys Aug 22, 2026
4f41307
fix(core): reject session titles that echo the prompt's own examples …
yiliang114 Aug 22, 2026
db05195
fix(core): parse the workflow meta literal instead of evaluating it (…
qqqys Aug 22, 2026
1007bca
fix(sdk): support relative artifact download URLs (#9734)
ytahdn Aug 22, 2026
acc46e5
fix(autofix): give the repair pass a budget it can finish in (#9691)
qqqys Aug 23, 2026
98fa2e9
feat(cli): enable dynamic workflows from a settings key (#9098)
qqqys Aug 23, 2026
2a533cf
fix(core): widen the workflow stall watchdog past the transport retry…
qqqys Aug 23, 2026
722031b
test(core): pin that subagent registries carry no MCP instructions (#…
wenshao Aug 23, 2026
6b729f9
fix(core): gate skill announcements on what the model was declared (#…
wenshao Aug 23, 2026
ec8a8a1
feat(review): back pr-context on Aone Code targets (#9621)
wenshao Aug 23, 2026
72d3a84
fix(review): count a fix-induced re-report as first-time work (#9744)
wenshao Aug 23, 2026
7f2c441
docs(review): name the axis when two of them both call it "rank 3" (#…
wenshao Aug 23, 2026
cf3e8ad
fix(web-shell): preview document-classified artifacts (#9760)
ytahdn Aug 23, 2026
b6901ee
feat(web-shell): refresh composer skills incrementally after toggles …
samuelhsin Aug 23, 2026
5092262
feat(review): back comment-status and presubmit for Aone Code targets…
wenshao Aug 23, 2026
1e062a4
perf(cli): raise VP scroll rendering to 60 FPS (#9681)
DragonnZhang Aug 23, 2026
f1b1305
feat(models): support dual-role image generation models (#9650)
callmeYe Aug 23, 2026
431a0bd
fix(daemon): keep restored ask_user_question valid after load (#9763)
doudouOUC Aug 23, 2026
f877fb3
feat(review): add the persistently-critical convergence advisory (lan…
wenshao Aug 23, 2026
0b953b7
fix(core): support public GitHub extensions with older Git (#9690)
yiliang114 Aug 23, 2026
b5fbdb2
feat(cua-driver): add versioned Computer Use SDK and release pipeline…
LaZzyMan Aug 23, 2026
be89165
refactor(node-repl)!: deliver the persistent Node REPL as a standalon…
LaZzyMan Aug 23, 2026
57285a9
fix(review): repair permissions before giving up on worktree cleanup …
wenshao Aug 23, 2026
e9ccd3c
fix(core): normalize both sides of the session title echo comparison …
yiliang114 Aug 23, 2026
56db17b
refactor(cli): enforce utils leaf-layer dependency direction (#9146) …
yiliang114 Aug 23, 2026
7385b27
fix(web-shell): cap React dev performance.measure accumulation to sto…
wenshao Aug 23, 2026
dafd5c4
fix(dingtalk): parse forwarded chat records (#9339)
qqqys Aug 23, 2026
fd4b7c0
fix(web-shell): add remark-cjk-friendly so bold adjacent to CJK punct…
cactuser-Lu Aug 23, 2026
4ddbf22
feat(mcp): add MCP 2026 core and WebShell Apps host (#8992)
samuelhsin Aug 23, 2026
d52bb4d
fix(config): allow prompt hooks in settings schema (#8779)
zjunothing Aug 23, 2026
c2d63fb
fix(web-shell): show reasoning effort before session creation (#9599)
callmeYe Aug 23, 2026
fd9c452
fix(auth): let Vertex AI authenticate with Application Default Creden…
axiom-of-choice Aug 23, 2026
44ff47e
fix(ci): record cd-cua-driver.yml's shipped size in the workflow size…
wenshao Aug 23, 2026
3a1f86d
feat(review): give verifiers a do-not-refute list and a constructible…
wenshao Aug 23, 2026
ed5c56d
fix(core): clear tool display list before awaiting completion callbac…
qwen-code-dev-bot Aug 24, 2026
eea98f3
refactor(cli): extract ACP skill management (#8865)
callmeYe Aug 24, 2026
9b27184
fix(cli): normalize win32 drive-letter casing in MCP approval keys (#…
zhou2024NAU Aug 24, 2026
5db4a95
Support MiniMax image generation schema (#8322)
Aug 24, 2026
2640ccf
fix(core): sniff image content before read (#9113)
rbalachandar Aug 24, 2026
632e22b
fix(vscode): preserve Windows file links in session exports (#8953)
yefuyou Aug 24, 2026
a369b4f
fix(cli): prevent input border overflow on resize (#8991)
tlysanhuo Aug 24, 2026
78eadd4
feat(core): declare create_sub_session only under qwen serve (#9425)
DragonnZhang Aug 24, 2026
879e413
fix(core): report remaining background agents (#9018)
tao943 Aug 24, 2026
22006eb
fix(core): cap the effort tier at what each endpoint accepts (#9501)
harjothkhara Aug 24, 2026
b2edb80
fix(cli): probe microphone permission on recording start, not voice w…
Nas01010101 Aug 24, 2026
2855149
fix(core): detect long verbatim repetition loops in content and reaso…
yiliang114 Aug 24, 2026
5cb946b
feat(scheduled-tasks): allow creating a task with an existing session…
yiliang114 Aug 24, 2026
3a9d2d3
docs(agent): clarify parameter preconditions (#9580)
tao943 Aug 24, 2026
95b2cf4
fix(review): pin the verified git identity across the residue probe (…
wenshao Aug 24, 2026
20e076f
fix(core): surface nested sub-agent approvals under background parent…
wenshao Aug 24, 2026
00461ab
fix(core): mark agent launch failures as failed tool calls (#9519)
yiliang114 Aug 24, 2026
75fb40d
refactor(goal): render Goal continuation prompts from one core render…
qqqys Aug 24, 2026
deed96e
fix(core): avoid ghost shutdown pending state (#9550)
AaronZ345 Aug 24, 2026
a7128d3
fix(core): isolate fork cache readers by session (#9471)
tomsen02 Aug 24, 2026
03bcfe4
refactor(review): split SKILL.md into a core body plus verdict-gated …
wenshao Aug 24, 2026
747dbf0
feat(web-shell): compact agent activity summaries (#9657)
ytahdn Aug 24, 2026
a2e458d
feat(auth): add Kimi (Moonshot AI) as a built-in third-party provider…
TianYuan1024 Aug 24, 2026
674afdf
feat(core): show what a workflow will do, and scope the grant that ap…
qqqys Aug 24, 2026
5cff52c
fix(goal): count catalog previews in the unit their budget is written…
qqqys Aug 24, 2026
a8b822f
feat(web-shell): expose agent task changes (#9637)
callmeYe Aug 24, 2026
aac9606
fix(cli): skip terminal redraw optimizer on WSL/ConPTY (#7897)
C0d3N1nja97342 Aug 24, 2026
3d96e54
chore(ci): refresh the core issue-owner pool (#9808)
yiliang114 Aug 24, 2026
3fd0593
fix(core): invalidate token counts recorded for a switched model rout…
yiliang114 Aug 24, 2026
014b903
fix(daemon): Bound conditional-close refusal holds (#9820)
doudouOUC Aug 24, 2026
4d3f9ff
fix(core): allow hook-bounced workflow reapproval (#9547)
AaronZ345 Aug 24, 2026
0141683
docs(vscode): correct minimum VS Code version (#9852)
AaronZ345 Aug 24, 2026
4f53c7d
fix(core): route debug logs through sessionIdContext before global se…
tomsen02 Aug 24, 2026
717ad10
feat(web-shell): add async submit preparation (#9802)
dreamWB Aug 24, 2026
f241c19
fix(core): support per-provider stream idle timeout (#9795)
yu-xin-c Aug 24, 2026
c7c4dc8
feat(core): add the output-style layer to the system prompt (#9565)
qqqys Aug 24, 2026
dbf7382
fix(memory): scan uncapped when selecting forget candidates (#9530)
harjothkhara Aug 24, 2026
b2d0687
feat(serve): add --open-with-auth (#9738)
doudouOUC Aug 24, 2026
9ef32c5
fix(core): make team shutdown a leader-only tool (#9401)
yiliang114 Aug 24, 2026
5b3830b
feat(vscode-ide-companion): adopt WebShell transcript as the default …
yiliang114 Aug 24, 2026
a60cbbc
refactor(core): make utils/ a leaf layer (#9778)
yiliang114 Aug 24, 2026
27285a5
refactor: centralize approval mode contracts (#9796)
yiliang114 Aug 24, 2026
e0d933b
refactor(core): make derived Config ownership explicit (#8100)
yiliang114 Aug 24, 2026
6420d69
test(acp-cron): kill whole process tree on cleanup to stop ENOTEMPTY …
ryann-g Aug 24, 2026
43d46be
refactor(core): shrink the content generator interface (#9676)
DragonnZhang Aug 24, 2026
b4a54a9
fix(ci): move undeletable workspace residue aside instead of leaving …
wenshao Aug 24, 2026
b5aec66
fix(serve): Canonicalize Live task bridge session IDs (#9819)
doudouOUC Aug 24, 2026
6a21c43
test(core): align lazy generator vertex test (#9888)
AaronZ345 Aug 24, 2026
3892ca3
fix(core): map OpenAI-compatible finish_reason case-insensitively (#9…
yiliang114 Aug 24, 2026
37cedea
feat(computer-use): replace built-in tools with bundled skill (#9856)
LaZzyMan Aug 24, 2026
d1cfd87
feat(review): promote language-pitfall and wrapper/proxy checks out o…
wenshao Aug 24, 2026
d128998
fix(core): accept quiet post-tool-result completions after retry exha…
yiliang114 Aug 24, 2026
24db7f6
feat(review): say when the approach, not the patch, is the open quest…
qqqys Aug 24, 2026
772670d
feat(skills): add find-simplifications sweep skill (#9384)
qqqys Aug 24, 2026
703bb7a
docs(core): fix read file paging default comment (#9863)
AaronZ345 Aug 24, 2026
c216584
docs(core): fix goal judge timeout unit (#9861)
AaronZ345 Aug 24, 2026
2dbe806
docs(sdk): fix query timeout example signature (#9867)
AaronZ345 Aug 24, 2026
95bdd46
fix(config): accept output.format "stream-json" in the settings schem…
harjothkhara Aug 24, 2026
f7b9366
fix(core): reject malformed Anthropic tool arguments (#9013)
tlysanhuo Aug 24, 2026
65c2bb0
fix(ci): narrow serve-ab's self-hosted wipe to the A/B checkout dirs …
qwen-code-dev-bot Aug 24, 2026
1fffa51
fix(acp-bridge): Disable permission timeout by default (#9933)
doudouOUC Aug 24, 2026
02f5214
test(cli): skip unreadable-ledger run-ledger test under root (#9913)
wenshao Aug 24, 2026
ac109c9
fix(core): relax uniqueItems in function schemas (#9869)
qqqys Aug 24, 2026
bf123a3
fix(goal): converge the three continuation prompts on one guarded con…
qqqys Aug 24, 2026
22bb5e8
feat(core): require an explicit user opt-in before the model launches…
qqqys Aug 24, 2026
a6dd2a7
fix(review): ban unexecuted mutation claims in coverage briefs (#9923)
wenshao Aug 25, 2026
74ca981
fix(ci): scope workflow-size ratchet to the PR that grew the file (#9…
wenshao Aug 25, 2026
c49bedf
feat(review): run the reviewed repository's own commands behind a con…
wenshao Aug 25, 2026
3f1b24e
feat(core): add a per-project outside-repo artifact landing (#9776)
wenshao Aug 25, 2026
e235656
fix(web-shell): reduce streaming thought render jank (#9914)
ytahdn Aug 25, 2026
03dd858
feat(review): report findings to clients as a typed contract (#9794)
wenshao Aug 25, 2026
e89a32c
fix(ci): neutralize legacy ##[ commands in autofix stdout echoes (#9871)
wenshao Aug 25, 2026
145befd
fix(core): refuse a workflow script before it can spend anything (#9873)
qqqys Aug 25, 2026
7f2ba46
feat(review): engage the severity floor early on a sustained converge…
wenshao Aug 25, 2026
3133e83
fix(serve): Repair persisted session lifecycle (#9626)
doudouOUC Aug 25, 2026
8be0715
fix(cli): degrade gracefully when messageRewrite.promptFile cannot be…
yiliang114 Aug 25, 2026
0f85519
fix(webui): hydrate goal state independently (#9977)
ytahdn Aug 25, 2026
4a492bc
test(core): pin transport retry diagnostics and correct the replay-sa…
ComplexSimply Aug 25, 2026
52fdd19
refactor(core): break config client runtime cycle (#9959)
DragonnZhang Aug 25, 2026
9416d6a
refactor(cli): reuse trusted workspace runtime resolver (#9958)
DragonnZhang Aug 25, 2026
ce72ddb
feat(desktop): remove packages/desktop after OpenWork fork; keep the …
yiliang114 Aug 25, 2026
c3d9279
fix(goal): resume an evidence-limited Goal from a fresh window (#9840)
qqqys Aug 25, 2026
db78bde
chore(github): add @qqqys as core package codeowner (#9982)
yiliang114 Aug 25, 2026
beb3833
feat(daemon): add ACP channel transport liveness (#9976)
doudouOUC Aug 25, 2026
7af08ca
fix(core): allow scoped Git credential config (#9870)
callmeYe Aug 25, 2026
b449a95
feat(channels): add DingTalk Workspace channel (#9394)
qqqys Aug 25, 2026
26f70c7
fix(session): preserve source titles when branching (#9764)
water-in-stone Aug 25, 2026
c798674
fix(telemetry): restore usage aggregate when a session swap fails (#9…
yiliang114 Aug 25, 2026
d71ebfe
fix(channels/qqbot): key the cron textChunk guard on active prompts, …
yiliang114 Aug 25, 2026
923eb12
fix(cli): mark estimated compression token counts in banners (#9568)
yiliang114 Aug 25, 2026
bd42e67
fix(core): emit OpenRouter's reasoning disable when thinking is off (…
yiliang114 Aug 25, 2026
054eabb
fix(core): validate skill commands against the live provider to survi…
yiliang114 Aug 25, 2026
db1b9cc
refactor(cli): remove unused EnumSelector component
qqqys Aug 25, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
9 changes: 8 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,15 @@
# --- CODEOWNERS file itself ---
/.github/CODEOWNERS @pomelo-nwu @wenshao

# --- Primary npm release workflows require core maintainer approval ---
/.github/workflows/release.yml @pomelo-nwu @wenshao
/.github/workflows/finalize-release.yml @pomelo-nwu @wenshao

# --- Security gate workflows require core maintainer approval ---
/.github/workflows/security-checks.yml @pomelo-nwu @wenshao

# --- Core package ---
/packages/core/ @wenshao @tanzhenxin @yiliang114 @LaZzyMan @doudouOUC
/packages/core/ @wenshao @tanzhenxin @yiliang114 @LaZzyMan @doudouOUC @qqqys

# --- CUA Driver & Mobile MCP ---
/packages/cua-driver/ @LaZzyMan
Expand Down
7 changes: 5 additions & 2 deletions .github/issue-owners.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
"labels": ["category/core", "scope/core"],
"owners": [
"wenshao",
"tanzhenxin",
"yiliang114",
"LaZzyMan",
"doudouOUC",
Expand All @@ -25,7 +24,11 @@
"chiga0",
"qqqys",
"ytahdn",
"BenGuanRan"
"BenGuanRan",
"DragonnZhang",
"callmeYe",
"zjunothing",
"ZijianZhang989"
]
}
]
Expand Down
124 changes: 118 additions & 6 deletions .github/scripts/auto-minimize-spam.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
// guard, widens permissions, moves GH_TOKEN to job-level env, or drops
// persist-credentials would ship without any other test to catch it.
import assert from 'node:assert/strict';
import { execFileSync } from 'node:child_process';
import { readFileSync } from 'node:fs';
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';
Expand All @@ -20,9 +21,19 @@ const doc = parse(readFileSync(workflowPath, 'utf8'));
const minimizeJob = doc.jobs.minimize;
const steps = minimizeJob.steps;
const checkoutStep = steps.find((s) => s.uses?.startsWith('actions/checkout'));
const minimizeStep = steps.find((s) =>
s.name?.includes('Minimize comments'),
);
const minimizeStep = steps.find((s) => s.name?.includes('Minimize comments'));

function runMinimizableStateFilter(payload) {
assert.ok(minimizeStep, 'minimize step must exist');
const filter = [...minimizeStep.run.matchAll(/--jq '([^']+)'/g)]
.map((match) => match[1])
.find((candidate) => candidate.includes('.data.node'));
assert.ok(filter, 'minimizable state jq filter must exist');
return execFileSync('jq', ['-r', filter], {
input: JSON.stringify(payload),
encoding: 'utf8',
}).trim();
}

describe('auto-minimize-spam: repository guard', () => {
it('gates the job on the canonical repository', () => {
Expand Down Expand Up @@ -58,16 +69,117 @@ describe('auto-minimize-spam: credential scoping', () => {
assert.equal(checkoutStep.with['persist-credentials'], false);
});

it('scopes GH_TOKEN to step-level env, not job-level', () => {
it('uses the repository-scoped GitHub token in the minimize step', () => {
assert.equal(
minimizeJob.env,
undefined,
'job-level env would expose GH_TOKEN to every step',
);
assert.ok(minimizeStep, 'minimize step must exist');
assert.ok(
assert.equal(
minimizeStep.env?.GH_TOKEN,
'GH_TOKEN must be set in the minimize step env',
'${{ github.token }}',
'the classic bot PAT lacks the scope required by minimizeComment',
);
});
});

describe('auto-minimize-spam: event fast path', () => {
it('handles new comments and blocklist changes with an hourly fallback', () => {
assert.equal(doc.on.schedule[0].cron, '30 * * * *');
assert.deepEqual(doc.on.issue_comment.types, ['created']);
assert.deepEqual(doc.on.pull_request_review_comment.types, ['created']);
assert.deepEqual(doc.on.push, {
branches: ['main'],
paths: ['.github/spam-blocklist.txt'],
});
assert.match(String(minimizeJob.if), /github\.event_name == 'push'/);
});

it('processes the triggering comment without dropping bursts', () => {
const jobGuard = String(minimizeJob.if);
const flatJobGuard = jobGuard.replace(/\s+/g, ' ');
assert.match(
jobGuard,
/comment\.user\.type != 'Bot'[\s\S]*!contains\([\s\S]*OWNER[\s\S]*MEMBER[\s\S]*COLLABORATOR[\s\S]*github\.event\.comment\.author_association/,
);
assert.match(
flatJobGuard,
/author_association \) && \( github\.event_name != 'pull_request_review_comment' \|\| github\.event\.pull_request\.head\.repo\.full_name == github\.repository \)/,
);
assert.match(jobGuard, /head\.repo\.full_name == github\.repository/);
assert.match(
jobGuard,
/github\.event_name != 'pull_request_review_comment' \|\|/,
);
assert.equal(
String(doc.concurrency.group),
"auto-minimize-spam-${{ github.event.comment.node_id || 'scan' }}",
);
assert.equal(
checkoutStep.with.ref,
'${{ github.event.repository.default_branch }}',
);
assert.equal(
minimizeStep.env?.EVENT_COMMENT_LOGIN,
'${{ github.event.comment.user.login }}',
);
assert.equal(
minimizeStep.env?.EVENT_COMMENT_NODE_ID,
'${{ github.event.comment.node_id }}',
);
assert.doesNotMatch(minimizeStep.run, /\$\{\{\s*github\.event\./);
assert.equal(
minimizeStep.run.match(/\[ -n "\$EVENT_COMMENT_NODE_ID" \]/g)?.length,
2,
);
assert.match(
minimizeStep.run,
/ALL_CANDIDATES="\$\{EVENT_COMMENT_LOGIN\}"\$'\\t'"\$\{EVENT_COMMENT_NODE_ID\}"/,
);
assert.equal(
runMinimizableStateFilter({
data: { node: { isMinimized: false } },
}),
'false',
);
assert.equal(
runMinimizableStateFilter({
data: { node: { isMinimized: true } },
}),
'true',
);
assert.equal(
minimizeStep.env?.LOOKBACK_HOURS,
"${{ inputs.hours || (github.event_name == 'push' && '72') || '2' }}",
);
assert.equal(
runMinimizableStateFilter({
data: { node: null },
}),
'missing',
);
assert.match(minimizeStep.run, /if ! is_minimized="\$\(/);
assert.match(minimizeStep.run, /then\n\s+is_minimized="missing"\n\s+fi/);
assert.doesNotMatch(minimizeStep.run, /\|\| printf 'missing'/);
assert.doesNotMatch(minimizeStep.run, /2>\/dev\/null/);
assert.match(
minimizeStep.run,
/\[ "\$is_minimized" = "missing" \] && continue/,
);
});
});

describe('auto-minimize-spam: comment coverage', () => {
it('scans inline PR review comments without re-minimizing them', () => {
assert.ok(minimizeStep, 'minimize step must exist');
assert.match(minimizeStep.run, /pulls\/comments/);
assert.match(minimizeStep.run, /--paginate/);
assert.match(minimizeStep.run, /ALL_CANDIDATES=.*REVIEW_CANDIDATES/);
assert.match(minimizeStep.run, /on Minimizable \{ isMinimized \}/);
assert.match(
minimizeStep.run,
/\[ "\$is_minimized" = "true" \] && continue/,
);
});
});
Loading
Loading