@qwen-code/qwen-code 0.19.4 → 0.19.5-nightly.20260703.b16baf1ff

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 (234) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +22 -6
  2. package/bundled/qc-helper/docs/features/commands.md +41 -34
  3. package/bundled/qc-helper/docs/features/headless.md +19 -18
  4. package/bundled/qc-helper/docs/qwen-serve.md +34 -0
  5. package/bundled/qc-helper/docs/support/troubleshooting.md +5 -0
  6. package/chunks/{MaxSizedBox-ERTNFI22.js → MaxSizedBox-42KZ5OFE.js} +12 -11
  7. package/chunks/{StandaloneSessionPicker-Y5NGRLRY.js → StandaloneSessionPicker-G4VTICMM.js} +23 -22
  8. package/chunks/{acpAgent-UMN6OYTR.js → acpAgent-6O25PA3M.js} +82 -78
  9. package/chunks/{agent-56DZU4ZU.js → agent-SNVTRNV7.js} +9 -8
  10. package/chunks/{agent-headless-SR7N2IJG.js → agent-headless-LNKVTSBX.js} +9 -8
  11. package/chunks/{anthropicContentGenerator-5OZFO6WQ.js → anthropicContentGenerator-WL3LJOUB.js} +99 -23
  12. package/chunks/{artifact-tool-JVZMHA4B.js → artifact-tool-W76WC2JX.js} +1 -1
  13. package/chunks/{askUserQuestion-CMJZ2F3D.js → askUserQuestion-J3P6TH3V.js} +1 -1
  14. package/chunks/{bridge-AUHNFOUS.js → bridge-AZZAYKI2.js} +15 -13
  15. package/chunks/{ca-RYOETBUW.js → ca-HCMB2I54.js} +1 -0
  16. package/chunks/channel-worker-supervisor-C2J3TIOV.js +665 -0
  17. package/chunks/{chunk-W2ZOAX7F.js → chunk-26UO4PLG.js} +3 -3
  18. package/chunks/chunk-2Z43HUXT.js +99 -0
  19. package/chunks/{chunk-VKGG724L.js → chunk-3GCPLNVF.js} +11 -10
  20. package/chunks/chunk-3RW4AZJV.js +5063 -0
  21. package/chunks/{chunk-6AQR7732.js → chunk-46IAL3RB.js} +1 -1
  22. package/chunks/{chunk-QAFQLTXG.js → chunk-4JWM2UGC.js} +1 -1
  23. package/chunks/{chunk-C2IHHGBZ.js → chunk-4PGQKUIV.js} +10 -10
  24. package/chunks/{chunk-PPFWEV7G.js → chunk-4RQIB5UZ.js} +62 -62
  25. package/chunks/{chunk-L7VH7HQA.js → chunk-4UEWG5AS.js} +29 -4
  26. package/chunks/{chunk-J3F7X3LW.js → chunk-5B2WNM6V.js} +1 -1
  27. package/chunks/{chunk-XCUFHOAD.js → chunk-6NHUWPNL.js} +1 -1
  28. package/chunks/{chunk-HI55Z6PR.js → chunk-7DMQRPC7.js} +401 -58
  29. package/chunks/{chunk-Q7VHIRDD.js → chunk-7K4G2H2H.js} +1 -1
  30. package/chunks/{chunk-W6X4FGWX.js → chunk-7XS7CMSU.js} +1 -1
  31. package/chunks/{chunk-SFN4TEHY.js → chunk-APTOAKV5.js} +4 -4
  32. package/chunks/{chunk-BNJLLAQ7.js → chunk-AYUVPH6L.js} +1 -1
  33. package/chunks/chunk-BPFJQGY7.js +193 -0
  34. package/chunks/{chunk-CUGEBAKG.js → chunk-C47IJLUT.js} +1 -1
  35. package/chunks/chunk-CXBG27SF.js +35 -0
  36. package/chunks/{chunk-UQFP2FEF.js → chunk-DG573EOO.js} +1 -1
  37. package/chunks/{chunk-ND25GXEU.js → chunk-DLJKEPXB.js} +14 -6
  38. package/chunks/{chunk-MNDTD5E5.js → chunk-DNJ2KHWN.js} +4 -4
  39. package/chunks/{chunk-KKQWC6WS.js → chunk-DNV4FSN5.js} +1 -1
  40. package/chunks/chunk-DOYHOG47.js +949 -0
  41. package/chunks/chunk-E2K45AJ7.js +5448 -0
  42. package/chunks/{chunk-75X2VLSH.js → chunk-F26BNXI2.js} +26 -5
  43. package/chunks/{chunk-6TLY5W3B.js → chunk-FB6LGUF4.js} +127 -23
  44. package/chunks/{chunk-UT5JU5DJ.js → chunk-FEPEMQR4.js} +42 -15
  45. package/chunks/{chunk-2X2JUE47.js → chunk-FKHE7ZNF.js} +2 -2
  46. package/chunks/{chunk-YBDZ63KI.js → chunk-FVRLDQ7T.js} +8 -4
  47. package/chunks/{chunk-DQ74W65K.js → chunk-HCLTQ3PV.js} +47 -20
  48. package/chunks/{chunk-BQNJBEUA.js → chunk-KFO6YNQT.js} +16 -2
  49. package/chunks/{chunk-UQYOMM6J.js → chunk-L4CYPEA7.js} +10 -10
  50. package/chunks/{chunk-MEQWZGK5.js → chunk-L7OJ3ZO3.js} +1 -1
  51. package/chunks/chunk-LOEYAC6N.js +86 -0
  52. package/chunks/{chunk-4VZH35PN.js → chunk-MTNTVOJR.js} +2 -0
  53. package/chunks/{chunk-6CIIP6OE.js → chunk-O2EZ4VRP.js} +3 -3
  54. package/chunks/{chunk-ZJP5T7IA.js → chunk-ODPWORQZ.js} +1 -1
  55. package/chunks/{chunk-TTFNVEO5.js → chunk-P5GH4DTN.js} +3 -3
  56. package/chunks/{chunk-7KPI4LAI.js → chunk-QURP4S5U.js} +3 -3
  57. package/chunks/{chunk-UANCYOOQ.js → chunk-R6RI2HIC.js} +1 -1
  58. package/chunks/{chunk-FYKX6XOT.js → chunk-RBLDOR7U.js} +1 -1
  59. package/chunks/{chunk-EDAGQADF.js → chunk-S6RLAIUR.js} +2 -0
  60. package/chunks/chunk-SIUQ3YYX.js +78 -0
  61. package/chunks/{chunk-GICCHL2Q.js → chunk-STP6AYKH.js} +1 -1
  62. package/chunks/{chunk-HJDF3ZVU.js → chunk-UEGNXWAX.js} +6 -6
  63. package/chunks/{chunk-PIYV6COW.js → chunk-UTWYG2WA.js} +1 -1
  64. package/chunks/{chunk-QMIND2AS.js → chunk-UY2TCIZS.js} +15 -1
  65. package/chunks/{chunk-CG7SVARK.js → chunk-VDIZBM46.js} +2 -2
  66. package/chunks/{chunk-73H73ASU.js → chunk-VJSWLYUL.js} +1 -1
  67. package/chunks/{chunk-FNLXLI4I.js → chunk-WMLQKZ64.js} +2 -2
  68. package/chunks/{chunk-KVPFPC4J.js → chunk-WSAAEPPQ.js} +14 -14
  69. package/chunks/{chunk-BFG6OZN7.js → chunk-WWOVV2PW.js} +3742 -2737
  70. package/chunks/{chunk-MKHC4BYZ.js → chunk-XAVV2JAM.js} +21 -5
  71. package/chunks/{chunk-ZXCVPMIK.js → chunk-XR7W5VRL.js} +167 -54
  72. package/chunks/{chunk-CS5XYDBO.js → chunk-XS7IHJ63.js} +5 -5
  73. package/chunks/{chunk-B7KGXIPZ.js → chunk-YCU7QV7Q.js} +11 -4
  74. package/chunks/{chunk-OJCECIJA.js → chunk-YHTNWGRR.js} +5 -4
  75. package/chunks/{chunk-7VPC7D7O.js → chunk-YLQSGKAN.js} +2 -2
  76. package/chunks/{chunk-OAFUMTWW.js → chunk-Z75MFQFL.js} +2 -2
  77. package/chunks/{chunk-HRZB5CSC.js → chunk-ZRHHQFV4.js} +1 -1
  78. package/chunks/{computer-use-VWN5HH6A.js → computer-use-UHZAYYGO.js} +9 -8
  79. package/chunks/{contextCommand-DFFG5KDJ.js → contextCommand-X4WOJ2L4.js} +11 -10
  80. package/chunks/{cron-create-CSSWJ67I.js → cron-create-6YTCOX6P.js} +1 -1
  81. package/chunks/{cron-delete-E56CFQ7A.js → cron-delete-E3NIFSUK.js} +1 -1
  82. package/chunks/{cron-list-BKSINY6Y.js → cron-list-Q64MNQNE.js} +1 -1
  83. package/chunks/{daemon-5T6IHWJV.js → daemon-EEB2RYOL.js} +23 -0
  84. package/chunks/{daemon-status-provider-V5UY7O7J.js → daemon-status-provider-YXWNGOAF.js} +18 -16
  85. package/chunks/{de-HB5NJXGB.js → de-PLLFDERI.js} +1 -0
  86. package/chunks/{dist-TAVAGZU6.js → dist-AP5V4WYU.js} +54 -14
  87. package/chunks/{dist-XBOVZ3R5.js → dist-IZP2VV4C.js} +156 -57
  88. package/chunks/{dist-B7SSDVWT.js → dist-SNXOUPYS.js} +201 -7
  89. package/chunks/{dist-2HDL5SHQ.js → dist-X4ZDE726.js} +43 -8
  90. package/chunks/{dist-BL3SL665.js → dist-Z57Q4YF5.js} +1 -1
  91. package/chunks/{earlyInputCapture-VVYU4FDO.js → earlyInputCapture-3HUGMAFL.js} +9 -8
  92. package/chunks/{edit-F35PTMBA.js → edit-QDKRNFZK.js} +14 -17
  93. package/chunks/{en-FZREZFPO.js → en-M4EBUBNU.js} +2 -0
  94. package/chunks/{enter-worktree-3DIW7EGJ.js → enter-worktree-ODWIPMOP.js} +9 -8
  95. package/chunks/{enterPlanMode-QNXT77KP.js → enterPlanMode-XROL6G5C.js} +11 -10
  96. package/chunks/{errors-M53YG76R.js → errors-RCPBWFTG.js} +11 -10
  97. package/chunks/{exit-worktree-BSDWNWHZ.js → exit-worktree-BIU7P4TR.js} +9 -8
  98. package/chunks/{exitPlanMode-EL7AY327.js → exitPlanMode-LWZHZ7CF.js} +107 -12
  99. package/chunks/{fast-path-DUCSMUFW.js → fast-path-7S4NR2WI.js} +6 -4
  100. package/chunks/{fast-path-settings-UQLRFDQP.js → fast-path-settings-RCRXH2JG.js} +2 -2
  101. package/chunks/{fr-XY3NQFCM.js → fr-MBMNQSQ6.js} +1 -0
  102. package/chunks/{gemini-F3IERB37.js → gemini-W7CZCFFV.js} +75 -67
  103. package/chunks/{geminiContentGenerator-6OULAKFQ.js → geminiContentGenerator-MWZWJAWR.js} +39 -3
  104. package/chunks/{glob-ZMLFTD4T.js → glob-GZ4LUOQT.js} +9 -8
  105. package/chunks/{grep-H5X66EI7.js → grep-BZ34WAQJ.js} +9 -8
  106. package/chunks/{initializer-LEOT2OLH.js → initializer-W4EUD3H7.js} +14 -13
  107. package/chunks/{ja-J7YAG7SA.js → ja-HFV5QCHR.js} +1 -0
  108. package/chunks/{list-M3DKXML6.js → list-S325XJ2Y.js} +16 -15
  109. package/chunks/{loadedSettingsAdapter-OKMQFGGG.js → loadedSettingsAdapter-QP3XBMQI.js} +14 -13
  110. package/chunks/{loop-wakeup-FPBAVVPR.js → loop-wakeup-G2EHBRGR.js} +2 -2
  111. package/chunks/{ls-UGWQXPTY.js → ls-IDHUVSAG.js} +1 -1
  112. package/chunks/{lsp-24WV7NXB.js → lsp-FSRYXGFT.js} +1 -1
  113. package/chunks/mcp-LRKXM6OS.js +66 -0
  114. package/chunks/{monitor-ARL5P45R.js → monitor-7C33CWA5.js} +11 -10
  115. package/chunks/{nonInteractiveCli-NUVLF3YR.js → nonInteractiveCli-FPZS7ROR.js} +46 -43
  116. package/chunks/{notebook-edit-ANTZ2DDY.js → notebook-edit-ZXQ25NWU.js} +14 -16
  117. package/chunks/{openaiContentGenerator-TFGMKGHN.js → openaiContentGenerator-FUQ7GNK6.js} +4 -4
  118. package/chunks/{pidfile-AWTL4C63.js → pidfile-NPZV5ZIA.js} +10 -9
  119. package/chunks/{pt-6RTAA6SS.js → pt-2THT3YHA.js} +1 -0
  120. package/chunks/{qwenContentGenerator-6QWAYTWS.js → qwenContentGenerator-LNEWYA52.js} +10 -9
  121. package/chunks/{read-file-EJY73XQ3.js → read-file-G6GBNSM3.js} +3 -3
  122. package/chunks/{read-mcp-resource-NCBTPP7X.js → read-mcp-resource-PIJF24RO.js} +1 -1
  123. package/chunks/{ripGrep-HC4SA6CQ.js → ripGrep-IGOC7PVL.js} +9 -8
  124. package/chunks/{ru-AUBGJ2C4.js → ru-Z67YJHBG.js} +1 -0
  125. package/chunks/{run-qwen-serve-AGLZ642J.js → run-qwen-serve-AAA53KS4.js} +131 -38
  126. package/chunks/{scheduler-TURO7NGY.js → scheduler-SPGJ7ILO.js} +9 -8
  127. package/chunks/{send-message-3S2NYS3O.js → send-message-33PYFMCT.js} +15 -1
  128. package/chunks/{serve-5DAMOIDW.js → serve-37UIHUYP.js} +15 -14
  129. package/chunks/{server-4AGEK2HC.js → server-MFMOYMEB.js} +187 -173
  130. package/chunks/{session-7ZOQUC4Y.js → session-XRY2CG4Z.js} +47 -44
  131. package/chunks/{settings-DR4V6L5Y.js → settings-X5GXXGKH.js} +13 -12
  132. package/chunks/{shell-H5WFKUXH.js → shell-E5HOWJMT.js} +9 -8
  133. package/chunks/{skill-ANHU5ZCR.js → skill-FELDZMWO.js} +3 -3
  134. package/chunks/{spawnChannel-VN5LJV7Z.js → spawnChannel-XLTVHAT6.js} +12 -10
  135. package/chunks/{src-OVZLTVVM.js → src-ZWPLTWTV.js} +21 -10
  136. package/chunks/{startInteractiveUI-OA22V32P.js → startInteractiveUI-GO6J3SJ7.js} +2609 -2458
  137. package/chunks/{syntheticOutput-SV7GBHZ5.js → syntheticOutput-YOSWIHDJ.js} +2 -2
  138. package/chunks/{task-create-W2H2UJCH.js → task-create-NHS2NGB3.js} +3 -2
  139. package/chunks/{task-list-THBOPV4G.js → task-list-5UIB564R.js} +1 -1
  140. package/chunks/{task-stop-33FVCNCJ.js → task-stop-HGXZ2VZ3.js} +1 -1
  141. package/chunks/{task-update-LVFQLXEI.js → task-update-IYYWUILG.js} +34 -2
  142. package/chunks/{team-create-OYL5CAQO.js → team-create-WWMKZ3UO.js} +9 -8
  143. package/chunks/{team-delete-NTUQ25UY.js → team-delete-FEKJCU4P.js} +1 -1
  144. package/chunks/team-plan-approval-CUNEZJOV.js +202 -0
  145. package/chunks/{theme-manager-XCMPF2SI.js → theme-manager-LRBEA5ID.js} +9 -8
  146. package/chunks/{todoWrite-SEPO2RI3.js → todoWrite-TKMVZ2HT.js} +1 -1
  147. package/chunks/{tool-search-YXW55X6Z.js → tool-search-L57ZRBJF.js} +8 -6
  148. package/chunks/{trustedFolders-TEPGM5YL.js → trustedFolders-DYAOFXN2.js} +10 -9
  149. package/chunks/{validateNonInterActiveAuth-OQIS7WUE.js → validateNonInterActiveAuth-AB4C2FLG.js} +43 -40
  150. package/chunks/version-2A66AIB2.js +10 -0
  151. package/chunks/{web-fetch-OE7LHURA.js → web-fetch-J4PIW36Q.js} +2 -2
  152. package/chunks/{workflow-RTUWORAP.js → workflow-H7YLGTBI.js} +12 -11
  153. package/chunks/{workspace-providers-status-DM2XANVB.js → workspace-providers-status-UUIBOTKI.js} +16 -15
  154. package/chunks/{workspace-service-VKBI2KZD.js → workspace-service-FATHYK5C.js} +21 -20
  155. package/chunks/workspace-skills-status-KIC3KYPR.js +62 -0
  156. package/chunks/{write-file-WGALQ53L.js → write-file-ETGUMYAK.js} +14 -18
  157. package/chunks/yargs-B64EYTCF.js +10 -0
  158. package/chunks/{zh-V3B4TFWL.js → zh-SLZNSSZB.js} +2 -0
  159. package/chunks/{zh-TW-6GIKXEAN.js → zh-TW-P53C2SL5.js} +2 -0
  160. package/cli-entry.js +81 -8
  161. package/cli.js +348 -55
  162. package/locales/ca.js +2 -0
  163. package/locales/de.js +2 -0
  164. package/locales/en.js +3 -0
  165. package/locales/fr.js +2 -0
  166. package/locales/ja.js +2 -0
  167. package/locales/pt.js +2 -0
  168. package/locales/ru.js +2 -0
  169. package/locales/zh-TW.js +3 -0
  170. package/locales/zh.js +3 -0
  171. package/node_modules/@qwen-code/audio-capture/package.json +1 -1
  172. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  173. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  174. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  175. package/package.json +6 -15
  176. package/web-shell/assets/{arc-Det5Ccum.js → arc-QjIJgYzv.js} +1 -1
  177. package/web-shell/assets/{architectureDiagram-3BPJPVTR-DqNWVFpl.js → architectureDiagram-3BPJPVTR-DJkZ9KoB.js} +1 -1
  178. package/web-shell/assets/{blockDiagram-GPEHLZMM-CYl7tYBi.js → blockDiagram-GPEHLZMM-BlNeekUB.js} +1 -1
  179. package/web-shell/assets/{c4Diagram-AAUBKEIU-DaAEi0NQ.js → c4Diagram-AAUBKEIU-B6FDrE3D.js} +1 -1
  180. package/web-shell/assets/channel-M6R-XOoS.js +1 -0
  181. package/web-shell/assets/{chunk-2J33WTMH-Df2CDEE2.js → chunk-2J33WTMH-CZO5-3og.js} +1 -1
  182. package/web-shell/assets/{chunk-4BX2VUAB-DNBFcyL2.js → chunk-4BX2VUAB-CZ2VJPFe.js} +1 -1
  183. package/web-shell/assets/{chunk-55IACEB6-BKjF-0HI.js → chunk-55IACEB6-3zVP6pGF.js} +1 -1
  184. package/web-shell/assets/{chunk-727SXJPM-DYwAwfIM.js → chunk-727SXJPM-omuP8Zhh.js} +1 -1
  185. package/web-shell/assets/{chunk-AQP2D5EJ-C6FswLqy.js → chunk-AQP2D5EJ-BK6Ivmyv.js} +1 -1
  186. package/web-shell/assets/{chunk-FMBD7UC4-DRWAcZSY.js → chunk-FMBD7UC4-NLjjxV0s.js} +1 -1
  187. package/web-shell/assets/{chunk-ND2GUHAM-AoL16mNR.js → chunk-ND2GUHAM-Dc0JTV8t.js} +1 -1
  188. package/web-shell/assets/{chunk-QZHKN3VN-a8PtLMck.js → chunk-QZHKN3VN-ZYp-8jN-.js} +1 -1
  189. package/web-shell/assets/classDiagram-4FO5ZUOK-B7rcL2Jc.js +1 -0
  190. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B7rcL2Jc.js +1 -0
  191. package/web-shell/assets/{cose-bilkent-S5V4N54A-C4Aeu5qf.js → cose-bilkent-S5V4N54A-BNu1jqy7.js} +1 -1
  192. package/web-shell/assets/{dagre-BM42HDAG-BOulamjo.js → dagre-BM42HDAG-0AHvPm2v.js} +1 -1
  193. package/web-shell/assets/{diagram-2AECGRRQ-D1wt2ykO.js → diagram-2AECGRRQ-BJsDQdp0.js} +1 -1
  194. package/web-shell/assets/{diagram-5GNKFQAL-BRseus-O.js → diagram-5GNKFQAL-C1gNnoxj.js} +1 -1
  195. package/web-shell/assets/{diagram-KO2AKTUF-XSMkNzpZ.js → diagram-KO2AKTUF-FmgehSoq.js} +1 -1
  196. package/web-shell/assets/{diagram-LMA3HP47-21KNLqoi.js → diagram-LMA3HP47-i7_13R2F.js} +1 -1
  197. package/web-shell/assets/{diagram-OG6HWLK6-DnUI8F5G.js → diagram-OG6HWLK6-DkUUR1x-.js} +1 -1
  198. package/web-shell/assets/{erDiagram-TEJ5UH35-BVSOMuM2.js → erDiagram-TEJ5UH35-BcwJzw0n.js} +1 -1
  199. package/web-shell/assets/{flowDiagram-I6XJVG4X-fYtDPJsW.js → flowDiagram-I6XJVG4X-CCPgwkQS.js} +1 -1
  200. package/web-shell/assets/{ganttDiagram-6RSMTGT7-CmRXosW_.js → ganttDiagram-6RSMTGT7-C3g0sliF.js} +1 -1
  201. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DPrmySxO.js → gitGraphDiagram-PVQCEYII-DLt4J_oG.js} +1 -1
  202. package/web-shell/assets/index-9qfvU0_r.css +5 -0
  203. package/web-shell/assets/index-DasTT8n6.js +717 -0
  204. package/web-shell/assets/{infoDiagram-5YYISTIA-x3VbEuCV.js → infoDiagram-5YYISTIA-DMO0nW8F.js} +1 -1
  205. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-SmitHRMC.js → ishikawaDiagram-YF4QCWOH-qSN9LjC5.js} +1 -1
  206. package/web-shell/assets/{journeyDiagram-JHISSGLW-BxvA551S.js → journeyDiagram-JHISSGLW-CQZH-jC2.js} +1 -1
  207. package/web-shell/assets/{kanban-definition-UN3LZRKU-DNHC16jY.js → kanban-definition-UN3LZRKU-Cu6qk5En.js} +1 -1
  208. package/web-shell/assets/{linear-CQ6irBL9.js → linear-Dpp4BWJF.js} +1 -1
  209. package/web-shell/assets/{mermaid.core-DtB6NO1e.js → mermaid.core-DDAcmZsz.js} +5 -5
  210. package/web-shell/assets/{mindmap-definition-RKZ34NQL-QKMAgV2v.js → mindmap-definition-RKZ34NQL-G3JXxnUU.js} +1 -1
  211. package/web-shell/assets/{pieDiagram-4H26LBE5-bvb6dGn6.js → pieDiagram-4H26LBE5-ABQwHraX.js} +1 -1
  212. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DLgdlG4D.js → quadrantDiagram-W4KKPZXB-BUWZV-ho.js} +1 -1
  213. package/web-shell/assets/{requirementDiagram-4Y6WPE33-2M9YH4GF.js → requirementDiagram-4Y6WPE33-XHg5n00A.js} +1 -1
  214. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DzwfclTH.js → sankeyDiagram-5OEKKPKP-Bwzw0RtM.js} +1 -1
  215. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-BvPmTuy2.js → sequenceDiagram-3UESZ5HK-CGYLtnFV.js} +1 -1
  216. package/web-shell/assets/{stateDiagram-AJRCARHV-BjwUmrJF.js → stateDiagram-AJRCARHV-BG1UhKch.js} +1 -1
  217. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CSG8MpoN.js +1 -0
  218. package/web-shell/assets/{timeline-definition-PNZ67QCA-CXzS6qqz.js → timeline-definition-PNZ67QCA-B_tY-Dyz.js} +1 -1
  219. package/web-shell/assets/{vennDiagram-CIIHVFJN-yRSolF5B.js → vennDiagram-CIIHVFJN-Crp_Rw_L.js} +1 -1
  220. package/web-shell/assets/{wardley-L42UT6IY-ClLJjHPG.js → wardley-L42UT6IY-DR27pFXX.js} +1 -1
  221. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-VIa6t2p2.js → wardleyDiagram-YWT4CUSO-BM_CRFgm.js} +1 -1
  222. package/web-shell/assets/{xychartDiagram-2RQKCTM6-CtmrkezW.js → xychartDiagram-2RQKCTM6-DO2Z2lWl.js} +1 -1
  223. package/web-shell/index.html +28 -3
  224. package/chunks/channel-worker-supervisor-A74FV522.js +0 -308
  225. package/chunks/chunk-MVZXZWGT.js +0 -11323
  226. package/chunks/chunk-S5EQPDTM.js +0 -91
  227. package/patches/chrome-devtools-mcp+1.4.0.patch +0 -31
  228. package/postinstall.js +0 -50
  229. package/web-shell/assets/channel-Bm0bFauD.js +0 -1
  230. package/web-shell/assets/classDiagram-4FO5ZUOK--NgUfb55.js +0 -1
  231. package/web-shell/assets/classDiagram-v2-Q7XG4LA2--NgUfb55.js +0 -1
  232. package/web-shell/assets/index-BpKnmyFV.js +0 -717
  233. package/web-shell/assets/index-fLrtxpOG.css +0 -5
  234. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C4L8zXeL.js +0 -1
