@hienlh/ppm 0.23.17 → 0.23.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/cli-reference.md +4 -4
- package/assets/skills/ppm/references/http-api.md +1 -1
- package/dist/web/assets/{accounts-settings-section-BqsI4Ixj.js → accounts-settings-section-BTga1zwH.js} +1 -1
- package/dist/web/assets/accounts-settings-section-BTga1zwH.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-BTga1zwH.js.gz +0 -0
- package/dist/web/assets/{agent-session-sheet-BmoNB8BG.js → agent-session-sheet-Q3kasbrZ.js} +2 -2
- package/dist/web/assets/agent-session-sheet-Q3kasbrZ.js.br +0 -0
- package/dist/web/assets/agent-session-sheet-Q3kasbrZ.js.gz +0 -0
- package/dist/web/assets/{agent-session-window-content-rlCrYBYv.js → agent-session-window-content-UNuEprIK.js} +1 -1
- package/dist/web/assets/agent-session-window-content-UNuEprIK.js.br +0 -0
- package/dist/web/assets/agent-session-window-content-UNuEprIK.js.gz +0 -0
- package/dist/web/assets/{ai-resource-editor-CUOR9Xtf.js → ai-resource-editor-BEwA6Do0.js} +1 -1
- package/dist/web/assets/ai-resource-editor-BEwA6Do0.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-BEwA6Do0.js.gz +0 -0
- package/dist/web/assets/{ai-settings-section-CNdbcCaI.js → ai-settings-section-DVKJPM0n.js} +1 -1
- package/dist/web/assets/ai-settings-section-DVKJPM0n.js.br +0 -0
- package/dist/web/assets/ai-settings-section-DVKJPM0n.js.gz +0 -0
- package/dist/web/assets/{ai-settings-section-aXXTb0dN.js → ai-settings-section-DlfY5lFT.js} +1 -1
- package/dist/web/assets/{android-tab-BsuTMKJw.js → android-tab-BNa6R9fV.js} +1 -1
- package/dist/web/assets/android-tab-BNa6R9fV.js.br +0 -0
- package/dist/web/assets/android-tab-BNa6R9fV.js.gz +0 -0
- package/dist/web/assets/{appearance-settings-section-Dk6d_fTo.js → appearance-settings-section-CjWFwWNn.js} +1 -1
- package/dist/web/assets/appearance-settings-section-CjWFwWNn.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-CjWFwWNn.js.gz +0 -0
- package/dist/web/assets/{apps-panel-C20ys4Cy.js → apps-panel-D4xjeMN9.js} +1 -1
- package/dist/web/assets/apps-panel-D4xjeMN9.js.br +0 -0
- package/dist/web/assets/apps-panel-D4xjeMN9.js.gz +0 -0
- package/dist/web/assets/{branch-review-tab-CcvkQMRA.js → branch-review-tab-BCW5294d.js} +1 -1
- package/dist/web/assets/branch-review-tab-BCW5294d.js.br +0 -0
- package/dist/web/assets/branch-review-tab-BCW5294d.js.gz +0 -0
- package/dist/web/assets/{chat-tab-BAh37UwG.js → chat-tab-BG0M1D3d.js} +1 -1
- package/dist/web/assets/chat-tab-BG0M1D3d.js.br +3 -0
- package/dist/web/assets/chat-tab-BG0M1D3d.js.gz +0 -0
- package/dist/web/assets/{chat-tab-D-cl4yMo.js → chat-tab-DsW93LTL.js} +3 -3
- package/dist/web/assets/chat-tab-DsW93LTL.js.br +0 -0
- package/dist/web/assets/chat-tab-DsW93LTL.js.gz +0 -0
- package/dist/web/assets/{code-editor-DIGsPNPS.js → code-editor-AxLIpK-b.js} +4 -4
- package/dist/web/assets/code-editor-AxLIpK-b.js.br +0 -0
- package/dist/web/assets/code-editor-AxLIpK-b.js.gz +0 -0
- package/dist/web/assets/{codex-reset-credit-button-C0a2svAw.js → codex-reset-credit-button-BnRmkBZu.js} +1 -1
- package/dist/web/assets/codex-reset-credit-button-BnRmkBZu.js.br +0 -0
- package/dist/web/assets/{codex-reset-credit-button-C0a2svAw.js.gz → codex-reset-credit-button-BnRmkBZu.js.gz} +0 -0
- package/dist/web/assets/{conflict-editor-zORSNMk6.js → conflict-editor-BwuNUPAK.js} +1 -1
- package/dist/web/assets/conflict-editor-BwuNUPAK.js.br +0 -0
- package/dist/web/assets/conflict-editor-BwuNUPAK.js.gz +0 -0
- package/dist/web/assets/{connection-form-tab-BkE7wACA.js → connection-form-tab-CM2o80eB.js} +1 -1
- package/dist/web/assets/connection-form-tab-CM2o80eB.js.br +0 -0
- package/dist/web/assets/connection-form-tab-CM2o80eB.js.gz +0 -0
- package/dist/web/assets/{csv-preview-CDUY0I94.js → csv-preview-C7ErHm4U.js} +1 -1
- package/dist/web/assets/csv-preview-C7ErHm4U.js.br +0 -0
- package/dist/web/assets/csv-preview-C7ErHm4U.js.gz +0 -0
- package/dist/web/assets/{db-tab-parts-tgVIgcs5.js → db-tab-parts-C8jbkfxO.js} +1 -1
- package/dist/web/assets/db-tab-parts-C8jbkfxO.js.br +0 -0
- package/dist/web/assets/db-tab-parts-C8jbkfxO.js.gz +0 -0
- package/dist/web/assets/{design-settings-section-CqFPwhis.js → design-settings-section-BcGEY4Zf.js} +1 -1
- package/dist/web/assets/design-settings-section-BcGEY4Zf.js.br +0 -0
- package/dist/web/assets/design-settings-section-BcGEY4Zf.js.gz +0 -0
- package/dist/web/assets/{design-tab-CVTzge3p.js → design-tab-BGPYNFvy.js} +1 -1
- package/dist/web/assets/design-tab-BGPYNFvy.js.br +0 -0
- package/dist/web/assets/design-tab-BGPYNFvy.js.gz +0 -0
- package/dist/web/assets/{designs-sidebar-panel-DKTSE1LS.js → designs-sidebar-panel-BgMj7xRm.js} +1 -1
- package/dist/web/assets/designs-sidebar-panel-BgMj7xRm.js.br +0 -0
- package/dist/web/assets/designs-sidebar-panel-BgMj7xRm.js.gz +0 -0
- package/dist/web/assets/{diff-viewer-3VDHcDag.js → diff-viewer-BKJkesHk.js} +1 -1
- package/dist/web/assets/diff-viewer-BKJkesHk.js.br +0 -0
- package/dist/web/assets/diff-viewer-BKJkesHk.js.gz +0 -0
- package/dist/web/assets/{docx-preview-FgE_WU6t.js → docx-preview-DD5oD_nL.js} +1 -1
- package/dist/web/assets/docx-preview-DD5oD_nL.js.br +0 -0
- package/dist/web/assets/docx-preview-DD5oD_nL.js.gz +0 -0
- package/dist/web/assets/{editor-dialog-BhK77FSu.js → editor-dialog--07lKJxl.js} +1 -1
- package/dist/web/assets/editor-dialog--07lKJxl.js.br +0 -0
- package/dist/web/assets/editor-dialog--07lKJxl.js.gz +0 -0
- package/dist/web/assets/{editor-language-service-BIN7M57r.js → editor-language-service-51xjO5d3.js} +1 -1
- package/dist/web/assets/editor-language-service-51xjO5d3.js.br +0 -0
- package/dist/web/assets/editor-language-service-51xjO5d3.js.gz +0 -0
- package/dist/web/assets/{explorer-body-DNsWiVO3.js → explorer-body-BXK5SjJQ.js} +1 -1
- package/dist/web/assets/explorer-body-BXK5SjJQ.js.br +0 -0
- package/dist/web/assets/explorer-body-BXK5SjJQ.js.gz +0 -0
- package/dist/web/assets/{explorer-window-content-DnOJYhRX.js → explorer-window-content-DKXcCmuX.js} +1 -1
- package/dist/web/assets/explorer-window-content-DKXcCmuX.js.br +0 -0
- package/dist/web/assets/explorer-window-content-DKXcCmuX.js.gz +0 -0
- package/dist/web/assets/{extension-manager-section-CJtRpUUs.js → extension-manager-section-CTpQP6te.js} +1 -1
- package/dist/web/assets/extension-manager-section-CTpQP6te.js.br +0 -0
- package/dist/web/assets/extension-manager-section-CTpQP6te.js.gz +0 -0
- package/dist/web/assets/{extension-webview-Bza7cPL1.js → extension-webview-COT-yLrM.js} +1 -1
- package/dist/web/assets/extension-webview-COT-yLrM.js.br +0 -0
- package/dist/web/assets/extension-webview-COT-yLrM.js.gz +0 -0
- package/dist/web/assets/{files-settings-section-8rWMj1Oi.js → files-settings-section-CgVR0fqi.js} +1 -1
- package/dist/web/assets/files-settings-section-CgVR0fqi.js.br +0 -0
- package/dist/web/assets/files-settings-section-CgVR0fqi.js.gz +0 -0
- package/dist/web/assets/{general-settings-section-joWQEgIn.js → general-settings-section-BEMIbE4Y.js} +1 -1
- package/dist/web/assets/general-settings-section-BEMIbE4Y.js.br +0 -0
- package/dist/web/assets/general-settings-section-BEMIbE4Y.js.gz +0 -0
- package/dist/web/assets/{git-log-panel-BxYYWEiU.js → git-log-panel-Cp2174iI.js} +1 -1
- package/dist/web/assets/git-log-panel-Cp2174iI.js.br +0 -0
- package/dist/web/assets/git-log-panel-Cp2174iI.js.gz +0 -0
- package/dist/web/assets/{git-review-tab-Btnvgk1e.js → git-review-tab-CpMJ0qDi.js} +1 -1
- package/dist/web/assets/git-review-tab-CpMJ0qDi.js.br +0 -0
- package/dist/web/assets/git-review-tab-CpMJ0qDi.js.gz +0 -0
- package/dist/web/assets/{glide-data-grid-lCwaM1Gy.js → glide-data-grid-BAhwWUhO.js} +1 -1
- package/dist/web/assets/glide-data-grid-BAhwWUhO.js.br +0 -0
- package/dist/web/assets/glide-data-grid-BAhwWUhO.js.gz +0 -0
- package/dist/web/assets/{grid-save-dialog-DoEEQ1vM.js → grid-save-dialog-DmJhaWOl.js} +1 -1
- package/dist/web/assets/grid-save-dialog-DmJhaWOl.js.br +0 -0
- package/dist/web/assets/grid-save-dialog-DmJhaWOl.js.gz +0 -0
- package/dist/web/assets/{group-chat-tab-B7Dwx9uL.js → group-chat-tab-Bq7-Yegf.js} +1 -1
- package/dist/web/assets/group-chat-tab-Bq7-Yegf.js.br +0 -0
- package/dist/web/assets/group-chat-tab-Bq7-Yegf.js.gz +0 -0
- package/dist/web/assets/{impexp-tab-BtEDbQSn.js → impexp-tab-COx3Cvs7.js} +1 -1
- package/dist/web/assets/impexp-tab-COx3Cvs7.js.br +0 -0
- package/dist/web/assets/impexp-tab-COx3Cvs7.js.gz +0 -0
- package/dist/web/assets/{index-CPBujJc_.js → index-BGk8EFQb.js} +5 -5
- package/dist/web/assets/index-BGk8EFQb.js.br +0 -0
- package/dist/web/assets/index-BGk8EFQb.js.gz +0 -0
- package/dist/web/assets/{jira-watcher-section-mnly-maX.js → jira-watcher-section-BEPbsi62.js} +1 -1
- package/dist/web/assets/{keybindings-store-BSPTMRiv.js → keybindings-store-DzcSIJUF.js} +1 -1
- package/dist/web/assets/{keyboard-shortcuts-section-DULhEWPg.js → keyboard-shortcuts-section-Bqg7AZiZ.js} +1 -1
- package/dist/web/assets/keyboard-shortcuts-section-Bqg7AZiZ.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-Bqg7AZiZ.js.gz +0 -0
- package/dist/web/assets/{language-servers-section-CwBJsJ31.js → language-servers-section-CJ47DSIA.js} +2 -2
- package/dist/web/assets/language-servers-section-CJ47DSIA.js.br +0 -0
- package/dist/web/assets/language-servers-section-CJ47DSIA.js.gz +0 -0
- package/dist/web/assets/{logs-app-DatfI2Up.js → logs-app-BK-n-y_K.js} +1 -1
- package/dist/web/assets/logs-app-BK-n-y_K.js.br +0 -0
- package/dist/web/assets/logs-app-BK-n-y_K.js.gz +0 -0
- package/dist/web/assets/{logs-tab-an_9ujcz.js → logs-tab-B84EZJ1b.js} +1 -1
- package/dist/web/assets/{logs-window-content-Usr3JTmE.js → logs-window-content-B1uN_3pN.js} +1 -1
- package/dist/web/assets/{lsp-client-tCCcXWsR.js → lsp-client-DHSaAyJW.js} +1 -1
- package/dist/web/assets/lsp-client-DHSaAyJW.js.br +0 -0
- package/dist/web/assets/lsp-client-DHSaAyJW.js.gz +0 -0
- package/dist/web/assets/{markdown-renderer-DdzxNveP.js → markdown-renderer-BjDQUqT-.js} +1 -1
- package/dist/web/assets/{markdown-renderer-D0YUMQLE.js → markdown-renderer-CpxdNG0f.js} +1 -1
- package/dist/web/assets/markdown-renderer-CpxdNG0f.js.br +0 -0
- package/dist/web/assets/markdown-renderer-CpxdNG0f.js.gz +0 -0
- package/dist/web/assets/{mobile-explorer-sheet-Bo27IRye.js → mobile-explorer-sheet-BBwXGmXA.js} +1 -1
- package/dist/web/assets/mobile-explorer-sheet-BBwXGmXA.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-BBwXGmXA.js.gz +0 -0
- package/dist/web/assets/{new-design-dialog-DIOCWZW1.js → new-design-dialog-B_ZOvGhR.js} +1 -1
- package/dist/web/assets/new-design-dialog-B_ZOvGhR.js.br +0 -0
- package/dist/web/assets/new-design-dialog-B_ZOvGhR.js.gz +0 -0
- package/dist/web/assets/{notification-store-CRPOp-6B.js → notification-store-HuMqfadD.js} +1 -1
- package/dist/web/assets/{notifications-settings-section-DSSCTkfX.js → notifications-settings-section-D7fIVFHe.js} +1 -1
- package/dist/web/assets/notifications-settings-section-D7fIVFHe.js.br +0 -0
- package/dist/web/assets/notifications-settings-section-D7fIVFHe.js.gz +0 -0
- package/dist/web/assets/{ppmbot-settings-section-BIYSlZu5.js → ppmbot-settings-section-JDvyI-gZ.js} +1 -1
- package/dist/web/assets/ppmbot-settings-section-JDvyI-gZ.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-JDvyI-gZ.js.gz +0 -0
- package/dist/web/assets/{problems-panel-CH-00nA7.js → problems-panel-Bsv_L6T2.js} +1 -1
- package/dist/web/assets/problems-panel-Bsv_L6T2.js.br +0 -0
- package/dist/web/assets/problems-panel-Bsv_L6T2.js.gz +0 -0
- package/dist/web/assets/{process-table-DQO0g5do.js → process-table-3kZyWOJx.js} +1 -1
- package/dist/web/assets/process-table-3kZyWOJx.js.br +0 -0
- package/dist/web/assets/process-table-3kZyWOJx.js.gz +0 -0
- package/dist/web/assets/{proxy-settings-section-Buo3hvQ4.js → proxy-settings-section-CYcmIp7W.js} +1 -1
- package/dist/web/assets/proxy-settings-section-CYcmIp7W.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-CYcmIp7W.js.gz +0 -0
- package/dist/web/assets/{query-tab-CU0QVZpj.js → query-tab-CjrWnQUl.js} +1 -1
- package/dist/web/assets/query-tab-CjrWnQUl.js.br +0 -0
- package/dist/web/assets/query-tab-CjrWnQUl.js.gz +0 -0
- package/dist/web/assets/{remote-access-settings-section-vlHMJPdY.js → remote-access-settings-section-iQkakiVx.js} +1 -1
- package/dist/web/assets/remote-access-settings-section-iQkakiVx.js.br +0 -0
- package/dist/web/assets/remote-access-settings-section-iQkakiVx.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-clipboard-notice-DNqX7d1L.js → remote-desktop-clipboard-notice-CFLnb7ML.js} +1 -1
- package/dist/web/assets/remote-desktop-clipboard-notice-CFLnb7ML.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-CFLnb7ML.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-sheet-Dz7tctpc.js → remote-desktop-mobile-sheet-C_-_-Nkz.js} +2 -2
- package/dist/web/assets/remote-desktop-mobile-sheet-C_-_-Nkz.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-C_-_-Nkz.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-view-BqhQdShH.js → remote-desktop-mobile-view-BnHSrind.js} +1 -1
- package/dist/web/assets/remote-desktop-mobile-view-BnHSrind.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-BnHSrind.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-readiness-gate-rnTq4ZQS.js → remote-desktop-readiness-gate-BGHJ7Sv6.js} +1 -1
- package/dist/web/assets/remote-desktop-readiness-gate-BGHJ7Sv6.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-BGHJ7Sv6.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-window-content-TqjHt0_5.js → remote-desktop-window-content-BBm1YwM8.js} +1 -1
- package/dist/web/assets/remote-desktop-window-content-BBm1YwM8.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-BBm1YwM8.js.gz +0 -0
- package/dist/web/assets/{rename-object-dialog-D0YpY40E.js → rename-object-dialog-BLnF9xyn.js} +1 -1
- package/dist/web/assets/rename-object-dialog-BLnF9xyn.js.br +0 -0
- package/dist/web/assets/rename-object-dialog-BLnF9xyn.js.gz +0 -0
- package/dist/web/assets/{review-code-DsF9921h.js → review-code-DG7sCIzr.js} +1 -1
- package/dist/web/assets/review-code-DG7sCIzr.js.br +0 -0
- package/dist/web/assets/review-code-DG7sCIzr.js.gz +0 -0
- package/dist/web/assets/{save-as-dialog-niU7kVMJ.js → save-as-dialog-KW7cErWh.js} +1 -1
- package/dist/web/assets/save-as-dialog-KW7cErWh.js.br +0 -0
- package/dist/web/assets/save-as-dialog-KW7cErWh.js.gz +0 -0
- package/dist/web/assets/{schedules-settings-section-Heuv2Kj4.js → schedules-settings-section-B4AV4ORv.js} +1 -1
- package/dist/web/assets/schedules-settings-section-B4AV4ORv.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-B4AV4ORv.js.gz +0 -0
- package/dist/web/assets/{session-review-tab-Dob0FLvA.js → session-review-tab-C5nPyBzo.js} +1 -1
- package/dist/web/assets/session-review-tab-C5nPyBzo.js.br +0 -0
- package/dist/web/assets/session-review-tab-C5nPyBzo.js.gz +0 -0
- package/dist/web/assets/{settings-body-5t6SQbLx.js → settings-body-xWSmRXUD.js} +1 -1
- package/dist/web/assets/settings-body-xWSmRXUD.js.br +0 -0
- package/dist/web/assets/settings-body-xWSmRXUD.js.gz +0 -0
- package/dist/web/assets/{settings-rows-B0w15zot.js → settings-rows-ChKBHk07.js} +1 -1
- package/dist/web/assets/settings-rows-ChKBHk07.js.br +0 -0
- package/dist/web/assets/settings-rows-ChKBHk07.js.gz +0 -0
- package/dist/web/assets/settings-section-content-BOh2jaWV.js +1 -0
- package/dist/web/assets/{settings-section-content-D41IJ62x.js → settings-section-content-DdVdyPVX.js} +2 -2
- package/dist/web/assets/settings-section-content-DdVdyPVX.js.br +0 -0
- package/dist/web/assets/settings-section-content-DdVdyPVX.js.gz +0 -0
- package/dist/web/assets/{settings-tab-DGU5FVbO.js → settings-tab-CzaBBNoj.js} +1 -1
- package/dist/web/assets/{settings-window-content-Da5PY5MZ.js → settings-window-content-DAvWSu_O.js} +1 -1
- package/dist/web/assets/{slash-command-picker-DpZsPuNf.js → slash-command-picker-Cn2Fdz2p.js} +1 -1
- package/dist/web/assets/slash-command-picker-Cn2Fdz2p.js.br +0 -0
- package/dist/web/assets/slash-command-picker-Cn2Fdz2p.js.gz +0 -0
- package/dist/web/assets/{sql-object-tab-BTS8aHGO.js → sql-object-tab-_mPRCvD9.js} +1 -1
- package/dist/web/assets/sql-object-tab-_mPRCvD9.js.br +0 -0
- package/dist/web/assets/sql-object-tab-_mPRCvD9.js.gz +0 -0
- package/dist/web/assets/{sqlite-viewer-CVo5eqWj.js → sqlite-viewer-B8VZt-mA.js} +1 -1
- package/dist/web/assets/sqlite-viewer-B8VZt-mA.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-B8VZt-mA.js.gz +0 -0
- package/dist/web/assets/{structure-save-dialog-B9Q-Rhgj.js → structure-save-dialog-Lcst7kAl.js} +1 -1
- package/dist/web/assets/structure-save-dialog-Lcst7kAl.js.br +0 -0
- package/dist/web/assets/structure-save-dialog-Lcst7kAl.js.gz +0 -0
- package/dist/web/assets/{structure-tab-_cQn0KG7.js → structure-tab-ljJCzxUe.js} +1 -1
- package/dist/web/assets/structure-tab-ljJCzxUe.js.br +0 -0
- package/dist/web/assets/structure-tab-ljJCzxUe.js.gz +0 -0
- package/dist/web/assets/{system-monitor-body-YS3i1PUs.js → system-monitor-body-CTi5xUZz.js} +2 -2
- package/dist/web/assets/system-monitor-body-CTi5xUZz.js.br +0 -0
- package/dist/web/assets/system-monitor-body-CTi5xUZz.js.gz +0 -0
- package/dist/web/assets/{system-monitor-tab-D63xmd8U.js → system-monitor-tab-DeL2YoXO.js} +1 -1
- package/dist/web/assets/{system-monitor-window-content-DkCsK8Ed.js → system-monitor-window-content-DK-rQIZh.js} +1 -1
- package/dist/web/assets/{tab-host-window-content-CrASOMX8.js → tab-host-window-content-CG0vPTc_.js} +1 -1
- package/dist/web/assets/tab-host-window-content-CG0vPTc_.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-CG0vPTc_.js.gz +0 -0
- package/dist/web/assets/{table-tab-JlfqyPZR.js → table-tab-CTZ3nCWV.js} +1 -1
- package/dist/web/assets/table-tab-CTZ3nCWV.js.br +0 -0
- package/dist/web/assets/table-tab-CTZ3nCWV.js.gz +0 -0
- package/dist/web/assets/{telegram-bot-token-field-ctRa2529.js → telegram-bot-token-field-DF7zq7_h.js} +1 -1
- package/dist/web/assets/telegram-bot-token-field-DF7zq7_h.js.br +0 -0
- package/dist/web/assets/telegram-bot-token-field-DF7zq7_h.js.gz +0 -0
- package/dist/web/assets/{terminal-tab-BsXBBru0.js → terminal-tab-B_jECWTH.js} +1 -1
- package/dist/web/assets/terminal-tab-B_jECWTH.js.br +0 -0
- package/dist/web/assets/terminal-tab-B_jECWTH.js.gz +0 -0
- package/dist/web/assets/{tool-cards-BDzK03U4.js → tool-cards-CsD_VXcG.js} +2 -2
- package/dist/web/assets/tool-cards-CsD_VXcG.js.br +0 -0
- package/dist/web/assets/tool-cards-CsD_VXcG.js.gz +0 -0
- package/dist/web/assets/{tools-settings-section-DCG74pbd.js → tools-settings-section-DbBr0Hnr.js} +1 -1
- package/dist/web/assets/tools-settings-section-DbBr0Hnr.js.br +0 -0
- package/dist/web/assets/tools-settings-section-DbBr0Hnr.js.gz +0 -0
- package/dist/web/assets/{use-inline-blame-BOn_m8f-.js → use-inline-blame-BA2mrMxT.js} +1 -1
- package/dist/web/assets/use-inline-blame-BA2mrMxT.js.br +0 -0
- package/dist/web/assets/use-inline-blame-BA2mrMxT.js.gz +0 -0
- package/dist/web/assets/{use-lsp-D144ftsf.js → use-lsp-ChbrzwvS.js} +1 -1
- package/dist/web/assets/use-lsp-ChbrzwvS.js.br +0 -0
- package/dist/web/assets/use-lsp-ChbrzwvS.js.gz +0 -0
- package/dist/web/assets/{use-monaco-theme-ArU1f9T6.js → use-monaco-theme-C3_wfz5J.js} +1 -1
- package/dist/web/assets/{use-process-kill-BdmXHMFE.js → use-process-kill-C-YetnGd.js} +1 -1
- package/dist/web/assets/use-process-kill-C-YetnGd.js.br +0 -0
- package/dist/web/assets/use-process-kill-C-YetnGd.js.gz +0 -0
- package/dist/web/assets/{use-sql-schema-info-BQXSMw6p.js → use-sql-schema-info-pKwLD9wk.js} +1 -1
- package/dist/web/assets/use-sql-schema-info-pKwLD9wk.js.br +0 -0
- package/dist/web/assets/use-sql-schema-info-pKwLD9wk.js.gz +0 -0
- package/dist/web/assets/{use-websocket-rWdrMWa8.js → use-websocket-BFnUq0-x.js} +1 -1
- package/dist/web/assets/web-preview-tab-DGLPuZYM.js +1 -0
- package/dist/web/assets/web-preview-tab-DGLPuZYM.js.br +0 -0
- package/dist/web/assets/web-preview-tab-DGLPuZYM.js.gz +0 -0
- package/dist/web/index.html +1 -1
- package/dist/web/index.html.br +0 -0
- package/dist/web/index.html.gz +0 -0
- package/dist/web/sw.js +1 -1
- package/dist/web/sw.js.br +0 -0
- package/dist/web/sw.js.gz +0 -0
- package/docs/architecture/workspace-and-ui.md +11 -0
- package/package.json +1 -1
- package/src/services/port-forward/forward-hop.ts +20 -5
- package/src/services/port-forward/preview-navigation.ts +45 -0
- package/src/web/components/floating-window/floating-window.tsx +7 -1
- package/src/web/components/floating-window/use-window-body-element.ts +12 -5
- package/src/web/components/web-preview/web-preview-tab.tsx +38 -5
- package/dist/web/assets/accounts-settings-section-BqsI4Ixj.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-BqsI4Ixj.js.gz +0 -0
- package/dist/web/assets/agent-session-sheet-BmoNB8BG.js.br +0 -0
- package/dist/web/assets/agent-session-sheet-BmoNB8BG.js.gz +0 -0
- package/dist/web/assets/agent-session-window-content-rlCrYBYv.js.br +0 -0
- package/dist/web/assets/agent-session-window-content-rlCrYBYv.js.gz +0 -0
- package/dist/web/assets/ai-resource-editor-CUOR9Xtf.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-CUOR9Xtf.js.gz +0 -0
- package/dist/web/assets/ai-settings-section-CNdbcCaI.js.br +0 -0
- package/dist/web/assets/ai-settings-section-CNdbcCaI.js.gz +0 -0
- package/dist/web/assets/android-tab-BsuTMKJw.js.br +0 -0
- package/dist/web/assets/android-tab-BsuTMKJw.js.gz +0 -0
- package/dist/web/assets/appearance-settings-section-Dk6d_fTo.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-Dk6d_fTo.js.gz +0 -0
- package/dist/web/assets/apps-panel-C20ys4Cy.js.br +0 -0
- package/dist/web/assets/apps-panel-C20ys4Cy.js.gz +0 -0
- package/dist/web/assets/branch-review-tab-CcvkQMRA.js.br +0 -0
- package/dist/web/assets/branch-review-tab-CcvkQMRA.js.gz +0 -0
- package/dist/web/assets/chat-tab-BAh37UwG.js.br +0 -0
- package/dist/web/assets/chat-tab-BAh37UwG.js.gz +0 -0
- package/dist/web/assets/chat-tab-D-cl4yMo.js.br +0 -0
- package/dist/web/assets/chat-tab-D-cl4yMo.js.gz +0 -0
- package/dist/web/assets/code-editor-DIGsPNPS.js.br +0 -0
- package/dist/web/assets/code-editor-DIGsPNPS.js.gz +0 -0
- package/dist/web/assets/codex-reset-credit-button-C0a2svAw.js.br +0 -0
- package/dist/web/assets/conflict-editor-zORSNMk6.js.br +0 -0
- package/dist/web/assets/conflict-editor-zORSNMk6.js.gz +0 -0
- package/dist/web/assets/connection-form-tab-BkE7wACA.js.br +0 -0
- package/dist/web/assets/connection-form-tab-BkE7wACA.js.gz +0 -0
- package/dist/web/assets/csv-preview-CDUY0I94.js.br +0 -0
- package/dist/web/assets/csv-preview-CDUY0I94.js.gz +0 -0
- package/dist/web/assets/db-tab-parts-tgVIgcs5.js.br +0 -0
- package/dist/web/assets/db-tab-parts-tgVIgcs5.js.gz +0 -0
- package/dist/web/assets/design-settings-section-CqFPwhis.js.br +0 -0
- package/dist/web/assets/design-settings-section-CqFPwhis.js.gz +0 -0
- package/dist/web/assets/design-tab-CVTzge3p.js.br +0 -0
- package/dist/web/assets/design-tab-CVTzge3p.js.gz +0 -0
- package/dist/web/assets/designs-sidebar-panel-DKTSE1LS.js.br +0 -0
- package/dist/web/assets/designs-sidebar-panel-DKTSE1LS.js.gz +0 -0
- package/dist/web/assets/diff-viewer-3VDHcDag.js.br +0 -0
- package/dist/web/assets/diff-viewer-3VDHcDag.js.gz +0 -0
- package/dist/web/assets/docx-preview-FgE_WU6t.js.br +0 -0
- package/dist/web/assets/docx-preview-FgE_WU6t.js.gz +0 -0
- package/dist/web/assets/editor-dialog-BhK77FSu.js.br +0 -0
- package/dist/web/assets/editor-dialog-BhK77FSu.js.gz +0 -0
- package/dist/web/assets/editor-language-service-BIN7M57r.js.br +0 -4
- package/dist/web/assets/editor-language-service-BIN7M57r.js.gz +0 -0
- package/dist/web/assets/explorer-body-DNsWiVO3.js.br +0 -0
- package/dist/web/assets/explorer-body-DNsWiVO3.js.gz +0 -0
- package/dist/web/assets/explorer-window-content-DnOJYhRX.js.br +0 -0
- package/dist/web/assets/explorer-window-content-DnOJYhRX.js.gz +0 -0
- package/dist/web/assets/extension-manager-section-CJtRpUUs.js.br +0 -0
- package/dist/web/assets/extension-manager-section-CJtRpUUs.js.gz +0 -0
- package/dist/web/assets/extension-webview-Bza7cPL1.js.br +0 -0
- package/dist/web/assets/extension-webview-Bza7cPL1.js.gz +0 -0
- package/dist/web/assets/files-settings-section-8rWMj1Oi.js.br +0 -0
- package/dist/web/assets/files-settings-section-8rWMj1Oi.js.gz +0 -0
- package/dist/web/assets/general-settings-section-joWQEgIn.js.br +0 -0
- package/dist/web/assets/general-settings-section-joWQEgIn.js.gz +0 -0
- package/dist/web/assets/git-log-panel-BxYYWEiU.js.br +0 -0
- package/dist/web/assets/git-log-panel-BxYYWEiU.js.gz +0 -0
- package/dist/web/assets/git-review-tab-Btnvgk1e.js.br +0 -0
- package/dist/web/assets/git-review-tab-Btnvgk1e.js.gz +0 -0
- package/dist/web/assets/glide-data-grid-lCwaM1Gy.js.br +0 -0
- package/dist/web/assets/glide-data-grid-lCwaM1Gy.js.gz +0 -0
- package/dist/web/assets/grid-save-dialog-DoEEQ1vM.js.br +0 -0
- package/dist/web/assets/grid-save-dialog-DoEEQ1vM.js.gz +0 -0
- package/dist/web/assets/group-chat-tab-B7Dwx9uL.js.br +0 -0
- package/dist/web/assets/group-chat-tab-B7Dwx9uL.js.gz +0 -0
- package/dist/web/assets/impexp-tab-BtEDbQSn.js.br +0 -0
- package/dist/web/assets/impexp-tab-BtEDbQSn.js.gz +0 -0
- package/dist/web/assets/index-CPBujJc_.js.br +0 -0
- package/dist/web/assets/index-CPBujJc_.js.gz +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-DULhEWPg.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-DULhEWPg.js.gz +0 -0
- package/dist/web/assets/language-servers-section-CwBJsJ31.js.br +0 -0
- package/dist/web/assets/language-servers-section-CwBJsJ31.js.gz +0 -0
- package/dist/web/assets/logs-app-DatfI2Up.js.br +0 -0
- package/dist/web/assets/logs-app-DatfI2Up.js.gz +0 -0
- package/dist/web/assets/lsp-client-tCCcXWsR.js.br +0 -0
- package/dist/web/assets/lsp-client-tCCcXWsR.js.gz +0 -0
- package/dist/web/assets/markdown-renderer-D0YUMQLE.js.br +0 -0
- package/dist/web/assets/markdown-renderer-D0YUMQLE.js.gz +0 -0
- package/dist/web/assets/mobile-explorer-sheet-Bo27IRye.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-Bo27IRye.js.gz +0 -0
- package/dist/web/assets/new-design-dialog-DIOCWZW1.js.br +0 -0
- package/dist/web/assets/new-design-dialog-DIOCWZW1.js.gz +0 -0
- package/dist/web/assets/notifications-settings-section-DSSCTkfX.js.br +0 -0
- package/dist/web/assets/notifications-settings-section-DSSCTkfX.js.gz +0 -0
- package/dist/web/assets/ppmbot-settings-section-BIYSlZu5.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-BIYSlZu5.js.gz +0 -0
- package/dist/web/assets/problems-panel-CH-00nA7.js.br +0 -0
- package/dist/web/assets/problems-panel-CH-00nA7.js.gz +0 -0
- package/dist/web/assets/process-table-DQO0g5do.js.br +0 -0
- package/dist/web/assets/process-table-DQO0g5do.js.gz +0 -0
- package/dist/web/assets/proxy-settings-section-Buo3hvQ4.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-Buo3hvQ4.js.gz +0 -0
- package/dist/web/assets/query-tab-CU0QVZpj.js.br +0 -0
- package/dist/web/assets/query-tab-CU0QVZpj.js.gz +0 -0
- package/dist/web/assets/remote-access-settings-section-vlHMJPdY.js.br +0 -0
- package/dist/web/assets/remote-access-settings-section-vlHMJPdY.js.gz +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-DNqX7d1L.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-DNqX7d1L.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-Dz7tctpc.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-Dz7tctpc.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-BqhQdShH.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-BqhQdShH.js.gz +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-rnTq4ZQS.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-rnTq4ZQS.js.gz +0 -0
- package/dist/web/assets/remote-desktop-window-content-TqjHt0_5.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-TqjHt0_5.js.gz +0 -0
- package/dist/web/assets/rename-object-dialog-D0YpY40E.js.br +0 -0
- package/dist/web/assets/rename-object-dialog-D0YpY40E.js.gz +0 -0
- package/dist/web/assets/review-code-DsF9921h.js.br +0 -0
- package/dist/web/assets/review-code-DsF9921h.js.gz +0 -0
- package/dist/web/assets/save-as-dialog-niU7kVMJ.js.br +0 -0
- package/dist/web/assets/save-as-dialog-niU7kVMJ.js.gz +0 -0
- package/dist/web/assets/schedules-settings-section-Heuv2Kj4.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-Heuv2Kj4.js.gz +0 -0
- package/dist/web/assets/session-review-tab-Dob0FLvA.js.br +0 -0
- package/dist/web/assets/session-review-tab-Dob0FLvA.js.gz +0 -0
- package/dist/web/assets/settings-body-5t6SQbLx.js.br +0 -0
- package/dist/web/assets/settings-body-5t6SQbLx.js.gz +0 -0
- package/dist/web/assets/settings-rows-B0w15zot.js.br +0 -0
- package/dist/web/assets/settings-rows-B0w15zot.js.gz +0 -0
- package/dist/web/assets/settings-section-content-D41IJ62x.js.br +0 -0
- package/dist/web/assets/settings-section-content-D41IJ62x.js.gz +0 -0
- package/dist/web/assets/settings-section-content-DuVO6erO.js +0 -1
- package/dist/web/assets/slash-command-picker-DpZsPuNf.js.br +0 -0
- package/dist/web/assets/slash-command-picker-DpZsPuNf.js.gz +0 -0
- package/dist/web/assets/sql-object-tab-BTS8aHGO.js.br +0 -0
- package/dist/web/assets/sql-object-tab-BTS8aHGO.js.gz +0 -0
- package/dist/web/assets/sqlite-viewer-CVo5eqWj.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-CVo5eqWj.js.gz +0 -0
- package/dist/web/assets/structure-save-dialog-B9Q-Rhgj.js.br +0 -0
- package/dist/web/assets/structure-save-dialog-B9Q-Rhgj.js.gz +0 -0
- package/dist/web/assets/structure-tab-_cQn0KG7.js.br +0 -0
- package/dist/web/assets/structure-tab-_cQn0KG7.js.gz +0 -0
- package/dist/web/assets/system-monitor-body-YS3i1PUs.js.br +0 -0
- package/dist/web/assets/system-monitor-body-YS3i1PUs.js.gz +0 -0
- package/dist/web/assets/tab-host-window-content-CrASOMX8.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-CrASOMX8.js.gz +0 -0
- package/dist/web/assets/table-tab-JlfqyPZR.js.br +0 -0
- package/dist/web/assets/table-tab-JlfqyPZR.js.gz +0 -0
- package/dist/web/assets/telegram-bot-token-field-ctRa2529.js.br +0 -0
- package/dist/web/assets/telegram-bot-token-field-ctRa2529.js.gz +0 -0
- package/dist/web/assets/terminal-tab-BsXBBru0.js.br +0 -0
- package/dist/web/assets/terminal-tab-BsXBBru0.js.gz +0 -0
- package/dist/web/assets/tool-cards-BDzK03U4.js.br +0 -0
- package/dist/web/assets/tool-cards-BDzK03U4.js.gz +0 -0
- package/dist/web/assets/tools-settings-section-DCG74pbd.js.br +0 -0
- package/dist/web/assets/tools-settings-section-DCG74pbd.js.gz +0 -0
- package/dist/web/assets/use-inline-blame-BOn_m8f-.js.br +0 -0
- package/dist/web/assets/use-inline-blame-BOn_m8f-.js.gz +0 -0
- package/dist/web/assets/use-lsp-D144ftsf.js.br +0 -0
- package/dist/web/assets/use-lsp-D144ftsf.js.gz +0 -0
- package/dist/web/assets/use-process-kill-BdmXHMFE.js.br +0 -0
- package/dist/web/assets/use-process-kill-BdmXHMFE.js.gz +0 -0
- package/dist/web/assets/use-sql-schema-info-BQXSMw6p.js.br +0 -0
- package/dist/web/assets/use-sql-schema-info-BQXSMw6p.js.gz +0 -0
- package/dist/web/assets/web-preview-tab-B2OSrnl9.js +0 -1
- package/dist/web/assets/web-preview-tab-B2OSrnl9.js.br +0 -0
- package/dist/web/assets/web-preview-tab-B2OSrnl9.js.gz +0 -0
|
@@ -25,7 +25,14 @@ export interface WindowBodyElement {
|
|
|
25
25
|
|
|
26
26
|
export function useWindowBodyElement(
|
|
27
27
|
windowId: string,
|
|
28
|
-
|
|
28
|
+
/**
|
|
29
|
+
* A React-owned element, rendered after every other child of the frame, that the body is
|
|
30
|
+
* appended into. Appending to the frame itself put the body where React does not know it
|
|
31
|
+
* is: a titlebar mounted again later (the skin resolving to another OS once the host's
|
|
32
|
+
* platform arrives) is inserted before its next React sibling, and a maximized or snapped
|
|
33
|
+
* window has none — so it went in after the body and drew at the bottom of the window.
|
|
34
|
+
*/
|
|
35
|
+
hostRef: RefObject<HTMLElement | null>,
|
|
29
36
|
minimized: boolean,
|
|
30
37
|
): WindowBodyElement {
|
|
31
38
|
const pip = useWindowPip(windowId);
|
|
@@ -44,9 +51,9 @@ export function useWindowBodyElement(
|
|
|
44
51
|
// while the content below is still mounted, and a tab-host body's deferred re-dock still
|
|
45
52
|
// gets to run afterwards on a subtree that is back in the main document.
|
|
46
53
|
useLayoutEffect(() => {
|
|
47
|
-
const
|
|
48
|
-
if (!
|
|
49
|
-
|
|
54
|
+
const host = hostRef.current;
|
|
55
|
+
if (!host) return;
|
|
56
|
+
host.append(body);
|
|
50
57
|
publishWindowSlot(windowId, body);
|
|
51
58
|
return () => {
|
|
52
59
|
const handle = windowPip(windowId);
|
|
@@ -54,7 +61,7 @@ export function useWindowBodyElement(
|
|
|
54
61
|
publishWindowSlot(windowId, null);
|
|
55
62
|
body.remove();
|
|
56
63
|
};
|
|
57
|
-
}, [body,
|
|
64
|
+
}, [body, hostRef, windowId]);
|
|
58
65
|
|
|
59
66
|
// Minimising hides the body via CSS rather than unmounting it — content owns per-window
|
|
60
67
|
// state (explorer history, selection, filter) that a remount would wipe. Never while PiP
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
1
|
+
import { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { toast } from "sonner";
|
|
3
3
|
import { Check, Copy, ExternalLink, Globe, Lock, RotateCw } from "@/lib/icons";
|
|
4
4
|
import { tunnelsApi } from "@/lib/api-tunnels";
|
|
5
5
|
import { copyToClipboard } from "@/lib/clipboard";
|
|
6
6
|
import { safePreviewUrl } from "@/lib/web-preview-url";
|
|
7
|
+
import { usePanelStore } from "@/stores/panel-store";
|
|
7
8
|
|
|
8
9
|
const actionClass =
|
|
9
10
|
"flex items-center justify-center shrink-0 rounded min-h-11 min-w-11 md:min-h-7 md:min-w-7 text-muted-foreground hover:text-foreground hover:bg-muted";
|
|
@@ -28,14 +29,45 @@ function allowFramingHere(): Promise<void> {
|
|
|
28
29
|
* A dev server on the host, forwarded and shown in a tab. The toolbar sits at the bottom
|
|
29
30
|
* below `md`, in the thumb zone, as a phone browser's address bar does.
|
|
30
31
|
*/
|
|
31
|
-
export function WebPreviewTab({ metadata }: { metadata?: Record<string, unknown
|
|
32
|
-
const
|
|
32
|
+
export function WebPreviewTab({ metadata, tabId }: { metadata?: Record<string, unknown>; tabId?: string }) {
|
|
33
|
+
const requestedUrl = safePreviewUrl(metadata?.url, window.location.origin);
|
|
34
|
+
const savedUrl = safePreviewUrl(metadata?.currentUrl, window.location.origin);
|
|
35
|
+
const initialUrl = savedUrl && requestedUrl && new URL(savedUrl).origin === new URL(requestedUrl).origin ? savedUrl : requestedUrl;
|
|
36
|
+
const [url, setUrl] = useState(initialUrl);
|
|
37
|
+
const [src, setSrc] = useState(initialUrl);
|
|
38
|
+
const iframe = useRef<HTMLIFrameElement>(null);
|
|
39
|
+
const command = `${requestedUrl}:${String(metadata?.aiOpenAt ?? "")}`;
|
|
40
|
+
const lastCommand = useRef(command);
|
|
33
41
|
// `local` is the AI's open_url on the host's own browser: no forward, so only this machine reaches it.
|
|
34
42
|
const isPrivate = metadata?.via === "tailscale" || metadata?.via === "local";
|
|
35
43
|
const [reloadKey, setReloadKey] = useState(0);
|
|
36
44
|
const [copied, setCopied] = useState(false);
|
|
37
45
|
const [framingAsked, setFramingAsked] = useState(false);
|
|
38
46
|
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (lastCommand.current === command) return;
|
|
49
|
+
lastCommand.current = command;
|
|
50
|
+
setUrl(requestedUrl);
|
|
51
|
+
setSrc(requestedUrl);
|
|
52
|
+
}, [command, requestedUrl]);
|
|
53
|
+
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
const receive = (event: MessageEvent) => {
|
|
56
|
+
if (!requestedUrl || !iframe.current?.contentWindow || event.source !== iframe.current.contentWindow
|
|
57
|
+
|| event.origin !== new URL(requestedUrl).origin || event.data?.ppm !== "web-preview-navigation") return;
|
|
58
|
+
const next = safePreviewUrl(event.data.url, window.location.origin);
|
|
59
|
+
if (!next || new URL(next).origin !== event.origin) return;
|
|
60
|
+
setUrl(next);
|
|
61
|
+
if (tabId) {
|
|
62
|
+
const store = usePanelStore.getState();
|
|
63
|
+
const tab = Object.values(store.panels).flatMap((panel) => panel.tabs).find((item) => item.id === tabId);
|
|
64
|
+
if (tab && tab.metadata?.currentUrl !== next) store.updateTab(tabId, { metadata: { ...tab.metadata, currentUrl: next } });
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
window.addEventListener("message", receive);
|
|
68
|
+
return () => window.removeEventListener("message", receive);
|
|
69
|
+
}, [requestedUrl, tabId]);
|
|
70
|
+
|
|
39
71
|
useEffect(() => {
|
|
40
72
|
let live = true;
|
|
41
73
|
void allowFramingHere().then(() => { if (live) setFramingAsked(true); });
|
|
@@ -64,7 +96,7 @@ export function WebPreviewTab({ metadata }: { metadata?: Record<string, unknown>
|
|
|
64
96
|
{isPrivate ? <Lock className="size-3.5" /> : <Globe className="size-3.5" />}
|
|
65
97
|
</span>
|
|
66
98
|
<span className="flex-1 min-w-0 truncate text-xs text-muted-foreground select-all">{url}</span>
|
|
67
|
-
<button type="button" onClick={() => void allowFramingHere().then(() => setReloadKey((k) => k + 1))} title="Reload" aria-label="Reload" className={actionClass}>
|
|
99
|
+
<button type="button" onClick={() => void allowFramingHere().then(() => { setSrc(url); setReloadKey((k) => k + 1); })} title="Reload" aria-label="Reload" className={actionClass}>
|
|
68
100
|
<RotateCw className="size-4" />
|
|
69
101
|
</button>
|
|
70
102
|
<button type="button" onClick={copy} title="Copy URL" aria-label="Copy URL" className={actionClass}>
|
|
@@ -78,10 +110,11 @@ export function WebPreviewTab({ metadata }: { metadata?: Record<string, unknown>
|
|
|
78
110
|
own cookies and storage; without allow-top-navigation it cannot navigate PPM away. */}
|
|
79
111
|
{framingAsked ? (
|
|
80
112
|
<iframe
|
|
113
|
+
ref={iframe}
|
|
81
114
|
// The AI's open_url sets aiOpenAt on every call: a page it opens again reloads.
|
|
82
115
|
key={`${reloadKey}:${String(metadata?.aiOpenAt ?? "")}`}
|
|
83
116
|
title={`Preview of ${url}`}
|
|
84
|
-
src={
|
|
117
|
+
src={src ?? undefined}
|
|
85
118
|
sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox allow-modals allow-downloads"
|
|
86
119
|
allow="clipboard-read; clipboard-write; fullscreen"
|
|
87
120
|
referrerPolicy="no-referrer"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-C-P1aR4p.js";import"./icons-BwyIKaTT.js";import{r as e}from"./settings-section-content-D41IJ62x.js";export{e as preloadSettingsSections};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{A as r,Cn as i,Gt as a,_r as o,gt as s,ut as c}from"./icons-BwyIKaTT.js";import{k as l}from"./api-client-xQDlhUTu.js";import{r as u}from"./clipboard-D-VCry-F.js";import{Dn as d,wn as f}from"./index-CPBujJc_.js";var p=e(t(),1),m=n(),h=`flex items-center justify-center shrink-0 rounded min-h-11 min-w-11 md:min-h-7 md:min-w-7 text-muted-foreground hover:text-foreground hover:bg-muted`,g=3e3;function _(){return Promise.race([f.allowFraming(window.location.origin).then(()=>void 0,()=>void 0),new Promise(e=>setTimeout(e,g))])}function v({metadata:e}){let t=d(e?.url,window.location.origin),n=e?.via===`tailscale`||e?.via===`local`,[f,g]=(0,p.useState)(0),[v,y]=(0,p.useState)(!1),[b,x]=(0,p.useState)(!1);if((0,p.useEffect)(()=>{let e=!0;return _().then(()=>{e&&x(!0)}),()=>{e=!1}},[]),!t)return(0,m.jsx)(`div`,{role:`alert`,className:`p-4 text-sm text-destructive`,children:`This preview has no address PPM can show.`});let S=()=>{u(t).then(e=>{if(!e){l.error(`Failed to copy URL`);return}y(!0),setTimeout(()=>y(!1),2e3)})};return(0,m.jsxs)(`div`,{className:`flex h-full w-full flex-col-reverse md:flex-col bg-background`,children:[(0,m.jsxs)(`div`,{role:`toolbar`,"aria-label":`Web preview`,className:`flex items-center gap-2 md:gap-1 shrink-0 h-12 md:h-8 px-2 border-t md:border-t-0 md:border-b border-border`,children:[(0,m.jsx)(`span`,{className:`flex items-center justify-center shrink-0 size-7 text-muted-foreground`,title:e?.via===`local`?`Private: only this machine can open this address`:n?`Private: only devices in your tailnet can open this address`:`Public: anyone with this link can open it`,children:n?(0,m.jsx)(i,{className:`size-3.5`}):(0,m.jsx)(a,{className:`size-3.5`})}),(0,m.jsx)(`span`,{className:`flex-1 min-w-0 truncate text-xs text-muted-foreground select-all`,children:t}),(0,m.jsx)(`button`,{type:`button`,onClick:()=>void _().then(()=>g(e=>e+1)),title:`Reload`,"aria-label":`Reload`,className:h,children:(0,m.jsx)(o,{className:`size-4`})}),(0,m.jsx)(`button`,{type:`button`,onClick:S,title:`Copy URL`,"aria-label":`Copy URL`,className:h,children:v?(0,m.jsx)(r,{className:`size-4 text-success`}):(0,m.jsx)(c,{className:`size-4`})}),(0,m.jsx)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,title:`Open in browser`,"aria-label":`Open in browser`,className:h,children:(0,m.jsx)(s,{className:`size-4`})})]}),b?(0,m.jsx)(`iframe`,{title:`Preview of ${t}`,src:t,sandbox:`allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox allow-modals allow-downloads`,allow:`clipboard-read; clipboard-write; fullscreen`,referrerPolicy:`no-referrer`,className:`flex-1 min-h-0 w-full border-0 bg-white`},`${f}:${String(e?.aiOpenAt??``)}`):(0,m.jsx)(`div`,{className:`flex-1 min-h-0 w-full bg-white`})]})}export{v as WebPreviewTab};
|
|
Binary file
|
|
Binary file
|