@qwen-code/qwen-code 0.21.2 → 0.21.3-nightly.20260803.e1e5b42ce

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.
Files changed (352) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +53 -38
  2. package/bundled/qc-helper/docs/features/channels/github.md +16 -5
  3. package/bundled/qc-helper/docs/features/channels/gitlab.md +6 -0
  4. package/bundled/qc-helper/docs/features/code-review.md +92 -24
  5. package/bundled/qc-helper/docs/features/commands.md +46 -38
  6. package/bundled/qc-helper/docs/features/hooks.md +115 -18
  7. package/bundled/qc-helper/docs/features/memory.md +27 -0
  8. package/bundled/qc-helper/docs/features/skills.md +46 -1
  9. package/bundled/qc-helper/docs/features/sub-agents.md +42 -9
  10. package/bundled/qc-helper/docs/features/tool-use-summaries.md +7 -7
  11. package/bundled/qc-helper/docs/qwen-serve.md +46 -25
  12. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +62 -31
  13. package/bundled/qc-helper/docs/support/troubleshooting.md +6 -1
  14. package/bundled/review/DESIGN.md +167 -32
  15. package/bundled/review/SKILL.md +207 -38
  16. package/chunks/{MaxSizedBox-TQBQ247P.js → MaxSizedBox-FCEK5P5K.js} +41 -38
  17. package/chunks/{StandaloneSessionPicker-2HPTKCLX.js → StandaloneSessionPicker-AT77J3PM.js} +63 -59
  18. package/chunks/{acp-startup-profiler-2C4A5ZTJ.js → acp-startup-profiler-3RICG2YW.js} +2 -2
  19. package/chunks/{acpAgent-PS6EDGH3.js → acpAgent-PBMKZ5KH.js} +664 -560
  20. package/chunks/{agent-VDOUB35F.js → agent-55W5BPK3.js} +37 -34
  21. package/chunks/{agent-headless-EO53EFS2.js → agent-headless-I7VMHI22.js} +37 -34
  22. package/chunks/{anthropicContentGenerator-OFHSZJBF.js → anthropicContentGenerator-3CAHEZBM.js} +341 -29
  23. package/chunks/{artifact-tool-RDN2W7ND.js → artifact-tool-TBOYEKTY.js} +2 -2
  24. package/chunks/{askUserQuestion-OZERWH5R.js → askUserQuestion-23Y5WZFJ.js} +2 -2
  25. package/chunks/{bridge-W7AZSRZQ.js → bridge-XNAWEDAN.js} +43 -40
  26. package/chunks/{ca-6W3SK7OQ.js → ca-NYKNH222.js} +50 -5
  27. package/chunks/{channel-management-service-5S7YCWX5.js → channel-management-service-UHX56NBO.js} +7 -7
  28. package/chunks/{channel-settings-store-JFVRSNER.js → channel-settings-store-7P6RJSSF.js} +44 -41
  29. package/chunks/{channel-worker-group-OVWGYMZS.js → channel-worker-group-NDG4WOOZ.js} +8 -8
  30. package/chunks/{channel-worker-manager-H55GKOQA.js → channel-worker-manager-ZCW6UW34.js} +8 -8
  31. package/chunks/{channel-worker-supervisor-CABBXYHK.js → channel-worker-supervisor-ATGFTZRN.js} +4 -4
  32. package/chunks/{chunk-6MPDY6ZG.js → chunk-24ER7UV4.js} +1 -1
  33. package/chunks/{chunk-QDK4F2N5.js → chunk-2DNKEBXY.js} +1 -1
  34. package/chunks/{chunk-AUOULH6Q.js → chunk-2GF3IDEK.js} +1610 -2196
  35. package/chunks/{chunk-JYBU6YUE.js → chunk-2M5N3DHY.js} +1 -1
  36. package/chunks/{chunk-LHKCY7DY.js → chunk-2UISUFHQ.js} +3 -3
  37. package/chunks/{chunk-BBIQAX4V.js → chunk-2ZCYE3F2.js} +30 -18
  38. package/chunks/{chunk-GJ2GBPBD.js → chunk-332FMXSD.js} +5 -5
  39. package/chunks/{chunk-JXVC2PL3.js → chunk-33FNCQSY.js} +2 -2
  40. package/chunks/{chunk-P755N4CS.js → chunk-3GALLNII.js} +6 -6
  41. package/chunks/{chunk-YANIWTRZ.js → chunk-3ICGQSVO.js} +1 -1
  42. package/chunks/{chunk-NBD76HUW.js → chunk-3LGZEYOF.js} +2 -2
  43. package/chunks/{chunk-E2BHWIDT.js → chunk-3RXUYQJI.js} +6 -2
  44. package/chunks/{chunk-E5Z2AVNV.js → chunk-3SH53ANB.js} +0 -11
  45. package/chunks/{chunk-N4ACHWNH.js → chunk-432XCUHF.js} +1 -1
  46. package/chunks/{chunk-JLZ3RBQG.js → chunk-44EJDGMS.js} +144 -11
  47. package/chunks/{chunk-KR32NIAN.js → chunk-4JP34TZ6.js} +10 -10
  48. package/chunks/{chunk-L2E5GFAG.js → chunk-4LKVQFHM.js} +2 -2
  49. package/chunks/{chunk-YDLJGZHL.js → chunk-4NFY2S7N.js} +0 -33
  50. package/chunks/{chunk-NHFEMWAZ.js → chunk-5WY5QEM6.js} +1 -1
  51. package/chunks/{chunk-56Z7QEAQ.js → chunk-6BUPGI3J.js} +16 -16
  52. package/chunks/{chunk-H6I4PGRV.js → chunk-6DNHLK7F.js} +4 -4
  53. package/chunks/{chunk-XQK4XXTN.js → chunk-6O5DVH27.js} +1 -1
  54. package/chunks/{chunk-2RFKHEXL.js → chunk-6PLDPT2C.js} +1 -1
  55. package/chunks/{chunk-Q5WZTTWE.js → chunk-7UPJXZLD.js} +6 -8
  56. package/chunks/{chunk-CBBP4BMC.js → chunk-7UXI6P72.js} +82 -207
  57. package/chunks/{chunk-6CQWRWUC.js → chunk-7XLPYF6B.js} +3 -3
  58. package/chunks/{chunk-VEMNQMHA.js → chunk-7ZH55K26.js} +5 -13
  59. package/chunks/{chunk-JJPKFJBT.js → chunk-A2FOI762.js} +3 -3
  60. package/chunks/{chunk-LYI2PZDK.js → chunk-A5LNZGJB.js} +2 -2
  61. package/chunks/{chunk-3APUUXRF.js → chunk-A5YZ3FA2.js} +2 -1
  62. package/chunks/{chunk-SHN4KHDK.js → chunk-A6SX5TAH.js} +3 -3
  63. package/chunks/{chunk-QCXGC7QB.js → chunk-A7PONO5G.js} +3 -3
  64. package/chunks/{chunk-SZ3KHTDR.js → chunk-AKA24BGO.js} +1 -1
  65. package/chunks/{chunk-RSVPYAGK.js → chunk-B4HXOGF5.js} +5 -5
  66. package/chunks/{chunk-D6MDRSZ6.js → chunk-BBXSRVSN.js} +22 -11
  67. package/chunks/{chunk-Q3T5KA2V.js → chunk-BFHXDAR7.js} +1 -1
  68. package/chunks/{chunk-L55JWS76.js → chunk-BGXZBI5B.js} +1 -1
  69. package/chunks/{chunk-2KKCCLPT.js → chunk-C4IUDGPI.js} +1 -1
  70. package/chunks/{chunk-MM7TH7ZM.js → chunk-CFDR3GNL.js} +18 -3
  71. package/chunks/{chunk-3F2WDAV6.js → chunk-CFVFQWFB.js} +14 -14
  72. package/chunks/{chunk-E2FN6SM7.js → chunk-CIUUYB23.js} +5 -5
  73. package/chunks/{chunk-JCJ7LKNA.js → chunk-DIEFUBV6.js} +1644 -1570
  74. package/chunks/{chunk-KWHKHSIS.js → chunk-DTAPI453.js} +8 -8
  75. package/chunks/{chunk-WWCMSZII.js → chunk-DV2GAGR7.js} +71 -7
  76. package/chunks/{chunk-675H6PLP.js → chunk-DYA25Y7U.js} +1 -1
  77. package/chunks/{chunk-3I6DUGQD.js → chunk-E4WHKETF.js} +32 -4
  78. package/chunks/{chunk-QTERJVPZ.js → chunk-EKTCKZV5.js} +1 -0
  79. package/chunks/{chunk-HX6RLYUO.js → chunk-ENOHFX2M.js} +4 -4
  80. package/chunks/{chunk-VMX5RZQH.js → chunk-EZZJHMFK.js} +18 -9
  81. package/chunks/{chunk-KXDONCPU.js → chunk-FBDRTW3I.js} +4 -4
  82. package/chunks/{chunk-FCYYAB4S.js → chunk-FHPKHXHT.js} +3 -3
  83. package/chunks/{chunk-DQ2O5QOJ.js → chunk-FJZS2MXB.js} +1 -1
  84. package/chunks/{chunk-EQNUDTL6.js → chunk-FVLPZSKH.js} +3 -3
  85. package/chunks/{chunk-2LEOZTBT.js → chunk-FYMMZV5F.js} +111 -26
  86. package/chunks/{chunk-UV6KF7T3.js → chunk-GNZ7MX73.js} +3 -3
  87. package/chunks/chunk-GOFAQQZA.js +132 -0
  88. package/chunks/{chunk-YUFIEIWC.js → chunk-GTM6IHBB.js} +2 -2
  89. package/chunks/{chunk-W3UKBMSI.js → chunk-GU5B6IF3.js} +118 -9
  90. package/chunks/{chunk-PCK4B6LR.js → chunk-GU5XWZU2.js} +1 -1
  91. package/chunks/{chunk-DEEABGH2.js → chunk-H2EDCJIM.js} +5954 -1766
  92. package/chunks/{chunk-FJ5WUMUQ.js → chunk-H36SETQS.js} +1 -1
  93. package/chunks/{chunk-6FMJLI5M.js → chunk-HFVW54NL.js} +41 -6
  94. package/chunks/chunk-HGCQ5SE7.js +136 -0
  95. package/chunks/{chunk-OFZKFPYG.js → chunk-HR4CHEQS.js} +3 -3
  96. package/chunks/{chunk-CO2U743O.js → chunk-I3GX6LGS.js} +4 -4
  97. package/chunks/{chunk-5NNHICSA.js → chunk-I7JDGNG6.js} +3 -3
  98. package/chunks/{chunk-RDJOB6S3.js → chunk-IEBT6DXF.js} +1 -1
  99. package/chunks/{chunk-EU5TBFJI.js → chunk-IV7QPMC2.js} +2 -2
  100. package/chunks/{chunk-B4AJNNOL.js → chunk-J26HHFI5.js} +1 -1
  101. package/chunks/{chunk-CNTR4GR6.js → chunk-JELIWHXD.js} +1 -1
  102. package/chunks/{chunk-FNDXMN7I.js → chunk-JQFMW7BD.js} +936 -223
  103. package/chunks/{chunk-IGTHU3T4.js → chunk-KKN2IE7Q.js} +1 -1
  104. package/chunks/{chunk-TZTAV5RH.js → chunk-KVUBYJDM.js} +2 -2
  105. package/chunks/{chunk-DUNI4EBW.js → chunk-KZXSAQYV.js} +86 -52
  106. package/chunks/chunk-LBOVL47Y.js +29 -0
  107. package/chunks/{chunk-FS674JW4.js → chunk-LBWNSLJK.js} +3 -3
  108. package/chunks/{chunk-I5BT7ADR.js → chunk-LEZFUYPM.js} +4 -4
  109. package/chunks/chunk-LLMGP5IC.js +222 -0
  110. package/chunks/{chunk-44F4LBWZ.js → chunk-LVW7BHTW.js} +56 -18
  111. package/chunks/{chunk-YGE3IXJP.js → chunk-M744OFVE.js} +1 -1
  112. package/chunks/chunk-MISUEWB4.js +8749 -0
  113. package/chunks/{chunk-7SJN2IWT.js → chunk-MJ2SKNTY.js} +5 -5
  114. package/chunks/{chunk-JE2CEOBO.js → chunk-MNTXIO6T.js} +4 -4
  115. package/chunks/{chunk-TEGJSJDF.js → chunk-MOHAWIAW.js} +2 -2
  116. package/chunks/{chunk-54YCNSK5.js → chunk-MVMBE5EH.js} +4521 -10220
  117. package/chunks/{chunk-PZEXDV3H.js → chunk-NCY2CDDX.js} +71 -43
  118. package/chunks/{chunk-TTJZAIFP.js → chunk-NJELCSFL.js} +3 -3
  119. package/chunks/{chunk-A7Y5H4TX.js → chunk-NXDJEZCI.js} +7 -7
  120. package/chunks/{chunk-PQNHRFJC.js → chunk-NYX53SV4.js} +0 -2
  121. package/chunks/{chunk-QARJNL2V.js → chunk-O2ZYHG33.js} +5 -4
  122. package/chunks/{chunk-6PQPKTXP.js → chunk-OPMLL3B3.js} +1 -1
  123. package/chunks/{chunk-PVNQRENX.js → chunk-OUQGNGIU.js} +1 -1
  124. package/chunks/{chunk-V7RNNPGC.js → chunk-P5Y23G2L.js} +18 -1
  125. package/chunks/{chunk-GURGAJTX.js → chunk-PDDYAXL2.js} +4 -1
  126. package/chunks/chunk-PWCQRLM5.js +1170 -0
  127. package/chunks/{chunk-GL4JOZXU.js → chunk-Q43MIWDH.js} +4 -4
  128. package/chunks/{chunk-V4XNUDPE.js → chunk-QFIYH5KR.js} +28 -7
  129. package/chunks/chunk-QL4TN4HS.js +59 -0
  130. package/chunks/{chunk-E6CJ2SMM.js → chunk-QMBEW7EW.js} +2 -2
  131. package/chunks/{chunk-U4VTUMMK.js → chunk-QONSRAEV.js} +1 -1
  132. package/chunks/{chunk-LOY7RWQG.js → chunk-QYPT3QUD.js} +3 -3
  133. package/chunks/{chunk-RG64CDT2.js → chunk-RJAVNGJJ.js} +131 -48
  134. package/chunks/{chunk-Z3S5EMOW.js → chunk-RPYYTL7E.js} +60 -12
  135. package/chunks/{chunk-V25K5ID7.js → chunk-SWCEYR6T.js} +1 -1
  136. package/chunks/{chunk-77V3VIKL.js → chunk-SXGNNAMC.js} +9 -9
  137. package/chunks/{chunk-7KAXXBER.js → chunk-TNQ5BEEB.js} +3 -3
  138. package/chunks/{chunk-R2XWGR75.js → chunk-TYERNYH4.js} +2 -2
  139. package/chunks/{chunk-45IOTAUS.js → chunk-U25CMJYY.js} +1 -1
  140. package/chunks/{chunk-7ULQIS27.js → chunk-UEJESCS7.js} +1 -1
  141. package/chunks/{chunk-HC45LTEN.js → chunk-UH7Z7Y45.js} +1 -1
  142. package/chunks/{chunk-P5VC5USY.js → chunk-UIKCPMID.js} +1 -1
  143. package/chunks/{chunk-CPZAH673.js → chunk-UKZEXS6K.js} +2 -0
  144. package/chunks/{chunk-HIVKI6O6.js → chunk-UO7AWUZJ.js} +9 -7
  145. package/chunks/{chunk-XP4L6KS3.js → chunk-URN76TKR.js} +2 -2
  146. package/chunks/{chunk-XUGZYLDH.js → chunk-UWSXFI6E.js} +1 -1
  147. package/chunks/{chunk-AOHY3QJ3.js → chunk-VA5NLVPT.js} +3 -3
  148. package/chunks/{chunk-FANRZEAJ.js → chunk-VWOVHOTT.js} +1 -1
  149. package/chunks/{chunk-NTDH4IML.js → chunk-W2K4OEW4.js} +7 -7
  150. package/chunks/{chunk-L32VV3ZJ.js → chunk-WH7W24EN.js} +12 -12
  151. package/chunks/{chunk-QTHQ6Z5X.js → chunk-WK4TJUEA.js} +1 -1
  152. package/chunks/{chunk-ZPZ7ZJEE.js → chunk-WUC6ZFXO.js} +1 -1
  153. package/chunks/{chunk-TIRRPCFS.js → chunk-X6QNZOTC.js} +1 -1
  154. package/chunks/{chunk-IIUGIWWY.js → chunk-XC2VAFVZ.js} +1 -1
  155. package/chunks/{chunk-D4HTUMGX.js → chunk-XC656O42.js} +3 -3
  156. package/chunks/{chunk-ZMOJ7ISP.js → chunk-XXOVLDZQ.js} +1 -1
  157. package/chunks/{chunk-THVU3RNH.js → chunk-YAVY33G4.js} +1 -1
  158. package/chunks/{chunk-PJOHNFIY.js → chunk-YIAC2OXH.js} +5 -5
  159. package/chunks/{chunk-CU47KXB5.js → chunk-YTSN63PD.js} +6 -6
  160. package/chunks/{chunk-DSFHVTWD.js → chunk-YXEVDA66.js} +2 -2
  161. package/chunks/{chunk-MB32MS4U.js → chunk-ZLJQIGCH.js} +260 -175
  162. package/chunks/{chunk-6TAASXWL.js → chunk-ZX6RZZFB.js} +3 -3
  163. package/chunks/{computer-use-5QWCFNKD.js → computer-use-BG2EHNJE.js} +37 -34
  164. package/chunks/{config-utils-WADIDWGG.js → config-utils-E3ZQTHGM.js} +4 -4
  165. package/chunks/{contextCommand-4Z7T7TUM.js → contextCommand-JAPYNKFC.js} +41 -38
  166. package/chunks/{core-runtime-6N4EFC2Q.js → core-runtime-2VCZN5QF.js} +37 -34
  167. package/chunks/{create-sub-session-AEREHZBQ.js → create-sub-session-52OUA2VU.js} +52 -43
  168. package/chunks/{create-sub-session-62YZWVAY.js → create-sub-session-J32WC64U.js} +2 -2
  169. package/chunks/{cron-create-6E7GIQTG.js → cron-create-HMFSHIAR.js} +4 -4
  170. package/chunks/{cron-delete-JD26XY3W.js → cron-delete-ZJFHOX57.js} +4 -4
  171. package/chunks/{cron-list-CUWFB44G.js → cron-list-ZEX2NBMN.js} +4 -4
  172. package/chunks/{daemon-PCNCI5YU.js → daemon-CCIX4BMG.js} +47 -6
  173. package/chunks/{daemon-status-provider-DDF7C5M7.js → daemon-status-provider-F2YGDKHR.js} +48 -45
  174. package/chunks/{daemon-trust-policy-Q4KSOJTR.js → daemon-trust-policy-XCY7JETR.js} +43 -40
  175. package/chunks/{daemon-trust-policy-monitor-V6FTE3IY.js → daemon-trust-policy-monitor-FBHB5GMQ.js} +43 -40
  176. package/chunks/{de-SY6O76BF.js → de-VL76CPLV.js} +50 -5
  177. package/chunks/{deferred-core-runtime-GHJ5GQHK.js → deferred-core-runtime-BBLJ4JUM.js} +37 -34
  178. package/chunks/display-image-2WOG27DY.js +184 -0
  179. package/chunks/{dist-ZHXOBXDN.js → dist-3BMEUGTG.js} +1 -1
  180. package/chunks/{dist-OAOC5OV4.js → dist-7JGAAQSC.js} +2 -2
  181. package/chunks/{dist-SL2LUMML.js → dist-A7H2KKUC.js} +1 -1
  182. package/chunks/{dist-ULIG4M5H.js → dist-C5U4LJKW.js} +162 -15
  183. package/chunks/{dist-2PERFI23.js → dist-DPPHJAVL.js} +3 -3
  184. package/chunks/{dist-PVEAFLHY.js → dist-HVBMEYWK.js} +1 -1
  185. package/chunks/{dist-26BIMQT6.js → dist-IKGVITP3.js} +676 -37
  186. package/chunks/{dist-WGMNT3JQ.js → dist-SFQ34F4M.js} +24 -6
  187. package/chunks/{earlyInputCapture-TQXLLISD.js → earlyInputCapture-ALVSMKP7.js} +38 -35
  188. package/chunks/{edit-FJEUV6KZ.js → edit-POB3CIHQ.js} +37 -34
  189. package/chunks/{en-NBK3JKCE.js → en-IRJ2WN5T.js} +61 -6
  190. package/chunks/{enter-worktree-7GE3TZ4P.js → enter-worktree-Q2N7UZWC.js} +37 -34
  191. package/chunks/{enterPlanMode-KR5TMPCJ.js → enterPlanMode-QGAH2GMP.js} +37 -34
  192. package/chunks/{environment-SWL3CMB3.js → environment-FE5AX2U5.js} +40 -37
  193. package/chunks/{errors-XQE7BGZV.js → errors-SLMCFLSC.js} +40 -37
  194. package/chunks/{exit-worktree-CHKTYNCV.js → exit-worktree-7WO2LPLF.js} +37 -34
  195. package/chunks/{exitPlanMode-QYAG6LWX.js → exitPlanMode-3PINWUTY.js} +37 -34
  196. package/chunks/{fast-path-Z2K7W6DC.js → fast-path-SVFFEL6U.js} +17 -4
  197. package/chunks/{fr-4KG5V7UT.js → fr-GK3HQYVB.js} +50 -5
  198. package/chunks/{gemini-YU4XKEDG.js → gemini-QECJNKNJ.js} +151 -90
  199. package/chunks/{geminiContentGenerator-ZZX6NBO4.js → geminiContentGenerator-ZFAZKT6R.js} +6 -6
  200. package/chunks/{glob-VYF5CXSX.js → glob-GXUNQYNR.js} +37 -34
  201. package/chunks/{goal-tools-HGO6VXPB.js → goal-tools-SPQ5M6D3.js} +3 -3
  202. package/chunks/{grep-5DP5ZUTW.js → grep-LVU5KBCV.js} +37 -34
  203. package/chunks/{handleAutoUpdate-UVBJ56DL.js → handleAutoUpdate-MPDHQY72.js} +43 -40
  204. package/chunks/{i18n-UQNYHEUD.js → i18n-LEYRN6RV.js} +39 -36
  205. package/chunks/{image-gen-WHPIZNWF.js → image-gen-4T2D4PTP.js} +9 -9
  206. package/chunks/{initializer-GMIICF4W.js → initializer-PQV2THBS.js} +44 -41
  207. package/chunks/{installationInfo-4MGG4WVI.js → installationInfo-XC3HXLTX.js} +38 -35
  208. package/chunks/{ja-F3GSQXMF.js → ja-3FA46IKD.js} +50 -5
  209. package/chunks/{keychain-token-storage-IKO4G53C.js → keychain-token-storage-7BT4TQ2A.js} +2 -2
  210. package/chunks/{kittyProtocolDetector-MBRTDRBK.js → kittyProtocolDetector-BFLAKYXH.js} +1 -1
  211. package/chunks/{list-CPN2W334.js → list-AQBTPZRG.js} +46 -43
  212. package/chunks/{list-agents-PXJ7ZUFB.js → list-agents-TWEGRJWO.js} +2 -2
  213. package/chunks/{loadedSettingsAdapter-ZQAV5NDO.js → loadedSettingsAdapter-EZYPDX2J.js} +43 -40
  214. package/chunks/{loggingContentGenerator-5E7W4IEP.js → loggingContentGenerator-WD6YWU7Q.js} +52 -37
  215. package/chunks/{loop-wakeup-Y26NQZ5I.js → loop-wakeup-6LLEOQYV.js} +5 -5
  216. package/chunks/{ls-ONQTTMQR.js → ls-H5WX22VK.js} +4 -4
  217. package/chunks/{lsp-YGHHRGMD.js → lsp-G6FXYEIS.js} +2 -2
  218. package/chunks/{managed-npm-update-MKKAXYXA.js → managed-npm-update-BMM57CHD.js} +40 -37
  219. package/chunks/{mcp-V5NTJF6X.js → mcp-FMI6NCWA.js} +43 -40
  220. package/chunks/{monitor-CO3ASY6E.js → monitor-PZJOYAA2.js} +37 -34
  221. package/chunks/nonInteractiveCli-QPX6R4LL.js +152 -0
  222. package/chunks/{notebook-edit-Z7AEE6FM.js → notebook-edit-GZF2SKTQ.js} +37 -34
  223. package/chunks/{openaiContentGenerator-CA3MQOP3.js → openaiContentGenerator-ZPLCFAAG.js} +18 -18
  224. package/chunks/{pidfile-NL7MKDRU.js → pidfile-PCADVJQW.js} +38 -35
  225. package/chunks/{processUtils-PB5K2DYH.js → processUtils-FKUVQVEU.js} +2 -2
  226. package/chunks/{pt-EQ33KWEN.js → pt-3AOBKPIJ.js} +50 -5
  227. package/chunks/{qwenContentGenerator-JYFNDCOS.js → qwenContentGenerator-2Y4R6YLB.js} +42 -40
  228. package/chunks/{qwenOAuth2-W2ALKQDD.js → qwenOAuth2-UCEHY3I2.js} +8 -8
  229. package/chunks/{read-file-IEOR5H5W.js → read-file-DYHDFVAS.js} +10 -10
  230. package/chunks/{read-mcp-resource-U2IJN5HM.js → read-mcp-resource-DRZSI3HE.js} +2 -2
  231. package/chunks/{record-artifact-MGPJ7EG4.js → record-artifact-IPIRWMFY.js} +3 -3
  232. package/chunks/{resumeHistoryUtils-BNBTP5AS.js → resumeHistoryUtils-5JS6R3AJ.js} +45 -42
  233. package/chunks/{ripGrep-UMQODKEB.js → ripGrep-2QOR3ZQT.js} +37 -34
  234. package/chunks/{ru-7OZAUKGG.js → ru-VJRAMC4W.js} +50 -5
  235. package/chunks/{run-qwen-serve-RN2R6QQW.js → run-qwen-serve-MTVRAUBR.js} +271 -60
  236. package/chunks/{runtime-QFJ2MJF5.js → runtime-DQGE2DYR.js} +50 -45
  237. package/chunks/{scheduler-AMYUFOZI.js → scheduler-BXIZQ4OO.js} +37 -34
  238. package/chunks/{sdk-exporters-http-4BQANSJ6.js → sdk-exporters-http-IKNWQJNV.js} +2 -2
  239. package/chunks/{sdk-impl-Z4VXWVFX.js → sdk-impl-7CUUMQDB.js} +2 -2
  240. package/chunks/{send-message-PMP4ATVM.js → send-message-LHJLVWFD.js} +5 -4
  241. package/chunks/{serve-EIIYJVX3.js → serve-D4GYHFLL.js} +44 -40
  242. package/chunks/{server-EP2LLAPD.js → server-S22MLWTJ.js} +618 -387
  243. package/chunks/{session-GMPZBLOW.js → session-AHNM6YXP.js} +151 -87
  244. package/chunks/{settings-LN7RNKBS.js → settings-77MDDUSX.js} +42 -39
  245. package/chunks/{shell-EM2OWU5X.js → shell-DLD2VQTQ.js} +37 -34
  246. package/chunks/{skill-T5VPSK73.js → skill-3B2PAQE4.js} +27 -14
  247. package/chunks/{skill-settings-GMR3GMNY.js → skill-settings-STR5NF4B.js} +42 -39
  248. package/chunks/{spawnChannel-YPCU62DI.js → spawnChannel-TOWYOVDZ.js} +39 -36
  249. package/chunks/{standalone-update-JAKIM2NF.js → standalone-update-F6ZWABD7.js} +40 -37
  250. package/chunks/{startInteractiveUI-YETQWGYF.js → startInteractiveUI-QR7MHDX7.js} +1829 -1036
  251. package/chunks/{syntheticOutput-D7E6ZFKR.js → syntheticOutput-EYL7DWO7.js} +3 -3
  252. package/chunks/{task-create-NFCYD43L.js → task-create-4ALZMGP5.js} +10 -9
  253. package/chunks/{task-list-TAVMGEVD.js → task-list-6CVQPORX.js} +6 -6
  254. package/chunks/{task-stop-ZDF2UJRM.js → task-stop-Y5ZTFVRX.js} +2 -2
  255. package/chunks/{task-update-6L7LHGEX.js → task-update-IKCEEWJ6.js} +10 -9
  256. package/chunks/{team-create-LFJ6HGNY.js → team-create-LQVIAVRF.js} +37 -34
  257. package/chunks/{team-delete-DPGGRQBU.js → team-delete-CE7DC53R.js} +6 -6
  258. package/chunks/{team-plan-approval-C2KLSDGO.js → team-plan-approval-G5PUNI52.js} +37 -34
  259. package/chunks/terminal-image-renderer-33GSM55L.js +90 -0
  260. package/chunks/{theme-manager-JQ3ZGBP5.js → theme-manager-DBFM5QOG.js} +38 -35
  261. package/chunks/{todoWrite-2UO5G6G6.js → todoWrite-FTZWQRZH.js} +108 -36
  262. package/chunks/{tool-search-FAZBFRJZ.js → tool-search-RGG7BBC4.js} +13 -12
  263. package/chunks/{total-session-admission-5CALIVYO.js → total-session-admission-LY3RMXXI.js} +44 -41
  264. package/chunks/{trustedFolders-KOPSP44S.js → trustedFolders-3M4IQ6K6.js} +39 -36
  265. package/chunks/{update-relaunch-6QL2TICS.js → update-relaunch-G3CMSX3M.js} +5 -5
  266. package/chunks/{updateCheck-4Q6RIKFW.js → updateCheck-ZKFGBDTG.js} +42 -39
  267. package/chunks/{useAutoAcceptIndicator-Q5BMKZV3.js → useAutoAcceptIndicator-7SAFZK5H.js} +47 -44
  268. package/chunks/{validateNonInterActiveAuth-GKOC5F6Z.js → validateNonInterActiveAuth-F2K6UGE4.js} +88 -84
  269. package/chunks/{version-VSATY2LD.js → version-KM6MYV2D.js} +1 -1
  270. package/chunks/{web-fetch-JCLKL6NL.js → web-fetch-SM4LZHRS.js} +13 -13
  271. package/chunks/{web-search-DSQTFUBX.js → web-search-OGKZNDAC.js} +8 -8
  272. package/chunks/{workflow-M6QAVKVJ.js → workflow-HU365RFR.js} +419 -304
  273. package/chunks/{workspace-providers-status-YKLTLMJA.js → workspace-providers-status-QKKXQHL7.js} +46 -43
  274. package/chunks/{workspace-registration-store-5DMGKU64.js → workspace-registration-store-7J7KOXFD.js} +2 -2
  275. package/chunks/{workspace-registry-PTYUSYXX.js → workspace-registry-KC66O6DH.js} +44 -41
  276. package/chunks/{workspace-service-25ML3T47.js → workspace-service-TEV5Q2AA.js} +51 -48
  277. package/chunks/{workspace-skills-status-YKZWOYRX.js → workspace-skills-status-VRL55OMU.js} +45 -42
  278. package/chunks/{workspace-trust-reconciler-5FI2S3OS.js → workspace-trust-reconciler-COC5M7CY.js} +50 -47
  279. package/chunks/{write-file-AY7VLP5X.js → write-file-3SO2BMNO.js} +37 -34
  280. package/chunks/{zh-H3YDK5QW.js → zh-ARWDLDLR.js} +58 -6
  281. package/chunks/{zh-TW-JYCP7XUA.js → zh-TW-Y4RGI3P7.js} +58 -6
  282. package/chunks/{zoom-image-S4LJZMD5.js → zoom-image-O3RWTVKV.js} +10 -10
  283. package/cli.js +32 -48
  284. package/locales/ca.js +68 -4
  285. package/locales/de.js +70 -4
  286. package/locales/en.js +84 -6
  287. package/locales/fr.js +72 -4
  288. package/locales/ja.js +69 -4
  289. package/locales/pt.js +68 -4
  290. package/locales/ru.js +71 -4
  291. package/locales/zh-TW.js +74 -6
  292. package/locales/zh.js +74 -6
  293. package/package.json +3 -3
  294. package/web-shell/assets/{arc-xjArKHU2.js → arc-KuwiZ67W.js} +1 -1
  295. package/web-shell/assets/{architectureDiagram-3BPJPVTR-BgrQDNYG.js → architectureDiagram-3BPJPVTR-Cppop6HB.js} +1 -1
  296. package/web-shell/assets/{blockDiagram-GPEHLZMM-CXxWC-1_.js → blockDiagram-GPEHLZMM-DQ6HT72s.js} +1 -1
  297. package/web-shell/assets/{c4Diagram-AAUBKEIU-Dx1tLm3v.js → c4Diagram-AAUBKEIU-B8TX_Mh-.js} +1 -1
  298. package/web-shell/assets/channel-BZd6Ile0.js +1 -0
  299. package/web-shell/assets/{chunk-2J33WTMH-CBxjogVR.js → chunk-2J33WTMH-B2WBUTp8.js} +1 -1
  300. package/web-shell/assets/{chunk-4BX2VUAB-izb-rY5W.js → chunk-4BX2VUAB-DXUsWC6O.js} +1 -1
  301. package/web-shell/assets/{chunk-55IACEB6-NzLyvSb8.js → chunk-55IACEB6-DtB-6cyk.js} +1 -1
  302. package/web-shell/assets/{chunk-727SXJPM-DVyKb0dl.js → chunk-727SXJPM-B-PhPyC3.js} +1 -1
  303. package/web-shell/assets/{chunk-AQP2D5EJ-BtqL7NzB.js → chunk-AQP2D5EJ-DNaTFMSC.js} +1 -1
  304. package/web-shell/assets/{chunk-FMBD7UC4-iNpdKIO0.js → chunk-FMBD7UC4-DZ345tFf.js} +1 -1
  305. package/web-shell/assets/{chunk-ND2GUHAM-DI7cbFmX.js → chunk-ND2GUHAM-BR_EpgzJ.js} +1 -1
  306. package/web-shell/assets/{chunk-QZHKN3VN-3Y_-xFYs.js → chunk-QZHKN3VN-BTU-0gDT.js} +1 -1
  307. package/web-shell/assets/classDiagram-4FO5ZUOK-B7c-TqtK.js +1 -0
  308. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B7c-TqtK.js +1 -0
  309. package/web-shell/assets/{cose-bilkent-S5V4N54A--raRatZn.js → cose-bilkent-S5V4N54A-BmsKBCNt.js} +1 -1
  310. package/web-shell/assets/{dagre-BM42HDAG-B8SU70mO.js → dagre-BM42HDAG-Ba8YWdDC.js} +1 -1
  311. package/web-shell/assets/{diagram-2AECGRRQ-ewgoakXo.js → diagram-2AECGRRQ-CCt2SnI6.js} +1 -1
  312. package/web-shell/assets/{diagram-5GNKFQAL-Bm_JLTnS.js → diagram-5GNKFQAL-BVTLXEU7.js} +1 -1
  313. package/web-shell/assets/{diagram-KO2AKTUF-DEIUjUy9.js → diagram-KO2AKTUF-DpDAVCYV.js} +1 -1
  314. package/web-shell/assets/{diagram-LMA3HP47-C2Wmrpj-.js → diagram-LMA3HP47-8ljXg-TB.js} +1 -1
  315. package/web-shell/assets/{diagram-OG6HWLK6-CtYe6bFx.js → diagram-OG6HWLK6-JAXfQSmd.js} +1 -1
  316. package/web-shell/assets/{erDiagram-TEJ5UH35-DfpHcWLV.js → erDiagram-TEJ5UH35-CUeakG6k.js} +1 -1
  317. package/web-shell/assets/{flowDiagram-I6XJVG4X-CAiUhio5.js → flowDiagram-I6XJVG4X-Cd4Wrdwv.js} +1 -1
  318. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CYc7ezr4.js → ganttDiagram-6RSMTGT7-C0nMFvH_.js} +1 -1
  319. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-70lbkcRS.js → gitGraphDiagram-PVQCEYII-uKk88n_L.js} +1 -1
  320. package/web-shell/assets/index-BXGtjHs5.js +1756 -0
  321. package/web-shell/assets/{index-Ww86nT9f.js → index-C1UWBJSX.js} +1 -1
  322. package/web-shell/assets/index-WxSvj2tI.css +5 -0
  323. package/web-shell/assets/{infoDiagram-5YYISTIA-C7e8DWPa.js → infoDiagram-5YYISTIA-GfPN17hR.js} +1 -1
  324. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BYLr2op-.js → ishikawaDiagram-YF4QCWOH-CDbWTcGa.js} +1 -1
  325. package/web-shell/assets/{journeyDiagram-JHISSGLW-hEibAHKX.js → journeyDiagram-JHISSGLW-J8TvvVFz.js} +1 -1
  326. package/web-shell/assets/{kanban-definition-UN3LZRKU-F2rt8Uhp.js → kanban-definition-UN3LZRKU-Ds_ndLrs.js} +1 -1
  327. package/web-shell/assets/{linear-DPhyNezd.js → linear-DuL9O4i3.js} +1 -1
  328. package/web-shell/assets/{mermaid.core-ZUtnug0n.js → mermaid.core-DtK4PsQB.js} +5 -5
  329. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DDWcMoi8.js → mindmap-definition-RKZ34NQL-DD0r7MS3.js} +1 -1
  330. package/web-shell/assets/{pieDiagram-4H26LBE5-CTRKzw1_.js → pieDiagram-4H26LBE5-CxGPZ8Q-.js} +1 -1
  331. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CAEwYG_z.js → quadrantDiagram-W4KKPZXB-Ds7Buxed.js} +1 -1
  332. package/web-shell/assets/{requirementDiagram-4Y6WPE33-CRjnH9D9.js → requirementDiagram-4Y6WPE33-DIx28ph5.js} +1 -1
  333. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-LPQT_sOd.js → sankeyDiagram-5OEKKPKP-AxdAYcVX.js} +1 -1
  334. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-Ht2Iqvb0.js → sequenceDiagram-3UESZ5HK-CojoXAZ5.js} +1 -1
  335. package/web-shell/assets/{stateDiagram-AJRCARHV-CIUdqOXu.js → stateDiagram-AJRCARHV-Dy1WN3mi.js} +1 -1
  336. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BaTNMz02.js +1 -0
  337. package/web-shell/assets/{timeline-definition-PNZ67QCA-BcilneZF.js → timeline-definition-PNZ67QCA-DeWe_43M.js} +1 -1
  338. package/web-shell/assets/{vennDiagram-CIIHVFJN-BljwiiH1.js → vennDiagram-CIIHVFJN-BN8PVlFq.js} +1 -1
  339. package/web-shell/assets/{wardley-L42UT6IY-DeKjkYjq.js → wardley-L42UT6IY-CbjV_1hf.js} +1 -1
  340. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-L3U1H7KG.js → wardleyDiagram-YWT4CUSO-D2mw84_p.js} +1 -1
  341. package/web-shell/assets/{xychartDiagram-2RQKCTM6-IJnWsgMT.js → xychartDiagram-2RQKCTM6-er9CTQXi.js} +1 -1
  342. package/web-shell/index.html +2 -2
  343. package/chunks/chunk-4KP2F2TE.js +0 -82
  344. package/chunks/chunk-HGT6JR3U.js +0 -177
  345. package/chunks/nonInteractiveCli-ZJYEOO7U.js +0 -148
  346. package/web-shell/assets/channel-B1cyk94G.js +0 -1
  347. package/web-shell/assets/classDiagram-4FO5ZUOK-BpBYZoRE.js +0 -1
  348. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BpBYZoRE.js +0 -1
  349. package/web-shell/assets/index-C1k3PDuU.css +0 -5
  350. package/web-shell/assets/index-DZLIXILO.js +0 -1750
  351. package/web-shell/assets/insert-DmRbh9Rv.svg +0 -1
  352. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BmqqQZ6w.js +0 -1
