@hienlh/ppm 0.22.2 → 0.22.4

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 (1251) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/assets/skills/ppm/SKILL.md +1 -1
  3. package/assets/skills/ppm/references/cli-reference.md +4 -4
  4. package/assets/skills/ppm/references/http-api.md +1 -1
  5. package/dist/web/assets/abap-IN2yINdN.js.br +0 -0
  6. package/dist/web/assets/abap-IN2yINdN.js.gz +0 -0
  7. package/dist/web/assets/accounts-settings-section-BdUSroB_.js +1 -0
  8. package/dist/web/assets/accounts-settings-section-BdUSroB_.js.br +0 -0
  9. package/dist/web/assets/accounts-settings-section-BdUSroB_.js.gz +0 -0
  10. package/dist/web/assets/actionscript-3-C_t772eR.js.br +0 -0
  11. package/dist/web/assets/actionscript-3-C_t772eR.js.gz +0 -0
  12. package/dist/web/assets/ada-DPme3emm.js.br +0 -0
  13. package/dist/web/assets/ada-DPme3emm.js.gz +0 -0
  14. package/dist/web/assets/{ai-resource-editor-C4ecid2g.js → ai-resource-editor-UMbGL_jd.js} +1 -1
  15. package/dist/web/assets/ai-resource-editor-UMbGL_jd.js.br +0 -0
  16. package/dist/web/assets/ai-resource-editor-UMbGL_jd.js.gz +0 -0
  17. package/dist/web/assets/{ai-settings-section-BOwGdiyH.js → ai-settings-section-DIb_MwDG.js} +1 -1
  18. package/dist/web/assets/ai-settings-section-DIb_MwDG.js.br +0 -0
  19. package/dist/web/assets/ai-settings-section-DIb_MwDG.js.gz +0 -0
  20. package/dist/web/assets/{ai-settings-section-Cqz13gRt.js → ai-settings-section-DXD90Oed.js} +1 -1
  21. package/dist/web/assets/andromeeda-DSV4i4mZ.js.br +0 -0
  22. package/dist/web/assets/andromeeda-DSV4i4mZ.js.gz +0 -0
  23. package/dist/web/assets/angular-html-G66FNlyn.js.br +0 -0
  24. package/dist/web/assets/angular-html-G66FNlyn.js.gz +0 -0
  25. package/dist/web/assets/angular-ts-B-PnUMyt.js.br +0 -0
  26. package/dist/web/assets/angular-ts-B-PnUMyt.js.gz +0 -0
  27. package/dist/web/assets/apache-CWr8s8I8.js.br +0 -0
  28. package/dist/web/assets/apache-CWr8s8I8.js.gz +0 -0
  29. package/dist/web/assets/apex-Z20JnDF5.js.br +0 -0
  30. package/dist/web/assets/apex-Z20JnDF5.js.gz +0 -0
  31. package/dist/web/assets/api-client-Jn3njtNw.js.br +0 -0
  32. package/dist/web/assets/api-client-Jn3njtNw.js.gz +0 -0
  33. package/dist/web/assets/api-settings-BxijvPBR.js.br +0 -0
  34. package/dist/web/assets/api-settings-BxijvPBR.js.gz +0 -0
  35. package/dist/web/assets/apl-BmDqqwE8.js.br +0 -0
  36. package/dist/web/assets/apl-BmDqqwE8.js.gz +0 -0
  37. package/dist/web/assets/{appearance-settings-section-DbA8L-Vz.js → appearance-settings-section-cnAoZk5I.js} +1 -1
  38. package/dist/web/assets/appearance-settings-section-cnAoZk5I.js.br +0 -0
  39. package/dist/web/assets/appearance-settings-section-cnAoZk5I.js.gz +0 -0
  40. package/dist/web/assets/applescript-BKNPu3ga.js.br +0 -0
  41. package/dist/web/assets/applescript-BKNPu3ga.js.gz +0 -0
  42. package/dist/web/assets/ara-hWdY3O96.js.br +0 -0
  43. package/dist/web/assets/ara-hWdY3O96.js.gz +0 -0
  44. package/dist/web/assets/asciidoc-eynhq496.js.br +0 -0
  45. package/dist/web/assets/asciidoc-eynhq496.js.gz +0 -0
  46. package/dist/web/assets/asm-Bu02Kq4P.js.br +0 -0
  47. package/dist/web/assets/asm-Bu02Kq4P.js.gz +0 -0
  48. package/dist/web/assets/astro-BfwMNfxr.js.br +0 -0
  49. package/dist/web/assets/astro-BfwMNfxr.js.gz +0 -0
  50. package/dist/web/assets/{audio-preview-CxJd8wRV.js → audio-preview-D9nCryTq.js} +1 -1
  51. package/dist/web/assets/audio-preview-D9nCryTq.js.br +0 -0
  52. package/dist/web/assets/audio-preview-D9nCryTq.js.gz +0 -0
  53. package/dist/web/assets/aurora-x-BHBGXbIZ.js.br +0 -0
  54. package/dist/web/assets/aurora-x-BHBGXbIZ.js.gz +0 -0
  55. package/dist/web/assets/awk-B4ojezyv.js.br +0 -0
  56. package/dist/web/assets/awk-B4ojezyv.js.gz +0 -0
  57. package/dist/web/assets/ayu-dark-D0GQzFi9.js.br +0 -0
  58. package/dist/web/assets/ayu-dark-D0GQzFi9.js.gz +0 -0
  59. package/dist/web/assets/ayu-light-BVYb5Yn8.js.br +0 -0
  60. package/dist/web/assets/ayu-light-BVYb5Yn8.js.gz +0 -0
  61. package/dist/web/assets/ayu-mirage-BGFW6oNb.js.br +0 -0
  62. package/dist/web/assets/ayu-mirage-BGFW6oNb.js.gz +0 -0
  63. package/dist/web/assets/ballerina-B6Og3IKT.js.br +0 -0
  64. package/dist/web/assets/ballerina-B6Og3IKT.js.gz +0 -0
  65. package/dist/web/assets/bat-D8YFILfx.js.br +0 -0
  66. package/dist/web/assets/bat-D8YFILfx.js.gz +0 -0
  67. package/dist/web/assets/beancount-BjlbBBuX.js.br +0 -0
  68. package/dist/web/assets/beancount-BjlbBBuX.js.gz +0 -0
  69. package/dist/web/assets/berry-Cz1ygeoj.js.br +0 -0
  70. package/dist/web/assets/berry-Cz1ygeoj.js.gz +0 -0
  71. package/dist/web/assets/bibtex-CVkJceJh.js.br +0 -0
  72. package/dist/web/assets/bibtex-CVkJceJh.js.gz +0 -0
  73. package/dist/web/assets/bicep-DrhYI5GX.js.br +0 -0
  74. package/dist/web/assets/bicep-DrhYI5GX.js.gz +0 -0
  75. package/dist/web/assets/bird2-BV-KJtmc.js.br +0 -0
  76. package/dist/web/assets/bird2-BV-KJtmc.js.gz +0 -0
  77. package/dist/web/assets/blade-BsFV4pnN.js.br +0 -0
  78. package/dist/web/assets/blade-BsFV4pnN.js.gz +0 -0
  79. package/dist/web/assets/{branch-review-tab-CMTa2uSR.js → branch-review-tab-zZcw_Z9A.js} +1 -1
  80. package/dist/web/assets/branch-review-tab-zZcw_Z9A.js.br +0 -0
  81. package/dist/web/assets/branch-review-tab-zZcw_Z9A.js.gz +0 -0
  82. package/dist/web/assets/bsl-Cw9Outng.js.br +0 -0
  83. package/dist/web/assets/bsl-Cw9Outng.js.gz +0 -0
  84. package/dist/web/assets/button-B9CTrsEf.js.br +0 -0
  85. package/dist/web/assets/button-B9CTrsEf.js.gz +0 -0
  86. package/dist/web/assets/c-CuLlvxbG.js.br +0 -0
  87. package/dist/web/assets/c-CuLlvxbG.js.gz +0 -0
  88. package/dist/web/assets/c3-CI7-1CJ0.js.br +0 -0
  89. package/dist/web/assets/c3-CI7-1CJ0.js.gz +0 -0
  90. package/dist/web/assets/cadence-DjxhNP3Q.js.br +0 -0
  91. package/dist/web/assets/cadence-DjxhNP3Q.js.gz +0 -0
  92. package/dist/web/assets/cairo-DOK5Wqnd.js.br +0 -0
  93. package/dist/web/assets/cairo-DOK5Wqnd.js.gz +0 -0
  94. package/dist/web/assets/can-open-in-ppm-cv5--yHX.js.br +0 -0
  95. package/dist/web/assets/can-open-in-ppm-cv5--yHX.js.gz +0 -0
  96. package/dist/web/assets/catppuccin-frappe-CEozpJRh.js.br +0 -0
  97. package/dist/web/assets/catppuccin-frappe-CEozpJRh.js.gz +0 -0
  98. package/dist/web/assets/catppuccin-latte-C4sXQFMc.js.br +0 -0
  99. package/dist/web/assets/catppuccin-latte-C4sXQFMc.js.gz +0 -0
  100. package/dist/web/assets/catppuccin-macchiato-Ci-fDhXy.js.br +0 -0
  101. package/dist/web/assets/catppuccin-macchiato-Ci-fDhXy.js.gz +0 -0
  102. package/dist/web/assets/catppuccin-mocha-CH7YXw8d.js.br +0 -0
  103. package/dist/web/assets/catppuccin-mocha-CH7YXw8d.js.gz +0 -0
  104. package/dist/web/assets/chat-tab-Bb6Wx_9W.js +15 -0
  105. package/dist/web/assets/chat-tab-Bb6Wx_9W.js.br +0 -0
  106. package/dist/web/assets/chat-tab-Bb6Wx_9W.js.gz +0 -0
  107. package/dist/web/assets/clarity-BWrJ7UmT.js.br +0 -0
  108. package/dist/web/assets/clarity-BWrJ7UmT.js.gz +0 -0
  109. package/dist/web/assets/clojure-C94fh2hb.js.br +0 -0
  110. package/dist/web/assets/clojure-C94fh2hb.js.gz +0 -0
  111. package/dist/web/assets/cmake-CtvCkMsG.js.br +0 -0
  112. package/dist/web/assets/cmake-CtvCkMsG.js.gz +0 -0
  113. package/dist/web/assets/cobol-DRaRy4FK.js.br +0 -0
  114. package/dist/web/assets/cobol-DRaRy4FK.js.gz +0 -0
  115. package/dist/web/assets/code-editor-DT7ra7LE.js +7 -0
  116. package/dist/web/assets/code-editor-DT7ra7LE.js.br +0 -0
  117. package/dist/web/assets/code-editor-DT7ra7LE.js.gz +0 -0
  118. package/dist/web/assets/codeql-BOoP5HY2.js.br +0 -0
  119. package/dist/web/assets/codeql-BOoP5HY2.js.gz +0 -0
  120. package/dist/web/assets/{codex-daily-guard-ChDPiXDx.js → codex-daily-guard-BTimXxlM.js} +1 -1
  121. package/dist/web/assets/codex-daily-guard-BTimXxlM.js.br +0 -0
  122. package/dist/web/assets/codex-daily-guard-BTimXxlM.js.gz +0 -0
  123. package/dist/web/assets/coffee-DvXuBmEJ.js.br +0 -0
  124. package/dist/web/assets/coffee-DvXuBmEJ.js.gz +0 -0
  125. package/dist/web/assets/common-lisp-B9nlMFJd.js.br +0 -0
  126. package/dist/web/assets/common-lisp-B9nlMFJd.js.gz +0 -0
  127. package/dist/web/assets/{conflict-editor-Axs9Ad7A.js → conflict-editor-Cu9DCNow.js} +3 -3
  128. package/dist/web/assets/conflict-editor-Cu9DCNow.js.br +0 -0
  129. package/dist/web/assets/conflict-editor-Cu9DCNow.js.gz +0 -0
  130. package/dist/web/assets/context-menu-C6pIsf83.js.br +0 -0
  131. package/dist/web/assets/context-menu-C6pIsf83.js.gz +0 -0
  132. package/dist/web/assets/coq-CgzIQiSH.js.br +0 -0
  133. package/dist/web/assets/coq-CgzIQiSH.js.gz +0 -0
  134. package/dist/web/assets/cpp-zCmm8rKA.js.br +0 -0
  135. package/dist/web/assets/cpp-zCmm8rKA.js.gz +0 -0
  136. package/dist/web/assets/createLucideIcon-DoiEKeJ_.js.br +0 -0
  137. package/dist/web/assets/createLucideIcon-DoiEKeJ_.js.gz +0 -0
  138. package/dist/web/assets/crystal-CdQx6lB6.js.br +0 -0
  139. package/dist/web/assets/crystal-CdQx6lB6.js.gz +0 -0
  140. package/dist/web/assets/csharp-4xAIx3jw.js.br +0 -0
  141. package/dist/web/assets/csharp-4xAIx3jw.js.gz +0 -0
  142. package/dist/web/assets/css-D4YoLYGn.js.br +0 -0
  143. package/dist/web/assets/css-D4YoLYGn.js.gz +0 -0
  144. package/dist/web/assets/csv-C2v-ZakW.js.br +0 -0
  145. package/dist/web/assets/csv-C2v-ZakW.js.gz +0 -0
  146. package/dist/web/assets/csv-parser-DpCmuupp.js.br +0 -0
  147. package/dist/web/assets/csv-parser-DpCmuupp.js.gz +0 -0
  148. package/dist/web/assets/{csv-preview-DTUAW2HW.js → csv-preview-BpKdfkoD.js} +1 -1
  149. package/dist/web/assets/csv-preview-BpKdfkoD.js.br +0 -0
  150. package/dist/web/assets/csv-preview-BpKdfkoD.js.gz +0 -0
  151. package/dist/web/assets/cue-Bbznh_an.js.br +0 -0
  152. package/dist/web/assets/cue-Bbznh_an.js.gz +0 -0
  153. package/dist/web/assets/cypher-BKhVEARF.js.br +0 -0
  154. package/dist/web/assets/cypher-BKhVEARF.js.gz +0 -0
  155. package/dist/web/assets/d-D6IhWopl.js.br +0 -0
  156. package/dist/web/assets/d-D6IhWopl.js.gz +0 -0
  157. package/dist/web/assets/dark-plus-xAWu790O.js.br +0 -0
  158. package/dist/web/assets/dark-plus-xAWu790O.js.gz +0 -0
  159. package/dist/web/assets/dart-Bj6S9O1j.js.br +0 -0
  160. package/dist/web/assets/dart-Bj6S9O1j.js.gz +0 -0
  161. package/dist/web/assets/data-grid-overlay-editor-6xUCeLHh.js.br +0 -0
  162. package/dist/web/assets/data-grid-overlay-editor-6xUCeLHh.js.gz +0 -0
  163. package/dist/web/assets/data-grid-types-C5bthITf.js.br +0 -0
  164. package/dist/web/assets/data-grid-types-C5bthITf.js.gz +0 -0
  165. package/dist/web/assets/{database-viewer-qXDiWeXj.js → database-viewer-CFWSVJ6D.js} +1 -1
  166. package/dist/web/assets/database-viewer-CFWSVJ6D.js.br +0 -0
  167. package/dist/web/assets/database-viewer-CFWSVJ6D.js.gz +0 -0
  168. package/dist/web/assets/dax-CF2zvaqq.js.br +0 -0
  169. package/dist/web/assets/dax-CF2zvaqq.js.gz +0 -0
  170. package/dist/web/assets/desktop-CnmyxMKE.js.br +0 -0
  171. package/dist/web/assets/desktop-CnmyxMKE.js.gz +0 -0
  172. package/dist/web/assets/dialog-B84_DJQ8.js.br +0 -0
  173. package/dist/web/assets/dialog-B84_DJQ8.js.gz +0 -0
  174. package/dist/web/assets/diff-Qi8WuJsI.js.br +0 -0
  175. package/dist/web/assets/diff-Qi8WuJsI.js.gz +0 -0
  176. package/dist/web/assets/{diff-viewer-BtLiSpqe.js → diff-viewer-DfjjKjgw.js} +1 -1
  177. package/dist/web/assets/diff-viewer-DfjjKjgw.js.br +0 -0
  178. package/dist/web/assets/diff-viewer-DfjjKjgw.js.gz +0 -0
  179. package/dist/web/assets/dist-Bjseolz4.js.br +0 -0
  180. package/dist/web/assets/dist-Bjseolz4.js.gz +0 -0
  181. package/dist/web/assets/dist-Czq7BUMy.js.br +0 -0
  182. package/dist/web/assets/dist-Czq7BUMy.js.gz +0 -0
  183. package/dist/web/assets/docker-vLbbNP5d.js.br +0 -0
  184. package/dist/web/assets/docker-vLbbNP5d.js.gz +0 -0
  185. package/dist/web/assets/docx-preview-Gzi4QBez.js.br +0 -0
  186. package/dist/web/assets/docx-preview-Gzi4QBez.js.gz +0 -0
  187. package/dist/web/assets/dotenv-DJMvvNzn.js.br +0 -0
  188. package/dist/web/assets/dotenv-DJMvvNzn.js.gz +0 -0
  189. package/dist/web/assets/dracula-CtAh2rhB.js.br +0 -0
  190. package/dist/web/assets/dracula-CtAh2rhB.js.gz +0 -0
  191. package/dist/web/assets/dracula-soft-CXtuAAf6.js.br +0 -0
  192. package/dist/web/assets/dracula-soft-CXtuAAf6.js.gz +0 -0
  193. package/dist/web/assets/dream-maker-D5YQyK49.js.br +0 -0
  194. package/dist/web/assets/dream-maker-D5YQyK49.js.gz +0 -0
  195. package/dist/web/assets/edge-E8QLt7oi.js.br +0 -0
  196. package/dist/web/assets/edge-E8QLt7oi.js.gz +0 -0
  197. package/dist/web/assets/edit-diff-preview-CVv7EOFu.js.br +0 -0
  198. package/dist/web/assets/edit-diff-preview-CVv7EOFu.js.gz +0 -0
  199. package/dist/web/assets/{editor-language-service-D75GuLXP.js → editor-language-service-DN1yAn4G.js} +1 -1
  200. package/dist/web/assets/editor-language-service-DN1yAn4G.js.br +0 -0
  201. package/dist/web/assets/editor-language-service-DN1yAn4G.js.gz +0 -0
  202. package/dist/web/assets/elixir-DPb_-72P.js.br +0 -0
  203. package/dist/web/assets/elixir-DPb_-72P.js.gz +0 -0
  204. package/dist/web/assets/elm-BMzJY5b0.js.br +0 -0
  205. package/dist/web/assets/elm-BMzJY5b0.js.gz +0 -0
  206. package/dist/web/assets/emacs-lisp-CGTjbiqF.js.br +0 -0
  207. package/dist/web/assets/emacs-lisp-CGTjbiqF.js.gz +0 -0
  208. package/dist/web/assets/erb-AABQNtMK.js.br +0 -0
  209. package/dist/web/assets/erb-AABQNtMK.js.gz +0 -0
  210. package/dist/web/assets/erlang-CEIKOkfP.js.br +0 -0
  211. package/dist/web/assets/erlang-CEIKOkfP.js.gz +0 -0
  212. package/dist/web/assets/esm-B9RVMpwV.js.br +0 -0
  213. package/dist/web/assets/esm-B9RVMpwV.js.gz +0 -0
  214. package/dist/web/assets/everforest-dark-D59p7vAQ.js.br +0 -0
  215. package/dist/web/assets/everforest-dark-D59p7vAQ.js.gz +0 -0
  216. package/dist/web/assets/everforest-light-B3Qtud3V.js.br +0 -0
  217. package/dist/web/assets/everforest-light-B3Qtud3V.js.gz +0 -0
  218. package/dist/web/assets/explorer-body-DWyFKpWw.js +2 -0
  219. package/dist/web/assets/explorer-body-DWyFKpWw.js.br +0 -0
  220. package/dist/web/assets/explorer-body-DWyFKpWw.js.gz +0 -0
  221. package/dist/web/assets/{explorer-window-content-BeQocW3i.js → explorer-window-content-CgtS3nhS.js} +1 -1
  222. package/dist/web/assets/explorer-window-content-CgtS3nhS.js.br +0 -0
  223. package/dist/web/assets/explorer-window-content-CgtS3nhS.js.gz +0 -0
  224. package/dist/web/assets/{extension-manager-section-Bm2v3P-n.js → extension-manager-section-D7syyPQv.js} +1 -1
  225. package/dist/web/assets/extension-manager-section-D7syyPQv.js.br +0 -0
  226. package/dist/web/assets/extension-manager-section-D7syyPQv.js.gz +0 -0
  227. package/dist/web/assets/{extension-webview-CzxrAHyL.js → extension-webview-BkU4LB87.js} +1 -1
  228. package/dist/web/assets/extension-webview-BkU4LB87.js.br +0 -0
  229. package/dist/web/assets/extension-webview-BkU4LB87.js.gz +0 -0
  230. package/dist/web/assets/fennel-BCyHNUwf.js.br +0 -0
  231. package/dist/web/assets/fennel-BCyHNUwf.js.gz +0 -0
  232. package/dist/web/assets/file-icons-wS-OmEVu.js.br +0 -0
  233. package/dist/web/assets/file-icons-wS-OmEVu.js.gz +0 -0
  234. package/dist/web/assets/file-icons.generated-BtBErEwb.css.br +0 -0
  235. package/dist/web/assets/file-icons.generated-BtBErEwb.css.gz +0 -0
  236. package/dist/web/assets/file-store-Ds3qJ4hC.js.br +0 -0
  237. package/dist/web/assets/file-store-Ds3qJ4hC.js.gz +0 -0
  238. package/dist/web/assets/{files-settings-section-Bd-_GeZU.js → files-settings-section-BnQqhnUX.js} +1 -1
  239. package/dist/web/assets/files-settings-section-BnQqhnUX.js.br +0 -0
  240. package/dist/web/assets/files-settings-section-BnQqhnUX.js.gz +0 -0
  241. package/dist/web/assets/fish-DDDlLV2G.js.br +0 -0
  242. package/dist/web/assets/fish-DDDlLV2G.js.gz +0 -0
  243. package/dist/web/assets/fluent-By54R9tl.js.br +0 -0
  244. package/dist/web/assets/fluent-By54R9tl.js.gz +0 -0
  245. package/dist/web/assets/format-file-meta-PPi3ptkm.js.br +0 -0
  246. package/dist/web/assets/format-file-meta-PPi3ptkm.js.gz +0 -0
  247. package/dist/web/assets/fortran-fixed-form-CrXvLHyi.js.br +0 -0
  248. package/dist/web/assets/fortran-fixed-form-CrXvLHyi.js.gz +0 -0
  249. package/dist/web/assets/fortran-free-form-tP8mRym_.js.br +0 -0
  250. package/dist/web/assets/fortran-free-form-tP8mRym_.js.gz +0 -0
  251. package/dist/web/assets/fsharp-DCI4qAz_.js.br +0 -0
  252. package/dist/web/assets/fsharp-DCI4qAz_.js.gz +0 -0
  253. package/dist/web/assets/gdresource-Vb2kO1MG.js.br +0 -0
  254. package/dist/web/assets/gdresource-Vb2kO1MG.js.gz +0 -0
  255. package/dist/web/assets/gdscript-nHC2z6Te.js.br +0 -0
  256. package/dist/web/assets/gdscript-nHC2z6Te.js.gz +0 -0
  257. package/dist/web/assets/gdshader-K-cSmPlW.js.br +0 -0
  258. package/dist/web/assets/gdshader-K-cSmPlW.js.gz +0 -0
  259. package/dist/web/assets/general-settings-section-Chg1cFnJ.js +1 -0
  260. package/dist/web/assets/general-settings-section-Chg1cFnJ.js.br +0 -0
  261. package/dist/web/assets/general-settings-section-Chg1cFnJ.js.gz +0 -0
  262. package/dist/web/assets/genie-BAcRhvEe.js.br +0 -0
  263. package/dist/web/assets/genie-BAcRhvEe.js.gz +0 -0
  264. package/dist/web/assets/gherkin-CcifxMLb.js.br +0 -0
  265. package/dist/web/assets/gherkin-CcifxMLb.js.gz +0 -0
  266. package/dist/web/assets/git-commit-BMI_OWn-.js.br +0 -0
  267. package/dist/web/assets/git-commit-BMI_OWn-.js.gz +0 -0
  268. package/dist/web/assets/{git-log-panel-CtGxPzH6.js → git-log-panel-DoYx7qpu.js} +1 -1
  269. package/dist/web/assets/git-log-panel-DoYx7qpu.js.br +0 -0
  270. package/dist/web/assets/git-log-panel-DoYx7qpu.js.gz +0 -0
  271. package/dist/web/assets/git-repo-store-BCEPfUGT.js.br +0 -0
  272. package/dist/web/assets/git-repo-store-BCEPfUGT.js.gz +0 -0
  273. package/dist/web/assets/github-dark-67KKlMdB.js.br +0 -0
  274. package/dist/web/assets/github-dark-67KKlMdB.js.gz +0 -0
  275. package/dist/web/assets/github-dark-default-tja8pidR.js.br +0 -0
  276. package/dist/web/assets/github-dark-default-tja8pidR.js.gz +0 -0
  277. package/dist/web/assets/github-dark-dimmed-CtjhYQtx.js.br +0 -0
  278. package/dist/web/assets/github-dark-dimmed-CtjhYQtx.js.gz +0 -0
  279. package/dist/web/assets/github-dark-high-contrast-Bf-LPFgn.js.br +0 -0
  280. package/dist/web/assets/github-dark-high-contrast-Bf-LPFgn.js.gz +0 -0
  281. package/dist/web/assets/github-light-CbJxE7n3.js.br +0 -0
  282. package/dist/web/assets/github-light-CbJxE7n3.js.gz +0 -0
  283. package/dist/web/assets/github-light-default-DRQmdHxt.js.br +0 -0
  284. package/dist/web/assets/github-light-default-DRQmdHxt.js.gz +0 -0
  285. package/dist/web/assets/github-light-high-contrast-CJkDgTeM.js.br +0 -0
  286. package/dist/web/assets/github-light-high-contrast-CJkDgTeM.js.gz +0 -0
  287. package/dist/web/assets/gleam-D4LCl2ri.js.br +0 -0
  288. package/dist/web/assets/gleam-D4LCl2ri.js.gz +0 -0
  289. package/dist/web/assets/{glide-data-grid-iSo2vP0q.js → glide-data-grid-DzHd1zUz.js} +4 -4
  290. package/dist/web/assets/glide-data-grid-DzHd1zUz.js.br +0 -0
  291. package/dist/web/assets/glide-data-grid-DzHd1zUz.js.gz +0 -0
  292. package/dist/web/assets/glide-data-grid-nthEL3fk.css.br +0 -0
  293. package/dist/web/assets/glide-data-grid-nthEL3fk.css.gz +0 -0
  294. package/dist/web/assets/glimmer-js-BmNNiR0Z.js.br +0 -0
  295. package/dist/web/assets/glimmer-js-BmNNiR0Z.js.gz +0 -0
  296. package/dist/web/assets/glimmer-ts-DQE2Ufha.js.br +0 -0
  297. package/dist/web/assets/glimmer-ts-DQE2Ufha.js.gz +0 -0
  298. package/dist/web/assets/glsl-BcIDsxRJ.js.br +0 -0
  299. package/dist/web/assets/glsl-BcIDsxRJ.js.gz +0 -0
  300. package/dist/web/assets/gn-COY8zZmC.js.br +0 -0
  301. package/dist/web/assets/gn-COY8zZmC.js.gz +0 -0
  302. package/dist/web/assets/gnuplot-ROk1VitR.js.br +0 -0
  303. package/dist/web/assets/gnuplot-ROk1VitR.js.gz +0 -0
  304. package/dist/web/assets/go-H30c3p0C.js.br +0 -0
  305. package/dist/web/assets/go-H30c3p0C.js.gz +0 -0
  306. package/dist/web/assets/graphql-DGKSLmGH.js.br +0 -0
  307. package/dist/web/assets/graphql-DGKSLmGH.js.gz +0 -0
  308. package/dist/web/assets/groovy-DBLCaelV.js.br +0 -0
  309. package/dist/web/assets/groovy-DBLCaelV.js.gz +0 -0
  310. package/dist/web/assets/group-chat-tab-DPbPLDNH.js +1 -0
  311. package/dist/web/assets/group-chat-tab-DPbPLDNH.js.br +0 -0
  312. package/dist/web/assets/group-chat-tab-DPbPLDNH.js.gz +0 -0
  313. package/dist/web/assets/gruvbox-dark-hard-DJy4irps.js.br +0 -0
  314. package/dist/web/assets/gruvbox-dark-hard-DJy4irps.js.gz +0 -0
  315. package/dist/web/assets/gruvbox-dark-medium-Dhfw1QTO.js.br +0 -0
  316. package/dist/web/assets/gruvbox-dark-medium-Dhfw1QTO.js.gz +0 -0
  317. package/dist/web/assets/gruvbox-dark-soft-BncJU-8w.js.br +0 -0
  318. package/dist/web/assets/gruvbox-dark-soft-BncJU-8w.js.gz +0 -0
  319. package/dist/web/assets/gruvbox-light-hard-Cq12_YvM.js.br +0 -0
  320. package/dist/web/assets/gruvbox-light-hard-Cq12_YvM.js.gz +0 -0
  321. package/dist/web/assets/gruvbox-light-medium-DqVja5_v.js.br +0 -0
  322. package/dist/web/assets/gruvbox-light-medium-DqVja5_v.js.gz +0 -0
  323. package/dist/web/assets/gruvbox-light-soft-IvwhveGF.js.br +0 -0
  324. package/dist/web/assets/gruvbox-light-soft-IvwhveGF.js.gz +0 -0
  325. package/dist/web/assets/hack-YiC8bEIb.js.br +0 -0
  326. package/dist/web/assets/hack-YiC8bEIb.js.gz +0 -0
  327. package/dist/web/assets/haml-DjblxAsz.js.br +0 -0
  328. package/dist/web/assets/haml-DjblxAsz.js.gz +0 -0
  329. package/dist/web/assets/handlebars-BQepOXaU.js.br +0 -0
  330. package/dist/web/assets/handlebars-BQepOXaU.js.gz +0 -0
  331. package/dist/web/assets/haskell-DA1JV-MC.js.br +0 -0
  332. package/dist/web/assets/haskell-DA1JV-MC.js.gz +0 -0
  333. package/dist/web/assets/haxe-V9RTRc5E.js.br +0 -0
  334. package/dist/web/assets/haxe-V9RTRc5E.js.gz +0 -0
  335. package/dist/web/assets/hcl-hr1lyZ10.js.br +0 -0
  336. package/dist/web/assets/hcl-hr1lyZ10.js.gz +0 -0
  337. package/dist/web/assets/hjson-D3vW3i7X.js.br +0 -0
  338. package/dist/web/assets/hjson-D3vW3i7X.js.gz +0 -0
  339. package/dist/web/assets/hlsl-BB85gfJT.js.br +0 -0
  340. package/dist/web/assets/hlsl-BB85gfJT.js.gz +0 -0
  341. package/dist/web/assets/horizon-DU8OOnj8.js.br +0 -0
  342. package/dist/web/assets/horizon-DU8OOnj8.js.gz +0 -0
  343. package/dist/web/assets/horizon-bright-DNMUclW6.js.br +0 -0
  344. package/dist/web/assets/horizon-bright-DNMUclW6.js.gz +0 -0
  345. package/dist/web/assets/houston-DAiZKf6T.js.br +0 -0
  346. package/dist/web/assets/houston-DAiZKf6T.js.gz +0 -0
  347. package/dist/web/assets/html-Cayj_2GP.js.br +0 -0
  348. package/dist/web/assets/html-Cayj_2GP.js.gz +0 -0
  349. package/dist/web/assets/http-BeLfdGdz.js.br +0 -0
  350. package/dist/web/assets/http-BeLfdGdz.js.gz +0 -0
  351. package/dist/web/assets/hurl-D9rypCLK.js.br +0 -0
  352. package/dist/web/assets/hurl-D9rypCLK.js.gz +0 -0
  353. package/dist/web/assets/hxml-clG8mmSH.js.br +0 -0
  354. package/dist/web/assets/hxml-clG8mmSH.js.gz +0 -0
  355. package/dist/web/assets/hy-C6Zv0LMe.js.br +0 -0
  356. package/dist/web/assets/hy-C6Zv0LMe.js.gz +0 -0
  357. package/dist/web/assets/icons-DQjqk0lJ.js.br +0 -0
  358. package/dist/web/assets/icons-DQjqk0lJ.js.gz +0 -0
  359. package/dist/web/assets/imba-Didnp6Y-.js.br +0 -0
  360. package/dist/web/assets/imba-Didnp6Y-.js.gz +0 -0
  361. package/dist/web/assets/index-CWL5emyr.css +1 -0
  362. package/dist/web/assets/index-CWL5emyr.css.br +0 -0
  363. package/dist/web/assets/index-CWL5emyr.css.gz +0 -0
  364. package/dist/web/assets/index-Dh3WkQrC.js +52 -0
  365. package/dist/web/assets/index-Dh3WkQrC.js.br +0 -0
  366. package/dist/web/assets/index-Dh3WkQrC.js.gz +0 -0
  367. package/dist/web/assets/ini-m0T7q4gQ.js.br +5 -0
  368. package/dist/web/assets/ini-m0T7q4gQ.js.gz +0 -0
  369. package/dist/web/assets/java-Buy07jGn.js.br +0 -0
  370. package/dist/web/assets/java-Buy07jGn.js.gz +0 -0
  371. package/dist/web/assets/javascript-Cjq3CbRL.js.br +0 -0
  372. package/dist/web/assets/javascript-Cjq3CbRL.js.gz +0 -0
  373. package/dist/web/assets/jinja-BShBWfs5.js.br +0 -0
  374. package/dist/web/assets/jinja-BShBWfs5.js.gz +0 -0
  375. package/dist/web/assets/{jira-watcher-section-kyifZPTv.js → jira-watcher-section-DhcwaPyZ.js} +1 -1
  376. package/dist/web/assets/jira-watcher-section-DhcwaPyZ.js.br +0 -0
  377. package/dist/web/assets/jira-watcher-section-DhcwaPyZ.js.gz +0 -0
  378. package/dist/web/assets/jison-dN2Nf_Dr.js.br +0 -0
  379. package/dist/web/assets/jison-dN2Nf_Dr.js.gz +0 -0
  380. package/dist/web/assets/json-BSVu8IqD.js.br +0 -0
  381. package/dist/web/assets/json-BSVu8IqD.js.gz +0 -0
  382. package/dist/web/assets/json5-NN_Vb7e6.js.br +0 -0
  383. package/dist/web/assets/json5-NN_Vb7e6.js.gz +0 -0
  384. package/dist/web/assets/jsonc-BdyZhBUw.js.br +0 -0
  385. package/dist/web/assets/jsonc-BdyZhBUw.js.gz +0 -0
  386. package/dist/web/assets/jsonl-BsDSNvwi.js.br +0 -0
  387. package/dist/web/assets/jsonl-BsDSNvwi.js.gz +0 -0
  388. package/dist/web/assets/jsonnet-Gm963F-U.js.br +0 -0
  389. package/dist/web/assets/jsonnet-Gm963F-U.js.gz +0 -0
  390. package/dist/web/assets/jssm-Ds3bKWgJ.js.br +0 -0
  391. package/dist/web/assets/jssm-Ds3bKWgJ.js.gz +0 -0
  392. package/dist/web/assets/jsx-BT5mW58X.js.br +0 -0
  393. package/dist/web/assets/jsx-BT5mW58X.js.gz +0 -0
  394. package/dist/web/assets/julia-5U0vR-uJ.js.br +0 -0
  395. package/dist/web/assets/julia-5U0vR-uJ.js.gz +0 -0
  396. package/dist/web/assets/just-BMppVRy6.js.br +0 -0
  397. package/dist/web/assets/just-BMppVRy6.js.gz +0 -0
  398. package/dist/web/assets/kanagawa-dragon-BvNvf7xd.js.br +0 -0
  399. package/dist/web/assets/kanagawa-dragon-BvNvf7xd.js.gz +0 -0
  400. package/dist/web/assets/kanagawa-lotus-CuSiliSn.js.br +0 -0
  401. package/dist/web/assets/kanagawa-lotus-CuSiliSn.js.gz +0 -0
  402. package/dist/web/assets/kanagawa-wave-C6g-d6jT.js.br +0 -0
  403. package/dist/web/assets/kanagawa-wave-C6g-d6jT.js.gz +0 -0
  404. package/dist/web/assets/kdl-Bx4kZef-.js.br +0 -0
  405. package/dist/web/assets/kdl-Bx4kZef-.js.gz +0 -0
  406. package/dist/web/assets/keybindings-store-BTDoQ-9J.js +1 -0
  407. package/dist/web/assets/{keyboard-shortcuts-section-D2uJq4x9.js → keyboard-shortcuts-section-DQitR9HX.js} +1 -1
  408. package/dist/web/assets/keyboard-shortcuts-section-DQitR9HX.js.br +0 -0
  409. package/dist/web/assets/keyboard-shortcuts-section-DQitR9HX.js.gz +0 -0
  410. package/dist/web/assets/kotlin-qvaVvCcm.js.br +0 -0
  411. package/dist/web/assets/kotlin-qvaVvCcm.js.gz +0 -0
  412. package/dist/web/assets/kusto-BPLyNCN6.js.br +0 -0
  413. package/dist/web/assets/kusto-BPLyNCN6.js.gz +0 -0
  414. package/dist/web/assets/laserwave-Sf8ZEhWP.js.br +0 -0
  415. package/dist/web/assets/laserwave-Sf8ZEhWP.js.gz +0 -0
  416. package/dist/web/assets/latex-DSSOKjis.js.br +0 -0
  417. package/dist/web/assets/latex-DSSOKjis.js.gz +0 -0
  418. package/dist/web/assets/lean-DGe6uqgk.js.br +0 -0
  419. package/dist/web/assets/lean-DGe6uqgk.js.gz +0 -0
  420. package/dist/web/assets/less-CqM85x-9.js.br +0 -0
  421. package/dist/web/assets/less-CqM85x-9.js.gz +0 -0
  422. package/dist/web/assets/lib-DBeVwCnC.js.br +0 -0
  423. package/dist/web/assets/lib-DBeVwCnC.js.gz +0 -0
  424. package/dist/web/assets/libesm-CPh1Av0r.js.br +0 -0
  425. package/dist/web/assets/libesm-CPh1Av0r.js.gz +0 -0
  426. package/dist/web/assets/light-plus-DBtKwhFA.js.br +0 -0
  427. package/dist/web/assets/light-plus-DBtKwhFA.js.gz +0 -0
  428. package/dist/web/assets/liquid-C24dKoyI.js.br +0 -0
  429. package/dist/web/assets/liquid-C24dKoyI.js.gz +0 -0
  430. package/dist/web/assets/llvm-Dpbq3gky.js.br +0 -0
  431. package/dist/web/assets/llvm-Dpbq3gky.js.gz +0 -0
  432. package/dist/web/assets/log-qKMcPm9S.js.br +0 -0
  433. package/dist/web/assets/log-qKMcPm9S.js.gz +0 -0
  434. package/dist/web/assets/logo-DFo7i5KH.js.br +0 -0
  435. package/dist/web/assets/logo-DFo7i5KH.js.gz +0 -0
  436. package/dist/web/assets/lua-DNOsnyhn.js.br +0 -0
  437. package/dist/web/assets/lua-DNOsnyhn.js.gz +0 -0
  438. package/dist/web/assets/luau-DGlqWFyL.js.br +0 -0
  439. package/dist/web/assets/luau-DGlqWFyL.js.gz +0 -0
  440. package/dist/web/assets/make-CixdvUQe.js.br +0 -0
  441. package/dist/web/assets/make-CixdvUQe.js.gz +0 -0
  442. package/dist/web/assets/markdown-CmRnbngE.js.br +0 -0
  443. package/dist/web/assets/markdown-CmRnbngE.js.gz +0 -0
  444. package/dist/web/assets/{markdown-renderer-CLUux0vA.js → markdown-renderer-2son_wrq.js} +1 -1
  445. package/dist/web/assets/markdown-renderer-CpWOpNyX.js +3 -0
  446. package/dist/web/assets/markdown-renderer-CpWOpNyX.js.br +0 -0
  447. package/dist/web/assets/markdown-renderer-CpWOpNyX.js.gz +0 -0
  448. package/dist/web/assets/marko-26MHO_Q9.js.br +0 -0
  449. package/dist/web/assets/marko-26MHO_Q9.js.gz +0 -0
  450. package/dist/web/assets/material-theme-WDUbafB-.js.br +0 -0
  451. package/dist/web/assets/material-theme-WDUbafB-.js.gz +0 -0
  452. package/dist/web/assets/material-theme-darker-u8y2xpOk.js.br +0 -0
  453. package/dist/web/assets/material-theme-darker-u8y2xpOk.js.gz +0 -0
  454. package/dist/web/assets/material-theme-lighter-cyQZK3Tg.js.br +0 -0
  455. package/dist/web/assets/material-theme-lighter-cyQZK3Tg.js.gz +0 -0
  456. package/dist/web/assets/material-theme-ocean-LBAVvw7k.js.br +0 -0
  457. package/dist/web/assets/material-theme-ocean-LBAVvw7k.js.gz +0 -0
  458. package/dist/web/assets/material-theme-palenight-BJqhBxL0.js.br +0 -0
  459. package/dist/web/assets/material-theme-palenight-BJqhBxL0.js.gz +0 -0
  460. package/dist/web/assets/matlab-B38sOJee.js.br +0 -0
  461. package/dist/web/assets/matlab-B38sOJee.js.gz +0 -0
  462. package/dist/web/assets/mdc-Dhw9mGrC.js.br +0 -0
  463. package/dist/web/assets/mdc-Dhw9mGrC.js.gz +0 -0
  464. package/dist/web/assets/mdx-C8QrE_IW.js.br +0 -0
  465. package/dist/web/assets/mdx-C8QrE_IW.js.gz +0 -0
  466. package/dist/web/assets/mermaid-BQ-eeU8A.js.br +0 -0
  467. package/dist/web/assets/mermaid-BQ-eeU8A.js.gz +0 -0
  468. package/dist/web/assets/min-dark-D4gNa5tv.js.br +0 -0
  469. package/dist/web/assets/min-dark-D4gNa5tv.js.gz +0 -0
  470. package/dist/web/assets/min-light-Dfbhn_PL.js.br +0 -0
  471. package/dist/web/assets/min-light-Dfbhn_PL.js.gz +0 -0
  472. package/dist/web/assets/mipsasm-bLOhJkdm.js.br +0 -0
  473. package/dist/web/assets/mipsasm-bLOhJkdm.js.gz +0 -0
  474. package/dist/web/assets/mobile-bottom-sheet-C3TniEP-.js.br +0 -0
  475. package/dist/web/assets/mobile-bottom-sheet-C3TniEP-.js.gz +0 -0
  476. package/dist/web/assets/{mobile-explorer-sheet-BHQDzpwK.js → mobile-explorer-sheet-CPUuOwTi.js} +1 -1
  477. package/dist/web/assets/mobile-explorer-sheet-CPUuOwTi.js.br +0 -0
  478. package/dist/web/assets/mobile-explorer-sheet-CPUuOwTi.js.gz +0 -0
  479. package/dist/web/assets/mojo-B0BCOMQW.js.br +0 -0
  480. package/dist/web/assets/mojo-B0BCOMQW.js.gz +0 -0
  481. package/dist/web/assets/monaco/vs/_commonjsHelpers-CT9FvmAN.js +1 -0
  482. package/dist/web/assets/monaco/vs/abap-D-t0cyap.js +1 -0
  483. package/dist/web/assets/monaco/vs/abap-D-t0cyap.js.br +0 -0
  484. package/dist/web/assets/monaco/vs/abap-D-t0cyap.js.gz +0 -0
  485. package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js +1 -0
  486. package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js.br +0 -0
  487. package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js.gz +0 -0
  488. package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js +93 -0
  489. package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js.br +0 -0
  490. package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js.gz +0 -0
  491. package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js +26 -0
  492. package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js.br +0 -0
  493. package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js.gz +0 -0
  494. package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js +470 -0
  495. package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js.br +0 -0
  496. package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js.gz +0 -0
  497. package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js +58 -0
  498. package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js.br +0 -0
  499. package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js.gz +0 -0
  500. package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js +67731 -0
  501. package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js.br +0 -0
  502. package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js.gz +0 -0
  503. package/dist/web/assets/monaco/vs/azcli-BA0tQDCg.js +1 -0
  504. package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js +1 -0
  505. package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js.br +0 -0
  506. package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js.gz +0 -0
  507. package/dist/web/assets/monaco/vs/bat-C397hTD6.js +1 -0
  508. package/dist/web/assets/monaco/vs/bat-C397hTD6.js.br +0 -0
  509. package/dist/web/assets/monaco/vs/bat-C397hTD6.js.gz +0 -0
  510. package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js +2 -0
  511. package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js.br +0 -0
  512. package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js.gz +0 -0
  513. package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js +1 -0
  514. package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js.br +0 -0
  515. package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js.gz +0 -0
  516. package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js +1 -0
  517. package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js.br +0 -0
  518. package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js.gz +0 -0
  519. package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js +1 -0
  520. package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js.br +0 -0
  521. package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js.gz +0 -0
  522. package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js +1 -0
  523. package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js.br +0 -0
  524. package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js.gz +0 -0
  525. package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js +1 -0
  526. package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js.br +0 -0
  527. package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js.gz +0 -0
  528. package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js +1 -0
  529. package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js.br +0 -0
  530. package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js.gz +0 -0
  531. package/dist/web/assets/monaco/vs/css-CaeNmE3S.js +3 -0
  532. package/dist/web/assets/monaco/vs/css-CaeNmE3S.js.br +0 -0
  533. package/dist/web/assets/monaco/vs/css-CaeNmE3S.js.gz +0 -0
  534. package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js +1 -0
  535. package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js.br +0 -0
  536. package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js.gz +0 -0
  537. package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js +1 -0
  538. package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js.br +0 -0
  539. package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js.gz +0 -0
  540. package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js +1 -0
  541. package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js.br +0 -0
  542. package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js.gz +0 -0
  543. package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js +1 -0
  544. package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js.br +0 -0
  545. package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js.gz +0 -0
  546. package/dist/web/assets/monaco/vs/ecl-30fUercY.js +1 -0
  547. package/dist/web/assets/monaco/vs/ecl-30fUercY.js.br +0 -0
  548. package/dist/web/assets/monaco/vs/ecl-30fUercY.js.gz +0 -0
  549. package/dist/web/assets/monaco/vs/editor/editor.main.css +1 -0
  550. package/dist/web/assets/monaco/vs/editor/editor.main.css.br +0 -0
  551. package/dist/web/assets/monaco/vs/editor/editor.main.css.gz +0 -0
  552. package/dist/web/assets/monaco/vs/editor/editor.main.js +5 -0
  553. package/dist/web/assets/monaco/vs/editor/editor.main.js.br +0 -0
  554. package/dist/web/assets/monaco/vs/editor/editor.main.js.gz +0 -0
  555. package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js +903 -0
  556. package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js.br +0 -0
  557. package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js.gz +0 -0
  558. package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js +1 -0
  559. package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js.br +0 -0
  560. package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js.gz +0 -0
  561. package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js +1 -0
  562. package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js.br +0 -0
  563. package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js.gz +0 -0
  564. package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js +3 -0
  565. package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js.br +0 -0
  566. package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js.gz +0 -0
  567. package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js +1 -0
  568. package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js.br +0 -0
  569. package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js.gz +0 -0
  570. package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js +1 -0
  571. package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js.br +0 -0
  572. package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js.gz +0 -0
  573. package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js +1 -0
  574. package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js.br +0 -0
  575. package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js.gz +0 -0
  576. package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js +1 -0
  577. package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js.br +0 -0
  578. package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js.gz +0 -0
  579. package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js +1 -0
  580. package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js.br +0 -0
  581. package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js.gz +0 -0
  582. package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js +1 -0
  583. package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js.br +0 -0
  584. package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js.gz +0 -0
  585. package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js +1 -0
  586. package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js.br +0 -0
  587. package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js.gz +0 -0
  588. package/dist/web/assets/monaco/vs/ini-CsNwO04R.js +1 -0
  589. package/dist/web/assets/monaco/vs/ini-CsNwO04R.js.br +0 -0
  590. package/dist/web/assets/monaco/vs/ini-CsNwO04R.js.gz +0 -0
  591. package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js +1 -0
  592. package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js.br +0 -0
  593. package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js.gz +0 -0
  594. package/dist/web/assets/monaco/vs/javascript-PczUCGdz.js +1 -0
  595. package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js +7 -0
  596. package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js.br +0 -0
  597. package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js.gz +0 -0
  598. package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js +1 -0
  599. package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js.br +0 -0
  600. package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js.gz +0 -0
  601. package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js +1 -0
  602. package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js.br +0 -0
  603. package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js.gz +0 -0
  604. package/dist/web/assets/monaco/vs/language/css/monaco.contribution.js +1 -0
  605. package/dist/web/assets/monaco/vs/language/html/monaco.contribution.js +1 -0
  606. package/dist/web/assets/monaco/vs/language/json/monaco.contribution.js +1 -0
  607. package/dist/web/assets/monaco/vs/language/typescript/monaco.contribution.js +1 -0
  608. package/dist/web/assets/monaco/vs/less-C0eDYdqa.js +2 -0
  609. package/dist/web/assets/monaco/vs/less-C0eDYdqa.js.br +0 -0
  610. package/dist/web/assets/monaco/vs/less-C0eDYdqa.js.gz +0 -0
  611. package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js +1 -0
  612. package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js.br +0 -0
  613. package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js.gz +0 -0
  614. package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js +1 -0
  615. package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js.br +0 -0
  616. package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js.gz +0 -0
  617. package/dist/web/assets/monaco/vs/loader.js +1368 -0
  618. package/dist/web/assets/monaco/vs/loader.js.br +0 -0
  619. package/dist/web/assets/monaco/vs/loader.js.gz +0 -0
  620. package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js +4 -0
  621. package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js.br +0 -0
  622. package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js.gz +0 -0
  623. package/dist/web/assets/monaco/vs/lua-DtygF91M.js +1 -0
  624. package/dist/web/assets/monaco/vs/lua-DtygF91M.js.br +0 -0
  625. package/dist/web/assets/monaco/vs/lua-DtygF91M.js.gz +0 -0
  626. package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js +1 -0
  627. package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js.br +0 -0
  628. package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js.gz +0 -0
  629. package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js +1 -0
  630. package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js.br +0 -0
  631. package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js.gz +0 -0
  632. package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js +1 -0
  633. package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js.br +0 -0
  634. package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js.gz +0 -0
  635. package/dist/web/assets/monaco/vs/mips-CiYP61RB.js +1 -0
  636. package/dist/web/assets/monaco/vs/mips-CiYP61RB.js.br +0 -0
  637. package/dist/web/assets/monaco/vs/mips-CiYP61RB.js.gz +0 -0
  638. package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js +1 -0
  639. package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js.br +0 -0
  640. package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js.gz +0 -0
  641. package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js +1 -0
  642. package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js.br +0 -0
  643. package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js.gz +0 -0
  644. package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js +1 -0
  645. package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js.br +0 -0
  646. package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js.gz +0 -0
  647. package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js +1 -0
  648. package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js.br +0 -0
  649. package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js.gz +0 -0
  650. package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js +1 -0
  651. package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js.br +0 -0
  652. package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js.gz +0 -0
  653. package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js +1 -0
  654. package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js.br +0 -0
  655. package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js.gz +0 -0
  656. package/dist/web/assets/monaco/vs/nls.messages-loader.js +1 -0
  657. package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js +1 -0
  658. package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js.br +0 -0
  659. package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js.gz +0 -0
  660. package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js +1 -0
  661. package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js.br +0 -0
  662. package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js.gz +0 -0
  663. package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
  664. package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js.br +0 -0
  665. package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js.gz +0 -0
  666. package/dist/web/assets/monaco/vs/perl-DABw_TcH.js +1 -0
  667. package/dist/web/assets/monaco/vs/perl-DABw_TcH.js.br +0 -0
  668. package/dist/web/assets/monaco/vs/perl-DABw_TcH.js.gz +0 -0
  669. package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js +1 -0
  670. package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js.br +0 -0
  671. package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js.gz +0 -0
  672. package/dist/web/assets/monaco/vs/php-D_kh-9LK.js +1 -0
  673. package/dist/web/assets/monaco/vs/php-D_kh-9LK.js.br +0 -0
  674. package/dist/web/assets/monaco/vs/php-D_kh-9LK.js.gz +0 -0
  675. package/dist/web/assets/monaco/vs/pla-VfZjczW0.js +1 -0
  676. package/dist/web/assets/monaco/vs/pla-VfZjczW0.js.br +0 -0
  677. package/dist/web/assets/monaco/vs/pla-VfZjczW0.js.gz +0 -0
  678. package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js +1 -0
  679. package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js.br +0 -0
  680. package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js.gz +0 -0
  681. package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
  682. package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js.br +0 -0
  683. package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js.gz +0 -0
  684. package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js +1 -0
  685. package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js.br +0 -0
  686. package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js.gz +0 -0
  687. package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js +2 -0
  688. package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js.br +0 -0
  689. package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js.gz +0 -0
  690. package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js +1 -0
  691. package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js.br +0 -0
  692. package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js.gz +0 -0
  693. package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js +1 -0
  694. package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js.br +0 -0
  695. package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js.gz +0 -0
  696. package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js +1 -0
  697. package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js.br +0 -0
  698. package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js.gz +0 -0
  699. package/dist/web/assets/monaco/vs/r-f8dDdrp4.js +1 -0
  700. package/dist/web/assets/monaco/vs/r-f8dDdrp4.js.br +0 -0
  701. package/dist/web/assets/monaco/vs/r-f8dDdrp4.js.gz +0 -0
  702. package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js +1 -0
  703. package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js.br +0 -0
  704. package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js.gz +0 -0
  705. package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js +1 -0
  706. package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js.br +0 -0
  707. package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js.gz +0 -0
  708. package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js +1 -0
  709. package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js.br +0 -0
  710. package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js.gz +0 -0
  711. package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
  712. package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js.br +0 -0
  713. package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js.gz +0 -0
  714. package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js +1 -0
  715. package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js.br +0 -0
  716. package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js.gz +0 -0
  717. package/dist/web/assets/monaco/vs/rust-Bfetafyc.js +1 -0
  718. package/dist/web/assets/monaco/vs/rust-Bfetafyc.js.br +0 -0
  719. package/dist/web/assets/monaco/vs/rust-Bfetafyc.js.gz +0 -0
  720. package/dist/web/assets/monaco/vs/sb-3GYllVck.js +1 -0
  721. package/dist/web/assets/monaco/vs/sb-3GYllVck.js.br +0 -0
  722. package/dist/web/assets/monaco/vs/sb-3GYllVck.js.gz +0 -0
  723. package/dist/web/assets/monaco/vs/scala-foMgrKo1.js +1 -0
  724. package/dist/web/assets/monaco/vs/scala-foMgrKo1.js.br +0 -0
  725. package/dist/web/assets/monaco/vs/scala-foMgrKo1.js.gz +0 -0
  726. package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js +1 -0
  727. package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js.br +0 -0
  728. package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js.gz +0 -0
  729. package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js +3 -0
  730. package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js.br +0 -0
  731. package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js.gz +0 -0
  732. package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js +1 -0
  733. package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js.br +0 -0
  734. package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js.gz +0 -0
  735. package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js +1 -0
  736. package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js.br +0 -0
  737. package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js.gz +0 -0
  738. package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js +1 -0
  739. package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js.br +0 -0
  740. package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js.gz +0 -0
  741. package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js +1 -0
  742. package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js.br +0 -0
  743. package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js.gz +0 -0
  744. package/dist/web/assets/monaco/vs/sql-32GpJSV2.js +1 -0
  745. package/dist/web/assets/monaco/vs/sql-32GpJSV2.js.br +0 -0
  746. package/dist/web/assets/monaco/vs/sql-32GpJSV2.js.gz +0 -0
  747. package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js +1 -0
  748. package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js.br +0 -0
  749. package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js.gz +0 -0
  750. package/dist/web/assets/monaco/vs/swift-n-2HociN.js +3 -0
  751. package/dist/web/assets/monaco/vs/swift-n-2HociN.js.br +0 -0
  752. package/dist/web/assets/monaco/vs/swift-n-2HociN.js.gz +0 -0
  753. package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
  754. package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js.br +0 -0
  755. package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js.gz +0 -0
  756. package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js +1 -0
  757. package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js.br +0 -0
  758. package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js.gz +0 -0
  759. package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js +11 -0
  760. package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js.br +0 -0
  761. package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js.gz +0 -0
  762. package/dist/web/assets/monaco/vs/twig-C6taOxMV.js +1 -0
  763. package/dist/web/assets/monaco/vs/twig-C6taOxMV.js.br +0 -0
  764. package/dist/web/assets/monaco/vs/twig-C6taOxMV.js.gz +0 -0
  765. package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js +1 -0
  766. package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js.br +0 -0
  767. package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js.gz +0 -0
  768. package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js +1 -0
  769. package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js.br +0 -0
  770. package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js.gz +0 -0
  771. package/dist/web/assets/monaco/vs/vb-Dyb2648j.js +1 -0
  772. package/dist/web/assets/monaco/vs/vb-Dyb2648j.js.br +0 -0
  773. package/dist/web/assets/monaco/vs/vb-Dyb2648j.js.gz +0 -0
  774. package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js +298 -0
  775. package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js.br +0 -0
  776. package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js.gz +0 -0
  777. package/dist/web/assets/monaco/vs/workers-DcJshg-q.js +1 -0
  778. package/dist/web/assets/monaco/vs/workers-DcJshg-q.js.br +0 -0
  779. package/dist/web/assets/monaco/vs/workers-DcJshg-q.js.gz +0 -0
  780. package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js +1 -0
  781. package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js.br +0 -0
  782. package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js.gz +0 -0
  783. package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js +1 -0
  784. package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js.br +0 -0
  785. package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js.gz +0 -0
  786. package/dist/web/assets/monokai-Bdw_07OM.js.br +0 -0
  787. package/dist/web/assets/monokai-Bdw_07OM.js.gz +0 -0
  788. package/dist/web/assets/moonbit-BFdGaeuk.js.br +0 -0
  789. package/dist/web/assets/moonbit-BFdGaeuk.js.gz +0 -0
  790. package/dist/web/assets/move-CyXQFGPM.js.br +0 -0
  791. package/dist/web/assets/move-CyXQFGPM.js.gz +0 -0
  792. package/dist/web/assets/narrat-9DvTD3_3.js.br +0 -0
  793. package/dist/web/assets/narrat-9DvTD3_3.js.gz +0 -0
  794. package/dist/web/assets/nextflow-groovy-C4VY3kNY.js.br +0 -0
  795. package/dist/web/assets/nextflow-groovy-C4VY3kNY.js.gz +0 -0
  796. package/dist/web/assets/nextflow-xH4oJTex.js.br +0 -0
  797. package/dist/web/assets/nextflow-xH4oJTex.js.gz +0 -0
  798. package/dist/web/assets/nginx-CMz4w0M8.js.br +0 -0
  799. package/dist/web/assets/nginx-CMz4w0M8.js.gz +0 -0
  800. package/dist/web/assets/night-owl-feYm66V0.js.br +0 -0
  801. package/dist/web/assets/night-owl-feYm66V0.js.gz +0 -0
  802. package/dist/web/assets/night-owl-light-DALqFjvx.js.br +0 -0
  803. package/dist/web/assets/night-owl-light-DALqFjvx.js.gz +0 -0
  804. package/dist/web/assets/nim-D8FnIYsx.js.br +0 -0
  805. package/dist/web/assets/nim-D8FnIYsx.js.gz +0 -0
  806. package/dist/web/assets/nix-C1kPA9Sw.js.br +0 -0
  807. package/dist/web/assets/nix-C1kPA9Sw.js.gz +0 -0
  808. package/dist/web/assets/nord-1dvrj1Al.js.br +0 -0
  809. package/dist/web/assets/nord-1dvrj1Al.js.gz +0 -0
  810. package/dist/web/assets/notification-store-CLD8V5pA.js +1 -0
  811. package/dist/web/assets/{notifications-settings-section-DqlPDfNX.js → notifications-settings-section-4gjKK-DH.js} +1 -1
  812. package/dist/web/assets/notifications-settings-section-4gjKK-DH.js.br +5 -0
  813. package/dist/web/assets/notifications-settings-section-4gjKK-DH.js.gz +0 -0
  814. package/dist/web/assets/number-overlay-editor-CRGwULhR.js.br +0 -0
  815. package/dist/web/assets/number-overlay-editor-CRGwULhR.js.gz +0 -0
  816. package/dist/web/assets/nushell-DSQ_9Uqj.js.br +0 -0
  817. package/dist/web/assets/nushell-DSQ_9Uqj.js.gz +0 -0
  818. package/dist/web/assets/objective-c-Dhcn5ZK8.js.br +0 -0
  819. package/dist/web/assets/objective-c-Dhcn5ZK8.js.gz +0 -0
  820. package/dist/web/assets/objective-cpp-CGVYCSrp.js.br +0 -0
  821. package/dist/web/assets/objective-cpp-CGVYCSrp.js.gz +0 -0
  822. package/dist/web/assets/ocaml-rxXW21An.js.br +0 -0
  823. package/dist/web/assets/ocaml-rxXW21An.js.gz +0 -0
  824. package/dist/web/assets/odin-ClSJX2DE.js.br +0 -0
  825. package/dist/web/assets/odin-ClSJX2DE.js.gz +0 -0
  826. package/dist/web/assets/onboarding-entry-kqfwlUXT.js +1 -0
  827. package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js +1 -0
  828. package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js.br +0 -0
  829. package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js.gz +0 -0
  830. package/dist/web/assets/one-dark-pro-3gbWDfFW.js.br +0 -0
  831. package/dist/web/assets/one-dark-pro-3gbWDfFW.js.gz +0 -0
  832. package/dist/web/assets/one-light-C2q5ZZAw.js.br +0 -0
  833. package/dist/web/assets/one-light-C2q5ZZAw.js.gz +0 -0
  834. package/dist/web/assets/openscad-eHXeafBl.js.br +0 -0
  835. package/dist/web/assets/openscad-eHXeafBl.js.gz +0 -0
  836. package/dist/web/assets/{overview-panel-Di-3aV9p.js → overview-panel-CF7BuqLZ.js} +1 -1
  837. package/dist/web/assets/overview-panel-CF7BuqLZ.js.br +0 -0
  838. package/dist/web/assets/overview-panel-CF7BuqLZ.js.gz +0 -0
  839. package/dist/web/assets/panel-store-D20Zuf3i.js.br +0 -0
  840. package/dist/web/assets/panel-store-D20Zuf3i.js.gz +0 -0
  841. package/dist/web/assets/pascal-kKha3Txs.js.br +0 -0
  842. package/dist/web/assets/pascal-kKha3Txs.js.gz +0 -0
  843. package/dist/web/assets/pdf-preview-OvVOptPh.js.br +0 -0
  844. package/dist/web/assets/pdf-preview-OvVOptPh.js.gz +0 -0
  845. package/dist/web/assets/perl-D9iNWYwb.js.br +0 -0
  846. package/dist/web/assets/perl-D9iNWYwb.js.gz +0 -0
  847. package/dist/web/assets/php-Bw3Qo0Zv.js.br +0 -0
  848. package/dist/web/assets/php-Bw3Qo0Zv.js.gz +0 -0
  849. package/dist/web/assets/pkl-CTiPytg-.js.br +0 -0
  850. package/dist/web/assets/pkl-CTiPytg-.js.gz +0 -0
  851. package/dist/web/assets/plastic-D1Ygezi4.js.br +0 -0
  852. package/dist/web/assets/plastic-D1Ygezi4.js.gz +0 -0
  853. package/dist/web/assets/plsql-D_gbgZIr.js.br +0 -0
  854. package/dist/web/assets/plsql-D_gbgZIr.js.gz +0 -0
  855. package/dist/web/assets/po-BkhbDUnq.js.br +0 -0
  856. package/dist/web/assets/po-BkhbDUnq.js.gz +0 -0
  857. package/dist/web/assets/poimandres-Do6NywrA.js.br +0 -0
  858. package/dist/web/assets/poimandres-Do6NywrA.js.gz +0 -0
  859. package/dist/web/assets/polar-B3B23wca.js.br +0 -0
  860. package/dist/web/assets/polar-B3B23wca.js.gz +0 -0
  861. package/dist/web/assets/postcss-Dv_YBvWd.js.br +0 -0
  862. package/dist/web/assets/postcss-Dv_YBvWd.js.gz +0 -0
  863. package/dist/web/assets/{postgres-viewer-DPRsmgP5.js → postgres-viewer-DBwUXRLA.js} +1 -1
  864. package/dist/web/assets/postgres-viewer-DBwUXRLA.js.br +0 -0
  865. package/dist/web/assets/postgres-viewer-DBwUXRLA.js.gz +0 -0
  866. package/dist/web/assets/powerquery-fKJWI-Sh.js.br +0 -0
  867. package/dist/web/assets/powerquery-fKJWI-Sh.js.gz +0 -0
  868. package/dist/web/assets/powershell-B4Y7KIgx.js.br +0 -0
  869. package/dist/web/assets/powershell-B4Y7KIgx.js.gz +0 -0
  870. package/dist/web/assets/{ppmbot-settings-section-B5N1jHgm.js → ppmbot-settings-section-B8gDeE7h.js} +1 -1
  871. package/dist/web/assets/ppmbot-settings-section-B8gDeE7h.js.br +0 -0
  872. package/dist/web/assets/ppmbot-settings-section-B8gDeE7h.js.gz +0 -0
  873. package/dist/web/assets/prisma-J--XdTXX.js.br +0 -0
  874. package/dist/web/assets/prisma-J--XdTXX.js.gz +0 -0
  875. package/dist/web/assets/problems-panel-CmkeR-bD.js +1 -0
  876. package/dist/web/assets/problems-panel-CmkeR-bD.js.br +0 -0
  877. package/dist/web/assets/problems-panel-CmkeR-bD.js.gz +0 -0
  878. package/dist/web/assets/{process-table-DahflyQn.js → process-table-DxrXd89K.js} +1 -1
  879. package/dist/web/assets/process-table-DxrXd89K.js.br +0 -0
  880. package/dist/web/assets/process-table-DxrXd89K.js.gz +0 -0
  881. package/dist/web/assets/project-store-hNvwfqX3.js.br +0 -0
  882. package/dist/web/assets/project-store-hNvwfqX3.js.gz +0 -0
  883. package/dist/web/assets/prolog-BBTg4Vb3.js.br +0 -0
  884. package/dist/web/assets/prolog-BBTg4Vb3.js.gz +0 -0
  885. package/dist/web/assets/proto-DWlum3T8.js.br +0 -0
  886. package/dist/web/assets/proto-DWlum3T8.js.gz +0 -0
  887. package/dist/web/assets/{proxy-settings-section-CLg_nlxn.js → proxy-settings-section-8pLlN7YT.js} +1 -1
  888. package/dist/web/assets/proxy-settings-section-8pLlN7YT.js.br +0 -0
  889. package/dist/web/assets/proxy-settings-section-8pLlN7YT.js.gz +0 -0
  890. package/dist/web/assets/pug-fT5JC6Vm.js.br +0 -0
  891. package/dist/web/assets/pug-fT5JC6Vm.js.gz +0 -0
  892. package/dist/web/assets/puppet-ZiUfc9JV.js.br +0 -0
  893. package/dist/web/assets/puppet-ZiUfc9JV.js.gz +0 -0
  894. package/dist/web/assets/purescript-CmT8SCHB.js.br +0 -0
  895. package/dist/web/assets/purescript-CmT8SCHB.js.gz +0 -0
  896. package/dist/web/assets/python-BURpj-fq.js.br +0 -0
  897. package/dist/web/assets/python-BURpj-fq.js.gz +0 -0
  898. package/dist/web/assets/qml-P_wEDB1w.js.br +0 -0
  899. package/dist/web/assets/qml-P_wEDB1w.js.gz +0 -0
  900. package/dist/web/assets/qss-C-zdz0i5.js.br +0 -0
  901. package/dist/web/assets/qss-C-zdz0i5.js.gz +0 -0
  902. package/dist/web/assets/query-audit-section-OsYip7HO.js.br +0 -0
  903. package/dist/web/assets/query-audit-section-OsYip7HO.js.gz +0 -0
  904. package/dist/web/assets/r-K56BeS-s.js.br +0 -0
  905. package/dist/web/assets/r-K56BeS-s.js.gz +0 -0
  906. package/dist/web/assets/racket-gkn6Z_Jw.js.br +0 -0
  907. package/dist/web/assets/racket-gkn6Z_Jw.js.gz +0 -0
  908. package/dist/web/assets/raku-C0ZBuKlx.js.br +0 -0
  909. package/dist/web/assets/raku-C0ZBuKlx.js.gz +0 -0
  910. package/dist/web/assets/razor-Drrt2_Ph.js.br +0 -0
  911. package/dist/web/assets/razor-Drrt2_Ph.js.gz +0 -0
  912. package/dist/web/assets/red-BWZ6x-3p.js.br +0 -0
  913. package/dist/web/assets/red-BWZ6x-3p.js.gz +0 -0
  914. package/dist/web/assets/reg-Dt_EsyGR.js.br +0 -0
  915. package/dist/web/assets/reg-Dt_EsyGR.js.gz +0 -0
  916. package/dist/web/assets/regexp-CT6BLG2C.js.br +0 -0
  917. package/dist/web/assets/regexp-CT6BLG2C.js.gz +0 -0
  918. package/dist/web/assets/rel-MJ2LcyzJ.js.br +0 -0
  919. package/dist/web/assets/rel-MJ2LcyzJ.js.gz +0 -0
  920. package/dist/web/assets/{remote-desktop-clipboard-notice-Fi6cieGM.js → remote-desktop-clipboard-notice-CKucNCju.js} +1 -1
  921. package/dist/web/assets/remote-desktop-clipboard-notice-CKucNCju.js.br +0 -0
  922. package/dist/web/assets/remote-desktop-clipboard-notice-CKucNCju.js.gz +0 -0
  923. package/dist/web/assets/{remote-desktop-mobile-sheet-lLZ-oK73.js → remote-desktop-mobile-sheet-CiGcUiO6.js} +2 -2
  924. package/dist/web/assets/remote-desktop-mobile-sheet-CiGcUiO6.js.br +0 -0
  925. package/dist/web/assets/remote-desktop-mobile-sheet-CiGcUiO6.js.gz +0 -0
  926. package/dist/web/assets/{remote-desktop-mobile-view-j3v-4rYa.js → remote-desktop-mobile-view-Czubv7hF.js} +1 -1
  927. package/dist/web/assets/remote-desktop-mobile-view-Czubv7hF.js.br +0 -0
  928. package/dist/web/assets/remote-desktop-mobile-view-Czubv7hF.js.gz +0 -0
  929. package/dist/web/assets/{remote-desktop-readiness-gate-CeLvcX_w.js → remote-desktop-readiness-gate-CnRhTEwk.js} +1 -1
  930. package/dist/web/assets/remote-desktop-readiness-gate-CnRhTEwk.js.br +0 -0
  931. package/dist/web/assets/remote-desktop-readiness-gate-CnRhTEwk.js.gz +0 -0
  932. package/dist/web/assets/remote-desktop-window-content-ZiRNL4Io.js +1 -0
  933. package/dist/web/assets/remote-desktop-window-content-ZiRNL4Io.js.br +0 -0
  934. package/dist/web/assets/remote-desktop-window-content-ZiRNL4Io.js.gz +0 -0
  935. package/dist/web/assets/resolve-theme-B_ukrg_8.js.br +0 -0
  936. package/dist/web/assets/resolve-theme-B_ukrg_8.js.gz +0 -0
  937. package/dist/web/assets/riscv-BZYWzMAA.js.br +0 -0
  938. package/dist/web/assets/riscv-BZYWzMAA.js.gz +0 -0
  939. package/dist/web/assets/ron-CLbwHWMn.js.br +0 -0
  940. package/dist/web/assets/ron-CLbwHWMn.js.gz +0 -0
  941. package/dist/web/assets/rose-pine-BPiI_daR.js.br +0 -0
  942. package/dist/web/assets/rose-pine-BPiI_daR.js.gz +0 -0
  943. package/dist/web/assets/rose-pine-dawn-BjkJc7dW.js.br +0 -0
  944. package/dist/web/assets/rose-pine-dawn-BjkJc7dW.js.gz +0 -0
  945. package/dist/web/assets/rose-pine-moon-BQSxkt7g.js.br +0 -0
  946. package/dist/web/assets/rose-pine-moon-BQSxkt7g.js.gz +0 -0
  947. package/dist/web/assets/rosmsg-yt4151pJ.js.br +0 -0
  948. package/dist/web/assets/rosmsg-yt4151pJ.js.gz +0 -0
  949. package/dist/web/assets/rst-Dr2mW4-h.js.br +0 -0
  950. package/dist/web/assets/rst-Dr2mW4-h.js.gz +0 -0
  951. package/dist/web/assets/ruby-C6EpUsTY.js.br +0 -0
  952. package/dist/web/assets/ruby-C6EpUsTY.js.gz +0 -0
  953. package/dist/web/assets/rust-1dAcengL.js.br +0 -0
  954. package/dist/web/assets/rust-1dAcengL.js.gz +0 -0
  955. package/dist/web/assets/sas-D8ZEeP6v.js.br +0 -0
  956. package/dist/web/assets/sas-D8ZEeP6v.js.gz +0 -0
  957. package/dist/web/assets/sass-DUgtQJsg.js.br +0 -0
  958. package/dist/web/assets/sass-DUgtQJsg.js.gz +0 -0
  959. package/dist/web/assets/scala-CxoGYpS0.js.br +0 -0
  960. package/dist/web/assets/scala-CxoGYpS0.js.gz +0 -0
  961. package/dist/web/assets/{schedules-settings-section-C8OS0o80.js → schedules-settings-section-Dq5Kn6Q8.js} +1 -1
  962. package/dist/web/assets/schedules-settings-section-Dq5Kn6Q8.js.br +0 -0
  963. package/dist/web/assets/schedules-settings-section-Dq5Kn6Q8.js.gz +0 -0
  964. package/dist/web/assets/scheme-B2K3u9e3.js.br +0 -0
  965. package/dist/web/assets/scheme-B2K3u9e3.js.gz +0 -0
  966. package/dist/web/assets/scroll-area-BzeiOd-B.js.br +0 -0
  967. package/dist/web/assets/scroll-area-BzeiOd-B.js.gz +0 -0
  968. package/dist/web/assets/scss-ITL7jQ1f.js.br +0 -0
  969. package/dist/web/assets/scss-ITL7jQ1f.js.gz +0 -0
  970. package/dist/web/assets/sdbl-C0Ygk0n6.js.br +0 -0
  971. package/dist/web/assets/sdbl-C0Ygk0n6.js.gz +0 -0
  972. package/dist/web/assets/send-to-chat-DuRTOS7_.js.br +0 -0
  973. package/dist/web/assets/send-to-chat-DuRTOS7_.js.gz +0 -0
  974. package/dist/web/assets/settings-body-CYBJZti2.js +2 -0
  975. package/dist/web/assets/settings-body-CYBJZti2.js.br +0 -0
  976. package/dist/web/assets/settings-body-CYBJZti2.js.gz +0 -0
  977. package/dist/web/assets/{settings-store-CsVSVgLp.js → settings-store-DhU2tx3Y.js} +2 -2
  978. package/dist/web/assets/settings-store-DhU2tx3Y.js.br +0 -0
  979. package/dist/web/assets/settings-store-DhU2tx3Y.js.gz +0 -0
  980. package/dist/web/assets/{settings-tab-ChOs94iB.js → settings-tab-50Q5rjMo.js} +1 -1
  981. package/dist/web/assets/{settings-window-content-BnKMmg2a.js → settings-window-content-C_AGP_Go.js} +1 -1
  982. package/dist/web/assets/shaderlab-mW-IIlhk.js.br +0 -0
  983. package/dist/web/assets/shaderlab-mW-IIlhk.js.gz +0 -0
  984. package/dist/web/assets/shellscript-C2CvhqMk.js.br +0 -0
  985. package/dist/web/assets/shellscript-C2CvhqMk.js.gz +0 -0
  986. package/dist/web/assets/slack-dark-DYdgzRGj.js.br +0 -0
  987. package/dist/web/assets/slack-dark-DYdgzRGj.js.gz +0 -0
  988. package/dist/web/assets/slack-ochin-X-WD0WCg.js.br +0 -0
  989. package/dist/web/assets/slack-ochin-X-WD0WCg.js.gz +0 -0
  990. package/dist/web/assets/smalltalk-Dp7g_zb9.js.br +0 -0
  991. package/dist/web/assets/smalltalk-Dp7g_zb9.js.gz +0 -0
  992. package/dist/web/assets/snazzy-light-DWHWr-a6.js.br +0 -0
  993. package/dist/web/assets/snazzy-light-DWHWr-a6.js.gz +0 -0
  994. package/dist/web/assets/solarized-dark-CxdLsjvb.js.br +0 -0
  995. package/dist/web/assets/solarized-dark-CxdLsjvb.js.gz +0 -0
  996. package/dist/web/assets/solarized-light-Cz9rAvG5.js.br +0 -0
  997. package/dist/web/assets/solarized-light-Cz9rAvG5.js.gz +0 -0
  998. package/dist/web/assets/solidity-D33gHHdn.js.br +0 -0
  999. package/dist/web/assets/solidity-D33gHHdn.js.gz +0 -0
  1000. package/dist/web/assets/soy-SdY0Qjtr.js.br +0 -0
  1001. package/dist/web/assets/soy-SdY0Qjtr.js.gz +0 -0
  1002. package/dist/web/assets/sparql-ftqZo2i-.js.br +0 -0
  1003. package/dist/web/assets/sparql-ftqZo2i-.js.gz +0 -0
  1004. package/dist/web/assets/splunk-BFbOroYw.js.br +0 -0
  1005. package/dist/web/assets/splunk-BFbOroYw.js.gz +0 -0
  1006. package/dist/web/assets/sql-ChpxvmdY.js.br +0 -0
  1007. package/dist/web/assets/sql-ChpxvmdY.js.gz +0 -0
  1008. package/dist/web/assets/{sql-query-editor-BJZIIQsm.js → sql-query-editor-DmqbSfHi.js} +1 -1
  1009. package/dist/web/assets/sql-query-editor-DmqbSfHi.js.br +0 -0
  1010. package/dist/web/assets/sql-query-editor-DmqbSfHi.js.gz +0 -0
  1011. package/dist/web/assets/{sqlite-viewer--cMeCZum.js → sqlite-viewer-CAX-LlOl.js} +1 -1
  1012. package/dist/web/assets/sqlite-viewer-CAX-LlOl.js.br +0 -0
  1013. package/dist/web/assets/sqlite-viewer-CAX-LlOl.js.gz +0 -0
  1014. package/dist/web/assets/ssh-config-CUuSQ6JG.js.br +0 -0
  1015. package/dist/web/assets/ssh-config-CUuSQ6JG.js.gz +0 -0
  1016. package/dist/web/assets/stata-Bj7Yjb4b.js.br +0 -0
  1017. package/dist/web/assets/stata-Bj7Yjb4b.js.gz +0 -0
  1018. package/dist/web/assets/stylus-DDihP0_W.js.br +0 -0
  1019. package/dist/web/assets/stylus-DDihP0_W.js.gz +0 -0
  1020. package/dist/web/assets/surrealql-CLhYGAfB.js.br +0 -0
  1021. package/dist/web/assets/surrealql-CLhYGAfB.js.gz +0 -0
  1022. package/dist/web/assets/svelte-DTAlRHhK.js.br +0 -0
  1023. package/dist/web/assets/svelte-DTAlRHhK.js.gz +0 -0
  1024. package/dist/web/assets/swift-XoalUn4x.js.br +0 -0
  1025. package/dist/web/assets/swift-XoalUn4x.js.gz +0 -0
  1026. package/dist/web/assets/synthwave-84-DjkG0Bff.js.br +0 -0
  1027. package/dist/web/assets/synthwave-84-DjkG0Bff.js.gz +0 -0
  1028. package/dist/web/assets/{system-monitor-body-CXiIrn0N.js → system-monitor-body-DcjbfTwC.js} +2 -2
  1029. package/dist/web/assets/system-monitor-body-DcjbfTwC.js.br +0 -0
  1030. package/dist/web/assets/system-monitor-body-DcjbfTwC.js.gz +0 -0
  1031. package/dist/web/assets/{system-monitor-tab-BJKrTSl0.js → system-monitor-tab-B5ctYgFG.js} +1 -1
  1032. package/dist/web/assets/{system-monitor-window-content-Dy9fZJE3.js → system-monitor-window-content-DsgNoxTw.js} +1 -1
  1033. package/dist/web/assets/system-verilog-f_pLKMYd.js.br +0 -0
  1034. package/dist/web/assets/system-verilog-f_pLKMYd.js.gz +0 -0
  1035. package/dist/web/assets/systemd-DjDcLfxp.js.br +0 -0
  1036. package/dist/web/assets/systemd-DjDcLfxp.js.gz +0 -0
  1037. package/dist/web/assets/{tab-host-window-content-BezqrAwC.js → tab-host-window-content-0fmkEEGB.js} +1 -1
  1038. package/dist/web/assets/tab-host-window-content-0fmkEEGB.js.br +0 -0
  1039. package/dist/web/assets/tab-host-window-content-0fmkEEGB.js.gz +0 -0
  1040. package/dist/web/assets/talonscript-BpUzYcDl.js.br +0 -0
  1041. package/dist/web/assets/talonscript-BpUzYcDl.js.gz +0 -0
  1042. package/dist/web/assets/tasl-DP-cUbg8.js.br +0 -0
  1043. package/dist/web/assets/tasl-DP-cUbg8.js.gz +0 -0
  1044. package/dist/web/assets/tcl-BHoy-dfE.js.br +0 -0
  1045. package/dist/web/assets/tcl-BHoy-dfE.js.gz +0 -0
  1046. package/dist/web/assets/{team-member-sheet-CVM2QC3H.js → team-member-sheet-B-7tQLyM.js} +2 -2
  1047. package/dist/web/assets/team-member-sheet-B-7tQLyM.js.br +0 -0
  1048. package/dist/web/assets/team-member-sheet-B-7tQLyM.js.gz +0 -0
  1049. package/dist/web/assets/{team-member-window-content-D4RYKplm.js → team-member-window-content-Bb3ssjGY.js} +1 -1
  1050. package/dist/web/assets/team-member-window-content-Bb3ssjGY.js.br +0 -0
  1051. package/dist/web/assets/team-member-window-content-Bb3ssjGY.js.gz +0 -0
  1052. package/dist/web/assets/templ-BMfhACxb.js.br +0 -0
  1053. package/dist/web/assets/templ-BMfhACxb.js.gz +0 -0
  1054. package/dist/web/assets/terminal-tab-Dilre-Mk.js +3 -0
  1055. package/dist/web/assets/terminal-tab-Dilre-Mk.js.br +0 -0
  1056. package/dist/web/assets/terminal-tab-Dilre-Mk.js.gz +0 -0
  1057. package/dist/web/assets/terraform-vCVxN25B.js.br +0 -0
  1058. package/dist/web/assets/terraform-vCVxN25B.js.gz +0 -0
  1059. package/dist/web/assets/tex-BcssM-QA.js.br +0 -0
  1060. package/dist/web/assets/tex-BcssM-QA.js.gz +0 -0
  1061. package/dist/web/assets/tokyo-night-D0u4xZba.js.br +0 -0
  1062. package/dist/web/assets/tokyo-night-D0u4xZba.js.gz +0 -0
  1063. package/dist/web/assets/toml-BS8D0__A.js.br +0 -0
  1064. package/dist/web/assets/toml-BS8D0__A.js.gz +0 -0
  1065. package/dist/web/assets/{tool-cards-D5jCQvqn.js → tool-cards-C-YxPo3q.js} +5 -5
  1066. package/dist/web/assets/tool-cards-C-YxPo3q.js.br +0 -0
  1067. package/dist/web/assets/tool-cards-C-YxPo3q.js.gz +0 -0
  1068. package/dist/web/assets/ts-tags-CrR5IYI8.js.br +0 -0
  1069. package/dist/web/assets/ts-tags-CrR5IYI8.js.gz +0 -0
  1070. package/dist/web/assets/tsx-DF8YeRgG.js.br +0 -0
  1071. package/dist/web/assets/tsx-DF8YeRgG.js.gz +0 -0
  1072. package/dist/web/assets/turtle-Bhx1GlIy.js.br +0 -0
  1073. package/dist/web/assets/turtle-Bhx1GlIy.js.gz +0 -0
  1074. package/dist/web/assets/twig-DchfUmyI.js.br +0 -0
  1075. package/dist/web/assets/twig-DchfUmyI.js.gz +0 -0
  1076. package/dist/web/assets/typescript-CAVD2Wb6.js.br +0 -0
  1077. package/dist/web/assets/typescript-CAVD2Wb6.js.gz +0 -0
  1078. package/dist/web/assets/typespec-D7mchdY_.js.br +0 -0
  1079. package/dist/web/assets/typespec-D7mchdY_.js.gz +0 -0
  1080. package/dist/web/assets/typst-CeXzq6Yw.js.br +0 -0
  1081. package/dist/web/assets/typst-CeXzq6Yw.js.gz +0 -0
  1082. package/dist/web/assets/{use-inline-blame-BF8Y1KfV.js → use-inline-blame-Co4lggO_.js} +3 -3
  1083. package/dist/web/assets/use-inline-blame-Co4lggO_.js.br +0 -0
  1084. package/dist/web/assets/use-inline-blame-Co4lggO_.js.gz +0 -0
  1085. package/dist/web/assets/{use-lsp-Bx4oVtlk.js → use-lsp-D_2UVnaV.js} +1 -1
  1086. package/dist/web/assets/use-lsp-D_2UVnaV.js.br +0 -0
  1087. package/dist/web/assets/use-lsp-D_2UVnaV.js.gz +0 -0
  1088. package/dist/web/assets/{use-monaco-theme-DHczXLMb.js → use-monaco-theme-BFp0c8RX.js} +1 -1
  1089. package/dist/web/assets/{use-websocket-BWZkbleJ.js → use-websocket-DXdXq2qa.js} +1 -1
  1090. package/dist/web/assets/utils-Bmf_8h7Y.js.br +0 -0
  1091. package/dist/web/assets/utils-Bmf_8h7Y.js.gz +0 -0
  1092. package/dist/web/assets/v-DhzO54je.js.br +0 -0
  1093. package/dist/web/assets/v-DhzO54je.js.gz +0 -0
  1094. package/dist/web/assets/vala-Dw_RAk3E.js.br +0 -0
  1095. package/dist/web/assets/vala-Dw_RAk3E.js.gz +0 -0
  1096. package/dist/web/assets/vb-CiXdNh2Y.js.br +0 -0
  1097. package/dist/web/assets/vb-CiXdNh2Y.js.gz +0 -0
  1098. package/dist/web/assets/vendor-markdown-CuWCHIVb.js.br +0 -0
  1099. package/dist/web/assets/vendor-markdown-CuWCHIVb.js.gz +0 -0
  1100. package/dist/web/assets/vendor-mermaid-BitiXJlL.js.br +0 -0
  1101. package/dist/web/assets/vendor-mermaid-BitiXJlL.js.gz +0 -0
  1102. package/dist/web/assets/vendor-ui-DmZ-Mb-H.js.br +0 -0
  1103. package/dist/web/assets/vendor-ui-DmZ-Mb-H.js.gz +0 -0
  1104. package/dist/web/assets/vendor-xterm-DkTCHfhq.css.br +0 -0
  1105. package/dist/web/assets/vendor-xterm-DkTCHfhq.css.gz +0 -0
  1106. package/dist/web/assets/vendor-xterm-JV4hEJsv.js.br +0 -0
  1107. package/dist/web/assets/vendor-xterm-JV4hEJsv.js.gz +0 -0
  1108. package/dist/web/assets/verilog-fITdxqwV.js.br +0 -0
  1109. package/dist/web/assets/verilog-fITdxqwV.js.gz +0 -0
  1110. package/dist/web/assets/vesper-B1wm_At7.js.br +0 -0
  1111. package/dist/web/assets/vesper-B1wm_At7.js.gz +0 -0
  1112. package/dist/web/assets/vhdl-ebHjqKp9.js.br +0 -0
  1113. package/dist/web/assets/vhdl-ebHjqKp9.js.gz +0 -0
  1114. package/dist/web/assets/{video-preview-D191TvX9.js → video-preview-DMWtzyhn.js} +1 -1
  1115. package/dist/web/assets/video-preview-DMWtzyhn.js.br +0 -0
  1116. package/dist/web/assets/video-preview-DMWtzyhn.js.gz +0 -0
  1117. package/dist/web/assets/viml-Dgmnoxoo.js.br +0 -0
  1118. package/dist/web/assets/viml-Dgmnoxoo.js.gz +0 -0
  1119. package/dist/web/assets/vitesse-black-BZ5gMb7l.js.br +0 -0
  1120. package/dist/web/assets/vitesse-black-BZ5gMb7l.js.gz +0 -0
  1121. package/dist/web/assets/vitesse-dark-Lij7kkOt.js.br +0 -0
  1122. package/dist/web/assets/vitesse-dark-Lij7kkOt.js.gz +0 -0
  1123. package/dist/web/assets/vitesse-light-DW6Wq7VC.js.br +0 -0
  1124. package/dist/web/assets/vitesse-light-DW6Wq7VC.js.gz +0 -0
  1125. package/dist/web/assets/vue-1EL6Pw1h.js.br +0 -0
  1126. package/dist/web/assets/vue-1EL6Pw1h.js.gz +0 -0
  1127. package/dist/web/assets/vue-html-BPQNwPC6.js.br +0 -0
  1128. package/dist/web/assets/vue-html-BPQNwPC6.js.gz +0 -0
  1129. package/dist/web/assets/vue-vine-Bb_dsWLt.js.br +0 -0
  1130. package/dist/web/assets/vue-vine-Bb_dsWLt.js.gz +0 -0
  1131. package/dist/web/assets/vyper-6FxDnVNg.js.br +0 -0
  1132. package/dist/web/assets/vyper-6FxDnVNg.js.gz +0 -0
  1133. package/dist/web/assets/wasm-BDxaNPCj.js.br +0 -0
  1134. package/dist/web/assets/wasm-BDxaNPCj.js.gz +0 -0
  1135. package/dist/web/assets/wasm-DKhAtzfe.js.br +0 -0
  1136. package/dist/web/assets/wasm-DKhAtzfe.js.gz +0 -0
  1137. package/dist/web/assets/wenyan-C0k0DYG_.js.br +0 -0
  1138. package/dist/web/assets/wenyan-C0k0DYG_.js.gz +0 -0
  1139. package/dist/web/assets/wgsl-Y2zagbdn.js.br +0 -0
  1140. package/dist/web/assets/wgsl-Y2zagbdn.js.gz +0 -0
  1141. package/dist/web/assets/wikitext-C4QGWzkY.js.br +0 -0
  1142. package/dist/web/assets/wikitext-C4QGWzkY.js.gz +0 -0
  1143. package/dist/web/assets/window-store-UC1jJeLM.js.br +0 -0
  1144. package/dist/web/assets/window-store-UC1jJeLM.js.gz +0 -0
  1145. package/dist/web/assets/wit-CQESzjHy.js.br +0 -0
  1146. package/dist/web/assets/wit-CQESzjHy.js.gz +0 -0
  1147. package/dist/web/assets/wolfram-B-ia69Ia.js.br +0 -0
  1148. package/dist/web/assets/wolfram-B-ia69Ia.js.gz +0 -0
  1149. package/dist/web/assets/xml-dxkLNA0K.js.br +0 -0
  1150. package/dist/web/assets/xml-dxkLNA0K.js.gz +0 -0
  1151. package/dist/web/assets/xsl-Bw2adwrl.js.br +0 -0
  1152. package/dist/web/assets/xsl-Bw2adwrl.js.gz +0 -0
  1153. package/dist/web/assets/yaml-CEYYTQPm.js.br +0 -0
  1154. package/dist/web/assets/yaml-CEYYTQPm.js.gz +0 -0
  1155. package/dist/web/assets/zenscript-BggWXIeJ.js.br +0 -0
  1156. package/dist/web/assets/zenscript-BggWXIeJ.js.gz +0 -0
  1157. package/dist/web/assets/zig-CbaUfBQe.js.br +0 -0
  1158. package/dist/web/assets/zig-CbaUfBQe.js.gz +0 -0
  1159. package/dist/web/index.html +7 -7
  1160. package/dist/web/index.html.br +0 -0
  1161. package/dist/web/index.html.gz +0 -0
  1162. package/dist/web/sw.js +1 -1
  1163. package/dist/web/sw.js.br +0 -0
  1164. package/dist/web/sw.js.gz +0 -0
  1165. package/docs/architecture/ai-chat-and-providers.md +10 -0
  1166. package/docs/architecture/workspace-and-ui.md +63 -0
  1167. package/docs/project-roadmap.md +6 -0
  1168. package/package.json +1 -1
  1169. package/scripts/release.sh +6 -0
  1170. package/src/providers/codex-app-server/codex-event-mapper.ts +7 -3
  1171. package/src/providers/codex-app-server/codex-provider.ts +10 -0
  1172. package/src/server/index.ts +5 -0
  1173. package/src/server/routes/chat.ts +3 -7
  1174. package/src/server/routes/files.ts +11 -75
  1175. package/src/server/routes/html-preview.ts +116 -0
  1176. package/src/server/routes/settings.ts +8 -1
  1177. package/src/server/ws/chat.ts +19 -6
  1178. package/src/services/chat.service.ts +2 -4
  1179. package/src/services/project-content-search.service.ts +119 -0
  1180. package/src/types/api.ts +5 -3
  1181. package/src/types/chat.ts +18 -0
  1182. package/src/web/app.tsx +9 -1
  1183. package/src/web/components/chat/chat-history-bar.tsx +11 -6
  1184. package/src/web/components/chat/chat-tab.tsx +25 -1
  1185. package/src/web/components/chat/chat-welcome.tsx +2 -0
  1186. package/src/web/components/chat/message-events.tsx +6 -6
  1187. package/src/web/components/chat/message-input.tsx +23 -1
  1188. package/src/web/components/chat/model-thinking-selector.tsx +15 -4
  1189. package/src/web/components/chat/session-list-panel.tsx +2 -6
  1190. package/src/web/components/chat/session-picker.tsx +2 -6
  1191. package/src/web/components/editor/code-editor.tsx +65 -12
  1192. package/src/web/components/editor/html-preview-toolbar.tsx +80 -0
  1193. package/src/web/components/editor/html-preview.tsx +30 -0
  1194. package/src/web/components/explorer/search-panel.tsx +37 -6
  1195. package/src/web/components/git/git-status-panel.tsx +32 -4
  1196. package/src/web/components/layout/mobile-drawer.tsx +6 -4
  1197. package/src/web/components/layout/project-switcher.tsx +1 -0
  1198. package/src/web/components/layout/sidebar.tsx +1 -1
  1199. package/src/web/components/onboarding/onboarding-entry.tsx +15 -0
  1200. package/src/web/components/onboarding/onboarding-file-help.tsx +31 -0
  1201. package/src/web/components/onboarding/onboarding-guide.tsx +45 -0
  1202. package/src/web/components/onboarding/onboarding-hint.tsx +43 -0
  1203. package/src/web/components/onboarding/onboarding-quick-orientation.tsx +81 -0
  1204. package/src/web/components/onboarding/onboarding-root.tsx +137 -0
  1205. package/src/web/components/onboarding/onboarding-run-document-preview.tsx +23 -0
  1206. package/src/web/components/onboarding/onboarding-setup.tsx +50 -0
  1207. package/src/web/components/onboarding/onboarding-step-transition.tsx +27 -0
  1208. package/src/web/components/onboarding/use-onboarding-session-check.ts +32 -0
  1209. package/src/web/components/settings/general-settings-section.tsx +7 -0
  1210. package/src/web/components/terminal/terminal-tab.tsx +15 -1
  1211. package/src/web/hooks/use-chat.ts +69 -7
  1212. package/src/web/hooks/use-session-history.ts +2 -6
  1213. package/src/web/lib/chat-attempt-lifecycle.ts +46 -0
  1214. package/src/web/lib/onboarding/onboarding-copy.ts +57 -0
  1215. package/src/web/lib/onboarding/onboarding-state.ts +77 -0
  1216. package/src/web/lib/onboarding/onboarding-steps.ts +16 -0
  1217. package/src/web/lib/onboarding/onboarding-types.ts +39 -0
  1218. package/src/web/lib/onboarding/run-instructions.ts +22 -0
  1219. package/src/web/stores/onboarding-store.ts +74 -0
  1220. package/vite.config.ts +5 -1
  1221. package/dist/web/assets/accounts-settings-section-CLEAA_Jc.js +0 -1
  1222. package/dist/web/assets/chat-tab-BpdgqjSL.js +0 -15
  1223. package/dist/web/assets/code-editor-B7y7-5KE.js +0 -7
  1224. package/dist/web/assets/explorer-body-xg1-MhlW.js +0 -2
  1225. package/dist/web/assets/general-settings-section-CfNPHQUk.js +0 -1
  1226. package/dist/web/assets/group-chat-tab-D1lx0zz-.js +0 -1
  1227. package/dist/web/assets/index-BH99TIE0.css +0 -1
  1228. package/dist/web/assets/index-CN0G8uYY.js +0 -52
  1229. package/dist/web/assets/keybindings-store-L5vV8DEJ.js +0 -1
  1230. package/dist/web/assets/markdown-renderer-BX1Q00sC.js +0 -3
  1231. package/dist/web/assets/notification-store-BHgSy-ci.js +0 -1
  1232. package/dist/web/assets/problems-panel-D_wZ4_Qg.js +0 -1
  1233. package/dist/web/assets/remote-desktop-window-content-lwbkLsTC.js +0 -1
  1234. package/dist/web/assets/settings-body-DgN22Z0W.js +0 -2
  1235. package/dist/web/assets/streaming-store-BYukdB56.js +0 -1
  1236. package/dist/web/assets/terminal-tab-jikhQLct.js +0 -3
  1237. /package/dist/web/assets/{api-themes-CSUarkzD.js → api-themes-B3RwKXw-.js} +0 -0
  1238. /package/dist/web/assets/{csv-parser-_oDBUkwQ.js → csv-parser-DpCmuupp.js} +0 -0
  1239. /package/dist/web/assets/{docx-preview-Dxvy6h13.js → docx-preview-Gzi4QBez.js} +0 -0
  1240. /package/dist/web/assets/{edit-diff-preview-BGGGecVw.js → edit-diff-preview-CVv7EOFu.js} +0 -0
  1241. /package/dist/web/assets/{format-bytes-D1AQyUCt.js → format-bytes-CmnPxZjG.js} +0 -0
  1242. /package/dist/web/assets/{image-preview-DeGD0HJu.js → image-preview-xFLgpolc.js} +0 -0
  1243. /package/dist/web/assets/{lib-CD6pOS4u.js → lib-DBeVwCnC.js} +0 -0
  1244. /package/dist/web/assets/{media-url-DKK0YHxL.js → media-url-BmIBOO3z.js} +0 -0
  1245. /package/dist/web/assets/{pdf-preview-DAcfhfGm.js → pdf-preview-OvVOptPh.js} +0 -0
  1246. /package/dist/web/assets/{query-audit-section-BrfSo0s_.js → query-audit-section-OsYip7HO.js} +0 -0
  1247. /package/dist/web/assets/{run-in-terminal-D7W4IKb9.js → run-in-terminal-Bu3ph5pY.js} +0 -0
  1248. /package/dist/web/assets/{send-to-chat-DNKhmHbi.js → send-to-chat-DuRTOS7_.js} +0 -0
  1249. /package/dist/web/assets/{separator-TRMsJUYe.js → separator-tjXX_Sky.js} +0 -0
  1250. /package/dist/web/assets/{use-open-team-member-C3mrUzIC.js → use-open-team-member-CHpGPALV.js} +0 -0
  1251. /package/dist/web/assets/{vendor-xterm-BHEY6Ctu.js → vendor-xterm-JV4hEJsv.js} +0 -0
