Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1063 commits
Select commit Hold shift + click to select a range
9658dcc
feat(daemon): add session artifact APIs (#5895)
chiga0 Jul 3, 2026
972cb04
fix(mobile-mcp): remove lint step from CD workflow (monorepo prettier…
LaZzyMan Jul 3, 2026
9ea3099
fix(mobile-mcp): align CD workflow with release.yml npm auth (add sco…
LaZzyMan Jul 3, 2026
2a21963
feat(web-shell): display nested sub-agents as a tree in the tasks pan…
tanzhenxin Jul 3, 2026
5cd459e
fix(mobile-mcp): add production-release environment + scope to CD wor…
LaZzyMan Jul 3, 2026
fe3dd93
Add sessionless workspace memory forget and dream (#6227)
callmeYe Jul 3, 2026
081c46c
fix(ci): add always() to delay-automatic-review and ack-review-reques…
wenshao Jul 3, 2026
6accb8e
fix: avoid vsce secret scanner false positive on regex patterns (#6247)
yiliang114 Jul 3, 2026
8123c6b
fix(web-shell): encode vision model picker selection & polish dispatc…
AmariahAK Jul 3, 2026
68ff698
feat(web-shell): improve slash command discovery (taller menu, group …
wenshao Jul 3, 2026
3911b1d
fix(serve): optimize daemon NDJSON stream handling (#6263)
doudouOUC Jul 3, 2026
e1fc45d
ci(autofix): restore sandbox image flow (#6261)
yiliang114 Jul 3, 2026
67da781
fix(qqbot): markdown-first send, replyMsgId TTL, and dead code remova…
Eric-GoodBoy-Tech Jul 3, 2026
cc64d7c
feat(daemon): expose visionModelId in workspace provider status and w…
qwen-code-dev-bot Jul 3, 2026
4e3fd29
chore(release): v0.19.6 (#6280)
qwen-code-ci-bot Jul 3, 2026
a6a1258
fix(triage): strengthen PR gate with batch detection, problem existen…
pomelo-nwu Jul 3, 2026
7417805
feat(review): route suggestion-level findings to an updatable PR comm…
pomelo-nwu Jul 3, 2026
9f87c90
fix(autofix): unconditionally restore tracked files before branch che…
qwen-code-dev-bot Jul 3, 2026
5dc2e15
feat(serve): Add runtime.activity fields to daemon status API (#6270)
doudouOUC Jul 3, 2026
9b2fb30
feat(web-shell): add a daemon status page backed by GET /daemon/statu…
wenshao Jul 4, 2026
3282c17
Keep auth quick inputs open across focus changes (#6274)
barry166 Jul 4, 2026
18e2eed
Clarify macOS audio prebuild artifact naming (#6275)
barry166 Jul 4, 2026
1a227f0
fix(cache): preserve tools prefix in side-query for Anthropic prompt-…
kagura-agent Jul 4, 2026
ad7e23f
feat(web-shell): add MCP mentions and iconized @ references (#6279)
BZ-D Jul 4, 2026
cdf83d8
fix(core): give Stop-hook continuations a fresh per-turn tool-call bu…
tanzhenxin Jul 4, 2026
d3bd265
perf(glob): prune ignored directories during traversal, not just post…
minmax Jul 4, 2026
2d12c29
fix(web-shell): use theme color for @ group titles (#6294)
BZ-D Jul 4, 2026
2a6a951
fix(acp): pass per-session settings explicitly instead of racing on t…
doudouOUC Jul 4, 2026
c37cb23
feat(web-shell): manage sessions from the sidebar (archive, unarchive…
wenshao Jul 4, 2026
9c96249
fix(core): improve debug txt diagnostics (#6277)
yiliang114 Jul 4, 2026
e48999d
fix(ci): require maintainer-applied `autofix/approved` label for tier…
yiliang114 Jul 4, 2026
0e684a3
fix(auth): prevent persistent 401 after API key change (#6284)
yiliang114 Jul 4, 2026
59e771c
feat(daemon): Add session export endpoint (#6297)
doudouOUC Jul 4, 2026
548ca3d
test(e2e): make fake OpenAI reachable from Docker sandbox (#6302)
yiliang114 Jul 4, 2026
9b3aa52
fix(cli): stream long responses into scrollback to stop scroll-to-top…
MikeWang0316tw Jul 4, 2026
abec702
fix(qqbot): streaming idle-flush with tool-call and stale-callback pr…
Eric-GoodBoy-Tech Jul 4, 2026
bd9bf50
fix(openai): preserve descriptionless tools (#6243)
VectorPeak Jul 4, 2026
aa4bccf
feat(acp): advertise vision-bridge image capability in initialize res…
yiliang114 Jul 4, 2026
4400fe6
fix(core): enforce agent concurrency cap on foreground sub-agents (#6…
kagura-agent Jul 4, 2026
ba7561a
fix(ci): Stop review bots for closed PRs (#6304)
yiliang114 Jul 4, 2026
62c0a0a
fix(core): skip abbreviations in multiple_sentences filter (#6077) (#…
qwen-code-dev-bot Jul 4, 2026
90e1e3d
perf(cli): cache LoadedSettings per workspace with stat-based invalid…
doudouOUC Jul 4, 2026
e9a7917
feat(web-shell): support compact echarts full data blocks (#6232)
zhangxy-zju Jul 4, 2026
905c5c9
fix(ci): skip stale PR review runs (#6313)
yiliang114 Jul 4, 2026
e23c8e8
feat(acp): Batch session load replay (#6309)
doudouOUC Jul 4, 2026
e1f5d21
fix(core): treat request timeout of 0 as disabled instead of aborting…
Nas01010101 Jul 4, 2026
2b732f5
fix(serve): resolve false auth warning in preflight when API key is s…
doudouOUC Jul 4, 2026
1c2a643
fix(core): treat @-attached files as read for prior-read enforcement …
Nas01010101 Jul 4, 2026
4675274
fix(cli): preserve partial remote input JSONL records (#6317)
VectorPeak Jul 4, 2026
015ee42
fix(core): disable qwen thinking via chat_template_kwargs on non-Dash…
beantownbytes Jul 4, 2026
acfb00e
feat(web-shell): add custom at mention panel (#6242)
ytahdn Jul 5, 2026
bfce93a
feat(acp-bridge): Add EventBus subscriber byte cap (#6314)
doudouOUC Jul 5, 2026
e390639
perf(ci): optimize autofix pipeline — fast-track, skip duplicate buil…
yiliang114 Jul 5, 2026
54ba259
fix(web-shell): keep skill slash commands after starting a new sessio…
wenshao Jul 5, 2026
50d027f
test(core): cover full:false branch of recordAttachedFileRead for tru…
Nas01010101 Jul 5, 2026
52a190b
feat(web-shell): time-series metrics charts on Daemon Status (#6307)
wenshao Jul 5, 2026
adda526
fix(web-shell): localize built-in command and skill descriptions in t…
wenshao Jul 5, 2026
06fc052
fix(desktop): enforce transform_data isolation (#6285)
gauravyad86 Jul 5, 2026
9042ede
Notify model when extension capabilities change (#6245)
ZijianZhang989 Jul 5, 2026
03c5447
fix(core): skip no-op max_tokens escalation (#6234)
han-dreamer Jul 5, 2026
1ead34c
fix(core): avoid null OpenAPI schema types (#6323)
VectorPeak Jul 5, 2026
6a726f6
refactor(core): centralize extension runtime refresh (#6152)
ZijianZhang989 Jul 5, 2026
7a528d0
feat(daemon): Add session organization (#6305)
doudouOUC Jul 5, 2026
fe816f6
feat(cli): Surface daemon prompt queue status (#6325)
doudouOUC Jul 5, 2026
60b9c92
Restart stalled ACP bridge for channels (#6330)
qqqys Jul 5, 2026
b13032d
docs(design): daemon side-channel coordination (A1/A2/A4/A5) (#4511)
chiga0 Jul 5, 2026
fa81e0a
docs: fix skill invocation syntax and include Feishu in channel lists…
DragonnZhang Jul 5, 2026
feaeeb2
feat(scheduler): opt-in per-tool-call execution timeout (#6124)
minmax Jul 5, 2026
7605c8b
feat(web-shell): add onSessionChange and onSubmitBefore callbacks (#6…
ytahdn Jul 5, 2026
5d0733f
feat(core): stabilize tool schema declaration order (#6339)
water-in-stone Jul 5, 2026
b8e3550
Qwen-Code has calculated the incorrect context window (#6266)
heyparth1 Jul 5, 2026
0d1d240
feat(core): model fallback chain — auto-switch to backup models on ov…
yiliang114 Jul 5, 2026
49b000d
fix(core): preserve OpenAI reasoning as raw thoughts (#6192)
han-dreamer Jul 5, 2026
8146b7f
fix(core): add UTF-8 prefix for cmd.exe on Windows (#6216)
Aleks-0 Jul 5, 2026
c7170b5
feat(cli): support multi-folder workspaces in file system boundary ch…
yiliang114 Jul 5, 2026
802c382
feat(web-shell): support icon chips for mention tags (#6337)
BZ-D Jul 5, 2026
3bf0fa0
Feat: LSP Server support hot reload (#5953)
water-in-stone Jul 5, 2026
82fb6a4
fix(cli): allow queued input during compression (#6336)
han-dreamer Jul 5, 2026
a8a99f0
fix(web-shell): finalize deferred gated submissions (#6342)
ytahdn Jul 5, 2026
11c874d
feat(cli): Add large pipe frame measurement (#6335)
doudouOUC Jul 5, 2026
b23f888
[codex] add proactive channel loop tools (#6287)
qqqys Jul 5, 2026
1b58ede
fix(cli): smoother live streaming preview — drop "generating more" cu…
MikeWang0316tw Jul 5, 2026
fc701f8
perf: memoize skill scans, debounce sleep-inhibitor log, guard IDE re…
kagura-agent Jul 5, 2026
be0b074
docs: fix settings.json reference drift against schema (#6351)
DragonnZhang Jul 5, 2026
47f62a4
fix(desktop): preserve glued automation history records (#6344)
VectorPeak Jul 5, 2026
edc0555
feat(web-shell): named session groups and color tags in the sidebar (…
wenshao Jul 6, 2026
fa6e0f9
fix(web-shell): suppress stale pending prompt refresh errors (#6352)
ytahdn Jul 6, 2026
9a63c03
feat(web-shell): add a Scheduled Tasks management page (#6348)
wenshao Jul 6, 2026
1783ae8
docs(web-shell): document chart renderer integration (#6353)
zhangxy-zju Jul 6, 2026
170ce79
feat(web-shell): show Settings and Daemon Status as an in-place panel…
wenshao Jul 6, 2026
0c28ddc
ci(autofix): move agent prompts into a project skill (#6306)
yiliang114 Jul 6, 2026
6f2f21f
docs: standardize GitHub Actions capitalization (#6367)
guiyang882 Jul 6, 2026
b726b7c
fix(web-shell): constrain virtual scroll rows (#6362)
ytahdn Jul 6, 2026
5c8af1a
fix(cli): allow ACP local fallback reads from /tmp (#6370)
doudouOUC Jul 6, 2026
cb49633
test(core): make context warning threshold test dynamic (#6391)
yiliang114 Jul 6, 2026
c7fa13d
fix(core): default context windows to 200k (#6387)
tanzhenxin Jul 6, 2026
350191e
feat(web-shell): add token-usage analytics dashboard to Daemon Status…
wenshao Jul 6, 2026
3744cd0
feat(cli): Add Phase 1 workspace runtime registry (#6394)
doudouOUC Jul 6, 2026
f20925e
fix(triage): exclude test files from core module size gate and distin…
Copilot Jul 6, 2026
879b854
fix(cli): Keep model picker entries contiguous in short terminals (#6…
tanzhenxin Jul 6, 2026
063535f
fix(core): log OpenAI error request IDs (#6379)
tanzhenxin Jul 6, 2026
57b3dcd
fix(cli): ignore current review run in presubmit CI (#6397)
yiliang114 Jul 6, 2026
5f7b57f
fix(autofix): improve review addressing and verification (#6382)
yiliang114 Jul 6, 2026
4292102
fix(core): require integer ReadFile pagination params (#6381)
VectorPeak Jul 6, 2026
7281eb5
feat(core): surface PreToolUse hook 'ask' as a TUI confirmation (#5629)
LaZzyMan Jul 6, 2026
2fc6b08
fix(core): resolve symlinks when matching conditional rules and skill…
DennisYu07 Jul 6, 2026
0f98842
fix(web-shell): refine tool detail cards (#6399)
ytahdn Jul 6, 2026
ac123bb
fix(core): preserve no-argument tool calls that stream an empty argum…
tomsen02 Jul 6, 2026
57326e5
feat(review): add issue-fidelity and root-cause ownership gate to /re…
DragonnZhang Jul 6, 2026
881d682
fix(cli): use EnvHttpProxyAgent in channel proxy to respect NO_PROXY …
qwen-code-dev-bot Jul 6, 2026
d56bd1d
fix(daemon): handle settings reload events outside transcript (#6407)
doudouOUC Jul 6, 2026
be7e874
Handle missing web-shell sessions without redirecting (#6357)
ytahdn Jul 6, 2026
bcdb44c
docs(hooks): document PreToolUse permissionDecision 'ask' behavior (#…
DragonnZhang Jul 6, 2026
70220fb
feat(cli): Add Phase 2a workspace foundation (#6410)
doudouOUC Jul 7, 2026
6352d97
fix(memory): don't advance AutoMemory cursor when extractor makes zer…
lcheng321 Jul 7, 2026
245defb
fix(core): gate image payload replacement behind threshold (#6380)
LaZzyMan Jul 7, 2026
f41e95a
feat(web-shell): add Session Overview panel and in-window split view …
wenshao Jul 7, 2026
80340fb
fix(review): remove qwen-code-specific core-infra gate from bundled /…
DragonnZhang Jul 7, 2026
6863268
fix(web-shell): polish scheduled task timeline UI (#6386)
callmeYe Jul 7, 2026
db8e344
fix(cli): smoother streaming table rendering (#6345)
MikeWang0316tw Jul 7, 2026
1ee9780
fix(core): Gate large PDF text extraction (#6409)
doudouOUC Jul 7, 2026
06cd7ce
feat(cli): add --project and --global flags to /model for per-project…
Alex-ai-future Jul 7, 2026
ff317d6
perf(core): Add session start profiler (#6349)
doudouOUC Jul 7, 2026
132801b
feat(core): add maxSubAgents setting to limit parallel sub-agent coun…
yiliang114 Jul 7, 2026
ce00e93
fix(core): allow rewind after compressed history (#6358)
yiliang114 Jul 7, 2026
46bbe76
fix(core): align monitor limit parameter schemas (#6413)
VectorPeak Jul 7, 2026
4c884e4
fix(core): prevent KV-cache invalidation on tool_search by reordering…
Aleks-0 Jul 7, 2026
067cfbb
docs: consolidate design docs and plans under docs/ (#6417)
DragonnZhang Jul 7, 2026
9ee8546
fix(shell): avoid Unix pager default on Windows (#6390)
han-dreamer Jul 7, 2026
001d20f
feat(scheduled-tasks): run each task in its own dedicated, named sess…
wenshao Jul 7, 2026
fde1882
feat(cli): support stacked slash-skill invocations (#6361)
DennisYu07 Jul 7, 2026
5d2bfbd
feat(core): add Tool(param:value) permission syntax for parameter-lev…
DennisYu07 Jul 7, 2026
7e0e79b
fix(daemon): preserve user message source metadata (#6385)
callmeYe Jul 7, 2026
736b710
feat(core): add tools.visible config for selective deferred-tool visi…
Aleks-0 Jul 7, 2026
077a247
fix(core): prevent re-invoking loaded skill from appending duplicate …
DennisYu07 Jul 7, 2026
55652d4
fix(web-shell): keep split-view session list fresh and preserve panes…
wenshao Jul 7, 2026
f7296d0
feat(web-shell): add Qwen logo beside the sidebar new-chat button (#6…
wenshao Jul 7, 2026
c7d22dc
fix(web-shell): improve user tags and mobile menu layout (#6441)
yuanyuanAli Jul 7, 2026
ce2fee9
fix(web-shell): clear stale floating todos (#6425)
ytahdn Jul 7, 2026
bd6816b
fix(web-shell): keep errored turns expanded (#6424)
ytahdn Jul 7, 2026
cfb1feb
Avoid refreshing session activity on load (#6439)
yiliang114 Jul 7, 2026
17138b5
fix(web-shell): hide rotating loading phrase in split-view pane statu…
wenshao Jul 7, 2026
6fdd0fc
fix(core): Support large text range reads (#6404)
doudouOUC Jul 7, 2026
9bb68b3
fix(core): strip system-reminder blocks from session title and recap …
yiliang114 Jul 7, 2026
df6be03
Upgrade GitHub Actions for Node 24 compatibility (#5157)
salmanmkc Jul 7, 2026
010bedf
fix(autofix): report review handoff failures (#6415)
yiliang114 Jul 7, 2026
d1d53d7
fix(monitor): preserve inherited git pager (#6429)
han-dreamer Jul 7, 2026
40340ef
fix(serve): classify interrupted model stream errors (#6422)
ytahdn Jul 7, 2026
1d19fe7
fix(web-shell): refine tool call summaries (#6450)
ytahdn Jul 7, 2026
55b2886
fix(web-shell): split-view pane fixes (remove "current" badge, clear …
wenshao Jul 7, 2026
971d4ba
feat(web-shell): add column reorder, resize, and freeze controls to m…
jifeng Jul 7, 2026
467b292
feat(channels): add WeCom intelligent robot channel (#6436)
qqqys Jul 7, 2026
e3d7d10
[codex] add natural channel memory intents (#6376)
qqqys Jul 7, 2026
3d1122d
perf(cli): defer startup prefetch tasks (#6303)
water-in-stone Jul 7, 2026
65c82be
feat(web-shell): unify scheduled task sessions — bind chat-created ta…
wenshao Jul 7, 2026
86ae16a
chore(release): v0.19.7 (#6484)
qwen-code-ci-bot Jul 7, 2026
394c1a2
docs(channels): add WeCom to channels overview (#6490)
DragonnZhang Jul 7, 2026
27f8f2c
feat(cli): Add serve env isolation and total admission (#6416)
doudouOUC Jul 8, 2026
560e610
feat(cli): review auto-generated skills with an inline preview, edito…
tanzhenxin Jul 8, 2026
faf7c43
fix(core): reject fractional LSP limit inputs (#6455)
VectorPeak Jul 8, 2026
14f02c1
fix(core): Match hook display-name matchers to tool ids (#6373)
LaZzyMan Jul 8, 2026
045bbee
fix(web-shell): hide sidebar settings text when width is insufficient…
wenshao Jul 8, 2026
29cefd7
fix(web-shell): count daemon sessions in Daemon Status usage dashboar…
wenshao Jul 8, 2026
79bc668
feat(cli): Show permission mode badge in footer for DEFAULT mode (#6498)
DennisYu07 Jul 8, 2026
58e51eb
fix(channel): Relay ACP permission requests (#6446)
qqqys Jul 8, 2026
e83d548
fix(core): reject Windows-style workspace artifact paths (#6483)
VectorPeak Jul 8, 2026
49aa4c8
fix(cli): show file path in compact tool summary for single collapsib…
Alex-ai-future Jul 8, 2026
5605c1b
fix(cua-driver): migrate Windows scripts + README rewrite (#6515)
LaZzyMan Jul 8, 2026
1420566
feat(serve): Bound replay snapshot history (#6482)
doudouOUC Jul 8, 2026
d8dc804
feat(web-shell): restore the full composer in split-view panes (#6510)
wenshao Jul 8, 2026
5b43edc
fix(cli): bound the live streaming-table pending height (fix scroll-t…
MikeWang0316tw Jul 8, 2026
880b06e
fix(cli): clean up IDE client after deferred timeout (#6509)
water-in-stone Jul 8, 2026
727c2d5
fix(web-shell): prevent sidebar footer overflow (#6522)
callmeYe Jul 8, 2026
5b2d136
fix(web-shell): refine markdown table interactions (#6500)
jifeng Jul 8, 2026
8296ce9
fix(web-shell): i18n for ~43 hardcoded English strings across 15 file…
wenshao Jul 8, 2026
51f0364
fix(cli): keep status line on session model (#6514)
yiliang114 Jul 8, 2026
a6ad81f
feat(hooks): inject background tasks and cron jobs status into Stop/S…
DennisYu07 Jul 8, 2026
e28a637
fix(cli): allow approval-mode changes without bearer token (#6527)
wenshao Jul 8, 2026
a07fdc6
fix(memory): allow forget to remove user managed memory (#6432)
callmeYe Jul 8, 2026
43e6a93
feat(cli): Enable multi-workspace session routing (#6511)
doudouOUC Jul 8, 2026
c516ee8
fix(core): omit deprecated temperature param for Claude 4.8+ (#6520)
qwen-code-dev-bot Jul 8, 2026
271664b
feat(cli): auto-retry next port when serve port is in use (#6513)
wenshao Jul 8, 2026
151d269
feat: extension file reload — watch for plugin changes and hot-reload…
ZijianZhang989 Jul 8, 2026
1f92787
feat(channels): add dmPolicy config to disable private/DM messages (#…
chenghuichen Jul 8, 2026
b2b02d2
feat(web-shell): expose external split controls (#6523)
ytahdn Jul 8, 2026
e7f94a5
fix(core): detect non-SSE HTTP 200 responses in OpenAI streaming pipe…
Copilot Jul 8, 2026
955ad27
fix(scripts): handle missing NPM dist-tags gracefully in release vers…
qwen-code-dev-bot Jul 8, 2026
7281f0d
feat(core): add working_dir to the Agent tool for pinning subagents t…
wenshao Jul 8, 2026
e3e449f
feat(autofix): extend review loop to all dev-bot PRs, add real-time t…
wenshao Jul 8, 2026
e935141
fix(cli): fixed-width elapsed time below one minute to stop status-li…
zjunothing Jul 8, 2026
082b3bb
fix(memory): give each linked git worktree its own auto-memory root (…
zjunothing Jul 8, 2026
5f41b16
fix(cli): unblock /clear after task cancellation and surface the bloc…
zjunothing Jul 8, 2026
b2bee70
fix(web-shell): stabilize slash command i18n in split-view panes (#6546)
wenshao Jul 8, 2026
b330ec8
chore(release): v0.19.8 (#6549)
qwen-code-ci-bot Jul 8, 2026
016d624
fix(core): detect subagent tool call loops (#6543)
yiliang114 Jul 8, 2026
65c0d36
fix(session): detect and mark broken history chains instead of silent…
doudouOUC Jul 8, 2026
74ebb10
fix(cli): prefer command name match over alias match regardless of re…
Alex-ai-future Jul 8, 2026
87cad6f
feat(memory): make background memory agent timeouts configurable (#6459)
zjunothing Jul 8, 2026
393943d
feat(cli): Add session owner index for workspace runtimes (#6540)
doudouOUC Jul 8, 2026
6dafb33
docs: fix model-provider config shape and refresh feature/setting dri…
DragonnZhang Jul 8, 2026
b8b3287
fix(channels): add chat payload diagnostics (#6539)
qqqys Jul 8, 2026
0a54652
fix(core): configurable vision bridge timeout + retry with fresh budg…
zjunothing Jul 8, 2026
10fa9ef
fix(shell): avoid self-kill from pgrep selectors (#6544)
yiliang114 Jul 8, 2026
fbdaa52
Gate browser automation MCP on external adapter (#6472)
yiliang114 Jul 8, 2026
e3a247f
perf(core): add pure-ASCII fast path to text token estimation (#6551)
dexhunter Jul 8, 2026
3b20a12
fix(extension): clean tempDir before fallback git clone on Windows (#…
C0d3N1nja97342 Jul 9, 2026
4d50153
chore(core): remove stale refreshStartupContextReminder mocks from to…
Aleks-0 Jul 9, 2026
25423b1
fix(cli): align memory dialog with managed memory (#6434)
callmeYe Jul 9, 2026
ba709c2
ci(autofix): Add single-target scheduler (#6547)
yiliang114 Jul 9, 2026
6e48077
fix(daemon): surface workspace memory task error details (#6431)
callmeYe Jul 9, 2026
d8084c6
fix(serve): stop cdp-mcp-command reading process.env directly (#6562)
chinesepowered Jul 9, 2026
befa937
fix(mobile-mcp): strip bounds attributes from UI hierarchy dump (#6568)
LaZzyMan Jul 9, 2026
8c896f6
fix(web-shell): make dialog backdrop z-index configurable (#6572)
cxruan Jul 9, 2026
48e5d5d
feat(web-shell): polish stats table layout and todo panel UI (#6559)
ytahdn Jul 9, 2026
c9a8099
feat(cli): List persisted sessions for trusted workspaces (#6558)
doudouOUC Jul 9, 2026
5c82857
Add harness infrastructure for web-shell package (#6517)
harbin1053020115 Jul 9, 2026
e64010c
Fix workspace skills for disabled extensions and ACP preheat (#6534)
ytahdn Jul 9, 2026
f2885a0
fix(ci): add retry logic to VSCode IDE Companion publish steps (#6574)
Copilot Jul 9, 2026
637d00c
feat(core): render PDF pages to images when text extraction overflows…
doudouOUC Jul 9, 2026
2a1807f
fix(ci): detect silent triage failures with empty-response check (#6566)
yiliang114 Jul 9, 2026
0907edb
Fix long session timeline scrolling (#6526)
callmeYe Jul 9, 2026
ac2f371
feat(scheduled-tasks): add isolated run mode via create_sub_session t…
wenshao Jul 9, 2026
c62b344
feat(cli): VP mode — inline thought expand on click + auto-hiding scr…
chiga0 Jul 9, 2026
41c405b
feat(review): post Suggestion findings as inline comments (#6593)
wenshao Jul 9, 2026
bb96ac4
fix(cli): forward user input to MCP prompts with no declared argument…
yiliang114 Jul 9, 2026
53243de
feat(daemon): persist session artifacts across restarts (#6557)
chiga0 Jul 9, 2026
fd613ea
feat(cli): Add channel worker settings reload for serve --channel (#6…
doudouOUC Jul 9, 2026
d4d3a4b
Support voiceBridge for ACP audio prompts (#6576)
qqqys Jul 9, 2026
a6902c5
ci(autofix): per-issue concurrency, route cancel-in-progress, assigne…
yiliang114 Jul 9, 2026
e06d3be
fix(cua-driver): complete coordinate normalization for zoom/scroll/mo…
LaZzyMan Jul 9, 2026
21cdb4a
chore(cua-driver): update version refs to 0.7.1 + add fix doc (#6616)
LaZzyMan Jul 9, 2026
c412d62
feat(web-shell): add bottom status items (#6613)
dreamWB Jul 9, 2026
f5d36aa
feat(cli): Add workspace-qualified core REST routes (#6567)
doudouOUC Jul 9, 2026
e250d6e
feat: add `qwen update` and `/update` commands with auto-update suppo…
liziwl Jul 9, 2026
0e229be
feat(tui): Ctrl+O frozen transcript view and unified tool output rend…
chiga0 Jul 9, 2026
2054302
fix(channels): align memory access with channel gates (#6620)
qqqys Jul 10, 2026
55311c3
ci: route full CI follow-up jobs to selected runner (#6608)
yiliang114 Jul 10, 2026
bb3b2f3
feat(web-shell): add assistant turn footer slot (#6611)
dreamWB Jul 10, 2026
5e67163
docs(core): fix typos in ide notification comments (#6623)
chinesepowered Jul 10, 2026
ab08a2a
fix(vscode): normalize NOTICES.txt line endings to LF (#6634)
wenshao Jul 10, 2026
6e096cf
fix(web-shell): align split view chat interactions (#6633)
ytahdn Jul 10, 2026
88bd001
fix(cli): stabilize flaky UI tests (#6622)
qqqys Jul 10, 2026
dd62c3a
feat(scheduled-tasks): gate an isolated run behind a precondition (#6…
wenshao Jul 10, 2026
5c5fda5
feat(cli): List archived and organized sessions for non-primary works…
doudouOUC Jul 10, 2026
6d966d2
test(core): stabilize file history eviction test (#6637)
yiliang114 Jul 10, 2026
7ad2a5f
fix(mobile-mcp): reject out-of-range normalized coordinates (#6656)
LaZzyMan Jul 10, 2026
37f7d5c
test(cli): isolate cli entry fallback fixture (#6658)
yiliang114 Jul 10, 2026
24bca9a
feat(web-shell): add context mention customization (#6578)
dreamWB Jul 10, 2026
59bba8e
fix(channels): return only final ACP response text (#6615)
qqqys Jul 10, 2026
9f84bcb
fix(core): use consistent error response for plan mode blocked tools
Alex-ai-future Jul 10, 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.
5 changes: 5 additions & 0 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
self-hosted-runner:
labels:
- 'ecs-qwen'

config-variables: null
2 changes: 1 addition & 1 deletion .github/actions/post-coverage-comment/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ runs:
echo "_For detailed HTML reports, please see the 'coverage-reports-${NODE_VERSION}-${OS}' artifact from the main CI run._" >> "${COMMENT_FILE}"

- name: 'Post Coverage Comment'
uses: 'thollander/actions-comment-pull-request@65f9e5c9a1f2cd378bd74b2e057c9736982a8e74' # ratchet:thollander/actions-comment-pull-request@v3
uses: 'thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b' # ratchet:thollander/actions-comment-pull-request@v3
if: |-
${{ always() }}
with:
Expand Down
102 changes: 102 additions & 0 deletions .github/scripts/ci/classify-profile.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
#!/usr/bin/env node
import { readFileSync } from 'node:fs';

export const CI_PROFILES = {
DOCS_ONLY: 'docs_only',
GITHUB_CI_ONLY: 'github_ci_only',
FULL: 'full',
};

export const GITHUB_CI_ONLY_FILES = new Set([
'.github/scripts/pr-safety-precheck.mjs',
'.github/scripts/pr-safety-precheck.test.mjs',
'.github/workflows/qwen-pr-safety-precheck.yml',
]);

function isDocsOnlyFile(file) {
const normalized = file.replace(/\\/g, '/');
return (
/^docs\/.+\.(?:md|mdx)$/i.test(normalized) ||
/^(?:README|CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT|SECURITY|SUPPORT|LICENSE|NOTICE)(?:\.[^/]*)?$/i.test(
normalized,
)
);
}

function classifyPath(file) {
if (isDocsOnlyFile(file)) return CI_PROFILES.DOCS_ONLY;
if (GITHUB_CI_ONLY_FILES.has(file)) return CI_PROFILES.GITHUB_CI_ONLY;
return CI_PROFILES.FULL;
}

function classifyFileEntry(entry) {
if (typeof entry === 'string') return classifyPath(entry);

const filename = entry?.filename;
if (!filename) return CI_PROFILES.FULL;

const profile = classifyPath(filename);
if (entry.status !== 'renamed') return profile;

const previousProfile = entry.previous_filename
? classifyPath(entry.previous_filename)
: CI_PROFILES.FULL;
return previousProfile === profile ? profile : CI_PROFILES.FULL;
}

export function classifyChangedFiles(files) {
const changedFiles = files.filter(Boolean);
if (changedFiles.length === 0) return CI_PROFILES.FULL;

if (
changedFiles.every(
(entry) => classifyFileEntry(entry) === CI_PROFILES.DOCS_ONLY,
)
) {
return CI_PROFILES.DOCS_ONLY;
}

if (
changedFiles.every(
(entry) => classifyFileEntry(entry) === CI_PROFILES.GITHUB_CI_ONLY,
)
) {
return CI_PROFILES.GITHUB_CI_ONLY;
}

return CI_PROFILES.FULL;
}

function parseChangedFiles(text) {
return text
.split(/\r?\n/)
.filter(Boolean)
.map((line) => {
try {
return JSON.parse(line);
} catch {
return line;
}
});
}

function main() {
const filePath = process.argv[2];
if (!filePath) {
console.log(CI_PROFILES.FULL);
return;
}

try {
const files = parseChangedFiles(readFileSync(filePath, 'utf8'));
console.log(classifyChangedFiles(files));
} catch (err) {
const message = err instanceof Error ? err.message : String(err);
console.error(`::warning::Failed to read changed files: ${message}`);
console.log(CI_PROFILES.FULL);
}
}

if (import.meta.url === `file://${process.argv[1]}`) {
main();
}
116 changes: 116 additions & 0 deletions .github/scripts/ci/classify-profile.test.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
import assert from 'node:assert/strict';
import test from 'node:test';

import {
GITHUB_CI_ONLY_FILES,
classifyChangedFiles,
} from './classify-profile.mjs';

test('uses docs_only for markdown-only changes', () => {
assert.equal(
classifyChangedFiles(['README.md', 'docs/usage.md', '.qwen/design/foo.md']),
'full',
);
assert.equal(
classifyChangedFiles(['README.md', 'docs/usage.md']),
'docs_only',
);
});

test('uses docs_only for uppercase and extensionless docs', () => {
assert.equal(
classifyChangedFiles(['README.MD', 'docs/guide.MDX', 'LICENSE', 'README']),
'docs_only',
);
});

test('falls back to full for root docs names used as directories', () => {
assert.equal(classifyChangedFiles(['README.md/evil.ts']), 'full');
assert.equal(classifyChangedFiles(['LICENSE.txt/src/index.ts']), 'full');
});

test('uses github_ci_only for the allowed GitHub CI helper files', () => {
assert.equal(
classifyChangedFiles([...GITHUB_CI_ONLY_FILES]),
'github_ci_only',
);
});

test('uses github_ci_only for each allowed GitHub CI helper file', () => {
for (const file of GITHUB_CI_ONLY_FILES) {
assert.equal(classifyChangedFiles([file]), 'github_ci_only');
}
});

test('falls back to full for case-mismatched GitHub CI helper paths', () => {
assert.equal(
classifyChangedFiles(['.GITHUB/SCRIPTS/PR-SAFETY-PRECHECK.MJS']),
'full',
);
});

test('classifies renamed files using both old and new paths', () => {
assert.equal(
classifyChangedFiles([
{
filename: 'docs/new.md',
previous_filename: 'packages/core/src/runtime.ts',
status: 'renamed',
},
]),
'full',
);
assert.equal(
classifyChangedFiles([
{
filename: 'docs/new.md',
previous_filename: 'docs/old.md',
status: 'renamed',
},
]),
'docs_only',
);
});

test('falls back to full when changed files are unavailable', () => {
assert.equal(classifyChangedFiles([]), 'full');
assert.equal(classifyChangedFiles(['', null, undefined]), 'full');
});

test('falls back to full for source or mixed changes', () => {
assert.equal(
classifyChangedFiles(['README.md', 'packages/cli/src/index.ts']),
'full',
);
assert.equal(
classifyChangedFiles([
'README.md',
'.github/scripts/pr-safety-precheck.mjs',
]),
'full',
);
});

test('falls back to full for main CI workflow changes', () => {
assert.equal(classifyChangedFiles(['.github/workflows/ci.yml']), 'full');
assert.equal(classifyChangedFiles(['.github/workflows/codeql.yml']), 'full');
});

test('falls back to full for classifier changes', () => {
assert.equal(
classifyChangedFiles(['.github/scripts/ci/classify-profile.mjs']),
'full',
);
assert.equal(
classifyChangedFiles(['.github/scripts/ci/classify-profile.test.mjs']),
'full',
);
});

test('falls back to full for runtime markdown assets and instruction files', () => {
assert.equal(
classifyChangedFiles(['packages/core/src/skills/bundled/foo/SKILL.md']),
'full',
);
assert.equal(classifyChangedFiles(['AGENTS.md']), 'full');
});
Loading
Loading