@hienlh/ppm 0.23.17 → 0.23.18
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 +6 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/http-api.md +1 -1
- package/dist/web/assets/{accounts-settings-section-BqsI4Ixj.js → accounts-settings-section-BES4EFGQ.js} +1 -1
- package/dist/web/assets/accounts-settings-section-BES4EFGQ.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-BES4EFGQ.js.gz +0 -0
- package/dist/web/assets/{agent-session-sheet-BmoNB8BG.js → agent-session-sheet-BlZmcb40.js} +2 -2
- package/dist/web/assets/agent-session-sheet-BlZmcb40.js.br +0 -0
- package/dist/web/assets/agent-session-sheet-BlZmcb40.js.gz +0 -0
- package/dist/web/assets/{agent-session-window-content-rlCrYBYv.js → agent-session-window-content-zCzFZ0XT.js} +1 -1
- package/dist/web/assets/agent-session-window-content-zCzFZ0XT.js.br +0 -0
- package/dist/web/assets/agent-session-window-content-zCzFZ0XT.js.gz +0 -0
- package/dist/web/assets/{ai-resource-editor-CUOR9Xtf.js → ai-resource-editor-Dh8sQhL2.js} +1 -1
- package/dist/web/assets/ai-resource-editor-Dh8sQhL2.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-Dh8sQhL2.js.gz +0 -0
- package/dist/web/assets/{ai-settings-section-CNdbcCaI.js → ai-settings-section-C6NKrktb.js} +1 -1
- package/dist/web/assets/ai-settings-section-C6NKrktb.js.br +0 -0
- package/dist/web/assets/ai-settings-section-C6NKrktb.js.gz +0 -0
- package/dist/web/assets/{ai-settings-section-aXXTb0dN.js → ai-settings-section-Ck_0ArV1.js} +1 -1
- package/dist/web/assets/{android-tab-BsuTMKJw.js → android-tab-BLxZKtMP.js} +1 -1
- package/dist/web/assets/android-tab-BLxZKtMP.js.br +0 -0
- package/dist/web/assets/android-tab-BLxZKtMP.js.gz +0 -0
- package/dist/web/assets/{appearance-settings-section-Dk6d_fTo.js → appearance-settings-section-DFJdBUZ8.js} +1 -1
- package/dist/web/assets/appearance-settings-section-DFJdBUZ8.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-DFJdBUZ8.js.gz +0 -0
- package/dist/web/assets/{apps-panel-C20ys4Cy.js → apps-panel-C2dyMFVy.js} +1 -1
- package/dist/web/assets/apps-panel-C2dyMFVy.js.br +0 -0
- package/dist/web/assets/apps-panel-C2dyMFVy.js.gz +0 -0
- package/dist/web/assets/{branch-review-tab-CcvkQMRA.js → branch-review-tab-BIpjOgOQ.js} +1 -1
- package/dist/web/assets/branch-review-tab-BIpjOgOQ.js.br +0 -0
- package/dist/web/assets/branch-review-tab-BIpjOgOQ.js.gz +0 -0
- package/dist/web/assets/{chat-tab-BAh37UwG.js → chat-tab-CADhIdsz.js} +1 -1
- package/dist/web/assets/chat-tab-CADhIdsz.js.br +2 -0
- package/dist/web/assets/chat-tab-CADhIdsz.js.gz +0 -0
- package/dist/web/assets/{chat-tab-D-cl4yMo.js → chat-tab-WbP7BIUp.js} +3 -3
- package/dist/web/assets/chat-tab-WbP7BIUp.js.br +0 -0
- package/dist/web/assets/chat-tab-WbP7BIUp.js.gz +0 -0
- package/dist/web/assets/{code-editor-DIGsPNPS.js → code-editor-BEjBAz0q.js} +4 -4
- package/dist/web/assets/code-editor-BEjBAz0q.js.br +0 -0
- package/dist/web/assets/code-editor-BEjBAz0q.js.gz +0 -0
- package/dist/web/assets/{codex-reset-credit-button-C0a2svAw.js → codex-reset-credit-button-Qths4oQl.js} +1 -1
- package/dist/web/assets/codex-reset-credit-button-Qths4oQl.js.br +0 -0
- package/dist/web/assets/codex-reset-credit-button-Qths4oQl.js.gz +0 -0
- package/dist/web/assets/{conflict-editor-zORSNMk6.js → conflict-editor-DwFgcGGr.js} +1 -1
- package/dist/web/assets/conflict-editor-DwFgcGGr.js.br +0 -0
- package/dist/web/assets/conflict-editor-DwFgcGGr.js.gz +0 -0
- package/dist/web/assets/{connection-form-tab-BkE7wACA.js → connection-form-tab-DJ3Lxpzd.js} +1 -1
- package/dist/web/assets/connection-form-tab-DJ3Lxpzd.js.br +0 -0
- package/dist/web/assets/connection-form-tab-DJ3Lxpzd.js.gz +0 -0
- package/dist/web/assets/{csv-preview-CDUY0I94.js → csv-preview-BMF0HuuN.js} +1 -1
- package/dist/web/assets/csv-preview-BMF0HuuN.js.br +0 -0
- package/dist/web/assets/csv-preview-BMF0HuuN.js.gz +0 -0
- package/dist/web/assets/{db-tab-parts-tgVIgcs5.js → db-tab-parts-BbNfuvwC.js} +1 -1
- package/dist/web/assets/db-tab-parts-BbNfuvwC.js.br +0 -0
- package/dist/web/assets/db-tab-parts-BbNfuvwC.js.gz +0 -0
- package/dist/web/assets/{design-settings-section-CqFPwhis.js → design-settings-section-BVcBTBdz.js} +1 -1
- package/dist/web/assets/design-settings-section-BVcBTBdz.js.br +0 -0
- package/dist/web/assets/design-settings-section-BVcBTBdz.js.gz +0 -0
- package/dist/web/assets/{design-tab-CVTzge3p.js → design-tab-msL92Mgr.js} +1 -1
- package/dist/web/assets/design-tab-msL92Mgr.js.br +0 -0
- package/dist/web/assets/design-tab-msL92Mgr.js.gz +0 -0
- package/dist/web/assets/{designs-sidebar-panel-DKTSE1LS.js → designs-sidebar-panel-hLIuDsDd.js} +1 -1
- package/dist/web/assets/designs-sidebar-panel-hLIuDsDd.js.br +0 -0
- package/dist/web/assets/designs-sidebar-panel-hLIuDsDd.js.gz +0 -0
- package/dist/web/assets/{diff-viewer-3VDHcDag.js → diff-viewer-BLYGfIik.js} +1 -1
- package/dist/web/assets/diff-viewer-BLYGfIik.js.br +0 -0
- package/dist/web/assets/diff-viewer-BLYGfIik.js.gz +0 -0
- package/dist/web/assets/{docx-preview-FgE_WU6t.js → docx-preview-D0ORQkvI.js} +1 -1
- package/dist/web/assets/docx-preview-D0ORQkvI.js.br +0 -0
- package/dist/web/assets/docx-preview-D0ORQkvI.js.gz +0 -0
- package/dist/web/assets/{editor-dialog-BhK77FSu.js → editor-dialog-BdkAgK-M.js} +1 -1
- package/dist/web/assets/editor-dialog-BdkAgK-M.js.br +0 -0
- package/dist/web/assets/editor-dialog-BdkAgK-M.js.gz +0 -0
- package/dist/web/assets/{editor-language-service-BIN7M57r.js → editor-language-service-B2TYY2sw.js} +1 -1
- package/dist/web/assets/editor-language-service-B2TYY2sw.js.br +0 -0
- package/dist/web/assets/editor-language-service-B2TYY2sw.js.gz +0 -0
- package/dist/web/assets/{explorer-body-DNsWiVO3.js → explorer-body-B-67PDYd.js} +1 -1
- package/dist/web/assets/explorer-body-B-67PDYd.js.br +0 -0
- package/dist/web/assets/explorer-body-B-67PDYd.js.gz +0 -0
- package/dist/web/assets/{explorer-window-content-DnOJYhRX.js → explorer-window-content-ndGjHH-i.js} +1 -1
- package/dist/web/assets/explorer-window-content-ndGjHH-i.js.br +0 -0
- package/dist/web/assets/explorer-window-content-ndGjHH-i.js.gz +0 -0
- package/dist/web/assets/{extension-manager-section-CJtRpUUs.js → extension-manager-section-C3Z99hLd.js} +1 -1
- package/dist/web/assets/extension-manager-section-C3Z99hLd.js.br +0 -0
- package/dist/web/assets/extension-manager-section-C3Z99hLd.js.gz +0 -0
- package/dist/web/assets/{extension-webview-Bza7cPL1.js → extension-webview-oBN-quI3.js} +1 -1
- package/dist/web/assets/extension-webview-oBN-quI3.js.br +0 -0
- package/dist/web/assets/extension-webview-oBN-quI3.js.gz +0 -0
- package/dist/web/assets/{files-settings-section-8rWMj1Oi.js → files-settings-section-pzPZEYe2.js} +1 -1
- package/dist/web/assets/files-settings-section-pzPZEYe2.js.br +0 -0
- package/dist/web/assets/{files-settings-section-8rWMj1Oi.js.gz → files-settings-section-pzPZEYe2.js.gz} +0 -0
- package/dist/web/assets/{general-settings-section-joWQEgIn.js → general-settings-section-BxNNbh5b.js} +1 -1
- package/dist/web/assets/general-settings-section-BxNNbh5b.js.br +0 -0
- package/dist/web/assets/general-settings-section-BxNNbh5b.js.gz +0 -0
- package/dist/web/assets/{git-log-panel-BxYYWEiU.js → git-log-panel-CEAF4ST-.js} +1 -1
- package/dist/web/assets/git-log-panel-CEAF4ST-.js.br +0 -0
- package/dist/web/assets/git-log-panel-CEAF4ST-.js.gz +0 -0
- package/dist/web/assets/{git-review-tab-Btnvgk1e.js → git-review-tab-Cp5DYE5b.js} +1 -1
- package/dist/web/assets/git-review-tab-Cp5DYE5b.js.br +0 -0
- package/dist/web/assets/git-review-tab-Cp5DYE5b.js.gz +0 -0
- package/dist/web/assets/{glide-data-grid-lCwaM1Gy.js → glide-data-grid-BrwKKQhc.js} +1 -1
- package/dist/web/assets/glide-data-grid-BrwKKQhc.js.br +0 -0
- package/dist/web/assets/glide-data-grid-BrwKKQhc.js.gz +0 -0
- package/dist/web/assets/{grid-save-dialog-DoEEQ1vM.js → grid-save-dialog-inaY39lZ.js} +1 -1
- package/dist/web/assets/grid-save-dialog-inaY39lZ.js.br +0 -0
- package/dist/web/assets/grid-save-dialog-inaY39lZ.js.gz +0 -0
- package/dist/web/assets/{group-chat-tab-B7Dwx9uL.js → group-chat-tab-DpvHkXCK.js} +1 -1
- package/dist/web/assets/group-chat-tab-DpvHkXCK.js.br +0 -0
- package/dist/web/assets/group-chat-tab-DpvHkXCK.js.gz +0 -0
- package/dist/web/assets/{impexp-tab-BtEDbQSn.js → impexp-tab-CDgODpaL.js} +1 -1
- package/dist/web/assets/impexp-tab-CDgODpaL.js.br +0 -0
- package/dist/web/assets/impexp-tab-CDgODpaL.js.gz +0 -0
- package/dist/web/assets/{index-CPBujJc_.js → index-EznfgwH9.js} +5 -5
- package/dist/web/assets/index-EznfgwH9.js.br +0 -0
- package/dist/web/assets/index-EznfgwH9.js.gz +0 -0
- package/dist/web/assets/{jira-watcher-section-mnly-maX.js → jira-watcher-section-CvxfscZl.js} +1 -1
- package/dist/web/assets/{keybindings-store-BSPTMRiv.js → keybindings-store-BqXn-D3b.js} +1 -1
- package/dist/web/assets/{keyboard-shortcuts-section-DULhEWPg.js → keyboard-shortcuts-section-HaqDDilx.js} +1 -1
- package/dist/web/assets/keyboard-shortcuts-section-HaqDDilx.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-HaqDDilx.js.gz +0 -0
- package/dist/web/assets/{language-servers-section-CwBJsJ31.js → language-servers-section-B2mGPtGX.js} +2 -2
- package/dist/web/assets/language-servers-section-B2mGPtGX.js.br +0 -0
- package/dist/web/assets/language-servers-section-B2mGPtGX.js.gz +0 -0
- package/dist/web/assets/{logs-app-DatfI2Up.js → logs-app-Cv2fsZxf.js} +1 -1
- package/dist/web/assets/logs-app-Cv2fsZxf.js.br +0 -0
- package/dist/web/assets/logs-app-Cv2fsZxf.js.gz +0 -0
- package/dist/web/assets/{logs-tab-an_9ujcz.js → logs-tab-D9orkAwZ.js} +1 -1
- package/dist/web/assets/{logs-window-content-Usr3JTmE.js → logs-window-content-DygG8-n0.js} +1 -1
- package/dist/web/assets/{lsp-client-tCCcXWsR.js → lsp-client-DpKk7qms.js} +1 -1
- package/dist/web/assets/lsp-client-DpKk7qms.js.br +0 -0
- package/dist/web/assets/lsp-client-DpKk7qms.js.gz +0 -0
- package/dist/web/assets/{markdown-renderer-DdzxNveP.js → markdown-renderer-YDuDxTPt.js} +1 -1
- package/dist/web/assets/{markdown-renderer-D0YUMQLE.js → markdown-renderer-zuzkV4A5.js} +1 -1
- package/dist/web/assets/markdown-renderer-zuzkV4A5.js.br +0 -0
- package/dist/web/assets/markdown-renderer-zuzkV4A5.js.gz +0 -0
- package/dist/web/assets/{mobile-explorer-sheet-Bo27IRye.js → mobile-explorer-sheet-DrQaPEZo.js} +1 -1
- package/dist/web/assets/mobile-explorer-sheet-DrQaPEZo.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-DrQaPEZo.js.gz +0 -0
- package/dist/web/assets/{new-design-dialog-DIOCWZW1.js → new-design-dialog-C00L2Ei1.js} +1 -1
- package/dist/web/assets/new-design-dialog-C00L2Ei1.js.br +0 -0
- package/dist/web/assets/new-design-dialog-C00L2Ei1.js.gz +0 -0
- package/dist/web/assets/{notification-store-CRPOp-6B.js → notification-store-BHQjJkNC.js} +1 -1
- package/dist/web/assets/{notifications-settings-section-DSSCTkfX.js → notifications-settings-section-DHx7YbrU.js} +1 -1
- package/dist/web/assets/notifications-settings-section-DHx7YbrU.js.br +0 -0
- package/dist/web/assets/notifications-settings-section-DHx7YbrU.js.gz +0 -0
- package/dist/web/assets/{ppmbot-settings-section-BIYSlZu5.js → ppmbot-settings-section-8OxZnTeE.js} +1 -1
- package/dist/web/assets/ppmbot-settings-section-8OxZnTeE.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-8OxZnTeE.js.gz +0 -0
- package/dist/web/assets/{problems-panel-CH-00nA7.js → problems-panel-uCMYh7nY.js} +1 -1
- package/dist/web/assets/problems-panel-uCMYh7nY.js.br +0 -0
- package/dist/web/assets/problems-panel-uCMYh7nY.js.gz +0 -0
- package/dist/web/assets/{process-table-DQO0g5do.js → process-table-D6fDra-t.js} +1 -1
- package/dist/web/assets/process-table-D6fDra-t.js.br +0 -0
- package/dist/web/assets/process-table-D6fDra-t.js.gz +0 -0
- package/dist/web/assets/{proxy-settings-section-Buo3hvQ4.js → proxy-settings-section-B8vjc9n-.js} +1 -1
- package/dist/web/assets/proxy-settings-section-B8vjc9n-.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-B8vjc9n-.js.gz +0 -0
- package/dist/web/assets/{query-tab-CU0QVZpj.js → query-tab-BaIWJrsN.js} +1 -1
- package/dist/web/assets/query-tab-BaIWJrsN.js.br +0 -0
- package/dist/web/assets/query-tab-BaIWJrsN.js.gz +0 -0
- package/dist/web/assets/{remote-access-settings-section-vlHMJPdY.js → remote-access-settings-section-DIrFElKv.js} +1 -1
- package/dist/web/assets/remote-access-settings-section-DIrFElKv.js.br +0 -0
- package/dist/web/assets/remote-access-settings-section-DIrFElKv.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-clipboard-notice-DNqX7d1L.js → remote-desktop-clipboard-notice-Cg2Z-66K.js} +1 -1
- package/dist/web/assets/remote-desktop-clipboard-notice-Cg2Z-66K.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-Cg2Z-66K.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-sheet-Dz7tctpc.js → remote-desktop-mobile-sheet-CPkPaOeS.js} +2 -2
- package/dist/web/assets/remote-desktop-mobile-sheet-CPkPaOeS.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-CPkPaOeS.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-view-BqhQdShH.js → remote-desktop-mobile-view-CFyOCkms.js} +1 -1
- package/dist/web/assets/remote-desktop-mobile-view-CFyOCkms.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-CFyOCkms.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-readiness-gate-rnTq4ZQS.js → remote-desktop-readiness-gate-CBAZK0-B.js} +1 -1
- package/dist/web/assets/remote-desktop-readiness-gate-CBAZK0-B.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-CBAZK0-B.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-window-content-TqjHt0_5.js → remote-desktop-window-content-CNk7SS-W.js} +1 -1
- package/dist/web/assets/remote-desktop-window-content-CNk7SS-W.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-CNk7SS-W.js.gz +0 -0
- package/dist/web/assets/{rename-object-dialog-D0YpY40E.js → rename-object-dialog-MhvD2boE.js} +1 -1
- package/dist/web/assets/rename-object-dialog-MhvD2boE.js.br +0 -0
- package/dist/web/assets/rename-object-dialog-MhvD2boE.js.gz +0 -0
- package/dist/web/assets/{review-code-DsF9921h.js → review-code-B9zXrfyG.js} +1 -1
- package/dist/web/assets/review-code-B9zXrfyG.js.br +0 -0
- package/dist/web/assets/review-code-B9zXrfyG.js.gz +0 -0
- package/dist/web/assets/{save-as-dialog-niU7kVMJ.js → save-as-dialog-5yBgewV3.js} +1 -1
- package/dist/web/assets/save-as-dialog-5yBgewV3.js.br +0 -0
- package/dist/web/assets/save-as-dialog-5yBgewV3.js.gz +0 -0
- package/dist/web/assets/{schedules-settings-section-Heuv2Kj4.js → schedules-settings-section-BD3-tlU-.js} +1 -1
- package/dist/web/assets/schedules-settings-section-BD3-tlU-.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-BD3-tlU-.js.gz +0 -0
- package/dist/web/assets/{session-review-tab-Dob0FLvA.js → session-review-tab-DYJFhsGk.js} +1 -1
- package/dist/web/assets/session-review-tab-DYJFhsGk.js.br +0 -0
- package/dist/web/assets/session-review-tab-DYJFhsGk.js.gz +0 -0
- package/dist/web/assets/{settings-body-5t6SQbLx.js → settings-body-CWBVeKKg.js} +1 -1
- package/dist/web/assets/settings-body-CWBVeKKg.js.br +4 -0
- package/dist/web/assets/settings-body-CWBVeKKg.js.gz +0 -0
- package/dist/web/assets/{settings-rows-B0w15zot.js → settings-rows-B7fyQuu_.js} +1 -1
- package/dist/web/assets/settings-rows-B7fyQuu_.js.br +0 -0
- package/dist/web/assets/settings-rows-B7fyQuu_.js.gz +0 -0
- package/dist/web/assets/settings-section-content-BPQN6KdN.js +1 -0
- package/dist/web/assets/{settings-section-content-D41IJ62x.js → settings-section-content-CoJcm6JM.js} +2 -2
- package/dist/web/assets/settings-section-content-CoJcm6JM.js.br +0 -0
- package/dist/web/assets/settings-section-content-CoJcm6JM.js.gz +0 -0
- package/dist/web/assets/{settings-tab-DGU5FVbO.js → settings-tab-DWzU1RkL.js} +1 -1
- package/dist/web/assets/{settings-window-content-Da5PY5MZ.js → settings-window-content-CAThkpa8.js} +1 -1
- package/dist/web/assets/{slash-command-picker-DpZsPuNf.js → slash-command-picker-dDl9riKP.js} +1 -1
- package/dist/web/assets/slash-command-picker-dDl9riKP.js.br +0 -0
- package/dist/web/assets/slash-command-picker-dDl9riKP.js.gz +0 -0
- package/dist/web/assets/{sql-object-tab-BTS8aHGO.js → sql-object-tab-DND9osIv.js} +1 -1
- package/dist/web/assets/sql-object-tab-DND9osIv.js.br +0 -0
- package/dist/web/assets/sql-object-tab-DND9osIv.js.gz +0 -0
- package/dist/web/assets/{sqlite-viewer-CVo5eqWj.js → sqlite-viewer-P7UpXmyZ.js} +1 -1
- package/dist/web/assets/sqlite-viewer-P7UpXmyZ.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-P7UpXmyZ.js.gz +0 -0
- package/dist/web/assets/{structure-save-dialog-B9Q-Rhgj.js → structure-save-dialog-DX1H1Qy2.js} +1 -1
- package/dist/web/assets/structure-save-dialog-DX1H1Qy2.js.br +0 -0
- package/dist/web/assets/structure-save-dialog-DX1H1Qy2.js.gz +0 -0
- package/dist/web/assets/{structure-tab-_cQn0KG7.js → structure-tab-1QhNP2ob.js} +1 -1
- package/dist/web/assets/structure-tab-1QhNP2ob.js.br +0 -0
- package/dist/web/assets/structure-tab-1QhNP2ob.js.gz +0 -0
- package/dist/web/assets/{system-monitor-body-YS3i1PUs.js → system-monitor-body-CPAAjIdT.js} +2 -2
- package/dist/web/assets/system-monitor-body-CPAAjIdT.js.br +0 -0
- package/dist/web/assets/system-monitor-body-CPAAjIdT.js.gz +0 -0
- package/dist/web/assets/{system-monitor-tab-D63xmd8U.js → system-monitor-tab-D_1PBGwv.js} +1 -1
- package/dist/web/assets/{system-monitor-window-content-DkCsK8Ed.js → system-monitor-window-content-dVxWFqHP.js} +1 -1
- package/dist/web/assets/{tab-host-window-content-CrASOMX8.js → tab-host-window-content-BBsg5_fz.js} +1 -1
- package/dist/web/assets/tab-host-window-content-BBsg5_fz.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-BBsg5_fz.js.gz +0 -0
- package/dist/web/assets/{table-tab-JlfqyPZR.js → table-tab-BO-q-hSc.js} +1 -1
- package/dist/web/assets/table-tab-BO-q-hSc.js.br +0 -0
- package/dist/web/assets/table-tab-BO-q-hSc.js.gz +0 -0
- package/dist/web/assets/{telegram-bot-token-field-ctRa2529.js → telegram-bot-token-field-BVYWBpX_.js} +1 -1
- package/dist/web/assets/telegram-bot-token-field-BVYWBpX_.js.br +0 -0
- package/dist/web/assets/telegram-bot-token-field-BVYWBpX_.js.gz +0 -0
- package/dist/web/assets/{terminal-tab-BsXBBru0.js → terminal-tab-DjPXnuO8.js} +1 -1
- package/dist/web/assets/terminal-tab-DjPXnuO8.js.br +0 -0
- package/dist/web/assets/terminal-tab-DjPXnuO8.js.gz +0 -0
- package/dist/web/assets/{tool-cards-BDzK03U4.js → tool-cards-DXV9SEE8.js} +2 -2
- package/dist/web/assets/tool-cards-DXV9SEE8.js.br +0 -0
- package/dist/web/assets/tool-cards-DXV9SEE8.js.gz +0 -0
- package/dist/web/assets/{tools-settings-section-DCG74pbd.js → tools-settings-section-Cc5YKOB6.js} +1 -1
- package/dist/web/assets/tools-settings-section-Cc5YKOB6.js.br +0 -0
- package/dist/web/assets/tools-settings-section-Cc5YKOB6.js.gz +0 -0
- package/dist/web/assets/{use-inline-blame-BOn_m8f-.js → use-inline-blame-f6WMZkEv.js} +1 -1
- package/dist/web/assets/use-inline-blame-f6WMZkEv.js.br +0 -0
- package/dist/web/assets/use-inline-blame-f6WMZkEv.js.gz +0 -0
- package/dist/web/assets/{use-lsp-D144ftsf.js → use-lsp-B_fmU9ja.js} +1 -1
- package/dist/web/assets/use-lsp-B_fmU9ja.js.br +0 -0
- package/dist/web/assets/use-lsp-B_fmU9ja.js.gz +0 -0
- package/dist/web/assets/{use-monaco-theme-ArU1f9T6.js → use-monaco-theme-nu5Fogu3.js} +1 -1
- package/dist/web/assets/{use-process-kill-BdmXHMFE.js → use-process-kill-B8Mf4_Yy.js} +1 -1
- package/dist/web/assets/use-process-kill-B8Mf4_Yy.js.br +0 -0
- package/dist/web/assets/use-process-kill-B8Mf4_Yy.js.gz +0 -0
- package/dist/web/assets/{use-sql-schema-info-BQXSMw6p.js → use-sql-schema-info-Dp6TCir5.js} +1 -1
- package/dist/web/assets/use-sql-schema-info-Dp6TCir5.js.br +0 -0
- package/dist/web/assets/use-sql-schema-info-Dp6TCir5.js.gz +0 -0
- package/dist/web/assets/{use-websocket-rWdrMWa8.js → use-websocket-RuENPZ_x.js} +1 -1
- package/dist/web/assets/web-preview-tab-ClOiV3BO.js +1 -0
- package/dist/web/assets/web-preview-tab-ClOiV3BO.js.br +0 -0
- package/dist/web/assets/web-preview-tab-ClOiV3BO.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/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/codex-reset-credit-button-C0a2svAw.js.gz +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/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
|
@@ -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
|