@qwen-code/qwen-code 0.20.0-nightly.20260722.b98306b7e → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +1 -1
- package/bundled/qc-helper/docs/features/auto-mode.md +16 -19
- package/bundled/qc-helper/docs/features/commands.md +0 -54
- package/bundled/qc-helper/docs/features/sub-agents.md +7 -16
- package/bundled/qc-helper/docs/integration-github-action.md +10 -10
- package/bundled/qc-helper/docs/qwen-serve.md +1 -2
- package/bundled/review/DESIGN.md +2 -2
- package/bundled/review/SKILL.md +4 -4
- package/chunks/{MaxSizedBox-YO432SD4.js → MaxSizedBox-B5YGZSYE.js} +34 -41
- package/chunks/{StandaloneSessionPicker-525JBPXC.js → StandaloneSessionPicker-CEGO2AZX.js} +50 -57
- package/chunks/{acpAgent-FORCZCBG.js → acpAgent-YUR43TLG.js} +496 -1487
- package/chunks/{agent-OZCWHX2J.js → agent-H4JIDL7S.js} +30 -37
- package/chunks/agent-headless-TTBEREQV.js +61 -0
- package/chunks/{anthropicContentGenerator-NMSS7IMV.js → anthropicContentGenerator-HVKLXOOU.js} +12 -13
- package/chunks/{artifact-tool-56T5IMBP.js → artifact-tool-WBCAMD3O.js} +3 -3
- package/chunks/{askUserQuestion-E25OBIC2.js → askUserQuestion-6DZC4UV5.js} +3 -3
- package/chunks/{bridge-HUUBAUDS.js → bridge-VL7ITBU5.js} +35 -42
- package/chunks/{build-GHIZ4MSZ.js → build-SSCNEHZZ.js} +1 -1
- package/chunks/{ca-N6VVUFVB.js → ca-2SL2BXTK.js} +201 -611
- package/chunks/{channel-worker-group-LFBT7K64.js → channel-worker-group-53CMOPFT.js} +5 -5
- package/chunks/{channel-worker-manager-3RUPERG2.js → channel-worker-manager-UTXILKC2.js} +5 -5
- package/chunks/{channel-worker-supervisor-A3KVATD3.js → channel-worker-supervisor-ZGO2W2MD.js} +4 -4
- package/chunks/{chunk-2LI23QA6.js → chunk-2HOVDT7W.js} +1 -1
- package/chunks/{chunk-QSZOJHCQ.js → chunk-2LL7TXB4.js} +2 -2
- package/chunks/{chunk-EGMNITTR.js → chunk-333CXMNJ.js} +5 -5
- package/chunks/{chunk-DGKZ6QL3.js → chunk-33XUAINQ.js} +21 -61
- package/chunks/{chunk-DKT6SIJC.js → chunk-4EP2PYYL.js} +5 -5
- package/chunks/{chunk-QW3QUYG5.js → chunk-4ILMYHEI.js} +3 -3
- package/chunks/{chunk-B5KE3KNO.js → chunk-4N3KMAIL.js} +32 -128
- package/chunks/{chunk-6ZBPS62S.js → chunk-4ODB7WIB.js} +1 -1
- package/chunks/{chunk-5XPUJM4N.js → chunk-4XNLIGVA.js} +298 -576
- package/chunks/{chunk-67SZUDUH.js → chunk-542SK7KV.js} +1608 -243
- package/chunks/{chunk-RZZNAWTE.js → chunk-5JBR5XIK.js} +2 -2
- package/chunks/{chunk-E4IMU4Y5.js → chunk-5SCI6E3E.js} +1 -1
- package/chunks/{chunk-ZKY7USAE.js → chunk-6AFUCL3D.js} +1 -1
- package/chunks/{chunk-5I5BM454.js → chunk-6EFTQYW7.js} +1 -1
- package/chunks/{chunk-BXCXDT2T.js → chunk-7PZ2ATFZ.js} +29 -54
- package/chunks/{chunk-FJZPCXZM.js → chunk-7RMOXZTC.js} +4 -4
- package/chunks/{chunk-XPWXDCW5.js → chunk-7SXZC7ID.js} +6 -7
- package/chunks/{chunk-O2WEV2LS.js → chunk-A5LYNIW7.js} +8 -8
- package/chunks/{chunk-SEHBVG2S.js → chunk-AJSJ5TTU.js} +1 -1
- package/chunks/{chunk-422RQSNN.js → chunk-AKX4WPPP.js} +86 -307
- package/chunks/{chunk-QVQCCBMW.js → chunk-ANPINBOF.js} +5 -5
- package/chunks/{chunk-JJEFX6U5.js → chunk-AQIEINAY.js} +1766 -28
- package/chunks/{chunk-7Z6JQEL6.js → chunk-AYCDXHZB.js} +1 -1
- package/chunks/{chunk-BKZEHVPV.js → chunk-B3KGZCQN.js} +169 -177
- package/chunks/{chunk-6X4GWOPW.js → chunk-BDBMYST4.js} +1 -1
- package/chunks/{chunk-25WFJZL5.js → chunk-BMWMT5Y2.js} +373 -3
- package/chunks/{chunk-EDANOBFR.js → chunk-BRRF37CO.js} +6 -6
- package/chunks/{chunk-QLJUC7TG.js → chunk-BVLROR2T.js} +1 -1
- package/chunks/{chunk-OQB4EXO4.js → chunk-C27BYUX6.js} +11 -14
- package/chunks/{chunk-GDBCCE2J.js → chunk-CB2HFGRV.js} +6 -31
- package/chunks/chunk-CPCVCKKF.js +358 -0
- package/chunks/{chunk-K6YXJ3J5.js → chunk-CV63PP6U.js} +1 -1
- package/chunks/{chunk-BWGIRN4Z.js → chunk-CZF3E5GF.js} +1 -1
- package/chunks/{chunk-6NAAGP57.js → chunk-D22SX43D.js} +1 -1
- package/chunks/{chunk-X6N25LXS.js → chunk-D2VIDMVM.js} +2 -2
- package/chunks/{chunk-E7O22QBU.js → chunk-DBE4QFZS.js} +23 -27
- package/chunks/{chunk-4ZAHUGSC.js → chunk-DP5GXXNZ.js} +1 -5
- package/chunks/{chunk-Q2YKNMLS.js → chunk-EAUYY7SS.js} +3 -3
- package/chunks/{chunk-KHOVYUHX.js → chunk-EIAK6Q2B.js} +2 -2
- package/chunks/{chunk-NPQDJGKU.js → chunk-EZVDJFZ7.js} +1 -1
- package/chunks/{chunk-FODK6UMO.js → chunk-FEOZBUMT.js} +27 -0
- package/chunks/{chunk-6NHK6HS7.js → chunk-FLSVD6BS.js} +3 -3
- package/chunks/{chunk-LLJNFFFT.js → chunk-FQD7GFSV.js} +3 -3
- package/chunks/{chunk-T2L47JJK.js → chunk-FSL5W5TI.js} +3 -3
- package/chunks/{chunk-JCW2R7WC.js → chunk-G45X5TRN.js} +72 -1
- package/chunks/{chunk-ZHERRXZJ.js → chunk-GKY2OJ7R.js} +1 -1
- package/chunks/{chunk-6IL7KRLE.js → chunk-GMGDLUC7.js} +1 -1
- package/chunks/{chunk-N2HDLRGT.js → chunk-HZPN55E5.js} +1 -1
- package/chunks/{chunk-NTC7J4X7.js → chunk-I2PYAYFM.js} +3 -3
- package/chunks/{chunk-RVWSD6GI.js → chunk-IR46U7RB.js} +3 -3
- package/chunks/{chunk-W6E7KTQL.js → chunk-IVPSS6EL.js} +4 -4
- package/chunks/{chunk-4K56OJFJ.js → chunk-JD3MKVKL.js} +1 -1
- package/chunks/{chunk-SP5WRGVG.js → chunk-JNWZQ27S.js} +3 -3
- package/chunks/{chunk-VAUDHMX6.js → chunk-KDC6GNQR.js} +4 -4
- package/chunks/{chunk-5TSCAYXT.js → chunk-KG3XV6FH.js} +2 -29
- package/chunks/{chunk-HCQ2Q3KF.js → chunk-KOR3XKCA.js} +4 -10
- package/chunks/{chunk-52Y2T4L3.js → chunk-KQNM4EO7.js} +5 -137
- package/chunks/{chunk-4K7VDKAD.js → chunk-KTUQMDEP.js} +1 -1
- package/chunks/{chunk-Z2FTZM4Z.js → chunk-KX6UK4VJ.js} +19929 -22391
- package/chunks/{chunk-JYS55H6Z.js → chunk-MAQQGNQ5.js} +7 -66
- package/chunks/{chunk-7FNV372W.js → chunk-MJ6S23WZ.js} +4 -4
- package/chunks/{chunk-D7WXIW7H.js → chunk-NBMIC7DR.js} +4 -4
- package/chunks/{chunk-HGGEN2SC.js → chunk-NDMQLV4Y.js} +4 -4
- package/chunks/{chunk-FFFM6NJV.js → chunk-NEEB7UEN.js} +2 -1
- package/chunks/{chunk-WKGGZF7Z.js → chunk-NGFEPAE6.js} +6 -8
- package/chunks/{chunk-RVLZCXEE.js → chunk-NIJEXGV6.js} +10 -79
- package/chunks/{chunk-LMY4HCMA.js → chunk-O3OCNYY5.js} +2 -2
- package/chunks/{chunk-RIEABAJC.js → chunk-O3Z73NBP.js} +7 -7
- package/chunks/{chunk-VBZBVAQ3.js → chunk-OEO2ERWK.js} +33 -54
- package/chunks/{chunk-KQQ757OQ.js → chunk-OLMETXLX.js} +2 -2
- package/chunks/{chunk-LIZRAKPB.js → chunk-OOCI5VVU.js} +1 -1
- package/chunks/{chunk-GPSKDNEE.js → chunk-OONJNQ42.js} +3 -3
- package/chunks/{chunk-YM3SZTH4.js → chunk-OP4MOGXF.js} +1 -8
- package/chunks/{chunk-FCPNARPD.js → chunk-OWCALFEG.js} +1 -1
- package/chunks/{chunk-MPZ34JE7.js → chunk-OYZWQNWG.js} +2 -2
- package/chunks/{chunk-QBUDF33N.js → chunk-PBATSWUQ.js} +1 -1
- package/chunks/{chunk-6MNDXSG6.js → chunk-PBWEWI4N.js} +69 -76
- package/chunks/{chunk-OCCDRJIS.js → chunk-PF4CHQOJ.js} +6 -6
- package/chunks/{chunk-BH32VITB.js → chunk-PGEPSDJI.js} +8 -13
- package/chunks/{chunk-4LVZNIDO.js → chunk-QKYTTBYW.js} +1 -1
- package/chunks/{chunk-VYPFXUCB.js → chunk-R3VWUU2E.js} +1 -1
- package/chunks/{chunk-RV4C2ZFG.js → chunk-RFIAR4YL.js} +1 -1
- package/chunks/{chunk-P4B4SXDS.js → chunk-S2PD3EZD.js} +1 -1
- package/chunks/{chunk-H6T65C7O.js → chunk-S2W2LVDU.js} +3 -3
- package/chunks/{chunk-VJ4P64ID.js → chunk-S2XVRHDN.js} +1 -1
- package/chunks/chunk-SEKHYHMS.js +45 -0
- package/chunks/{chunk-JNEA3NW7.js → chunk-SJMV7ZBK.js} +8 -8
- package/chunks/{chunk-THJNPLI4.js → chunk-TB6UDU4T.js} +16 -16
- package/chunks/{chunk-R3D7SK6L.js → chunk-TIH2ZTOC.js} +2 -2
- package/chunks/{chunk-3FML67YK.js → chunk-TKLLK6XQ.js} +11 -11
- package/chunks/{chunk-SMVDDPEJ.js → chunk-TMQ6XQCX.js} +53 -170
- package/chunks/{chunk-QNLNLENL.js → chunk-UEY4AYUL.js} +2 -2
- package/chunks/{chunk-BLTELXOK.js → chunk-VDWBQ5AW.js} +1 -1
- package/chunks/{chunk-WGBLCAVW.js → chunk-VEXFOTEO.js} +3 -3
- package/chunks/{chunk-4RAFVWW2.js → chunk-VZQUV7VK.js} +1 -1
- package/chunks/chunk-W7FJ3N32.js +49 -0
- package/chunks/{chunk-UGYMA4EI.js → chunk-W7H223ZZ.js} +1 -1
- package/chunks/{chunk-UH3WSE5L.js → chunk-X6YQWCIJ.js} +1 -13
- package/chunks/{chunk-H4AR2JQF.js → chunk-XVVH63JG.js} +3 -3
- package/chunks/{chunk-QKTHJXCS.js → chunk-Y2ENGUD6.js} +1 -1
- package/chunks/{chunk-QD6BRERJ.js → chunk-YWEW33JY.js} +7 -7
- package/chunks/{chunk-57FIIFJN.js → chunk-ZEOZL37W.js} +1 -1
- package/chunks/chunk-ZFKNWQGQ.js +74639 -0
- package/chunks/{computer-use-XPLRRVJM.js → computer-use-NIWQNUZF.js} +35 -42
- package/chunks/{config-utils-WYUQ7II4.js → config-utils-AHQ6YZ66.js} +3 -3
- package/chunks/contextCommand-L2COEUHS.js +66 -0
- package/chunks/{create-sub-session-5YJR5PAM.js → create-sub-session-MGNX52P3.js} +30 -37
- package/chunks/{create-sub-session-AZ77LBL3.js → create-sub-session-P26FE5GG.js} +3 -3
- package/chunks/{cron-create-KTWJM7QT.js → cron-create-JWFHBDRQ.js} +5 -5
- package/chunks/{cron-delete-2P3I5ULL.js → cron-delete-GDX4E26G.js} +5 -5
- package/chunks/{cron-list-PXDPGEDQ.js → cron-list-USMAIWPT.js} +5 -5
- package/chunks/{daemon-KLPTQIE4.js → daemon-RG2MAI6T.js} +81 -138
- package/chunks/daemon-status-provider-NL4IAG7B.js +74 -0
- package/chunks/{de-4IBXM7CN.js → de-I7ZIYXZC.js} +1 -5
- package/chunks/{dist-HMU6CYS4.js → dist-2BHAYBKP.js} +2 -2
- package/chunks/{dist-PJLG2XYX.js → dist-2MIU4UUH.js} +1 -1
- package/chunks/{dist-UIFWIFRO.js → dist-53PZYC5B.js} +2 -2
- package/chunks/{dist-OAV7LJGJ.js → dist-AU7NQQRP.js} +1 -1
- package/chunks/{dist-OMW6WDEO.js → dist-FUTEXY6A.js} +1 -1
- package/chunks/{dist-XRYV6TJP.js → dist-WGTQO7F2.js} +25 -65
- package/chunks/{earlyInputCapture-XMECIN6Y.js → earlyInputCapture-L6I2A22T.js} +31 -38
- package/chunks/{edit-MMPLBVZU.js → edit-3QV3JZJL.js} +37 -42
- package/chunks/{en-USMCCJAJ.js → en-XE34GKAA.js} +1 -5
- package/chunks/{enter-worktree-BD7MCCG7.js → enter-worktree-4GMMF7EG.js} +35 -42
- package/chunks/{enterPlanMode-BQNJC23R.js → enterPlanMode-L5UWBAUC.js} +36 -48
- package/chunks/{environment-F3KL5Z5S.js → environment-3OV7UQOT.js} +32 -39
- package/chunks/{errors-VJ544HIS.js → errors-LEOF5QG4.js} +32 -39
- package/chunks/{exit-worktree-RDIQXZMI.js → exit-worktree-DDP57JLV.js} +35 -42
- package/chunks/{exitPlanMode-UNCZQPTX.js → exitPlanMode-CJBLGPIP.js} +35 -42
- package/chunks/{fast-path-H7N32H7D.js → fast-path-M6RP2ING.js} +3 -4
- package/chunks/{fast-path-settings-XB3CPUJT.js → fast-path-settings-DAOVFADC.js} +2 -2
- package/chunks/{fr-WVHEBDDB.js → fr-X7KDVZIY.js} +1 -5
- package/chunks/{gemini-G4VKT5DQ.js → gemini-H4PHBJTL.js} +89 -97
- package/chunks/{geminiContentGenerator-MDAL2B4C.js → geminiContentGenerator-VURJYPWP.js} +5 -5
- package/chunks/{getMachineId-bsd-QFVLPUPT.js → getMachineId-bsd-EXV7SWPA.js} +1 -1
- package/chunks/{getMachineId-darwin-DGMQQE2E.js → getMachineId-darwin-IUOMFXU3.js} +1 -1
- package/chunks/{getMachineId-linux-R4Z6CSWC.js → getMachineId-linux-K7XJYFHL.js} +1 -1
- package/chunks/{getMachineId-unsupported-Z3SBVBUV.js → getMachineId-unsupported-EA5FDRJ6.js} +1 -1
- package/chunks/{getMachineId-win-SCK5UFDT.js → getMachineId-win-KBA6RAI5.js} +1 -1
- package/chunks/{glob-JBT6FGZL.js → glob-2KUSRAVQ.js} +35 -42
- package/chunks/{grep-5NUIQ63X.js → grep-B5RXVESV.js} +35 -42
- package/chunks/handleAutoUpdate-QQVIWXKT.js +67 -0
- package/chunks/{i18n-IPHO7BGL.js → i18n-N6OBDORT.js} +31 -38
- package/chunks/initializer-6WCFNDLL.js +72 -0
- package/chunks/installationInfo-6J3WPXNS.js +64 -0
- package/chunks/{ja-KY4ROZTE.js → ja-2ICT3KXF.js} +1 -5
- package/chunks/{keychain-token-storage-6ACJDYIB.js → keychain-token-storage-DWRJMNH3.js} +3 -3
- package/chunks/list-HOWQSWP6.js +75 -0
- package/chunks/loadedSettingsAdapter-AO4YBRXZ.js +69 -0
- package/chunks/{loop-wakeup-RNMRVA66.js → loop-wakeup-5GLTUBHA.js} +6 -6
- package/chunks/{ls-J2ZI5XYK.js → ls-FHBY3Y7I.js} +5 -5
- package/chunks/{lsp-UMS3NUB5.js → lsp-B6VMEW6Y.js} +3 -3
- package/chunks/mcp-QH7QNXOH.js +69 -0
- package/chunks/{monitor-SIX5LMEK.js → monitor-GLJZDNPS.js} +35 -42
- package/chunks/nonInteractiveCli-TI7EMPXD.js +126 -0
- package/chunks/{notebook-edit-CWVOTW3I.js → notebook-edit-AVCIWS4F.js} +38 -43
- package/chunks/{openaiContentGenerator-FELHHJAN.js → openaiContentGenerator-B7W24G3D.js} +17 -22
- package/chunks/{pidfile-2ZQGHGPJ.js → pidfile-UEHAT6DH.js} +31 -38
- package/chunks/{processUtils-M3RKQCI4.js → processUtils-XZPY2PBB.js} +2 -2
- package/chunks/{pt-OK455PLH.js → pt-JJ4XPIBP.js} +1 -5
- package/chunks/{qwenContentGenerator-RBFIZMBC.js → qwenContentGenerator-6GUTWJIC.js} +35 -44
- package/chunks/{qwenOAuth2-S2BUDQM3.js → qwenOAuth2-GASEEWGU.js} +15 -18
- package/chunks/{read-file-WQCCV6HY.js → read-file-SQJONF6A.js} +11 -13
- package/chunks/{read-mcp-resource-F6HYMDUY.js → read-mcp-resource-AKCL7I43.js} +3 -3
- package/chunks/{record-artifact-7GCFLDD7.js → record-artifact-PEUB7727.js} +3 -3
- package/chunks/{resumeHistoryUtils-NDYMU2WO.js → resumeHistoryUtils-PFQ2A23X.js} +36 -43
- package/chunks/ripGrep-QCK22GDU.js +59 -0
- package/chunks/{ru-7SPDGMGD.js → ru-STR4KTW7.js} +1 -5
- package/chunks/{run-qwen-serve-FY5MMHPN.js → run-qwen-serve-OZGR3FQA.js} +82 -104
- package/chunks/{runtime-LONMMWKO.js → runtime-SNVAP6EH.js} +40 -49
- package/chunks/{scheduler-KYNL2MHI.js → scheduler-Z7QLMUWA.js} +30 -37
- package/chunks/{send-message-PYIJ2PZL.js → send-message-3RHE7HSM.js} +4 -6
- package/chunks/{serve-VNORFL4H.js → serve-BT7KS6SC.js} +36 -43
- package/chunks/{server-X2KCJKA3.js → server-SO64U3X5.js} +284 -988
- package/chunks/{session-CSYW4ELX.js → session-2KL2WQAH.js} +173 -92
- package/chunks/{settings-QZJ4XWS3.js → settings-KITVOUSV.js} +39 -46
- package/chunks/{shell-ELMKOZKP.js → shell-BITUVH2R.js} +30 -37
- package/chunks/{skill-IBUGJX5S.js → skill-SOQHY455.js} +20 -24
- package/chunks/{spawnChannel-SWCGOB2N.js → spawnChannel-2BU3AULL.js} +32 -39
- package/chunks/{src-FOUKVFPZ.js → src-43LM7JLB.js} +209 -279
- package/chunks/{standalone-update-5U5IRIN5.js → standalone-update-YG5JUYCM.js} +32 -39
- package/chunks/{startInteractiveUI-B3KIQ363.js → startInteractiveUI-3RGTGEX5.js} +895 -1092
- package/chunks/{syntheticOutput-H7RTI5KL.js → syntheticOutput-FG5PQKIR.js} +4 -4
- package/chunks/{task-create-7474AJJD.js → task-create-HX32YXO7.js} +8 -10
- package/chunks/{task-list-633HGOIB.js → task-list-QWSY4ZIU.js} +6 -6
- package/chunks/{task-stop-MNUGHPIA.js → task-stop-GWC6UWAL.js} +3 -3
- package/chunks/{task-update-66GQB5LI.js → task-update-NCTAB73Q.js} +8 -10
- package/chunks/{team-create-AT3OPBS4.js → team-create-FXN3PEBP.js} +35 -42
- package/chunks/{team-delete-BB3CG3QF.js → team-delete-KK37HTOG.js} +6 -6
- package/chunks/{team-plan-approval-6AYAQ3KG.js → team-plan-approval-GEIZ356Q.js} +35 -42
- package/chunks/theme-manager-IAETOI25.js +63 -0
- package/chunks/{todoWrite-KRAUN54W.js → todoWrite-ERCAMLFS.js} +5 -5
- package/chunks/{tool-search-2ZFYIVVW.js → tool-search-XKK7DNOK.js} +17 -21
- package/chunks/total-session-admission-BJLDHKJN.js +69 -0
- package/chunks/{trustedFolders-VHGVDSZU.js → trustedFolders-5XCVNEUU.js} +31 -38
- package/chunks/{update-relaunch-RM5E3W4P.js → update-relaunch-FMVZK6XF.js} +17 -17
- package/chunks/updateCheck-YZZB7YBU.js +70 -0
- package/chunks/{useAutoAcceptIndicator-AAPKHC46.js → useAutoAcceptIndicator-ZSQX4I2H.js} +40 -47
- package/chunks/{validateNonInterActiveAuth-7WGVSFOZ.js → validateNonInterActiveAuth-PRVEB6GG.js} +72 -79
- package/chunks/{version-M7BDNXTT.js → version-AZMG6KWL.js} +1 -1
- package/chunks/{web-fetch-UZSKXY3L.js → web-fetch-EPGJ5OQQ.js} +41 -100
- package/chunks/{workflow-OCSRM2L2.js → workflow-UTNVPW22.js} +39 -47
- package/chunks/workspace-providers-status-EADV364W.js +72 -0
- package/chunks/{workspace-registration-store-QDOLWEMY.js → workspace-registration-store-F3ZX3YHT.js} +2 -8
- package/chunks/workspace-registry-W6VMFYZU.js +73 -0
- package/chunks/workspace-service-F3KIN2UN.js +84 -0
- package/chunks/workspace-skills-status-YVICUR5Y.js +71 -0
- package/chunks/write-file-CVGF2OKV.js +596 -0
- package/chunks/{zh-WY5DWYZD.js → zh-6ANG2HTL.js} +1 -5
- package/chunks/{zh-TW-BM47YBFH.js → zh-TW-4RR3YHNN.js} +1 -5
- package/cli-entry.js +12 -164
- package/cli.js +11 -18
- package/locales/ca.js +203 -772
- package/locales/de.js +2 -8
- package/locales/en.js +2 -8
- package/locales/fr.js +2 -8
- package/locales/ja.js +2 -8
- package/locales/pt.js +2 -8
- package/locales/ru.js +2 -8
- package/locales/zh-TW.js +2 -8
- package/locales/zh.js +2 -8
- package/package.json +3 -3
- package/web-shell/assets/{arc-ByltRugA.js → arc-Buk1besA.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-CCRTto5d.js → architectureDiagram-3BPJPVTR-B1aUKYDC.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-Jfy36u1L.js → blockDiagram-GPEHLZMM-CRTdg3Zx.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-4d5FfEZ0.js → c4Diagram-AAUBKEIU-DFdRMp5g.js} +1 -1
- package/web-shell/assets/channel-04R0vLbG.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-BPwxCEro.js → chunk-2J33WTMH-4rYQdkEI.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-jY7ZmJWY.js → chunk-4BX2VUAB-Coi-pQJy.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-C98HgCsS.js → chunk-55IACEB6-BtBjz02t.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-cDu-ge-q.js → chunk-727SXJPM-CGYOWorl.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BKdJwxXK.js → chunk-AQP2D5EJ-CH5AKhqx.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-DnuxqwMu.js → chunk-FMBD7UC4-Cd50-w85.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-C4fZNPv0.js → chunk-ND2GUHAM-C2wF3KCK.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-Cf4XWOmz.js → chunk-QZHKN3VN-pCeRTaWi.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-Bw9SOwAV.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Bw9SOwAV.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-C82mFiqj.js → cose-bilkent-S5V4N54A-B-_fAB6D.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-Df8KACER.js → dagre-BM42HDAG-ChSPNHpL.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-EzNs7s_2.js → diagram-2AECGRRQ-BX7cFOF3.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BRLNvreg.js → diagram-5GNKFQAL-BQUTW92n.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-2HLYHRjC.js → diagram-KO2AKTUF-BkYPh3e4.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DeH0NzSp.js → diagram-LMA3HP47-Cl6jsNyx.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-k5Gn47-G.js → diagram-OG6HWLK6-DRWoHz8n.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-gPHFo79f.js → erDiagram-TEJ5UH35-CGvFcZco.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-DYBOiTRW.js → flowDiagram-I6XJVG4X-vms6oVdv.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-cxjAuic9.js → ganttDiagram-6RSMTGT7-ukT_sfmi.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-3nPqpmCP.js → gitGraphDiagram-PVQCEYII-Bn2ZE2Ut.js} +1 -1
- package/web-shell/assets/index-DgkKrjw3.js +1187 -0
- package/web-shell/assets/index-Rv6mOAN9.css +5 -0
- package/web-shell/assets/{index-Cl8d-1bK.js → index-wFXp7W68.js} +1 -1
- package/web-shell/assets/{infoDiagram-5YYISTIA-Dph21pR5.js → infoDiagram-5YYISTIA-DHJdSi7x.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Cjg1hSaG.js → ishikawaDiagram-YF4QCWOH-DOvd2Wph.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CR-IzvnU.js → journeyDiagram-JHISSGLW-CH_urMCT.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-BYmuybuC.js → kanban-definition-UN3LZRKU-FKiBdgbH.js} +1 -1
- package/web-shell/assets/{linear-CngEEoy8.js → linear-0ZVQFVKf.js} +1 -1
- package/web-shell/assets/{mermaid.core-G6fbZRPf.js → mermaid.core-DJ05ZZIK.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BtnqnUwJ.js → mindmap-definition-RKZ34NQL-BPuUhkUm.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-XTq6UHIA.js → pieDiagram-4H26LBE5-yLFKcXyG.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-D1J5PrsS.js → quadrantDiagram-W4KKPZXB-irWqc1pE.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CLcBUy3t.js → requirementDiagram-4Y6WPE33-B_4uMoIV.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-iwKV02_6.js → sankeyDiagram-5OEKKPKP-ciA4GPwk.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-7NFYQcEX.js → sequenceDiagram-3UESZ5HK-CRdZvy0U.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-Bvm4Wih6.js → stateDiagram-AJRCARHV-DaYIkCCn.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DWBoO4UY.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-B4FZFE9O.js → timeline-definition-PNZ67QCA-oBUKv6iH.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-CvMBpmtL.js → vennDiagram-CIIHVFJN-CGW9Sdmb.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-E3ag2327.js → wardley-L42UT6IY-CvwKJOCm.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BEXWlgxC.js → wardleyDiagram-YWT4CUSO-Ipc260sN.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-CICK05gI.js → xychartDiagram-2RQKCTM6-D6-CM7pK.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/agent-headless-QTKDKVED.js +0 -68
- package/chunks/chunk-2RFKHEXL.js +0 -74
- package/chunks/chunk-43T5WDQ7.js +0 -127
- package/chunks/chunk-6PVPNMXU.js +0 -29
- package/chunks/chunk-7362QS5B.js +0 -2256
- package/chunks/chunk-D7ZI5C7O.js +0 -20600
- package/chunks/chunk-GLNBDYUX.js +0 -38
- package/chunks/chunk-GMLTZG4O.js +0 -391
- package/chunks/chunk-HTR4WV6U.js +0 -327
- package/chunks/chunk-KWK7UE6L.js +0 -6194
- package/chunks/chunk-M7WBGLYP.js +0 -151
- package/chunks/chunk-MMT6IQCT.js +0 -121
- package/chunks/chunk-NABLFI57.js +0 -82
- package/chunks/chunk-OQ5SYCPE.js +0 -10017
- package/chunks/chunk-PI6ECBP3.js +0 -1780
- package/chunks/chunk-U7ZFW55U.js +0 -2098
- package/chunks/chunk-WHGVTP7Q.js +0 -1049
- package/chunks/chunk-XHATNRQA.js +0 -1500
- package/chunks/contextCommand-2W675HYY.js +0 -73
- package/chunks/daemon-status-provider-QZCVTG6N.js +0 -81
- package/chunks/handleAutoUpdate-EF3LY7MI.js +0 -74
- package/chunks/initializer-HCOCXGBI.js +0 -79
- package/chunks/installationInfo-UEBNCLFW.js +0 -73
- package/chunks/list-4SKXTNSD.js +0 -82
- package/chunks/loadedSettingsAdapter-EQWK5CG6.js +0 -76
- package/chunks/managed-npm-update-ZUZU4UFM.js +0 -333
- package/chunks/mcp-4Z3EC4SI.js +0 -76
- package/chunks/nonInteractiveCli-FTUKIU5R.js +0 -133
- package/chunks/ripGrep-K2E3F5ED.js +0 -66
- package/chunks/sdk-exporters-grpc-ETLH47EP.js +0 -23214
- package/chunks/sdk-exporters-http-T3POX73F.js +0 -563
- package/chunks/sdk-impl-NSLPDH6I.js +0 -9193
- package/chunks/theme-manager-733OBN7I.js +0 -70
- package/chunks/total-session-admission-TZ4NVA6B.js +0 -76
- package/chunks/updateCheck-DGY3LFKB.js +0 -89
- package/chunks/web-search-EG64C5VB.js +0 -731
- package/chunks/workspace-providers-status-HZLYOFRA.js +0 -79
- package/chunks/workspace-registry-EVSTTG3G.js +0 -80
- package/chunks/workspace-service-DNQMT6FN.js +0 -91
- package/chunks/workspace-skills-status-ICGPGD6F.js +0 -78
- package/chunks/write-file-K6R5F3IZ.js +0 -66
- package/web-shell/assets/channel-4N2UIFcG.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-Q4dYOtsh.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Q4dYOtsh.js +0 -1
- package/web-shell/assets/index-B7jzUZ_s.css +0 -5
- package/web-shell/assets/index-gE8OWwj_.js +0 -1197
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-xXU_zO2Z.js +0 -1
- package/chunks/{chunk-QZJY47IE.js → chunk-PEJWA3QQ.js} +5 -5
|
@@ -748,7 +748,7 @@ For sandbox image selection, precedence is:
|
|
|
748
748
|
| `--extensions` | `-e` | Specifies a list of extensions to use for the session. | Extension names | If not provided, all available extensions are used. Use the special term `qwen -e none` to disable all extensions. Example: `qwen -e my-extension -e my-other-extension` |
|
|
749
749
|
| `--list-extensions` | `-l` | Lists all available extensions and exits. | | |
|
|
750
750
|
| `--proxy` | | Sets the proxy for the CLI. | Proxy URL | Example: `--proxy http://localhost:7890`. |
|
|
751
|
-
| `--include-directories` | | Includes additional directories in the workspace for multi-directory support. | Directory paths | Can be specified multiple times or as comma-separated values. Example: `--include-directories /path/to/project1,/path/to/project2` or `--include-directories /path/to/project1 --include-directories /path/to/project2`
|
|
751
|
+
| `--include-directories` | | Includes additional directories in the workspace for multi-directory support. | Directory paths | Can be specified multiple times or as comma-separated values. 5 directories can be added at maximum. Example: `--include-directories /path/to/project1,/path/to/project2` or `--include-directories /path/to/project1 --include-directories /path/to/project2` |
|
|
752
752
|
| `--screen-reader` | | Enables screen reader mode, which adjusts the TUI for better compatibility with screen readers. | | |
|
|
753
753
|
| `--version` | | Displays the version of the CLI. | | |
|
|
754
754
|
| `--openai-logging` | | Enables logging of OpenAI API calls for debugging and analysis. | | This flag overrides the `enableOpenAILogging` setting in `settings.json`. |
|
|
@@ -175,8 +175,8 @@ This is useful for production or high-security environments where you
|
|
|
175
175
|
want defense-in-depth: even seemingly harmless commands are reviewed by
|
|
176
176
|
the classifier before execution. The trade-off is added latency (~300ms
|
|
177
177
|
per read-only shell call) and reliance on classifier availability — if
|
|
178
|
-
the classifier API is unreachable, read-only shell commands will also
|
|
179
|
-
|
|
178
|
+
the classifier API is unreachable, read-only shell commands will also be
|
|
179
|
+
blocked (fail-closed).
|
|
180
180
|
|
|
181
181
|
> [!note]
|
|
182
182
|
>
|
|
@@ -187,13 +187,18 @@ manual approval.
|
|
|
187
187
|
|
|
188
188
|
## Reading the decision
|
|
189
189
|
|
|
190
|
-
When the classifier blocks an action, the tool call fails with
|
|
190
|
+
When the classifier blocks an action, the tool call fails with one of
|
|
191
|
+
the following error texts:
|
|
191
192
|
|
|
192
193
|
- **`Blocked by auto mode policy: <reason>`** —
|
|
193
194
|
the classifier judged the action unsafe. The reason comes from Stage
|
|
194
195
|
2 of the classifier.
|
|
196
|
+
- **`Auto mode classifier unavailable; action blocked for safety`** —
|
|
197
|
+
the classifier API was unreachable, timed out, or returned an
|
|
198
|
+
un-parseable response. This is fail-closed behavior: when in doubt,
|
|
199
|
+
block.
|
|
195
200
|
|
|
196
|
-
|
|
201
|
+
Both messages are followed by a trailing guidance line telling the agent
|
|
197
202
|
that the **denied action specifically** must not be completed through
|
|
198
203
|
another tool, shell indirection, generated script, alias, symlink,
|
|
199
204
|
config change, hook, command file, MCP configuration, encoded payload,
|
|
@@ -214,24 +219,16 @@ want non-English reasons, add a hint like
|
|
|
214
219
|
|
|
215
220
|
Auto Mode protects you from getting stuck:
|
|
216
221
|
|
|
217
|
-
- If the classifier API is unreachable, times out, exceeds its context window,
|
|
218
|
-
or returns an invalid response, the current action immediately falls back to
|
|
219
|
-
manual approval. The confirmation recommends Default Mode and offers
|
|
220
|
-
**Switch to Default Mode and allow once** alongside Allow once and Reject.
|
|
221
|
-
Switching affects only the current runtime session; it does not change your
|
|
222
|
-
saved settings.
|
|
223
|
-
|
|
224
222
|
- After **3 consecutive policy blocks** the next tool call falls back to
|
|
225
223
|
the standard manual-approval prompt. This catches the case where the
|
|
226
224
|
agent keeps trying minor variants of a forbidden command.
|
|
227
|
-
- After **2 consecutive unavailable** results (classifier API failures)
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
you approve the fallback call or switch modes.
|
|
225
|
+
- After **2 consecutive unavailable** results (classifier API failures)
|
|
226
|
+
the next tool call also falls back. This avoids waiting on a broken
|
|
227
|
+
classifier.
|
|
228
|
+
|
|
229
|
+
The session itself stays in Auto Mode — only the single fallback call
|
|
230
|
+
goes through manual approval. The counters reset when you approve the
|
|
231
|
+
fallback call or switch modes.
|
|
235
232
|
|
|
236
233
|
If you find yourself constantly hitting fallback, the most likely causes
|
|
237
234
|
are an outage on the classifier API or hints that need tuning. Switch to
|
|
@@ -49,7 +49,6 @@ Commands for adjusting interface appearance and work environment.
|
|
|
49
49
|
| → `detail` | Show per-item context usage breakdown | `/context detail` |
|
|
50
50
|
| `/history` | Control history display preferences and visibility | `/history collapse-on-resume`, `/history expand-on-resume`, `/history expand-now` |
|
|
51
51
|
| `/diff` | Open an interactive diff viewer showing uncommitted changes and per-turn diffs. Use ←/→ to switch between current git diff and individual conversation turns, ↑/↓ to browse files | `/diff` |
|
|
52
|
-
| `/log` | Open a commit history viewer for the workspace (Web Shell only) | `/log` |
|
|
53
52
|
| `/theme` | Change Qwen Code visual theme | `/theme` |
|
|
54
53
|
| `/vim` | Turn input area Vim editing mode on/off | `/vim` |
|
|
55
54
|
| `/voice` | Toggle voice dictation input | `/voice`, `/voice hold`, `/voice tap`, `/voice off`, `/voice status` |
|
|
@@ -311,59 +310,6 @@ In headless (`--prompt`) or non-interactive contexts, `/diff` prints a plain-tex
|
|
|
311
310
|
+3 -2 README.md
|
|
312
311
|
```
|
|
313
312
|
|
|
314
|
-
**Web Shell:** In the Web Shell UI (`qwen serve`), `/diff` opens a graphical diff dialog. A tab bar at the top lets you switch between the **Changes** view and the **History** view (`/log`).
|
|
315
|
-
|
|
316
|
-
#### History Viewer (`/log`) — Web Shell only
|
|
317
|
-
|
|
318
|
-
The `/log` command opens a commit history browser for the current workspace. It is available only in the Web Shell UI; the CLI/TUI does not have this command.
|
|
319
|
-
|
|
320
|
-
**How it works:**
|
|
321
|
-
|
|
322
|
-
`/log` opens a dialog listing commits in reverse chronological order (newest first). Each row shows:
|
|
323
|
-
|
|
324
|
-
- Short SHA (monospace, with a copy button for the full SHA)
|
|
325
|
-
- Commit subject (single line)
|
|
326
|
-
- Author name and relative time (e.g. "2h ago")
|
|
327
|
-
- Branch/tag ref labels, when present
|
|
328
|
-
- A merge icon (⎇) for merge commits
|
|
329
|
-
|
|
330
|
-
Click a commit row to expand its details on demand:
|
|
331
|
-
|
|
332
|
-
- Full commit message body
|
|
333
|
-
- File change statistics (files changed, lines added/removed, per-file breakdown)
|
|
334
|
-
|
|
335
|
-
Use **Load more** at the bottom to fetch the next page of commits (50 per page).
|
|
336
|
-
|
|
337
|
-
**Example:**
|
|
338
|
-
|
|
339
|
-
```
|
|
340
|
-
┌─ History ──────────────────────────── 50 commits ─ ✕ ┐
|
|
341
|
-
│ │
|
|
342
|
-
│ a1b2c3d feat(cli): add --json flag 2h ago │
|
|
343
|
-
│ wenshao │
|
|
344
|
-
│ │
|
|
345
|
-
│ e4f5g6h fix(core): handle null config 5h ago │
|
|
346
|
-
│ dev · main v1.2.0 │
|
|
347
|
-
│ │
|
|
348
|
-
│ ▼ 789abcd refactor: simplify parser 1d ago │
|
|
349
|
-
│ ┌─────────────────────────────────────────────┐ │
|
|
350
|
-
│ │ Broke the monolithic parse() into smaller │ │
|
|
351
|
-
│ │ functions for readability. │ │
|
|
352
|
-
│ │ │ │
|
|
353
|
-
│ │ 3 files · +45 −12 │ │
|
|
354
|
-
│ │ +30 −8 src/parser.ts │ │
|
|
355
|
-
│ │ +10 −2 src/utils.ts │ │
|
|
356
|
-
│ │ +5 −2 test/parser.test.ts │ │
|
|
357
|
-
│ └─────────────────────────────────────────────┘ │
|
|
358
|
-
│ │
|
|
359
|
-
│ [ Load more ] │
|
|
360
|
-
└───────────────────────────────────────────────────────┘
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
> [!note]
|
|
364
|
-
>
|
|
365
|
-
> `/log` requires a git repository workspace. If the workspace is not a git repository or has no commits, the dialog shows a placeholder message.
|
|
366
|
-
|
|
367
313
|
### 1.9 Information, Settings, and Help
|
|
368
314
|
|
|
369
315
|
Commands for obtaining information and performing system settings.
|
|
@@ -16,23 +16,14 @@ Subagents are independent AI assistants that:
|
|
|
16
16
|
|
|
17
17
|
In addition to named subagents, Qwen Code supports **forking** — selected explicitly with `subagent_type: "fork"` (available in interactive sessions). A fork inherits the parent's full conversation context and runs detached in the background. Omitting `subagent_type` does **not** fork; it launches the general-purpose subagent. Top-level named subagents run in the background by default and deliver their results through completion notifications. Set `run_in_background: false` when the current turn must wait for the result inline.
|
|
18
18
|
|
|
19
|
-
## Fork Context with `fork_turns`
|
|
20
|
-
|
|
21
|
-
Only `subagent_type: "fork"` accepts `fork_turns`:
|
|
22
|
-
|
|
23
|
-
- Omitting it or using `all` inherits the full parent conversation.
|
|
24
|
-
- A positive integer string such as `"3"` inherits the most recent three real user turns.
|
|
25
|
-
|
|
26
|
-
Tool responses and pure system reminders do not count as user turns. Regular named subagents and agent-team teammates do not accept `fork_turns`; they keep their separate conversation context.
|
|
27
|
-
|
|
28
19
|
### How Fork Differs from Named Subagents
|
|
29
20
|
|
|
30
|
-
| | Named Subagent | Fork Subagent
|
|
31
|
-
| ------------- | -------------------------------------------------------------- |
|
|
32
|
-
| Context | Starts fresh
|
|
33
|
-
| System prompt | Uses its own configured prompt | Uses parent's exact system prompt (for cache sharing)
|
|
34
|
-
| Execution | Background by default; supports an explicit foreground opt-out | Always detached; parent continues immediately
|
|
35
|
-
| Use case | Specialized tasks (testing, docs) | Parallel tasks that need the current context
|
|
21
|
+
| | Named Subagent | Fork Subagent |
|
|
22
|
+
| ------------- | -------------------------------------------------------------- | ----------------------------------------------------- |
|
|
23
|
+
| Context | Starts fresh, no parent history | Inherits parent's full conversation history |
|
|
24
|
+
| System prompt | Uses its own configured prompt | Uses parent's exact system prompt (for cache sharing) |
|
|
25
|
+
| Execution | Background by default; supports an explicit foreground opt-out | Always detached; parent continues immediately |
|
|
26
|
+
| Use case | Specialized tasks (testing, docs) | Parallel tasks that need the current context |
|
|
36
27
|
|
|
37
28
|
### When Fork is Used
|
|
38
29
|
|
|
@@ -59,7 +50,7 @@ Fork children cannot create further forks. This is enforced at runtime — if a
|
|
|
59
50
|
|
|
60
51
|
- **Task Specialization**: Create agents optimized for specific workflows (testing, documentation, refactoring, etc.)
|
|
61
52
|
- **Context Isolation**: Keep specialized work separate from your main conversation
|
|
62
|
-
- **Context Inheritance**: Fork subagents inherit the full conversation
|
|
53
|
+
- **Context Inheritance**: Fork subagents inherit the full conversation for context-heavy parallel tasks
|
|
63
54
|
- **Prompt Cache Sharing**: Fork subagents share the parent's cache prefix, reducing token costs
|
|
64
55
|
- **Reusability**: Save and reuse agent configurations across projects and sessions
|
|
65
56
|
- **Controlled Access**: Limit which tools each agent can use for security and focus
|
|
@@ -96,7 +96,7 @@ This workflow acts as a central dispatcher for Qwen Code CLI, routing requests t
|
|
|
96
96
|
|
|
97
97
|
### Issue Triage
|
|
98
98
|
|
|
99
|
-
This action can be used to triage GitHub Issues automatically or on
|
|
99
|
+
This action can be used to triage GitHub Issues automatically or on a schedule. For a working issue triage setup, see the [automated issue triage workflow](https://github.com/QwenLM/qwen-code/blob/main/.github/workflows/qwen-automated-issue-triage.yml).
|
|
100
100
|
|
|
101
101
|
### Pull Request Review
|
|
102
102
|
|
|
@@ -112,32 +112,32 @@ This type of action can be used to invoke a general-purpose, conversational Qwen
|
|
|
112
112
|
|
|
113
113
|
<!-- BEGIN_AUTOGEN_INPUTS -->
|
|
114
114
|
|
|
115
|
-
- <a name="__input_qwen_api_key"></a><a href="#user-content-__input_qwen_api_key"><code>
|
|
115
|
+
- <a name="__input_qwen_api_key"></a><a href="#user-content-__input_qwen_api_key"><code>qwen*api_key</code></a>: *(Optional)\_ The API key for the Qwen API.
|
|
116
116
|
|
|
117
|
-
- <a name="__input_qwen_cli_version"></a><a href="#user-content-__input_qwen_cli_version"><code>
|
|
117
|
+
- <a name="__input_qwen_cli_version"></a><a href="#user-content-__input_qwen_cli_version"><code>qwen*cli_version</code></a>: *(Optional, default: `latest`)\_ The version of the Qwen Code CLI to install. Can be "latest", "preview", "nightly", a specific version number, or a git branch, tag, or commit. For more information, see [Qwen Code CLI releases](https://github.com/QwenLM/qwen-code-action/blob/main/docs/releases.md).
|
|
118
118
|
|
|
119
|
-
- <a name="__input_qwen_debug"></a><a href="#user-content-__input_qwen_debug"><code>
|
|
119
|
+
- <a name="__input_qwen_debug"></a><a href="#user-content-__input_qwen_debug"><code>qwen*debug</code></a>: *(Optional)\_ Enable debug logging and output streaming.
|
|
120
120
|
|
|
121
|
-
- <a name="__input_qwen_model"></a><a href="#user-content-__input_qwen_model"><code>
|
|
121
|
+
- <a name="__input_qwen_model"></a><a href="#user-content-__input_qwen_model"><code>qwen*model</code></a>: *(Optional)\_ The model to use with Qwen Code.
|
|
122
122
|
|
|
123
123
|
- <a name="__input_prompt"></a><a href="#user-content-__input_prompt"><code>prompt</code></a>: _(Optional, default: `You are a helpful assistant.`)_ A string passed to the Qwen Code CLI's [`--prompt` argument](https://github.com/QwenLM/qwen-code-action/blob/main/docs/cli/configuration.md#command-line-arguments).
|
|
124
124
|
|
|
125
125
|
- <a name="__input_settings"></a><a href="#user-content-__input_settings"><code>settings</code></a>: _(Optional)_ A JSON string written to `.qwen/settings.json` to configure the CLI's _project_ settings.
|
|
126
126
|
For more details, see the documentation on [settings files](https://github.com/QwenLM/qwen-code-action/blob/main/docs/cli/configuration.md#settings-files).
|
|
127
127
|
|
|
128
|
-
- <a name="__input_use_qwen_code_assist"></a><a href="#user-content-__input_use_qwen_code_assist"><code>
|
|
128
|
+
- <a name="__input_use_qwen_code_assist"></a><a href="#user-content-__input_use_qwen_code_assist"><code>use*qwen_code_assist</code></a>: *(Optional, default: `false`)\_ Whether to use Code Assist for Qwen Code model access instead of the default Qwen Code API key.
|
|
129
129
|
For more information, see the [Qwen Code CLI documentation](https://github.com/QwenLM/qwen-code-action/blob/main/docs/cli/authentication.md).
|
|
130
130
|
|
|
131
|
-
- <a name="__input_use_vertex_ai"></a><a href="#user-content-__input_use_vertex_ai"><code>
|
|
131
|
+
- <a name="__input_use_vertex_ai"></a><a href="#user-content-__input_use_vertex_ai"><code>use*vertex_ai</code></a>: *(Optional, default: `false`)\_ Whether to use Vertex AI for Qwen Code model access instead of the default Qwen Code API key.
|
|
132
132
|
For more information, see the [Qwen Code CLI documentation](https://github.com/QwenLM/qwen-code-action/blob/main/docs/cli/authentication.md).
|
|
133
133
|
|
|
134
134
|
- <a name="__input_extensions"></a><a href="#user-content-__input_extensions"><code>extensions</code></a>: _(Optional)_ A list of Qwen Code CLI extensions to install.
|
|
135
135
|
|
|
136
|
-
- <a name="__input_upload_artifacts"></a><a href="#user-content-__input_upload_artifacts"><code>
|
|
136
|
+
- <a name="__input_upload_artifacts"></a><a href="#user-content-__input_upload_artifacts"><code>upload*artifacts</code></a>: *(Optional, default: `false`)\_ Whether to upload artifacts to the github action.
|
|
137
137
|
|
|
138
|
-
- <a name="__input_use_pnpm"></a><a href="#user-content-__input_use_pnpm"><code>
|
|
138
|
+
- <a name="__input_use_pnpm"></a><a href="#user-content-__input_use_pnpm"><code>use*pnpm</code></a>: *(Optional, default: `false`)\_ Whether or not to use pnpm instead of npm to install qwen-code-cli
|
|
139
139
|
|
|
140
|
-
- <a name="__input_workflow_name"></a><a href="#user-content-__input_workflow_name"><code>
|
|
140
|
+
- <a name="__input_workflow_name"></a><a href="#user-content-__input_workflow_name"><code>workflow*name</code></a>: *(Optional, default: `${{ github.workflow }}`)\_ The GitHub workflow name, used for telemetry purposes.
|
|
141
141
|
|
|
142
142
|
<!-- END_AUTOGEN_INPUTS -->
|
|
143
143
|
|
|
@@ -66,7 +66,7 @@ qwen serve
|
|
|
66
66
|
|
|
67
67
|
The default bind is `127.0.0.1:4170`. Bearer auth is **off** on loopback so local development "just works". The daemon registers the current working directory as its primary workspace; use an absolute `--workspace /path/to/dir` to override it, and repeat the flag to register additional isolated runtimes.
|
|
68
68
|
|
|
69
|
-
**Open the Web Shell UI.** Browse to `http://127.0.0.1:4170/` (or start the daemon with `qwen serve --open` to launch it automatically) for the full browser terminal — chat, diffs,
|
|
69
|
+
**Open the Web Shell UI.** Browse to `http://127.0.0.1:4170/` (or start the daemon with `qwen serve --open` to launch it automatically) for the full browser terminal — chat, diffs, tool calls, and permission prompts. The UI is served at the daemon root on the same origin as the API. The rest of this guide uses raw HTTP so you can script against the API directly.
|
|
70
70
|
|
|
71
71
|
### 2. Sanity-check it
|
|
72
72
|
|
|
@@ -397,7 +397,6 @@ Notes:
|
|
|
397
397
|
| `--mcp-client-budget <n>` | — | Positive integer cap on live MCP clients. When `mcp_workspace_pool` is advertised, the cap and transports are shared per workspace runtime; when the tag is absent, the legacy per-session manager enforces it. Combine with `--mcp-budget-mode`. When unset, no accounting-driven enforcement (but `GET /workspace/mcp` still reports `clientCount`). Distinct from claude-code's `MCP_SERVER_CONNECTION_BATCH_SIZE`, which gates startup concurrency rather than total live clients. Pre-flight `caps.features.mcp_guardrails` and `caps.features.mcp_workspace_pool`. |
|
|
398
398
|
| `--mcp-budget-mode <m>` | `warn` / `off` | How `--mcp-client-budget` is enforced. `warn` (default when budget set): no refusal, snapshot's `budgets[0].status` flips to `warning` at ≥75% of budget. `enforce`: connects past the cap are refused, per-server cell shows `disabledReason: 'budget'`, deterministic by `mcpServers` declaration order. `off` (default when budget unset): pure observability. Boot rejects `enforce` without a budget. |
|
|
399
399
|
| `--http-bridge` | `true` | Stage 1 mode: production attempts to preheat one primary `qwen --acp` child for compatibility and retries on first use after failure, while each trusted secondary can start one child on demand. Sessions targeting a runtime multiplex onto its child via ACP `newSession()`; untrusted secondaries cannot start ACP. Stage 2 native in-process becomes available later. |
|
|
400
|
-
| `--initialize-timeout-ms <n>` | `10000` | ACP child request timeout, including the `initialize` handshake (ms). Must be a positive integer up to `2147483647`. Values above the JS timer ceiling (`2^31-1`) are rejected at boot because Node silently compresses them to 1 ms. Cold-container deployments that need extra headroom for child startup can raise this; the same value governs `newSession`, workspace-status polls, and other ACP ext-method deadlines. |
|
|
401
400
|
| `--allow-origin <pat>` | — | T2.4 ([#4514](https://github.com/QwenLM/qwen-code/issues/4514)). Cross-origin allowlist for browser webui clients. Repeatable. Each value is `*` (any origin — boot refuses if no bearer token is configured; `--require-auth` on loopback is recommended so `/health` and `/demo` are also bearer-gated, since both are pre-auth on loopback by default) or a canonical URL origin (`<scheme>://<host>[:<port>]`, no trailing slash / path / userinfo / query). **Subdomain wildcards (`https://*.example.com`) are intentionally unsupported** — list each subdomain explicitly, or use `*` with a configured token (and `--require-auth` for full hardening). Matched origins receive CORS response headers (`Access-Control-Allow-Origin`, `Vary: Origin`, methods, headers, max-age, and exposed `Retry-After`); unmatched origins still get a 403 with the same envelope as today's wall. `Origin: null` (sandboxed iframes, file:// docs) is always rejected, even under `*`. Pre-flight via `caps.features.allow_origin`. Loopback self-origin hits are unaffected. |
|
|
402
401
|
| `--web` / `--no-web` | `true` | Serve the built Web Shell SPA at the daemon root (`GET /`, `/assets/*`, and SPA deep-link fallback). The static shell is registered **before** the bearer-auth gate — a browser can't attach a token to a `<script>` subresource or an address-bar navigation, the shell carries no secrets, and every API route stays token-gated regardless. On non-loopback binds a one-line stderr warning notes the UI is reachable without auth. Use `--no-web` for an API-only daemon. No effect when the build omits the Web Shell assets (the daemon logs a breadcrumb and runs API-only). |
|
|
403
402
|
| `--open` | `false` | After the listener is up, open the Web Shell in your default browser at the daemon URL (with `#token=` appended as a URL fragment when a token is configured — a fragment is never sent to the server, keeping the token out of access logs and Referer headers). No-op with `--no-web`, or in headless / CI / SSH environments where no browser is available. |
|
package/bundled/review/DESIGN.md
CHANGED
|
@@ -112,7 +112,7 @@ Chunking itself is unchanged: the plan still tiles every line, tests and generat
|
|
|
112
112
|
|
|
113
113
|
Step 3B's chunk agents are defined as "one per entry in `chunks[]`", and only `fetch-pr` produced a chunk plan. A local-diff review, or a cross-repo review in lightweight mode, therefore routed into a topology it had no chunk list for: no receipts, no tiling guarantee, and the orchestrator left to improvise line ranges. Two of the four review paths were promised a mechanism the skill could not deliver.
|
|
114
114
|
|
|
115
|
-
`qwen review plan-diff <diff-file>` reads a captured diff and emits the same `chunks[]`, `files[]` and topology counts. Redirecting `git diff` or `gh pr diff` to a file bypasses
|
|
115
|
+
`qwen review plan-diff <diff-file>` reads a captured diff and emits the same `chunks[]`, `files[]` and topology counts. Redirecting `git diff` or `gh pr diff` to a file already bypasses the 30 000-char shell cap, so all four paths now share one code path. It cannot decide `heavy` — that needs a tree to read the post-change file from — so a bare diff gets chunk agents but no invariant agents.
|
|
116
116
|
|
|
117
117
|
### Why the topology gate ignores prose
|
|
118
118
|
|
|
@@ -448,7 +448,7 @@ Competitors: Copilot uses 1 call, Gemini uses 2, Claude /ultrareview uses 5-20 (
|
|
|
448
448
|
|
|
449
449
|
## Why the diff is a file, not a command
|
|
450
450
|
|
|
451
|
-
Agents used to be handed `git diff main...HEAD` and told to run it.
|
|
451
|
+
Agents used to be handed `git diff main...HEAD` and told to run it. Shell tool output passes through `truncateToolOutput` with `ShellTool.maxOutputChars = 30_000` and `keep: 'both'`, which allocates `threshold / 5` characters to the head and the remainder to the tail.
|
|
452
452
|
|
|
453
453
|
On PR #6457's 211 000-character diff that yields a 6 000-char head (`QQChannel.ts` lines 41-250) and a 24 000-char tail (`stream.test.ts` and `types.ts`, which sort last by path and together changed 9 lines). 85.8% of the diff — including 19 of the 20 Criticals eventually reported on that PR — was replaced by a `[CONTENT TRUNCATED]` marker. Every agent saw the same window, so the ten-way dimension fan-out multiplied redundancy rather than coverage, and each round of `/review` sampled a different subset of the bugs depending on which files an agent happened to `read_file` on its own initiative.
|
|
454
454
|
|
package/bundled/review/SKILL.md
CHANGED
|
@@ -147,7 +147,7 @@ Based on the parsed `target.type`:
|
|
|
147
147
|
|
|
148
148
|
### Diff capture and the review topology
|
|
149
149
|
|
|
150
|
-
**Never let a review agent obtain the diff by running `git diff` itself.** Shell
|
|
150
|
+
**Never let a review agent obtain the diff by running `git diff` itself.** Shell tool output is capped at 30 000 characters and split head-1/5 / tail-4/5, so on a large PR every agent receives a few hundred lines off the top of the first file, the tail of the last file, and a `[CONTENT TRUNCATED]` marker in place of everything between. On a 211 000-character diff that is 14% of the changeset — and it is the _same_ 14% for every diff-reading agent, so coverage does not grow with the number of agents. The diff is read from a file with `read_file` instead.
|
|
151
151
|
|
|
152
152
|
Truncation is only half the reason. The other half is the **base**. An agent handed a diff command has to choose a base, and `main..HEAD` and `main...HEAD` differ by one character and by the entire meaning of the review. Two-dot diffs against a `main` that has moved on show every commit main gained since the branch forked, **reversed** — main's fixes appear as the branch's regressions. On PR #6626 a review approved four files and then warned the author, publicly, that their branch carried "typo regressions in `ide-client.ts`" and should be rebased. The branch had done nothing: main had corrected `compatability` → `compatibility` after the fork point, and a two-dot diff showed the branch putting the typo back. The PR's real change set, `merge-base..head`, is four files and does not touch that file at all.
|
|
153
153
|
|
|
@@ -187,7 +187,7 @@ Do **not** hand-type a `git diff` here. Two reasons, and the second is why this
|
|
|
187
187
|
|
|
188
188
|
**If the plan comes back empty** (`chunks: []`), stop and take the no-diff branch. Every agent would be given nothing to read, and the review would return a clean verdict over no code at all. For a **file-path** review of a tracked, unmodified file, skip planning entirely: hand every agent the file's absolute path and tell it to read the whole file, paging until `isTruncated` is false. For a **local** review with a genuinely clean tree — nothing staged, nothing unstaged, nothing untracked — tell the user there is nothing to review and stop.
|
|
189
189
|
|
|
190
|
-
For **cross-repo lightweight reviews**, do the same with the diff GitHub hands you. Redirecting to a file keeps
|
|
190
|
+
For **cross-repo lightweight reviews**, do the same with the diff GitHub hands you. Redirecting to a file is what keeps the 30 000-char shell cap out of it:
|
|
191
191
|
|
|
192
192
|
```bash
|
|
193
193
|
mkdir -p .qwen/tmp
|
|
@@ -382,7 +382,7 @@ A check you perform silently is a check you skip, and this one has been skipped:
|
|
|
382
382
|
|
|
383
383
|
**Every agent MUST return inline: set `subagent_type: "general-purpose"` and `run_in_background: false` on every `agent` call.** Do NOT fork them — never set `subagent_type: "fork"`. A fork runs fire-and-forget and its findings never come back to you, so the review would stall in Step 4 with nothing to aggregate. You need every agent's findings returned to you inline.
|
|
384
384
|
|
|
385
|
-
**For same-repo PR reviews (worktree mode), every `agent` call MUST also set `working_dir: "<worktreePath>"`** — the `worktreePath` from the Step 1 fetch report (a repo-relative path like `.qwen/tmp/review-pr-<n>`; pass it through as-is). This sets each agent's working directory to the PR worktree, so its `git diff`, `grep_search`, file reads, and Agent 7's build/test **resolve against the PR's code, not the user's main checkout**. It is a deterministic, harness-level cwd pin — it does NOT depend on the agent remembering to `cd`, and it is what makes reviewing multiple PRs concurrently safe. (It pins the working directory; it is not a hard filesystem sandbox — an absolute path could still reach elsewhere — but normal review operations stay inside the worktree.) This rule applies to **every** agent the review workflow launches — not just the Step 3 dimension agents, but also the Step 4 verification agent and the Step 5 reverse-audit agents (both restated below). Do NOT set `working_dir` for **local-diff, file-path, or cross-repo lightweight** reviews — those have no worktree, so the agents run in the main project directory.
|
|
385
|
+
**For same-repo PR reviews (worktree mode), every `agent` call MUST also set `working_dir: "<worktreePath>"`** — the `worktreePath` from the Step 1 fetch report (a repo-relative path like `.qwen/tmp/review-pr-<n>`; pass it through as-is). This sets each agent's working directory to the PR worktree, so its `git diff`, `grep_search`, file reads, and Agent 7's build/test **resolve against the PR's code, not the user's main checkout**. It is a deterministic, harness-level cwd pin — it does NOT depend on the agent remembering to `cd`, and it is what makes reviewing multiple PRs concurrently safe. (It pins the working directory; it is not a hard filesystem sandbox — an absolute path could still reach elsewhere — but normal review operations stay inside the worktree.) This rule applies to **every** agent the review workflow launches — not just the Step 3 dimension agents, but also the Step 4 verification agent and the Step 5 reverse-audit agents (both restated below). Do NOT set `working_dir` for **local-diff, file-path, or cross-repo lightweight** reviews — those have no worktree, so the agents run in the main project directory.
|
|
386
386
|
|
|
387
387
|
**You no longer compose these prompts. `qwen review agent-prompt` does** — one `--roster` call builds every one of them, and each block it prints goes to its agent unedited. It already contains everything the list below used to ask you to remember: `diffPathAbsolute` and the exact `read_file` ranges for that role (its own `offset`/`limit` for a chunk agent; every chunk for a whole-diff or 3A agent; the post-change file plus `addedRanges[]` and its own `diffRange` for an invariant agent), the agent's focus areas, the severity definitions verbatim, the finding format, and the project rules. **Never give an agent a `git diff` command** — see "Diff capture and the review topology" in Step 1 for why. In worktree-mode PR reviews the agent's `working_dir` is the PR worktree, so `grep_search` and source-file reads resolve against the PR's code automatically — the agent must NOT `cd` into the worktree or prefix absolute paths for those.
|
|
388
388
|
|
|
@@ -609,7 +609,7 @@ If there are none of these, omit this section.
|
|
|
609
609
|
|
|
610
610
|
### Before an Approve or a zero-Critical verdict: re-check the open Criticals
|
|
611
611
|
|
|
612
|
-
A `C=0` outcome — Approve, or a Comment with no Critical — is a claim that nothing blocks the merge. It is not the default you fall back to when your own agents surfaced nothing. **If Step 1 set the context-unavailable state** (`pr-context` failed — lightweight or same-repo), there is no context file to read: skip the walk below, record every existing Critical as `cannot tell` by construction, and carry that into the verdict — which the Step 7 invariant already caps at `COMMENT`. Otherwise, take **each live blocker already on the PR — from every comment-bearing section of the context file: "Open inline comments", "Blockers to re-check", "Review summaries", and "Already discussed" (both its inline threads and its issue-level comments)** — and check it against the code as it stands at the reviewed commit. Select **semantically, not by the literal marker**: a `**[Critical]**` prefix qualifies, but so does any body that asserts a blocking defect in other words — a "Critical findings could not be anchored" preamble, an explicit must-fix claim (legacy body-only blockers were emitted markerless, and one such review is exactly what a marker filter once discarded). When unsure whether a body asserts a blocker, re-check it — the cost is one ruling; the alternative is certifying a merge past it. ("Already discussed" stays in scope even though `pr-context` now promotes blocker-bearing bodies out of it: `carriesBlockerSignal` is a **fail-safe floor, not a ceiling** — it recognises the phrasings we have seen, not every phrasing that exists, and a blocker worded around all of them still settles there. That section's "do NOT re-report" header governs duplicate-_reporting_ by the finder agents; it does not exempt a body from this re-check. Read it with the same eyes you bring to the promoted section.) Review-level bodies matter because an unmappable or 422-relocated blocker lives **only** there — and the context file now carries them **in full**: `pr-context` renders every meaningful review body whole under "Review summaries" (no more 240-character snippets), and pulls every blocker-bearing body — replied inline thread or issue comment, marker or no marker — into the "Blockers to re-check" section, rendered in full, because a reply alone never settles a blocker. So the re-check usually needs no separate fetch: read those sections under the file's untrusted-data preamble, paging with `offset`/`limit` until `isTruncated` is false. Review summaries and blocker bodies are rendered in full; the Open and Already-discussed sections use one-line snippets, and **every snippet the renderer cut carries its own `_(truncated — fetch …)_` note naming the exact, already-filled-in command for the rest** — a candidate blocker whose snippet was cut is ruled on only after running that fetch; ruling on the visible prefix alone is the fail-closed violation. Run any such fetch **redirected to a file, never into the terminal** (
|
|
612
|
+
A `C=0` outcome — Approve, or a Comment with no Critical — is a claim that nothing blocks the merge. It is not the default you fall back to when your own agents surfaced nothing. **If Step 1 set the context-unavailable state** (`pr-context` failed — lightweight or same-repo), there is no context file to read: skip the walk below, record every existing Critical as `cannot tell` by construction, and carry that into the verdict — which the Step 7 invariant already caps at `COMMENT`. Otherwise, take **each live blocker already on the PR — from every comment-bearing section of the context file: "Open inline comments", "Blockers to re-check", "Review summaries", and "Already discussed" (both its inline threads and its issue-level comments)** — and check it against the code as it stands at the reviewed commit. Select **semantically, not by the literal marker**: a `**[Critical]**` prefix qualifies, but so does any body that asserts a blocking defect in other words — a "Critical findings could not be anchored" preamble, an explicit must-fix claim (legacy body-only blockers were emitted markerless, and one such review is exactly what a marker filter once discarded). When unsure whether a body asserts a blocker, re-check it — the cost is one ruling; the alternative is certifying a merge past it. ("Already discussed" stays in scope even though `pr-context` now promotes blocker-bearing bodies out of it: `carriesBlockerSignal` is a **fail-safe floor, not a ceiling** — it recognises the phrasings we have seen, not every phrasing that exists, and a blocker worded around all of them still settles there. That section's "do NOT re-report" header governs duplicate-_reporting_ by the finder agents; it does not exempt a body from this re-check. Read it with the same eyes you bring to the promoted section.) Review-level bodies matter because an unmappable or 422-relocated blocker lives **only** there — and the context file now carries them **in full**: `pr-context` renders every meaningful review body whole under "Review summaries" (no more 240-character snippets), and pulls every blocker-bearing body — replied inline thread or issue comment, marker or no marker — into the "Blockers to re-check" section, rendered in full, because a reply alone never settles a blocker. So the re-check usually needs no separate fetch: read those sections under the file's untrusted-data preamble, paging with `offset`/`limit` until `isTruncated` is false. Review summaries and blocker bodies are rendered in full; the Open and Already-discussed sections use one-line snippets, and **every snippet the renderer cut carries its own `_(truncated — fetch …)_` note naming the exact, already-filled-in command for the rest** — a candidate blocker whose snippet was cut is ruled on only after running that fetch; ruling on the visible prefix alone is the fail-closed violation. Run any such fetch **redirected to a file, never into the terminal** (shell output truncates at 30 000 chars, which would re-truncate the very body being completed): append `--jq .body > .qwen/tmp/qwen-review-{target}-body-<id>.md` to the command the note names, then `read_file` that file, paging until `isTruncated` is false, before ruling. **Fail closed either way:** a body you could not read whole — the capped tail unfetched, or the single-object fetch failing (auth, rate limit, network) — is `cannot tell`, not "no Critical in it": it goes to compose-review's `cannotTellCriticals` input, which serializes it and caps the event at `COMMENT`; a blocker you could not read is never approved past. A reply alone does not retire a blocker — "I disagree" or "wontfix" is a reply, which is exactly why `pr-context` quarantines blocker-bearing threads in their own section instead of letting them settle into "Already discussed". Only the code decides: a blocker counts as closed exactly when the re-check below lands on "fixed by this diff", never because the thread has an answer. Record one verdict per blocker:
|
|
613
613
|
|
|
614
614
|
- **still stands** — the defect is present in the code you just read. It blocks: the event is `REQUEST_CHANGES`, and the finding goes inline (or into the body if it cannot be anchored).
|
|
615
615
|
- **fixed by this diff** — you traced the blocker's **mechanism** through the code as it now stands and it can no longer fire. Say nothing; do not re-report it. A GitHub thread can read `isResolved: false, isOutdated: false` for a bug a later commit fixed on an adjacent line — the flag tracks the anchored line, not the fix, so the flag is not evidence either way. Only the code is.
|
|
@@ -4,72 +4,65 @@ import {
|
|
|
4
4
|
MINIMUM_MAX_HEIGHT,
|
|
5
5
|
MaxSizedBox,
|
|
6
6
|
setMaxSizedBoxDebugging
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-JNWZQ27S.js";
|
|
8
|
+
import "./chunk-GMGDLUC7.js";
|
|
9
9
|
import "./chunk-SV5PQVQE.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-AYCDXHZB.js";
|
|
11
|
+
import "./chunk-NEEB7UEN.js";
|
|
11
12
|
import "./chunk-5QWWOFGG.js";
|
|
12
13
|
import "./chunk-NHDKSOEY.js";
|
|
13
|
-
import "./chunk-7Z6JQEL6.js";
|
|
14
14
|
import "./chunk-RS7MT2QG.js";
|
|
15
15
|
import "./chunk-H2XVO6NE.js";
|
|
16
16
|
import "./chunk-QHTIBUWB.js";
|
|
17
17
|
import "./chunk-RKUWKYED.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-KX6UK4VJ.js";
|
|
19
|
+
import "./chunk-5M6IDOMF.js";
|
|
19
20
|
import "./chunk-T4TZQJ7W.js";
|
|
20
21
|
import "./chunk-H6XPXXMH.js";
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-EAUYY7SS.js";
|
|
23
|
+
import "./chunk-FSL5W5TI.js";
|
|
24
|
+
import "./chunk-OONJNQ42.js";
|
|
25
|
+
import "./chunk-D2VIDMVM.js";
|
|
25
26
|
import "./chunk-E2UVIFI2.js";
|
|
26
|
-
import "./chunk-Q2YKNMLS.js";
|
|
27
27
|
import "./chunk-XU457J4V.js";
|
|
28
28
|
import "./chunk-VDDGDZMA.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-EIAK6Q2B.js";
|
|
30
30
|
import "./chunk-SZRN75WQ.js";
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-MMT6IQCT.js";
|
|
31
|
+
import "./chunk-HTO4JFDZ.js";
|
|
33
32
|
import "./chunk-CPBF7KYF.js";
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-QBUDF33N.js";
|
|
36
|
-
import "./chunk-LIZRAKPB.js";
|
|
37
|
-
import "./chunk-WHGVTP7Q.js";
|
|
33
|
+
import "./chunk-CPCVCKKF.js";
|
|
38
34
|
import "./chunk-6AM5D4ME.js";
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
42
|
-
import "./chunk-
|
|
43
|
-
import "./chunk-
|
|
44
|
-
import "./chunk-
|
|
45
|
-
import "./chunk-EDANOBFR.js";
|
|
35
|
+
import "./chunk-G45X5TRN.js";
|
|
36
|
+
import "./chunk-PBATSWUQ.js";
|
|
37
|
+
import "./chunk-ZEOZL37W.js";
|
|
38
|
+
import "./chunk-OOCI5VVU.js";
|
|
39
|
+
import "./chunk-BRRF37CO.js";
|
|
40
|
+
import "./chunk-BMWMT5Y2.js";
|
|
46
41
|
import "./chunk-JESCGQM3.js";
|
|
47
|
-
import "./chunk-
|
|
48
|
-
import "./chunk-
|
|
49
|
-
import "./chunk-
|
|
50
|
-
import "./chunk-5I5BM454.js";
|
|
51
|
-
import "./chunk-D7ZI5C7O.js";
|
|
42
|
+
import "./chunk-ZFKNWQGQ.js";
|
|
43
|
+
import "./chunk-4WKAA4KS.js";
|
|
44
|
+
import "./chunk-CR3C7WXL.js";
|
|
52
45
|
import "./chunk-VGC4I5JJ.js";
|
|
53
|
-
import "./chunk-
|
|
54
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-JD3MKVKL.js";
|
|
47
|
+
import "./chunk-UEY4AYUL.js";
|
|
48
|
+
import "./chunk-BDBMYST4.js";
|
|
49
|
+
import "./chunk-EZVDJFZ7.js";
|
|
50
|
+
import "./chunk-OP4MOGXF.js";
|
|
51
|
+
import "./chunk-XVNQMZ2I.js";
|
|
52
|
+
import "./chunk-FEOZBUMT.js";
|
|
53
|
+
import "./chunk-DJ2GSRLV.js";
|
|
54
|
+
import "./chunk-6EFTQYW7.js";
|
|
55
|
+
import "./chunk-MAQQGNQ5.js";
|
|
55
56
|
import "./chunk-A4UCTEB5.js";
|
|
56
57
|
import "./chunk-XWRJCPHC.js";
|
|
57
|
-
import "./chunk-QNLNLENL.js";
|
|
58
|
-
import "./chunk-6X4GWOPW.js";
|
|
59
58
|
import "./chunk-TYQMGACW.js";
|
|
60
59
|
import "./chunk-TYAMGABM.js";
|
|
61
60
|
import "./chunk-FCMNKVXT.js";
|
|
62
|
-
import "./chunk-
|
|
63
|
-
import "./chunk-HTR4WV6U.js";
|
|
64
|
-
import "./chunk-M7WBGLYP.js";
|
|
65
|
-
import "./chunk-U7ZFW55U.js";
|
|
66
|
-
import "./chunk-NPQDJGKU.js";
|
|
67
|
-
import "./chunk-YM3SZTH4.js";
|
|
68
|
-
import "./chunk-OQB4EXO4.js";
|
|
61
|
+
import "./chunk-C27BYUX6.js";
|
|
69
62
|
import "./chunk-75DOP5OR.js";
|
|
70
63
|
import "./chunk-DMTGGOSA.js";
|
|
71
64
|
import "./chunk-YQ3U5MUC.js";
|
|
72
|
-
import "./chunk-
|
|
65
|
+
import "./chunk-TB6UDU4T.js";
|
|
73
66
|
import "./chunk-5O2XNYP6.js";
|
|
74
67
|
import "./chunk-J2S4EL5Y.js";
|
|
75
68
|
export {
|