@@ -155,6 +155,8 @@ Settings are organized into categories. Most settings should be placed within th
155
155
  | Setting | Type | Description | Default |
156
156
  | -------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
157
157
  | `model.name` | string | The Qwen model to use for conversations. | `undefined` |
158
+ | `model.baseUrl` | string | Persisted automatically by the model picker to disambiguate when multiple `modelProviders` entries share the same model id. Not intended to be set by hand — use the `/model` picker or a `modelProviders` entry instead; a stale hand-edited value can silently route requests to a different same-id provider. | `undefined` |
159
+ | `model.sessionTokenLimit` | number | Maximum recorded prompt token count allowed before sending the next message. `-1` means unlimited; `0` is also treated as unlimited (unlike `model.maxToolCalls`, where `0` disallows all calls). When the recorded prompt count exceeds the limit, the next send is dropped (the session is not aborted). | `-1` |
158
160
  | `model.maxSessionTurns` | number | Maximum number of user/model/tool turns to keep in a session. -1 means unlimited. | `-1` |
159
161
  | `model.maxWallTimeSeconds` | number | Wall-clock budget for headless / unattended runs, in seconds. `-1` means unlimited. Overridable per-invocation via `--max-wall-time`, which requires a positive duration (`90`, `30s`, `5m`, `1h`, `1.5h`); the minimum is 1 second — sub-second values (`500ms`, `0.5`) are rejected as typos. Omit the flag to fall back to this setting. Aborts with exit code 55 when exceeded. | `-1` |