@@ -21,7 +21,7 @@ These commands help you save, restore, and summarize work progress.
21
21
  | Command | Description | Usage Examples |
22
22
  | ---------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------- |
23
23
  | `/init` | Analyze current directory and create initial context file | `/init` |
24
- | `/summary` | Generate project summary based on conversation history | `/summary` |
24
+ | `/summary` | Generate project summary based on conversation history | `/summary` or `/summary docs/my-summary.md` |
25
25
  | `/compress` | Replace chat history with summary to save Tokens | `/compress` or `/summarize` |
26
26
  | `/compress-fast` | Fast compression without AI — strips old tool outputs and thinking parts | `/compress-fast` |
27
27
  | `/resume` | Resume a previous conversation session | `/resume` or `/continue` |
@@ -38,6 +38,10 @@ These commands help you save, restore, and summarize work progress.
38
38
  >
39
39
  > `/summarize` is an alias for `/compress` (it compresses chat history — a destructive operation). To generate a non-destructive project summary instead, use `/summary`.
40
40
 
41
+ > [!note]
42
+ >
43
+ > `/summary` accepts an optional `[path]` argument to save the summary to a custom location within the project root. Without an argument, it saves to `.qwen/PROJECT_SUMMARY.md`. Custom-path summaries are not detected by the welcome-back flow (`ui.enableWelcomeBack`), which only reads the default `.qwen/PROJECT_SUMMARY.md` location.
44
+
41
45
  ### 1.2 Interface and Workspace Control