@@ -5,6 +5,8 @@ import { api, projectUrl } from "@/lib/api-client";
5
5
  import { useShallow } from "zustand/react/shallow";
6
6
  import { useTabStore } from "@/stores/tab-store";
7
7
  import { usePanelStore } from "@/stores/panel-store";
8
+ import { emitOnboardingEvidence } from "@/lib/onboarding/onboarding-types";
9
+ import { OnboardingRunDocumentPreview } from "@/components/onboarding/onboarding-run-document-preview";
8
10
  import { useSettingsStore } from "@/stores/settings-store";
9
11
  import { basename } from "@/lib/utils";
10
12
  import { useMonacoTheme } from "@/lib/use-monaco-theme";
@@ -18,6 +20,8 @@ import { LspStatus } from "./lsp-status";
18
20
  import { Loader2, FileWarning, Play, Database, ExternalLink, X, GripHorizontal, ShieldCheck, ShieldOff } from "@/lib/icons";
19
21
  import { EditorBreadcrumb } from "./editor-breadcrumb";
20
22
  import { EditorToolbar } from "./editor-toolbar";
23
+ import { HtmlPreview } from "./html-preview";
24
+ import { HtmlPreviewToolbar } from "./html-preview-toolbar";
21
25
  import { EditorLanguagePicker } from "./editor-language-picker";