160
162
  | `model.maxToolCalls` | number | Cumulative tool-call budget for a run (counts every executed tool, success or failure; `structured_output` under `--json-schema` is exempt). `-1` means unlimited; `0` means "no tool calls allowed". Capped at 1,000,000 to catch typos. Overridable via `--max-tool-calls`. Aborts with exit code 55 when exceeded. | `-1` |
@@ -242,6 +244,18 @@ The `extra_body` field allows you to add custom parameters to the request body s
242
244
  | ----------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
243
245
  | `fastModel` | string | Model used for generating [prompt suggestions](../features/followup-suggestions) and speculative execution. Leave empty to use the main model. A smaller/faster model (e.g., `qwen3-coder-flash`) reduces latency and cost. Can also be set via `/model --fast`. | `""` |
244
246
 
247
+ #### visionModel
248
+
249
+ | Setting | Type | Description | Default |
250
+ | ------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
251
+ | `visionModel` | string | Image-capable model used as the vision bridge: when a text-only main model receives an image, it is transcribed by this model first. Leave empty to auto-pick a same-provider vision model. Can also be set via `/model --vision`. | `""` |
252
+
253
+ #### voiceModel
254
+
255
+ | Setting | Type | Description | Default |
256
+ | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
257
+ | `voiceModel` | string | Model used for voice transcription. Leave empty to keep voice dictation disabled until a voice model is selected. Can also be set via `/model --voice`. | `""` |
258
+
245
259
  #### context