42
46
 
43
47
  Commands for adjusting interface appearance and work environment.
@@ -77,43 +81,47 @@ Commands specifically for controlling interface and output language.
77
81
 
78
82
  Commands for managing AI tools and models.
79
83
 
80
- | Command | Description | Usage Examples |
81
- | ----------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
82
- | `/mcp` | List configured MCP servers and tools | `/mcp`, `/mcp desc`, `/mcp nodesc`, `/mcp schema` |
83
- | `/import-config` | Import MCP servers from Claude configs | `/import-config all`, `/import-config claude-code`, `/import-config claude-desktop --scope user\|project` |
84
- | `/tools` | Display currently available tool list | `/tools`, `/tools desc` |
85
- | `/skills` | Open the Skills panel to browse, search, toggle, and launch skills | `/skills`, `/<skill-name>` |
86
- | `/plan` | Switch to plan mode or exit plan mode | `/plan`, `/plan <task>`, `/plan exit` |
87
- | `/approval-mode` | Change the tool-approval mode (current session only) | `/approval-mode`, `/approval-mode auto-edit` |
88
- | → `plan` | Analysis only, no execution (secure review) | `/approval-mode plan` |
89
- | → `default` | Require approval for edits (daily use) | `/approval-mode default` |
90
- | → `auto-edit` | Auto-approve edits (trusted environment) | `/approval-mode auto-edit` |
91
- | → `auto` | Classifier-evaluated approval (autonomous) | `/approval-mode auto` |
92
- | → `yolo` | Auto-approve everything (quick prototyping) | `/approval-mode yolo` |
93
- | `/model` | Switch model used in current session | `/model`, `/model <model-id>` (switch immediately) |
94
- | `/model --fast` | Set a lighter model for prompt suggestions | `/model --fast qwen3-coder-flash` |
95
- | `/model --voice` | Set the model used for voice transcription | `/model --voice <model-id>` |
96
- | `/model --vision` | Set the vision-bridge model used to transcribe images for a text-only main model | `/model --vision <model-id>` |
97
- | `/effort` | Set reasoning effort for thinking-capable models | `/effort` (opens picker), `/effort high` (low/medium/high/xhigh/max; mapped & clamped per provider) |
98
- | `/extensions` | Manage extensions | `/extensions list`, `/extensions manage` |
99
- | → `list` | List installed extensions | `/extensions list` |
100
- | → `manage` | Manage installed extensions (interactive) | `/extensions manage` |
101
- | → `explore` | Open extensions page in browser | `/extensions explore <Gemini\|ClaudeCode>` |
102
- | → `install` | Install an extension from a git repo or path | `/extensions install <repo-or-path>` |
103
- | `/memory` | Open the Memory Manager dialog | `/memory` |
104
- | `/remember` | Save a durable memory | `/remember Prefer terse responses` |
105
- | `/forget` | Remove matching entries from auto-memory | `/forget <query>` |
106
- | `/dream` | Manually run auto-memory consolidation | `/dream` |
107
- | `/hooks` | Manage Qwen Code hooks | `/hooks`, `/hooks list` |
108
- | `/reload-plugins` | Reload extension changes (commands, skills, agents, hooks, MCP/LSP servers) from disk | `/reload-plugins` |
109
- | `/permissions` | Manage permission rules | `/permissions` |
110
- | `/agents` | Manage subagents | `/agents manage`, `/agents create` |
111
- | `/arena` | Manage Arena sessions | `/arena start`, `/arena stop`, `/arena status`, `/arena select` (alias `choose`) |
112
- | `/goal` | Set a goal — keep working until condition met | `/goal <condition>`, `/goal clear` |
113
- | `/tasks` | List background tasks | `/tasks` |
114
- | `/workflows` | Inspect workflow runs | `/workflows`, `/workflows <runId>` |
115
- | `/lsp` | Show LSP server status | `/lsp` |
116
- | `/trust` | Manage folder trust settings | `/trust` |
84
+ | Command | Description | Usage Examples |
85
+ | --------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
86
+ | `/mcp` | List configured MCP servers and tools | `/mcp`, `/mcp desc`, `/mcp nodesc`, `/mcp schema` |
87
+ | `/import-config` | Import MCP servers from Claude configs | `/import-config all`, `/import-config claude-code`, `/import-config claude-desktop --scope user\|project` |
88
+ | `/tools` | Display currently available tool list | `/tools`, `/tools desc` |
89
+ | `/skills` | Open the Skills panel to browse, search, toggle, and launch skills | `/skills`, `/<skill-name>` |
90
+ | `/learn` | Create a reusable project skill from a file, directory, URL, video, or text | `/learn https://docs.example.com/api`, `/learn ./tutorial.mp4 focus on deployment` |
91
+ | `/curator` | Inspect, pin, archive, or restore inactive project auto-skills | `/curator`, `/curator run --dry-run`, `/curator pin <directory>`, `/curator restore <directory>` |
92
+ | `/plan` | Switch to plan mode or exit plan mode | `/plan`, `/plan <task>`, `/plan exit` |
93
+ | `/approval-mode` | Change the tool-approval mode (current session only) | `/approval-mode`, `/approval-mode auto-edit` |
94
+ | → `plan` | Analysis only, no execution (secure review) | `/approval-mode plan` |
95
+ | → `default` | Require approval for edits (daily use) | `/approval-mode default` |
96
+ | → `auto-edit` | Auto-approve edits (trusted environment) | `/approval-mode auto-edit` |
97
+ | → `auto` | Classifier-evaluated approval (autonomous) | `/approval-mode auto` |
98
+ | → `yolo` | Auto-approve everything (quick prototyping) | `/approval-mode yolo` |
99
+ | `/model` | Switch model used in current session | `/model`, `/model <model-id>` (switch immediately) |
100
+ | `/model --fast` | Set a lighter model for prompt suggestions | `/model --fast qwen3-coder-flash` |
101
+ | `/model --voice` | Set the model used for voice transcription | `/model --voice <model-id>` |
102
+ | `/model --vision` | Set the vision-bridge model used to transcribe images for a text-only main model | `/model --vision <model-id>` |
103
+ | `/model --compaction` | Set the model used for chat compression | `/model --compaction <model-id>`, `/model --compaction clear` |
104
+ | `/model --image` | Set an image-only model for the built-in image generation tool | `/model --image <model-id>` |
105
+ | `/effort` | Set reasoning effort for thinking-capable models | `/effort` (opens picker), `/effort high` (low/medium/high/xhigh/max; mapped & clamped per provider) |
106
+ | `/extensions` | Manage extensions | `/extensions list`, `/extensions manage` |
107
+ | → `list` | List installed extensions | `/extensions list` |
108
+ | → `manage` | Manage installed extensions (interactive) | `/extensions manage` |
109
+ | → `explore` | Open extensions page in browser | `/extensions explore <Gemini\|ClaudeCode>` |
110
+ | → `install` | Install an extension from a git repo or path | `/extensions install <repo-or-path>` |
111
+ | `/memory` | Open the Memory Manager dialog | `/memory` |
112
+ | `/remember` | Save a durable memory | `/remember Prefer terse responses` |
113
+ | `/forget` | Remove matching entries from auto-memory | `/forget <query>` |
114
+ | `/dream` | Manually run auto-memory consolidation | `/dream` |
115
+ | `/hooks` | Manage Qwen Code hooks | `/hooks`, `/hooks list` |
116
+ | `/reload-plugins` | Reload extension changes (commands, skills, agents, hooks, MCP/LSP servers) from disk | `/reload-plugins` |
117
+ | `/permissions` | Manage permission rules | `/permissions` |
118
+ | `/agents` | Manage subagents | `/agents manage`, `/agents create` |
119
+ | `/arena` | Manage Arena sessions | `/arena start`, `/arena stop`, `/arena status`, `/arena select` (alias `choose`) |
120
+ | `/goal` | Set a goal — keep working until condition met | `/goal <condition>`, `/goal clear` |
121
+ | `/tasks` | List background tasks | `/tasks` |
122
+ | `/workflows` | Inspect workflow runs | `/workflows`, `/workflows <runId>` |
123
+ | `/lsp` | Show LSP server status | `/lsp` |
124
+ | `/trust` | Manage folder trust settings | `/trust` |
117
125
 