22
26
  import { SaveAsDialog } from "./save-as-dialog";
23
27
  import { EditorMobileToolbar } from "./editor-mobile-toolbar";
@@ -87,6 +91,14 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
87
91
  const [encoding, setEncoding] = useState<string>("utf-8");
88
92
  const [loading, setLoading] = useState(true);
89
93
  const [error, setError] = useState<string | null>(null);
94
+ const [loadedFile, setLoadedFile] = useState<string | null>(null);
95
+ const activeTabId = useTabStore((s) => s.activeTabId);
96
+ const [onboardingRefresh, setOnboardingRefresh] = useState(0);
97
+ useEffect(() => {
98
+ const refresh = () => setOnboardingRefresh((n) => n + 1);
99
+ window.addEventListener("ppm:onboarding-refresh", refresh);
100
+ return () => window.removeEventListener("ppm:onboarding-refresh", refresh);
101
+ }, []);
90
102
  const [unsaved, setUnsaved] = useState(false);
91
103
  const saveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
92
104
  const latestContentRef = useRef<string>("");
@@ -136,6 +148,11 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
136
148
  const isAudio = AUDIO_EXTS.has(ext);
137
149
  const isSqlite = SQLITE_EXTS.has(ext);
138
150
  const isMarkdown = ext === "md" || ext === "mdx";