246
260
 
247
261
  | Setting | Type | Description | Default |
@@ -457,12 +471,14 @@ LSP server configuration is done through `.lsp.json` files in your project root
457
471
 
458
472
  #### security
459
473
 
460
- | Setting | Type | Description | Default |
461
- | ------------------------------ | ------- | ------------------------------------------------- | ----------- |
462
- | `security.folderTrust.enabled` | boolean | Setting to track whether Folder trust is enabled. | `false` |
463
- | `security.auth.selectedType` | string | The currently selected authentication type. | `undefined` |
464
- | `security.auth.enforcedType` | string | The required auth type (useful for enterprises). | `undefined` |
465
- | `security.auth.useExternal` | boolean | Whether to use an external authentication flow. | `undefined` |
474
+ | Setting | Type | Description | Default |
475
+ | ------------------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
476
+ | `security.folderTrust.enabled` | boolean | Setting to track whether Folder trust is enabled. | `false` |
477
+ | `security.auth.selectedType` | string | The currently selected authentication type. | `undefined` |
478
+ | `security.auth.enforcedType` | string | The required auth type (useful for enterprises). | `undefined` |
479
+ | `security.auth.useExternal` | boolean | Whether to use an external authentication flow. | `undefined` |
480
+ | `security.auth.apiKey` | string | **Deprecated.** API key for OpenAI-compatible authentication. Migrate to `modelProviders` with `envKey` instead — see [Model Providers](./model-providers). | `undefined` |
481
+ | `security.auth.baseUrl` | string | **Deprecated.** Base URL for the OpenAI-compatible API. Migrate to `modelProviders` instead — see [Model Providers](./model-providers). | `undefined` |
466
482
 