118
126
  > [!warning]
119
127
  >
@@ -147,6 +147,87 @@ By default, HTTP hooks cannot target private or link-local IP ranges. In platfor
147
147
  }
148
148
  ```
149
149
 
150
+ **Example: External Judgment Service Adapter**
151
+
152
+ The `remote-security-check` config above expects `http://127.0.0.1:8080/hooks/pre-tool-use` to
153
+ already be running a service that speaks this contract (POST `{tool_name, tool_input, ...}` in,
154
+ `hookSpecificOutput.permissionDecision` out). Here is a minimal, stdlib-only adapter that fills
155
+ in that missing half, wired to one concrete judgment backend so the whole thing is runnable and
156
+ testable end to end rather than a stub. Only the `review()` function is backend-specific — swap
157
+ its body and request/response shape for whichever service you use; everything else (the server,
158
+ the fail-open handling, the hook response shape) stays the same regardless of backend.
159
+
160
+ _Disclosure: the backend used below, [invinoveritas](https://api.babyblueviper.com), is a
161
+ service the author is affiliated with — used here because it was the one that could be
162
+ verified end to end for this example, not an endorsement. Any HTTP service that returns a
163
+ JSON verdict works equally well; only `review()` needs to change._
164
+
165
+ _Data handling: with `matcher: "*"`, the full `tool_input` of **every** tool call is sent to
166
+ the judgment backend — treat that input as sensitive (it may contain file contents, paths, or
167
+ secrets). Narrow the matcher (e.g. to `run_shell_command`) if you only need to judge shell
168
+ commands._
169
+
170
+ ```python
171
+ #!/usr/bin/env python3
172
+ # judgment_hook.py -- run: JUDGMENT_API_KEY=... python3 judgment_hook.py
173
+ import json, os, sys, urllib.request
174
+ from http.server import BaseHTTPRequestHandler, HTTPServer
175
+
176
+ JUDGMENT_API_KEY = os.environ["JUDGMENT_API_KEY"]
177
+ JUDGMENT_URL = os.environ.get("JUDGMENT_URL", "https://api.babyblueviper.com/review")
178
+
179
+ def review(tool_name, tool_input):
180
+ """POST the call to the judgment backend and return its verdict. This is the
181
+ one function to change for a different backend -- request/response shape
182
+ below matches invinoveritas's /review; adapt both to your own backend's
183
+ contract if you swap it out."""
184
+ body = json.dumps({
185
+ "artifact": json.dumps({"tool_name": tool_name, "tool_input": tool_input}),
186
+ "artifact_type": "shell_command" if tool_name in ("run_shell_command", "shell") else "general",
187
+ "context": f"qwen-code PreToolUse: {tool_name}",
188
+ }).encode()
189
+ req = urllib.request.Request(
190
+ JUDGMENT_URL, data=body,
191
+ headers={"Authorization": f"Bearer {JUDGMENT_API_KEY}", "Content-Type": "application/json"},
192
+ )
193
+ # Keep this below the HTTP hook's own timeout (10s in the config above), so a "deny"
194
+ # verdict is always returned before the hook gives up and fails open on its own.
195
+ with urllib.request.urlopen(req, timeout=8) as resp:
196
+ return json.loads(resp.read()) # response includes a "verdict" field: "reject" denies, anything else allows
197
+
198
+ class Handler(BaseHTTPRequestHandler):
199
+ def do_POST(self):
200
+ payload = json.loads(self.rfile.read(int(self.headers.get("Content-Length", 0))) or b"{}")
201
+ tool_name, tool_input = payload.get("tool_name", "unknown"), payload.get("tool_input", {})
202
+ try:
203
+ verdict = review(tool_name, tool_input)
204
+ decision = "deny" if verdict.get("verdict") == "reject" else "allow"
205
+ reason = verdict.get("summary", f"judgment verdict: {verdict.get('verdict')}")
206
+ except Exception as e:
207
+ decision, reason = "allow", "judgment backend unavailable, failing open" # never block on a review-side outage
208
+ print(f"judgment backend unavailable for {tool_name}, failing open: {e}", file=sys.stderr)
209
+ out = {"continue": True, "decision": decision, "hookSpecificOutput": {
210
+ "hookEventName": "PreToolUse", "permissionDecision": decision, "permissionDecisionReason": reason,
211
+ }}
212
+ body = json.dumps(out).encode()
213
+ self.send_response(200)
214
+ self.send_header("Content-Type", "application/json")
215
+ self.send_header("Content-Length", str(len(body)))
216
+ self.end_headers()
217
+ self.wfile.write(body)
218
+ def log_message(self, *a): pass
219
+
220
+ if __name__ == "__main__":
221
+ HTTPServer(("127.0.0.1", 8080), Handler).serve_forever()
222
+ ```
223
+
224
+ Tested live end to end against the real production API above: a genuinely destructive input
225
+ (`{"tool_name": "run_shell_command", "tool_input": {"command": "rm -rf /important_data"}}`)
226
+ returned `permissionDecision: "deny"` with a real explanation; a benign one (`ls -la`) returned
227
+ `"allow"`. Fails open on any network/timeout/malformed-response issue from the judgment
228
+ backend, so an outage never blocks legitimate tool calls — same discipline the `command`-hook
229
+ examples above apply with their own exit codes.
230
+
150
231
  ### Function Hooks
151
232
 
152
233
  Function hooks directly call registered JavaScript/TypeScript functions. They are used internally by the Skill system and are not currently exposed as a public API for end users.
@@ -255,24 +336,25 @@ When `ok` is `false`, Qwen Code will continue working and use the `reason` as co
255
336
 
256
337
  Hooks fire at specific points during a Qwen Code session. Different events support different matchers to filter trigger conditions.
257
338
 
258
- | Event | Triggered When | Matcher Target |
259
- | :------------------- | :---------------------------------------- | :------------------------------------------------------------- |
260
- | `PreToolUse` | Before tool execution | Tool id (`write_file`, `read_file`, `run_shell_command`, etc.) |
261
- | `PostToolUse` | After successful tool execution | Tool id |
262
- | `PostToolUseFailure` | After tool execution fails | Tool id |
263
- | `UserPromptSubmit` | Before supported model invocations | None |
264
- | `SessionStart` | When session starts or resumes | Source (`startup`, `resume`, `clear`, `compact`) |
265
- | `SessionEnd` | When session ends | Reason (`clear`, `logout`, `prompt_input_exit`, etc.) |
266
- | `MessageDisplay` | Repeatedly, as the reply streams | None (always fires) |
267
- | `Stop` | When Claude prepares to conclude response | None (always fires) |
268
- | `SubagentStart` | When subagent starts | Agent type (`Bash`, `Explorer`, `Plan`, etc.) |
269
- | `SubagentStop` | When subagent stops | Agent type |
270
- | `PreCompact` | Before conversation compaction | Trigger (`manual`, `auto`) |
271
- | `Notification` | When notifications are sent | Type (`permission_prompt`, `idle_prompt`, `auth_success`) |
272
- | `PermissionRequest` | When permission dialog is shown | Tool id |
273
- | `PermissionDenied` | When tool permission is denied | Tool id |
274
- | `TodoCreated` | When a new todo item is created | None (always fires) |
275
- | `TodoCompleted` | When a todo item is marked as completed | None (always fires) |
339
+ | Event | Triggered When | Matcher Target |
340
+ | :------------------- | :---------------------------------------------- | :------------------------------------------------------------- |
341
+ | `PreToolUse` | Before tool execution | Tool id (`write_file`, `read_file`, `run_shell_command`, etc.) |
342
+ | `PostToolUse` | After successful tool execution | Tool id |
343
+ | `PostToolUseFailure` | After tool execution fails | Tool id |
344
+ | `UserPromptSubmit` | Before supported model invocations | None |
345
+ | `SessionStart` | When session starts or resumes | Source (`startup`, `resume`, `clear`, `compact`) |
346
+ | `SessionEnd` | When session ends | Reason (`clear`, `logout`, `prompt_input_exit`, etc.) |
347
+ | `SessionDelete` | After an explicitly selected session is deleted | None |
348
+ | `MessageDisplay` | Repeatedly, as the reply streams | None (always fires) |
349
+ | `Stop` | When Claude prepares to conclude response | None (always fires) |
350
+ | `SubagentStart` | When subagent starts | Agent type (`Bash`, `Explorer`, `Plan`, etc.) |
351
+ | `SubagentStop` | When subagent stops | Agent type |
352
+ | `PreCompact` | Before conversation compaction | Trigger (`manual`, `auto`) |
353
+ | `Notification` | When notifications are sent | Type (`permission_prompt`, `idle_prompt`, `auth_success`) |
354
+ | `PermissionRequest` | When permission dialog is shown | Tool id |
355
+ | `PermissionDenied` | When tool permission is denied | Tool id |
356
+ | `TodoCreated` | When a new todo item is created | None (always fires) |
357
+ | `TodoCompleted` | When a todo item is marked as completed | None (always fires) |
276
358
 
277
359
  ### Matcher Patterns
278
360
 
@@ -284,6 +366,7 @@ Hooks fire at specific points during a Qwen Code session. Different events suppo
284
366
  | Subagent Events | `SubagentStart`, `SubagentStop` | ✅ Regex | Agent type: `Bash`, `Explorer`, etc. |
285
367
  | Session Events | `SessionStart` | ✅ Regex | Source: `startup`, `resume`, `clear`, `compact` |
286
368
  | Session Events | `SessionEnd` | ✅ Regex | Reason: `clear`, `logout`, `prompt_input_exit`, etc. |
369
+ | Session Events | `SessionDelete` | ❌ No | N/A |
287
370
  | Notification Events | `Notification` | ✅ Exact match | Type: `permission_prompt`, `idle_prompt`, `auth_success` |
288
371
  | Compact Events | `PreCompact` | ✅ Exact match | Trigger: `manual`, `auto` |
289
372
  | Todo Events | `TodoCreated`, `TodoCompleted` | ❌ No | N/A |
@@ -619,6 +702,20 @@ When sent to the model, injected `additionalContext` is appended as its own mess
619
702
 
620
703
  - Standard hook output fields (typically not used for blocking)
621
704
 
705
+ #### SessionDelete
706
+
707
+ **Purpose**: Runs after an explicitly selected session has been permanently deleted. This event is fire-and-forget: output and failures cannot undo the deletion.
708
+
709
+ **Event-specific fields**:
710
+
711
+ ```json
712
+ {
713
+ "deleted_session_id": "the session that was deleted"
714
+ }
715
+ ```
716
+
717
+ The hook uses the deleting runtime's normal session fields (`session_id`, `transcript_path`, and `cwd`); over ACP, `transcript_path` is empty because the deleting runtime has no transcript of its own. `SessionDelete` currently fires for the interactive `/delete` flow and ACP's explicit `deleteSession` method; daemon REST batch deletion and internal cleanup do not emit it.
718
+
622
719
  #### MessageDisplay
623
720
 
624
721
  **Purpose**: Fires repeatedly as the assistant's reply streams — before `Stop`, which fires once at the end of the turn. Useful for live narration, incremental logging, or any consumer that wants to react to the reply as it's written rather than after the fact. This is a **fire-and-forget** event - hook output and exit codes are ignored.
@@ -95,6 +95,33 @@ Auto-memory files live at `~/.qwen/projects/<project>/memory/`. All branches of
95
95
 
96
96
  Everything saved is plain markdown — you can open, edit, or delete any file at any time.
97
97
 
98
+ #### Pinned memory
99
+
100
+ Put hand-curated documents that automatic memory maintenance should preserve
101
+ under `pinned/` in a managed-memory directory, for example
102
+ `~/.qwen/projects/<project>/memory/pinned/architecture.md` or
103
+ `~/.qwen/memories/pinned/preferences.md`. Use the same frontmatter as other
104
+ memory documents. Valid pinned files are readable by Qwen and are included the
105
+ next time `MEMORY.md` is rebuilt, under the same size and file-count limits as
106
+ other memory documents.
107
+
108
+ Only the top-level `pinned/` directory directly inside a managed-memory root is
109
+ protected; nested directories such as `memory/project/pinned/` are ordinary
110
+ writable memory. Automatic extraction and Dream workers match the reserved
111
+ directory name case-insensitively.
112
+
113
+ Automatic extraction is instructed to leave pinned records and their valid
114
+ index entries unchanged, while Dream is instructed to skip `pinned/` during
115
+ consolidation. Both automatic extraction and forked Dream workers, including
116
+ background cleanup, enforce the pinned-file boundary on their write and edit
117
+ tools, including paths that resolve through a symlink into `pinned/`; their
118
+ existing read-only shell policy blocks command-line deletion. You still control
119
+ these files directly and can remove them with an explicit `/forget` request.
120
+
121
+ > **Note:** The visible `/dream` slash command runs on the main Agent. It
122
+ > receives the same skip instruction, but does not yet receive the forked
123
+ > worker's deterministic per-turn tool gate.
124
+
98
125
  ### Periodic cleanup
99
126
 
100
127
  Qwen periodically goes through its saved memories to remove duplicates and clean up outdated entries. This runs automatically in the background once a day after enough sessions have accumulated. You can trigger it manually with `/dream` if you want it to run now.
@@ -38,6 +38,33 @@ Start typing `/` to autocomplete and browse available Skills alongside their des
38
38
 
39
39
  Skills are stored as directories containing a `SKILL.md` file.
40
40
 
41
+ ### Generate a project Skill with `/learn`
42
+
43
+ Use `/learn` to distill an existing knowledge source into a reusable project
44
+ Skill:
45
+
46
+ ```text
47
+ /learn https://docs.example.com/api
48
+ /learn ~/projects/acme-sdk
49
+ /learn Our deploy process: run migrate, deploy the service, then check health
50
+ ```
51
+
52
+ The command runs as a normal agent turn and creates the result under
53
+ `.qwen/skills/learned-skill-<name>/SKILL.md` with `source: learned` in its
54
+ frontmatter. Review the generated instructions before using or sharing them.
55
+
56
+ `/learn` also accepts local or direct-link `.mp4`, `.webm`, `.mov`, and `.m4v`
57
+ videos. Add text after the path or URL to focus the generated Skill on one part
58
+ of the tutorial:
59
+
60
+ ```text
61
+ /learn ./tutorial.mp4 focus on the deployment workflow
62
+ ```
63
+
64
+ Video learning requires a video-capable model on an OpenAI-compatible provider.
65
+ YouTube page URLs are not direct video input; download the video into the
66
+ workspace and pass its local path instead.
67
+
41
68
  ### Personal Skills
42
69
 
43
70
  Personal Skills are available across all your projects. Store them in `~/.qwen/skills/`:
@@ -68,6 +95,20 @@ Use project Skills for:
68
95
 
69
96
  Project Skills can be checked into git and automatically become available to teammates.
70
97
 
98
+ ### Maintain auto-generated project Skills
99
+
100
+ Qwen Code tracks successful uses of generated project Skills locally, including while new Auto Skill generation is disabled, so re-enabling maintenance cannot mistake a recently used skill for an inactive one. When **Auto Skill** is enabled, it periodically moves inactive generated Skills out of the active library. Only directories named `.qwen/skills/auto-skill-*` whose `SKILL.md` frontmatter contains `source: auto-skill` are managed; personal, extension, bundled, and hand-authored Skills are never selected.
101
+
102
+ - After 30 days without a successful use or `SKILL.md` edit, an auto-skill is marked stale.
103
+ - After 90 days, its complete directory is moved to `.qwen/archived-skills/`. Nothing is permanently deleted.
104
+ - Automatic maintenance runs at most once every 7 days in trusted workspaces. Each newly observed auto-skill gets a full grace period before maintenance begins.
105
+ - A pinned auto-skill is excluded from automatic stale and archive transitions until it is unpinned.
106
+ - Archived directory names remain reserved, and an existing archive destination skips only that collision rather than stopping maintenance for other skills.
107
+
108
+ Use `/curator` to see active, stale, archived, and pinned auto-skills. Run `/curator run --dry-run` to preview a maintenance pass, `/curator run` to apply it immediately, `/curator pin <directory>` or `/curator unpin <directory>` to control per-skill maintenance, or `/curator restore <directory>` to move an archived auto-skill back into the active library.
109
+
110
+ Status and dry-run previews are available in safe mode and untrusted workspaces. Applying maintenance, changing pins, and restoring archived auto-skills require a trusted workspace outside safe mode.
111
+
71
112
  ## Write `SKILL.md`
72
113
 
73
114
  Create a `SKILL.md` file with YAML frontmatter and Markdown content:
@@ -183,6 +224,7 @@ Qwen Code discovers Skills from:
183
224
  - Personal Skills: `~/.qwen/skills/`
184
225
  - Project Skills: `.qwen/skills/`
185
226
  - Extension Skills: Skills provided by installed extensions
227
+ - Bundled Skills: Skills shipped with Qwen Code
186
228
 
187
229
  ### Extension Skills
188
230
 
@@ -310,7 +352,10 @@ code ~/.qwen/skills/my-skill/SKILL.md
310
352
  code .qwen/skills/my-skill/SKILL.md
311
353
  ```
312
354
 
313
- Changes take effect the next time you start Qwen Code. If Qwen Code is already running, restart it to load the updates.
355
+ During a normal session, Qwen Code watches personal and project Skill
356
+ directories. Adding, editing, or removing a Skill refreshes the Skill list and
357
+ invocation state automatically after a short delay. Bare mode does not start
358
+ these watchers, so restart Qwen Code to load Skill changes in that mode.
314
359
 
315
360
  ## Remove a Skill
316
361
 
@@ -29,24 +29,57 @@ Tool responses and pure system reminders do not count as user turns. Regular nam
29
29
 
30
30
  Only `subagent_type: "fork"` accepts `fork_tools`. The array may contain exact canonical tool names, such as `read_file` and `grep_search`, or MCP server patterns such as `mcp__github`. The fork still receives the same model-visible tool declarations as an unrestricted fork, preserving its prompt-cache prefix, but its task prompt identifies the restriction and a call not matched by `fork_tools` is rejected before scheduling or approval.
31
31
 
32
- - Omitting `fork_tools` preserves unrestricted fork execution.
32
+ - Forks never execute `ask_user_question`; when user input is required, they report the blocker to their parent agent.
33
+ - Omitting `fork_tools` allows every other inherited tool.
33
34
  - An empty array rejects every tool call.
34
- - `*` is not accepted; omit `fork_tools` when unrestricted execution is intended.
35
+ - `*` is not accepted; omit `fork_tools` to allow every otherwise-executable inherited tool.
35
36
  - Tool names cannot have surrounding whitespace. Wildcards are accepted only as `mcp__*` or as a trailing MCP tool-prefix pattern such as `mcp__github__read_*`.
36
37
  - `mcp__*` intentionally allows every MCP tool while still denying unlisted built-in tools.
37
38
  - Shell command argument patterns are not supported. Listing `run_shell_command` allows that tool to proceed through its normal permission checks but does not pre-approve any command.
38
39
 
39
40
  This is a per-invocation restriction supplied by the caller. It narrows a child fork's capabilities but is not an administrator-enforced security sandbox because the caller can omit or expand the list.
40
41
 
42
+ ## Reusing Fork Restrictions with `fork_profile`
43
+
44
+ A project can save a named fork restriction in `.qwen/fork-profiles/<name>.md` and select it with `fork_profile`. This is useful when several calls need the same tool boundary and task guidance:
45
+
46
+ ```markdown
47
+ ---
48
+ name: ro-research
49
+ tools:
50
+ - read_file
51
+ - grep_search
52
+ - glob
53
+ - mcp__search__*
54
+ promptHint: |
55
+ Work read-only. Prefer targeted searches and cite file evidence.
56
+ ---
57
+ ```
58
+
59
+ Then launch the fork with:
60
+
61
+ ```text
62
+ agent(description="Research", prompt="Inspect the retry path", subagent_type="fork", fork_profile="ro-research")
63
+ ```
64
+
65
+ - `fork_profile` is valid only for a fork and cannot be combined with `fork_tools` or a named teammate.
66
+ - Profiles are currently project-only. The requested name, filename, and frontmatter `name` must match exactly. The profile must resolve to a regular file inside `.qwen/fork-profiles/` and cannot exceed 64 KiB.
67
+ - `tools` is required and follows the `fork_tools` rules, including empty-array deny-all behavior.
68
+ - `promptHint` is optional and limited to 200 characters. It is escaped and framed as project-supplied guidance after the fork directive and before the authoritative tool restriction; it does not change the inherited system instruction or model-visible tool declarations. Profile files are frontmatter-only, so non-blank Markdown after the closing `---` is rejected instead of silently ignored.
69
+ - The profile is resolved once at launch. A retained fork continues with the resolved tool snapshot even if the project file later changes.
70
+ - Project fork profiles are unavailable in safe mode and bare mode, which disable local customizations.
71
+
72
+ Like `fork_tools`, a fork profile is a caller-selected restriction rather than an administrator sandbox. Its optional prompt guidance is project-controlled content.
73
+
41
74
  ### How Fork Differs from Named Subagents
42
75
 
43
- | | Named Subagent | Fork Subagent |
44
- | ------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
45
- | Context | Starts fresh with no parent conversation history | Inherits all parent history by default; `fork_turns` can select a bounded recent window |
46
- | System prompt | Uses its own configured prompt | Uses parent's exact system prompt (for cache sharing) |
47
- | Tools | Configured declaration set | Keeps the parent-derived declaration set; `fork_tools` can independently narrow execution without changing that set |
48
- | Execution | Background by default; supports an explicit foreground opt-out | Always detached; parent continues immediately |
49
- | Use case | Specialized tasks (testing, docs) | Parallel tasks that need the current context |
76
+ | | Named Subagent | Fork Subagent |
77
+ | ------------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
78
+ | Context | Starts fresh with no parent conversation history | Inherits all parent history by default; `fork_turns` can select a bounded recent window |
79
+ | System prompt | Uses its own configured prompt | Uses parent's exact system prompt (for cache sharing) |
80
+ | Tools | Configured declaration set without interactive question tools | Keeps the parent-derived declaration set for caching; execution always rejects `ask_user_question`, and `fork_tools` or `fork_profile` can independently narrow it without changing that declaration |
81
+ | Execution | Background by default; supports an explicit foreground opt-out | Always detached; parent continues immediately |
82
+ | Use case | Specialized tasks (testing, docs) | Parallel tasks that need the current context |
50
83
 
51
84
  ### When Fork is Used
52
85
 
@@ -1,6 +1,6 @@
1
1
  # Tool-Use Summaries
2
2
 
3
- Qwen Code can generate a short, git-commit-subject-style label after each tool batch completes, summarizing what the batch accomplished. The label appears inline: for a completed tool group in the main view it replaces the generic `Tool × N` header; when the group is force-expanded (in the `Ctrl+O` full-detail transcript, or for error / user-initiated batches) it appears as a dim `● <label>` line below the group.
3
+ Qwen Code can generate a short, git-commit-subject-style label after each tool batch completes, summarizing what the batch accomplished. The label appears inline: for a completed tool group in the main view it replaces the generic `Tool × N` header; when the group is force-expanded (in `Ctrl+O` expanded detail mode, or for error / user-initiated batches) it appears as a dim `● <label>` line below the group.
4
4
 
5
5
  This is a UX aid for parallel tool calls: when the model fans out into several `Read` + `Grep` + `Bash` calls at once, the summary tells you the intent at a glance instead of forcing you to scan the tool list.
6
6
 
@@ -18,11 +18,11 @@ In the main transcript, a completed collapsible batch folds into a single labele
18
18
  ╰──────────────────────────────────────────────╯
19
19
  ```
20
20
 
21
- The full per-tool output is a keystroke away: press `Ctrl+O` to open the full-detail transcript.
21
+ The full per-tool output is a keystroke away: press `Ctrl+O` to toggle expanded detail mode.
22
22
 
23
- ### Full-detail transcript (`Ctrl+O`) and force-expanded groups
23
+ ### Expanded detail mode (`Ctrl+O`) and force-expanded groups
24
24
 
25
- When a group is force-expanded — in the `Ctrl+O` transcript, or for error / user-initiated batches in the main view — each tool renders individually and the summary appears as a dim badge line below the group:
25
+ When a group is force-expanded — in `Ctrl+O` expanded detail mode, or for error / user-initiated batches in the main view — each tool renders individually and the summary appears as a dim badge line below the group:
26
26
 
27
27
  ```
28
28
  ╭──────────────────────────────────────────────╮
@@ -122,7 +122,7 @@ These settings can be configured in `settings.json`:
122
122
 
123
123
  Three points that tend to trip up a first read of this feature:
124
124
 
125
- 1. **One generation per batch, shared by both display modes.** The fast-model call happens exactly once in `handleCompletedTools` when a tool batch finalizes. Opening the `Ctrl+O` transcript afterwards does **not** trigger a new call — both the main view and the full-detail transcript read from the same `tool_use_summary` history entry that was captured the first time.
125
+ 1. **One generation per batch, shared by both display modes.** The fast-model call happens exactly once in `handleCompletedTools` when a tool batch finalizes. Toggling `Ctrl+O` expanded detail mode afterwards does **not** trigger a new call — both the collapsed and the expanded rendering read from the same `tool_use_summary` history entry that was captured the first time.
126
126
  2. **No backfill on toggle or on session resume.** A `tool_group` that completed before the feature was enabled (or before you flipped the setting on, or in a resumed session — `ChatRecordingService` does not persist summary entries) will never get a label. There is no "sweep existing history" pass. If you turn this setting on mid-session, only _future_ batches will show a label; older groups keep the default rendering with no indicator that a label is missing.
127
127
  3. **Main-agent batches only.** The trigger lives in the main session's turn loop (`useGeminiStream`), so:
128
128
  - ✅ Shell, MCP, file operations, and the `Task` / subagent tool _call itself_ (as it appears in the main batch) are summarized.
@@ -132,7 +132,7 @@ Three points that tend to trip up a first read of this feature:
132
132
 
133
133
  ## Display behavior
134
134
 
135
- The main view already folds a completed collapsible batch into a single labeled row (`✓ Read 4 text files`) — the summary does the work of the old per-tool list. For full per-tool detail, press `Ctrl+O` to open the full-detail transcript, where each tool renders individually with the summary as a trailing `● <label>` line below the group.
135
+ The main view already folds a completed collapsible batch into a single labeled row (`✓ Read 4 text files`) — the summary does the work of the old per-tool list. For full per-tool detail, press `Ctrl+O` to toggle expanded detail mode, where each tool renders individually with the summary as a trailing `● <label>` line below the group.
136
136
 
137
137
  ```json
138
138
  {
@@ -170,5 +170,5 @@ If you do not want the extra cost, turn the feature off via `experimental.emitTo
170
170
 
171
171
  ## Related
172
172
 
173
- - [Full-detail transcript](../configuration/settings#ui) — press `Ctrl+O` to open the frozen full-detail transcript; the summary replaces the generic tool-group header for completed groups in the main view.
173
+ - [Expanded detail mode](../configuration/settings#ui) — press `Ctrl+O` to expand all tool outputs inline; the summary replaces the generic tool-group header for completed groups in the main view.
174
174
  - [Followup Suggestions](./followup-suggestions) — another fast-model-driven UX enhancement that shares the same `fastModel` setting.