151
+ const isHtml = (ext === "html" || ext === "htm") && !isUntitled && inlineContent == null;
152
+ const [htmlMode, setHtmlMode] = useState<"edit" | "preview">("preview");
153
+ const [htmlRevision, setHtmlRevision] = useState(0);
154
+ const [htmlCodeOpened, setHtmlCodeOpened] = useState(false);
155
+ const htmlPreviewVisible = isHtml && htmlMode === "preview";
139
156
  const isCsv = ext === "csv";
140
157
  // Explicit language override (from language picker / New DB Query); falls back to file extension.
141
158
  const langOverride = metadata?.language as string | undefined;
@@ -322,6 +339,17 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
322
339
  // Detect external (absolute) file path — not relative to project
323
340
  const isExternalFile = filePath ? /^(\/|[A-Za-z]:[/\\])/.test(filePath) : false;
324
341
 
342
+ useEffect(() => {
343
+ if (!projectName || !filePath || !tabId || activeTabId !== tabId || loading || error || !mounted ||
344
+ loadedFile !== `${projectName}:${filePath}` || inlineContent != null || isUntitled || isSqlite || encoding === "base64" ||
345
+ htmlPreviewVisible || isImage || isPdf || isDocx || isVideo || isAudio || (isMarkdown && mdMode === "preview") || (isCsv && csvMode === "table")) return;
346
+ const node = mounted.editor.getDomNode();
347
+ const visible = !!node?.isConnected && !!node.checkVisibility({ checkOpacity: true, checkVisibilityCSS: true });
348
+ if (visible) emitOnboardingEvidence({ type: "file-ready", projectName, tabId, visible,
349
+ isRunDocument: /^(readme(?:\..*)?|package\.json)$/i.test(basename(filePath)) });
350
+ }, [onboardingRefresh, projectName, filePath, tabId, activeTabId, loading, error, mounted, loadedFile, inlineContent, isUntitled,
351
+ isSqlite, encoding, isImage, isPdf, isDocx, isVideo, isAudio, isMarkdown, mdMode, isCsv, csvMode, htmlPreviewVisible]);
352
+
325
353
  // Load file content