467
483
  #### advanced
468
484
 
@@ -76,40 +76,42 @@ Commands specifically for controlling interface and output language.
76
76
 
77
77
  Commands for managing AI tools and models.
78
78
 
79
- | Command | Description | Usage Examples |
80
- | ---------------- | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
81
- | `/mcp` | List configured MCP servers and tools | `/mcp`, `/mcp desc`, `/mcp nodesc`, `/mcp schema` |
82
- | `/import-config` | Import MCP servers from Claude configs | `/import-config all`, `/import-config claude-code`, `/import-config claude-desktop --scope user\|project` |
83
- | `/tools` | Display currently available tool list | `/tools`, `/tools desc` |
84
- | `/skills` | List and run available skills | `/skills`, `/skills <name>` |
85
- | `/plan` | Switch to plan mode or exit plan mode | `/plan`, `/plan <task>`, `/plan exit` |
86
- | `/approval-mode` | Change the tool-approval mode (current session only) | `/approval-mode`, `/approval-mode auto-edit` |
87
- | → `plan` | Analysis only, no execution (secure review) | `/approval-mode plan` |
88
- | → `default` | Require approval for edits (daily use) | `/approval-mode default` |
89
- | → `auto-edit` | Auto-approve edits (trusted environment) | `/approval-mode auto-edit` |
90
- | → `auto` | Classifier-evaluated approval (autonomous) | `/approval-mode auto` |
91
- | → `yolo` | Auto-approve everything (quick prototyping) | `/approval-mode yolo` |
92
- | `/model` | Switch model used in current session | `/model`, `/model <model-id>` (switch immediately) |
93
- | `/model --fast` | Set a lighter model for prompt suggestions | `/model --fast qwen3-coder-flash` |
94
- | `/model --voice` | Set the model used for voice transcription | `/model --voice <model-id>` |
95
- | `/extensions` | Manage extensions | `/extensions list`, `/extensions manage` |
96
- | `list` | List installed extensions | `/extensions list` |
97
- | `manage` | Manage installed extensions (interactive) | `/extensions manage` |
98
- | → `explore` | Open extensions page in browser | `/extensions explore <Gemini\|ClaudeCode>` |
99
- | → `install` | Install an extension from a git repo or path | `/extensions install <repo-or-path>` |
100
- | `/memory` | Open the Memory Manager dialog | `/memory` |
101
- | `/remember` | Save a durable memory | `/remember Prefer terse responses` |
102
- | `/forget` | Remove matching entries from auto-memory | `/forget <query>` |
103
- | `/dream` | Manually run auto-memory consolidation | `/dream` |
104
- | `/hooks` | Manage Qwen Code hooks | `/hooks`, `/hooks list` |
105
- | `/permissions` | Manage permission rules | `/permissions` |
106
- | `/agents` | Manage subagents | `/agents manage`, `/agents create` |
107
- | `/arena` | Manage Arena sessions | `/arena start`, `/arena stop`, `/arena status`, `/arena select` (alias `choose`) |
108
- | `/goal` | Set a goal — keep working until condition met | `/goal <condition>`, `/goal clear` |
109
- | `/tasks` | List background tasks | `/tasks` |
110
- | `/workflows` | Inspect workflow runs | `/workflows`, `/workflows <runId>` |
111
- | `/lsp` | Show LSP server status | `/lsp` |
112
- | `/trust` | Manage folder trust settings | `/trust` |
79
+ | Command | Description | Usage Examples |
80
+ | ----------------- | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
81
+ | `/mcp` | List configured MCP servers and tools | `/mcp`, `/mcp desc`, `/mcp nodesc`, `/mcp schema` |
82
+ | `/import-config` | Import MCP servers from Claude configs | `/import-config all`, `/import-config claude-code`, `/import-config claude-desktop --scope user\|project` |
83
+ | `/tools` | Display currently available tool list | `/tools`, `/tools desc` |
84
+ | `/skills` | List and run available skills | `/skills`, `/skills <name>` |
85
+ | `/plan` | Switch to plan mode or exit plan mode | `/plan`, `/plan <task>`, `/plan exit` |
86
+ | `/approval-mode` | Change the tool-approval mode (current session only) | `/approval-mode`, `/approval-mode auto-edit` |
87
+ | → `plan` | Analysis only, no execution (secure review) | `/approval-mode plan` |
88
+ | → `default` | Require approval for edits (daily use) | `/approval-mode default` |
89
+ | → `auto-edit` | Auto-approve edits (trusted environment) | `/approval-mode auto-edit` |
90
+ | → `auto` | Classifier-evaluated approval (autonomous) | `/approval-mode auto` |
91
+ | → `yolo` | Auto-approve everything (quick prototyping) | `/approval-mode yolo` |
92
+ | `/model` | Switch model used in current session | `/model`, `/model <model-id>` (switch immediately) |
93
+ | `/model --fast` | Set a lighter model for prompt suggestions | `/model --fast qwen3-coder-flash` |
94
+ | `/model --voice` | Set the model used for voice transcription | `/model --voice <model-id>` |
95
+ | `/model --vision` | Set the vision-bridge model used to transcribe images for a text-only main model | `/model --vision <model-id>` |
96
+ | `/effort` | Set reasoning effort for thinking-capable models | `/effort` (opens picker), `/effort high` (low/medium/high/xhigh/max; mapped & clamped per provider) |
97
+ | `/extensions` | Manage extensions | `/extensions list`, `/extensions manage` |
98
+ | → `list` | List installed extensions | `/extensions list` |
99
+ | → `manage` | Manage installed extensions (interactive) | `/extensions manage` |
100
+ | `explore` | Open extensions page in browser | `/extensions explore <Gemini\|ClaudeCode>` |
101
+ | `install` | Install an extension from a git repo or path | `/extensions install <repo-or-path>` |
102
+ | `/memory` | Open the Memory Manager dialog | `/memory` |
103
+ | `/remember` | Save a durable memory | `/remember Prefer terse responses` |
104
+ | `/forget` | Remove matching entries from auto-memory | `/forget <query>` |
105
+ | `/dream` | Manually run auto-memory consolidation | `/dream` |
106
+ | `/hooks` | Manage Qwen Code hooks | `/hooks`, `/hooks list` |
107
+ | `/permissions` | Manage permission rules | `/permissions` |
108
+ | `/agents` | Manage subagents | `/agents manage`, `/agents create` |
109
+ | `/arena` | Manage Arena sessions | `/arena start`, `/arena stop`, `/arena status`, `/arena select` (alias `choose`) |
110
+ | `/goal` | Set a goal — keep working until condition met | `/goal <condition>`, `/goal clear` |
111
+ | `/tasks` | List background tasks | `/tasks` |
112
+ | `/workflows` | Inspect workflow runs | `/workflows`, `/workflows <runId>` |
113
+ | `/lsp` | Show LSP server status | `/lsp` |
114
+ | `/trust` | Manage folder trust settings | `/trust` |
113
115
 
