@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.
- package/CHANGELOG.md +21 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/cli-reference.md +4 -4
- package/assets/skills/ppm/references/http-api.md +1 -1
- package/dist/web/assets/abap-IN2yINdN.js.br +0 -0
- package/dist/web/assets/abap-IN2yINdN.js.gz +0 -0
- package/dist/web/assets/accounts-settings-section-BdUSroB_.js +1 -0
- package/dist/web/assets/accounts-settings-section-BdUSroB_.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-BdUSroB_.js.gz +0 -0
- package/dist/web/assets/actionscript-3-C_t772eR.js.br +0 -0
- package/dist/web/assets/actionscript-3-C_t772eR.js.gz +0 -0
- package/dist/web/assets/ada-DPme3emm.js.br +0 -0
- package/dist/web/assets/ada-DPme3emm.js.gz +0 -0
- package/dist/web/assets/{ai-resource-editor-C4ecid2g.js → ai-resource-editor-UMbGL_jd.js} +1 -1
- package/dist/web/assets/ai-resource-editor-UMbGL_jd.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-UMbGL_jd.js.gz +0 -0
- package/dist/web/assets/{ai-settings-section-BOwGdiyH.js → ai-settings-section-DIb_MwDG.js} +1 -1
- package/dist/web/assets/ai-settings-section-DIb_MwDG.js.br +0 -0
- package/dist/web/assets/ai-settings-section-DIb_MwDG.js.gz +0 -0
- package/dist/web/assets/{ai-settings-section-Cqz13gRt.js → ai-settings-section-DXD90Oed.js} +1 -1
- package/dist/web/assets/andromeeda-DSV4i4mZ.js.br +0 -0
- package/dist/web/assets/andromeeda-DSV4i4mZ.js.gz +0 -0
- package/dist/web/assets/angular-html-G66FNlyn.js.br +0 -0
- package/dist/web/assets/angular-html-G66FNlyn.js.gz +0 -0
- package/dist/web/assets/angular-ts-B-PnUMyt.js.br +0 -0
- package/dist/web/assets/angular-ts-B-PnUMyt.js.gz +0 -0
- package/dist/web/assets/apache-CWr8s8I8.js.br +0 -0
- package/dist/web/assets/apache-CWr8s8I8.js.gz +0 -0
- package/dist/web/assets/apex-Z20JnDF5.js.br +0 -0
- package/dist/web/assets/apex-Z20JnDF5.js.gz +0 -0
- package/dist/web/assets/api-client-Jn3njtNw.js.br +0 -0
- package/dist/web/assets/api-client-Jn3njtNw.js.gz +0 -0
- package/dist/web/assets/api-settings-BxijvPBR.js.br +0 -0
- package/dist/web/assets/api-settings-BxijvPBR.js.gz +0 -0
- package/dist/web/assets/apl-BmDqqwE8.js.br +0 -0
- package/dist/web/assets/apl-BmDqqwE8.js.gz +0 -0
- package/dist/web/assets/{appearance-settings-section-DbA8L-Vz.js → appearance-settings-section-cnAoZk5I.js} +1 -1
- package/dist/web/assets/appearance-settings-section-cnAoZk5I.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-cnAoZk5I.js.gz +0 -0
- package/dist/web/assets/applescript-BKNPu3ga.js.br +0 -0
- package/dist/web/assets/applescript-BKNPu3ga.js.gz +0 -0
- package/dist/web/assets/ara-hWdY3O96.js.br +0 -0
- package/dist/web/assets/ara-hWdY3O96.js.gz +0 -0
- package/dist/web/assets/asciidoc-eynhq496.js.br +0 -0
- package/dist/web/assets/asciidoc-eynhq496.js.gz +0 -0
- package/dist/web/assets/asm-Bu02Kq4P.js.br +0 -0
- package/dist/web/assets/asm-Bu02Kq4P.js.gz +0 -0
- package/dist/web/assets/astro-BfwMNfxr.js.br +0 -0
- package/dist/web/assets/astro-BfwMNfxr.js.gz +0 -0
- package/dist/web/assets/{audio-preview-CxJd8wRV.js → audio-preview-D9nCryTq.js} +1 -1
- package/dist/web/assets/audio-preview-D9nCryTq.js.br +0 -0
- package/dist/web/assets/audio-preview-D9nCryTq.js.gz +0 -0
- package/dist/web/assets/aurora-x-BHBGXbIZ.js.br +0 -0
- package/dist/web/assets/aurora-x-BHBGXbIZ.js.gz +0 -0
- package/dist/web/assets/awk-B4ojezyv.js.br +0 -0
- package/dist/web/assets/awk-B4ojezyv.js.gz +0 -0
- package/dist/web/assets/ayu-dark-D0GQzFi9.js.br +0 -0
- package/dist/web/assets/ayu-dark-D0GQzFi9.js.gz +0 -0
- package/dist/web/assets/ayu-light-BVYb5Yn8.js.br +0 -0
- package/dist/web/assets/ayu-light-BVYb5Yn8.js.gz +0 -0
- package/dist/web/assets/ayu-mirage-BGFW6oNb.js.br +0 -0
- package/dist/web/assets/ayu-mirage-BGFW6oNb.js.gz +0 -0
- package/dist/web/assets/ballerina-B6Og3IKT.js.br +0 -0
- package/dist/web/assets/ballerina-B6Og3IKT.js.gz +0 -0
- package/dist/web/assets/bat-D8YFILfx.js.br +0 -0
- package/dist/web/assets/bat-D8YFILfx.js.gz +0 -0
- package/dist/web/assets/beancount-BjlbBBuX.js.br +0 -0
- package/dist/web/assets/beancount-BjlbBBuX.js.gz +0 -0
- package/dist/web/assets/berry-Cz1ygeoj.js.br +0 -0
- package/dist/web/assets/berry-Cz1ygeoj.js.gz +0 -0
- package/dist/web/assets/bibtex-CVkJceJh.js.br +0 -0
- package/dist/web/assets/bibtex-CVkJceJh.js.gz +0 -0
- package/dist/web/assets/bicep-DrhYI5GX.js.br +0 -0
- package/dist/web/assets/bicep-DrhYI5GX.js.gz +0 -0
- package/dist/web/assets/bird2-BV-KJtmc.js.br +0 -0
- package/dist/web/assets/bird2-BV-KJtmc.js.gz +0 -0
- package/dist/web/assets/blade-BsFV4pnN.js.br +0 -0
- package/dist/web/assets/blade-BsFV4pnN.js.gz +0 -0
- package/dist/web/assets/{branch-review-tab-CMTa2uSR.js → branch-review-tab-zZcw_Z9A.js} +1 -1
- package/dist/web/assets/branch-review-tab-zZcw_Z9A.js.br +0 -0
- package/dist/web/assets/branch-review-tab-zZcw_Z9A.js.gz +0 -0
- package/dist/web/assets/bsl-Cw9Outng.js.br +0 -0
- package/dist/web/assets/bsl-Cw9Outng.js.gz +0 -0
- package/dist/web/assets/button-B9CTrsEf.js.br +0 -0
- package/dist/web/assets/button-B9CTrsEf.js.gz +0 -0
- package/dist/web/assets/c-CuLlvxbG.js.br +0 -0
- package/dist/web/assets/c-CuLlvxbG.js.gz +0 -0
- package/dist/web/assets/c3-CI7-1CJ0.js.br +0 -0
- package/dist/web/assets/c3-CI7-1CJ0.js.gz +0 -0
- package/dist/web/assets/cadence-DjxhNP3Q.js.br +0 -0
- package/dist/web/assets/cadence-DjxhNP3Q.js.gz +0 -0
- package/dist/web/assets/cairo-DOK5Wqnd.js.br +0 -0
- package/dist/web/assets/cairo-DOK5Wqnd.js.gz +0 -0
- package/dist/web/assets/can-open-in-ppm-cv5--yHX.js.br +0 -0
- package/dist/web/assets/can-open-in-ppm-cv5--yHX.js.gz +0 -0
- package/dist/web/assets/catppuccin-frappe-CEozpJRh.js.br +0 -0
- package/dist/web/assets/catppuccin-frappe-CEozpJRh.js.gz +0 -0
- package/dist/web/assets/catppuccin-latte-C4sXQFMc.js.br +0 -0
- package/dist/web/assets/catppuccin-latte-C4sXQFMc.js.gz +0 -0
- package/dist/web/assets/catppuccin-macchiato-Ci-fDhXy.js.br +0 -0
- package/dist/web/assets/catppuccin-macchiato-Ci-fDhXy.js.gz +0 -0
- package/dist/web/assets/catppuccin-mocha-CH7YXw8d.js.br +0 -0
- package/dist/web/assets/catppuccin-mocha-CH7YXw8d.js.gz +0 -0
- package/dist/web/assets/chat-tab-Bb6Wx_9W.js +15 -0
- package/dist/web/assets/chat-tab-Bb6Wx_9W.js.br +0 -0
- package/dist/web/assets/chat-tab-Bb6Wx_9W.js.gz +0 -0
- package/dist/web/assets/clarity-BWrJ7UmT.js.br +0 -0
- package/dist/web/assets/clarity-BWrJ7UmT.js.gz +0 -0
- package/dist/web/assets/clojure-C94fh2hb.js.br +0 -0
- package/dist/web/assets/clojure-C94fh2hb.js.gz +0 -0
- package/dist/web/assets/cmake-CtvCkMsG.js.br +0 -0
- package/dist/web/assets/cmake-CtvCkMsG.js.gz +0 -0
- package/dist/web/assets/cobol-DRaRy4FK.js.br +0 -0
- package/dist/web/assets/cobol-DRaRy4FK.js.gz +0 -0
- package/dist/web/assets/code-editor-DT7ra7LE.js +7 -0
- package/dist/web/assets/code-editor-DT7ra7LE.js.br +0 -0
- package/dist/web/assets/code-editor-DT7ra7LE.js.gz +0 -0
- package/dist/web/assets/codeql-BOoP5HY2.js.br +0 -0
- package/dist/web/assets/codeql-BOoP5HY2.js.gz +0 -0
- package/dist/web/assets/{codex-daily-guard-ChDPiXDx.js → codex-daily-guard-BTimXxlM.js} +1 -1
- package/dist/web/assets/codex-daily-guard-BTimXxlM.js.br +0 -0
- package/dist/web/assets/codex-daily-guard-BTimXxlM.js.gz +0 -0
- package/dist/web/assets/coffee-DvXuBmEJ.js.br +0 -0
- package/dist/web/assets/coffee-DvXuBmEJ.js.gz +0 -0
- package/dist/web/assets/common-lisp-B9nlMFJd.js.br +0 -0
- package/dist/web/assets/common-lisp-B9nlMFJd.js.gz +0 -0
- package/dist/web/assets/{conflict-editor-Axs9Ad7A.js → conflict-editor-Cu9DCNow.js} +3 -3
- package/dist/web/assets/conflict-editor-Cu9DCNow.js.br +0 -0
- package/dist/web/assets/conflict-editor-Cu9DCNow.js.gz +0 -0
- package/dist/web/assets/context-menu-C6pIsf83.js.br +0 -0
- package/dist/web/assets/context-menu-C6pIsf83.js.gz +0 -0
- package/dist/web/assets/coq-CgzIQiSH.js.br +0 -0
- package/dist/web/assets/coq-CgzIQiSH.js.gz +0 -0
- package/dist/web/assets/cpp-zCmm8rKA.js.br +0 -0
- package/dist/web/assets/cpp-zCmm8rKA.js.gz +0 -0
- package/dist/web/assets/createLucideIcon-DoiEKeJ_.js.br +0 -0
- package/dist/web/assets/createLucideIcon-DoiEKeJ_.js.gz +0 -0
- package/dist/web/assets/crystal-CdQx6lB6.js.br +0 -0
- package/dist/web/assets/crystal-CdQx6lB6.js.gz +0 -0
- package/dist/web/assets/csharp-4xAIx3jw.js.br +0 -0
- package/dist/web/assets/csharp-4xAIx3jw.js.gz +0 -0
- package/dist/web/assets/css-D4YoLYGn.js.br +0 -0
- package/dist/web/assets/css-D4YoLYGn.js.gz +0 -0
- package/dist/web/assets/csv-C2v-ZakW.js.br +0 -0
- package/dist/web/assets/csv-C2v-ZakW.js.gz +0 -0
- package/dist/web/assets/csv-parser-DpCmuupp.js.br +0 -0
- package/dist/web/assets/csv-parser-DpCmuupp.js.gz +0 -0
- package/dist/web/assets/{csv-preview-DTUAW2HW.js → csv-preview-BpKdfkoD.js} +1 -1
- package/dist/web/assets/csv-preview-BpKdfkoD.js.br +0 -0
- package/dist/web/assets/csv-preview-BpKdfkoD.js.gz +0 -0
- package/dist/web/assets/cue-Bbznh_an.js.br +0 -0
- package/dist/web/assets/cue-Bbznh_an.js.gz +0 -0
- package/dist/web/assets/cypher-BKhVEARF.js.br +0 -0
- package/dist/web/assets/cypher-BKhVEARF.js.gz +0 -0
- package/dist/web/assets/d-D6IhWopl.js.br +0 -0
- package/dist/web/assets/d-D6IhWopl.js.gz +0 -0
- package/dist/web/assets/dark-plus-xAWu790O.js.br +0 -0
- package/dist/web/assets/dark-plus-xAWu790O.js.gz +0 -0
- package/dist/web/assets/dart-Bj6S9O1j.js.br +0 -0
- package/dist/web/assets/dart-Bj6S9O1j.js.gz +0 -0
- package/dist/web/assets/data-grid-overlay-editor-6xUCeLHh.js.br +0 -0
- package/dist/web/assets/data-grid-overlay-editor-6xUCeLHh.js.gz +0 -0
- package/dist/web/assets/data-grid-types-C5bthITf.js.br +0 -0
- package/dist/web/assets/data-grid-types-C5bthITf.js.gz +0 -0
- package/dist/web/assets/{database-viewer-qXDiWeXj.js → database-viewer-CFWSVJ6D.js} +1 -1
- package/dist/web/assets/database-viewer-CFWSVJ6D.js.br +0 -0
- package/dist/web/assets/database-viewer-CFWSVJ6D.js.gz +0 -0
- package/dist/web/assets/dax-CF2zvaqq.js.br +0 -0
- package/dist/web/assets/dax-CF2zvaqq.js.gz +0 -0
- package/dist/web/assets/desktop-CnmyxMKE.js.br +0 -0
- package/dist/web/assets/desktop-CnmyxMKE.js.gz +0 -0
- package/dist/web/assets/dialog-B84_DJQ8.js.br +0 -0
- package/dist/web/assets/dialog-B84_DJQ8.js.gz +0 -0
- package/dist/web/assets/diff-Qi8WuJsI.js.br +0 -0
- package/dist/web/assets/diff-Qi8WuJsI.js.gz +0 -0
- package/dist/web/assets/{diff-viewer-BtLiSpqe.js → diff-viewer-DfjjKjgw.js} +1 -1
- package/dist/web/assets/diff-viewer-DfjjKjgw.js.br +0 -0
- package/dist/web/assets/diff-viewer-DfjjKjgw.js.gz +0 -0
- package/dist/web/assets/dist-Bjseolz4.js.br +0 -0
- package/dist/web/assets/dist-Bjseolz4.js.gz +0 -0
- package/dist/web/assets/dist-Czq7BUMy.js.br +0 -0
- package/dist/web/assets/dist-Czq7BUMy.js.gz +0 -0
- package/dist/web/assets/docker-vLbbNP5d.js.br +0 -0
- package/dist/web/assets/docker-vLbbNP5d.js.gz +0 -0
- package/dist/web/assets/docx-preview-Gzi4QBez.js.br +0 -0
- package/dist/web/assets/docx-preview-Gzi4QBez.js.gz +0 -0
- package/dist/web/assets/dotenv-DJMvvNzn.js.br +0 -0
- package/dist/web/assets/dotenv-DJMvvNzn.js.gz +0 -0
- package/dist/web/assets/dracula-CtAh2rhB.js.br +0 -0
- package/dist/web/assets/dracula-CtAh2rhB.js.gz +0 -0
- package/dist/web/assets/dracula-soft-CXtuAAf6.js.br +0 -0
- package/dist/web/assets/dracula-soft-CXtuAAf6.js.gz +0 -0
- package/dist/web/assets/dream-maker-D5YQyK49.js.br +0 -0
- package/dist/web/assets/dream-maker-D5YQyK49.js.gz +0 -0
- package/dist/web/assets/edge-E8QLt7oi.js.br +0 -0
- package/dist/web/assets/edge-E8QLt7oi.js.gz +0 -0
- package/dist/web/assets/edit-diff-preview-CVv7EOFu.js.br +0 -0
- package/dist/web/assets/edit-diff-preview-CVv7EOFu.js.gz +0 -0
- package/dist/web/assets/{editor-language-service-D75GuLXP.js → editor-language-service-DN1yAn4G.js} +1 -1
- package/dist/web/assets/editor-language-service-DN1yAn4G.js.br +0 -0
- package/dist/web/assets/editor-language-service-DN1yAn4G.js.gz +0 -0
- package/dist/web/assets/elixir-DPb_-72P.js.br +0 -0
- package/dist/web/assets/elixir-DPb_-72P.js.gz +0 -0
- package/dist/web/assets/elm-BMzJY5b0.js.br +0 -0
- package/dist/web/assets/elm-BMzJY5b0.js.gz +0 -0
- package/dist/web/assets/emacs-lisp-CGTjbiqF.js.br +0 -0
- package/dist/web/assets/emacs-lisp-CGTjbiqF.js.gz +0 -0
- package/dist/web/assets/erb-AABQNtMK.js.br +0 -0
- package/dist/web/assets/erb-AABQNtMK.js.gz +0 -0
- package/dist/web/assets/erlang-CEIKOkfP.js.br +0 -0
- package/dist/web/assets/erlang-CEIKOkfP.js.gz +0 -0
- package/dist/web/assets/esm-B9RVMpwV.js.br +0 -0
- package/dist/web/assets/esm-B9RVMpwV.js.gz +0 -0
- package/dist/web/assets/everforest-dark-D59p7vAQ.js.br +0 -0
- package/dist/web/assets/everforest-dark-D59p7vAQ.js.gz +0 -0
- package/dist/web/assets/everforest-light-B3Qtud3V.js.br +0 -0
- package/dist/web/assets/everforest-light-B3Qtud3V.js.gz +0 -0
- package/dist/web/assets/explorer-body-DWyFKpWw.js +2 -0
- package/dist/web/assets/explorer-body-DWyFKpWw.js.br +0 -0
- package/dist/web/assets/explorer-body-DWyFKpWw.js.gz +0 -0
- package/dist/web/assets/{explorer-window-content-BeQocW3i.js → explorer-window-content-CgtS3nhS.js} +1 -1
- package/dist/web/assets/explorer-window-content-CgtS3nhS.js.br +0 -0
- package/dist/web/assets/explorer-window-content-CgtS3nhS.js.gz +0 -0
- package/dist/web/assets/{extension-manager-section-Bm2v3P-n.js → extension-manager-section-D7syyPQv.js} +1 -1
- package/dist/web/assets/extension-manager-section-D7syyPQv.js.br +0 -0
- package/dist/web/assets/extension-manager-section-D7syyPQv.js.gz +0 -0
- package/dist/web/assets/{extension-webview-CzxrAHyL.js → extension-webview-BkU4LB87.js} +1 -1
- package/dist/web/assets/extension-webview-BkU4LB87.js.br +0 -0
- package/dist/web/assets/extension-webview-BkU4LB87.js.gz +0 -0
- package/dist/web/assets/fennel-BCyHNUwf.js.br +0 -0
- package/dist/web/assets/fennel-BCyHNUwf.js.gz +0 -0
- package/dist/web/assets/file-icons-wS-OmEVu.js.br +0 -0
- package/dist/web/assets/file-icons-wS-OmEVu.js.gz +0 -0
- package/dist/web/assets/file-icons.generated-BtBErEwb.css.br +0 -0
- package/dist/web/assets/file-icons.generated-BtBErEwb.css.gz +0 -0
- package/dist/web/assets/file-store-Ds3qJ4hC.js.br +0 -0
- package/dist/web/assets/file-store-Ds3qJ4hC.js.gz +0 -0
- package/dist/web/assets/{files-settings-section-Bd-_GeZU.js → files-settings-section-BnQqhnUX.js} +1 -1
- package/dist/web/assets/files-settings-section-BnQqhnUX.js.br +0 -0
- package/dist/web/assets/files-settings-section-BnQqhnUX.js.gz +0 -0
- package/dist/web/assets/fish-DDDlLV2G.js.br +0 -0
- package/dist/web/assets/fish-DDDlLV2G.js.gz +0 -0
- package/dist/web/assets/fluent-By54R9tl.js.br +0 -0
- package/dist/web/assets/fluent-By54R9tl.js.gz +0 -0
- package/dist/web/assets/format-file-meta-PPi3ptkm.js.br +0 -0
- package/dist/web/assets/format-file-meta-PPi3ptkm.js.gz +0 -0
- package/dist/web/assets/fortran-fixed-form-CrXvLHyi.js.br +0 -0
- package/dist/web/assets/fortran-fixed-form-CrXvLHyi.js.gz +0 -0
- package/dist/web/assets/fortran-free-form-tP8mRym_.js.br +0 -0
- package/dist/web/assets/fortran-free-form-tP8mRym_.js.gz +0 -0
- package/dist/web/assets/fsharp-DCI4qAz_.js.br +0 -0
- package/dist/web/assets/fsharp-DCI4qAz_.js.gz +0 -0
- package/dist/web/assets/gdresource-Vb2kO1MG.js.br +0 -0
- package/dist/web/assets/gdresource-Vb2kO1MG.js.gz +0 -0
- package/dist/web/assets/gdscript-nHC2z6Te.js.br +0 -0
- package/dist/web/assets/gdscript-nHC2z6Te.js.gz +0 -0
- package/dist/web/assets/gdshader-K-cSmPlW.js.br +0 -0
- package/dist/web/assets/gdshader-K-cSmPlW.js.gz +0 -0
- package/dist/web/assets/general-settings-section-Chg1cFnJ.js +1 -0
- package/dist/web/assets/general-settings-section-Chg1cFnJ.js.br +0 -0
- package/dist/web/assets/general-settings-section-Chg1cFnJ.js.gz +0 -0
- package/dist/web/assets/genie-BAcRhvEe.js.br +0 -0
- package/dist/web/assets/genie-BAcRhvEe.js.gz +0 -0
- package/dist/web/assets/gherkin-CcifxMLb.js.br +0 -0
- package/dist/web/assets/gherkin-CcifxMLb.js.gz +0 -0
- package/dist/web/assets/git-commit-BMI_OWn-.js.br +0 -0
- package/dist/web/assets/git-commit-BMI_OWn-.js.gz +0 -0
- package/dist/web/assets/{git-log-panel-CtGxPzH6.js → git-log-panel-DoYx7qpu.js} +1 -1
- package/dist/web/assets/git-log-panel-DoYx7qpu.js.br +0 -0
- package/dist/web/assets/git-log-panel-DoYx7qpu.js.gz +0 -0
- package/dist/web/assets/git-repo-store-BCEPfUGT.js.br +0 -0
- package/dist/web/assets/git-repo-store-BCEPfUGT.js.gz +0 -0
- package/dist/web/assets/github-dark-67KKlMdB.js.br +0 -0
- package/dist/web/assets/github-dark-67KKlMdB.js.gz +0 -0
- package/dist/web/assets/github-dark-default-tja8pidR.js.br +0 -0
- package/dist/web/assets/github-dark-default-tja8pidR.js.gz +0 -0
- package/dist/web/assets/github-dark-dimmed-CtjhYQtx.js.br +0 -0
- package/dist/web/assets/github-dark-dimmed-CtjhYQtx.js.gz +0 -0
- package/dist/web/assets/github-dark-high-contrast-Bf-LPFgn.js.br +0 -0
- package/dist/web/assets/github-dark-high-contrast-Bf-LPFgn.js.gz +0 -0
- package/dist/web/assets/github-light-CbJxE7n3.js.br +0 -0
- package/dist/web/assets/github-light-CbJxE7n3.js.gz +0 -0
- package/dist/web/assets/github-light-default-DRQmdHxt.js.br +0 -0
- package/dist/web/assets/github-light-default-DRQmdHxt.js.gz +0 -0
- package/dist/web/assets/github-light-high-contrast-CJkDgTeM.js.br +0 -0
- package/dist/web/assets/github-light-high-contrast-CJkDgTeM.js.gz +0 -0
- package/dist/web/assets/gleam-D4LCl2ri.js.br +0 -0
- package/dist/web/assets/gleam-D4LCl2ri.js.gz +0 -0
- package/dist/web/assets/{glide-data-grid-iSo2vP0q.js → glide-data-grid-DzHd1zUz.js} +4 -4
- package/dist/web/assets/glide-data-grid-DzHd1zUz.js.br +0 -0
- package/dist/web/assets/glide-data-grid-DzHd1zUz.js.gz +0 -0
- package/dist/web/assets/glide-data-grid-nthEL3fk.css.br +0 -0
- package/dist/web/assets/glide-data-grid-nthEL3fk.css.gz +0 -0
- package/dist/web/assets/glimmer-js-BmNNiR0Z.js.br +0 -0
- package/dist/web/assets/glimmer-js-BmNNiR0Z.js.gz +0 -0
- package/dist/web/assets/glimmer-ts-DQE2Ufha.js.br +0 -0
- package/dist/web/assets/glimmer-ts-DQE2Ufha.js.gz +0 -0
- package/dist/web/assets/glsl-BcIDsxRJ.js.br +0 -0
- package/dist/web/assets/glsl-BcIDsxRJ.js.gz +0 -0
- package/dist/web/assets/gn-COY8zZmC.js.br +0 -0
- package/dist/web/assets/gn-COY8zZmC.js.gz +0 -0
- package/dist/web/assets/gnuplot-ROk1VitR.js.br +0 -0
- package/dist/web/assets/gnuplot-ROk1VitR.js.gz +0 -0
- package/dist/web/assets/go-H30c3p0C.js.br +0 -0
- package/dist/web/assets/go-H30c3p0C.js.gz +0 -0
- package/dist/web/assets/graphql-DGKSLmGH.js.br +0 -0
- package/dist/web/assets/graphql-DGKSLmGH.js.gz +0 -0
- package/dist/web/assets/groovy-DBLCaelV.js.br +0 -0
- package/dist/web/assets/groovy-DBLCaelV.js.gz +0 -0
- package/dist/web/assets/group-chat-tab-DPbPLDNH.js +1 -0
- package/dist/web/assets/group-chat-tab-DPbPLDNH.js.br +0 -0
- package/dist/web/assets/group-chat-tab-DPbPLDNH.js.gz +0 -0
- package/dist/web/assets/gruvbox-dark-hard-DJy4irps.js.br +0 -0
- package/dist/web/assets/gruvbox-dark-hard-DJy4irps.js.gz +0 -0
- package/dist/web/assets/gruvbox-dark-medium-Dhfw1QTO.js.br +0 -0
- package/dist/web/assets/gruvbox-dark-medium-Dhfw1QTO.js.gz +0 -0
- package/dist/web/assets/gruvbox-dark-soft-BncJU-8w.js.br +0 -0
- package/dist/web/assets/gruvbox-dark-soft-BncJU-8w.js.gz +0 -0
- package/dist/web/assets/gruvbox-light-hard-Cq12_YvM.js.br +0 -0
- package/dist/web/assets/gruvbox-light-hard-Cq12_YvM.js.gz +0 -0
- package/dist/web/assets/gruvbox-light-medium-DqVja5_v.js.br +0 -0
- package/dist/web/assets/gruvbox-light-medium-DqVja5_v.js.gz +0 -0
- package/dist/web/assets/gruvbox-light-soft-IvwhveGF.js.br +0 -0
- package/dist/web/assets/gruvbox-light-soft-IvwhveGF.js.gz +0 -0
- package/dist/web/assets/hack-YiC8bEIb.js.br +0 -0
- package/dist/web/assets/hack-YiC8bEIb.js.gz +0 -0
- package/dist/web/assets/haml-DjblxAsz.js.br +0 -0
- package/dist/web/assets/haml-DjblxAsz.js.gz +0 -0
- package/dist/web/assets/handlebars-BQepOXaU.js.br +0 -0
- package/dist/web/assets/handlebars-BQepOXaU.js.gz +0 -0
- package/dist/web/assets/haskell-DA1JV-MC.js.br +0 -0
- package/dist/web/assets/haskell-DA1JV-MC.js.gz +0 -0
- package/dist/web/assets/haxe-V9RTRc5E.js.br +0 -0
- package/dist/web/assets/haxe-V9RTRc5E.js.gz +0 -0
- package/dist/web/assets/hcl-hr1lyZ10.js.br +0 -0
- package/dist/web/assets/hcl-hr1lyZ10.js.gz +0 -0
- package/dist/web/assets/hjson-D3vW3i7X.js.br +0 -0
- package/dist/web/assets/hjson-D3vW3i7X.js.gz +0 -0
- package/dist/web/assets/hlsl-BB85gfJT.js.br +0 -0
- package/dist/web/assets/hlsl-BB85gfJT.js.gz +0 -0
- package/dist/web/assets/horizon-DU8OOnj8.js.br +0 -0
- package/dist/web/assets/horizon-DU8OOnj8.js.gz +0 -0
- package/dist/web/assets/horizon-bright-DNMUclW6.js.br +0 -0
- package/dist/web/assets/horizon-bright-DNMUclW6.js.gz +0 -0
- package/dist/web/assets/houston-DAiZKf6T.js.br +0 -0
- package/dist/web/assets/houston-DAiZKf6T.js.gz +0 -0
- package/dist/web/assets/html-Cayj_2GP.js.br +0 -0
- package/dist/web/assets/html-Cayj_2GP.js.gz +0 -0
- package/dist/web/assets/http-BeLfdGdz.js.br +0 -0
- package/dist/web/assets/http-BeLfdGdz.js.gz +0 -0
- package/dist/web/assets/hurl-D9rypCLK.js.br +0 -0
- package/dist/web/assets/hurl-D9rypCLK.js.gz +0 -0
- package/dist/web/assets/hxml-clG8mmSH.js.br +0 -0
- package/dist/web/assets/hxml-clG8mmSH.js.gz +0 -0
- package/dist/web/assets/hy-C6Zv0LMe.js.br +0 -0
- package/dist/web/assets/hy-C6Zv0LMe.js.gz +0 -0
- package/dist/web/assets/icons-DQjqk0lJ.js.br +0 -0
- package/dist/web/assets/icons-DQjqk0lJ.js.gz +0 -0
- package/dist/web/assets/imba-Didnp6Y-.js.br +0 -0
- package/dist/web/assets/imba-Didnp6Y-.js.gz +0 -0
- package/dist/web/assets/index-CWL5emyr.css +1 -0
- package/dist/web/assets/index-CWL5emyr.css.br +0 -0
- package/dist/web/assets/index-CWL5emyr.css.gz +0 -0
- package/dist/web/assets/index-Dh3WkQrC.js +52 -0
- package/dist/web/assets/index-Dh3WkQrC.js.br +0 -0
- package/dist/web/assets/index-Dh3WkQrC.js.gz +0 -0
- package/dist/web/assets/ini-m0T7q4gQ.js.br +5 -0
- package/dist/web/assets/ini-m0T7q4gQ.js.gz +0 -0
- package/dist/web/assets/java-Buy07jGn.js.br +0 -0
- package/dist/web/assets/java-Buy07jGn.js.gz +0 -0
- package/dist/web/assets/javascript-Cjq3CbRL.js.br +0 -0
- package/dist/web/assets/javascript-Cjq3CbRL.js.gz +0 -0
- package/dist/web/assets/jinja-BShBWfs5.js.br +0 -0
- package/dist/web/assets/jinja-BShBWfs5.js.gz +0 -0
- package/dist/web/assets/{jira-watcher-section-kyifZPTv.js → jira-watcher-section-DhcwaPyZ.js} +1 -1
- package/dist/web/assets/jira-watcher-section-DhcwaPyZ.js.br +0 -0
- package/dist/web/assets/jira-watcher-section-DhcwaPyZ.js.gz +0 -0
- package/dist/web/assets/jison-dN2Nf_Dr.js.br +0 -0
- package/dist/web/assets/jison-dN2Nf_Dr.js.gz +0 -0
- package/dist/web/assets/json-BSVu8IqD.js.br +0 -0
- package/dist/web/assets/json-BSVu8IqD.js.gz +0 -0
- package/dist/web/assets/json5-NN_Vb7e6.js.br +0 -0
- package/dist/web/assets/json5-NN_Vb7e6.js.gz +0 -0
- package/dist/web/assets/jsonc-BdyZhBUw.js.br +0 -0
- package/dist/web/assets/jsonc-BdyZhBUw.js.gz +0 -0
- package/dist/web/assets/jsonl-BsDSNvwi.js.br +0 -0
- package/dist/web/assets/jsonl-BsDSNvwi.js.gz +0 -0
- package/dist/web/assets/jsonnet-Gm963F-U.js.br +0 -0
- package/dist/web/assets/jsonnet-Gm963F-U.js.gz +0 -0
- package/dist/web/assets/jssm-Ds3bKWgJ.js.br +0 -0
- package/dist/web/assets/jssm-Ds3bKWgJ.js.gz +0 -0
- package/dist/web/assets/jsx-BT5mW58X.js.br +0 -0
- package/dist/web/assets/jsx-BT5mW58X.js.gz +0 -0
- package/dist/web/assets/julia-5U0vR-uJ.js.br +0 -0
- package/dist/web/assets/julia-5U0vR-uJ.js.gz +0 -0
- package/dist/web/assets/just-BMppVRy6.js.br +0 -0
- package/dist/web/assets/just-BMppVRy6.js.gz +0 -0
- package/dist/web/assets/kanagawa-dragon-BvNvf7xd.js.br +0 -0
- package/dist/web/assets/kanagawa-dragon-BvNvf7xd.js.gz +0 -0
- package/dist/web/assets/kanagawa-lotus-CuSiliSn.js.br +0 -0
- package/dist/web/assets/kanagawa-lotus-CuSiliSn.js.gz +0 -0
- package/dist/web/assets/kanagawa-wave-C6g-d6jT.js.br +0 -0
- package/dist/web/assets/kanagawa-wave-C6g-d6jT.js.gz +0 -0
- package/dist/web/assets/kdl-Bx4kZef-.js.br +0 -0
- package/dist/web/assets/kdl-Bx4kZef-.js.gz +0 -0
- package/dist/web/assets/keybindings-store-BTDoQ-9J.js +1 -0
- package/dist/web/assets/{keyboard-shortcuts-section-D2uJq4x9.js → keyboard-shortcuts-section-DQitR9HX.js} +1 -1
- package/dist/web/assets/keyboard-shortcuts-section-DQitR9HX.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-DQitR9HX.js.gz +0 -0
- package/dist/web/assets/kotlin-qvaVvCcm.js.br +0 -0
- package/dist/web/assets/kotlin-qvaVvCcm.js.gz +0 -0
- package/dist/web/assets/kusto-BPLyNCN6.js.br +0 -0
- package/dist/web/assets/kusto-BPLyNCN6.js.gz +0 -0
- package/dist/web/assets/laserwave-Sf8ZEhWP.js.br +0 -0
- package/dist/web/assets/laserwave-Sf8ZEhWP.js.gz +0 -0
- package/dist/web/assets/latex-DSSOKjis.js.br +0 -0
- package/dist/web/assets/latex-DSSOKjis.js.gz +0 -0
- package/dist/web/assets/lean-DGe6uqgk.js.br +0 -0
- package/dist/web/assets/lean-DGe6uqgk.js.gz +0 -0
- package/dist/web/assets/less-CqM85x-9.js.br +0 -0
- package/dist/web/assets/less-CqM85x-9.js.gz +0 -0
- package/dist/web/assets/lib-DBeVwCnC.js.br +0 -0
- package/dist/web/assets/lib-DBeVwCnC.js.gz +0 -0
- package/dist/web/assets/libesm-CPh1Av0r.js.br +0 -0
- package/dist/web/assets/libesm-CPh1Av0r.js.gz +0 -0
- package/dist/web/assets/light-plus-DBtKwhFA.js.br +0 -0
- package/dist/web/assets/light-plus-DBtKwhFA.js.gz +0 -0
- package/dist/web/assets/liquid-C24dKoyI.js.br +0 -0
- package/dist/web/assets/liquid-C24dKoyI.js.gz +0 -0
- package/dist/web/assets/llvm-Dpbq3gky.js.br +0 -0
- package/dist/web/assets/llvm-Dpbq3gky.js.gz +0 -0
- package/dist/web/assets/log-qKMcPm9S.js.br +0 -0
- package/dist/web/assets/log-qKMcPm9S.js.gz +0 -0
- package/dist/web/assets/logo-DFo7i5KH.js.br +0 -0
- package/dist/web/assets/logo-DFo7i5KH.js.gz +0 -0
- package/dist/web/assets/lua-DNOsnyhn.js.br +0 -0
- package/dist/web/assets/lua-DNOsnyhn.js.gz +0 -0
- package/dist/web/assets/luau-DGlqWFyL.js.br +0 -0
- package/dist/web/assets/luau-DGlqWFyL.js.gz +0 -0
- package/dist/web/assets/make-CixdvUQe.js.br +0 -0
- package/dist/web/assets/make-CixdvUQe.js.gz +0 -0
- package/dist/web/assets/markdown-CmRnbngE.js.br +0 -0
- package/dist/web/assets/markdown-CmRnbngE.js.gz +0 -0
- package/dist/web/assets/{markdown-renderer-CLUux0vA.js → markdown-renderer-2son_wrq.js} +1 -1
- package/dist/web/assets/markdown-renderer-CpWOpNyX.js +3 -0
- package/dist/web/assets/markdown-renderer-CpWOpNyX.js.br +0 -0
- package/dist/web/assets/markdown-renderer-CpWOpNyX.js.gz +0 -0
- package/dist/web/assets/marko-26MHO_Q9.js.br +0 -0
- package/dist/web/assets/marko-26MHO_Q9.js.gz +0 -0
- package/dist/web/assets/material-theme-WDUbafB-.js.br +0 -0
- package/dist/web/assets/material-theme-WDUbafB-.js.gz +0 -0
- package/dist/web/assets/material-theme-darker-u8y2xpOk.js.br +0 -0
- package/dist/web/assets/material-theme-darker-u8y2xpOk.js.gz +0 -0
- package/dist/web/assets/material-theme-lighter-cyQZK3Tg.js.br +0 -0
- package/dist/web/assets/material-theme-lighter-cyQZK3Tg.js.gz +0 -0
- package/dist/web/assets/material-theme-ocean-LBAVvw7k.js.br +0 -0
- package/dist/web/assets/material-theme-ocean-LBAVvw7k.js.gz +0 -0
- package/dist/web/assets/material-theme-palenight-BJqhBxL0.js.br +0 -0
- package/dist/web/assets/material-theme-palenight-BJqhBxL0.js.gz +0 -0
- package/dist/web/assets/matlab-B38sOJee.js.br +0 -0
- package/dist/web/assets/matlab-B38sOJee.js.gz +0 -0
- package/dist/web/assets/mdc-Dhw9mGrC.js.br +0 -0
- package/dist/web/assets/mdc-Dhw9mGrC.js.gz +0 -0
- package/dist/web/assets/mdx-C8QrE_IW.js.br +0 -0
- package/dist/web/assets/mdx-C8QrE_IW.js.gz +0 -0
- package/dist/web/assets/mermaid-BQ-eeU8A.js.br +0 -0
- package/dist/web/assets/mermaid-BQ-eeU8A.js.gz +0 -0
- package/dist/web/assets/min-dark-D4gNa5tv.js.br +0 -0
- package/dist/web/assets/min-dark-D4gNa5tv.js.gz +0 -0
- package/dist/web/assets/min-light-Dfbhn_PL.js.br +0 -0
- package/dist/web/assets/min-light-Dfbhn_PL.js.gz +0 -0
- package/dist/web/assets/mipsasm-bLOhJkdm.js.br +0 -0
- package/dist/web/assets/mipsasm-bLOhJkdm.js.gz +0 -0
- package/dist/web/assets/mobile-bottom-sheet-C3TniEP-.js.br +0 -0
- package/dist/web/assets/mobile-bottom-sheet-C3TniEP-.js.gz +0 -0
- package/dist/web/assets/{mobile-explorer-sheet-BHQDzpwK.js → mobile-explorer-sheet-CPUuOwTi.js} +1 -1
- package/dist/web/assets/mobile-explorer-sheet-CPUuOwTi.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-CPUuOwTi.js.gz +0 -0
- package/dist/web/assets/mojo-B0BCOMQW.js.br +0 -0
- package/dist/web/assets/mojo-B0BCOMQW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/_commonjsHelpers-CT9FvmAN.js +1 -0
- package/dist/web/assets/monaco/vs/abap-D-t0cyap.js +1 -0
- package/dist/web/assets/monaco/vs/abap-D-t0cyap.js.br +0 -0
- package/dist/web/assets/monaco/vs/abap-D-t0cyap.js.gz +0 -0
- package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js +1 -0
- package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js.br +0 -0
- package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js +93 -0
- package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js +26 -0
- package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js +470 -0
- package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js +58 -0
- package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js.gz +0 -0
- package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js +67731 -0
- package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js.br +0 -0
- package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js.gz +0 -0
- package/dist/web/assets/monaco/vs/azcli-BA0tQDCg.js +1 -0
- package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js.br +0 -0
- package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js.gz +0 -0
- package/dist/web/assets/monaco/vs/bat-C397hTD6.js +1 -0
- package/dist/web/assets/monaco/vs/bat-C397hTD6.js.br +0 -0
- package/dist/web/assets/monaco/vs/bat-C397hTD6.js.gz +0 -0
- package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js +2 -0
- package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js.br +0 -0
- package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js +1 -0
- package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js.br +0 -0
- package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js.gz +0 -0
- package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js +1 -0
- package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js.br +0 -0
- package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js.gz +0 -0
- package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js +1 -0
- package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js.br +0 -0
- package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js +1 -0
- package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js.br +0 -0
- package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js.gz +0 -0
- package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js +1 -0
- package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js.br +0 -0
- package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js.gz +0 -0
- package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js +1 -0
- package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js.br +0 -0
- package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/css-CaeNmE3S.js +3 -0
- package/dist/web/assets/monaco/vs/css-CaeNmE3S.js.br +0 -0
- package/dist/web/assets/monaco/vs/css-CaeNmE3S.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js +1 -0
- package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js.br +0 -0
- package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js.gz +0 -0
- package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js +1 -0
- package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js.br +0 -0
- package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js.gz +0 -0
- package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js +1 -0
- package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js.br +0 -0
- package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js.gz +0 -0
- package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js +1 -0
- package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js.br +0 -0
- package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js.gz +0 -0
- package/dist/web/assets/monaco/vs/ecl-30fUercY.js +1 -0
- package/dist/web/assets/monaco/vs/ecl-30fUercY.js.br +0 -0
- package/dist/web/assets/monaco/vs/ecl-30fUercY.js.gz +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.css +1 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.css.br +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.css.gz +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.js +5 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.js.br +0 -0
- package/dist/web/assets/monaco/vs/editor/editor.main.js.gz +0 -0
- package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js +903 -0
- package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js.br +0 -0
- package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js.gz +0 -0
- package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js +1 -0
- package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js.br +0 -0
- package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js.gz +0 -0
- package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js +1 -0
- package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js.br +0 -0
- package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js.gz +0 -0
- package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js +3 -0
- package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js.br +0 -0
- package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js.gz +0 -0
- package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js +1 -0
- package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js.br +0 -0
- package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js.gz +0 -0
- package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js +1 -0
- package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js.br +0 -0
- package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js.gz +0 -0
- package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js +1 -0
- package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js.br +0 -0
- package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js.gz +0 -0
- package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js +1 -0
- package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js.br +0 -0
- package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js.gz +0 -0
- package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js +1 -0
- package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js.br +0 -0
- package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js +1 -0
- package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js.br +0 -0
- package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js.gz +0 -0
- package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js +1 -0
- package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js.br +0 -0
- package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js.gz +0 -0
- package/dist/web/assets/monaco/vs/ini-CsNwO04R.js +1 -0
- package/dist/web/assets/monaco/vs/ini-CsNwO04R.js.br +0 -0
- package/dist/web/assets/monaco/vs/ini-CsNwO04R.js.gz +0 -0
- package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js +1 -0
- package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js.br +0 -0
- package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js.gz +0 -0
- package/dist/web/assets/monaco/vs/javascript-PczUCGdz.js +1 -0
- package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js +7 -0
- package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js.br +0 -0
- package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js.gz +0 -0
- package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js +1 -0
- package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js.br +0 -0
- package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js.gz +0 -0
- package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js +1 -0
- package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js.br +0 -0
- package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js.gz +0 -0
- package/dist/web/assets/monaco/vs/language/css/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/language/html/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/language/json/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/language/typescript/monaco.contribution.js +1 -0
- package/dist/web/assets/monaco/vs/less-C0eDYdqa.js +2 -0
- package/dist/web/assets/monaco/vs/less-C0eDYdqa.js.br +0 -0
- package/dist/web/assets/monaco/vs/less-C0eDYdqa.js.gz +0 -0
- package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js +1 -0
- package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js.br +0 -0
- package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js.gz +0 -0
- package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js +1 -0
- package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js.br +0 -0
- package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js.gz +0 -0
- package/dist/web/assets/monaco/vs/loader.js +1368 -0
- package/dist/web/assets/monaco/vs/loader.js.br +0 -0
- package/dist/web/assets/monaco/vs/loader.js.gz +0 -0
- package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js +4 -0
- package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js.br +0 -0
- package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js.gz +0 -0
- package/dist/web/assets/monaco/vs/lua-DtygF91M.js +1 -0
- package/dist/web/assets/monaco/vs/lua-DtygF91M.js.br +0 -0
- package/dist/web/assets/monaco/vs/lua-DtygF91M.js.gz +0 -0
- package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js +1 -0
- package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js.br +0 -0
- package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js.gz +0 -0
- package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js +1 -0
- package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js.br +0 -0
- package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js.gz +0 -0
- package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js +1 -0
- package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js.br +0 -0
- package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js.gz +0 -0
- package/dist/web/assets/monaco/vs/mips-CiYP61RB.js +1 -0
- package/dist/web/assets/monaco/vs/mips-CiYP61RB.js.br +0 -0
- package/dist/web/assets/monaco/vs/mips-CiYP61RB.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js.gz +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js +1 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js.br +0 -0
- package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js.gz +0 -0
- package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js +1 -0
- package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js.br +0 -0
- package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js.gz +0 -0
- package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js +1 -0
- package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js.br +0 -0
- package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js.gz +0 -0
- package/dist/web/assets/monaco/vs/nls.messages-loader.js +1 -0
- package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js +1 -0
- package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js.br +0 -0
- package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js +1 -0
- package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js.br +0 -0
- package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
- package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js.br +0 -0
- package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js.gz +0 -0
- package/dist/web/assets/monaco/vs/perl-DABw_TcH.js +1 -0
- package/dist/web/assets/monaco/vs/perl-DABw_TcH.js.br +0 -0
- package/dist/web/assets/monaco/vs/perl-DABw_TcH.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js +1 -0
- package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js.br +0 -0
- package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js.gz +0 -0
- package/dist/web/assets/monaco/vs/php-D_kh-9LK.js +1 -0
- package/dist/web/assets/monaco/vs/php-D_kh-9LK.js.br +0 -0
- package/dist/web/assets/monaco/vs/php-D_kh-9LK.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pla-VfZjczW0.js +1 -0
- package/dist/web/assets/monaco/vs/pla-VfZjczW0.js.br +0 -0
- package/dist/web/assets/monaco/vs/pla-VfZjczW0.js.gz +0 -0
- package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js +1 -0
- package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js.br +0 -0
- package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js.gz +0 -0
- package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
- package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js.br +0 -0
- package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js.gz +0 -0
- package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js +1 -0
- package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js.br +0 -0
- package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js.gz +0 -0
- package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js +2 -0
- package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js.br +0 -0
- package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js.gz +0 -0
- package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js +1 -0
- package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js.br +0 -0
- package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js.gz +0 -0
- package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js +1 -0
- package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js.br +0 -0
- package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js.gz +0 -0
- package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js +1 -0
- package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js.br +0 -0
- package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js.gz +0 -0
- package/dist/web/assets/monaco/vs/r-f8dDdrp4.js +1 -0
- package/dist/web/assets/monaco/vs/r-f8dDdrp4.js.br +0 -0
- package/dist/web/assets/monaco/vs/r-f8dDdrp4.js.gz +0 -0
- package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js +1 -0
- package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js.br +0 -0
- package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js.gz +0 -0
- package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js +1 -0
- package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js.br +0 -0
- package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js.gz +0 -0
- package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js +1 -0
- package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js.br +0 -0
- package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js.gz +0 -0
- package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
- package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js.br +0 -0
- package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js.gz +0 -0
- package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js +1 -0
- package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js.br +0 -0
- package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js.gz +0 -0
- package/dist/web/assets/monaco/vs/rust-Bfetafyc.js +1 -0
- package/dist/web/assets/monaco/vs/rust-Bfetafyc.js.br +0 -0
- package/dist/web/assets/monaco/vs/rust-Bfetafyc.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sb-3GYllVck.js +1 -0
- package/dist/web/assets/monaco/vs/sb-3GYllVck.js.br +0 -0
- package/dist/web/assets/monaco/vs/sb-3GYllVck.js.gz +0 -0
- package/dist/web/assets/monaco/vs/scala-foMgrKo1.js +1 -0
- package/dist/web/assets/monaco/vs/scala-foMgrKo1.js.br +0 -0
- package/dist/web/assets/monaco/vs/scala-foMgrKo1.js.gz +0 -0
- package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js +1 -0
- package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js.br +0 -0
- package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js.gz +0 -0
- package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js +3 -0
- package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js.br +0 -0
- package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js.gz +0 -0
- package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js +1 -0
- package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js.br +0 -0
- package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js.gz +0 -0
- package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js +1 -0
- package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js.br +0 -0
- package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js +1 -0
- package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js.br +0 -0
- package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js +1 -0
- package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js.br +0 -0
- package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js.gz +0 -0
- package/dist/web/assets/monaco/vs/sql-32GpJSV2.js +1 -0
- package/dist/web/assets/monaco/vs/sql-32GpJSV2.js.br +0 -0
- package/dist/web/assets/monaco/vs/sql-32GpJSV2.js.gz +0 -0
- package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js +1 -0
- package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js.br +0 -0
- package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js.gz +0 -0
- package/dist/web/assets/monaco/vs/swift-n-2HociN.js +3 -0
- package/dist/web/assets/monaco/vs/swift-n-2HociN.js.br +0 -0
- package/dist/web/assets/monaco/vs/swift-n-2HociN.js.gz +0 -0
- package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
- package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js.br +0 -0
- package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js.gz +0 -0
- package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js +1 -0
- package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js.br +0 -0
- package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js.gz +0 -0
- package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js +11 -0
- package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js.br +0 -0
- package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js.gz +0 -0
- package/dist/web/assets/monaco/vs/twig-C6taOxMV.js +1 -0
- package/dist/web/assets/monaco/vs/twig-C6taOxMV.js.br +0 -0
- package/dist/web/assets/monaco/vs/twig-C6taOxMV.js.gz +0 -0
- package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js +1 -0
- package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js.br +0 -0
- package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js.gz +0 -0
- package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js +1 -0
- package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js.br +0 -0
- package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js.gz +0 -0
- package/dist/web/assets/monaco/vs/vb-Dyb2648j.js +1 -0
- package/dist/web/assets/monaco/vs/vb-Dyb2648j.js.br +0 -0
- package/dist/web/assets/monaco/vs/vb-Dyb2648j.js.gz +0 -0
- package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js +298 -0
- package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js.br +0 -0
- package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js.gz +0 -0
- package/dist/web/assets/monaco/vs/workers-DcJshg-q.js +1 -0
- package/dist/web/assets/monaco/vs/workers-DcJshg-q.js.br +0 -0
- package/dist/web/assets/monaco/vs/workers-DcJshg-q.js.gz +0 -0
- package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js +1 -0
- package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js.br +0 -0
- package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js.gz +0 -0
- package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js +1 -0
- package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js.br +0 -0
- package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js.gz +0 -0
- package/dist/web/assets/monokai-Bdw_07OM.js.br +0 -0
- package/dist/web/assets/monokai-Bdw_07OM.js.gz +0 -0
- package/dist/web/assets/moonbit-BFdGaeuk.js.br +0 -0
- package/dist/web/assets/moonbit-BFdGaeuk.js.gz +0 -0
- package/dist/web/assets/move-CyXQFGPM.js.br +0 -0
- package/dist/web/assets/move-CyXQFGPM.js.gz +0 -0
- package/dist/web/assets/narrat-9DvTD3_3.js.br +0 -0
- package/dist/web/assets/narrat-9DvTD3_3.js.gz +0 -0
- package/dist/web/assets/nextflow-groovy-C4VY3kNY.js.br +0 -0
- package/dist/web/assets/nextflow-groovy-C4VY3kNY.js.gz +0 -0
- package/dist/web/assets/nextflow-xH4oJTex.js.br +0 -0
- package/dist/web/assets/nextflow-xH4oJTex.js.gz +0 -0
- package/dist/web/assets/nginx-CMz4w0M8.js.br +0 -0
- package/dist/web/assets/nginx-CMz4w0M8.js.gz +0 -0
- package/dist/web/assets/night-owl-feYm66V0.js.br +0 -0
- package/dist/web/assets/night-owl-feYm66V0.js.gz +0 -0
- package/dist/web/assets/night-owl-light-DALqFjvx.js.br +0 -0
- package/dist/web/assets/night-owl-light-DALqFjvx.js.gz +0 -0
- package/dist/web/assets/nim-D8FnIYsx.js.br +0 -0
- package/dist/web/assets/nim-D8FnIYsx.js.gz +0 -0
- package/dist/web/assets/nix-C1kPA9Sw.js.br +0 -0
- package/dist/web/assets/nix-C1kPA9Sw.js.gz +0 -0
- package/dist/web/assets/nord-1dvrj1Al.js.br +0 -0
- package/dist/web/assets/nord-1dvrj1Al.js.gz +0 -0
- package/dist/web/assets/notification-store-CLD8V5pA.js +1 -0
- package/dist/web/assets/{notifications-settings-section-DqlPDfNX.js → notifications-settings-section-4gjKK-DH.js} +1 -1
- package/dist/web/assets/notifications-settings-section-4gjKK-DH.js.br +5 -0
- package/dist/web/assets/notifications-settings-section-4gjKK-DH.js.gz +0 -0
- package/dist/web/assets/number-overlay-editor-CRGwULhR.js.br +0 -0
- package/dist/web/assets/number-overlay-editor-CRGwULhR.js.gz +0 -0
- package/dist/web/assets/nushell-DSQ_9Uqj.js.br +0 -0
- package/dist/web/assets/nushell-DSQ_9Uqj.js.gz +0 -0
- package/dist/web/assets/objective-c-Dhcn5ZK8.js.br +0 -0
- package/dist/web/assets/objective-c-Dhcn5ZK8.js.gz +0 -0
- package/dist/web/assets/objective-cpp-CGVYCSrp.js.br +0 -0
- package/dist/web/assets/objective-cpp-CGVYCSrp.js.gz +0 -0
- package/dist/web/assets/ocaml-rxXW21An.js.br +0 -0
- package/dist/web/assets/ocaml-rxXW21An.js.gz +0 -0
- package/dist/web/assets/odin-ClSJX2DE.js.br +0 -0
- package/dist/web/assets/odin-ClSJX2DE.js.gz +0 -0
- package/dist/web/assets/onboarding-entry-kqfwlUXT.js +1 -0
- package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js +1 -0
- package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js.br +0 -0
- package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js.gz +0 -0
- package/dist/web/assets/one-dark-pro-3gbWDfFW.js.br +0 -0
- package/dist/web/assets/one-dark-pro-3gbWDfFW.js.gz +0 -0
- package/dist/web/assets/one-light-C2q5ZZAw.js.br +0 -0
- package/dist/web/assets/one-light-C2q5ZZAw.js.gz +0 -0
- package/dist/web/assets/openscad-eHXeafBl.js.br +0 -0
- package/dist/web/assets/openscad-eHXeafBl.js.gz +0 -0
- package/dist/web/assets/{overview-panel-Di-3aV9p.js → overview-panel-CF7BuqLZ.js} +1 -1
- package/dist/web/assets/overview-panel-CF7BuqLZ.js.br +0 -0
- package/dist/web/assets/overview-panel-CF7BuqLZ.js.gz +0 -0
- package/dist/web/assets/panel-store-D20Zuf3i.js.br +0 -0
- package/dist/web/assets/panel-store-D20Zuf3i.js.gz +0 -0
- package/dist/web/assets/pascal-kKha3Txs.js.br +0 -0
- package/dist/web/assets/pascal-kKha3Txs.js.gz +0 -0
- package/dist/web/assets/pdf-preview-OvVOptPh.js.br +0 -0
- package/dist/web/assets/pdf-preview-OvVOptPh.js.gz +0 -0
- package/dist/web/assets/perl-D9iNWYwb.js.br +0 -0
- package/dist/web/assets/perl-D9iNWYwb.js.gz +0 -0
- package/dist/web/assets/php-Bw3Qo0Zv.js.br +0 -0
- package/dist/web/assets/php-Bw3Qo0Zv.js.gz +0 -0
- package/dist/web/assets/pkl-CTiPytg-.js.br +0 -0
- package/dist/web/assets/pkl-CTiPytg-.js.gz +0 -0
- package/dist/web/assets/plastic-D1Ygezi4.js.br +0 -0
- package/dist/web/assets/plastic-D1Ygezi4.js.gz +0 -0
- package/dist/web/assets/plsql-D_gbgZIr.js.br +0 -0
- package/dist/web/assets/plsql-D_gbgZIr.js.gz +0 -0
- package/dist/web/assets/po-BkhbDUnq.js.br +0 -0
- package/dist/web/assets/po-BkhbDUnq.js.gz +0 -0
- package/dist/web/assets/poimandres-Do6NywrA.js.br +0 -0
- package/dist/web/assets/poimandres-Do6NywrA.js.gz +0 -0
- package/dist/web/assets/polar-B3B23wca.js.br +0 -0
- package/dist/web/assets/polar-B3B23wca.js.gz +0 -0
- package/dist/web/assets/postcss-Dv_YBvWd.js.br +0 -0
- package/dist/web/assets/postcss-Dv_YBvWd.js.gz +0 -0
- package/dist/web/assets/{postgres-viewer-DPRsmgP5.js → postgres-viewer-DBwUXRLA.js} +1 -1
- package/dist/web/assets/postgres-viewer-DBwUXRLA.js.br +0 -0
- package/dist/web/assets/postgres-viewer-DBwUXRLA.js.gz +0 -0
- package/dist/web/assets/powerquery-fKJWI-Sh.js.br +0 -0
- package/dist/web/assets/powerquery-fKJWI-Sh.js.gz +0 -0
- package/dist/web/assets/powershell-B4Y7KIgx.js.br +0 -0
- package/dist/web/assets/powershell-B4Y7KIgx.js.gz +0 -0
- package/dist/web/assets/{ppmbot-settings-section-B5N1jHgm.js → ppmbot-settings-section-B8gDeE7h.js} +1 -1
- package/dist/web/assets/ppmbot-settings-section-B8gDeE7h.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-B8gDeE7h.js.gz +0 -0
- package/dist/web/assets/prisma-J--XdTXX.js.br +0 -0
- package/dist/web/assets/prisma-J--XdTXX.js.gz +0 -0
- package/dist/web/assets/problems-panel-CmkeR-bD.js +1 -0
- package/dist/web/assets/problems-panel-CmkeR-bD.js.br +0 -0
- package/dist/web/assets/problems-panel-CmkeR-bD.js.gz +0 -0
- package/dist/web/assets/{process-table-DahflyQn.js → process-table-DxrXd89K.js} +1 -1
- package/dist/web/assets/process-table-DxrXd89K.js.br +0 -0
- package/dist/web/assets/process-table-DxrXd89K.js.gz +0 -0
- package/dist/web/assets/project-store-hNvwfqX3.js.br +0 -0
- package/dist/web/assets/project-store-hNvwfqX3.js.gz +0 -0
- package/dist/web/assets/prolog-BBTg4Vb3.js.br +0 -0
- package/dist/web/assets/prolog-BBTg4Vb3.js.gz +0 -0
- package/dist/web/assets/proto-DWlum3T8.js.br +0 -0
- package/dist/web/assets/proto-DWlum3T8.js.gz +0 -0
- package/dist/web/assets/{proxy-settings-section-CLg_nlxn.js → proxy-settings-section-8pLlN7YT.js} +1 -1
- package/dist/web/assets/proxy-settings-section-8pLlN7YT.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-8pLlN7YT.js.gz +0 -0
- package/dist/web/assets/pug-fT5JC6Vm.js.br +0 -0
- package/dist/web/assets/pug-fT5JC6Vm.js.gz +0 -0
- package/dist/web/assets/puppet-ZiUfc9JV.js.br +0 -0
- package/dist/web/assets/puppet-ZiUfc9JV.js.gz +0 -0
- package/dist/web/assets/purescript-CmT8SCHB.js.br +0 -0
- package/dist/web/assets/purescript-CmT8SCHB.js.gz +0 -0
- package/dist/web/assets/python-BURpj-fq.js.br +0 -0
- package/dist/web/assets/python-BURpj-fq.js.gz +0 -0
- package/dist/web/assets/qml-P_wEDB1w.js.br +0 -0
- package/dist/web/assets/qml-P_wEDB1w.js.gz +0 -0
- package/dist/web/assets/qss-C-zdz0i5.js.br +0 -0
- package/dist/web/assets/qss-C-zdz0i5.js.gz +0 -0
- package/dist/web/assets/query-audit-section-OsYip7HO.js.br +0 -0
- package/dist/web/assets/query-audit-section-OsYip7HO.js.gz +0 -0
- package/dist/web/assets/r-K56BeS-s.js.br +0 -0
- package/dist/web/assets/r-K56BeS-s.js.gz +0 -0
- package/dist/web/assets/racket-gkn6Z_Jw.js.br +0 -0
- package/dist/web/assets/racket-gkn6Z_Jw.js.gz +0 -0
- package/dist/web/assets/raku-C0ZBuKlx.js.br +0 -0
- package/dist/web/assets/raku-C0ZBuKlx.js.gz +0 -0
- package/dist/web/assets/razor-Drrt2_Ph.js.br +0 -0
- package/dist/web/assets/razor-Drrt2_Ph.js.gz +0 -0
- package/dist/web/assets/red-BWZ6x-3p.js.br +0 -0
- package/dist/web/assets/red-BWZ6x-3p.js.gz +0 -0
- package/dist/web/assets/reg-Dt_EsyGR.js.br +0 -0
- package/dist/web/assets/reg-Dt_EsyGR.js.gz +0 -0
- package/dist/web/assets/regexp-CT6BLG2C.js.br +0 -0
- package/dist/web/assets/regexp-CT6BLG2C.js.gz +0 -0
- package/dist/web/assets/rel-MJ2LcyzJ.js.br +0 -0
- package/dist/web/assets/rel-MJ2LcyzJ.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-clipboard-notice-Fi6cieGM.js → remote-desktop-clipboard-notice-CKucNCju.js} +1 -1
- package/dist/web/assets/remote-desktop-clipboard-notice-CKucNCju.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-CKucNCju.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-sheet-lLZ-oK73.js → remote-desktop-mobile-sheet-CiGcUiO6.js} +2 -2
- package/dist/web/assets/remote-desktop-mobile-sheet-CiGcUiO6.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-CiGcUiO6.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-view-j3v-4rYa.js → remote-desktop-mobile-view-Czubv7hF.js} +1 -1
- package/dist/web/assets/remote-desktop-mobile-view-Czubv7hF.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-Czubv7hF.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-readiness-gate-CeLvcX_w.js → remote-desktop-readiness-gate-CnRhTEwk.js} +1 -1
- package/dist/web/assets/remote-desktop-readiness-gate-CnRhTEwk.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-CnRhTEwk.js.gz +0 -0
- package/dist/web/assets/remote-desktop-window-content-ZiRNL4Io.js +1 -0
- package/dist/web/assets/remote-desktop-window-content-ZiRNL4Io.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-ZiRNL4Io.js.gz +0 -0
- package/dist/web/assets/resolve-theme-B_ukrg_8.js.br +0 -0
- package/dist/web/assets/resolve-theme-B_ukrg_8.js.gz +0 -0
- package/dist/web/assets/riscv-BZYWzMAA.js.br +0 -0
- package/dist/web/assets/riscv-BZYWzMAA.js.gz +0 -0
- package/dist/web/assets/ron-CLbwHWMn.js.br +0 -0
- package/dist/web/assets/ron-CLbwHWMn.js.gz +0 -0
- package/dist/web/assets/rose-pine-BPiI_daR.js.br +0 -0
- package/dist/web/assets/rose-pine-BPiI_daR.js.gz +0 -0
- package/dist/web/assets/rose-pine-dawn-BjkJc7dW.js.br +0 -0
- package/dist/web/assets/rose-pine-dawn-BjkJc7dW.js.gz +0 -0
- package/dist/web/assets/rose-pine-moon-BQSxkt7g.js.br +0 -0
- package/dist/web/assets/rose-pine-moon-BQSxkt7g.js.gz +0 -0
- package/dist/web/assets/rosmsg-yt4151pJ.js.br +0 -0
- package/dist/web/assets/rosmsg-yt4151pJ.js.gz +0 -0
- package/dist/web/assets/rst-Dr2mW4-h.js.br +0 -0
- package/dist/web/assets/rst-Dr2mW4-h.js.gz +0 -0
- package/dist/web/assets/ruby-C6EpUsTY.js.br +0 -0
- package/dist/web/assets/ruby-C6EpUsTY.js.gz +0 -0
- package/dist/web/assets/rust-1dAcengL.js.br +0 -0
- package/dist/web/assets/rust-1dAcengL.js.gz +0 -0
- package/dist/web/assets/sas-D8ZEeP6v.js.br +0 -0
- package/dist/web/assets/sas-D8ZEeP6v.js.gz +0 -0
- package/dist/web/assets/sass-DUgtQJsg.js.br +0 -0
- package/dist/web/assets/sass-DUgtQJsg.js.gz +0 -0
- package/dist/web/assets/scala-CxoGYpS0.js.br +0 -0
- package/dist/web/assets/scala-CxoGYpS0.js.gz +0 -0
- package/dist/web/assets/{schedules-settings-section-C8OS0o80.js → schedules-settings-section-Dq5Kn6Q8.js} +1 -1
- package/dist/web/assets/schedules-settings-section-Dq5Kn6Q8.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-Dq5Kn6Q8.js.gz +0 -0
- package/dist/web/assets/scheme-B2K3u9e3.js.br +0 -0
- package/dist/web/assets/scheme-B2K3u9e3.js.gz +0 -0
- package/dist/web/assets/scroll-area-BzeiOd-B.js.br +0 -0
- package/dist/web/assets/scroll-area-BzeiOd-B.js.gz +0 -0
- package/dist/web/assets/scss-ITL7jQ1f.js.br +0 -0
- package/dist/web/assets/scss-ITL7jQ1f.js.gz +0 -0
- package/dist/web/assets/sdbl-C0Ygk0n6.js.br +0 -0
- package/dist/web/assets/sdbl-C0Ygk0n6.js.gz +0 -0
- package/dist/web/assets/send-to-chat-DuRTOS7_.js.br +0 -0
- package/dist/web/assets/send-to-chat-DuRTOS7_.js.gz +0 -0
- package/dist/web/assets/settings-body-CYBJZti2.js +2 -0
- package/dist/web/assets/settings-body-CYBJZti2.js.br +0 -0
- package/dist/web/assets/settings-body-CYBJZti2.js.gz +0 -0
- package/dist/web/assets/{settings-store-CsVSVgLp.js → settings-store-DhU2tx3Y.js} +2 -2
- package/dist/web/assets/settings-store-DhU2tx3Y.js.br +0 -0
- package/dist/web/assets/settings-store-DhU2tx3Y.js.gz +0 -0
- package/dist/web/assets/{settings-tab-ChOs94iB.js → settings-tab-50Q5rjMo.js} +1 -1
- package/dist/web/assets/{settings-window-content-BnKMmg2a.js → settings-window-content-C_AGP_Go.js} +1 -1
- package/dist/web/assets/shaderlab-mW-IIlhk.js.br +0 -0
- package/dist/web/assets/shaderlab-mW-IIlhk.js.gz +0 -0
- package/dist/web/assets/shellscript-C2CvhqMk.js.br +0 -0
- package/dist/web/assets/shellscript-C2CvhqMk.js.gz +0 -0
- package/dist/web/assets/slack-dark-DYdgzRGj.js.br +0 -0
- package/dist/web/assets/slack-dark-DYdgzRGj.js.gz +0 -0
- package/dist/web/assets/slack-ochin-X-WD0WCg.js.br +0 -0
- package/dist/web/assets/slack-ochin-X-WD0WCg.js.gz +0 -0
- package/dist/web/assets/smalltalk-Dp7g_zb9.js.br +0 -0
- package/dist/web/assets/smalltalk-Dp7g_zb9.js.gz +0 -0
- package/dist/web/assets/snazzy-light-DWHWr-a6.js.br +0 -0
- package/dist/web/assets/snazzy-light-DWHWr-a6.js.gz +0 -0
- package/dist/web/assets/solarized-dark-CxdLsjvb.js.br +0 -0
- package/dist/web/assets/solarized-dark-CxdLsjvb.js.gz +0 -0
- package/dist/web/assets/solarized-light-Cz9rAvG5.js.br +0 -0
- package/dist/web/assets/solarized-light-Cz9rAvG5.js.gz +0 -0
- package/dist/web/assets/solidity-D33gHHdn.js.br +0 -0
- package/dist/web/assets/solidity-D33gHHdn.js.gz +0 -0
- package/dist/web/assets/soy-SdY0Qjtr.js.br +0 -0
- package/dist/web/assets/soy-SdY0Qjtr.js.gz +0 -0
- package/dist/web/assets/sparql-ftqZo2i-.js.br +0 -0
- package/dist/web/assets/sparql-ftqZo2i-.js.gz +0 -0
- package/dist/web/assets/splunk-BFbOroYw.js.br +0 -0
- package/dist/web/assets/splunk-BFbOroYw.js.gz +0 -0
- package/dist/web/assets/sql-ChpxvmdY.js.br +0 -0
- package/dist/web/assets/sql-ChpxvmdY.js.gz +0 -0
- package/dist/web/assets/{sql-query-editor-BJZIIQsm.js → sql-query-editor-DmqbSfHi.js} +1 -1
- package/dist/web/assets/sql-query-editor-DmqbSfHi.js.br +0 -0
- package/dist/web/assets/sql-query-editor-DmqbSfHi.js.gz +0 -0
- package/dist/web/assets/{sqlite-viewer--cMeCZum.js → sqlite-viewer-CAX-LlOl.js} +1 -1
- package/dist/web/assets/sqlite-viewer-CAX-LlOl.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-CAX-LlOl.js.gz +0 -0
- package/dist/web/assets/ssh-config-CUuSQ6JG.js.br +0 -0
- package/dist/web/assets/ssh-config-CUuSQ6JG.js.gz +0 -0
- package/dist/web/assets/stata-Bj7Yjb4b.js.br +0 -0
- package/dist/web/assets/stata-Bj7Yjb4b.js.gz +0 -0
- package/dist/web/assets/stylus-DDihP0_W.js.br +0 -0
- package/dist/web/assets/stylus-DDihP0_W.js.gz +0 -0
- package/dist/web/assets/surrealql-CLhYGAfB.js.br +0 -0
- package/dist/web/assets/surrealql-CLhYGAfB.js.gz +0 -0
- package/dist/web/assets/svelte-DTAlRHhK.js.br +0 -0
- package/dist/web/assets/svelte-DTAlRHhK.js.gz +0 -0
- package/dist/web/assets/swift-XoalUn4x.js.br +0 -0
- package/dist/web/assets/swift-XoalUn4x.js.gz +0 -0
- package/dist/web/assets/synthwave-84-DjkG0Bff.js.br +0 -0
- package/dist/web/assets/synthwave-84-DjkG0Bff.js.gz +0 -0
- package/dist/web/assets/{system-monitor-body-CXiIrn0N.js → system-monitor-body-DcjbfTwC.js} +2 -2
- package/dist/web/assets/system-monitor-body-DcjbfTwC.js.br +0 -0
- package/dist/web/assets/system-monitor-body-DcjbfTwC.js.gz +0 -0
- package/dist/web/assets/{system-monitor-tab-BJKrTSl0.js → system-monitor-tab-B5ctYgFG.js} +1 -1
- package/dist/web/assets/{system-monitor-window-content-Dy9fZJE3.js → system-monitor-window-content-DsgNoxTw.js} +1 -1
- package/dist/web/assets/system-verilog-f_pLKMYd.js.br +0 -0
- package/dist/web/assets/system-verilog-f_pLKMYd.js.gz +0 -0
- package/dist/web/assets/systemd-DjDcLfxp.js.br +0 -0
- package/dist/web/assets/systemd-DjDcLfxp.js.gz +0 -0
- package/dist/web/assets/{tab-host-window-content-BezqrAwC.js → tab-host-window-content-0fmkEEGB.js} +1 -1
- package/dist/web/assets/tab-host-window-content-0fmkEEGB.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-0fmkEEGB.js.gz +0 -0
- package/dist/web/assets/talonscript-BpUzYcDl.js.br +0 -0
- package/dist/web/assets/talonscript-BpUzYcDl.js.gz +0 -0
- package/dist/web/assets/tasl-DP-cUbg8.js.br +0 -0
- package/dist/web/assets/tasl-DP-cUbg8.js.gz +0 -0
- package/dist/web/assets/tcl-BHoy-dfE.js.br +0 -0
- package/dist/web/assets/tcl-BHoy-dfE.js.gz +0 -0
- package/dist/web/assets/{team-member-sheet-CVM2QC3H.js → team-member-sheet-B-7tQLyM.js} +2 -2
- package/dist/web/assets/team-member-sheet-B-7tQLyM.js.br +0 -0
- package/dist/web/assets/team-member-sheet-B-7tQLyM.js.gz +0 -0
- package/dist/web/assets/{team-member-window-content-D4RYKplm.js → team-member-window-content-Bb3ssjGY.js} +1 -1
- package/dist/web/assets/team-member-window-content-Bb3ssjGY.js.br +0 -0
- package/dist/web/assets/team-member-window-content-Bb3ssjGY.js.gz +0 -0
- package/dist/web/assets/templ-BMfhACxb.js.br +0 -0
- package/dist/web/assets/templ-BMfhACxb.js.gz +0 -0
- package/dist/web/assets/terminal-tab-Dilre-Mk.js +3 -0
- package/dist/web/assets/terminal-tab-Dilre-Mk.js.br +0 -0
- package/dist/web/assets/terminal-tab-Dilre-Mk.js.gz +0 -0
- package/dist/web/assets/terraform-vCVxN25B.js.br +0 -0
- package/dist/web/assets/terraform-vCVxN25B.js.gz +0 -0
- package/dist/web/assets/tex-BcssM-QA.js.br +0 -0
- package/dist/web/assets/tex-BcssM-QA.js.gz +0 -0
- package/dist/web/assets/tokyo-night-D0u4xZba.js.br +0 -0
- package/dist/web/assets/tokyo-night-D0u4xZba.js.gz +0 -0
- package/dist/web/assets/toml-BS8D0__A.js.br +0 -0
- package/dist/web/assets/toml-BS8D0__A.js.gz +0 -0
- package/dist/web/assets/{tool-cards-D5jCQvqn.js → tool-cards-C-YxPo3q.js} +5 -5
- package/dist/web/assets/tool-cards-C-YxPo3q.js.br +0 -0
- package/dist/web/assets/tool-cards-C-YxPo3q.js.gz +0 -0
- package/dist/web/assets/ts-tags-CrR5IYI8.js.br +0 -0
- package/dist/web/assets/ts-tags-CrR5IYI8.js.gz +0 -0
- package/dist/web/assets/tsx-DF8YeRgG.js.br +0 -0
- package/dist/web/assets/tsx-DF8YeRgG.js.gz +0 -0
- package/dist/web/assets/turtle-Bhx1GlIy.js.br +0 -0
- package/dist/web/assets/turtle-Bhx1GlIy.js.gz +0 -0
- package/dist/web/assets/twig-DchfUmyI.js.br +0 -0
- package/dist/web/assets/twig-DchfUmyI.js.gz +0 -0
- package/dist/web/assets/typescript-CAVD2Wb6.js.br +0 -0
- package/dist/web/assets/typescript-CAVD2Wb6.js.gz +0 -0
- package/dist/web/assets/typespec-D7mchdY_.js.br +0 -0
- package/dist/web/assets/typespec-D7mchdY_.js.gz +0 -0
- package/dist/web/assets/typst-CeXzq6Yw.js.br +0 -0
- package/dist/web/assets/typst-CeXzq6Yw.js.gz +0 -0
- package/dist/web/assets/{use-inline-blame-BF8Y1KfV.js → use-inline-blame-Co4lggO_.js} +3 -3
- package/dist/web/assets/use-inline-blame-Co4lggO_.js.br +0 -0
- package/dist/web/assets/use-inline-blame-Co4lggO_.js.gz +0 -0
- package/dist/web/assets/{use-lsp-Bx4oVtlk.js → use-lsp-D_2UVnaV.js} +1 -1
- package/dist/web/assets/use-lsp-D_2UVnaV.js.br +0 -0
- package/dist/web/assets/use-lsp-D_2UVnaV.js.gz +0 -0
- package/dist/web/assets/{use-monaco-theme-DHczXLMb.js → use-monaco-theme-BFp0c8RX.js} +1 -1
- package/dist/web/assets/{use-websocket-BWZkbleJ.js → use-websocket-DXdXq2qa.js} +1 -1
- package/dist/web/assets/utils-Bmf_8h7Y.js.br +0 -0
- package/dist/web/assets/utils-Bmf_8h7Y.js.gz +0 -0
- package/dist/web/assets/v-DhzO54je.js.br +0 -0
- package/dist/web/assets/v-DhzO54je.js.gz +0 -0
- package/dist/web/assets/vala-Dw_RAk3E.js.br +0 -0
- package/dist/web/assets/vala-Dw_RAk3E.js.gz +0 -0
- package/dist/web/assets/vb-CiXdNh2Y.js.br +0 -0
- package/dist/web/assets/vb-CiXdNh2Y.js.gz +0 -0
- package/dist/web/assets/vendor-markdown-CuWCHIVb.js.br +0 -0
- package/dist/web/assets/vendor-markdown-CuWCHIVb.js.gz +0 -0
- package/dist/web/assets/vendor-mermaid-BitiXJlL.js.br +0 -0
- package/dist/web/assets/vendor-mermaid-BitiXJlL.js.gz +0 -0
- package/dist/web/assets/vendor-ui-DmZ-Mb-H.js.br +0 -0
- package/dist/web/assets/vendor-ui-DmZ-Mb-H.js.gz +0 -0
- package/dist/web/assets/vendor-xterm-DkTCHfhq.css.br +0 -0
- package/dist/web/assets/vendor-xterm-DkTCHfhq.css.gz +0 -0
- package/dist/web/assets/vendor-xterm-JV4hEJsv.js.br +0 -0
- package/dist/web/assets/vendor-xterm-JV4hEJsv.js.gz +0 -0
- package/dist/web/assets/verilog-fITdxqwV.js.br +0 -0
- package/dist/web/assets/verilog-fITdxqwV.js.gz +0 -0
- package/dist/web/assets/vesper-B1wm_At7.js.br +0 -0
- package/dist/web/assets/vesper-B1wm_At7.js.gz +0 -0
- package/dist/web/assets/vhdl-ebHjqKp9.js.br +0 -0
- package/dist/web/assets/vhdl-ebHjqKp9.js.gz +0 -0
- package/dist/web/assets/{video-preview-D191TvX9.js → video-preview-DMWtzyhn.js} +1 -1
- package/dist/web/assets/video-preview-DMWtzyhn.js.br +0 -0
- package/dist/web/assets/video-preview-DMWtzyhn.js.gz +0 -0
- package/dist/web/assets/viml-Dgmnoxoo.js.br +0 -0
- package/dist/web/assets/viml-Dgmnoxoo.js.gz +0 -0
- package/dist/web/assets/vitesse-black-BZ5gMb7l.js.br +0 -0
- package/dist/web/assets/vitesse-black-BZ5gMb7l.js.gz +0 -0
- package/dist/web/assets/vitesse-dark-Lij7kkOt.js.br +0 -0
- package/dist/web/assets/vitesse-dark-Lij7kkOt.js.gz +0 -0
- package/dist/web/assets/vitesse-light-DW6Wq7VC.js.br +0 -0
- package/dist/web/assets/vitesse-light-DW6Wq7VC.js.gz +0 -0
- package/dist/web/assets/vue-1EL6Pw1h.js.br +0 -0
- package/dist/web/assets/vue-1EL6Pw1h.js.gz +0 -0
- package/dist/web/assets/vue-html-BPQNwPC6.js.br +0 -0
- package/dist/web/assets/vue-html-BPQNwPC6.js.gz +0 -0
- package/dist/web/assets/vue-vine-Bb_dsWLt.js.br +0 -0
- package/dist/web/assets/vue-vine-Bb_dsWLt.js.gz +0 -0
- package/dist/web/assets/vyper-6FxDnVNg.js.br +0 -0
- package/dist/web/assets/vyper-6FxDnVNg.js.gz +0 -0
- package/dist/web/assets/wasm-BDxaNPCj.js.br +0 -0
- package/dist/web/assets/wasm-BDxaNPCj.js.gz +0 -0
- package/dist/web/assets/wasm-DKhAtzfe.js.br +0 -0
- package/dist/web/assets/wasm-DKhAtzfe.js.gz +0 -0
- package/dist/web/assets/wenyan-C0k0DYG_.js.br +0 -0
- package/dist/web/assets/wenyan-C0k0DYG_.js.gz +0 -0
- package/dist/web/assets/wgsl-Y2zagbdn.js.br +0 -0
- package/dist/web/assets/wgsl-Y2zagbdn.js.gz +0 -0
- package/dist/web/assets/wikitext-C4QGWzkY.js.br +0 -0
- package/dist/web/assets/wikitext-C4QGWzkY.js.gz +0 -0
- package/dist/web/assets/window-store-UC1jJeLM.js.br +0 -0
- package/dist/web/assets/window-store-UC1jJeLM.js.gz +0 -0
- package/dist/web/assets/wit-CQESzjHy.js.br +0 -0
- package/dist/web/assets/wit-CQESzjHy.js.gz +0 -0
- package/dist/web/assets/wolfram-B-ia69Ia.js.br +0 -0
- package/dist/web/assets/wolfram-B-ia69Ia.js.gz +0 -0
- package/dist/web/assets/xml-dxkLNA0K.js.br +0 -0
- package/dist/web/assets/xml-dxkLNA0K.js.gz +0 -0
- package/dist/web/assets/xsl-Bw2adwrl.js.br +0 -0
- package/dist/web/assets/xsl-Bw2adwrl.js.gz +0 -0
- package/dist/web/assets/yaml-CEYYTQPm.js.br +0 -0
- package/dist/web/assets/yaml-CEYYTQPm.js.gz +0 -0
- package/dist/web/assets/zenscript-BggWXIeJ.js.br +0 -0
- package/dist/web/assets/zenscript-BggWXIeJ.js.gz +0 -0
- package/dist/web/assets/zig-CbaUfBQe.js.br +0 -0
- package/dist/web/assets/zig-CbaUfBQe.js.gz +0 -0
- package/dist/web/index.html +7 -7
- package/dist/web/index.html.br +0 -0
- package/dist/web/index.html.gz +0 -0
- package/dist/web/sw.js +1 -1
- package/dist/web/sw.js.br +0 -0
- package/dist/web/sw.js.gz +0 -0
- package/docs/architecture/ai-chat-and-providers.md +10 -0
- package/docs/architecture/workspace-and-ui.md +63 -0
- package/docs/project-roadmap.md +6 -0
- package/package.json +1 -1
- package/scripts/release.sh +6 -0
- package/src/providers/codex-app-server/codex-event-mapper.ts +7 -3
- package/src/providers/codex-app-server/codex-provider.ts +10 -0
- package/src/server/index.ts +5 -0
- package/src/server/routes/chat.ts +3 -7
- package/src/server/routes/files.ts +11 -75
- package/src/server/routes/html-preview.ts +116 -0
- package/src/server/routes/settings.ts +8 -1
- package/src/server/ws/chat.ts +19 -6
- package/src/services/chat.service.ts +2 -4
- package/src/services/project-content-search.service.ts +119 -0
- package/src/types/api.ts +5 -3
- package/src/types/chat.ts +18 -0
- package/src/web/app.tsx +9 -1
- package/src/web/components/chat/chat-history-bar.tsx +11 -6
- package/src/web/components/chat/chat-tab.tsx +25 -1
- package/src/web/components/chat/chat-welcome.tsx +2 -0
- package/src/web/components/chat/message-events.tsx +6 -6
- package/src/web/components/chat/message-input.tsx +23 -1
- package/src/web/components/chat/model-thinking-selector.tsx +15 -4
- package/src/web/components/chat/session-list-panel.tsx +2 -6
- package/src/web/components/chat/session-picker.tsx +2 -6
- package/src/web/components/editor/code-editor.tsx +65 -12
- package/src/web/components/editor/html-preview-toolbar.tsx +80 -0
- package/src/web/components/editor/html-preview.tsx +30 -0
- package/src/web/components/explorer/search-panel.tsx +37 -6
- package/src/web/components/git/git-status-panel.tsx +32 -4
- package/src/web/components/layout/mobile-drawer.tsx +6 -4
- package/src/web/components/layout/project-switcher.tsx +1 -0
- package/src/web/components/layout/sidebar.tsx +1 -1
- package/src/web/components/onboarding/onboarding-entry.tsx +15 -0
- package/src/web/components/onboarding/onboarding-file-help.tsx +31 -0
- package/src/web/components/onboarding/onboarding-guide.tsx +45 -0
- package/src/web/components/onboarding/onboarding-hint.tsx +43 -0
- package/src/web/components/onboarding/onboarding-quick-orientation.tsx +81 -0
- package/src/web/components/onboarding/onboarding-root.tsx +137 -0
- package/src/web/components/onboarding/onboarding-run-document-preview.tsx +23 -0
- package/src/web/components/onboarding/onboarding-setup.tsx +50 -0
- package/src/web/components/onboarding/onboarding-step-transition.tsx +27 -0
- package/src/web/components/onboarding/use-onboarding-session-check.ts +32 -0
- package/src/web/components/settings/general-settings-section.tsx +7 -0
- package/src/web/components/terminal/terminal-tab.tsx +15 -1
- package/src/web/hooks/use-chat.ts +69 -7
- package/src/web/hooks/use-session-history.ts +2 -6
- package/src/web/lib/chat-attempt-lifecycle.ts +46 -0
- package/src/web/lib/onboarding/onboarding-copy.ts +57 -0
- package/src/web/lib/onboarding/onboarding-state.ts +77 -0
- package/src/web/lib/onboarding/onboarding-steps.ts +16 -0
- package/src/web/lib/onboarding/onboarding-types.ts +39 -0
- package/src/web/lib/onboarding/run-instructions.ts +22 -0
- package/src/web/stores/onboarding-store.ts +74 -0
- package/vite.config.ts +5 -1
- package/dist/web/assets/accounts-settings-section-CLEAA_Jc.js +0 -1
- package/dist/web/assets/chat-tab-BpdgqjSL.js +0 -15
- package/dist/web/assets/code-editor-B7y7-5KE.js +0 -7
- package/dist/web/assets/explorer-body-xg1-MhlW.js +0 -2
- package/dist/web/assets/general-settings-section-CfNPHQUk.js +0 -1
- package/dist/web/assets/group-chat-tab-D1lx0zz-.js +0 -1
- package/dist/web/assets/index-BH99TIE0.css +0 -1
- package/dist/web/assets/index-CN0G8uYY.js +0 -52
- package/dist/web/assets/keybindings-store-L5vV8DEJ.js +0 -1
- package/dist/web/assets/markdown-renderer-BX1Q00sC.js +0 -3
- package/dist/web/assets/notification-store-BHgSy-ci.js +0 -1
- package/dist/web/assets/problems-panel-D_wZ4_Qg.js +0 -1
- package/dist/web/assets/remote-desktop-window-content-lwbkLsTC.js +0 -1
- package/dist/web/assets/settings-body-DgN22Z0W.js +0 -2
- package/dist/web/assets/streaming-store-BYukdB56.js +0 -1
- package/dist/web/assets/terminal-tab-jikhQLct.js +0 -3
- /package/dist/web/assets/{api-themes-CSUarkzD.js → api-themes-B3RwKXw-.js} +0 -0
- /package/dist/web/assets/{csv-parser-_oDBUkwQ.js → csv-parser-DpCmuupp.js} +0 -0
- /package/dist/web/assets/{docx-preview-Dxvy6h13.js → docx-preview-Gzi4QBez.js} +0 -0
- /package/dist/web/assets/{edit-diff-preview-BGGGecVw.js → edit-diff-preview-CVv7EOFu.js} +0 -0
- /package/dist/web/assets/{format-bytes-D1AQyUCt.js → format-bytes-CmnPxZjG.js} +0 -0
- /package/dist/web/assets/{image-preview-DeGD0HJu.js → image-preview-xFLgpolc.js} +0 -0
- /package/dist/web/assets/{lib-CD6pOS4u.js → lib-DBeVwCnC.js} +0 -0
- /package/dist/web/assets/{media-url-DKK0YHxL.js → media-url-BmIBOO3z.js} +0 -0
- /package/dist/web/assets/{pdf-preview-DAcfhfGm.js → pdf-preview-OvVOptPh.js} +0 -0
- /package/dist/web/assets/{query-audit-section-BrfSo0s_.js → query-audit-section-OsYip7HO.js} +0 -0
- /package/dist/web/assets/{run-in-terminal-D7W4IKb9.js → run-in-terminal-Bu3ph5pY.js} +0 -0
- /package/dist/web/assets/{send-to-chat-DNKhmHbi.js → send-to-chat-DuRTOS7_.js} +0 -0
- /package/dist/web/assets/{separator-TRMsJUYe.js → separator-tjXX_Sky.js} +0 -0
- /package/dist/web/assets/{use-open-team-member-C3mrUzIC.js → use-open-team-member-CHpGPALV.js} +0 -0
- /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
|
-
|
|
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
|
-
{
|
|
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
|
-
<
|
|
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
|
-
|
|
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
|
-
{
|
|
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
|
|
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 === "
|
|
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
|
+
}
|