326
354
  useEffect(() => {
327
355
  if (inlineContent != null) { setLoading(false); return; }
@@ -338,6 +366,8 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
338
366
 
339
367
  setLoading(true);
340
368
  setError(null);
369
+ setLoadedFile(null);
370
+ let cancelled = false;
341
371
 
342
372
  const readUrl = isExternalFile
343
373
  ? `/api/fs/read?path=${encodeURIComponent(filePath)}`
@@ -346,17 +376,20 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
346
376
  api
347
377
  .get<{ content: string; encoding?: string }>(readUrl)
348
378
  .then((data) => {
379
+ if (cancelled) return;
349
380
  setContent(data.content);
350
- if (data.encoding) setEncoding(data.encoding);
381
+ setEncoding(data.encoding ?? "utf-8");
382
+ setLoadedFile(`${projectName}:${filePath}`);
351
383
  latestContentRef.current = data.content;
352
384
  setLoading(false);
353
385
  })
354
386
  .catch((err) => {
387
+ if (cancelled) return;
355
388
  setError(err instanceof Error ? err.message : "Failed to load file");
356
389
  setLoading(false);
357
390
  });
358
391
 
359
- return () => { if (saveTimerRef.current) clearTimeout(saveTimerRef.current); };
392
+ return () => { cancelled = true; if (saveTimerRef.current) clearTimeout(saveTimerRef.current); };
360
393
  }, [filePath, projectName, isImage, isPdf, isDocx, isExternalFile, isUntitled]);