114
116
  > [!warning]
115
117
  >
@@ -324,6 +326,7 @@ Commands for obtaining information and performing system settings.
324
326
  | `/stats monthly` | Show monthly token usage statistics | `/stats monthly` (alias `month`), `/stats month [YYYY-MM]` |
325
327
  | `/stats export` | Export usage statistics to CSV or JSON | `/stats export <daily\|monthly> [date\|month] [--format csv\|json] [--output path]` |
326
328
  | `/settings` | Open settings editor | `/settings` |
329
+ | `/config` | Get or set any setting by dot-path key (writes to user settings) | `/config` (list all), `/config <key>`, `/config <key>=<value>` |
327
330
  | `/auth` | Change authentication method | `/auth`, `/connect`, `/login` |
328
331
  | `/doctor` | Run installation and environment diagnostics | `/doctor`, `/doctor memory` |
329
332
  | → `memory` | Show current process memory diagnostics | `/doctor memory [--json] [--sample] [--snapshot]` |
@@ -341,6 +344,10 @@ Commands for obtaining information and performing system settings.
341
344
  >
342
345
  > `/doctor memory --snapshot` writes a V8 heap snapshot that may contain prompts, file contents, API keys, and tool results from the current session. Review the file before sharing it.
343
346
 
347
+ > [!note]
348
+ >
349
+ > `/config` reads and writes individual settings by dot-path key (e.g. `general.vimMode`), complementing the interactive `/settings` editor. Running `/config` with no argument (or `--help`) lists every settable key with its type and current value. `/config <key>` prints the current value — except for boolean keys, where it toggles the value. `/config <key>=<value>` sets the value. Changes are written to user settings (`~/.qwen/settings.json`). Only `boolean`, `string`, `number`, and `enum` settings can be changed this way — `array` and `object` settings must be edited in `settings.json` directly. Sensitive values (API keys, tokens, base URLs) are masked in output, and setting `tools.approvalMode` to `yolo` is blocked.
350
+
344
351
  ### 1.10 Common Shortcuts
345
352
 
346
353
  | Shortcut | Function | Note |
@@ -223,24 +223,25 @@ qwen -p "Write code" --output-format stream-json --include-partial-messages | jq
223
223
 
224
224
  Key command-line options for headless usage:
225
225
 
226
- | Option | Description | Example |
227
- | ---------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ |
228
- | `--prompt`, `-p` | Run in headless mode | `qwen -p "query"` |
229
- | `--output-format`, `-o` | Specify output format (text, json, stream-json) | `qwen -p "query" --output-format json` |
230
- | `--input-format` | Specify input format (text, stream-json) | `qwen --input-format text --output-format stream-json` |
231
- | `--include-partial-messages` | Include partial messages in stream-json output | `qwen -p "query" --output-format stream-json --include-partial-messages` |
232
- | `--system-prompt` | Override the main session system prompt for this run | `qwen -p "query" --system-prompt "You are a terse reviewer."` |
233
- | `--append-system-prompt` | Append extra instructions to the main session system prompt for this run | `qwen -p "query" --append-system-prompt "Focus on concrete findings."` |
234
- | `--debug`, `-d` | Enable debug mode | `qwen -p "query" --debug` |
235
- | `--all-files`, `-a` | Include all files in context | `qwen -p "query" --all-files` |
236
- | `--include-directories` | Include additional directories | `qwen -p "query" --include-directories src,docs` |
237
- | `--yolo`, `-y` | Auto-approve all actions | `qwen -p "query" --yolo` |
238
- | `--approval-mode` | Set approval mode | `qwen -p "query" --approval-mode auto_edit` |
239
- | `--continue` | Resume the most recent session for this project | `qwen --continue -p "Pick up where we left off"` |
240
- | `--resume [sessionId]` | Resume a specific session (or choose interactively) | `qwen --resume 123e... -p "Finish the refactor"` |
241
- | `--max-session-turns` | Cap the number of user/model/tool turns in the run | `qwen -p "..." --max-session-turns 30` |
242
- | `--max-wall-time` | Wall-clock budget; accepts `90` (s), `30s`, `5m`, `1h`, `1.5h` | `qwen -p "..." --max-wall-time 10m` |
243
- | `--max-tool-calls` | Cumulative tool-call budget for the run | `qwen -p "..." --max-tool-calls 50` |
226
+ | Option | Description | Example |
227
+ | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------ |
228
+ | `--prompt`, `-p` | Run in headless mode | `qwen -p "query"` |
229
+ | `--output-format`, `-o` | Specify output format (text, json, stream-json) | `qwen -p "query" --output-format json` |
230
+ | `--input-format` | Specify input format (text, stream-json) | `qwen --input-format text --output-format stream-json` |
231
+ | `--include-partial-messages` | Include partial messages in stream-json output | `qwen -p "query" --output-format stream-json --include-partial-messages` |
232
+ | `--system-prompt` | Override the main session system prompt for this run | `qwen -p "query" --system-prompt "You are a terse reviewer."` |
233
+ | `--append-system-prompt` | Append extra instructions to the main session system prompt for this run | `qwen -p "query" --append-system-prompt "Focus on concrete findings."` |
234
+ | `--debug`, `-d` | Enable debug mode | `qwen -p "query" --debug` |
235
+ | `--safe-mode` | Disable all customizations — context files, hooks, extensions, skills, MCP servers, custom subagents (only built-in subagents load), permission rules, settings-sourced approval mode overrides, memory features, and sandbox settings — to isolate problems; the CLI flags `--yolo` and `--approval-mode` still take effect. See [Troubleshooting](../support/troubleshooting). Also settable via `QWEN_CODE_SAFE_MODE=true`. | `qwen -p "query" --safe-mode` |
236
+ | `--all-files`, `-a` | Include all files in context | `qwen -p "query" --all-files` |
237
+ | `--include-directories` | Include additional directories | `qwen -p "query" --include-directories src,docs` |
238
+ | `--yolo`, `-y` | Auto-approve all actions | `qwen -p "query" --yolo` |
239
+ | `--approval-mode` | Set approval mode | `qwen -p "query" --approval-mode auto_edit` |
240
+ | `--continue` | Resume the most recent session for this project | `qwen --continue -p "Pick up where we left off"` |
241
+ | `--resume [sessionId]` | Resume a specific session (or choose interactively) | `qwen --resume 123e... -p "Finish the refactor"` |
242
+ | `--max-session-turns` | Cap the number of user/model/tool turns in the run | `qwen -p "..." --max-session-turns 30` |
243
+ | `--max-wall-time` | Wall-clock budget; accepts `90` (s), `30s`, `5m`, `1h`, `1.5h` | `qwen -p "..." --max-wall-time 10m` |
244
+ | `--max-tool-calls` | Cumulative tool-call budget for the run | `qwen -p "..." --max-tool-calls 50` |
244
245
 
245
246
  For complete details on all available configuration options, settings files, and environment variables, see the [Configuration Guide](../configuration/settings).
246
247
 
@@ -260,6 +260,38 @@ curl -H "Authorization: Bearer $QWEN_SERVER_TOKEN" http://your-host:4170/capabil
260
260
 
261
261
  The token comparison is constant-time (SHA-256 + `crypto.timingSafeEqual`); 401 responses are uniform across "missing header", "wrong scheme", and "wrong token" so a side-channel can't distinguish.
262
262
 
