@chainingintention/pi-web-cn 2.202610.5 → 2.202611.1
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/README.md +4 -2
- package/dist/bin/pi-web-server.sh +91 -0
- package/dist/bin/pi-web-sessiond.sh +91 -0
- package/dist/bin/pi-web.sh +91 -0
- package/dist/cli.js +33 -29
- package/dist/cli.js.map +1 -1
- package/dist/client/assets/3d-Dr68X8h8.svg +1 -0
- package/dist/client/assets/PiWebApp-D9e-Nrxi.js +3952 -0
- package/dist/client/assets/SettingsDialog-BvlvoXvD.js +1129 -0
- package/dist/client/assets/abap-uAHVFerN.svg +1 -0
- package/dist/client/assets/abc-CXjdSXsv.svg +1 -0
- package/dist/client/assets/actionscript-BCkIwjgm.svg +1 -0
- package/dist/client/assets/ada-GL6JWmc_.svg +1 -0
- package/dist/client/assets/adobe-illustrator-DhGvkpwi.svg +1 -0
- package/dist/client/assets/adobe-photoshop-0hmnA7cm.svg +1 -0
- package/dist/client/assets/adobe-swc-myFGSGFT.svg +1 -0
- package/dist/client/assets/adonis-SdGYdzCA.svg +1 -0
- package/dist/client/assets/advpl-BWLgf_Ky.svg +1 -0
- package/dist/client/assets/advpl-include-DYgH3R0u.svg +1 -0
- package/dist/client/assets/advpl-ptm-C5Y5ffZi.svg +1 -0
- package/dist/client/assets/advpl-tlpp-BAlVwpPL.svg +1 -0
- package/dist/client/assets/agent-DAWBwR7s.svg +1 -0
- package/dist/client/assets/amplify-BAWPaFFb.svg +1 -0
- package/dist/client/assets/android-TigHCxTb.svg +1 -0
- package/dist/client/assets/angular-D2ijCUIg.svg +1 -0
- package/dist/client/assets/angular-component-eczQQRE6.svg +1 -0
- package/dist/client/assets/angular-directive-C_jq8cjP.svg +1 -0
- package/dist/client/assets/angular-guard-B4iC5rXF.svg +1 -0
- package/dist/client/assets/angular-interceptor-CJvi6DuQ.svg +1 -0
- package/dist/client/assets/angular-pipe-BQZMATB_.svg +1 -0
- package/dist/client/assets/angular-service-DHYn6jIk.svg +1 -0
- package/dist/client/assets/antlr-DkzdiGgY.svg +1 -0
- package/dist/client/assets/apiblueprint-BDRvCIBM.svg +1 -0
- package/dist/client/assets/apollo-BAVoyYDs.svg +1 -0
- package/dist/client/assets/applescript-Bm_R8YT0.svg +1 -0
- package/dist/client/assets/apps-script-6efl-CXu.svg +1 -0
- package/dist/client/assets/appveyor-6B1suIBr.svg +1 -0
- package/dist/client/assets/appwrite-D7AlK8SW.svg +1 -0
- package/dist/client/assets/architecture-CtuqF8rD.svg +1 -0
- package/dist/client/assets/arduino-DFxCIupZ.svg +1 -0
- package/dist/client/assets/asciidoc-DUAdVwVP.svg +1 -0
- package/dist/client/assets/assembly-BKikEKKy.svg +1 -0
- package/dist/client/assets/astro-Bivf18eC.svg +1 -0
- package/dist/client/assets/astro-config-Cr5suFul.svg +1 -0
- package/dist/client/assets/astyle-BiqOWu-0.svg +1 -0
- package/dist/client/assets/audio-B4FatEUD.svg +1 -0
- package/dist/client/assets/aurelia-CnUjHPcZ.svg +1 -0
- package/dist/client/assets/authors-DdaDoKVR.svg +1 -0
- package/dist/client/assets/auto-BOO_fhxh.svg +1 -0
- package/dist/client/assets/autohotkey-D87F33UG.svg +1 -0
- package/dist/client/assets/autoit-DQTGS66r.svg +1 -0
- package/dist/client/assets/azure-DMSkMABH.svg +1 -0
- package/dist/client/assets/azure-pipelines-CcGJw3Rl.svg +1 -0
- package/dist/client/assets/babel-DFMbiqHA.svg +1 -0
- package/dist/client/assets/ballerina-BT8MyHl8.svg +1 -0
- package/dist/client/assets/bashly-settings-Ch9mIpw9.svg +1 -0
- package/dist/client/assets/bazel-CPXexffJ.svg +1 -0
- package/dist/client/assets/bbx-CB-6IYxw.svg +1 -0
- package/dist/client/assets/beancount-DR_GSwds.svg +1 -0
- package/dist/client/assets/bench-js-DOHd4EZB.svg +1 -0
- package/dist/client/assets/bench-jsx-CLJJl81D.svg +1 -0
- package/dist/client/assets/bench-ts-BM8GsfrF.svg +1 -0
- package/dist/client/assets/bibliography-D3emS1pd.svg +1 -0
- package/dist/client/assets/bibtex-style-CVY4tTiP.svg +1 -0
- package/dist/client/assets/bicep-BMMGt18P.svg +1 -0
- package/dist/client/assets/biome-Bf2373dl.svg +1 -0
- package/dist/client/assets/bitbucket-BQr8Az5R.svg +1 -0
- package/dist/client/assets/bithound-BOh7-s-G.svg +1 -0
- package/dist/client/assets/blender-B7Vz8gxa.svg +1 -0
- package/dist/client/assets/blink-DVWcfhba.svg +1 -0
- package/dist/client/assets/blitz-B4hhOxPa.svg +1 -0
- package/dist/client/assets/bower-CkFcC1Ou.svg +1 -0
- package/dist/client/assets/brainfuck-BXozg9z7.svg +1 -0
- package/dist/client/assets/browserlist-CUbhNMS9.svg +1 -0
- package/dist/client/assets/bruno-CoSNrNfv.svg +1 -0
- package/dist/client/assets/buck-BRuOl0ko.svg +1 -0
- package/dist/client/assets/bucklescript-TfoVgTnq.svg +1 -0
- package/dist/client/assets/buildkite-BrDKWLhW.svg +1 -0
- package/dist/client/assets/bun-CZtgPBjt.svg +1 -0
- package/dist/client/assets/c-CCkhSkL9.svg +1 -0
- package/dist/client/assets/c3-J0cVtsWq.svg +1 -0
- package/dist/client/assets/cabal-CQb4_DnV.svg +1 -0
- package/dist/client/assets/caddy-ywaArsUF.svg +1 -0
- package/dist/client/assets/cadence-BRBsaulT.svg +1 -0
- package/dist/client/assets/cairo-Cls19dwE.svg +1 -0
- package/dist/client/assets/cake-DpuWz3gE.svg +1 -0
- package/dist/client/assets/capacitor-CugB3p3d.svg +1 -0
- package/dist/client/assets/capnp-DtxOZ2_z.svg +1 -0
- package/dist/client/assets/cbx-QvSmyWq4.svg +1 -0
- package/dist/client/assets/cds-Bi3ghsEA.svg +1 -0
- package/dist/client/assets/certificate-B5QPOK_C.svg +1 -0
- package/dist/client/assets/changelog-mhp3hE32.svg +1 -0
- package/dist/client/assets/chess-4hVz24Rg.svg +1 -0
- package/dist/client/assets/chromatic-DRZoj4Hg.svg +1 -0
- package/dist/client/assets/chrome-ox3b9yI4.svg +1 -0
- package/dist/client/assets/circleci-DubwoSEv.svg +1 -0
- package/dist/client/assets/citation-ldCt-JF8.svg +1 -0
- package/dist/client/assets/clangd-bL8W2_13.svg +1 -0
- package/dist/client/assets/claude-DypBvzkn.svg +1 -0
- package/dist/client/assets/cline-Dd7x4bMT.svg +1 -0
- package/dist/client/assets/clojure-wfCfR06G.svg +1 -0
- package/dist/client/assets/cloudfoundry-BS-9yLUv.svg +1 -0
- package/dist/client/assets/cmake-B7q-R28A.svg +1 -0
- package/dist/client/assets/coala-D4YHPVOS.svg +1 -0
- package/dist/client/assets/cobol-wDz3o6g-.svg +1 -0
- package/dist/client/assets/coconut-C7cPswso.svg +1 -0
- package/dist/client/assets/code-climate-BJrwzyOv.svg +1 -0
- package/dist/client/assets/codecov-CXg1oY95.svg +1 -0
- package/dist/client/assets/codeowners-D_rztV49.svg +1 -0
- package/dist/client/assets/coderabbit-ai-DGoTDlyw.svg +1 -0
- package/dist/client/assets/coffee-D5JGmA63.svg +1 -0
- package/dist/client/assets/coldfusion-DhOnvVS_.svg +1 -0
- package/dist/client/assets/coloredpetrinets-DY894G_S.svg +1 -0
- package/dist/client/assets/command-Df3AkI2A.svg +1 -0
- package/dist/client/assets/commitizen-9SU1u7to.svg +1 -0
- package/dist/client/assets/commitlint-3vvjpxJt.svg +1 -0
- package/dist/client/assets/composerShortcuts-BggqvE9J.js +31 -0
- package/dist/client/assets/concourse-DAGkX2vY.svg +1 -0
- package/dist/client/assets/conduct-2Bm8RK0N.svg +1 -0
- package/dist/client/assets/console-pcgGAn8Z.svg +1 -0
- package/dist/client/assets/contentlayer-vXTwXOHk.svg +1 -0
- package/dist/client/assets/context-CebLrksE.svg +1 -0
- package/dist/client/assets/contributing-DLcmDS34.svg +1 -0
- package/dist/client/assets/controller-Doc75EnV.svg +1 -0
- package/dist/client/assets/copilot-DBlNrZ6L.svg +1 -0
- package/dist/client/assets/cpp-DT2939hp.svg +1 -0
- package/dist/client/assets/craco-BySmcQ23.svg +1 -0
- package/dist/client/assets/credits-GALyqcNu.svg +1 -0
- package/dist/client/assets/crystal-BbNQlJLs.svg +1 -0
- package/dist/client/assets/csharp-D5ZKsaqY.svg +1 -0
- package/dist/client/assets/css-JKwEyWYb.svg +1 -0
- package/dist/client/assets/css-map-Ctu4D9Ve.svg +1 -0
- package/dist/client/assets/cucumber-B3ZYwjRe.svg +1 -0
- package/dist/client/assets/cuda-CRW2z42A.svg +1 -0
- package/dist/client/assets/cue-ni2TTLiZ.svg +1 -0
- package/dist/client/assets/cursor-CJahHGg2.svg +1 -0
- package/dist/client/assets/cypress-DR0JRbfI.svg +1 -0
- package/dist/client/assets/d-B87zyVMx.svg +1 -0
- package/dist/client/assets/dart-Dx2oVcaR.svg +1 -0
- package/dist/client/assets/dart_generated-Wk58pte9.svg +1 -0
- package/dist/client/assets/database-B_oKaDcf.svg +1 -0
- package/dist/client/assets/deepsource-DUTIJ9mv.svg +1 -0
- package/dist/client/assets/denizenscript-BJc2vgOS.svg +1 -0
- package/dist/client/assets/deno-CyFvrzCm.svg +1 -0
- package/dist/client/assets/dependabot-BgJkJLU3.svg +1 -0
- package/dist/client/assets/dependencies-update-CdGy9ujO.svg +1 -0
- package/dist/client/assets/dhall-Dmhh82EO.svg +1 -0
- package/dist/client/assets/diff-6SXDCokN.svg +1 -0
- package/dist/client/assets/dinophp-D9hQnqAR.svg +1 -0
- package/dist/client/assets/disc-h_dLNGEL.svg +1 -0
- package/dist/client/assets/django-N1UNAXk1.svg +1 -0
- package/dist/client/assets/dll-1DkaBp0q.svg +1 -0
- package/dist/client/assets/docker-CfHcr61D.svg +1 -0
- package/dist/client/assets/doctex-installer-Cs7SA-ct.svg +1 -0
- package/dist/client/assets/document-o-3iA9GQ.svg +1 -0
- package/dist/client/assets/dotjs-DIyH7Gzv.svg +1 -0
- package/dist/client/assets/drawio-2RVDLi9g.svg +1 -0
- package/dist/client/assets/drizzle-hhBCZx1t.svg +1 -0
- package/dist/client/assets/drone-KvQ2n-xY.svg +1 -0
- package/dist/client/assets/dtx-DdGk8fFj.svg +1 -0
- package/dist/client/assets/duc-CHcAZQos.svg +1 -0
- package/dist/client/assets/dune-DuGO6qDA.svg +1 -0
- package/dist/client/assets/edge-ChHKXrYp.svg +1 -0
- package/dist/client/assets/editorconfig-BUzUAwRX.svg +1 -0
- package/dist/client/assets/ejs-D_Li05n3.svg +1 -0
- package/dist/client/assets/elixir-75mYTx2s.svg +1 -0
- package/dist/client/assets/elm-DE_LIp02.svg +1 -0
- package/dist/client/assets/email-G8mUttGa.svg +1 -0
- package/dist/client/assets/ember-B1y9-Oks.svg +1 -0
- package/dist/client/assets/epub-DPvrBCNf.svg +1 -0
- package/dist/client/assets/erlang-DosS6spf.svg +1 -0
- package/dist/client/assets/esbuild-DV6xNZ-T.svg +1 -0
- package/dist/client/assets/eslint-IU_g232-.svg +1 -0
- package/dist/client/assets/excalidraw-BllKd-7L.svg +1 -0
- package/dist/client/assets/exe-SfcXmkQy.svg +1 -0
- package/dist/client/assets/expo-B4PonO4I.svg +1 -0
- package/dist/client/assets/external-Bawe0tSn.js +1 -0
- package/dist/client/assets/fastlane-C4SZDg50.svg +1 -0
- package/dist/client/assets/favicon-VsCcG-A-.svg +1 -0
- package/dist/client/assets/figma-C8Gjq2Xj.svg +1 -0
- package/dist/client/assets/file-BEIHQH8Q.svg +256 -0
- package/dist/client/assets/firebase-DHIO0glR.svg +1 -0
- package/dist/client/assets/flash-Dck7x_rj.svg +1 -0
- package/dist/client/assets/flow-DD4KQiTg.svg +1 -0
- package/dist/client/assets/font-ChbWr8nk.svg +1 -0
- package/dist/client/assets/forth-C3qwGqMh.svg +1 -0
- package/dist/client/assets/fortran-B0jORJ3v.svg +1 -0
- package/dist/client/assets/foxpro-D3Wp1B1h.svg +1 -0
- package/dist/client/assets/freemarker-BLonnh3h.svg +1 -0
- package/dist/client/assets/fsharp-QwwPC8x_.svg +1 -0
- package/dist/client/assets/fusebox-DqjzyXyI.svg +1 -0
- package/dist/client/assets/gamemaker-C82Pt646.svg +1 -0
- package/dist/client/assets/garden-BUsWpFKW.svg +1 -0
- package/dist/client/assets/gatsby-OA1TADMJ.svg +1 -0
- package/dist/client/assets/gcp-CW2RG_Wp.svg +1 -0
- package/dist/client/assets/gemfile-1RY6BqSx.svg +1 -0
- package/dist/client/assets/gemini-CIgUY8Tg.svg +1 -0
- package/dist/client/assets/gemini-ai-Bwe7HeFb.svg +1 -0
- package/dist/client/assets/git-BEMs8TOZ.svg +1 -0
- package/dist/client/assets/gitlab-zt07_Oa4.svg +1 -0
- package/dist/client/assets/gitpod-BtZJQuF0.svg +1 -0
- package/dist/client/assets/gleam-CKPcrRAD.svg +1 -0
- package/dist/client/assets/gnuplot-BvFqM0ms.svg +1 -0
- package/dist/client/assets/go-ByY4sxRu.svg +1 -0
- package/dist/client/assets/go-mod-CB6BWQDr.svg +1 -0
- package/dist/client/assets/godot-C1EmL4jR.svg +1 -0
- package/dist/client/assets/godot-assets-D-FMsuJX.svg +1 -0
- package/dist/client/assets/google-BnrMOJ4V.svg +1 -0
- package/dist/client/assets/gradle-zsQ12U1q.svg +1 -0
- package/dist/client/assets/grafana-alloy-D2DQ33BM.svg +1 -0
- package/dist/client/assets/grain-5NkvKROL.svg +1 -0
- package/dist/client/assets/graphcool-CInCTIdE.svg +1 -0
- package/dist/client/assets/graphql-DnNt2maR.svg +1 -0
- package/dist/client/assets/gridsome-C2H5SpaD.svg +1 -0
- package/dist/client/assets/groovy-B93RxI7a.svg +1 -0
- package/dist/client/assets/grunt-cwitasVS.svg +1 -0
- package/dist/client/assets/gulp-BIZ8EAl0.svg +1 -0
- package/dist/client/assets/h-1bd73y8t.svg +1 -0
- package/dist/client/assets/hack-Bsd1y9bu.svg +1 -0
- package/dist/client/assets/hadolint-D1aEtESc.svg +1 -0
- package/dist/client/assets/haml-BKq8hU-U.svg +1 -0
- package/dist/client/assets/handlebars-Dem98Ago.svg +1 -0
- package/dist/client/assets/happo-B64XokX0.svg +1 -0
- package/dist/client/assets/hardhat-ByFzkuf4.svg +1 -0
- package/dist/client/assets/harmonix-CUh3S11M.svg +1 -0
- package/dist/client/assets/haskell-C6GxEwdX.svg +1 -0
- package/dist/client/assets/haxe-DdxZWPQy.svg +1 -0
- package/dist/client/assets/hcl-BJiZ3gWE.svg +1 -0
- package/dist/client/assets/helm-CF4Mi35z.svg +1 -0
- package/dist/client/assets/heroku-B6vPz_TJ.svg +1 -0
- package/dist/client/assets/hex-BuGJuqn1.svg +1 -0
- package/dist/client/assets/hip-DB4xe1Ab.svg +1 -0
- package/dist/client/assets/histoire-BMTufysg.svg +1 -0
- package/dist/client/assets/hjson-Dl4ZTgK4.svg +1 -0
- package/dist/client/assets/horusec-z6vyrVAy.svg +1 -0
- package/dist/client/assets/hosts-BydfWJ9z.svg +1 -0
- package/dist/client/assets/hpp-HerxyIaC.svg +1 -0
- package/dist/client/assets/html-BNRzQ3jk.svg +1 -0
- package/dist/client/assets/http-Cp7RCu8F.svg +1 -0
- package/dist/client/assets/huff-t3uGT10D.svg +1 -0
- package/dist/client/assets/hurl-S3Fvmz3R.svg +1 -0
- package/dist/client/assets/husky-A0ALYNcp.svg +1 -0
- package/dist/client/assets/i18n-BezCQ09L.svg +1 -0
- package/dist/client/assets/idris-CfHPjxcM.svg +1 -0
- package/dist/client/assets/ifanr-cloud-DnqgZYHA.svg +1 -0
- package/dist/client/assets/image-DYZiZ4CP.svg +1 -0
- package/dist/client/assets/imba-C1Q6aK1I.svg +1 -0
- package/dist/client/assets/index-0z4D-18M.js +2 -0
- package/dist/client/assets/installation-p19cVXO7.svg +1 -0
- package/dist/client/assets/instructions-CaWEzdge.svg +1 -0
- package/dist/client/assets/ionic-Xp-47Icg.svg +1 -0
- package/dist/client/assets/istanbul-DJKvMwnq.svg +1 -0
- package/dist/client/assets/jar-BaN44U3v.svg +1 -0
- package/dist/client/assets/java-QyMrrPma.svg +1 -0
- package/dist/client/assets/javaclass-BU8_3KBR.svg +1 -0
- package/dist/client/assets/javascript-CQjpTQab.svg +1 -0
- package/dist/client/assets/javascript-map-BQGiWnDM.svg +1 -0
- package/dist/client/assets/jenkins-Bf7aNz-w.svg +1 -0
- package/dist/client/assets/jest-BgbiFFEd.svg +1 -0
- package/dist/client/assets/jinja-4WR9tA6i.svg +1 -0
- package/dist/client/assets/jsconfig-ZAi6fTF1.svg +1 -0
- package/dist/client/assets/json-NsberLUP.svg +1 -0
- package/dist/client/assets/json_schema-sOuobP_H.svg +1 -0
- package/dist/client/assets/jsr-CWVSPSyV.svg +1 -0
- package/dist/client/assets/julia-DCKDSo9T.svg +1 -0
- package/dist/client/assets/jupyter-BKV2q0IB.svg +1 -0
- package/dist/client/assets/just-WQgcj-TR.svg +1 -0
- package/dist/client/assets/karma-Dm3AtiMd.svg +1 -0
- package/dist/client/assets/kcl-CyzArNE1.svg +1 -0
- package/dist/client/assets/key-CrFjkQiv.svg +1 -0
- package/dist/client/assets/keystatic-BECeLiHJ.svg +1 -0
- package/dist/client/assets/kivy-baDYR7ar.svg +1 -0
- package/dist/client/assets/kl-Dy3qeUbd.svg +1 -0
- package/dist/client/assets/knip-BWpBMXqu.svg +1 -0
- package/dist/client/assets/kotlin-DcjME28v.svg +1 -0
- package/dist/client/assets/kubernetes-B5EEXb3e.svg +1 -0
- package/dist/client/assets/kusto-CIjvTfRW.svg +1 -0
- package/dist/client/assets/label-AKZOJqFh.svg +1 -0
- package/dist/client/assets/laravel-DWauj5w4.svg +1 -0
- package/dist/client/assets/latexmk-DQ0u8QMa.svg +1 -0
- package/dist/client/assets/lbx-BMCQe48q.svg +1 -0
- package/dist/client/assets/lean-COOrALn9.svg +1 -0
- package/dist/client/assets/lefthook-DClcp3br.svg +1 -0
- package/dist/client/assets/lerna-BsWY3uYS.svg +1 -0
- package/dist/client/assets/less-0c0PeB1Z.svg +1 -0
- package/dist/client/assets/liara-CSN9sJzE.svg +1 -0
- package/dist/client/assets/lib-B-NXM8aC.svg +1 -0
- package/dist/client/assets/license-DmydDYqK.svg +1 -0
- package/dist/client/assets/lighthouse-CtbIoCdK.svg +1 -0
- package/dist/client/assets/lilypond-CBSm3LFL.svg +1 -0
- package/dist/client/assets/lintstaged-Bj1Eddi5.svg +1 -0
- package/dist/client/assets/liquid-ClnkrScY.svg +1 -0
- package/dist/client/assets/lisp-CMn3epg5.svg +1 -0
- package/dist/client/assets/lit-CJ6w1GHF.js +2 -0
- package/dist/client/assets/livescript-B5PkWD8e.svg +1 -0
- package/dist/client/assets/lock-DRloBj1S.svg +1 -0
- package/dist/client/assets/log-Db6NwxHZ.svg +1 -0
- package/dist/client/assets/lolcode-C6q6fY1O.svg +1 -0
- package/dist/client/assets/lottie-ExyLYhtq.svg +1 -0
- package/dist/client/assets/lua-CUh_Iwk8.svg +1 -0
- package/dist/client/assets/luau-De_4eP_9.svg +1 -0
- package/dist/client/assets/lynx-B49IBNBN.svg +1 -0
- package/dist/client/assets/lyric-Bm3UlVp3.svg +1 -0
- package/dist/client/assets/macaulay2-0YotwNnE.svg +1 -0
- package/dist/client/assets/main-DDgPZEYp.js +2 -0
- package/dist/client/assets/makefile-B2WlY55Y.svg +1 -0
- package/dist/client/assets/markdoc-DjROVW5I.svg +1 -0
- package/dist/client/assets/markdoc-config-BpVRhg1B.svg +1 -0
- package/dist/client/assets/markdown-Bm_LLmmi.svg +1 -0
- package/dist/client/assets/markdownlint-D4M2LXbH.svg +1 -0
- package/dist/client/assets/markojs-BohUrSLp.svg +1 -0
- package/dist/client/assets/mathematica-BGWNQXSR.svg +1 -0
- package/dist/client/assets/maven-BffVB5hm.svg +1 -0
- package/dist/client/assets/mdsvex-Dc9CFJJa.svg +1 -0
- package/dist/client/assets/mdx-D6qa5U8C.svg +1 -0
- package/dist/client/assets/mercurial-BDoD6ubd.svg +1 -0
- package/dist/client/assets/merlin-D5wTXfO4.svg +1 -0
- package/dist/client/assets/mermaid-BTscZDRS.svg +1 -0
- package/dist/client/assets/meson-dcvm8lmo.svg +1 -0
- package/dist/client/assets/metro-XIyWX0Go.svg +1 -0
- package/dist/client/assets/minecraft-CE8xXE3-.svg +1 -0
- package/dist/client/assets/minecraft-fabric-wG6LwgIf.svg +1 -0
- package/dist/client/assets/mint-Cb-YXACo.svg +1 -0
- package/dist/client/assets/mist-DAm4UkTw.svg +1 -0
- package/dist/client/assets/mjml-C_r30C5E.svg +1 -0
- package/dist/client/assets/mocha-BF5_j65C.svg +1 -0
- package/dist/client/assets/modernizr-89IMS8eL.svg +1 -0
- package/dist/client/assets/mojo-CscjT2Jm.svg +1 -0
- package/dist/client/assets/moon-_L_nTq1_.svg +1 -0
- package/dist/client/assets/moonscript-Ayut2PrD.svg +1 -0
- package/dist/client/assets/mrpack-BVpGpKVf.svg +1 -0
- package/dist/client/assets/mxml-B21Nbdgw.svg +1 -0
- package/dist/client/assets/nano-staged-CAVSFkY8.svg +1 -0
- package/dist/client/assets/ndst-DpYLiHkx.svg +1 -0
- package/dist/client/assets/nest-CUu_iPqI.svg +1 -0
- package/dist/client/assets/netlify-Bb7vRMfV.svg +1 -0
- package/dist/client/assets/next-2gAImGWJ.svg +1 -0
- package/dist/client/assets/nextflow-dPJG5e3G.svg +1 -0
- package/dist/client/assets/nginx-Ss9U_SJ3.svg +1 -0
- package/dist/client/assets/nim-CXHB5kuH.svg +1 -0
- package/dist/client/assets/nix-DoxxkZ2k.svg +1 -0
- package/dist/client/assets/nodejs-Czg5JT6z.svg +1 -0
- package/dist/client/assets/nodemon-CprsexAJ.svg +1 -0
- package/dist/client/assets/npm-BSKPS9CC.svg +1 -0
- package/dist/client/assets/nuget-D_mqKH22.svg +1 -0
- package/dist/client/assets/nunjucks-CSL1En7R.svg +1 -0
- package/dist/client/assets/nuxt-BszScKzK.svg +1 -0
- package/dist/client/assets/nx-CTIqtdbG.svg +1 -0
- package/dist/client/assets/objective-c-3E5wWl6u.svg +1 -0
- package/dist/client/assets/objective-cpp-DjpoLOMo.svg +1 -0
- package/dist/client/assets/ocaml-T4fLeZFT.svg +1 -0
- package/dist/client/assets/odin-DlWnbZWN.svg +1 -0
- package/dist/client/assets/onnx-C6WInyrb.svg +1 -0
- package/dist/client/assets/opa-D5GoZW5M.svg +1 -0
- package/dist/client/assets/opam-3IZadro4.svg +1 -0
- package/dist/client/assets/openapi-DjlVyoOp.svg +1 -0
- package/dist/client/assets/opencode-BaYncWio.svg +1 -0
- package/dist/client/assets/opentofu-jFw9lQBP.svg +1 -0
- package/dist/client/assets/otne-SLiO8whA.svg +1 -0
- package/dist/client/assets/oxc-DN6_023j.svg +1 -0
- package/dist/client/assets/packship-UyLXQ_8n.svg +1 -0
- package/dist/client/assets/palette-C0GOsJgu.svg +1 -0
- package/dist/client/assets/panda-D469wGns.svg +1 -0
- package/dist/client/assets/parcel-BrXQSBYb.svg +1 -0
- package/dist/client/assets/pascal-oxGvvJ_x.svg +1 -0
- package/dist/client/assets/pawn-BvapPd-t.svg +1 -0
- package/dist/client/assets/payload-Cks6N40-.svg +1 -0
- package/dist/client/assets/pdf-DtjgBDdX.svg +1 -0
- package/dist/client/assets/pdm-CbwhGqOl.svg +1 -0
- package/dist/client/assets/peg-BJdFn78b.svg +1 -0
- package/dist/client/assets/percy-CWbuYL05.svg +1 -0
- package/dist/client/assets/perl-DUX0zwsQ.svg +1 -0
- package/dist/client/assets/php-5lebFt-d.svg +1 -0
- package/dist/client/assets/php-cs-fixer-D3Vv91zO.svg +1 -0
- package/dist/client/assets/phpstan-D9FJYotS.svg +1 -0
- package/dist/client/assets/phpunit-BlNyjrEw.svg +1 -0
- package/dist/client/assets/pinejs-CDuWmsOY.svg +1 -0
- package/dist/client/assets/pipeline-CCHJ-CIC.svg +1 -0
- package/dist/client/assets/pkl-CzHZDqdt.svg +1 -0
- package/dist/client/assets/plastic-CvMMB3c5.svg +1 -0
- package/dist/client/assets/playwright-C8c_RKic.svg +1 -0
- package/dist/client/assets/plop-D4uymN-_.svg +1 -0
- package/dist/client/assets/pm2-ecosystem-Cv28zGx9.svg +1 -0
- package/dist/client/assets/pnpm-ndvMXYUu.svg +1 -0
- package/dist/client/assets/poetry-ClZfXo_0.svg +1 -0
- package/dist/client/assets/postcss-g3C3DDoi.svg +1 -0
- package/dist/client/assets/posthtml-BkDCsIkz.svg +1 -0
- package/dist/client/assets/powerpoint-CCXYfzLu.svg +1 -0
- package/dist/client/assets/powershell-DnXi9Rjx.svg +1 -0
- package/dist/client/assets/pre-commit-DXbl2unR.svg +1 -0
- package/dist/client/assets/preload-helper-CRzLMJPS.js +1 -0
- package/dist/client/assets/prettier-DFxlFAp4.svg +1 -0
- package/dist/client/assets/prisma-BgG1MIwh.svg +1 -0
- package/dist/client/assets/processing-B1bs0VmW.svg +1 -0
- package/dist/client/assets/prolog-CxwCfnlm.svg +1 -0
- package/dist/client/assets/prompt-7jgVTNou.svg +1 -0
- package/dist/client/assets/proto-Bv4-L0XU.svg +1 -0
- package/dist/client/assets/protractor-CJWv1lK-.svg +1 -0
- package/dist/client/assets/pug-BXlORXuH.svg +1 -0
- package/dist/client/assets/puppet-CKCVJvZX.svg +1 -0
- package/dist/client/assets/puppeteer-DDZkfQNZ.svg +1 -0
- package/dist/client/assets/purescript-CUdIfJrp.svg +1 -0
- package/dist/client/assets/python-misc-BZ5TXfdG.svg +1 -0
- package/dist/client/assets/python-oHA753pt.svg +1 -0
- package/dist/client/assets/pytorch-f0udCMaw.svg +1 -0
- package/dist/client/assets/qsharp-BaFNvoXS.svg +1 -0
- package/dist/client/assets/quarto-zhC7oGOB.svg +1 -0
- package/dist/client/assets/quasar-BXE2pW5w.svg +1 -0
- package/dist/client/assets/quokka-DrMOw93T.svg +1 -0
- package/dist/client/assets/r-AQewf3lz.svg +1 -0
- package/dist/client/assets/racket-BCyLzvrP.svg +1 -0
- package/dist/client/assets/raml-WDbT4cRb.svg +1 -0
- package/dist/client/assets/razor-BAUCpTxC.svg +1 -0
- package/dist/client/assets/rbxmk-CZ9pB7X6.svg +1 -0
- package/dist/client/assets/rc-BDgxm_A8.svg +1 -0
- package/dist/client/assets/react-CdMrIyLK.svg +1 -0
- package/dist/client/assets/react_ts-9WeLJBIj.svg +1 -0
- package/dist/client/assets/readme-BSIQKZwq.svg +1 -0
- package/dist/client/assets/reason-m9vOqeqw.svg +1 -0
- package/dist/client/assets/red-Dzf3O8j4.svg +1 -0
- package/dist/client/assets/regedit-DJzxfiQN.svg +1 -0
- package/dist/client/assets/remark-C55cxr93.svg +1 -0
- package/dist/client/assets/remix-Bk2h4zH7.svg +1 -0
- package/dist/client/assets/renovate-zzi8oRFv.svg +1 -0
- package/dist/client/assets/replit-BpeMxcBh.svg +1 -0
- package/dist/client/assets/requiredTerminalPlugin-ZZOwUcbr.js +3 -0
- package/dist/client/assets/rescript-interface-a87dYX5u.svg +1 -0
- package/dist/client/assets/rescript-qPAwtDLa.svg +1 -0
- package/dist/client/assets/restql-CnZcZpny.svg +1 -0
- package/dist/client/assets/riot-DjRzaRVp.svg +1 -0
- package/dist/client/assets/roadmap-DWpVc5P5.svg +1 -0
- package/dist/client/assets/roblox-Bv5zbklC.svg +1 -0
- package/dist/client/assets/robot-Cto_i8jo.svg +1 -0
- package/dist/client/assets/robots-COnOCAqh.svg +1 -0
- package/dist/client/assets/rocket-CAmUpMm6.svg +1 -0
- package/dist/client/assets/rolldown-Cy_4AzVW.svg +1 -0
- package/dist/client/assets/rollup-2ZkmBeWV.svg +1 -0
- package/dist/client/assets/rome-Cq3lb2xY.svg +1 -0
- package/dist/client/assets/routing-BNxHhbXZ.svg +1 -0
- package/dist/client/assets/rspec-CoEmfx5H.svg +1 -0
- package/dist/client/assets/rstack-DzJ3cPXM.svg +1 -0
- package/dist/client/assets/rubocop-CokGq15J.svg +1 -0
- package/dist/client/assets/ruby-DTGQ4xCM.svg +1 -0
- package/dist/client/assets/ruff-BN0KpNzC.svg +1 -0
- package/dist/client/assets/rust-B122pUHY.svg +1 -0
- package/dist/client/assets/salt-B8j0OVNV.svg +1 -0
- package/dist/client/assets/san-C0UnyaU4.svg +1 -0
- package/dist/client/assets/sas-RNoBA0-Y.svg +1 -0
- package/dist/client/assets/sass-B7y5mYt_.svg +1 -0
- package/dist/client/assets/sbt-DosCci-d.svg +1 -0
- package/dist/client/assets/scala-CsGkKwl5.svg +1 -0
- package/dist/client/assets/scheme-CS2UbTis.svg +1 -0
- package/dist/client/assets/scons-CyqfFgvx.svg +1 -0
- package/dist/client/assets/screwdriver-DjTKuDz7.svg +1 -0
- package/dist/client/assets/search-fq7VxV09.svg +1 -0
- package/dist/client/assets/semantic-release-BbLzZX96.svg +1 -0
- package/dist/client/assets/semgrep-Cl6VUQtd.svg +1 -0
- package/dist/client/assets/sentry-MrouyD-P.svg +1 -0
- package/dist/client/assets/sequelize-BQWikTCs.svg +1 -0
- package/dist/client/assets/serverless-C7Jdn6_T.svg +1 -0
- package/dist/client/assets/settings-CtzL1evz.svg +1 -0
- package/dist/client/assets/shader-BZXKDeiD.svg +1 -0
- package/dist/client/assets/shellcheck-BgWOclub.svg +1 -0
- package/dist/client/assets/simulink-yQnKyx__.svg +1 -0
- package/dist/client/assets/siyuan-CPWD86-6.svg +1 -0
- package/dist/client/assets/sketch-NbltjaPf.svg +1 -0
- package/dist/client/assets/skill-BThvgH87.svg +1 -0
- package/dist/client/assets/slim-CTjdZAfz.svg +1 -0
- package/dist/client/assets/slint-B0xbkqgr.svg +1 -0
- package/dist/client/assets/slug-CWkQgR9s.svg +1 -0
- package/dist/client/assets/smarty-BXDiLQNt.svg +1 -0
- package/dist/client/assets/sml-DMkoWEN5.svg +1 -0
- package/dist/client/assets/snakemake-xG7xUrdI.svg +1 -0
- package/dist/client/assets/snapcraft-zvgAcZ4p.svg +1 -0
- package/dist/client/assets/snowpack-l0uHt304.svg +1 -0
- package/dist/client/assets/snyk-DCW3rtvv.svg +1 -0
- package/dist/client/assets/solidity-C4TQWJKU.svg +1 -0
- package/dist/client/assets/sonarcloud-ClLIXGyx.svg +1 -0
- package/dist/client/assets/spwn-31WG9ftR.svg +1 -0
- package/dist/client/assets/stackblitz-ZX6aBRKb.svg +1 -0
- package/dist/client/assets/stan-CPcUXbxB.svg +1 -0
- package/dist/client/assets/steadybit-BZtlLY-3.svg +1 -0
- package/dist/client/assets/stencil-D0FNO32O.svg +1 -0
- package/dist/client/assets/stitches-BYlEJvuz.svg +1 -0
- package/dist/client/assets/storybook-KxGhpZYa.svg +1 -0
- package/dist/client/assets/stryker-CYflxT_R.svg +1 -0
- package/dist/client/assets/sty-C4HqHV4z.svg +1 -0
- package/dist/client/assets/stylable-Bi9Gr97T.svg +1 -0
- package/dist/client/assets/styleSources-CdF2T_pj.js +1 -0
- package/dist/client/assets/stylelint-JSbd-yhE.svg +1 -0
- package/dist/client/assets/styles-BwN5rgmt.js +10 -0
- package/dist/client/assets/styles-DK4aKhCE.js +1 -0
- package/dist/client/assets/stylus-ZoqbP9jE.svg +1 -0
- package/dist/client/assets/sublime-DFvp_Ess.svg +1 -0
- package/dist/client/assets/subtitles-BNOc1mEf.svg +1 -0
- package/dist/client/assets/supabase-CX7cap86.svg +1 -0
- package/dist/client/assets/svelte-B8HKO6BX.svg +1 -0
- package/dist/client/assets/svelte_js-C_RKcwSP.svg +1 -0
- package/dist/client/assets/svelte_ts-APH7lcVp.svg +1 -0
- package/dist/client/assets/svg-DVy7iktw.svg +1 -0
- package/dist/client/assets/svgo-CJXaeDEN.svg +1 -0
- package/dist/client/assets/svgr-Dn8OFGar.svg +1 -0
- package/dist/client/assets/swagger-Dqyrwr4g.svg +1 -0
- package/dist/client/assets/sway-C1Kkif7r.svg +1 -0
- package/dist/client/assets/swc-BUhoW8cb.svg +1 -0
- package/dist/client/assets/swift-D4_pkWil.svg +1 -0
- package/dist/client/assets/syncpack-DtZ994Gf.svg +1 -0
- package/dist/client/assets/table-YhsaNNk_.svg +1 -0
- package/dist/client/assets/tailwindcss-DODJSdj1.svg +1 -0
- package/dist/client/assets/tape-DGYhnMht.svg +1 -0
- package/dist/client/assets/taskfile-f5DM79_-.svg +1 -0
- package/dist/client/assets/tauri-DBBtDoCo.svg +1 -0
- package/dist/client/assets/taze-BPR9LgXp.svg +1 -0
- package/dist/client/assets/tcl-CiAJKGaA.svg +1 -0
- package/dist/client/assets/teal-WyfAQok0.svg +1 -0
- package/dist/client/assets/templ-BHla0pe-.svg +1 -0
- package/dist/client/assets/template-qJWiB5gQ.svg +1 -0
- package/dist/client/assets/terraform-R86_iPhv.svg +1 -0
- package/dist/client/assets/test-js-A34KrdbK.svg +1 -0
- package/dist/client/assets/test-jsx-C2PQBkQP.svg +1 -0
- package/dist/client/assets/test-ts-fdt299ek.svg +1 -0
- package/dist/client/assets/tex-DpewR4UN.svg +1 -0
- package/dist/client/assets/textlint-pjwsbDhs.svg +1 -0
- package/dist/client/assets/themeCatalog-B3yda95n.js +1 -0
- package/dist/client/assets/themePreference-BBiJxLjs.js +1 -0
- package/dist/client/assets/themeStartup-0b02tNrh.js +2 -0
- package/dist/client/assets/tilt-Dwon5dv-.svg +1 -0
- package/dist/client/assets/tldraw-BnDJmluq.svg +1 -0
- package/dist/client/assets/tobi-CQ-666uh.svg +1 -0
- package/dist/client/assets/tobimake-DzDbTYW1.svg +1 -0
- package/dist/client/assets/toc-nUTycYjl.svg +1 -0
- package/dist/client/assets/todo-CpcorlsE.svg +1 -0
- package/dist/client/assets/toml-DvUt-GOd.svg +1 -0
- package/dist/client/assets/toon-CGe9RDKY.svg +1 -0
- package/dist/client/assets/travis-CH6zNy43.svg +1 -0
- package/dist/client/assets/tree-epW9JaxP.svg +1 -0
- package/dist/client/assets/trigger-CqdxCyG0.svg +1 -0
- package/dist/client/assets/tsconfig-ROp_YdWL.svg +1 -0
- package/dist/client/assets/tsdoc-BEXcYgLD.svg +1 -0
- package/dist/client/assets/tsdown-B96z16my.svg +1 -0
- package/dist/client/assets/tsil-D-U9yWS8.svg +1 -0
- package/dist/client/assets/tune-DISlqKNZ.svg +1 -0
- package/dist/client/assets/turborepo-CWNwoZtI.svg +1 -0
- package/dist/client/assets/twig-CA70AYNK.svg +1 -0
- package/dist/client/assets/twine-BPJsGZd2.svg +1 -0
- package/dist/client/assets/typedoc-FY7jFoGW.svg +1 -0
- package/dist/client/assets/typescript-DjjXqw-n.svg +1 -0
- package/dist/client/assets/typescript-def-CTN5WM5i.svg +1 -0
- package/dist/client/assets/typst-CnDSkp_i.svg +1 -0
- package/dist/client/assets/uiua-BOsurlxn.svg +1 -0
- package/dist/client/assets/umi-DYOjFi8w.svg +1 -0
- package/dist/client/assets/uml-CYijxuna.svg +1 -0
- package/dist/client/assets/unity-CRNCEoK6.svg +1 -0
- package/dist/client/assets/unlicense-DG_b3BEE.svg +1 -0
- package/dist/client/assets/unocss-MqLuLfeL.svg +1 -0
- package/dist/client/assets/url-hE4h5p6b.svg +1 -0
- package/dist/client/assets/uv-DRTOVSi_.svg +1 -0
- package/dist/client/assets/vagrant-YnxMTuKe.svg +1 -0
- package/dist/client/assets/vala-m_i2ZWns.svg +1 -0
- package/dist/client/assets/vanilla-extract-76H6-A4R.svg +1 -0
- package/dist/client/assets/varnish-CX3oiNcp.svg +1 -0
- package/dist/client/assets/vedic-D6-oQUka.svg +1 -0
- package/dist/client/assets/velite-nLLNxKBA.svg +1 -0
- package/dist/client/assets/velocity-CSvfE9yM.svg +1 -0
- package/dist/client/assets/vercel-CgKLo9IO.svg +1 -0
- package/dist/client/assets/verdaccio-gsdiCbvv.svg +1 -0
- package/dist/client/assets/verified-BFLtqroG.svg +1 -0
- package/dist/client/assets/verilog-CbZvRaae.svg +1 -0
- package/dist/client/assets/verse-D_RZ0Bz0.svg +1 -0
- package/dist/client/assets/vfl-8CAM-hjs.svg +1 -0
- package/dist/client/assets/video-qxpJXkH6.svg +1 -0
- package/dist/client/assets/vim-CB8qTVuS.svg +1 -0
- package/dist/client/assets/virtual-Hoc2XbZN.svg +1 -0
- package/dist/client/assets/visualstudio-BHj2x5q7.svg +1 -0
- package/dist/client/assets/vite-JKzchVew.svg +1 -0
- package/dist/client/assets/vitest-Cl4_wKFu.svg +1 -0
- package/dist/client/assets/vlang-C3-DMUIm.svg +1 -0
- package/dist/client/assets/vscode-BtTXhPua.svg +1 -0
- package/dist/client/assets/vue-BlenztPP.svg +1 -0
- package/dist/client/assets/vue-config-o7yPAADv.svg +1 -0
- package/dist/client/assets/wakatime-DNz7qcxZ.svg +1 -0
- package/dist/client/assets/wallaby-C0UIkEOa.svg +1 -0
- package/dist/client/assets/wally-Ds1quKSG.svg +1 -0
- package/dist/client/assets/warp-B3X5Zoeh.svg +1 -0
- package/dist/client/assets/watchman-7EFq9LSa.svg +1 -0
- package/dist/client/assets/webassembly-Bs4UtU2T.svg +1 -0
- package/dist/client/assets/webhint-B4I6V0Ee.svg +1 -0
- package/dist/client/assets/webpack-zo2uWGOg.svg +1 -0
- package/dist/client/assets/wepy-Cho54Qlr.svg +1 -0
- package/dist/client/assets/werf-BW9FiKe5.svg +1 -0
- package/dist/client/assets/windicss-C_8y516i.svg +1 -0
- package/dist/client/assets/wolframlanguage-D6C1WBYh.svg +1 -0
- package/dist/client/assets/word-BcPLm6YH.svg +1 -0
- package/dist/client/assets/wrangler-CjgAkoTg.svg +1 -0
- package/dist/client/assets/wxt-c6drtC9H.svg +1 -0
- package/dist/client/assets/xaml-DE72OHNQ.svg +1 -0
- package/dist/client/assets/xmake-4WNmmIJj.svg +1 -0
- package/dist/client/assets/xml-S4aCxoUr.svg +1 -0
- package/dist/client/assets/yaml-DPTMsOTP.svg +1 -0
- package/dist/client/assets/yang-N-7dP4WI.svg +1 -0
- package/dist/client/assets/yarn-Cios8OFX.svg +1 -0
- package/dist/client/assets/zeabur-kqbNXTTH.svg +1 -0
- package/dist/client/assets/zig-CdphsgLN.svg +1 -0
- package/dist/client/assets/zip-GDnEynqi.svg +1 -0
- package/dist/client/assets/zizmor-IsFFdy6W.svg +1 -0
- package/dist/client/index.html +12 -6
- package/dist/config.js +233 -87
- package/dist/config.js.map +1 -1
- package/dist/configSessionNamingMigration.js +63 -0
- package/dist/configSessionNamingMigration.js.map +1 -0
- package/dist/nativeServices/serviceDoctor.js +3 -3
- package/dist/nativeServices/serviceDoctor.js.map +1 -1
- package/dist/nativeServices/servicePlan.js +53 -23
- package/dist/nativeServices/servicePlan.js.map +1 -1
- package/dist/nativeServices/serviceProbe.js +27 -7
- package/dist/nativeServices/serviceProbe.js.map +1 -1
- package/dist/pi-packages/relays/markdownDocument.js +8 -9
- package/dist/pi-packages/relays/pi-web-plugin.js +11 -11
- package/dist/pi-packages/relays/relays.messages.js +38 -0
- package/dist/pi-packages/relays/relaysLocalization.js +19 -0
- package/dist/pi-packages/relays/relaysPanelElement.js +151 -96
- package/dist/pi-packages/scheduled-tasks/browser/pi-web-plugin.js +1135 -0
- package/dist/pi-packages/scheduled-tasks/domain.js +63 -0
- package/dist/pi-packages/scheduled-tasks/extensions/index.js +710 -0
- package/dist/pi-packages/scheduled-tasks/package.json +30 -0
- package/dist/pi-packages/scheduled-tasks/scheduler.js +89 -0
- package/dist/pi-packages/scheduled-tasks/server-plugin.js +9872 -0
- package/dist/pi-packages/scheduled-tasks/service.js +178 -0
- package/dist/pi-packages/scheduled-tasks/skills/scheduled-tasks/SKILL.md +30 -0
- package/dist/pi-packages/scheduled-tasks/sqlite.js +18 -0
- package/dist/pi-packages/scheduled-tasks/store.js +230 -0
- package/dist/pi-packages/scheduled-tasks/vite.browser.config.mjs +16 -0
- package/dist/pi-packages/scheduled-tasks/vite.companion.config.mjs +17 -0
- package/dist/pi-packages/scheduled-tasks/vite.config.mjs +17 -0
- package/dist/pi-packages/session-naming/config.js +78 -0
- package/dist/pi-packages/session-naming/extensions/index.js +74 -0
- package/dist/pi-packages/session-naming/generator.js +76 -0
- package/dist/pi-packages/session-naming/package.json +15 -0
- package/dist/pi-packages/workflows/browser/pi-web-plugin.js +10 -7
- package/dist/pi-packages/workflows/browser/workflows.messages.js +32 -0
- package/dist/pi-packages/workflows/browser/worktreeDialog.js +71 -50
- package/dist/pi-packages/workflows/server-plugin.js +137 -23
- package/dist/pi-web-plugins/audio/audioElement.js +61 -0
- package/dist/pi-web-plugins/audio/audioFormats.js +18 -0
- package/dist/pi-web-plugins/audio/byteRange.js +21 -0
- package/dist/pi-web-plugins/audio/package.json +10 -0
- package/dist/pi-web-plugins/audio/pi-web-plugin.js +39 -0
- package/dist/pi-web-plugins/audio/server.js +71 -0
- package/dist/pi-web-plugins/code-highlight/browser/pi-web-plugin.js +4 -4
- package/dist/pi-web-plugins/custom-ui-codex/codex.css +8 -0
- package/dist/pi-web-plugins/custom-ui-codex/fileIcons.js +30 -0
- package/dist/pi-web-plugins/custom-ui-codex/package.json +8 -1
- package/dist/pi-web-plugins/custom-ui-codex/pi-web-plugin.js +8 -8
- package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +236 -259
- package/dist/pi-web-plugins/git/browser/git-panel.js +138 -59
- package/dist/pi-web-plugins/git/browser/git.messages.js +47 -0
- package/dist/pi-web-plugins/git/browser/gitFileIcon.js +71 -0
- package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +21 -4
- package/dist/pi-web-plugins/git/server-plugin.js +5 -3
- package/dist/pi-web-plugins/info/info.messages.js +66 -0
- package/dist/pi-web-plugins/info/infoInternals.js +217 -217
- package/dist/pi-web-plugins/info/pi-web-plugin.js +19 -14
- package/dist/pi-web-plugins/language-spanish/catalogs.js +1896 -0
- package/dist/pi-web-plugins/language-spanish/package.json +14 -0
- package/dist/pi-web-plugins/language-spanish/pi-web-plugin.js +90 -0
- package/dist/pi-web-plugins/language-swedish/catalogs.js +1896 -0
- package/dist/pi-web-plugins/language-swedish/package.json +14 -0
- package/dist/pi-web-plugins/language-swedish/pi-web-plugin.js +89 -0
- package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +4 -4
- package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +71 -66
- package/dist/pi-web-plugins/terminal/bunPtyProvider.js +109 -0
- package/dist/pi-web-plugins/terminal/nodePtyProvider.js +75 -0
- package/dist/pi-web-plugins/terminal/nodePtySpawnHelper.js +36 -0
- package/dist/pi-web-plugins/terminal/ptyComposition.js +12 -0
- package/dist/pi-web-plugins/terminal/ptyProvider.js +2 -0
- package/dist/pi-web-plugins/terminal/server-plugin.js +42 -14
- package/dist/pi-web-plugins/terminal/terminalService.js +218 -76
- package/dist/pi-web-plugins/themes/assets/graphite.css +56 -0
- package/dist/pi-web-plugins/themes/assets/paper.css +56 -0
- package/dist/pi-web-plugins/themes/package.json +21 -0
- package/dist/pi-web-plugins/updates/pi-web-plugin.js +200 -155
- package/dist/pi-web-plugins/updates/updates.messages.js +59 -0
- package/dist/pi-web-plugins/updates/updatesLogic.js +27 -29
- package/dist/pi-web-plugins/workspace-tasks/config.js +18 -19
- package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +13 -8
- package/dist/pi-web-plugins/workspace-tasks/tasks.messages.js +45 -0
- package/dist/pi-web-plugins/workspace-tasks/tasksLocalization.js +33 -0
- package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +56 -42
- package/dist/pi-web-plugins/workspace-tasks/workspaceTasksClient.js +7 -33
- package/dist/pi-web-plugins/zh-cn/catalogs.json +1803 -0
- package/dist/pi-web-plugins/zh-cn/main.json +5 -1
- package/dist/pi-web-plugins/zh-cn/management-errors.json +6 -0
- package/dist/pi-web-plugins/zh-cn/pi-web-plugin.js +13 -4
- package/dist/pi-web-plugins/zh-cn/server.json +1 -1
- package/dist/piWebVersionReport.js +2 -0
- package/dist/piWebVersionReport.js.map +1 -1
- package/dist/plugin-api.d.ts +194 -9
- package/dist/runtimePreflight.js +14 -0
- package/dist/runtimePreflight.js.map +1 -0
- package/dist/server/activity/workspaceActivityService.js +18 -1
- package/dist/server/activity/workspaceActivityService.js.map +1 -1
- package/dist/server/app.js +45 -10
- package/dist/server/app.js.map +1 -1
- package/dist/server/configRoutes.js +117 -139
- package/dist/server/configRoutes.js.map +1 -1
- package/dist/server/configUpdates.js +104 -0
- package/dist/server/configUpdates.js.map +1 -0
- package/dist/server/deploymentIdentity.js +12 -10
- package/dist/server/deploymentIdentity.js.map +1 -1
- package/dist/server/deploymentIdentityRoutes.js +2 -1
- package/dist/server/deploymentIdentityRoutes.js.map +1 -1
- package/dist/server/diagnostics/nodePtyNativeModule.js +0 -18
- package/dist/server/diagnostics/nodePtyNativeModule.js.map +1 -1
- package/dist/server/diagnostics/terminalPrerequisites.js +54 -0
- package/dist/server/diagnostics/terminalPrerequisites.js.map +1 -0
- package/dist/server/index.js +9 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/knownAutoInstallPiPackages.js +6 -0
- package/dist/server/knownAutoInstallPiPackages.js.map +1 -1
- package/dist/server/knownPiPackages.js +4 -4
- package/dist/server/knownPiPackages.js.map +1 -1
- package/dist/server/machines/machineClient.js +39 -17
- package/dist/server/machines/machineClient.js.map +1 -1
- package/dist/server/machines/machinePluginProxyRoutes.js +3 -1
- package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
- package/dist/server/machines/machineProxyRoutes.js +60 -9
- package/dist/server/machines/machineProxyRoutes.js.map +1 -1
- package/dist/server/machines/machineService.js +81 -13
- package/dist/server/machines/machineService.js.map +1 -1
- package/dist/server/machines/machineStore.js.map +1 -1
- package/dist/server/managementEmbed.js +4 -1
- package/dist/server/managementEmbed.js.map +1 -1
- package/dist/server/managementEntryRoutes.js +51 -0
- package/dist/server/managementEntryRoutes.js.map +1 -0
- package/dist/server/managementEntryTickets.js +46 -0
- package/dist/server/managementEntryTickets.js.map +1 -0
- package/dist/server/managementTransportLimits.js +5 -0
- package/dist/server/managementTransportLimits.js.map +1 -0
- package/dist/server/navigationPreferenceRoutes.js +20 -1
- package/dist/server/navigationPreferenceRoutes.js.map +1 -1
- package/dist/server/normalAuth.js +3 -1
- package/dist/server/normalAuth.js.map +1 -1
- package/dist/server/notices/serverNoticeStore.js +4 -0
- package/dist/server/notices/serverNoticeStore.js.map +1 -1
- package/dist/server/piPackageService.js +15 -1
- package/dist/server/piPackageService.js.map +1 -1
- package/dist/server/piWebPluginCatalog.js +23 -11
- package/dist/server/piWebPluginCatalog.js.map +1 -1
- package/dist/server/piWebPluginLifecycle.js +14 -4
- package/dist/server/piWebPluginLifecycle.js.map +1 -1
- package/dist/server/piWebPluginService.js +11 -5
- package/dist/server/piWebPluginService.js.map +1 -1
- package/dist/server/piWebStatus.js +12 -10
- package/dist/server/piWebStatus.js.map +1 -1
- package/dist/server/piWebStatusCache.js +3 -1
- package/dist/server/piWebStatusCache.js.map +1 -1
- package/dist/server/plugins/pluginBackendRegistry.js +229 -4
- package/dist/server/plugins/pluginBackendRegistry.js.map +1 -1
- package/dist/server/plugins/pluginBackendResourceProxyRoutes.js +40 -0
- package/dist/server/plugins/pluginBackendResourceProxyRoutes.js.map +1 -0
- package/dist/server/plugins/pluginBackendResourceResponse.js +84 -0
- package/dist/server/plugins/pluginBackendResourceResponse.js.map +1 -0
- package/dist/server/plugins/projectPluginSettings.js +9 -2
- package/dist/server/plugins/projectPluginSettings.js.map +1 -1
- package/dist/server/plugins/serverPluginCatalogCapability.js +7 -2
- package/dist/server/plugins/serverPluginCatalogCapability.js.map +1 -1
- package/dist/server/plugins/serverPluginPiSessionsCapability.js +16 -3
- package/dist/server/plugins/serverPluginPiSessionsCapability.js.map +1 -1
- package/dist/server/plugins/serverPluginRuntime.js +25 -9
- package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
- package/dist/server/plugins/serverPluginSessionLifecycleCapability.js +87 -0
- package/dist/server/plugins/serverPluginSessionLifecycleCapability.js.map +1 -0
- package/dist/server/requestLogging.js +1 -1
- package/dist/server/requestLogging.js.map +1 -1
- package/dist/server/sessiond/agentHttpDispatcher.js +14 -7
- package/dist/server/sessiond/agentHttpDispatcher.js.map +1 -1
- package/dist/server/sessiond/autoInstallPiPackageSources.js +54 -0
- package/dist/server/sessiond/autoInstallPiPackageSources.js.map +1 -0
- package/dist/server/sessiond/autoInstallPiPackages.js +77 -30
- package/dist/server/sessiond/autoInstallPiPackages.js.map +1 -1
- package/dist/server/sessiond/pluginBackendChannelRoutes.js +3 -13
- package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -1
- package/dist/server/sessiond/pluginBackendResourceRoutes.js +62 -0
- package/dist/server/sessiond/pluginBackendResourceRoutes.js.map +1 -0
- package/dist/server/sessiond/pluginSessionLifecycleRoutes.js +45 -0
- package/dist/server/sessiond/pluginSessionLifecycleRoutes.js.map +1 -0
- package/dist/server/sessiond/sessionProxyRoutes.js +55 -11
- package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
- package/dist/server/sessiond/sessionServiceDependencies.js +3 -0
- package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
- package/dist/server/sessiond.js +46 -15
- package/dist/server/sessiond.js.map +1 -1
- package/dist/server/sessions/askUserDomain.js +24 -2
- package/dist/server/sessions/askUserDomain.js.map +1 -1
- package/dist/server/sessions/askUserTool.js +1 -1
- package/dist/server/sessions/askUserTool.js.map +1 -1
- package/dist/server/sessions/dockerEnvironmentFacts.js +10 -9
- package/dist/server/sessions/dockerEnvironmentFacts.js.map +1 -1
- package/dist/server/sessions/mcpOAuthCredentialAdapter.js +4 -4
- package/dist/server/sessions/mcpOAuthCredentialAdapter.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +490 -257
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/requestHumanInterventionTool.js +27 -0
- package/dist/server/sessions/requestHumanInterventionTool.js.map +1 -0
- package/dist/server/sessions/sendSessionMessageTool.js +32 -0
- package/dist/server/sessions/sendSessionMessageTool.js.map +1 -0
- package/dist/server/sessions/sessionActivityCoordinator.js.map +1 -1
- package/dist/server/sessions/sessionCleanup.js +18 -1
- package/dist/server/sessions/sessionCleanup.js.map +1 -1
- package/dist/server/sessions/sessionCommandService.js +58 -52
- package/dist/server/sessions/sessionCommandService.js.map +1 -1
- package/dist/server/sessions/sessionContentSearch.js +103 -30
- package/dist/server/sessions/sessionContentSearch.js.map +1 -1
- package/dist/server/sessions/sessionIntervention.js +29 -0
- package/dist/server/sessions/sessionIntervention.js.map +1 -0
- package/dist/server/sessions/sessionNameGenerator.js +0 -60
- package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
- package/dist/server/sessions/sessionNotificationStore.js +2 -1
- package/dist/server/sessions/sessionNotificationStore.js.map +1 -1
- package/dist/server/sessions/sessionRoutes.js +25 -1
- package/dist/server/sessions/sessionRoutes.js.map +1 -1
- package/dist/server/sessions/sessionSummaryScanner.js +8 -0
- package/dist/server/sessions/sessionSummaryScanner.js.map +1 -1
- package/dist/server/sessions/sessionTreeProjection.js +108 -97
- package/dist/server/sessions/sessionTreeProjection.js.map +1 -1
- package/dist/server/sessions/sessionUiEvents.js +2 -0
- package/dist/server/sessions/sessionUiEvents.js.map +1 -1
- package/dist/server/sessions/sessionUnreadStore.js +11 -1
- package/dist/server/sessions/sessionUnreadStore.js.map +1 -1
- package/dist/server/sessions/spawnSubsessionTool.js +66 -15
- package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
- package/dist/server/sessions/subsessionCompletionDelivery.js +6 -3
- package/dist/server/sessions/subsessionCompletionDelivery.js.map +1 -1
- package/dist/server/sessions/subsessionCompletionInbox.js +6 -9
- package/dist/server/sessions/subsessionCompletionInbox.js.map +1 -1
- package/dist/server/status/machineStatusService.js +15 -3
- package/dist/server/status/machineStatusService.js.map +1 -1
- package/dist/server/storage/navigationPreferenceStore.js +11 -0
- package/dist/server/storage/navigationPreferenceStore.js.map +1 -1
- package/dist/server/storage/sessionPinStore.js +95 -0
- package/dist/server/storage/sessionPinStore.js.map +1 -0
- package/dist/server/terminals/maintenanceExecutionContext.js +18 -0
- package/dist/server/terminals/maintenanceExecutionContext.js.map +1 -0
- package/dist/server/terminals/maintenanceTerminalCapability.js +25 -0
- package/dist/server/terminals/maintenanceTerminalCapability.js.map +1 -0
- package/dist/server/terminals/requiredTerminalService.js.map +1 -1
- package/dist/server/terminals/terminalStatusRoutes.js +22 -0
- package/dist/server/terminals/terminalStatusRoutes.js.map +1 -0
- package/dist/server/themeBootstrap.js +123 -0
- package/dist/server/themeBootstrap.js.map +1 -0
- package/dist/server/themeCatalog.js +206 -0
- package/dist/server/themeCatalog.js.map +1 -0
- package/dist/server/themeMetadata.js +74 -0
- package/dist/server/themeMetadata.js.map +1 -0
- package/dist/server/webSocketBridge.js +16 -12
- package/dist/server/webSocketBridge.js.map +1 -1
- package/dist/server/webSocketPayloadLimit.js +17 -0
- package/dist/server/webSocketPayloadLimit.js.map +1 -0
- package/dist/server/workspaces/effectivePathAccess.js +1 -1
- package/dist/server/workspaces/effectivePathAccess.js.map +1 -1
- package/dist/server/workspaces/projectPiWebConfig.js +30 -7
- package/dist/server/workspaces/projectPiWebConfig.js.map +1 -1
- package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js +2 -0
- package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js.map +1 -1
- package/dist/server/workspaces/workspaceProviderRegistry.js +6 -2
- package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -1
- package/dist/server/workspaces/workspaceRemovalService.js +6 -4
- package/dist/server/workspaces/workspaceRemovalService.js.map +1 -1
- package/dist/server-plugin-api.d.ts +39 -1
- package/dist/server-plugin-api.js +18 -3
- package/dist/server-plugin-api.js.map +1 -1
- package/dist/sessiond/sessionDaemonClient.js +7 -1
- package/dist/sessiond/sessionDaemonClient.js.map +1 -1
- package/dist/sessiond/sessionDaemonTerminalStatus.js +27 -0
- package/dist/sessiond/sessionDaemonTerminalStatus.js.map +1 -0
- package/dist/shared/apiTypes.js +4 -0
- package/dist/shared/apiTypes.js.map +1 -1
- package/dist/shared/capabilities.js +6 -0
- package/dist/shared/capabilities.js.map +1 -1
- package/dist/shared/commandOutputPresentation.js +17 -0
- package/dist/shared/commandOutputPresentation.js.map +1 -0
- package/dist/shared/commandResultPresentation.js +51 -0
- package/dist/shared/commandResultPresentation.js.map +1 -0
- package/dist/shared/configResolution.js +99 -0
- package/dist/shared/configResolution.js.map +1 -0
- package/dist/shared/defaultLocalization.js +60 -0
- package/dist/shared/defaultLocalization.js.map +1 -0
- package/dist/shared/federatedRoutes.js +11 -1
- package/dist/shared/federatedRoutes.js.map +1 -1
- package/dist/shared/installationName.js +21 -0
- package/dist/shared/installationName.js.map +1 -0
- package/dist/shared/localization.d.ts +55 -0
- package/dist/shared/localization.js +4 -0
- package/dist/shared/machineStatus.js +2 -0
- package/dist/shared/machineStatus.js.map +1 -1
- package/dist/shared/piWebConfigParsing.js +16 -30
- package/dist/shared/piWebConfigParsing.js.map +1 -1
- package/dist/shared/piWebRuntime.js +17 -0
- package/dist/shared/piWebRuntime.js.map +1 -0
- package/dist/shared/piWebStatusParsing.js +5 -0
- package/dist/shared/piWebStatusParsing.js.map +1 -1
- package/dist/shared/pluginApiTypes.d.ts +35 -7
- package/dist/shared/pluginBackendProtocol.js +24 -0
- package/dist/shared/pluginBackendProtocol.js.map +1 -1
- package/dist/shared/pluginCatalogTypes.d.ts +8 -0
- package/dist/shared/pluginCatalogTypes.js +15 -0
- package/dist/shared/pluginCatalogTypes.js.map +1 -1
- package/dist/shared/pluginResourceMetadata.js +58 -0
- package/dist/shared/pluginResourceMetadata.js.map +1 -0
- package/dist/shared/pluginSessionLifecycleTypes.d.ts +24 -0
- package/dist/shared/pluginSessionLifecycleTypes.js +56 -0
- package/dist/shared/pluginSessionLifecycleTypes.js.map +1 -0
- package/dist/shared/serverNoticePresentation.d.ts +9 -0
- package/dist/shared/serverNoticePresentation.js +12 -0
- package/dist/shared/serverNoticePresentation.js.map +1 -0
- package/dist/shared/sessionActivityPresentation.js +73 -0
- package/dist/shared/sessionActivityPresentation.js.map +1 -0
- package/dist/shared/sessionNotificationPresentation.js +16 -0
- package/dist/shared/sessionNotificationPresentation.js.map +1 -0
- package/dist/shared/terminalCommandRun.js +4 -0
- package/dist/shared/terminalCommandRun.js.map +1 -1
- package/dist/shared/terminalServiceStatus.js +14 -0
- package/dist/shared/terminalServiceStatus.js.map +1 -0
- package/dist/shared/terminalTitlePresentation.d.ts +10 -0
- package/dist/shared/terminalTitlePresentation.js +13 -0
- package/dist/shared/terminalTitlePresentation.js.map +1 -0
- package/dist/shared/themeCatalog.js +2 -0
- package/dist/shared/themeCatalog.js.map +1 -0
- package/dist/shared/themePreference.js +1 -0
- package/dist/shared/themePreference.js.map +1 -1
- package/dist/shared/thinkingLevels.d.ts +29 -0
- package/dist/shared/thinkingLevels.js +6 -4
- package/dist/shared/thinkingLevels.js.map +1 -1
- package/dist/shared/versionCheckPolicy.js +10 -0
- package/dist/shared/versionCheckPolicy.js.map +1 -0
- package/dist/shared/workspaceRemovalPresentation.d.ts +8 -0
- package/dist/shared/workspaceRemovalPresentation.js +10 -0
- package/dist/shared/workspaceRemovalPresentation.js.map +1 -0
- package/docs/README.md +7 -3
- package/docs/assets/pi-web-desktop-graphite.png +0 -0
- package/docs/assets/pi-web-desktop-paper.png +0 -0
- package/docs/assets/pi-web-desktop-pi-web-dark.png +0 -0
- package/docs/assets/pi-web-desktop-pi-web-light.png +0 -0
- package/docs/assets/pi-web-desktop.png +0 -0
- package/docs/assets/pi-web-mobile-graphite.png +0 -0
- package/docs/assets/pi-web-mobile-paper.png +0 -0
- package/docs/assets/pi-web-mobile-pi-web-dark.png +0 -0
- package/docs/assets/pi-web-mobile-pi-web-light.png +0 -0
- package/docs/assets/pi-web-mobile-themes.gif +0 -0
- package/docs/assets/pi-web-mobile.png +0 -0
- package/docs/assets/pi-web-tablet-graphite.png +0 -0
- package/docs/assets/pi-web-tablet-paper.png +0 -0
- package/docs/assets/pi-web-tablet-pi-web-dark.png +0 -0
- package/docs/assets/pi-web-tablet-pi-web-light.png +0 -0
- package/docs/assets/pi-web-tablet-themes.gif +0 -0
- package/docs/assets/pi-web-tablet.png +0 -0
- package/docs/assets/pi-web-themes.gif +0 -0
- package/docs/config.md +193 -55
- package/docs/plugins.md +350 -21
- package/docs/scheduled-tasks.md +127 -0
- package/package.json +43 -19
- package/dist/client/assets/CommandPicker-8oDe6AaV.js +0 -70
- package/dist/client/assets/PiWebApp-TCQVYghs.js +0 -3761
- package/dist/client/assets/SettingsDialog-DFUpwUyp.js +0 -1015
- package/dist/client/assets/index-DzMPXVth.js +0 -2
- package/dist/client/assets/managementEmbed-Bx8Mwzdw.js +0 -2
- package/dist/client/assets/preload-helper-XpATwJ5c.js +0 -1
- package/dist/pi-packages/captains-log/README.md +0 -11
- package/dist/pi-packages/captains-log/dist/browser/channelProtocol.js +0 -29
- package/dist/pi-packages/captains-log/dist/browser/index.js +0 -143
- package/dist/pi-packages/captains-log/dist/browser/markdown.js +0 -68
- package/dist/pi-packages/captains-log/dist/browser/panel.js +0 -148
- package/dist/pi-packages/captains-log/dist/browser/protocol.js +0 -26
- package/dist/pi-packages/captains-log/dist/companion.js +0 -126
- package/dist/pi-packages/captains-log/dist/roundtrip.js +0 -62
- package/dist/pi-packages/captains-log/dist/server.js +0 -210
- package/dist/pi-packages/captains-log/dist/store.js +0 -75
- package/dist/pi-packages/captains-log/docs/usage.md +0 -29
- package/dist/pi-packages/captains-log/i18n.js +0 -7
- package/dist/pi-packages/captains-log/package.json +0 -35
- package/dist/pi-packages/captains-log/tsconfig.json +0 -21
- package/dist/pi-packages/captains-log/vite.config.mjs +0 -28
- package/examples/session-bridge-plugin/README.md +0 -20
- package/examples/session-bridge-plugin/docs/usage.md +0 -54
- package/examples/session-bridge-plugin/package.json +0 -26
- package/examples/session-bridge-plugin/src/browser/index.ts +0 -87
- package/examples/session-bridge-plugin/src/browser/protocol.ts +0 -24
- package/examples/session-bridge-plugin/src/companion.ts +0 -65
- package/examples/session-bridge-plugin/src/reviewRun.ts +0 -39
- package/examples/session-bridge-plugin/src/server.ts +0 -85
- package/examples/session-bridge-plugin/src/store.ts +0 -80
- package/examples/session-bridge-plugin/tsconfig.json +0 -21
- /package/dist/{client/assets/classic-CyM97Akm.css → pi-web-plugins/themes/assets/classic.css} +0 -0
- /package/dist/{client/assets/pi-web-dark-D_KtbM95.css → pi-web-plugins/themes/assets/pi-web-dark.css} +0 -0
- /package/dist/{client/assets/pi-web-light-DSNLMIBI.css → pi-web-plugins/themes/assets/pi-web-light.css} +0 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// Generated from pi-web-plugins/git/browser/git-panel.ts. Do not edit directly.
|
|
2
2
|
import { t } from "./i18n.js";
|
|
3
3
|
import { GIT_DIFF_OPERATION, GIT_STATUS_OPERATION, parseGitDiffResponse, parseGitStatusResponse, } from "./git-contract.js";
|
|
4
|
+
import { defineGitFileIconElement } from "./gitFileIcon.js";
|
|
4
5
|
import { buildGitFileList } from "./gitFileList.js";
|
|
5
6
|
import { buildGitFileTree, collectGitFileTreeDirectoryPaths } from "./gitFileTree.js";
|
|
6
7
|
import { readGitFileView, writeGitFileView } from "./gitFileViewPreference.js";
|
|
7
8
|
import { createGitDiffRoute } from "./gitRoute.js";
|
|
8
9
|
import { parseUnifiedDiff } from "./unifiedDiff.js";
|
|
10
|
+
import definitions from "./git.messages.js";
|
|
9
11
|
const GIT_PANEL_LOCAL_ID = "workspace.git";
|
|
10
12
|
const GIT_POLL_INTERVAL_MS = 8_000;
|
|
11
13
|
const LARGE_GIT_POLL_INTERVAL_MS = 30_000;
|
|
@@ -17,9 +19,10 @@ const GIT_WORKSPACE_STATE_LIMIT = 8;
|
|
|
17
19
|
const activityElementTag = "pi-web-git-panel-activity";
|
|
18
20
|
const EMPTY_LIST_MODEL = { submodules: [], files: [] };
|
|
19
21
|
const EMPTY_VIEW_STATE = { nodes: [], listModel: EMPTY_LIST_MODEL, expandablePaths: [] };
|
|
20
|
-
export function createGitBrowserContributions(sourcePluginId, runtimePluginId, html, svg, stylesheetIntegration
|
|
22
|
+
export function createGitBrowserContributions(sourcePluginId, runtimePluginId, html, svg, stylesheetIntegration, localization, fileIcons) {
|
|
21
23
|
const panelId = `${runtimePluginId}:${GIT_PANEL_LOCAL_ID}`;
|
|
22
|
-
const controller = new GitUiController(sourcePluginId, createGitDiffRoute(panelId));
|
|
24
|
+
const controller = new GitUiController(sourcePluginId, createGitDiffRoute(panelId), localization, fileIcons);
|
|
25
|
+
defineGitFileIconElement();
|
|
23
26
|
defineGitPanelActivityElement();
|
|
24
27
|
return {
|
|
25
28
|
actions: createGitActions(panelId, controller),
|
|
@@ -29,15 +32,22 @@ export function createGitBrowserContributions(sourcePluginId, runtimePluginId, h
|
|
|
29
32
|
class GitUiController {
|
|
30
33
|
sourcePluginId;
|
|
31
34
|
route;
|
|
35
|
+
localization;
|
|
36
|
+
getFileIcons;
|
|
37
|
+
messages;
|
|
32
38
|
states = new Map();
|
|
33
39
|
activeWorkspaceKey;
|
|
34
40
|
connectedWorkspaceKey;
|
|
35
41
|
routeNavigationPending = true;
|
|
36
42
|
view = readGitFileView();
|
|
37
|
-
constructor(sourcePluginId, route) {
|
|
43
|
+
constructor(sourcePluginId, route, localization, getFileIcons) {
|
|
38
44
|
this.sourcePluginId = sourcePluginId;
|
|
39
45
|
this.route = route;
|
|
46
|
+
this.localization = localization;
|
|
47
|
+
this.getFileIcons = getFileIcons;
|
|
48
|
+
this.messages = localization.registerMessages("panel", definitions);
|
|
40
49
|
}
|
|
50
|
+
get fileIcons() { return this.getFileIcons(); }
|
|
41
51
|
canInspectWorkspace(workspace) {
|
|
42
52
|
return workspace !== undefined && (workspace.provider === undefined || workspace.provider.pluginId === this.sourcePluginId);
|
|
43
53
|
}
|
|
@@ -134,7 +144,7 @@ class GitUiController {
|
|
|
134
144
|
})
|
|
135
145
|
.catch((error) => {
|
|
136
146
|
if (state.retained)
|
|
137
|
-
state.error =
|
|
147
|
+
state.error = gitError(error);
|
|
138
148
|
})
|
|
139
149
|
.finally(() => {
|
|
140
150
|
if (state.statusRequest !== request)
|
|
@@ -318,7 +328,7 @@ class GitUiController {
|
|
|
318
328
|
catch (error) {
|
|
319
329
|
if (!state.retained || state.diffRequestSequence !== sequence || state.selectedDiffPath !== path)
|
|
320
330
|
return;
|
|
321
|
-
state.error =
|
|
331
|
+
state.error = gitError(error);
|
|
322
332
|
}
|
|
323
333
|
finally {
|
|
324
334
|
if (state.retained && state.diffRequestSequence === sequence && state.selectedDiffPath === path) {
|
|
@@ -340,19 +350,19 @@ function createGitActions(panelId, controller) {
|
|
|
340
350
|
return [
|
|
341
351
|
{
|
|
342
352
|
id: "view.git",
|
|
343
|
-
title
|
|
353
|
+
get title() { return controller.messages.t("goToGit"); },
|
|
344
354
|
shortcut: "mod+3",
|
|
345
355
|
shortcutAliases: ["core:view.git"],
|
|
346
|
-
group
|
|
356
|
+
get group() { return controller.messages.t("navigation"); },
|
|
347
357
|
enabled: hasGitWorkspace,
|
|
348
358
|
run: (context) => { context.selectWorkspaceTool(panelId); },
|
|
349
359
|
},
|
|
350
360
|
{
|
|
351
361
|
id: "workspace.refresh-git",
|
|
352
|
-
title
|
|
362
|
+
get title() { return controller.messages.t("refreshGit"); },
|
|
353
363
|
shortcut: "mod+shift+g",
|
|
354
364
|
shortcutAliases: ["core:workspace.refresh-git"],
|
|
355
|
-
group
|
|
365
|
+
get group() { return controller.messages.t("workspace"); },
|
|
356
366
|
enabled: hasGitWorkspace,
|
|
357
367
|
run: (context) => context.refreshWorkspacePanels(panelId),
|
|
358
368
|
},
|
|
@@ -361,7 +371,7 @@ function createGitActions(panelId, controller) {
|
|
|
361
371
|
function createGitPanel(html, svg, controller, stylesheetIntegration) {
|
|
362
372
|
return {
|
|
363
373
|
id: GIT_PANEL_LOCAL_ID,
|
|
364
|
-
title
|
|
374
|
+
get title() { return controller.messages.t("git"); },
|
|
365
375
|
icon: svg `
|
|
366
376
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
367
377
|
<circle cx="6" cy="6" r="2"></circle>
|
|
@@ -382,7 +392,7 @@ function createGitPanel(html, svg, controller, stylesheetIntegration) {
|
|
|
382
392
|
}
|
|
383
393
|
function requestGitBackend(context, operation, input) {
|
|
384
394
|
if (context.peer?.request === undefined) {
|
|
385
|
-
return Promise.reject(new
|
|
395
|
+
return Promise.reject(new GitBackendUnavailableError());
|
|
386
396
|
}
|
|
387
397
|
return context.peer.request(operation, input);
|
|
388
398
|
}
|
|
@@ -392,30 +402,30 @@ function renderGitPanel(html, controller, context, stylesheetIntegration) {
|
|
|
392
402
|
return html `
|
|
393
403
|
<section class="git-panel">
|
|
394
404
|
<style data-git-styles .textContent=${gitPanelStyles}></style>
|
|
395
|
-
<pi-web-git-panel-activity .stylesheetIntegration=${stylesheetIntegration} .controller=${controller} .context=${context}></pi-web-git-panel-activity>
|
|
405
|
+
<pi-web-git-panel-activity .fileIcons=${controller.fileIcons} .stylesheetIntegration=${stylesheetIntegration} .localization=${controller.localization} .controller=${controller} .context=${context}></pi-web-git-panel-activity>
|
|
396
406
|
<section class="ui-toolbar git-toolbar">
|
|
397
|
-
<strong
|
|
398
|
-
${state.stale ? html `<span class="git-stale">${t("
|
|
407
|
+
<strong>${controller.messages.t("git")}</strong>
|
|
408
|
+
${state.stale ? html `<span class="git-stale">${controller.messages.t("stale")}</span>` : null}
|
|
399
409
|
<div class="ui-toolbar-group git-toolbar-actions">
|
|
400
410
|
${viewState.expandablePaths.length === 0 ? null : renderExpandCollapseAll(html, controller, context, state, viewState.expandablePaths)}
|
|
401
411
|
${renderViewToggle(html, controller, context)}
|
|
402
|
-
<button
|
|
412
|
+
<button type="button" class="ui-button" ?disabled=${state.statusLoading} @click=${() => { void controller.refresh(context); }}>${controller.messages.t("refresh")}</button>
|
|
403
413
|
</div>
|
|
404
414
|
</section>
|
|
405
|
-
${state.error === undefined ? null : html `<div class="git-error" role="alert">${state.error}</div>`}
|
|
415
|
+
${state.error === undefined ? null : html `<div class="git-error" role="alert">${controller.messages.t(state.error)}</div>`}
|
|
406
416
|
${state.status?.truncated === true ? html `<div class="git-warning" role="status">${t("ui.main.1634590c49b8", "Git status output was too large; the file list was truncated.")}</div>` : null}
|
|
407
417
|
<section class="git-split">
|
|
408
418
|
<div class="ui-file-list git-file-list">${renderFileList(html, controller, context, state, viewState)}</div>
|
|
409
|
-
<div class="git-viewer">${renderDiffViewer(html, state)}</div>
|
|
419
|
+
<div class="git-viewer">${renderDiffViewer(html, state, controller)}</div>
|
|
410
420
|
</section>
|
|
411
421
|
</section>
|
|
412
422
|
`;
|
|
413
423
|
}
|
|
414
424
|
function renderViewToggle(html, controller, context) {
|
|
415
425
|
return html `
|
|
416
|
-
<div class="ui-toolbar-group git-view-toggle" role="group" aria-label
|
|
417
|
-
${renderViewToggleButton(html, controller, context, "list", t("
|
|
418
|
-
${renderViewToggleButton(html, controller, context, "tree", t("
|
|
426
|
+
<div class="ui-toolbar-group git-view-toggle" role="group" aria-label=${controller.messages.t("changedFilesView")}>
|
|
427
|
+
${renderViewToggleButton(html, controller, context, "list", controller.messages.t("list"))}
|
|
428
|
+
${renderViewToggleButton(html, controller, context, "tree", controller.messages.t("tree"))}
|
|
419
429
|
</div>
|
|
420
430
|
`;
|
|
421
431
|
}
|
|
@@ -425,17 +435,17 @@ function renderViewToggleButton(html, controller, context, view, label) {
|
|
|
425
435
|
}
|
|
426
436
|
function renderExpandCollapseAll(html, controller, context, state, expandablePaths) {
|
|
427
437
|
const allExpanded = expandablePaths.every((path) => state.expandedDirectories.has(path));
|
|
428
|
-
return html `<button
|
|
438
|
+
return html `<button type="button" class="ui-button" @click=${() => { controller.toggleExpandAll(context, expandablePaths, allExpanded); }}>${controller.messages.t(allExpanded ? "collapseAll" : "expandAll")}</button>`;
|
|
429
439
|
}
|
|
430
440
|
function renderFileList(html, controller, context, state, viewState) {
|
|
431
441
|
const status = state.status;
|
|
432
442
|
if (status === undefined)
|
|
433
|
-
return html `<p class="git-muted">${state.error === undefined ?
|
|
443
|
+
return html `<p class="git-muted">${controller.messages.t(state.error === undefined ? "loadingStatus" : "statusUnavailable")}</p>`;
|
|
434
444
|
if (!status.isGitRepo)
|
|
435
|
-
return html `<p class="git-muted">${t("
|
|
436
|
-
const summary = html `<p class="git-summary">${gitSummary(status)}</p>`;
|
|
445
|
+
return html `<p class="git-muted">${controller.messages.t("notRepository")}</p>`;
|
|
446
|
+
const summary = html `<p class="git-summary">${gitSummary(html, status, controller)}</p>`;
|
|
437
447
|
if (status.files.length === 0)
|
|
438
|
-
return html `${summary}<p class="git-muted">${t("
|
|
448
|
+
return html `${summary}<p class="git-muted">${controller.messages.t("noChanges")}</p>`;
|
|
439
449
|
state.remainingRows = state.visibleFileLimit;
|
|
440
450
|
state.hasMoreRows = status.files.length > state.visibleFileLimit;
|
|
441
451
|
const body = controller.currentView() === "tree"
|
|
@@ -460,7 +470,7 @@ function renderSubmoduleGroup(html, controller, context, state, group) {
|
|
|
460
470
|
return html `
|
|
461
471
|
<button type="button" class="ui-button ui-file-row" style="--depth:0" title=${group.path} aria-expanded=${String(expanded)} @click=${() => { controller.toggleDirectory(context, group.path); }}>
|
|
462
472
|
<span class="ui-file-leading" aria-hidden="true">${expanded ? "▾" : "▸"}</span>
|
|
463
|
-
<span class="ui-file-label">${group.name}
|
|
473
|
+
<span class="ui-file-label"><bdi dir="ltr">${group.name}</bdi>${submoduleBadge(html, controller)}</span>
|
|
464
474
|
</button>
|
|
465
475
|
${expanded ? html `
|
|
466
476
|
${group.pointer === undefined ? null : renderSelectableRow(html, controller, context, state, group.path, group.pointer.name, group.pointer.file, 1)}
|
|
@@ -479,7 +489,7 @@ function renderTreeNode(html, controller, context, state, node, depth) {
|
|
|
479
489
|
return html `
|
|
480
490
|
<button type="button" class="ui-button ui-file-row" style=${`--depth:${String(depth)}`} title=${node.path} aria-expanded=${String(expanded)} @click=${() => { controller.toggleDirectory(context, node.path); }}>
|
|
481
491
|
<span class="ui-file-leading" aria-hidden="true">${expanded ? "▾" : "▸"}</span>
|
|
482
|
-
<span class="ui-file-label">${node.name}
|
|
492
|
+
<span class="ui-file-label"><bdi dir="ltr">${node.name}</bdi>${node.isSubmodule === true ? submoduleBadge(html, controller) : null}</span>
|
|
483
493
|
</button>
|
|
484
494
|
${expanded ? node.children.map((child) => renderTreeNode(html, controller, context, state, child, depth + 1)) : null}
|
|
485
495
|
`;
|
|
@@ -493,25 +503,38 @@ function renderSelectableRow(html, controller, context, state, path, label, file
|
|
|
493
503
|
if (!consumeGitRow(state))
|
|
494
504
|
return html ``;
|
|
495
505
|
const selected = state.selectedDiffPath === path;
|
|
506
|
+
const status = file.index === "conflicted" || file.workingTree === "conflicted"
|
|
507
|
+
? "conflicted" : file.workingTree !== "unmodified" ? file.workingTree : file.index;
|
|
508
|
+
const description = controller.messages.t("fileState", { state: status });
|
|
509
|
+
const staged = file.index !== "unmodified";
|
|
510
|
+
const unstaged = file.workingTree !== "unmodified";
|
|
511
|
+
const staging = status === "conflicted" || status === "untracked" || status === "ignored"
|
|
512
|
+
? undefined : staged && unstaged ? "bothChanges" : staged ? "stagedChanges" : "unstagedChanges";
|
|
496
513
|
return html `
|
|
497
|
-
<button type="button" class=${selected ? "ui-button ui-file-row selected" : "ui-button ui-file-row"} style=${`--depth:${String(depth)}`} title=${path} aria-current=${selected ? "page" : "false"} @click=${() => { controller.selectDiff(context, path); }}>
|
|
498
|
-
<span class="ui-file-leading" aria-hidden="true"><
|
|
499
|
-
<span class="ui-file-label">${label}</span>
|
|
500
|
-
<span class="
|
|
514
|
+
<button type="button" class=${selected ? "ui-button ui-file-row selected" : "ui-button ui-file-row"} data-git-state=${status} style=${`--depth:${String(depth)}`} title=${path} aria-current=${selected ? "page" : "false"} @click=${() => { controller.selectDiff(context, path); }}>
|
|
515
|
+
<span class="ui-file-leading" aria-hidden="true"><pi-web-git-file-icon .url=${controller.fileIcons?.resolveIcon(file.path)}></pi-web-git-file-icon></span>
|
|
516
|
+
<span class="ui-file-label"><bdi dir="ltr">${label}</bdi></span>
|
|
517
|
+
<span class="git-file-details">
|
|
518
|
+
${staging === undefined ? null : html `<span class="git-staging" title=${controller.messages.t("stagingDetail", {
|
|
519
|
+
index: controller.messages.t("fileState", { state: file.index }),
|
|
520
|
+
workingTree: controller.messages.t("fileState", { state: file.workingTree }),
|
|
521
|
+
})}>${controller.messages.t(staging)}</span>`}
|
|
522
|
+
<span class="ui-file-meta git-status" title=${description} aria-label=${description}>${status === "conflicted" ? description : stateLabel(status)}</span>
|
|
523
|
+
</span>
|
|
501
524
|
</button>
|
|
502
525
|
`;
|
|
503
526
|
}
|
|
504
|
-
function renderDiffViewer(html, state) {
|
|
527
|
+
function renderDiffViewer(html, state, controller) {
|
|
505
528
|
if (state.selectedDiffPath === undefined)
|
|
506
|
-
return html `<p class="git-muted">${t("
|
|
529
|
+
return html `<p class="git-muted">${controller.messages.t("selectFile")}</p>`;
|
|
507
530
|
const unstaged = state.selectedDiff;
|
|
508
531
|
const staged = state.selectedStagedDiff;
|
|
509
532
|
if (unstaged === undefined || staged === undefined)
|
|
510
|
-
return html `<p class="git-muted">${t("
|
|
533
|
+
return html `<p class="git-muted">${controller.messages.t("loadingDiff")}</p>`;
|
|
511
534
|
const diffs = [staged, unstaged].filter((diff) => diff.response.diff !== "");
|
|
512
535
|
if (diffs.length === 0)
|
|
513
|
-
return html `<p class="git-muted">${t("
|
|
514
|
-
return html `<div class=${diffs.length === 1 ? "git-diffs is-single" : "git-diffs"}>${diffs.map((diff) => renderDiffSection(html, diff))}</div>`;
|
|
536
|
+
return html `<p class="git-muted">${controller.messages.t("noStagedDiff")}</p>`;
|
|
537
|
+
return html `<div class=${diffs.length === 1 ? "git-diffs is-single" : "git-diffs"}>${diffs.map((diff) => renderDiffSection(html, diff, controller))}</div>`;
|
|
515
538
|
}
|
|
516
539
|
function consumeGitRow(state) {
|
|
517
540
|
if (state.remainingRows > 0) {
|
|
@@ -521,27 +544,27 @@ function consumeGitRow(state) {
|
|
|
521
544
|
state.hasMoreRows = true;
|
|
522
545
|
return false;
|
|
523
546
|
}
|
|
524
|
-
function renderDiffSection(html, view) {
|
|
547
|
+
function renderDiffSection(html, view, controller) {
|
|
525
548
|
const diff = view.response;
|
|
526
549
|
const lines = view.lines ??= parseUnifiedDiff(diff.diff);
|
|
527
550
|
return html `
|
|
528
551
|
<section class="git-diff-section">
|
|
529
|
-
<div class="git-viewer-header"><strong>${diff.path ?? t("
|
|
530
|
-
${lines.length === 0 ? html `<p class="git-muted">${t("
|
|
552
|
+
<div class="git-viewer-header"><strong><bdi dir="ltr">${diff.path ?? controller.messages.t("diff")}</bdi></strong><small>${controller.messages.t("diffState", { staged: diff.staged ? "yes" : "no", truncated: diff.truncated ? "yes" : "no" })}</small></div>
|
|
553
|
+
${lines.length === 0 ? html `<p class="git-muted">${controller.messages.t("noDiff")}</p>` : html `
|
|
531
554
|
<div class="git-diff-scroller">
|
|
532
|
-
<div class="git-diff-grid" role="table" aria-label
|
|
533
|
-
${lines.map((line) => renderDiffLine(html, line))}
|
|
555
|
+
<div class="git-diff-grid" role="table" aria-label=${controller.messages.t("unifiedDiff")} dir="ltr">
|
|
556
|
+
${lines.map((line) => renderDiffLine(html, line, controller))}
|
|
534
557
|
</div>
|
|
535
558
|
</div>
|
|
536
559
|
`}
|
|
537
560
|
</section>
|
|
538
561
|
`;
|
|
539
562
|
}
|
|
540
|
-
function renderDiffLine(html, line) {
|
|
563
|
+
function renderDiffLine(html, line, controller) {
|
|
541
564
|
return html `
|
|
542
565
|
<div class="git-diff-line" role="row">
|
|
543
|
-
<span class=${`git-diff-cell git-line-number ${line.kind}`} role="cell">${formatLineNumber(line.oldLineNumber)}</span>
|
|
544
|
-
<span class=${`git-diff-cell git-line-number ${line.kind}`} role="cell">${formatLineNumber(line.newLineNumber)}</span>
|
|
566
|
+
<span class=${`git-diff-cell git-line-number ${line.kind}`} role="cell">${formatLineNumber(line.oldLineNumber, controller)}</span>
|
|
567
|
+
<span class=${`git-diff-cell git-line-number ${line.kind}`} role="cell">${formatLineNumber(line.newLineNumber, controller)}</span>
|
|
545
568
|
<span class=${`git-diff-cell git-prefix ${line.kind}`} role="cell">${line.prefix}</span>
|
|
546
569
|
<span class=${`git-diff-cell git-content ${line.kind}`} role="cell">${renderDiffSpans(html, line.spans)}</span>
|
|
547
570
|
</div>
|
|
@@ -594,6 +617,36 @@ function defineGitPanelActivityElement() {
|
|
|
594
617
|
pollTimer;
|
|
595
618
|
integration;
|
|
596
619
|
releaseStyles;
|
|
620
|
+
localizationValue;
|
|
621
|
+
releaseLocalization;
|
|
622
|
+
icons;
|
|
623
|
+
releaseIcons;
|
|
624
|
+
set fileIcons(value) {
|
|
625
|
+
if (value === this.icons)
|
|
626
|
+
return;
|
|
627
|
+
this.releaseIcons?.();
|
|
628
|
+
this.releaseIcons = undefined;
|
|
629
|
+
this.icons = value;
|
|
630
|
+
this.subscribeIcons();
|
|
631
|
+
}
|
|
632
|
+
subscribeIcons() {
|
|
633
|
+
if (!this.isConnected || this.releaseIcons !== undefined)
|
|
634
|
+
return;
|
|
635
|
+
this.releaseIcons = this.icons?.subscribe(() => this.contextValue?.host.requestRender());
|
|
636
|
+
}
|
|
637
|
+
set localization(value) {
|
|
638
|
+
if (this.localizationValue === value)
|
|
639
|
+
return;
|
|
640
|
+
this.releaseLocalization?.();
|
|
641
|
+
this.releaseLocalization = undefined;
|
|
642
|
+
this.localizationValue = value;
|
|
643
|
+
this.subscribeLocalization();
|
|
644
|
+
}
|
|
645
|
+
subscribeLocalization() {
|
|
646
|
+
if (!this.isConnected || this.releaseLocalization !== undefined)
|
|
647
|
+
return;
|
|
648
|
+
this.releaseLocalization = this.localizationValue?.subscribe(() => this.contextValue?.host.requestRender());
|
|
649
|
+
}
|
|
597
650
|
set stylesheetIntegration(value) {
|
|
598
651
|
if (this.integration === value)
|
|
599
652
|
return;
|
|
@@ -624,11 +677,18 @@ function defineGitPanelActivityElement() {
|
|
|
624
677
|
}
|
|
625
678
|
connectedCallback() {
|
|
626
679
|
this.registerStyles();
|
|
680
|
+
this.subscribeLocalization();
|
|
681
|
+
this.subscribeIcons();
|
|
682
|
+
this.contextValue?.host.requestRender();
|
|
627
683
|
window.addEventListener("popstate", this.onPopState);
|
|
628
684
|
document.addEventListener("visibilitychange", this.onVisibilityChange);
|
|
629
685
|
this.restart();
|
|
630
686
|
}
|
|
631
687
|
disconnectedCallback() {
|
|
688
|
+
this.releaseIcons?.();
|
|
689
|
+
this.releaseIcons = undefined;
|
|
690
|
+
this.releaseLocalization?.();
|
|
691
|
+
this.releaseLocalization = undefined;
|
|
632
692
|
this.releaseStyles?.();
|
|
633
693
|
this.releaseStyles = undefined;
|
|
634
694
|
window.removeEventListener("popstate", this.onPopState);
|
|
@@ -666,21 +726,26 @@ function defineGitPanelActivityElement() {
|
|
|
666
726
|
}
|
|
667
727
|
customElements.define(activityElementTag, GitPanelActivityElement);
|
|
668
728
|
}
|
|
669
|
-
function submoduleBadge(html) {
|
|
670
|
-
return html `<span class="submodule-badge">${t("
|
|
729
|
+
function submoduleBadge(html, controller) {
|
|
730
|
+
return html `<span class="submodule-badge">${controller.messages.t("submodule")}</span>`;
|
|
671
731
|
}
|
|
672
|
-
function gitSummary(status) {
|
|
673
|
-
const branch = status.branch ?? t("
|
|
732
|
+
function gitSummary(html, status, controller) {
|
|
733
|
+
const branch = status.branch ?? controller.messages.t("detached");
|
|
674
734
|
const ahead = status.ahead ?? 0;
|
|
675
735
|
const behind = status.behind ?? 0;
|
|
676
|
-
return ahead === 0 && behind === 0
|
|
736
|
+
return ahead === 0 && behind === 0
|
|
737
|
+
? html `<bdi dir="ltr">${branch}</bdi>`
|
|
738
|
+
: controller.messages.rich("branchSummary", { branch, ahead, behind, name: (parts) => html `<bdi dir="ltr">${parts}</bdi>` });
|
|
677
739
|
}
|
|
678
|
-
function stateLabel(
|
|
679
|
-
|
|
680
|
-
|
|
740
|
+
function stateLabel(state) {
|
|
741
|
+
if (state === "untracked")
|
|
742
|
+
return "?";
|
|
743
|
+
if (state === "ignored")
|
|
744
|
+
return "!";
|
|
745
|
+
return state.slice(0, 1).toUpperCase();
|
|
681
746
|
}
|
|
682
|
-
function formatLineNumber(lineNumber) {
|
|
683
|
-
return lineNumber === undefined ? "" :
|
|
747
|
+
function formatLineNumber(lineNumber, controller) {
|
|
748
|
+
return lineNumber === undefined ? "" : controller.localization.number(lineNumber, { useGrouping: false });
|
|
684
749
|
}
|
|
685
750
|
function createDiffView(response, previous) {
|
|
686
751
|
if (previous?.response.hash !== response.hash)
|
|
@@ -693,16 +758,21 @@ function createDiffView(response, previous) {
|
|
|
693
758
|
function workspaceContextKey(context) {
|
|
694
759
|
return JSON.stringify([context.machine.id, context.workspace.projectId, context.workspace.id]);
|
|
695
760
|
}
|
|
696
|
-
|
|
697
|
-
|
|
761
|
+
class GitBackendUnavailableError extends Error {
|
|
762
|
+
}
|
|
763
|
+
function gitError(error) {
|
|
764
|
+
if (error instanceof GitBackendUnavailableError)
|
|
765
|
+
return "backendUnavailable";
|
|
766
|
+
console.error("Git request failed", error);
|
|
767
|
+
return "requestFailed";
|
|
698
768
|
}
|
|
699
769
|
const gitPanelStyles = `
|
|
700
770
|
.git-panel { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; overflow: hidden; color: var(--pi-text); background: var(--pi-bg); font: 13px var(--pi-font, system-ui, sans-serif); }
|
|
701
771
|
.git-panel ${activityElementTag} { display: none; }
|
|
702
772
|
.git-panel small, .git-panel .git-muted { color: var(--pi-muted); }
|
|
703
773
|
.git-panel p { margin: 10px; }
|
|
704
|
-
.git-panel .git-toolbar {
|
|
705
|
-
.git-panel .git-toolbar-actions { margin-
|
|
774
|
+
.git-panel .git-toolbar { overflow-x: auto; flex: 0 0 auto; font-size: 12px; color: var(--pi-muted); }
|
|
775
|
+
.git-panel .git-toolbar-actions { margin-inline-start: auto; }
|
|
706
776
|
.git-panel .git-toolbar > strong { display: flex; align-items: center; padding-inline: 10px; font-weight: 500; }
|
|
707
777
|
.git-panel .git-toolbar .ui-button { white-space: nowrap; }
|
|
708
778
|
.git-panel .git-toolbar .ui-button[aria-pressed="true"] { background: var(--pi-surface-hover); color: var(--pi-text); }
|
|
@@ -712,8 +782,17 @@ const gitPanelStyles = `
|
|
|
712
782
|
.git-panel .git-load-more { margin: 8px auto; }
|
|
713
783
|
.git-panel .git-split { flex: 1 1 auto; min-height: 0; display: grid; grid-template-rows: minmax(160px, 34%) minmax(0, 1fr); }
|
|
714
784
|
.git-panel .git-file-list { border-bottom: 1px solid var(--pi-border); }
|
|
785
|
+
.git-panel [data-git-state] { --git-status-color: var(--pi-muted); }
|
|
786
|
+
.git-panel [data-git-state="added"], .git-panel [data-git-state="untracked"] { --git-status-color: var(--pi-success); }
|
|
787
|
+
.git-panel [data-git-state="modified"] { --git-status-color: var(--pi-warning); }
|
|
788
|
+
.git-panel [data-git-state="deleted"], .git-panel [data-git-state="conflicted"] { --git-status-color: var(--pi-danger); }
|
|
789
|
+
.git-panel [data-git-state="renamed"], .git-panel [data-git-state="copied"] { --git-status-color: var(--pi-accent); }
|
|
790
|
+
.git-panel [data-git-state] .ui-file-label, .git-panel .git-status { color: var(--git-status-color); }
|
|
791
|
+
.git-panel .git-status { font-weight: 600; }
|
|
792
|
+
.git-panel .git-file-details { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
|
|
793
|
+
.git-panel .git-staging { color: var(--pi-muted); font-size: 11px; white-space: nowrap; }
|
|
715
794
|
.git-panel .git-summary { margin: 10px 12px 8px; color: var(--pi-muted); }
|
|
716
|
-
.git-panel .submodule-badge { display: inline-block; margin-
|
|
795
|
+
.git-panel .submodule-badge { display: inline-block; margin-inline-start: 6px; border: 1px solid var(--pi-border); border-radius: 999px; color: var(--pi-muted); padding: 0 5px; font-size: 11px; font-weight: 400; vertical-align: baseline; }
|
|
717
796
|
.git-panel .git-viewer { min-height: 0; overflow: auto; display: flex; flex-direction: column; }
|
|
718
797
|
.git-panel .git-diffs { flex: 1 1 auto; min-height: 0; overflow: auto; display: grid; grid-template-rows: minmax(120px, 1fr) minmax(120px, 1fr); }
|
|
719
798
|
.git-panel .git-diffs.is-single { grid-template-rows: minmax(0, 1fr); }
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Generated from pi-web-plugins/git/browser/git.messages.ts. Do not edit directly.
|
|
2
|
+
const git = { "message": "Git", "description": "Git panel title; product name" };
|
|
3
|
+
const goToGit = { "message": "Go to Git", "description": "Navigate to the Git panel" };
|
|
4
|
+
const refreshGit = { "message": "Refresh Git", "description": "Action to refresh repository status" };
|
|
5
|
+
const navigation = { "message": "Navigation", "description": "Action palette group for navigation" };
|
|
6
|
+
const workspace = { "message": "Workspace", "description": "Action palette group for workspace actions" };
|
|
7
|
+
const stale = { "message": "stale", "description": "Repository status is out of date" };
|
|
8
|
+
const refresh = { "message": "Refresh", "description": "Reload Git status" };
|
|
9
|
+
const changedFilesView = { "message": "Changed files view", "description": "Accessible name of list/tree view controls" };
|
|
10
|
+
const list = { "message": "List", "description": "Flat changed-file view" };
|
|
11
|
+
const tree = { "message": "Tree", "description": "Hierarchical changed-file view" };
|
|
12
|
+
const collapseAll = { "message": "Collapse all", "description": "Collapse all directories and submodules" };
|
|
13
|
+
const expandAll = { "message": "Expand all", "description": "Expand all directories and submodules" };
|
|
14
|
+
const loadingStatus = { "message": "Loading status…", "description": "Repository status request is pending" };
|
|
15
|
+
const statusUnavailable = { "message": "Status unavailable.", "description": "Repository status could not be loaded" };
|
|
16
|
+
const notRepository = { "message": "Not a git repository.", "description": "Selected workspace is not in a Git repository" };
|
|
17
|
+
const noChanges = { "message": "No changes.", "description": "Repository has no changed files" };
|
|
18
|
+
const selectFile = { "message": "Select a changed file.", "description": "Diff viewer before file selection" };
|
|
19
|
+
const loadingDiff = { "message": "Loading diff…", "description": "Diff request is pending" };
|
|
20
|
+
const noStagedDiff = { "message": "No staged or unstaged diff.", "description": "Selected file has no diff to display" };
|
|
21
|
+
const diff = { "message": "diff", "description": "Fallback title for a diff with no path" };
|
|
22
|
+
const noDiff = { "message": "No diff.", "description": "Diff response has no lines" };
|
|
23
|
+
const unifiedDiff = { "message": "Unified diff", "description": "Accessible name for the diff table" };
|
|
24
|
+
const submodule = { "message": "submodule", "description": "Badge identifying a Git submodule" };
|
|
25
|
+
const detached = { "message": "detached", "description": "Repository is not on a named branch" };
|
|
26
|
+
const backendUnavailable = { "message": "Git workspace backend is unavailable. Update and restart PI WEB on this machine, then reload the browser.", "description": "Recovery instructions when the paired Git backend is missing" };
|
|
27
|
+
const requestFailed = { "message": "Could not refresh Git. Try refreshing again.", "description": "Repository status or diff request failed; technical details are logged" };
|
|
28
|
+
const diffState = {
|
|
29
|
+
message: "{staged, select, yes {{truncated, select, yes {staged · truncated} other {staged}}} other {{truncated, select, yes {unstaged · truncated} other {unstaged}}}}",
|
|
30
|
+
description: "Diff staging state, with optional truncation warning; translate each complete alternative",
|
|
31
|
+
};
|
|
32
|
+
const branchSummary = {
|
|
33
|
+
message: "<name>{branch}</name> · ↑{ahead, number} ↓{behind, number}",
|
|
34
|
+
description: "Branch name with commits ahead and behind upstream; arrows indicate ahead and behind",
|
|
35
|
+
};
|
|
36
|
+
const fileState = {
|
|
37
|
+
message: "{state, select, modified {Modified} added {Added} deleted {Deleted} renamed {Renamed} copied {Copied} untracked {Untracked} ignored {Ignored} conflicted {Conflicted} other {Unmodified}}",
|
|
38
|
+
description: "Full accessible description of the changed file state; visible letters are Git notation",
|
|
39
|
+
};
|
|
40
|
+
const stagedChanges = { message: "Staged", description: "File has staged changes only" };
|
|
41
|
+
const unstagedChanges = { message: "Unstaged", description: "File has unstaged changes only" };
|
|
42
|
+
const bothChanges = { message: "Both", description: "File has both staged and unstaged changes" };
|
|
43
|
+
const stagingDetail = {
|
|
44
|
+
message: "Staged: {index} · Unstaged: {workingTree}",
|
|
45
|
+
description: "File status in the index and working tree; values are localized file states",
|
|
46
|
+
};
|
|
47
|
+
export default { stagedChanges, unstagedChanges, bothChanges, stagingDetail, git, goToGit, refreshGit, navigation, workspace, stale, refresh, changedFilesView, list, tree, collapseAll, expandAll, loadingStatus, statusUnavailable, notRepository, noChanges, selectFile, loadingDiff, noStagedDiff, diff, noDiff, unifiedDiff, submodule, detached, backendUnavailable, requestFailed, diffState, branchSummary, fileState };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Generated from pi-web-plugins/git/browser/gitFileIcon.ts. Do not edit directly.
|
|
2
|
+
const tag = "pi-web-git-file-icon";
|
|
3
|
+
/** Git consumes alpha masks, not artwork colours or another plugin's elements. */
|
|
4
|
+
export function defineGitFileIconElement() {
|
|
5
|
+
if (typeof customElements === "undefined" || typeof HTMLElement === "undefined" || customElements.get(tag) !== undefined)
|
|
6
|
+
return;
|
|
7
|
+
class GitFileIcon extends HTMLElement {
|
|
8
|
+
value;
|
|
9
|
+
image;
|
|
10
|
+
root = this.attachShadow({ mode: "open" });
|
|
11
|
+
content = document.createElement("span");
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
const style = document.createElement("style");
|
|
15
|
+
style.textContent = ":host { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; color: var(--pi-muted, currentColor); } .content { display: contents; } .mask { display: block; width: 16px; height: 16px; background-color: currentColor; mask-size: contain; mask-repeat: no-repeat; mask-position: center; }";
|
|
16
|
+
this.content.className = "content";
|
|
17
|
+
this.root.append(style, this.content);
|
|
18
|
+
this.showFallback();
|
|
19
|
+
}
|
|
20
|
+
set url(value) {
|
|
21
|
+
if (value === this.value)
|
|
22
|
+
return;
|
|
23
|
+
this.value = value;
|
|
24
|
+
this.showFallback();
|
|
25
|
+
if (value === undefined)
|
|
26
|
+
return;
|
|
27
|
+
const image = document.createElement("img");
|
|
28
|
+
image.alt = "";
|
|
29
|
+
image.hidden = true;
|
|
30
|
+
image.draggable = false;
|
|
31
|
+
image.crossOrigin = "anonymous";
|
|
32
|
+
image.referrerPolicy = "no-referrer";
|
|
33
|
+
image.addEventListener("load", () => {
|
|
34
|
+
if (this.image !== image)
|
|
35
|
+
return;
|
|
36
|
+
const mask = document.createElement("span");
|
|
37
|
+
mask.className = "mask";
|
|
38
|
+
mask.setAttribute("aria-hidden", "true");
|
|
39
|
+
mask.style.maskImage = `url(${JSON.stringify(value)})`;
|
|
40
|
+
this.content.querySelector("svg")?.replaceWith(mask);
|
|
41
|
+
}, { once: true });
|
|
42
|
+
image.addEventListener("error", () => {
|
|
43
|
+
if (this.image !== image)
|
|
44
|
+
return;
|
|
45
|
+
console.warn("Failed to load Git file icon", value);
|
|
46
|
+
this.showFallback();
|
|
47
|
+
}, { once: true });
|
|
48
|
+
this.content.append(image);
|
|
49
|
+
this.image = image;
|
|
50
|
+
image.src = value;
|
|
51
|
+
}
|
|
52
|
+
showFallback() {
|
|
53
|
+
this.image = undefined;
|
|
54
|
+
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
55
|
+
svg.setAttribute("width", "14");
|
|
56
|
+
svg.setAttribute("height", "14");
|
|
57
|
+
svg.setAttribute("viewBox", "0 0 24 24");
|
|
58
|
+
svg.setAttribute("fill", "none");
|
|
59
|
+
svg.setAttribute("stroke", "currentColor");
|
|
60
|
+
svg.setAttribute("stroke-width", "1.6");
|
|
61
|
+
svg.setAttribute("aria-hidden", "true");
|
|
62
|
+
for (const d of ["M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z", "M14 2v6h6"]) {
|
|
63
|
+
const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
|
|
64
|
+
path.setAttribute("d", d);
|
|
65
|
+
svg.append(path);
|
|
66
|
+
}
|
|
67
|
+
this.content.replaceChildren(svg);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
customElements.define(tag, GitFileIcon);
|
|
71
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Generated from pi-web-plugins/git/browser/pi-web-plugin.ts. Do not edit directly.
|
|
2
|
-
import { setTranslator } from "./i18n.js";
|
|
3
2
|
import { createGitBrowserContributions } from "./git-panel.js";
|
|
3
|
+
import { setTranslator } from "./i18n.js";
|
|
4
4
|
const stylesheetIntegrationCapability = {
|
|
5
5
|
pluginId: "pi-web", id: "stylesheet-integration", version: 1,
|
|
6
6
|
parse: (value) => {
|
|
@@ -16,18 +16,35 @@ function isStylesheetIntegration(value) {
|
|
|
16
16
|
&& "subscribe" in value && typeof value.subscribe === "function"
|
|
17
17
|
&& "createController" in value && typeof value.createController === "function";
|
|
18
18
|
}
|
|
19
|
+
const fileIconsCapability = {
|
|
20
|
+
pluginId: "pi-web", id: "file-icons", version: 1,
|
|
21
|
+
parse(value) {
|
|
22
|
+
if (!isFileIcons(value))
|
|
23
|
+
throw new Error("Invalid PI WEB file icons capability v1");
|
|
24
|
+
return value;
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
function isFileIcons(value) {
|
|
28
|
+
return typeof value === "object" && value !== null
|
|
29
|
+
&& "resolveIcon" in value && typeof value.resolveIcon === "function"
|
|
30
|
+
&& "subscribe" in value && typeof value.subscribe === "function";
|
|
31
|
+
}
|
|
19
32
|
const plugin = {
|
|
20
33
|
apiVersion: 4,
|
|
21
34
|
name: "Git",
|
|
22
|
-
requires: [stylesheetIntegrationCapability],
|
|
23
|
-
activate: ({ pluginId, runtimePluginId, html, svg, translate }) => {
|
|
35
|
+
requires: [stylesheetIntegrationCapability, fileIconsCapability],
|
|
36
|
+
activate: ({ pluginId, runtimePluginId, html, svg, localization, translate }) => {
|
|
24
37
|
setTranslator(translate);
|
|
38
|
+
if (localization === undefined)
|
|
39
|
+
throw new Error("The Git plugin requires a localization-capable PI WEB host");
|
|
25
40
|
let stylesheetIntegration;
|
|
41
|
+
let fileIcons;
|
|
26
42
|
return {
|
|
27
43
|
start: ({ capabilities }) => {
|
|
28
44
|
stylesheetIntegration = capabilities.resolve(stylesheetIntegrationCapability);
|
|
45
|
+
fileIcons = capabilities.resolve(fileIconsCapability);
|
|
29
46
|
},
|
|
30
|
-
contributions: createGitBrowserContributions(pluginId, runtimePluginId, html, svg, () => stylesheetIntegration),
|
|
47
|
+
contributions: createGitBrowserContributions(pluginId, runtimePluginId, html, svg, () => stylesheetIntegration, localization, () => fileIcons),
|
|
31
48
|
};
|
|
32
49
|
},
|
|
33
50
|
};
|
|
@@ -115,7 +115,8 @@ export function createGitWorkspaceProvider(context, instanceNamespace = "") {
|
|
|
115
115
|
if (current.bare === true)
|
|
116
116
|
throw new Error(t("ui.main.e316bd0c1e32", "A bare Git workspace cannot be removed as a linked worktree"));
|
|
117
117
|
return {
|
|
118
|
-
title:
|
|
118
|
+
title: `Delete workspace: ${workspace.label}`,
|
|
119
|
+
titlePresentation: { kind: "workspaceRemoval", label: workspace.label },
|
|
119
120
|
command: `git worktree remove ${shellQuote(workspace.path)}`,
|
|
120
121
|
};
|
|
121
122
|
},
|
|
@@ -157,8 +158,9 @@ function singleGitWorkspace(project) {
|
|
|
157
158
|
}
|
|
158
159
|
function gitRemovalPresentation(label, path) {
|
|
159
160
|
return {
|
|
160
|
-
|
|
161
|
-
|
|
161
|
+
localization: { kind: "gitWorktree", label, path },
|
|
162
|
+
actionLabel: "Delete workspace",
|
|
163
|
+
confirmation: `Delete workspace ${label}?\n\nThis will run git worktree remove and delete:\n${path}\n\nThe Git branch will not be deleted.`,
|
|
162
164
|
};
|
|
163
165
|
}
|
|
164
166
|
function gitPrivateWorktreePath(workspace) {
|