361
394
 
362
395
  // Manual reload: re-fetch content from disk (fallback when fs watch misses a change)
@@ -448,7 +481,7 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
448
481
  // buffer no server can serve must not switch the built-in worker back on underneath the
449
482
  // project file in the next tab.
450
483
  const lspWanted = lspEnabled && !isTouchOnly;
451
- const lspOn = lspWanted && lspServable;
484
+ const lspOn = lspWanted && lspServable && !htmlPreviewVisible;
452
485
  const [lsp, setLsp] = useState<EditorLspState>({ status: null, diagnostics: [] });
453
486
  const handleLspState = useCallback((next: EditorLspState) => setLsp(next), []);
454
487
 
@@ -782,6 +815,7 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
782
815
  return (
783
816
  <div
784
817
  ref={containerRef}
818
+ data-onboarding="file"
785
819
  className="flex flex-col h-full w-full overflow-hidden"
786
820
  style={mobileHeight ? { height: `${mobileHeight}px`, maxHeight: `${mobileHeight}px` } : undefined}
787
821
  >
@@ -807,7 +841,7 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
807
841
  </div>
808
842
  )}
809
843
  {/* Breadcrumb + Toolbar bar — desktop only */}
810
- {filePath && projectName && tabId && (
844
+ {!isHtml && filePath && projectName && tabId && (
811
845
  <div className="hidden md:flex items-center h-7 border-b border-border bg-background shrink-0">
812
846
  <EditorBreadcrumb
813
847
  filePath={filePath}
@@ -850,7 +884,7 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
850
884
  )}
851
885
 
852
886
  {/* Language + SQL toolbar for untitled / external files (no project breadcrumb) */}
853
- {inlineContent == null && tabId && (isUntitled || (filePath && !projectName)) && (
887
+ {!isHtml && inlineContent == null && tabId && (isUntitled || (filePath && !projectName)) && (
854
888
  <div className="hidden md:flex items-center h-7 border-b border-border bg-background shrink-0 px-2">
855
889
  <span className="text-xs text-muted-foreground truncate flex-1">
856
890
  {isUntitled ? `Untitled-${metadata?.untitledNumber ?? 1}` : (filePath ? basename(filePath) : "Untitled")}
@@ -860,15 +894,33 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
860
894
  </div>
861
895
  )}
862
896
 
897
+ {isHtml && filePath && (
898
+ <HtmlPreviewToolbar mode={htmlMode} onModeChange={(mode) => {
899
+ if (mode === "edit") setHtmlCodeOpened(true);
900
+ setHtmlMode(mode);
901
+ }}
902
+ onRefresh={() => { setHtmlMode("preview"); setHtmlRevision((value) => value + 1); }} unsaved={unsaved}
903
+ onReloadCode={reloadFile} refreshing={refreshing}
904
+ breadcrumb={projectName && tabId ? <EditorBreadcrumb filePath={filePath} projectName={projectName} tabId={tabId} className="flex items-center min-w-0 overflow-x-auto scrollbar-none gap-0.5" /> : <span className="truncate text-xs text-muted-foreground">{basename(filePath)}</span>}
905
+ filePath={filePath} projectName={projectName} wordWrap={wrapOn} onToggleWordWrap={toggleWrap}
906
+ inlineBlame={inlineBlame} onToggleInlineBlame={canBlame ? toggleInlineBlame : undefined}
907
+ language={effectiveLanguage} onLanguageChange={handleLanguageChange}
908
+ lspEnabled={lspWanted} onToggleLsp={lspServable && !isTouchOnly ? setLspEnabled : undefined} />
909
+ )}
910
+
863
911
  {/* Content area */}
864
- {isCsv && csvMode === "table" ? (
912
+ {htmlPreviewVisible && filePath && (
913
+ <HtmlPreview filePath={filePath} projectName={projectName} revision={htmlRevision} />
914
+ )}
915
+ {htmlPreviewVisible && !htmlCodeOpened ? null : isCsv && csvMode === "table" ? (
865
916
  <Suspense fallback={<div className="flex items-center justify-center h-full"><Loader2 className="size-5 animate-spin text-text-subtle" /></div>}>
866
917
  <CsvPreview content={content ?? ""} onContentChange={handleChange} wordWrap={wrapOn} />
867
918
  </Suspense>
868
919
  ) : isMarkdown && mdMode === "preview" ? (
869
- <MarkdownPreview content={content ?? ""} />
920
+ <MarkdownPreview content={content ?? ""} projectName={projectName} filePath={filePath} tabId={tabId}
921
+ ready={!loading && !error && loadedFile === `${projectName}:${filePath}` && inlineContent == null && !isUntitled} />
870
922
  ) : (
871
- <div className="flex-1 overflow-hidden min-h-0">
923
+ <div className={htmlPreviewVisible ? "hidden" : "flex-1 overflow-hidden min-h-0"}>
872
924
  <Editor
873
925
  height="100%"
874
926
  key={effectiveLanguage}
@@ -930,7 +982,7 @@ export const CodeEditor = memo(function CodeEditor({ metadata, tabId }: CodeEdit
930
982
  )}
931
983
 
932
984
  {/* Mobile toolbar — bottom, like terminal */}
933
- {isMobile && (
985
+ {isMobile && !htmlPreviewVisible && (
934
986
  <EditorMobileToolbar
935
987
  editorRef={editorRef}
936
988
  readOnly={inlineContent != null}
@@ -1047,11 +1099,12 @@ function LoadingSpinner() {
1047
1099
  return <div className="flex items-center justify-center h-full"><Loader2 className="size-5 animate-spin text-text-subtle" /></div>;
1048
1100
  }
1049
1101
 
1050
- function MarkdownPreview({ content }: { content: string }) {
1102
+ function MarkdownPreview({ content, ...context }: { content: string; projectName?: string; filePath?: string; tabId?: string; ready: boolean }) {
1051
1103
  return (
1052
1104
  <Suspense fallback={<div className="animate-pulse h-4 bg-muted rounded m-4" />}>
1053
- <MarkdownRenderer content={content} className="flex-1 overflow-auto p-4" />
1105
+ <OnboardingRunDocumentPreview {...context}>
1106
+ <MarkdownRenderer content={content} className="flex-1 overflow-auto p-4" />
1107
+ </OnboardingRunDocumentPreview>
1054
1108
  </Suspense>
1055
1109
  );
1056
1110
  }
1057
-
@@ -0,0 +1,80 @@
1
+ import type { ReactNode } from "react";
2
+ import { Code, Eye, MoreHorizontal, RefreshCw, Download, WrapText, UserRound, Zap, FileCode } from "@/lib/icons";
3
+ import { downloadFile } from "@/lib/file-download";
4
+ import { EDITOR_LANGUAGES } from "./editor-language-picker";
5
+ import {
6
+ DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem,
7
+ DropdownMenuCheckboxItem, DropdownMenuSeparator, DropdownMenuSub,
8
+ DropdownMenuSubTrigger, DropdownMenuSubContent, DropdownMenuRadioGroup, DropdownMenuRadioItem,
9
+ } from "@/components/ui/dropdown-menu";
10
+
11
+ interface Props {
12
+ mode: "edit" | "preview";
13
+ onModeChange: (mode: "edit" | "preview") => void;
14
+ onRefresh: () => void;
15
+ onReloadCode: () => void;
16
+ refreshing: boolean;
17
+ unsaved: boolean;
18
+ breadcrumb?: ReactNode;
19
+ filePath: string;
20
+ projectName?: string;
21
+ wordWrap: boolean;
22
+ onToggleWordWrap: () => void;
23
+ inlineBlame: boolean;
24
+ onToggleInlineBlame?: () => void;
25
+ language: string;
26
+ onLanguageChange: (language: string) => void;
27
+ lspEnabled: boolean;
28
+ onToggleLsp?: (enabled: boolean) => void;
29
+ }
30
+
31
+ const actionClass = "flex items-center justify-center gap-1.5 rounded px-2 min-h-11 min-w-11 md:min-h-7 md:min-w-7 text-xs text-muted-foreground hover:text-foreground hover:bg-muted";
32
+ // Keep action icons near the edge; checked states occupy the trailing slot.
33
+ const menuClass = "min-h-11 md:min-h-8 px-2";
34
+ const checkboxClass = `${menuClass} pr-8 [&>span]:left-auto [&>span]:right-2`;
35
+
36
+ /** One row shared by code and preview; auxiliary editor actions live in the menu. */
37
+ export function HtmlPreviewToolbar(props: Props) {
38
+ const { mode, onModeChange, onRefresh, unsaved, breadcrumb } = props;
39
+ return (
40
+ <div className="flex items-center gap-2 md:gap-1 border-b border-border bg-background px-2 shrink-0 h-12 md:h-8"
41
+ role="toolbar" aria-label="HTML preview">
42
+ <div className="hidden md:flex flex-1 min-w-0 overflow-hidden">{breadcrumb}</div>
43
+ {mode === "preview" && (
44
+ <button type="button" onClick={onRefresh} title="Reload the original HTML file" aria-label="Refresh preview" className={actionClass}>
45
+ <RefreshCw className="size-4" />
46
+ </button>
47
+ )}
48
+ {([["edit", "Code", Code], ["preview", "Preview", Eye]] as const).map(([value, label, Icon]) => (
49
+ <button key={value} type="button" aria-pressed={mode === value} onClick={() => onModeChange(value)}
50
+ className={`${actionClass} ${mode === value ? "bg-muted text-foreground" : ""}`}>
51
+ <Icon className="size-3.5" />{label}
52
+ </button>
53
+ ))}
54
+ {unsaved && <span role="status" title="Preview uses the saved file" aria-label="Preview uses the saved file" className="text-amber-500 text-xs">●</span>}
55
+ <DropdownMenu>
56
+ <DropdownMenuTrigger asChild>
57
+ <button type="button" title="More HTML actions" aria-label="More HTML actions" className={`${actionClass} ml-auto md:ml-0`}>
58
+ <MoreHorizontal className="size-4" />
59
+ </button>
60
+ </DropdownMenuTrigger>
61
+ <DropdownMenuContent align="end" className="w-52">
62
+ {mode === "edit" && <DropdownMenuItem className={menuClass} disabled={unsaved || props.refreshing} onSelect={props.onReloadCode}><RefreshCw />Reload code from disk</DropdownMenuItem>}
63
+ <DropdownMenuItem className={menuClass} onSelect={() => void downloadFile(props.projectName ?? "", props.filePath)}><Download />Download</DropdownMenuItem>
64
+ <DropdownMenuSeparator />
65
+ <DropdownMenuCheckboxItem className={checkboxClass} checked={props.wordWrap} onCheckedChange={props.onToggleWordWrap}><WrapText className="size-4 text-muted-foreground" />Word wrap</DropdownMenuCheckboxItem>
66
+ {props.onToggleInlineBlame && <DropdownMenuCheckboxItem className={checkboxClass} checked={props.inlineBlame} onCheckedChange={props.onToggleInlineBlame}><UserRound className="size-4 text-muted-foreground" />Inline blame</DropdownMenuCheckboxItem>}
67
+ {props.onToggleLsp && <DropdownMenuCheckboxItem className={checkboxClass} checked={props.lspEnabled} onCheckedChange={props.onToggleLsp}><Zap className="size-4 text-muted-foreground" />Language server</DropdownMenuCheckboxItem>}
68
+ <DropdownMenuSub>
69
+ <DropdownMenuSubTrigger className={`${menuClass} gap-2`}><FileCode className="size-4 text-muted-foreground" />Editor language</DropdownMenuSubTrigger>
70
+ <DropdownMenuSubContent className="max-h-80 overflow-y-auto">
71
+ <DropdownMenuRadioGroup value={props.language} onValueChange={props.onLanguageChange}>
72
+ {EDITOR_LANGUAGES.map((language) => <DropdownMenuRadioItem key={language.id} className="min-h-11 md:min-h-8" value={language.id}>{language.label}</DropdownMenuRadioItem>)}
73
+ </DropdownMenuRadioGroup>
74
+ </DropdownMenuSubContent>
75
+ </DropdownMenuSub>
76
+ </DropdownMenuContent>
77
+ </DropdownMenu>
78
+ </div>
79
+ );
80
+ }
@@ -0,0 +1,30 @@
1
+ import { useEffect, useState } from "react";
2
+ import { api } from "@/lib/api-client";
3
+ import { Loader2 } from "@/lib/icons";
4
+
5
+ /** The server also enforces the sandbox, including when a preview URL is opened directly. */
6
+ export function HtmlPreview({ filePath, projectName, revision }: {
7
+ filePath: string;
8
+ projectName?: string;
9
+ revision: number;
10
+ }) {
11
+ const [url, setUrl] = useState<string>();
12
+ const [error, setError] = useState<string>();
13
+ useEffect(() => {
14
+ const controller = new AbortController();
15
+ setUrl(undefined);
16
+ setError(undefined);
17
+ const timeout = setTimeout(() => controller.abort(new Error("Preview request timed out. Try Refresh.")), 30_000);
18
+ let active = true;
19
+ api.post<{ url: string }>("/api/html-preview", { filePath, projectName }, { signal: controller.signal })
20
+ .then((data) => { if (active) setUrl(data.url); })
21
+ .catch((reason: unknown) => { if (active) setError(reason instanceof Error ? reason.message : "Could not open HTML preview"); })
22
+ .finally(() => clearTimeout(timeout));
23
+ return () => { active = false; clearTimeout(timeout); controller.abort(); };
24
+ }, [filePath, projectName, revision]);
25
+
26
+ if (error) return <div role="alert" className="p-4 text-sm text-destructive">{error}. Use Refresh to retry.</div>;
27
+ if (!url) return <div role="status" className="flex flex-1 items-center justify-center gap-2 text-sm text-muted-foreground"><Loader2 className="size-5 animate-spin" />Loading preview…</div>;
28
+ return <iframe title="HTML preview" src={url} sandbox="allow-scripts" referrerPolicy="no-referrer"
29
+ className="flex-1 min-h-0 w-full border-0 bg-white" />;
30
+ }
@@ -6,6 +6,7 @@ import { useTabStore } from "@/stores/tab-store";
6
6
  import { projectUrl, api } from "@/lib/api-client";
7
7
  import { cn } from "@/lib/utils";
8
8
  import { FileIcon } from "@/lib/file-icons";
9
+ import { emitOnboardingEvidence } from "@/lib/onboarding/onboarding-types";
9
10
 
10
11
  interface SearchMatch {
11
12
  lineNum: number;
@@ -63,7 +64,7 @@ function OptionButton({ active, onClick, title, children }: { active: boolean; o
63
64
  );
64
65
  }
65
66
 
66
- export function SearchPanel() {
67
+ export function SearchPanel({ onNavigate }: { onNavigate?: () => void } = {}) {
67
68
  const { activeProject } = useProjectStore(useShallow((s) => ({ activeProject: s.activeProject })));
68
69
  const openTab = useTabStore((s) => s.openTab);
69
70
 
@@ -82,8 +83,25 @@ export function SearchPanel() {
82
83
  const [collapsed, setCollapsed] = useState<Set<string>>(new Set());
83
84
  const inputRef = useRef<HTMLInputElement>(null);
84
85
  const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);
86
+ const panelRef = useRef<HTMLDivElement>(null);
87
+ const requestId = useRef(0);
88
+ const [searchError, setSearchError] = useState<string | null>(null);
89
+ const [searched, setSearched] = useState(false);
90
+ // Invalidate synchronously during render, including the debounce gap.
91
+ const signature = JSON.stringify([activeProject?.name, query, caseSensitive, wholeWord, useRegex, filesFilter]);
92
+ const currentSignature = useRef(signature);
93
+ if (currentSignature.current !== signature) {
94
+ currentSignature.current = signature;
95
+ requestId.current++;
96
+ }
85
97
 
86
98
  const doSearch = useCallback(async (q: string, cs: boolean, ww: boolean, rx: boolean, ff: string) => {
99
+ const id = ++requestId.current;
100
+ setSearchError(null);
101
+ setSearched(false);
102
+ setLoading(false);
103
+ setResults([]);
104
+ setTotal(0);
87
105
  setRegexError(false);
88
106
  if (!activeProject || (!rx && q.length < 2) || (rx && q.length < 1)) {
89
107
  setResults([]);
@@ -100,19 +118,30 @@ export function SearchPanel() {
100
118
  const data = await api.get<{ results: SearchResult[]; total: number }>(
101
119
  `${projectUrl(activeProject.name)}/files/search?${params}`
102
120
  );
121
+ if (id !== requestId.current) return;
103
122
  setResults(data.results);
104
123
  setTotal(data.total);
105
- } catch {
124
+ setSearched(true);
125
+ const visible = !!panelRef.current?.checkVisibility({ checkOpacity: true, checkVisibilityCSS: true });
126
+ if (visible) emitOnboardingEvidence({ type: "search-succeeded", projectName: activeProject.name, requestId: String(id), visible });
127
+ } catch (error) {
128
+ if (id !== requestId.current) return;
106
129
  setResults([]);
130
+ setSearchError(error instanceof Error ? error.message : "Unable to search this project.");
107
131
  } finally {
108
- setLoading(false);
132
+ if (id === requestId.current) setLoading(false);
109
133
  }
110
134
  }, [activeProject]);
111
135
 
112
136
  useEffect(() => {
113
137
  if (debounceRef.current) clearTimeout(debounceRef.current);
138
+ setSearched(false);
139
+ setSearchError(null);
140
+ setResults([]);
141
+ setTotal(0);
142
+ setLoading(false);
114
143
  debounceRef.current = setTimeout(() => doSearch(query, caseSensitive, wholeWord, useRegex, filesFilter), 300);
115
- return () => { if (debounceRef.current) clearTimeout(debounceRef.current); };
144
+ return () => { requestId.current++; if (debounceRef.current) clearTimeout(debounceRef.current); };
116
145
  }, [query, caseSensitive, wholeWord, useRegex, filesFilter, doSearch]);
117
146
 
118
147
  useEffect(() => { inputRef.current?.focus(); }, []);
@@ -129,6 +158,7 @@ export function SearchPanel() {
129
158
  projectId: activeProject.name,
130
159
  closable: true,
131
160
  });
161
+ onNavigate?.();
132
162
  }
133
163
 
134
164
  function toggleCollapse(file: string) {
@@ -169,7 +199,7 @@ export function SearchPanel() {
169
199
  }
170
200
 
171
201
  return (
172
- <div className="flex flex-col h-full">
202
+ <div ref={panelRef} data-onboarding="search" className="flex flex-col h-full">
173
203
  {/* Search input + options */}
174
204
  <div className="p-2 border-b border-border space-y-1.5">
175
205
  {/* Search row */}
@@ -265,7 +295,8 @@ export function SearchPanel() {
265
295
  {!loading && !replacing && replaceCount !== null && (
266
296
  <span className="text-success">{replaceCount} replacement{replaceCount !== 1 ? "s" : ""} made</span>
267
297
  )}
268
- {!loading && !replacing && replaceCount === null && !regexError && query.length >= 2 && results.length === 0 && <span>No results</span>}
298
+ {searchError && <span role="alert" className="text-destructive">Search failed: {searchError} <button className="underline" onClick={() => void doSearch(query, caseSensitive, wholeWord, useRegex, filesFilter)}>Retry search</button></span>}
299
+ {!loading && !replacing && !searchError && searched && replaceCount === null && !regexError && results.length === 0 && <span>No results</span>}
269
300
  {!loading && !replacing && replaceCount === null && total > 0 && (
270
301
  <span>{total} result{total !== 1 ? "s" : ""} in {results.length} file{results.length !== 1 ? "s" : ""}</span>
271
302
  )}
@@ -1,4 +1,5 @@
1
- import { useEffect, useState, useCallback, useMemo } from "react";
1
+ import { useEffect, useState, useCallback, useMemo, useRef } from "react";
2
+ import { emitOnboardingEvidence } from "@/lib/onboarding/onboarding-types";
2
3
  import {
3
4
  Plus,
4
5
  Minus,
@@ -134,6 +135,29 @@ export function GitStatusPanel({ metadata, tabId, onNavigate }: GitStatusPanelPr
134
135
  // whose children are. This resolves which one every call below talks to.
135
136
  const gitRepo = useGitRepo(projectName);
136
137
  const gitRoot = gitRepo.repo?.path ?? activeProjectPath;
138
+ const panelRef = useRef<HTMLDivElement>(null);
139
+ const requestId = useRef(0);
140
+ const repoKey = `${projectName}:${gitRepo.repo?.path ?? ""}`;
141
+ const currentRepoKey = useRef(repoKey);
142
+ if (currentRepoKey.current !== repoKey) {
143
+ currentRepoKey.current = repoKey;
144
+ requestId.current++;
145
+ }
146
+ const [loadedRepoKey, setLoadedRepoKey] = useState<string | null>(null);
147
+ const activeProjectName = useProjectStore((s) => s.activeProject?.name);
148
+ const activeTabId = useTabStore((s) => s.activeTabId);
149
+ const [onboardingRefresh, setOnboardingRefresh] = useState(0);
150
+ useEffect(() => {
151
+ const refresh = () => setOnboardingRefresh((n) => n + 1);
152
+ window.addEventListener("ppm:onboarding-refresh", refresh);
153
+ return () => window.removeEventListener("ppm:onboarding-refresh", refresh);
154
+ }, []);
155
+ useEffect(() => {
156
+ if (!projectName || projectName !== activeProjectName || (tabId && tabId !== activeTabId) ||
157
+ !gitRepo.repo || loading || error || !status || loadedRepoKey !== repoKey) return;
158
+ const visible = !!panelRef.current?.checkVisibility({ checkOpacity: true, checkVisibilityCSS: true });
159
+ if (visible) emitOnboardingEvidence({ type: "git-ready", projectName, visible });
160
+ }, [onboardingRefresh, projectName, activeProjectName, tabId, activeTabId, gitRepo.repo, loading, error, status, loadedRepoKey, repoKey]);
137
161
  // Git Graph extension is available when it has registered its command.
138
162
  const gitGraphAvailable = useExtensionStore(
139
163
  (s) => s.contributions?.commands?.some((c) => c.command === "git-graph.view") ?? false,
@@ -143,12 +167,15 @@ export function GitStatusPanel({ metadata, tabId, onNavigate }: GitStatusPanelPr
143
167
  // No repository resolved yet: the panel is showing the picker, and asking
144
168
  // git in the container folder is what produced the error this replaced.
145
169
  if (!projectName || !gitRepo.repo) return;
170
+ const id = ++requestId.current;
146
171
  try {
147
172
  setLoading(true);
148
173
  const data = await api.get<GitStatus>(
149
174
  gitRepo.gitUrl("/status"),
150
175
  );
176
+ if (id !== requestId.current) return;
151
177
  setStatus(data);
178
+ setLoadedRepoKey(`${projectName}:${gitRepo.repo.path}`);
152
179
  setGitChangesCount(
153
180
  projectName,
154
181
  data.staged.length + data.unstaged.length + data.untracked.length,
@@ -156,9 +183,10 @@ export function GitStatusPanel({ metadata, tabId, onNavigate }: GitStatusPanelPr
156
183
  useGitStatusStore.getState().setMeta(projectName, data);
157
184
  setError(null);
158
185
  } catch (e) {
186
+ if (id !== requestId.current) return;
159
187
  setError(e instanceof Error ? e.message : "Failed to fetch status");
160
188
  } finally {
161
- setLoading(false);
189
+ if (id === requestId.current) setLoading(false);
162
190
  }
163
191
  }, [projectName, gitRepo, setGitChangesCount]);
164
192
 
@@ -166,7 +194,7 @@ export function GitStatusPanel({ metadata, tabId, onNavigate }: GitStatusPanelPr
166
194
  fetchStatus();
167
195
  // Auto-reload every 5 seconds
168
196
  const interval = setInterval(fetchStatus, 5000);
169
- return () => clearInterval(interval);
197
+ return () => { requestId.current++; clearInterval(interval); };
170
198
  }, [fetchStatus]);
171
199
 
172
200
  const stageFiles = async (files: string[]) => {
@@ -460,7 +488,7 @@ export function GitStatusPanel({ metadata, tabId, onNavigate }: GitStatusPanelPr
460
488
  );
461
489
 
462
490
  return (
463
- <div className="flex flex-col h-full overflow-hidden">
491
+ <div ref={panelRef} data-onboarding="git" className="flex flex-col h-full overflow-hidden">
464
492
  <SidebarHeader icon={GitBranch} title={status?.current ? `On: ${status.current}` : "Source Control"}>
465
493
  <Button
466
494
  variant={viewMode === "flat" ? "secondary" : "ghost"}
@@ -5,6 +5,7 @@ import { useProjectStore } from "@/stores/project-store";
5
5
  import { useSettingsStore, type SidebarActiveTab } from "@/stores/settings-store";
6
6
  import { useExtensionStore } from "@/stores/extension-store";
7
7
  import { FileTree } from "@/components/explorer/file-tree";
8
+ import { SearchPanel } from "@/components/explorer/search-panel";
8
9
  import { GitStatusPanel } from "@/components/git/git-status-panel";
9
10
  import { DatabaseSidebar } from "@/components/database/database-sidebar";
10
11
  import { JiraPanel } from "@/components/jira/jira-panel";
@@ -29,10 +30,10 @@ import { FeatureBadge } from "@/components/ui/feature-badge";
29
30
  import type { FeatureBadgeId } from "@/lib/feature-badges";
30
31
  import { cn } from "@/lib/utils";
31
32
 
32
- // Tab ids the mobile drawer can render content for. `search` is desktop-only for now;
33
+ // Tab ids the mobile drawer can render content for;
33
34
  // ext views are supported via the `ext:` prefix.
34
35
  const MOBILE_SUPPORTED = new Set<string>([
35
- "history", "teams", "explorer", "git", "database", "tunnels", "ai-resources", "jira",
36
+ "history", "teams", "explorer", "search", "git", "database", "tunnels", "ai-resources", "jira",
36
37
  ]);
37
38
  const isMobileSupported = (id: SidebarActiveTab) => MOBILE_SUPPORTED.has(id) || id.startsWith("ext:");
38
39
 
@@ -137,13 +138,14 @@ export function MobileDrawer({ isOpen, onClose, initialTab }: MobileDrawerProps)
137
138
  </div>
138
139
 
139
140
  {/* Tab content — scrollable */}
140
- <div className="flex-1 overflow-y-auto min-h-0">
141
+ <div data-onboarding={isOpen ? activeTab : undefined} className="flex-1 overflow-y-auto min-h-0">
141
142
  {activeTab === "history" && (activeProject
142
143
  ? <SessionHistoryList variant="sidebar" projectName={activeProject.name} onNavigate={onClose} />
143
144
  : noProject)}
144
145
  {activeTab === "teams" && (activeProject ? <GroupList /> : noProject)}
145
146
  {activeTab === "explorer" && (activeProject ? <FileTree onFileOpen={onClose} /> : noProject)}
146
- {activeTab === "git" && <GitStatusPanel metadata={{ projectName: activeProject?.name }} onNavigate={onClose} />}
147
+ {isOpen && activeTab === "search" && <SearchPanel onNavigate={onClose} />}
148
+ {isOpen && activeTab === "git" && <GitStatusPanel metadata={{ projectName: activeProject?.name }} onNavigate={onClose} />}
147
149
  {activeTab === "database" && <DatabaseSidebar />}
148
150
  {activeTab === "tunnels" && <TunnelManagerTab />}
149
151
  {activeTab === "jira" && <JiraPanel />}
@@ -206,6 +206,7 @@ export const ProjectSwitcher = memo(function ProjectSwitcher() {
206
206
  <input ref={fileInputRef} type="file" accept="image/*" className="hidden" onChange={onFilePicked} />
207
207
  <button
208
208
  ref={btnRef}
209
+ data-onboarding="project"
209
210
  onClick={toggleFlyout}
210
211
  title="Switch project"
211
212
  className={cn(
@@ -108,7 +108,7 @@ export const Sidebar = memo(function Sidebar() {
108
108
 
109
109
  <div className="flex-1 min-w-0 flex flex-col">
110
110
  {/* Panel content */}
111
- <div className="flex-1 overflow-y-auto min-h-0">
111
+ <div className="flex-1 overflow-y-auto min-h-0" data-onboarding={sidebarActiveTab === "explorer" ? "explorer" : undefined}>
112
112
  {sidebarActiveTab === "explorer" && (
113
113
  activeProject ? (
114
114
  <FileTree />
@@ -0,0 +1,15 @@
1
+ import { Sparkles } from "@/lib/icons";
2
+ import { Button } from "@/components/ui/button";
3
+ import { useOnboardingStore } from "@/stores/onboarding-store";
4
+ import { useProjectStore } from "@/stores/project-store";
5
+ import { openQuickOrientation } from "./onboarding-quick-orientation";
6
+
7
+ /** Reopening guidance never changes the workspace or the user's drafts. */
8
+ export function OnboardingEntry({ compact = false }: { compact?: boolean }) {
9
+ const state = useOnboardingStore();
10
+ const projectName = useProjectStore((s) => s.activeProject?.name);
11
+ const canResume = state.goal && state.familiarity && state.status !== "finished";
12
+ return <div className={compact ? "flex flex-wrap items-center gap-2" : "grid gap-2"}><Button variant="outline" className={compact ? "min-h-11" : "min-h-11 w-full"}
13
+ onClick={() => canResume ? state.resume(projectName) : state.status === "finished" ? state.replay() : state.begin()}><Sparkles className="size-4" />{canResume ? "Resume guided tour" : state.status === "unseen" ? "Get started with PPM" : "Open guided tour"}</Button>
14
+ <Button variant="link" className="min-h-11" onClick={openQuickOrientation}>Quick orientation</Button></div>;
15
+ }
@@ -0,0 +1,31 @@
1
+ import { useEffect, useState } from "react";
2
+ import { api, projectUrl } from "@/lib/api-client";
3
+ import { Button } from "@/components/ui/button";
4
+ import { useOnboardingStore } from "@/stores/onboarding-store";
5
+ import type { FileDirEntry } from "../../../types/project";
6
+
7
+ export function OnboardingFileHelp() {
8
+ const projectName = useOnboardingStore((state) => state.projectName);
9
+ const skip = useOnboardingStore((state) => state.skip);
10
+ const [empty, setEmpty] = useState(false);
11
+ useEffect(() => {
12
+ let cancelled = false;
13
+ let requestId = 0;
14
+ setEmpty(false);
15
+ if (!projectName) return;
16
+ const check = () => {
17
+ const id = ++requestId;
18
+ void api.get<FileDirEntry[]>(`${projectUrl(projectName)}/files/list`).then((entries) => {
19
+ if (!cancelled && id === requestId) setEmpty(entries.length === 0);
20
+ }).catch(() => { if (!cancelled && id === requestId) setEmpty(false); });
21
+ };
22
+ check();
23
+ window.addEventListener("ppm:onboarding-refresh", check);
24
+ return () => { cancelled = true; window.removeEventListener("ppm:onboarding-refresh", check); };
25
+ }, [projectName]);
26
+ return empty ? <div className="mt-3 rounded-lg border border-border p-3" role="status">
27
+ <p className="text-sm text-text-secondary">No files are visible in this project yet. You can create your own files later or choose another project. Nothing needs to be created for this tour.</p>
28
+ <Button variant="outline" className="w-full min-h-11 mt-2" onClick={skip}>Skip empty project step</Button>
29
+ <p className="text-xs text-text-secondary mt-2">This step will be marked skipped, not completed.</p>
30
+ </div> : <p className="text-xs text-text-secondary mt-2">Choose any text file, such as .txt, .js, .py or .md. No README or package.json is required. Markdown Preview counts too. If there is no readable file, use Skip step.</p>;
31
+ }
@@ -0,0 +1,45 @@
1
+ import { useState } from "react";
2
+ import { Check, ChevronDown, ChevronUp, X } from "@/lib/icons";
3
+ import { Button } from "@/components/ui/button";
4
+ import { useOnboardingStore } from "@/stores/onboarding-store";
5
+ import { getOnboardingCopy } from "@/lib/onboarding/onboarding-copy";
6
+ import { getOnboardingSteps } from "@/lib/onboarding/onboarding-steps";
7
+ import type { OnboardingStepId } from "@/lib/onboarding/onboarding-types";
8
+ import { openQuickOrientation } from "./onboarding-quick-orientation";
9
+ import { OnboardingFileHelp } from "./onboarding-file-help";
10
+
11
+ export function OnboardingGuide({ collapsed, setCollapsed, onAction, onSettings }: {
12
+ collapsed: boolean; setCollapsed: (value: boolean) => void; onAction: (step: OnboardingStepId) => void; onSettings: () => void;
13
+ }) {
14
+ const state = useOnboardingStore();
15
+ const [more, setMore] = useState(false);
16
+ const steps = getOnboardingSteps(state.goal);
17
+ const step = state.currentStep;
18
+ if (!step) return null;
19
+ const copy = getOnboardingCopy(step, state.familiarity ?? "beginner");
20
+ const index = steps.indexOf(step);
21
+ return <div className="p-4">
22
+ <div className="flex items-center gap-2">
23
+ <div className="flex-1 min-w-0"><p className="text-[11px] uppercase tracking-widest text-primary font-medium">Guided tour · {index + 1} of {steps.length}</p><h2 className="font-semibold text-sm mt-1" aria-live="polite">{copy.title}</h2></div>
24
+ <Button variant="ghost" className="min-h-11 min-w-11" aria-label={collapsed ? "Expand guide" : "Collapse guide"} onClick={() => setCollapsed(!collapsed)}>{collapsed ? <ChevronUp /> : <ChevronDown />}</Button>
25
+ <Button variant="ghost" className="min-h-11 min-w-11" aria-label="Pause tour" onClick={state.pause}><X /></Button>
26
+ </div>
27
+ {!collapsed && <>
28
+ <div className="flex gap-1 mt-3 mb-4" aria-label="Tour progress">{steps.map((id) => <span key={id} className={`h-1 flex-1 rounded-full ${state.completed.includes(id) ? "bg-primary" : state.skipped.includes(id) ? "bg-text-subtle" : "bg-border"}`} />)}</div>
29
+ <p className="text-sm text-text-secondary leading-relaxed">{copy.body}</p>
30
+ {step === "file" && <OnboardingFileHelp />}
31
+ {step === "run" && <p className="text-xs text-text-secondary mt-2">Open README directly, or package.json if no README is available. README Preview counts too.</p>}
32
+ {step === "run" && state.runDocumentReady && <p className="text-sm text-primary mt-2 flex items-center gap-1"><Check className="size-4" />Run instructions opened</p>}
33
+ <Button className="w-full mt-4 min-h-11" onClick={() => onAction(step)}>{step === "run" && state.runDocumentReady ? "I know where to run commands" : copy.action}</Button>
34
+ {(step === "chat" || step === "send") && <Button variant="ghost" className="w-full min-h-11 mt-1" onClick={onSettings}>AI settings</Button>}
35
+ <button className="text-xs text-primary py-3 min-h-11" onClick={() => setMore(!more)} aria-expanded={more}>{more ? "Less explanation" : "Explain this step"}</button>
36
+ {more && <p className="text-sm text-text-secondary leading-relaxed mb-3">{copy.more}</p>}
37
+ <Button variant="link" className="w-full min-h-11" onClick={openQuickOrientation}>Quick orientation</Button>
38
+ <div className="flex items-center justify-between border-t border-border pt-2">
39
+ <Button variant="ghost" className="min-h-11 px-2" disabled={index === 0} onClick={state.back}>Back</Button>
40
+ <Button variant="ghost" className="min-h-11 px-2" onClick={state.changeChoices}>Change guide</Button>
41
+ <Button variant="ghost" className="min-h-11 px-2" onClick={state.skip}>Skip step</Button>
42
+ </div>
43
+ </>}
44
+ </div>;
45
+ }