263
+ ## HTTPS / TLS (for mobile / cross-device access)
264
+
265
+ By default the daemon serves plain HTTP. That's fine on `localhost`, but a phone or tablet hitting a LAN IP (`https://192.168.x.x:4170`) is **not** a [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts) over `http://` — so browsers block `getUserMedia` (voice input), WebRTC, and other secure-context-only APIs. Pass `--tls-cert` + `--tls-key` to serve the Web Shell over HTTPS and unlock them:
266
+
267
+ ```bash
268
+ # 1. Install a local CA and trust it (one-time). The mobile device must
269
+ # also trust this CA — mkcert prints where the root cert lives.
270
+ mkcert -install
271
+
272
+ # 2. Generate a cert for your machine's LAN IP. Add localhost / 127.0.0.1 to
273
+ # the SANs too: with `--open`, the daemon rewrites the browser URL to
274
+ # 127.0.0.1, so a cert scoped to only the LAN IP would be rejected with
275
+ # ERR_CERT_COMMON_NAME_INVALID. (mkcert names the output after all hosts.)
276
+ mkcert 192.168.1.100 localhost 127.0.0.1
277
+
278
+ # 3. Start the daemon over HTTPS. Non-loopback binds still require a token,
279
+ # and the browser Origin must be allowed through CORS.
280
+ qwen serve \
281
+ --hostname 0.0.0.0 \
282
+ --token "$(openssl rand -hex 32)" \
283
+ --tls-cert "./192.168.1.100+2.pem" \
284
+ --tls-key "./192.168.1.100+2-key.pem" \
285
+ --allow-origin "https://192.168.1.100:4170"
286
+ # → qwen serve listening on https://0.0.0.0:4170
287
+ ```
288
+
289
+ Notes:
290
+
291
+ - **Both flags or neither** — boot fails if only one is given (a cert with no key can't start an HTTPS listener).
292
+ - **TLS is orthogonal to auth** — HTTPS encrypts the transport; the bearer token still gates every API route. Non-loopback binds require a token with or without TLS.
293
+ - **Scope is TLS termination only** — no auto-generation, no ACME / Let's Encrypt. This is a LAN / dev convenience; for internet-facing deployments terminate TLS at a reverse proxy (see the threat model below).
294
+
263
295
  ## CLI flags
264
296
 
265
297
  | Flag | Default | Purpose |
@@ -268,6 +300,8 @@ The token comparison is constant-time (SHA-256 + `crypto.timingSafeEqual`); 401
268
300
  | `--hostname <addr>` | `127.0.0.1` | Bind interface. Anything beyond loopback requires a token. |
269
301
  | `--token <str>` | — | Bearer token. Falls back to `QWEN_SERVER_TOKEN` env var (with leading/trailing whitespace stripped — handy for `$(cat token.txt)`). |
270
302
  | `--require-auth` | `false` | Refuse to start without a bearer token, even on loopback. Hardens the `127.0.0.1` developer default for shared dev hosts / CI runners / multi-tenant workstations where any local user can hit the listener. Boots only with `--token` or `QWEN_SERVER_TOKEN` set; gates `/health` behind the bearer too. |
303
+ | `--tls-cert <path>` | — | Path to a PEM certificate file. Serve over **HTTPS** instead of HTTP. Must be paired with `--tls-key` (boot fails if only one is given). Unlocks secure-context browser APIs — voice input (`getUserMedia`), WebRTC — over a LAN IP, which browsers otherwise block on plain `http://`. TLS termination only; no auto-generation / ACME. See [HTTPS / TLS](#https--tls-for-mobile--cross-device-access) below. |
304
+ | `--tls-key <path>` | — | Path to a PEM private key file. Must be paired with `--tls-cert`. |
271
305
  | `--max-sessions <n>` | `20` | Cap on concurrent live sessions. New `POST /session` requests that would spawn a fresh child return `503` (with `Retry-After: 5`) when the cap is hit; attaches to existing sessions are NOT counted. Set to `0` to disable. Sized for single-user / small-team usage; raise it if your deployment has the RAM/FD headroom (~30–50 MB per session). |
272
306
  | `--max-pending-prompts-per-session <n>` | `5` | Per-session cap on prompts accepted by `POST /session/:id/prompt` but not yet settled, including queued prompts and the active prompt. The bridge rejects overflow synchronously with `503`, `Retry-After: 5`, and `code: "prompt_queue_full"` before returning a `promptId`. Set to `0` to disable. `branchSession` serializes on the same FIFO but does not count against this prompt cap. |
273
307
  | `--workspace <path>` | `process.cwd()` | Absolute workspace path this daemon binds to (per [#3803](https://github.com/QwenLM/qwen-code/issues/3803) §02 — 1 daemon = 1 workspace). `POST /session` requests with a mismatched `cwd` return `400 workspace_mismatch`. For multi-workspace deployments, run one `qwen serve` per workspace on separate ports. |
@@ -55,6 +55,11 @@ This guide provides solutions to common issues and debugging tips, including top
55
55
  - **Q: Why don't I see cached token counts in my stats output?**
56
56
  - A: Cached token information is only displayed when cached tokens are being used. This feature is available for API key users (e.g., Alibaba Cloud Model Studio API key or Google Cloud Vertex AI). You can still view your total token usage using the `/stats` command.
57
57
 
58
+ - **Q: A customization (extension, hook, skill, MCP server, or subagent) seems to be breaking Qwen Code. How do I isolate it?**
59
+ - A: Start Qwen Code with the `--safe-mode` flag to disable all customizations — context files, hooks, extensions, skills, MCP servers, custom subagents (only built-in subagents load), permission rules, settings-sourced approval mode overrides, memory features, and sandbox settings — for the session. Note: the CLI flags `--yolo` and `--approval-mode` still take effect in safe mode. If the problem disappears in safe mode, re-enable your customizations one at a time to find the culprit.
60
+ - Example: `qwen --safe-mode`
61
+ - Alternative: set the environment variable `QWEN_CODE_SAFE_MODE=true` if the CLI cannot accept flags.
62
+
58
63
  ## Common error messages and solutions
59
64
 
60
65
  - **Error: `EADDRINUSE` (Address already in use) when starting an MCP server.**
@@ -4,47 +4,48 @@ import {
4
4
  MINIMUM_MAX_HEIGHT,
5
5
  MaxSizedBox,
6
6
  setMaxSizedBoxDebugging
7
- } from "./chunk-FNLXLI4I.js";
7
+ } from "./chunk-WMLQKZ64.js";
8
8
  import "./chunk-VXGPYF7U.js";
9
- import "./chunk-2X2JUE47.js";
9
+ import "./chunk-FKHE7ZNF.js";
10
10
  import "./chunk-KYMBIKIW.js";
11
11
  import "./chunk-HTWHAN44.js";
12
- import "./chunk-HRZB5CSC.js";
12
+ import "./chunk-ZRHHQFV4.js";
13
13
  import "./chunk-TLRYABYP.js";
14
- import "./chunk-BFG6OZN7.js";
14
+ import "./chunk-WWOVV2PW.js";
15
15
  import "./chunk-5P5XGNYH.js";
16
- import "./chunk-K5PGHDBN.js";
17
16
  import "./chunk-SKAZWEV5.js";
17
+ import "./chunk-K5PGHDBN.js";
18
18
  import "./chunk-QOMAHFYI.js";
19
19
  import "./chunk-G7OQ3RFJ.js";
20
20
  import "./chunk-LKWAVAB5.js";
21
- import "./chunk-MEQWZGK5.js";
22
- import "./chunk-UANCYOOQ.js";
21
+ import "./chunk-L7OJ3ZO3.js";
22
+ import "./chunk-R6RI2HIC.js";
23
23
  import "./chunk-2MPVVENX.js";
24
24
  import "./chunk-ZTQ26VBE.js";
25
25
  import "./chunk-SJBIFVD2.js";
26
26
  import "./chunk-MLZQVCF3.js";
27
- import "./chunk-S5EQPDTM.js";
28
27
  import "./chunk-LQ7TMOCE.js";
29
28
  import "./chunk-E5A7LHNN.js";
29
+ import "./chunk-BPFJQGY7.js";
30
30
  import "./chunk-GO6LNQXT.js";
31
31
  import "./chunk-B236XPGF.js";
32
32
  import "./chunk-YXK4GPYO.js";
33
33
  import "./chunk-TOAUDIS7.js";
34
34
  import "./chunk-NPQWQYU6.js";
35
- import "./chunk-HJDF3ZVU.js";
35
+ import "./chunk-UEGNXWAX.js";
36
36
  import "./chunk-E6US47KI.js";
37
37
  import "./chunk-UWCTAVOD.js";
38
38
  import "./chunk-OFEVLU4C.js";
39
39
  import "./chunk-OMX7CUOE.js";
40
40
  import "./chunk-MOUXUCXQ.js";
41
41
  import "./chunk-BZHLWC6T.js";
42
- import "./chunk-UQFP2FEF.js";
43
- import "./chunk-4VZH35PN.js";
42
+ import "./chunk-DG573EOO.js";
43
+ import "./chunk-MTNTVOJR.js";
44
44
  import "./chunk-TENOUWY2.js";
45
45
  import "./chunk-GLPV75ES.js";
46
46
  import "./chunk-22IFUCVR.js";
47
47
  import "./chunk-T42ACHFI.js";
48
+ import "./chunk-SIUQ3YYX.js";
48
49
  import "./chunk-YTFBURQD.js";
49
50
  import "./chunk-YPCPZSZB.js";
50
51
  import "./chunk-IRJWHZWU.js";
@@ -3,38 +3,38 @@
3
3
  import {
4
4
  ConfigContext,
5
5
  SessionPicker
6
- } from "./chunk-DQ74W65K.js";
7
- import "./chunk-6AQR7732.js";
8
- import "./chunk-TTFNVEO5.js";
6
+ } from "./chunk-HCLTQ3PV.js";
7
+ import "./chunk-P5GH4DTN.js";
9
8
  import {
10
9
  SettingsContext
11
- } from "./chunk-CG7SVARK.js";
10
+ } from "./chunk-VDIZBM46.js";
12
11
  import {
13
12
  KeypressProvider
14
- } from "./chunk-75X2VLSH.js";
13
+ } from "./chunk-F26BNXI2.js";
15
14
  import "./chunk-KSPVDFE4.js";
16
15
  import "./chunk-MRO43B25.js";
17
- import "./chunk-FNLXLI4I.js";
16
+ import "./chunk-46IAL3RB.js";
17
+ import "./chunk-WMLQKZ64.js";
18
18
  import "./chunk-VXGPYF7U.js";
19
19
  import {
20
20
  Box_default,
21
21
  render_default,
22
22
  require_jsx_runtime,
23
23
  use_app_default
24
- } from "./chunk-2X2JUE47.js";
24
+ } from "./chunk-FKHE7ZNF.js";
25
25
  import {
26
26
  require_react
27
27
  } from "./chunk-KYMBIKIW.js";
28
28
  import "./chunk-HTWHAN44.js";
29
29
  import "./chunk-3GONHQOA.js";
30
- import "./chunk-73H73ASU.js";
31
- import "./chunk-HRZB5CSC.js";
30
+ import "./chunk-ZRHHQFV4.js";
31
+ import "./chunk-VJSWLYUL.js";
32
32
  import "./chunk-KHDZHZMH.js";
33
- import "./chunk-MKHC4BYZ.js";
34
- import "./chunk-UQYOMM6J.js";
33
+ import "./chunk-XAVV2JAM.js";
34
+ import "./chunk-L4CYPEA7.js";
35
35
  import "./chunk-TLRYABYP.js";
36
- import "./chunk-PPFWEV7G.js";
37
- import "./chunk-ZJP5T7IA.js";
36
+ import "./chunk-4RQIB5UZ.js";
37
+ import "./chunk-ODPWORQZ.js";
38
38
  import {
39
39
  writeStdoutLine
40
40
  } from "./chunk-Y6Z2O3WR.js";
@@ -42,40 +42,41 @@ import "./chunk-QYUE6W3T.js";
42
42
  import {
43
43
  SessionService,
44
44
  getGitBranch
45
- } from "./chunk-BFG6OZN7.js";
45
+ } from "./chunk-WWOVV2PW.js";
46
46
  import "./chunk-5P5XGNYH.js";
47
- import "./chunk-K5PGHDBN.js";
48
47
  import "./chunk-SKAZWEV5.js";
48
+ import "./chunk-K5PGHDBN.js";
49
49
  import "./chunk-QOMAHFYI.js";
50
50
  import "./chunk-G7OQ3RFJ.js";
51
51
  import "./chunk-LKWAVAB5.js";
52
- import "./chunk-MEQWZGK5.js";
53
- import "./chunk-UANCYOOQ.js";
52
+ import "./chunk-L7OJ3ZO3.js";
53
+ import "./chunk-R6RI2HIC.js";
54
54
  import "./chunk-2MPVVENX.js";
55
55
  import "./chunk-ZTQ26VBE.js";
56
56
  import "./chunk-SJBIFVD2.js";
57
57
  import "./chunk-MLZQVCF3.js";
58
- import "./chunk-S5EQPDTM.js";
59
58
  import "./chunk-LQ7TMOCE.js";
60
59
  import "./chunk-E5A7LHNN.js";
60
+ import "./chunk-BPFJQGY7.js";
61
61
  import "./chunk-GO6LNQXT.js";
62
62
  import "./chunk-B236XPGF.js";
63
63
  import "./chunk-YXK4GPYO.js";
64
64
  import "./chunk-TOAUDIS7.js";
65
65
  import "./chunk-NPQWQYU6.js";
66
- import "./chunk-HJDF3ZVU.js";
66
+ import "./chunk-UEGNXWAX.js";
67
67
  import "./chunk-E6US47KI.js";
68
68
  import "./chunk-UWCTAVOD.js";
69
69
  import "./chunk-OFEVLU4C.js";
70
70
  import "./chunk-OMX7CUOE.js";
71
71
  import "./chunk-MOUXUCXQ.js";
72
72
  import "./chunk-BZHLWC6T.js";
73
- import "./chunk-UQFP2FEF.js";
74
- import "./chunk-4VZH35PN.js";
73
+ import "./chunk-DG573EOO.js";
74
+ import "./chunk-MTNTVOJR.js";
75
75
  import "./chunk-TENOUWY2.js";
76
76
  import "./chunk-GLPV75ES.js";
77
77
  import "./chunk-22IFUCVR.js";
78
78
  import "./chunk-T42ACHFI.js";
79
+ import "./chunk-SIUQ3YYX.js";
79
80
  import "./chunk-YTFBURQD.js";
80
81
  import "./chunk-YPCPZSZB.js";
81
82
  import "./chunk-IRJWHZWU.js";
@@ -86,7 +87,7 @@ import "./chunk-5IFG2VC4.js";
86
87
  import "./chunk-64WXLC72.js";
87
88
  import "./chunk-D5KISTLW.js";
88
89
  import "./chunk-AVQDCKNF.js";
89
- import "./chunk-FYKX6XOT.js";
90
+ import "./chunk-RBLDOR7U.js";
90
91
  import "./chunk-ZERZSAZL.js";
91
92
  import "./chunk-QN5NZ3UQ.js";
92
93
  import "./chunk-BR4QREVK.js";