@hienlh/ppm 0.23.26 → 0.23.27
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-CZglHifc.js +1 -0
- package/dist/web/assets/accounts-settings-section-CZglHifc.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-CZglHifc.js.gz +0 -0
- package/dist/web/assets/{agent-session-sheet-DmbSfFGz.js → agent-session-sheet-B3VLD2H6.js} +2 -2
- package/dist/web/assets/agent-session-sheet-B3VLD2H6.js.br +0 -0
- package/dist/web/assets/agent-session-sheet-B3VLD2H6.js.gz +0 -0
- package/dist/web/assets/{agent-session-window-content-Dk8x3ozF.js → agent-session-window-content-HEdIT_LQ.js} +1 -1
- package/dist/web/assets/agent-session-window-content-HEdIT_LQ.js.br +0 -0
- package/dist/web/assets/agent-session-window-content-HEdIT_LQ.js.gz +0 -0
- package/dist/web/assets/{ai-resource-editor-MKwjYcDh.js → ai-resource-editor-CFbXgGMo.js} +1 -1
- package/dist/web/assets/ai-resource-editor-CFbXgGMo.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-CFbXgGMo.js.gz +0 -0
- package/dist/web/assets/ai-settings-section-BNiVD9D3.js +1 -0
- package/dist/web/assets/ai-settings-section-BNiVD9D3.js.br +0 -0
- package/dist/web/assets/ai-settings-section-BNiVD9D3.js.gz +0 -0
- package/dist/web/assets/{ai-settings-section-OZOaLw5z.js → ai-settings-section-W0kfADRB.js} +1 -1
- package/dist/web/assets/{android-tab-CUkjbfyi.js → android-tab-CY3aa_vU.js} +1 -1
- package/dist/web/assets/android-tab-CY3aa_vU.js.br +0 -0
- package/dist/web/assets/android-tab-CY3aa_vU.js.gz +0 -0
- package/dist/web/assets/{appearance-settings-section-BZsM8HpZ.js → appearance-settings-section-lbtuzecW.js} +1 -1
- package/dist/web/assets/appearance-settings-section-lbtuzecW.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-lbtuzecW.js.gz +0 -0
- package/dist/web/assets/{apps-panel-Cs3utBlp.js → apps-panel-CF2mbvVq.js} +1 -1
- package/dist/web/assets/apps-panel-CF2mbvVq.js.br +0 -0
- package/dist/web/assets/apps-panel-CF2mbvVq.js.gz +0 -0
- package/dist/web/assets/branch-review-tab-CR7JnS5x.js +1 -0
- package/dist/web/assets/branch-review-tab-CR7JnS5x.js.br +0 -0
- package/dist/web/assets/branch-review-tab-CR7JnS5x.js.gz +0 -0
- package/dist/web/assets/chat-tab-BCELq4nK.js +1 -0
- package/dist/web/assets/chat-tab-BCELq4nK.js.br +0 -0
- package/dist/web/assets/chat-tab-BCELq4nK.js.gz +0 -0
- package/dist/web/assets/{chat-tab-DtSHSfMU.js → chat-tab-C4aOYSea.js} +10 -10
- package/dist/web/assets/chat-tab-C4aOYSea.js.br +0 -0
- package/dist/web/assets/chat-tab-C4aOYSea.js.gz +0 -0
- package/dist/web/assets/{code-editor-DjDyhff1.js → code-editor-_axJbYkP.js} +5 -5
- package/dist/web/assets/code-editor-_axJbYkP.js.br +0 -0
- package/dist/web/assets/code-editor-_axJbYkP.js.gz +0 -0
- package/dist/web/assets/{codex-reset-credit-button-BKgiUi8E.js → codex-reset-credit-button-DJQD6NUF.js} +1 -1
- package/dist/web/assets/codex-reset-credit-button-DJQD6NUF.js.br +0 -0
- package/dist/web/assets/codex-reset-credit-button-DJQD6NUF.js.gz +0 -0
- package/dist/web/assets/{conflict-editor-DgTv-8pb.js → conflict-editor-D0AYuLKI.js} +3 -3
- package/dist/web/assets/conflict-editor-D0AYuLKI.js.br +0 -0
- package/dist/web/assets/conflict-editor-D0AYuLKI.js.gz +0 -0
- package/dist/web/assets/connection-form-tab-C3QyUWnE.js +4 -0
- package/dist/web/assets/connection-form-tab-C3QyUWnE.js.br +0 -0
- package/dist/web/assets/connection-form-tab-C3QyUWnE.js.gz +0 -0
- package/dist/web/assets/{csv-preview-BTGpYs4p.js → csv-preview-CmKkcz4M.js} +1 -1
- package/dist/web/assets/csv-preview-CmKkcz4M.js.br +0 -0
- package/dist/web/assets/csv-preview-CmKkcz4M.js.gz +0 -0
- package/dist/web/assets/{db-explorer-store-DDePT3UI.js → db-explorer-store-DJNNIfN5.js} +1 -1
- package/dist/web/assets/db-explorer-store-DJNNIfN5.js.br +0 -0
- package/dist/web/assets/db-explorer-store-DJNNIfN5.js.gz +0 -0
- package/dist/web/assets/{db-sidebar-reveal-BeT8cp6P.js → db-sidebar-reveal-CGqWBYay.js} +1 -1
- package/dist/web/assets/db-sidebar-reveal-CGqWBYay.js.br +0 -0
- package/dist/web/assets/db-sidebar-reveal-CGqWBYay.js.gz +0 -0
- package/dist/web/assets/{db-tab-parts-BYzd4_sR.js → db-tab-parts-BXL34wrZ.js} +1 -1
- package/dist/web/assets/db-tab-parts-BXL34wrZ.js.br +0 -0
- package/dist/web/assets/db-tab-parts-BXL34wrZ.js.gz +0 -0
- package/dist/web/assets/{design-settings-section-B3KQBggK.js → design-settings-section-DukfVtwP.js} +2 -2
- package/dist/web/assets/design-settings-section-DukfVtwP.js.br +0 -0
- package/dist/web/assets/design-settings-section-DukfVtwP.js.gz +0 -0
- package/dist/web/assets/{design-tab-CPyj_nFg.js → design-tab-BoPiL2ge.js} +5 -5
- package/dist/web/assets/design-tab-BoPiL2ge.js.br +0 -0
- package/dist/web/assets/design-tab-BoPiL2ge.js.gz +0 -0
- package/dist/web/assets/{designs-sidebar-panel-DIGPFo2l.js → designs-sidebar-panel-BVTqPPzG.js} +1 -1
- package/dist/web/assets/designs-sidebar-panel-BVTqPPzG.js.br +0 -0
- package/dist/web/assets/designs-sidebar-panel-BVTqPPzG.js.gz +0 -0
- package/dist/web/assets/diff-viewer-C86mR7vD.js +4 -0
- package/dist/web/assets/diff-viewer-C86mR7vD.js.br +0 -0
- package/dist/web/assets/diff-viewer-C86mR7vD.js.gz +0 -0
- package/dist/web/assets/{docx-preview-CowHGqML.js → docx-preview-B9EhDCMi.js} +1 -1
- package/dist/web/assets/docx-preview-B9EhDCMi.js.br +0 -0
- package/dist/web/assets/docx-preview-B9EhDCMi.js.gz +0 -0
- package/dist/web/assets/{editor-dialog-xPoehDYp.js → editor-dialog-DTDsbJd6.js} +1 -1
- package/dist/web/assets/editor-dialog-DTDsbJd6.js.br +0 -0
- package/dist/web/assets/editor-dialog-DTDsbJd6.js.gz +0 -0
- package/dist/web/assets/{editor-language-service-DdYqCDBU.js → editor-language-service-BtrrQAS2.js} +1 -1
- package/dist/web/assets/editor-language-service-BtrrQAS2.js.br +0 -0
- package/dist/web/assets/editor-language-service-BtrrQAS2.js.gz +0 -0
- package/dist/web/assets/explorer-body-DLaWmxri.js +2 -0
- package/dist/web/assets/explorer-body-DLaWmxri.js.br +0 -0
- package/dist/web/assets/explorer-body-DLaWmxri.js.gz +0 -0
- package/dist/web/assets/{explorer-model-tGyFETP_.js → explorer-model-f5q-50DN.js} +1 -1
- package/dist/web/assets/explorer-model-f5q-50DN.js.br +0 -0
- package/dist/web/assets/explorer-model-f5q-50DN.js.gz +0 -0
- package/dist/web/assets/{explorer-window-content-B1c4QTVL.js → explorer-window-content-CbUIbrzL.js} +1 -1
- package/dist/web/assets/explorer-window-content-CbUIbrzL.js.br +0 -0
- package/dist/web/assets/explorer-window-content-CbUIbrzL.js.gz +0 -0
- package/dist/web/assets/{extension-manager-section-BgL0Uyl3.js → extension-manager-section-BpKMyLwI.js} +1 -1
- package/dist/web/assets/extension-manager-section-BpKMyLwI.js.br +0 -0
- package/dist/web/assets/extension-manager-section-BpKMyLwI.js.gz +0 -0
- package/dist/web/assets/{extension-webview-BWB1Yd-t.js → extension-webview-BGfyaXMI.js} +1 -1
- package/dist/web/assets/extension-webview-BGfyaXMI.js.br +0 -0
- package/dist/web/assets/extension-webview-BGfyaXMI.js.gz +0 -0
- package/dist/web/assets/{files-settings-section-TmoewoO2.js → files-settings-section-CQT9_rX2.js} +1 -1
- package/dist/web/assets/files-settings-section-CQT9_rX2.js.br +0 -0
- package/dist/web/assets/files-settings-section-CQT9_rX2.js.gz +0 -0
- package/dist/web/assets/{general-settings-section-Bu7o8uUn.js → general-settings-section-BoQGeqBi.js} +1 -1
- package/dist/web/assets/general-settings-section-BoQGeqBi.js.br +0 -0
- package/dist/web/assets/general-settings-section-BoQGeqBi.js.gz +0 -0
- package/dist/web/assets/{git-log-panel-RjMZIaCk.js → git-log-panel-T8Fzn8-5.js} +1 -1
- package/dist/web/assets/git-log-panel-T8Fzn8-5.js.br +0 -0
- package/dist/web/assets/git-log-panel-T8Fzn8-5.js.gz +0 -0
- package/dist/web/assets/git-review-tab-WzuX4Ml9.js +3 -0
- package/dist/web/assets/git-review-tab-WzuX4Ml9.js.br +0 -0
- package/dist/web/assets/git-review-tab-WzuX4Ml9.js.gz +0 -0
- package/dist/web/assets/{glide-data-grid-DqlTFhhf.js → glide-data-grid-BBzGDYvj.js} +8 -8
- package/dist/web/assets/glide-data-grid-BBzGDYvj.js.br +0 -0
- package/dist/web/assets/glide-data-grid-BBzGDYvj.js.gz +0 -0
- package/dist/web/assets/{grid-save-dialog-BmF2Gy_E.js → grid-save-dialog-HiqlnSky.js} +1 -1
- package/dist/web/assets/grid-save-dialog-HiqlnSky.js.br +0 -0
- package/dist/web/assets/grid-save-dialog-HiqlnSky.js.gz +0 -0
- package/dist/web/assets/group-chat-tab-URU3FCLs.js +1 -0
- package/dist/web/assets/group-chat-tab-URU3FCLs.js.br +0 -0
- package/dist/web/assets/group-chat-tab-URU3FCLs.js.gz +0 -0
- package/dist/web/assets/{impexp-tab-B8d4oBOB.js → impexp-tab-B0m1Q8ia.js} +1 -1
- package/dist/web/assets/impexp-tab-B0m1Q8ia.js.br +0 -0
- package/dist/web/assets/impexp-tab-B0m1Q8ia.js.gz +0 -0
- package/dist/web/assets/index-Cb3Z6wNy.css +1 -0
- package/dist/web/assets/index-Cb3Z6wNy.css.br +0 -0
- package/dist/web/assets/{index-2_Pz5MiI.css.gz → index-Cb3Z6wNy.css.gz} +0 -0
- package/dist/web/assets/{index-Cx9ZRibz.js → index-Vd9Xr54k.js} +19 -19
- package/dist/web/assets/index-Vd9Xr54k.js.br +0 -0
- package/dist/web/assets/index-Vd9Xr54k.js.gz +0 -0
- package/dist/web/assets/{jira-watcher-section-LGTWVN87.js → jira-watcher-section-CnSTbAF6.js} +1 -1
- package/dist/web/assets/keybindings-store-D_U8jECl.js +1 -0
- package/dist/web/assets/{keyboard-shortcuts-section-BSMgmbOR.js → keyboard-shortcuts-section-CU7JjDsU.js} +1 -1
- package/dist/web/assets/keyboard-shortcuts-section-CU7JjDsU.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-CU7JjDsU.js.gz +0 -0
- package/dist/web/assets/{language-servers-section-DO9wnwnG.js → language-servers-section-CzUG9H69.js} +2 -2
- package/dist/web/assets/language-servers-section-CzUG9H69.js.br +0 -0
- package/dist/web/assets/language-servers-section-CzUG9H69.js.gz +0 -0
- package/dist/web/assets/logs-app-CDSvyY1H.js +13 -0
- package/dist/web/assets/logs-app-CDSvyY1H.js.br +0 -0
- package/dist/web/assets/logs-app-CDSvyY1H.js.gz +0 -0
- package/dist/web/assets/logs-tab-CQw9vrNw.js +1 -0
- package/dist/web/assets/{logs-window-content-Cejko0VD.js → logs-window-content-CGvPnPrr.js} +1 -1
- package/dist/web/assets/{lsp-client-IsC8Ol0U.js → lsp-client-CpjPUUYJ.js} +1 -1
- package/dist/web/assets/lsp-client-CpjPUUYJ.js.br +0 -0
- package/dist/web/assets/lsp-client-CpjPUUYJ.js.gz +0 -0
- package/dist/web/assets/{markdown-renderer-D5vxN2fO.js → markdown-renderer-3ZR2x0CC.js} +1 -1
- package/dist/web/assets/{markdown-renderer-BfZiHaNy.js → markdown-renderer-DZNMRg6p.js} +2 -2
- package/dist/web/assets/markdown-renderer-DZNMRg6p.js.br +0 -0
- package/dist/web/assets/markdown-renderer-DZNMRg6p.js.gz +0 -0
- package/dist/web/assets/{mobile-explorer-sheet-Dz3eJdBl.js → mobile-explorer-sheet-D7e-MM6m.js} +1 -1
- package/dist/web/assets/mobile-explorer-sheet-D7e-MM6m.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-D7e-MM6m.js.gz +0 -0
- package/dist/web/assets/{new-design-dialog-B8zeJoJQ.js → new-design-dialog-BthM423i.js} +1 -1
- package/dist/web/assets/new-design-dialog-BthM423i.js.br +0 -0
- package/dist/web/assets/new-design-dialog-BthM423i.js.gz +0 -0
- package/dist/web/assets/notification-store-GKweleCQ.js +1 -0
- package/dist/web/assets/{notifications-settings-section-CMZXQw72.js → notifications-settings-section-TS3gNFcc.js} +1 -1
- package/dist/web/assets/notifications-settings-section-TS3gNFcc.js.br +0 -0
- package/dist/web/assets/notifications-settings-section-TS3gNFcc.js.gz +0 -0
- package/dist/web/assets/{open-db-tabs-DYTZbguT.js → open-db-tabs-DBgV2hbA.js} +1 -1
- package/dist/web/assets/open-db-tabs-DBgV2hbA.js.br +0 -0
- package/dist/web/assets/open-db-tabs-DBgV2hbA.js.gz +0 -0
- package/dist/web/assets/{open-settings-BGtoVEAU.js → open-settings-DWbF5YsE.js} +1 -1
- package/dist/web/assets/{overview-panel-7_8b6pwr.js → overview-panel-C5EmTk1R.js} +1 -1
- package/dist/web/assets/overview-panel-C5EmTk1R.js.br +0 -0
- package/dist/web/assets/overview-panel-C5EmTk1R.js.gz +0 -0
- package/dist/web/assets/{panel-store-Dx2ziBLp.js → panel-store-H7e9XHZF.js} +1 -1
- package/dist/web/assets/panel-store-H7e9XHZF.js.br +0 -0
- package/dist/web/assets/panel-store-H7e9XHZF.js.gz +0 -0
- package/dist/web/assets/{patch-tab-metadata-DTbCkVvx.js → patch-tab-metadata-DqvfqUI4.js} +1 -1
- package/dist/web/assets/{performance-panel-COQNCyEU.js → performance-panel-Jwab-_Z2.js} +1 -1
- package/dist/web/assets/performance-panel-Jwab-_Z2.js.br +0 -0
- package/dist/web/assets/performance-panel-Jwab-_Z2.js.gz +0 -0
- package/dist/web/assets/{ppmbot-settings-section-CmhbbZVI.js → ppmbot-settings-section-D8jIlmp8.js} +1 -1
- package/dist/web/assets/ppmbot-settings-section-D8jIlmp8.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-D8jIlmp8.js.gz +0 -0
- package/dist/web/assets/{pptx-export-COeBmnFJ.js → pptx-export-gXOWUZXL.js} +3 -3
- package/dist/web/assets/pptx-export-gXOWUZXL.js.br +0 -0
- package/dist/web/assets/pptx-export-gXOWUZXL.js.gz +0 -0
- package/dist/web/assets/{problems-panel-I0EYfa1S.js → problems-panel-DjCHA1r5.js} +1 -1
- package/dist/web/assets/problems-panel-DjCHA1r5.js.br +0 -0
- package/dist/web/assets/problems-panel-DjCHA1r5.js.gz +0 -0
- package/dist/web/assets/{process-table-or-X8Lwh.js → process-table-BxXEh4tN.js} +1 -1
- package/dist/web/assets/process-table-BxXEh4tN.js.br +0 -0
- package/dist/web/assets/process-table-BxXEh4tN.js.gz +0 -0
- package/dist/web/assets/{proxy-settings-section-DpJ6ok4C.js → proxy-settings-section-B8igco2L.js} +1 -1
- package/dist/web/assets/proxy-settings-section-B8igco2L.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-B8igco2L.js.gz +0 -0
- package/dist/web/assets/{query-tab-DeNZMZHX.js → query-tab-DHU3ANHN.js} +3 -3
- package/dist/web/assets/query-tab-DHU3ANHN.js.br +0 -0
- package/dist/web/assets/query-tab-DHU3ANHN.js.gz +0 -0
- package/dist/web/assets/release-notes-window-content-B33RDfFY.js +1 -0
- package/dist/web/assets/remote-access-settings-section-CoYQTFKd.js +1 -0
- package/dist/web/assets/remote-access-settings-section-CoYQTFKd.js.br +0 -0
- package/dist/web/assets/remote-access-settings-section-CoYQTFKd.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-clipboard-notice-CGDBpXMf.js → remote-desktop-clipboard-notice-Dwn-iV4g.js} +1 -1
- package/dist/web/assets/remote-desktop-clipboard-notice-Dwn-iV4g.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-Dwn-iV4g.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-sheet-6nXirdqZ.js → remote-desktop-mobile-sheet-bfKiSG0C.js} +2 -2
- package/dist/web/assets/remote-desktop-mobile-sheet-bfKiSG0C.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-bfKiSG0C.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-view-BTaj9Flo.js → remote-desktop-mobile-view-CV8eHh4A.js} +1 -1
- package/dist/web/assets/remote-desktop-mobile-view-CV8eHh4A.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-CV8eHh4A.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-readiness-gate--gtmfqZh.js → remote-desktop-readiness-gate-DrSYb_9z.js} +1 -1
- package/dist/web/assets/remote-desktop-readiness-gate-DrSYb_9z.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-DrSYb_9z.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-settings-section-Bs5avYaS.js → remote-desktop-settings-section-DRO8n8t7.js} +1 -1
- package/dist/web/assets/remote-desktop-settings-section-DRO8n8t7.js.br +0 -0
- package/dist/web/assets/remote-desktop-settings-section-DRO8n8t7.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-window-content-D4CM-28B.js → remote-desktop-window-content-CAuxeGbK.js} +1 -1
- package/dist/web/assets/remote-desktop-window-content-CAuxeGbK.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-CAuxeGbK.js.gz +0 -0
- package/dist/web/assets/{rename-object-dialog-Dv4iLwnf.js → rename-object-dialog-BPuh3dAH.js} +1 -1
- package/dist/web/assets/rename-object-dialog-BPuh3dAH.js.br +0 -0
- package/dist/web/assets/rename-object-dialog-BPuh3dAH.js.gz +0 -0
- package/dist/web/assets/review-address-setup-CoI2BGdx.js +1 -0
- package/dist/web/assets/review-address-setup-CoI2BGdx.js.br +0 -0
- package/dist/web/assets/review-address-setup-CoI2BGdx.js.gz +0 -0
- package/dist/web/assets/{review-code-Bet53hHb.js → review-code-Dy8y4_17.js} +1 -1
- package/dist/web/assets/review-code-Dy8y4_17.js.br +0 -0
- package/dist/web/assets/review-code-Dy8y4_17.js.gz +0 -0
- package/dist/web/assets/{run-in-terminal-EVMb5TjW.js → run-in-terminal-DAdjH24K.js} +1 -1
- package/dist/web/assets/{run-in-terminal-button-CsYq6Xqo.js → run-in-terminal-button-Bu165IH-.js} +1 -1
- package/dist/web/assets/{save-as-dialog-DHkBsS-6.js → save-as-dialog-C9OpJz2x.js} +1 -1
- package/dist/web/assets/save-as-dialog-C9OpJz2x.js.br +0 -0
- package/dist/web/assets/save-as-dialog-C9OpJz2x.js.gz +0 -0
- package/dist/web/assets/{schedule-script-editor-CKUl2qxf.js → schedule-script-editor--roOsFbc.js} +1 -1
- package/dist/web/assets/schedule-script-editor--roOsFbc.js.br +0 -0
- package/dist/web/assets/schedule-script-editor--roOsFbc.js.gz +0 -0
- package/dist/web/assets/{schedules-settings-section-EoOXzqF3.js → schedules-settings-section-BTn_NSzU.js} +3 -3
- package/dist/web/assets/schedules-settings-section-BTn_NSzU.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-BTn_NSzU.js.gz +0 -0
- package/dist/web/assets/{send-to-chat-B7oUVcgh.js → send-to-chat-BUxj21hD.js} +1 -1
- package/dist/web/assets/send-to-chat-BUxj21hD.js.br +0 -0
- package/dist/web/assets/send-to-chat-BUxj21hD.js.gz +0 -0
- package/dist/web/assets/{services-panel-BceuL_SU.js → services-panel-BynENSs6.js} +1 -1
- package/dist/web/assets/services-panel-BynENSs6.js.br +0 -0
- package/dist/web/assets/services-panel-BynENSs6.js.gz +0 -0
- package/dist/web/assets/{session-changes-bar-CjSxBYOF.js → session-changes-bar-Dz3QitdJ.js} +1 -1
- package/dist/web/assets/session-changes-bar-Dz3QitdJ.js.br +0 -0
- package/dist/web/assets/session-changes-bar-Dz3QitdJ.js.gz +0 -0
- package/dist/web/assets/{session-review-tab-yIQFGJbG.js → session-review-tab-fRzyogNH.js} +1 -1
- package/dist/web/assets/session-review-tab-fRzyogNH.js.br +0 -0
- package/dist/web/assets/session-review-tab-fRzyogNH.js.gz +0 -0
- package/dist/web/assets/{settings-body-DXNcpoqY.js → settings-body-D5pmlFft.js} +1 -1
- package/dist/web/assets/settings-body-D5pmlFft.js.br +0 -0
- package/dist/web/assets/settings-body-D5pmlFft.js.gz +0 -0
- package/dist/web/assets/{settings-rows-DgL7oTg8.js → settings-rows-VtjChFlm.js} +1 -1
- package/dist/web/assets/settings-rows-VtjChFlm.js.br +0 -0
- package/dist/web/assets/settings-rows-VtjChFlm.js.gz +0 -0
- package/dist/web/assets/{settings-section-content-DFLjO2le.js → settings-section-content-BOwSlBkZ.js} +2 -2
- package/dist/web/assets/settings-section-content-BOwSlBkZ.js.br +0 -0
- package/dist/web/assets/settings-section-content-BOwSlBkZ.js.gz +0 -0
- package/dist/web/assets/{settings-section-content-B1eU_yR4.js → settings-section-content-Ck39TJA7.js} +1 -1
- package/dist/web/assets/{settings-store-CBJCnE5L.js → settings-store-CMpVMq3Y.js} +2 -2
- package/dist/web/assets/settings-store-CMpVMq3Y.js.br +0 -0
- package/dist/web/assets/settings-store-CMpVMq3Y.js.gz +0 -0
- package/dist/web/assets/settings-tab-A81xb81d.js +1 -0
- package/dist/web/assets/settings-window-content-BCDRi6xS.js +1 -0
- package/dist/web/assets/{slash-command-picker-qb3fZ7RP.js → slash-command-picker-BKeEykkF.js} +1 -1
- package/dist/web/assets/slash-command-picker-BKeEykkF.js.br +0 -0
- package/dist/web/assets/slash-command-picker-BKeEykkF.js.gz +0 -0
- package/dist/web/assets/{sql-object-tab-B6JtYu9P.js → sql-object-tab-I5bl3DVf.js} +1 -1
- package/dist/web/assets/sql-object-tab-I5bl3DVf.js.br +0 -0
- package/dist/web/assets/sql-object-tab-I5bl3DVf.js.gz +0 -0
- package/dist/web/assets/{sqlite-viewer-bdNkUymy.js → sqlite-viewer-ECCCjxdn.js} +1 -1
- package/dist/web/assets/sqlite-viewer-ECCCjxdn.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-ECCCjxdn.js.gz +0 -0
- package/dist/web/assets/{structure-save-dialog-5SfYdbAB.js → structure-save-dialog-DcQdamD3.js} +1 -1
- package/dist/web/assets/structure-save-dialog-DcQdamD3.js.br +0 -0
- package/dist/web/assets/structure-save-dialog-DcQdamD3.js.gz +0 -0
- package/dist/web/assets/{structure-tab-DYjjcLIU.js → structure-tab-DyQGhf9t.js} +2 -2
- package/dist/web/assets/structure-tab-DyQGhf9t.js.br +0 -0
- package/dist/web/assets/structure-tab-DyQGhf9t.js.gz +0 -0
- package/dist/web/assets/{system-monitor-body-DouL7ajt.js → system-monitor-body-B5AvRT5J.js} +2 -2
- package/dist/web/assets/system-monitor-body-B5AvRT5J.js.br +0 -0
- package/dist/web/assets/system-monitor-body-B5AvRT5J.js.gz +0 -0
- package/dist/web/assets/system-monitor-tab-CfwHKQ5k.js +1 -0
- package/dist/web/assets/{system-monitor-window-content-DUCaJME1.js → system-monitor-window-content-Cvx1V8Mf.js} +1 -1
- package/dist/web/assets/{tab-host-window-content-CQ5NiV6Y.js → tab-host-window-content-DqOUHxEL.js} +1 -1
- package/dist/web/assets/tab-host-window-content-DqOUHxEL.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-DqOUHxEL.js.gz +0 -0
- package/dist/web/assets/{tab-store-B4v2kAEY.js → tab-store-NUmgzMPf.js} +1 -1
- package/dist/web/assets/table-tab-dI8rBbCS.js +2 -0
- package/dist/web/assets/table-tab-dI8rBbCS.js.br +0 -0
- package/dist/web/assets/table-tab-dI8rBbCS.js.gz +0 -0
- package/dist/web/assets/{telegram-bot-token-field-CqVIuWP1.js → telegram-bot-token-field-DSLtG8vw.js} +1 -1
- package/dist/web/assets/telegram-bot-token-field-DSLtG8vw.js.br +0 -0
- package/dist/web/assets/telegram-bot-token-field-DSLtG8vw.js.gz +0 -0
- package/dist/web/assets/{terminal-tab-DT0MN_Qn.js → terminal-tab-CDg0AHBK.js} +2 -2
- package/dist/web/assets/terminal-tab-CDg0AHBK.js.br +0 -0
- package/dist/web/assets/terminal-tab-CDg0AHBK.js.gz +0 -0
- package/dist/web/assets/{tool-cards-C2YGSKRm.js → tool-cards-7E0jtwP0.js} +5 -5
- package/dist/web/assets/tool-cards-7E0jtwP0.js.br +0 -0
- package/dist/web/assets/tool-cards-7E0jtwP0.js.gz +0 -0
- package/dist/web/assets/{tools-settings-section-DQXIdF8O.js → tools-settings-section-AChVQJyU.js} +1 -1
- package/dist/web/assets/tools-settings-section-AChVQJyU.js.br +0 -0
- package/dist/web/assets/tools-settings-section-AChVQJyU.js.gz +0 -0
- package/dist/web/assets/{use-db-read-BByB906L.js → use-db-read-DgNa66Yo.js} +1 -1
- package/dist/web/assets/use-db-read-DgNa66Yo.js.br +0 -0
- package/dist/web/assets/use-db-read-DgNa66Yo.js.gz +0 -0
- package/dist/web/assets/{use-db-tab-Dc0QSFyM.js → use-db-tab-OGLoicCd.js} +1 -1
- package/dist/web/assets/use-db-tab-OGLoicCd.js.br +0 -0
- package/dist/web/assets/use-db-tab-OGLoicCd.js.gz +0 -0
- package/dist/web/assets/{use-inline-blame-B9M-hADX.js → use-inline-blame-BvlcOQd9.js} +3 -3
- package/dist/web/assets/use-inline-blame-BvlcOQd9.js.br +0 -0
- package/dist/web/assets/use-inline-blame-BvlcOQd9.js.gz +0 -0
- package/dist/web/assets/{use-lsp-DcGiCpl9.js → use-lsp-fLNwD0BI.js} +1 -1
- package/dist/web/assets/use-lsp-fLNwD0BI.js.br +0 -0
- package/dist/web/assets/use-lsp-fLNwD0BI.js.gz +0 -0
- package/dist/web/assets/{use-monaco-theme-CyoMsYaI.js → use-monaco-theme-CbNQ4HnC.js} +1 -1
- package/dist/web/assets/{use-process-kill-DsHyrg0-.js → use-process-kill-B4Srjl2m.js} +1 -1
- package/dist/web/assets/use-process-kill-B4Srjl2m.js.br +0 -0
- package/dist/web/assets/use-process-kill-B4Srjl2m.js.gz +0 -0
- package/dist/web/assets/{use-sql-schema-info-BqGN5N4O.js → use-sql-schema-info-CqISFaAW.js} +1 -1
- package/dist/web/assets/use-sql-schema-info-CqISFaAW.js.br +0 -0
- package/dist/web/assets/use-sql-schema-info-CqISFaAW.js.gz +0 -0
- package/dist/web/assets/{use-websocket-DqomrzN8.js → use-websocket-DVJuWhlA.js} +1 -1
- package/dist/web/assets/{voice-settings-section-D9KsOm8A.js → voice-settings-section-C1aEYF94.js} +1 -1
- package/dist/web/assets/voice-settings-section-C1aEYF94.js.br +0 -0
- package/dist/web/assets/voice-settings-section-C1aEYF94.js.gz +0 -0
- package/dist/web/assets/{web-preview-tab-CUp1n2jz.js → web-preview-tab-CZJAVoVU.js} +1 -1
- package/dist/web/assets/web-preview-tab-CZJAVoVU.js.br +0 -0
- package/dist/web/assets/web-preview-tab-CZJAVoVU.js.gz +0 -0
- package/dist/web/assets/{window-store-UcSFgNCI.js → window-store-D6EgLSfT.js} +1 -1
- package/dist/web/assets/window-store-D6EgLSfT.js.br +0 -0
- package/dist/web/assets/window-store-D6EgLSfT.js.gz +0 -0
- package/dist/web/index.html +12 -12
- 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/package.json +1 -1
- package/src/web/components/floating-window/use-window-meta.ts +2 -1
- package/src/web/components/floating-window/window-content-registry.ts +2 -0
- package/src/web/components/floating-window/window-store-types.ts +1 -1
- package/src/web/components/layout/upgrade-button.tsx +27 -46
- package/src/web/components/release-notes/open-release-notes.ts +22 -0
- package/src/web/components/release-notes/release-notes-entry.tsx +73 -0
- package/src/web/components/release-notes/release-notes-view.tsx +72 -0
- package/src/web/components/release-notes/release-notes-window-content.tsx +6 -0
- package/dist/web/assets/accounts-settings-section-Ctu-w8kt.js +0 -1
- package/dist/web/assets/accounts-settings-section-Ctu-w8kt.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-Ctu-w8kt.js.gz +0 -0
- package/dist/web/assets/agent-session-sheet-DmbSfFGz.js.br +0 -0
- package/dist/web/assets/agent-session-sheet-DmbSfFGz.js.gz +0 -0
- package/dist/web/assets/agent-session-window-content-Dk8x3ozF.js.br +0 -0
- package/dist/web/assets/agent-session-window-content-Dk8x3ozF.js.gz +0 -0
- package/dist/web/assets/ai-resource-editor-MKwjYcDh.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-MKwjYcDh.js.gz +0 -0
- package/dist/web/assets/ai-settings-section-CODZY71V.js +0 -1
- package/dist/web/assets/ai-settings-section-CODZY71V.js.br +0 -0
- package/dist/web/assets/ai-settings-section-CODZY71V.js.gz +0 -0
- package/dist/web/assets/android-tab-CUkjbfyi.js.br +0 -0
- package/dist/web/assets/android-tab-CUkjbfyi.js.gz +0 -0
- package/dist/web/assets/appearance-settings-section-BZsM8HpZ.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-BZsM8HpZ.js.gz +0 -0
- package/dist/web/assets/apps-panel-Cs3utBlp.js.br +0 -0
- package/dist/web/assets/apps-panel-Cs3utBlp.js.gz +0 -0
- package/dist/web/assets/branch-review-tab-C-aPuhXZ.js +0 -1
- package/dist/web/assets/branch-review-tab-C-aPuhXZ.js.br +0 -0
- package/dist/web/assets/branch-review-tab-C-aPuhXZ.js.gz +0 -0
- package/dist/web/assets/chat-tab-CGQu4uLR.js +0 -1
- package/dist/web/assets/chat-tab-CGQu4uLR.js.br +0 -0
- package/dist/web/assets/chat-tab-CGQu4uLR.js.gz +0 -0
- package/dist/web/assets/chat-tab-DtSHSfMU.js.br +0 -0
- package/dist/web/assets/chat-tab-DtSHSfMU.js.gz +0 -0
- package/dist/web/assets/code-editor-DjDyhff1.js.br +0 -0
- package/dist/web/assets/code-editor-DjDyhff1.js.gz +0 -0
- package/dist/web/assets/codex-reset-credit-button-BKgiUi8E.js.br +0 -0
- package/dist/web/assets/codex-reset-credit-button-BKgiUi8E.js.gz +0 -0
- package/dist/web/assets/conflict-editor-DgTv-8pb.js.br +0 -0
- package/dist/web/assets/conflict-editor-DgTv-8pb.js.gz +0 -0
- package/dist/web/assets/connection-form-tab-CJ-6gH9g.js +0 -4
- package/dist/web/assets/connection-form-tab-CJ-6gH9g.js.br +0 -0
- package/dist/web/assets/connection-form-tab-CJ-6gH9g.js.gz +0 -0
- package/dist/web/assets/csv-preview-BTGpYs4p.js.br +0 -0
- package/dist/web/assets/csv-preview-BTGpYs4p.js.gz +0 -0
- package/dist/web/assets/db-explorer-store-DDePT3UI.js.br +0 -0
- package/dist/web/assets/db-explorer-store-DDePT3UI.js.gz +0 -0
- package/dist/web/assets/db-sidebar-reveal-BeT8cp6P.js.br +0 -0
- package/dist/web/assets/db-sidebar-reveal-BeT8cp6P.js.gz +0 -0
- package/dist/web/assets/db-tab-parts-BYzd4_sR.js.br +0 -0
- package/dist/web/assets/db-tab-parts-BYzd4_sR.js.gz +0 -0
- package/dist/web/assets/design-settings-section-B3KQBggK.js.br +0 -0
- package/dist/web/assets/design-settings-section-B3KQBggK.js.gz +0 -0
- package/dist/web/assets/design-tab-CPyj_nFg.js.br +0 -0
- package/dist/web/assets/design-tab-CPyj_nFg.js.gz +0 -0
- package/dist/web/assets/designs-sidebar-panel-DIGPFo2l.js.br +0 -0
- package/dist/web/assets/designs-sidebar-panel-DIGPFo2l.js.gz +0 -0
- package/dist/web/assets/diff-viewer-nYz43A94.js +0 -4
- package/dist/web/assets/diff-viewer-nYz43A94.js.br +0 -0
- package/dist/web/assets/diff-viewer-nYz43A94.js.gz +0 -0
- package/dist/web/assets/docx-preview-CowHGqML.js.br +0 -0
- package/dist/web/assets/docx-preview-CowHGqML.js.gz +0 -0
- package/dist/web/assets/editor-dialog-xPoehDYp.js.br +0 -0
- package/dist/web/assets/editor-dialog-xPoehDYp.js.gz +0 -0
- package/dist/web/assets/editor-language-service-DdYqCDBU.js.br +0 -0
- package/dist/web/assets/editor-language-service-DdYqCDBU.js.gz +0 -0
- package/dist/web/assets/explorer-body-BHh5Qpvi.js +0 -2
- package/dist/web/assets/explorer-body-BHh5Qpvi.js.br +0 -0
- package/dist/web/assets/explorer-body-BHh5Qpvi.js.gz +0 -0
- package/dist/web/assets/explorer-model-tGyFETP_.js.br +0 -0
- package/dist/web/assets/explorer-model-tGyFETP_.js.gz +0 -0
- package/dist/web/assets/explorer-window-content-B1c4QTVL.js.br +0 -0
- package/dist/web/assets/explorer-window-content-B1c4QTVL.js.gz +0 -0
- package/dist/web/assets/extension-manager-section-BgL0Uyl3.js.br +0 -0
- package/dist/web/assets/extension-manager-section-BgL0Uyl3.js.gz +0 -0
- package/dist/web/assets/extension-webview-BWB1Yd-t.js.br +0 -0
- package/dist/web/assets/extension-webview-BWB1Yd-t.js.gz +0 -0
- package/dist/web/assets/files-settings-section-TmoewoO2.js.br +0 -0
- package/dist/web/assets/files-settings-section-TmoewoO2.js.gz +0 -0
- package/dist/web/assets/general-settings-section-Bu7o8uUn.js.br +0 -0
- package/dist/web/assets/general-settings-section-Bu7o8uUn.js.gz +0 -0
- package/dist/web/assets/git-log-panel-RjMZIaCk.js.br +0 -0
- package/dist/web/assets/git-log-panel-RjMZIaCk.js.gz +0 -0
- package/dist/web/assets/git-review-tab-BUW5LZk4.js +0 -3
- package/dist/web/assets/git-review-tab-BUW5LZk4.js.br +0 -0
- package/dist/web/assets/git-review-tab-BUW5LZk4.js.gz +0 -0
- package/dist/web/assets/glide-data-grid-DqlTFhhf.js.br +0 -0
- package/dist/web/assets/glide-data-grid-DqlTFhhf.js.gz +0 -0
- package/dist/web/assets/grid-save-dialog-BmF2Gy_E.js.br +0 -0
- package/dist/web/assets/grid-save-dialog-BmF2Gy_E.js.gz +0 -0
- package/dist/web/assets/group-chat-tab-nk3n5wE0.js +0 -1
- package/dist/web/assets/group-chat-tab-nk3n5wE0.js.br +0 -0
- package/dist/web/assets/group-chat-tab-nk3n5wE0.js.gz +0 -0
- package/dist/web/assets/impexp-tab-B8d4oBOB.js.br +0 -0
- package/dist/web/assets/impexp-tab-B8d4oBOB.js.gz +0 -0
- package/dist/web/assets/index-2_Pz5MiI.css +0 -1
- package/dist/web/assets/index-2_Pz5MiI.css.br +0 -0
- package/dist/web/assets/index-Cx9ZRibz.js.br +0 -0
- package/dist/web/assets/index-Cx9ZRibz.js.gz +0 -0
- package/dist/web/assets/keybindings-store-B2AkKQl7.js +0 -1
- package/dist/web/assets/keyboard-shortcuts-section-BSMgmbOR.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-BSMgmbOR.js.gz +0 -0
- package/dist/web/assets/language-servers-section-DO9wnwnG.js.br +0 -0
- package/dist/web/assets/language-servers-section-DO9wnwnG.js.gz +0 -0
- package/dist/web/assets/logs-app-xQ2UsN4G.js +0 -13
- package/dist/web/assets/logs-app-xQ2UsN4G.js.br +0 -0
- package/dist/web/assets/logs-app-xQ2UsN4G.js.gz +0 -0
- package/dist/web/assets/logs-tab-H3SmYGRX.js +0 -1
- package/dist/web/assets/lsp-client-IsC8Ol0U.js.br +0 -0
- package/dist/web/assets/lsp-client-IsC8Ol0U.js.gz +0 -0
- package/dist/web/assets/markdown-renderer-BfZiHaNy.js.br +0 -0
- package/dist/web/assets/markdown-renderer-BfZiHaNy.js.gz +0 -0
- package/dist/web/assets/mobile-explorer-sheet-Dz3eJdBl.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-Dz3eJdBl.js.gz +0 -0
- package/dist/web/assets/new-design-dialog-B8zeJoJQ.js.br +0 -0
- package/dist/web/assets/new-design-dialog-B8zeJoJQ.js.gz +0 -0
- package/dist/web/assets/notification-store-BkkcJE2G.js +0 -1
- package/dist/web/assets/notifications-settings-section-CMZXQw72.js.br +0 -0
- package/dist/web/assets/notifications-settings-section-CMZXQw72.js.gz +0 -0
- package/dist/web/assets/open-db-tabs-DYTZbguT.js.br +0 -0
- package/dist/web/assets/open-db-tabs-DYTZbguT.js.gz +0 -0
- package/dist/web/assets/overview-panel-7_8b6pwr.js.br +0 -0
- package/dist/web/assets/overview-panel-7_8b6pwr.js.gz +0 -0
- package/dist/web/assets/panel-store-Dx2ziBLp.js.br +0 -0
- package/dist/web/assets/panel-store-Dx2ziBLp.js.gz +0 -0
- package/dist/web/assets/performance-panel-COQNCyEU.js.br +0 -0
- package/dist/web/assets/performance-panel-COQNCyEU.js.gz +0 -0
- package/dist/web/assets/ppmbot-settings-section-CmhbbZVI.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-CmhbbZVI.js.gz +0 -0
- package/dist/web/assets/pptx-export-COeBmnFJ.js.br +0 -0
- package/dist/web/assets/pptx-export-COeBmnFJ.js.gz +0 -0
- package/dist/web/assets/problems-panel-I0EYfa1S.js.br +0 -0
- package/dist/web/assets/problems-panel-I0EYfa1S.js.gz +0 -0
- package/dist/web/assets/process-table-or-X8Lwh.js.br +0 -0
- package/dist/web/assets/process-table-or-X8Lwh.js.gz +0 -0
- package/dist/web/assets/proxy-settings-section-DpJ6ok4C.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-DpJ6ok4C.js.gz +0 -0
- package/dist/web/assets/query-tab-DeNZMZHX.js.br +0 -0
- package/dist/web/assets/query-tab-DeNZMZHX.js.gz +0 -0
- package/dist/web/assets/remote-access-settings-section-QRP4Yh46.js +0 -1
- package/dist/web/assets/remote-access-settings-section-QRP4Yh46.js.br +0 -0
- package/dist/web/assets/remote-access-settings-section-QRP4Yh46.js.gz +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-CGDBpXMf.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-CGDBpXMf.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-6nXirdqZ.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-6nXirdqZ.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-BTaj9Flo.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-BTaj9Flo.js.gz +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate--gtmfqZh.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate--gtmfqZh.js.gz +0 -0
- package/dist/web/assets/remote-desktop-settings-section-Bs5avYaS.js.br +0 -0
- package/dist/web/assets/remote-desktop-settings-section-Bs5avYaS.js.gz +0 -0
- package/dist/web/assets/remote-desktop-window-content-D4CM-28B.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-D4CM-28B.js.gz +0 -0
- package/dist/web/assets/rename-object-dialog-Dv4iLwnf.js.br +0 -0
- package/dist/web/assets/rename-object-dialog-Dv4iLwnf.js.gz +0 -0
- package/dist/web/assets/review-address-setup-CU1A_NfZ.js +0 -1
- package/dist/web/assets/review-address-setup-CU1A_NfZ.js.br +0 -0
- package/dist/web/assets/review-address-setup-CU1A_NfZ.js.gz +0 -0
- package/dist/web/assets/review-code-Bet53hHb.js.br +0 -0
- package/dist/web/assets/review-code-Bet53hHb.js.gz +0 -0
- package/dist/web/assets/save-as-dialog-DHkBsS-6.js.br +0 -0
- package/dist/web/assets/save-as-dialog-DHkBsS-6.js.gz +0 -0
- package/dist/web/assets/schedule-script-editor-CKUl2qxf.js.br +0 -0
- package/dist/web/assets/schedule-script-editor-CKUl2qxf.js.gz +0 -0
- package/dist/web/assets/schedules-settings-section-EoOXzqF3.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-EoOXzqF3.js.gz +0 -0
- package/dist/web/assets/send-to-chat-B7oUVcgh.js.br +0 -0
- package/dist/web/assets/send-to-chat-B7oUVcgh.js.gz +0 -0
- package/dist/web/assets/services-panel-BceuL_SU.js.br +0 -0
- package/dist/web/assets/services-panel-BceuL_SU.js.gz +0 -0
- package/dist/web/assets/session-changes-bar-CjSxBYOF.js.br +0 -0
- package/dist/web/assets/session-changes-bar-CjSxBYOF.js.gz +0 -0
- package/dist/web/assets/session-review-tab-yIQFGJbG.js.br +0 -0
- package/dist/web/assets/session-review-tab-yIQFGJbG.js.gz +0 -0
- package/dist/web/assets/settings-body-DXNcpoqY.js.br +0 -0
- package/dist/web/assets/settings-body-DXNcpoqY.js.gz +0 -0
- package/dist/web/assets/settings-rows-DgL7oTg8.js.br +0 -0
- package/dist/web/assets/settings-rows-DgL7oTg8.js.gz +0 -0
- package/dist/web/assets/settings-section-content-DFLjO2le.js.br +0 -0
- package/dist/web/assets/settings-section-content-DFLjO2le.js.gz +0 -0
- package/dist/web/assets/settings-store-CBJCnE5L.js.br +0 -0
- package/dist/web/assets/settings-store-CBJCnE5L.js.gz +0 -0
- package/dist/web/assets/settings-tab-CrGoLKQT.js +0 -1
- package/dist/web/assets/settings-window-content-5opW9Wra.js +0 -1
- package/dist/web/assets/slash-command-picker-qb3fZ7RP.js.br +0 -0
- package/dist/web/assets/slash-command-picker-qb3fZ7RP.js.gz +0 -0
- package/dist/web/assets/sql-object-tab-B6JtYu9P.js.br +0 -0
- package/dist/web/assets/sql-object-tab-B6JtYu9P.js.gz +0 -0
- package/dist/web/assets/sqlite-viewer-bdNkUymy.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-bdNkUymy.js.gz +0 -0
- package/dist/web/assets/structure-save-dialog-5SfYdbAB.js.br +0 -0
- package/dist/web/assets/structure-save-dialog-5SfYdbAB.js.gz +0 -0
- package/dist/web/assets/structure-tab-DYjjcLIU.js.br +0 -0
- package/dist/web/assets/structure-tab-DYjjcLIU.js.gz +0 -0
- package/dist/web/assets/system-monitor-body-DouL7ajt.js.br +0 -0
- package/dist/web/assets/system-monitor-body-DouL7ajt.js.gz +0 -0
- package/dist/web/assets/system-monitor-tab-qpa36tWB.js +0 -1
- package/dist/web/assets/tab-host-window-content-CQ5NiV6Y.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-CQ5NiV6Y.js.gz +0 -0
- package/dist/web/assets/table-tab-M850PntZ.js +0 -2
- package/dist/web/assets/table-tab-M850PntZ.js.br +0 -0
- package/dist/web/assets/table-tab-M850PntZ.js.gz +0 -0
- package/dist/web/assets/telegram-bot-token-field-CqVIuWP1.js.br +0 -0
- package/dist/web/assets/telegram-bot-token-field-CqVIuWP1.js.gz +0 -0
- package/dist/web/assets/terminal-tab-DT0MN_Qn.js.br +0 -0
- package/dist/web/assets/terminal-tab-DT0MN_Qn.js.gz +0 -0
- package/dist/web/assets/tool-cards-C2YGSKRm.js.br +0 -0
- package/dist/web/assets/tool-cards-C2YGSKRm.js.gz +0 -0
- package/dist/web/assets/tools-settings-section-DQXIdF8O.js.br +0 -0
- package/dist/web/assets/tools-settings-section-DQXIdF8O.js.gz +0 -0
- package/dist/web/assets/use-db-read-BByB906L.js.br +0 -0
- package/dist/web/assets/use-db-read-BByB906L.js.gz +0 -0
- package/dist/web/assets/use-db-tab-Dc0QSFyM.js.br +0 -0
- package/dist/web/assets/use-db-tab-Dc0QSFyM.js.gz +0 -0
- package/dist/web/assets/use-inline-blame-B9M-hADX.js.br +0 -0
- package/dist/web/assets/use-inline-blame-B9M-hADX.js.gz +0 -0
- package/dist/web/assets/use-lsp-DcGiCpl9.js.br +0 -0
- package/dist/web/assets/use-lsp-DcGiCpl9.js.gz +0 -0
- package/dist/web/assets/use-process-kill-DsHyrg0-.js.br +0 -0
- package/dist/web/assets/use-process-kill-DsHyrg0-.js.gz +0 -0
- package/dist/web/assets/use-sql-schema-info-BqGN5N4O.js.br +0 -0
- package/dist/web/assets/use-sql-schema-info-BqGN5N4O.js.gz +0 -0
- package/dist/web/assets/voice-settings-section-D9KsOm8A.js.br +0 -0
- package/dist/web/assets/voice-settings-section-D9KsOm8A.js.gz +0 -0
- package/dist/web/assets/web-preview-tab-CUp1n2jz.js.br +0 -0
- package/dist/web/assets/web-preview-tab-CUp1n2jz.js.gz +0 -0
- package/dist/web/assets/window-store-UcSFgNCI.js.br +0 -0
- package/dist/web/assets/window-store-UcSFgNCI.js.gz +0 -0
- /package/dist/web/assets/{__vite-browser-external-DLaiEgUM.js → __vite-browser-external-LVpeGV-g.js} +0 -0
- /package/dist/web/assets/{api-themes-B3-6zR6Q.js → api-themes-DUOEO3_X.js} +0 -0
- /package/dist/web/assets/{claude-models-yFre4eSK.js → claude-models-C9iHl8VB.js} +0 -0
- /package/dist/web/assets/{database-drivers-section-c2SuNQPB.js → database-drivers-section-BPXoNrWi.js} +0 -0
- /package/dist/web/assets/{database-drivers-section-c2SuNQPB.js.br → database-drivers-section-BPXoNrWi.js.br} +0 -0
- /package/dist/web/assets/{database-drivers-section-c2SuNQPB.js.gz → database-drivers-section-BPXoNrWi.js.gz} +0 -0
- /package/dist/web/assets/{metric-chart-canvas-Dnm9OOXU.js → metric-chart-canvas-HG8rPTMq.js} +0 -0
- /package/dist/web/assets/{metric-chart-canvas-Dnm9OOXU.js.br → metric-chart-canvas-HG8rPTMq.js.br} +0 -0
- /package/dist/web/assets/{metric-chart-canvas-Dnm9OOXU.js.gz → metric-chart-canvas-HG8rPTMq.js.gz} +0 -0
- /package/dist/web/assets/{notification-settings-CvplVsIo.js → notification-settings--li9wGTJ.js} +0 -0
- /package/dist/web/assets/{notification-settings-CvplVsIo.js.br → notification-settings--li9wGTJ.js.br} +0 -0
- /package/dist/web/assets/{notification-settings-CvplVsIo.js.gz → notification-settings--li9wGTJ.js.gz} +0 -0
- /package/dist/web/assets/{process-row-format-CM1XaqkS.js → process-row-format-CJg8VV-6.js} +0 -0
- /package/dist/web/assets/{query-audit-section-C-fT07Zz.js → query-audit-section-BiCUBamA.js} +0 -0
- /package/dist/web/assets/{query-audit-section-C-fT07Zz.js.br → query-audit-section-BiCUBamA.js.br} +0 -0
- /package/dist/web/assets/{query-audit-section-C-fT07Zz.js.gz → query-audit-section-BiCUBamA.js.gz} +0 -0
- /package/dist/web/assets/{remote-desktop-recording-D_fwMC2z.js → remote-desktop-recording-BcDx5c_k.js} +0 -0
- /package/dist/web/assets/{separator-CYw7bF1W.js → separator-DUdRLaL0.js} +0 -0
- /package/dist/web/assets/{sortable-header-CchrA_dg.js → sortable-header-Ds6nTnqB.js} +0 -0
- /package/dist/web/assets/{sortable-header-CchrA_dg.js.br → sortable-header-Ds6nTnqB.js.br} +0 -0
- /package/dist/web/assets/{sortable-header-CchrA_dg.js.gz → sortable-header-Ds6nTnqB.js.gz} +0 -0
- /package/dist/web/assets/{vendor-xterm-lhGdimFj.js → vendor-xterm-BxbwWHG_.js} +0 -0
- /package/dist/web/assets/{vendor-xterm-lhGdimFj.js.br → vendor-xterm-BxbwWHG_.js.br} +0 -0
- /package/dist/web/assets/{vendor-xterm-lhGdimFj.js.gz → vendor-xterm-BxbwWHG_.js.gz} +0 -0
|
Binary file
|
|
Binary file
|
package/dist/web/assets/{jira-watcher-section-LGTWVN87.js → jira-watcher-section-CnSTbAF6.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as e}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./api-client-BnYFnEfK.js";import{t}from"./settings-store-
|
|
1
|
+
import{E as e}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./api-client-BnYFnEfK.js";import{t}from"./settings-store-CMpVMq3Y.js";import{Qn as n,fi as r}from"./index-Vd9Xr54k.js";var i=e();function a(){let{jiraEnabled:e,setJiraEnabled:a}=t(r(e=>({jiraEnabled:e.jiraEnabled,setJiraEnabled:e.setJiraEnabled})));return(0,i.jsxs)(`div`,{className:`space-y-4`,children:[(0,i.jsxs)(`section`,{className:`flex items-center justify-between gap-4`,children:[(0,i.jsxs)(`div`,{className:`min-w-0`,children:[(0,i.jsx)(`p`,{className:`text-sm font-medium`,children:`Jira Watcher`}),(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Auto-debug Jira tickets`})]}),(0,i.jsx)(n,{checked:e,onCheckedChange:a})]}),(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e?`Configure projects, watchers, and results in the Jira tab on the sidebar.`:`Enable to add a Jira tab to the sidebar, where projects and watchers are configured.`})]})}export{a as JiraWatcherSection};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./api-client-BnYFnEfK.js";import{ji as e}from"./index-Vd9Xr54k.js";export{e as useKeybindingsStore};
|
|
@@ -1 +1 @@
|
|
|
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{t as r}from"./minimal-mode-rLZOjciW.js";import{Cn as i,fr as a,gr as o,r as s}from"./icons-C1wDt09O.js";import"./api-client-BnYFnEfK.js";import{t as c}from"./settings-store-
|
|
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{t as r}from"./minimal-mode-rLZOjciW.js";import{Cn as i,fr as a,gr as o,r as s}from"./icons-C1wDt09O.js";import"./api-client-BnYFnEfK.js";import{t as c}from"./settings-store-CMpVMq3Y.js";import{t as l}from"./button-BHGVTbam.js";import{Ei as u,Oi as d,Ti as f,ji as p,wi as m}from"./index-Vd9Xr54k.js";var h=e(t(),1),g=n(),_=[{key:`general`,label:`General`},{key:`tabs`,label:`Tabs`},{key:`projects`,label:`Projects`}],v=[`Ctrl+T`,`Ctrl+W`,`Ctrl+N`,`Ctrl+Tab`,`Ctrl+L`,`Ctrl+H`,`Ctrl+J`,`F5`,`Ctrl+R`,`Ctrl+Shift+I`,`Ctrl+Shift+J`];function y({actionId:e,combo:t,locked:n}){let[r,a]=(0,h.useState)(!1),o=p(e=>e.setBinding),s=(0,h.useRef)(null),c=(0,h.useCallback)(t=>{if(t.preventDefault(),t.stopPropagation(),t.key===`Escape`){a(!1);return}let n=u(t);n&&(o(e,n),a(!1))},[e,o]);return(0,h.useEffect)(()=>{if(r)return document.addEventListener(`keydown`,c,!0),()=>document.removeEventListener(`keydown`,c,!0)},[r,c]),(0,h.useEffect)(()=>{if(!r)return;let e=e=>{s.current&&!s.current.contains(e.target)&&a(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[r]),n?(0,g.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border border-border bg-muted px-2 py-0.5 text-[11px] font-mono text-muted-foreground`,children:[(0,g.jsx)(i,{className:`size-2.5`}),d(t)]}):r?(0,g.jsx)(`button`,{ref:s,className:`inline-flex items-center rounded border-2 border-primary bg-primary/10 px-2 py-0.5 text-[11px] font-mono text-primary animate-pulse`,children:`Press keys...`}):(0,g.jsx)(`button`,{ref:s,onClick:()=>a(!0),className:`inline-flex items-center rounded border border-border bg-surface px-2 py-0.5 text-[11px] font-mono text-foreground hover:border-primary hover:bg-primary/5 transition-colors cursor-pointer`,title:`Click to change shortcut`,children:d(t)})}function b(){let{getBinding:e,resetBinding:t,resetAll:n,overrides:i}=p(),u=m(e=>e.contributions),d=u?.keybindings??[],h=u?.commands??[],b=c(e=>e.minimalMode);return(0,g.jsxs)(`div`,{className:`space-y-3`,children:[(0,g.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,g.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`Keyboard Shortcuts`}),Object.keys(i).length>0&&(0,g.jsxs)(l,{variant:`ghost`,size:`sm`,className:`h-6 text-[10px] text-muted-foreground`,onClick:n,children:[(0,g.jsx)(o,{className:`size-3 mr-1`}),`Reset all`]})]}),(0,g.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-warning/30 bg-warning/5 px-2.5 py-2`,children:[(0,g.jsx)(s,{className:`size-3.5 text-warning shrink-0 mt-0.5`}),(0,g.jsxs)(`p`,{className:`text-[10px] text-muted-foreground leading-relaxed`,children:[`Some shortcuts (`,v.slice(0,4).join(`, `),`...) are reserved by the browser and cannot be overridden.`]})]}),_.map(n=>{let a=f.filter(e=>e.category===n.key&&(!b||r(e.id)));return a.length===0?null:(0,g.jsxs)(`div`,{className:`space-y-1`,children:[(0,g.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:n.label}),(0,g.jsx)(`div`,{className:`space-y-0.5`,children:a.map(n=>{let r=e(n.id),a=n.id in i;return(0,g.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-1 rounded hover:bg-surface-elevated/50 transition-colors`,children:[(0,g.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,g.jsx)(`span`,{className:`text-xs text-foreground`,children:n.label}),n.note&&(0,g.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:n.note})]}),(0,g.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 ml-2`,children:[(0,g.jsx)(y,{actionId:n.id,combo:r,locked:n.locked}),a&&!n.locked&&(0,g.jsx)(`button`,{onClick:()=>t(n.id),className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground hover:bg-surface-elevated transition-colors`,title:`Reset to default`,children:(0,g.jsx)(o,{className:`size-3`})})]})]},n.id)})})]},n.key)}),d.length>0&&(0,g.jsxs)(`div`,{className:`space-y-1`,children:[(0,g.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:`Extensions`}),(0,g.jsx)(`div`,{className:`space-y-0.5`,children:d.map(n=>{let r=h.find(e=>e.command===n.command)?.title??n.command,s=`ext:${n.command}`,c=e(s)||n.key,l=s in i;return(0,g.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-1 rounded hover:bg-surface-elevated/50 transition-colors`,children:[(0,g.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,g.jsx)(a,{className:`size-3 text-muted-foreground shrink-0`}),(0,g.jsx)(`span`,{className:`text-xs text-foreground`,children:r})]}),(0,g.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 ml-2`,children:[(0,g.jsx)(y,{actionId:s,combo:c}),l&&(0,g.jsx)(`button`,{onClick:()=>t(s),className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground hover:bg-surface-elevated transition-colors`,title:`Reset to default`,children:(0,g.jsx)(o,{className:`size-3`})})]})]},s)})})]})]})}export{b as KeyboardShortcutsSection};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/lsp-client-
|
|
2
|
-
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,Kr as i,ht as a,pi as o,ut as s,xn as c}from"./icons-C1wDt09O.js";import{k as l,r as u}from"./api-client-BnYFnEfK.js";import{t as d}from"./settings-store-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/lsp-client-CpjPUUYJ.js","assets/rolldown-runtime-C5c2KzVm.js","assets/index-Vd9Xr54k.js","assets/preload-helper-Bf_JiD2A.js","assets/vendor-ui-BTSIXzhZ.js","assets/vendor-markdown-C-P1aR4p.js","assets/button-BHGVTbam.js","assets/utils-D3xTlJyU.js","assets/createLucideIcon-B2pji242.js","assets/file-diff-CScJM-VZ.js","assets/git-commit-horizontal-ZMFP54eB.js","assets/api-client-BnYFnEfK.js","assets/react-B9hau9ra.js","assets/open-db-tabs-DBgV2hbA.js","assets/window-store-D6EgLSfT.js","assets/minimal-mode-rLZOjciW.js","assets/panel-store-H7e9XHZF.js","assets/settings-store-CMpVMq3Y.js","assets/session-list-sync-triggers-D9i1FxWd.js","assets/project-store-Bs-kiU8m.js","assets/project-framework-store-nuePqBBa.js","assets/explorer-model-f5q-50DN.js","assets/db-sidebar-reveal-CGqWBYay.js","assets/use-is-mobile-CL2I7hLf.js","assets/db-types-cHkNH-mN.js","assets/tab-store-NUmgzMPf.js","assets/use-db-driver-installed-BL1XW_bI.js","assets/impexp-state-Cx2Az9iZ.js","assets/file-store-Bn0vbkCx.js","assets/sql-identifiers-7jHNEORb.js","assets/db-explorer-store-DJNNIfN5.js","assets/onboarding-quick-orientation-DTMrcMf0.js","assets/dialog-DnE192fh.js","assets/portal-container-context-Gepuvxdg.js","assets/icons-C1wDt09O.js","assets/format-file-meta-BOAh9mam.js","assets/fs-api-BVIVh_De.js","assets/open-settings-DWbF5YsE.js","assets/settings-categories-BY9n3BRr.js","assets/adaptive-context-menu-CxHkI7dL.js","assets/context-menu-DhKbkI1X.js","assets/mobile-bottom-sheet-M9pZptfh.js","assets/use-visual-viewport-B_GFo6k2.js","assets/dropdown-menu-CxZR_vuV.js","assets/input-CReAuQTF.js","assets/scroll-area-CSmNLlfl.js","assets/start-ellipsis-DfU-W_6j.js","assets/chat-preparation-cache-Bzb-T1pm.js","assets/clipboard-D3XnL7CB.js","assets/file-icons-CB0RsVdl.js","assets/format-date-SZ6qU2sD.js","assets/git-repo-store-CESIqItW.js","assets/patch-tab-metadata-DqvfqUI4.js","assets/ws-auth-k7DWnL9T.js","assets/apply-theme-Kiqxd1NZ.js","assets/resolve-theme-DGQXDIbF.js","assets/index-Cb3Z6wNy.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
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,Kr as i,ht as a,pi as o,ut as s,xn as c}from"./icons-C1wDt09O.js";import{k as l,r as u}from"./api-client-BnYFnEfK.js";import{t as d}from"./settings-store-CMpVMq3Y.js";import{t as f}from"./preload-helper-Bf_JiD2A.js";import"./portal-container-context-Gepuvxdg.js";import{n as p}from"./use-is-mobile-CL2I7hLf.js";import{t as m}from"./button-BHGVTbam.js";import{a as h,n as g,o as _,t as v}from"./dialog-DnE192fh.js";import{t as y}from"./mobile-bottom-sheet-M9pZptfh.js";import"./use-visual-viewport-B_GFo6k2.js";import{Qn as b,U as x}from"./index-Vd9Xr54k.js";import{t as S}from"./separator-DUdRLaL0.js";var C=e(t(),1),w=n();function T(){let[e,t]=(0,C.useState)(null),[n,r]=(0,C.useState)(!0),[i,a]=(0,C.useState)(null),[s,m]=(0,C.useState)(null),[h,g]=(0,C.useState)(null),_=d(e=>e.lspEnabled),v=d(e=>e.setLspEnabled),y=p(),T=x(),D=(0,C.useCallback)(async()=>{try{t(await u.get(`/api/lsp/servers`))}catch(e){console.error(`Failed to load language servers:`,e)}finally{r(!1)}},[]);(0,C.useEffect)(()=>{D()},[D]);let k=async e=>{a(e.id);try{await u.post(`/api/lsp/install`,{serverId:e.id}),l.success(`Installed ${e.displayName}`),await D(),(await f(()=>import(`./lsp-client-CpjPUUYJ.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56]))).retryUnavailableLspDocuments()}catch(t){l.error(t instanceof Error?t.message:`Could not install ${e.displayName}`)}finally{a(null)}},A=async e=>{g(null),m(e.id);try{await u.post(`/api/lsp/uninstall`,{serverId:e.id}),l.success(`Removed ${[e.displayName,...e.alsoRemoves??[]].join(`, `)}`),await D()}catch(t){l.error(t instanceof Error?t.message:`Could not remove ${e.displayName}`)}finally{m(null)}};if(n)return(0,w.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,w.jsx)(c,{className:`size-4 animate-spin text-muted-foreground`})});let j=e?.servers??[],M=new Set((e?.running??[]).map(e=>e.serverId)),N=i!==null||s!==null,P=j.filter(e=>e.installed).length;return(0,w.jsxs)(`div`,{className:`space-y-4`,children:[(0,w.jsxs)(`section`,{className:`flex items-center justify-between gap-4`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[(0,w.jsx)(o,{className:`size-4 text-muted-foreground shrink-0`}),(0,w.jsxs)(`div`,{className:`min-w-0`,children:[(0,w.jsx)(`p`,{className:`text-sm font-medium`,children:`Language Server`}),(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:T?`Off on a touch device — it runs a server process per project`:`Completions, hover, F12, rename and quick fix (this device)`})]})]}),(0,w.jsx)(b,{checked:_&&!T,disabled:T,onCheckedChange:v})]}),(0,w.jsx)(S,{}),(0,w.jsxs)(`section`,{className:`space-y-2`,children:[(0,w.jsxs)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:[`Servers (`,P,` of `,j.length,` installed)`]}),(0,w.jsxs)(`p`,{className:`text-[11px] text-muted-foreground`,children:[`PPM installs into `,(0,w.jsx)(`span`,{className:`font-mono`,children:e?.installDir}),`, so nothing you installed yourself changes — and Remove undoes exactly that, which is why a server PPM did not put there has no Remove. rust-analyzer is the exception: it is a rustup component, added to and removed from this machine's default toolchain. A server only starts when a file it serves is open.`]}),(0,w.jsx)(`div`,{className:`space-y-1`,children:j.map(e=>(0,w.jsx)(E,{server:e,running:M.has(e.id),installing:i===e.id,removing:s===e.id,busy:N,isMobile:y,onInstall:()=>k(e),onRemove:()=>g(e)},e.id))})]}),h&&(0,w.jsx)(O,{server:h,onConfirm:()=>A(h),onCancel:()=>g(null)})]})}function E({server:e,running:t,installing:n,removing:o,busy:s,isMobile:l,onInstall:u,onRemove:d}){return(0,w.jsxs)(`div`,{className:`flex items-center gap-2 px-2.5 py-2 rounded-lg bg-muted/50`,children:[(0,w.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,w.jsxs)(`p`,{className:`text-xs font-medium truncate`,children:[e.displayName,t&&(0,w.jsx)(`span`,{className:`ml-1.5 text-[11px] text-success`,children:`running`})]}),(0,w.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate`,children:e.languages.join(`, `)})]}),e.installed?(0,w.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,w.jsxs)(`span`,{className:`flex items-center gap-1 text-[11px] text-muted-foreground`,children:[(0,w.jsx)(r,{className:`size-3.5 text-success`}),D(e.origin)]}),e.removable&&(0,w.jsx)(m,{variant:`ghost`,size:`icon`,disabled:s,onClick:d,title:`Remove ${e.displayName}`,"aria-label":`Remove ${e.displayName}`,className:`text-error cursor-pointer ${l?`size-11`:`size-8`}`,children:o?(0,w.jsx)(c,{className:`size-3.5 animate-spin`}):(0,w.jsx)(i,{className:`size-3.5`})})]}):e.installable?(0,w.jsxs)(m,{variant:`outline`,size:`sm`,disabled:s,onClick:u,className:`text-xs px-3 gap-1 cursor-pointer shrink-0 ${l?`min-h-11`:`h-8`}`,children:[n?(0,w.jsx)(c,{className:`size-3 animate-spin`}):(0,w.jsx)(a,{className:`size-3`}),`Install`]}):(0,w.jsx)(A,{hint:e.installHint,isMobile:l})]})}function D(e){switch(e){case`project`:return`In project`;case`path`:return`On PATH`;case`bundled`:return`Bundled`;default:return`Installed`}}function O({server:e,onConfirm:t,onCancel:n}){let r=p(),i=e.alsoRemoves??[],a=(0,w.jsxs)(`div`,{className:`space-y-4`,"data-testid":`lsp-remove-confirm`,children:[(0,w.jsxs)(`p`,{className:`text-sm`,children:[`Remove `,(0,w.jsx)(`span`,{className:`font-medium`,children:e.displayName}),`?`]}),i.length>0&&(0,w.jsxs)(`p`,{className:`text-xs text-error`,children:[i.join(` and `),` `,i.length>1?`come`:`comes`,` from the same npm package, so`,` `,i.length>1?`they go`:`it goes`,` too.`]}),(0,w.jsx)(`p`,{className:`text-xs text-text-subtle`,children:k(e.installWith)}),(0,w.jsxs)(`div`,{className:`flex flex-col-reverse md:flex-row gap-2 md:justify-end pt-2`,children:[(0,w.jsx)(m,{variant:`outline`,onClick:n,className:`min-h-11 cursor-pointer`,children:`Cancel`}),(0,w.jsx)(m,{variant:`destructive`,autoFocus:!1,onClick:t,className:`min-h-11 cursor-pointer`,children:`Remove`})]})]});return r?(0,w.jsx)(y,{open:!0,onClose:n,children:(0,w.jsxs)(`div`,{className:`px-4 pb-4`,children:[(0,w.jsxs)(`h2`,{className:`text-base font-semibold mb-3`,children:[`Remove `,e.displayName]}),a]})}):(0,w.jsx)(v,{open:!0,onOpenChange:e=>{e||n()},children:(0,w.jsxs)(g,{className:`sm:max-w-sm`,children:[(0,w.jsx)(h,{children:(0,w.jsxs)(_,{className:`text-sm`,children:[`Remove `,e.displayName]})}),a]})})}function k(e){switch(e){case`rustup`:return`Runs rustup component remove, so it leaves this machine's default toolchain rather than a folder of PPM's. Installing it again is one press of the button.`;case`go`:return`Deletes the binary PPM built in its own folder. Anything in your own GOBIN is untouched.`;case`download`:return`Deletes the release PPM downloaded into its own folder. A copy you installed yourself is untouched.`;case`gem`:return`Deletes the gems PPM installed into its own folder. Your own Ruby and its gems are untouched.`;default:return`Runs bun remove in PPM's own folder. Nothing you installed yourself changes, and a server already running keeps running until its last editor closes.`}}function A({hint:e,isMobile:t}){let[n,i]=(0,C.useState)(!1);return(0,w.jsxs)(`button`,{type:`button`,title:e,onClick:()=>{navigator.clipboard?.writeText(e).then(()=>{i(!0),setTimeout(()=>i(!1),1500)})},className:`flex items-center gap-1.5 max-w-40 sm:max-w-64 rounded border border-border px-2 font-mono text-[11px] text-muted-foreground hover:bg-muted active:scale-[0.99] transition cursor-pointer shrink-0 ${t?`min-h-11`:`py-1`}`,children:[(0,w.jsx)(`span`,{className:`truncate`,children:e}),n?(0,w.jsx)(r,{className:`size-3 shrink-0 text-success`}):(0,w.jsx)(s,{className:`size-3 shrink-0 opacity-60`})]})}export{T as LanguageServersSection};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import{$ as r,A as i,An as a,Cn as o,Cr as s,D as c,Dr as l,Ft as u,Gt as d,Hr as f,M as p,O as m,P as h,Vn as g,ai as _,br as v,c as ee,cr as y,dn as b,er as x,fr as S,gt as C,hr as te,ht as w,jn as T,jr as E,kr as D,li as O,m as k,nt as A,o as j,on as M,or as ne,qr as N,si as P,t as F,tt as I,ut as re,vt as L,w as ie,xn as ae,xr as R}from"./icons-C1wDt09O.js";import{k as z}from"./api-client-BnYFnEfK.js";import{t as B}from"./react-B9hau9ra.js";import{t as V}from"./settings-store-CMpVMq3Y.js";import{n as H}from"./utils-D3xTlJyU.js";import{r as oe,t as se}from"./panel-store-H7e9XHZF.js";import{i as U}from"./project-store-Bs-kiU8m.js";import{r as W}from"./clipboard-D3XnL7CB.js";import{t as G}from"./button-BHGVTbam.js";import{a as K,i as q,l as ce,m as le,r as ue,t as de}from"./dropdown-menu-CxZR_vuV.js";import{t as J}from"./mobile-bottom-sheet-M9pZptfh.js";import{$i as fe,$t as pe,At as me,B as he,Bt as Y,Ct as ge,Dt as X,Et as _e,Ft as ve,Gt as ye,Ht as be,It as xe,Jt as Se,Kt as Ce,Lt as we,Mt as Te,Nt as Ee,Ot as De,Pt as Oe,Qi as ke,Qn as Ae,Qt as je,Rt as Me,St as Ne,Tt as Pe,Ut as Fe,V as Ie,Vt as Le,Wt as Re,Xt as ze,Yt as Be,Zt as Ve,an as He,cn as Ue,di as We,ea as Ge,en as Ke,fn as qe,in as Je,jt as Ye,kt as Xe,ln as Ze,nn as Qe,on as $e,qt as et,rn as tt,sn as nt,tn as rt,ut as it,wt as at,zt as ot}from"./index-Vd9Xr54k.js";import{i as st,r as ct}from"./send-to-chat-BUxj21hD.js";import{t as lt}from"./code-fence-BH0dNR07.js";var ut=/\b[a-z0-9]+(?:-[a-z0-9]+)+\.trycloudflare\.com\b/gi,dt=[/()\b(?:sk-[\w-]{20,}|gh[pousr]_[A-Za-z0-9]{30,}|github_pat_\w{30,}|eyJ[\w-]{8,}\.eyJ[\w-]{8,}\.[\w-]*)/g,/(\d{6,}:)[\w-]{30,}/g,/(:\/\/[^/\s:@]*:)[^@\s/\u0001]+(?=@)/g,/([?&#][\w.-]*(?:token|key|secret|passw|auth|code|state|ticket|sig|credential)[\w.-]*=)[^&#\s"'<>[\]\u0001]+/gi,/(\b(?:proxy-)?authorization["']?\s*[:=]\s*["']?)(?:(?:basic|bearer|digest|token)\s+)?[^\s"',;\u0001]+/gi,/(\b(?:set-)?cookie["']?\s*[:=]\s*["']?)(?=[^\s=;"']+=)[^\r\n"'\u0001]+/gi,/(\bbearer\s+)[^\s"',;[\]\u0001]+/gi,/((?:token|secret|passw(?:or)?d|api[_-]?key|access[_-]?key|private[_-]?key)["']?\s*[:=]\s*["']?)[^\s"'&,;)}[\]\u0001]+/gi],ft=/(?:\/home\/|\/Users\/)[^/\s"'`]+|[A-Za-z]:(?:\\{1,2}|\/)Users(?:\\{1,2}|\/)[^\\/\s"'`]+/gi,pt=/[\w.+-]+@[\w-]+(?:\.[\w-]+)+/g,mt=/\b([0-9a-f]{8})-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi;function ht(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function gt(e,t,n=!1){let r=e=>n?`\u0001${e}\u0002`:e,i=e.replace(ut,()=>r(`<tunnel>.trycloudflare.com`));for(let e of dt)i=i.replace(e,(e,t)=>`${t}${r(`[REDACTED]`)}`);t.home&&(i=i.replace(ft,()=>r(`~`))),t.email&&(i=i.replace(pt,()=>r(`<email>`))),t.chats&&(i=i.replace(mt,(e,t)=>r(t)));let a=(t.projects??[]).filter(e=>e.trim().length>=3);if(a.length){let e=RegExp(`(?<![\\w-])(?:${a.map(ht).sort((e,t)=>t.length-e.length).join(`|`)})(?![\\w-])`,`gi`);i=i.replace(e,()=>r(`<project>`))}return i}function _t(e){return[`secrets`,e.home&&`home paths`,e.email&&`emails`,e.chats&&`chat ids`,e.projects?.length&&`project names`].filter(e=>!!e)}var vt=8192,yt=[0,5,20];function bt(e){let t=e.ctx&&e.around?ve(e.around.before.slice(-e.ctx)):[],n=e.ctx&&e.around?ve(e.around.after.slice(0,e.ctx)):[];return[...t.map(e=>({row:e,ctx:!0})),...e.rows.map(e=>({row:e,ctx:!1})),...n.map(e=>({row:e,ctx:!0}))]}function xt(e){return e.rows.reduce((e,t)=>e+t.count,0)}function St(e){let t=new Set(e.map(e=>e.src));return t.size===1?[...t][0]:`all`}var Ct=e=>new Date(e).toISOString().slice(11,19);function wt(e){let t=e.rows[0],n=e.rows[e.rows.length-1],r=t&&n?` · ${Ct(t.entry.ts)}–${Ct(n.lastTs)} UTC`:``;return`${Ke(e.src)}${r}`}function Tt(e){return bt(e).map(e=>Qe(e.row.entry,e.row.count))}function Et({fields:e,snippets:t,environment:n,redact:r,mark:i=!1}){let a=e=>gt(e,r,i),o=[`### What happened`,a(e.what.trim())||`_Not filled in_`,``,`### Steps to reproduce`,a(e.steps.trim())||`_Not filled in_`,``];if(e.expected.trim()&&o.push(`### Expected`,a(e.expected.trim()),``),t.length){o.push(`### Log lines`);for(let e of t){let t=Tt(e).map(a),n=lt(t.join(`
|
|
2
|
+
`)),r=xt(e);o.push(``,`<details><summary>${wt(e)} · ${Y(r,`line`)}${e.ctx?` and ${e.ctx} around`:``}</summary>`,``,n,...t,n,`</details>`)}o.push(``)}return n.length&&o.push(`### Environment`,...n.map(([e,t])=>`- ${e}: ${a(t)}`),``),o.push(`<sub>Sent from PPM → Logs. Removed before sending: ${_t(r).join(`, `)}.</sub>`),o.join(`
|
|
3
|
+
`)}function Dt(e,t,n){let r=[`title=${encodeURIComponent(e)}`];return t.length&&r.push(`labels=${encodeURIComponent(t.join(`,`))}`),n!==null&&r.push(`body=${encodeURIComponent(n)}`),`https://github.com/${He}/issues/new?${r.join(`&`)}`}function Ot(e,t){return`# ${e.trim()||`Bug report`}\n\n${t}`}var Z=e(t(),1),kt=500,At=2e4,jt=4e3,Mt=0,Nt=null,Pt=()=>Ie(JSON.stringify({type:$e}));function Ft(){return Mt++===0&&(Pt(),Nt=he(Pt)),()=>{--Mt>0||(Nt?.(),Nt=null,Ie(JSON.stringify({type:nt})))}}function It(e,t){return JSON.stringify([e.src,e.levels,e.tagsOff,e.q,e.regex,e.caseSensitive,e.chat,t])}function Lt(e){let t={};for(let[n,r]of Object.entries(e))t[n]={...r,tags:r.tags.map(e=>[e[0],e[1]])};return t}function Rt(e,t,n,r){let i=e.meta;if(!i||!t.length)return e;let a={...i.titles,...n},o=new Set(e.entries.slice(-jt).map(e=>e.id)),s=t.filter(e=>e.ts>=i.fromTs&&!o.has(e.id));if(!s.length)return e;let c=Lt(i.stats);Ve(c,s);let l=je(r),u=s.filter(e=>rt(e,r,l,a)),d=i.chats.map(e=>({...e}));for(let e of s){if(!e.sid)continue;let t=d.find(t=>t.sid===e.sid);t?(t.count++,t.last=e.ts):d.unshift({sid:e.sid,title:a[e.sid]??null,count:1,last:e.ts})}let f=u.length?e.entries.concat(u):e.entries,p=i.hasMore;return f.length>At&&(f=f.slice(-At),p=!0),{...e,entries:f,meta:{...i,stats:c,chats:d,titles:a,matched:i.matched+u.length,inRange:i.inRange+s.filter(e=>r.src===`all`||e.src===r.src).length,hasMore:p},batch:u.length?{seq:(e.batch?.seq??0)+1,count:u.length}:e.batch}}function zt(e,t,n){let r=It(e,t),[i,a]=(0,Z.useState)({key:r,entries:[],meta:null,loading:!0,loadingEarlier:!1,error:null,batch:null}),[o,s]=(0,Z.useState)(0),[c,l]=(0,Z.useState)(0),u=(0,Z.useRef)(e);u.current=e;let d=(0,Z.useRef)(i);d.current=i;let f=(0,Z.useRef)(n);f.current=n;let p=(0,Z.useRef)(e.q),m=(0,Z.useRef)(null),h=(0,Z.useRef)({entries:[],titles:{}});(0,Z.useEffect)(()=>Ft(),[]),(0,Z.useEffect)(()=>he(()=>s(e=>e+1)),[]),(0,Z.useEffect)(()=>{let n=new AbortController;m.current={entries:[],titles:{}},h.current={entries:[],titles:{}},l(0),a(e=>({...e,key:r,loading:!0,error:null}));let i=e.q===p.current?0:250;p.current=e.q;let o=setTimeout(()=>{De({...e,range:t,from:be(t,Date.now()),limit:kt},n.signal).then(t=>{if(n.signal.aborted)return;let{entries:i,...o}=t,s=m.current??{entries:[],titles:{}};m.current=null,a(Rt({key:r,entries:i,meta:o,loading:!1,loadingEarlier:!1,error:null,batch:null},s.entries,s.titles,e))}).catch(e=>{n.signal.aborted||(m.current=null,a(t=>({...t,key:r,loading:!1,error:e instanceof Error?e.message:String(e)})))})},i);return()=>{clearTimeout(o),n.abort()}},[r,o]),(0,Z.useEffect)(()=>{let e=e=>{let t=e.detail;if(t?.entries?.length){if(m.current){m.current.entries.push(...t.entries),Object.assign(m.current.titles,t.titles);return}if(f.current){h.current.entries.push(...t.entries),Object.assign(h.current.titles,t.titles);let e=u.current,n=je(e),r={...d.current.meta?.titles,...h.current.titles};l(i=>i+t.entries.filter(t=>rt(t,e,n,r)).length);return}a(e=>Rt(e,t.entries,t.titles??{},u.current))}};return window.addEventListener(`logs:lines`,e),()=>window.removeEventListener(`logs:lines`,e)},[]),(0,Z.useEffect)(()=>{if(n)return;let{entries:e,titles:t}=h.current;h.current={entries:[],titles:{}},l(0),e.length&&a(n=>Rt(n,e,t,u.current))},[n]);let g=(0,Z.useCallback)(async e=>{let n=d.current;if(!n.meta?.hasMore||n.loadingEarlier||n.loading||!n.entries.length)return!1;let r=n.key;a(e=>({...e,loadingEarlier:!0}));try{let i=await De({...u.current,range:t,from:n.meta.fromTs,before:n.entries[0].id,limit:kt,...e?{reach:e}:{}}),o=d.current;if(o.key!==r||!o.meta)return a(e=>({...e,loadingEarlier:!1})),!1;let s=new Set(o.entries.slice(0,jt).map(e=>e.id)),c=i.entries.filter(e=>!s.has(e.id));return a(e=>e.key!==r||!e.meta?{...e,loadingEarlier:!1}:{...e,entries:c.concat(e.entries),meta:{...e.meta,hasMore:i.hasMore,titles:{...i.titles,...e.meta.titles},reachMissed:i.reachMissed},loadingEarlier:!1}),c.length>0}catch{return a(e=>({...e,loadingEarlier:!1})),!1}},[t]),_=(0,Z.useCallback)(()=>s(e=>e+1),[]);return(0,Z.useMemo)(()=>({...i,pausedCount:c,loadEarlier:g,reload:_}),[i,c,g,_])}function Bt(){let[e,t]=(0,Z.useState)(null),[n,r]=(0,Z.useState)(null),i=(0,Z.useCallback)(async()=>{try{t(await X()),r(null)}catch(e){r(e instanceof Error?e.message:String(e))}},[]);return(0,Z.useEffect)(()=>{i();let e=()=>void i();return window.addEventListener(Je,e),()=>window.removeEventListener(Je,e)},[i]),{data:e,error:n,analyze:(0,Z.useCallback)(async e=>{t(e=>e&&{...e,running:!0,error:null}),await Ne(e)},[]),setAuto:(0,Z.useCallback)(async e=>{t(t=>t&&{...t,auto:e}),await Ye(e),await i()},[i]),setDismissed:(0,Z.useCallback)(async(e,n)=>{t(t=>t&&{...t,issues:t.issues.map(t=>t.id===e?{...t,dismissed:n}:t)}),await ge(e,n)},[]),undismissAll:(0,Z.useCallback)(async()=>{t(e=>e&&{...e,issues:e.issues.map(e=>({...e,dismissed:!1}))}),await Te()},[])}}var Vt=null;function Ht(){return Vt??=_e().then(e=>[...e,[`Browser`,it(navigator.userAgent)]]).catch(e=>{throw Vt=null,e}),Vt}var Ut=0,Wt={title:``,labels:[],what:``,steps:``,expected:``},Gt=(e,t)=>e.length===t.length&&e.every((e,n)=>e.key===t[n].key&&e.count===t[n].count),Kt=B((e,t)=>({snippets:[],fields:Wt,status:`none`,stale:!1,fresh:!1,error:null,model:null,basis:0,view:`write`,envOff:[],priv:{home:!0,email:!0,chats:!0,projects:!1},add:n=>{if(!n.length||t().snippets.some(e=>Gt(e.rows,n)))return!1;let r=n.map(e=>e.entry),i={id:`s${++Ut}`,src:St(r),rows:n,ctx:0,around:null};return e(e=>({snippets:[...e.snippets,i],stale:e.status===`done`})),!0},remove:n=>{let r=t().snippets.findIndex(e=>e.id===n);if(r<0)return null;let i=t().snippets[r];return e(e=>({snippets:e.snippets.filter(e=>e.id!==n),stale:e.status===`done`})),{snippet:i,index:r}},restore:(t,n)=>{e(e=>{let r=e.snippets.slice();return r.splice(Math.min(n,r.length),0,t),{snippets:r}})},setContext:async(n,r)=>{e(e=>({snippets:e.snippets.map(e=>e.id===n?{...e,ctx:r}:e)}));let i=t().snippets.find(e=>e.id===n);if(!r||!i||i.around)return;let a=i.rows.flatMap(e=>e.ids);try{let t=await Pe([a[0],a[a.length-1]],20,i.src);e(e=>({snippets:e.snippets.map(e=>e.id===n?{...e,around:t}:e)}))}catch{}},setFields:t=>e(e=>({fields:{...e.fields,...t}})),setView:t=>e({view:t}),toggleEnv:t=>e(e=>({envOff:e.envOff.includes(t)?e.envOff.filter(e=>e!==t):[...e.envOff,t]})),togglePriv:t=>e(e=>({priv:{...e.priv,[t]:!e.priv[t]}})),draft:async()=>{let{snippets:n,status:r}=t();if(!(!n.length||r===`drafting`)){e({status:`drafting`,view:`write`,error:null});try{let r=(await Ht().catch(()=>[])).filter(([e])=>!t().envOff.includes(e)),i=await at({snippets:n.map(e=>({label:wt(e),lines:Tt(e)})),environment:r});e({status:`done`,fields:{title:i.title,labels:i.labels,what:i.what,steps:i.steps,expected:i.expected},model:i.model,basis:n.reduce((e,t)=>e+xt(t),0),stale:!1,fresh:!0}),setTimeout(()=>e({fresh:!1}),900)}catch(t){e(e=>({status:e.model?`done`:`none`,error:t instanceof Error?t.message:String(t)}))}}}})),Q=n(),qt={all:b,ai:ie,shell:f,server:F,ext:S,files:u,auto:m,tunnel:A,browser:d},Jt={debug:`DEBUG`,info:`INFO`,warn:`WARN`,error:`ERROR`,fatal:`FATAL`};function Yt({text:e,re:t}){return t?(0,Q.jsx)(Q.Fragment,{children:ye(e,t).map((e,t)=>e.hit?(0,Q.jsx)(`mark`,{className:`lg-hit`,children:e.text},t):(0,Q.jsx)(Z.Fragment,{children:e.text},t))}):(0,Q.jsx)(Q.Fragment,{children:e})}function Xt({msg:e,re:t,titles:n,onChat:r}){return(0,Q.jsx)(Q.Fragment,{children:ot(e).map((e,i)=>{if(e.kind===`chat`){let t=n[e.sid]??e.sid.slice(0,8);return r?(0,Q.jsx)(`button`,{type:`button`,className:`lg-sess`,title:`Show only this chat · ${e.sid}`,onClick:()=>r(e.sid),children:t},i):(0,Q.jsx)(`span`,{className:`lg-sess`,children:t},i)}return e.kind===`quote`?(0,Q.jsx)(`span`,{className:`q`,children:(0,Q.jsx)(Yt,{text:e.text,re:t})},i):e.kind===`key`?(0,Q.jsx)(`span`,{className:`k`,children:(0,Q.jsx)(Yt,{text:e.text,re:t})},i):(0,Q.jsx)(Yt,{text:e.text,re:t},i)})})}var Zt=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/g;function Qt({row:e,utc:t,ctx:n,trim:r}){let i=e.entry,a=i.msg.replace(Zt,e=>e.slice(0,8)),o=r&&a.length>150?`${a.slice(0,149)}…`:a;return(0,Q.jsxs)(`div`,{className:n?`r ctx`:`r`,children:[(0,Q.jsx)(`span`,{className:`t`,children:Oe(i.ts,t)}),` `,(0,Q.jsx)(`span`,{className:i.lv,children:Jt[i.lv].padEnd(5,` `)}),` `,(0,Q.jsx)(`span`,{className:`g`,children:i.tag}),` `,o,e.count>1&&(0,Q.jsx)(`span`,{className:`t`,children:` ×${e.count}`}),!!i.more?.length&&(0,Q.jsx)(`span`,{className:`t`,children:` +${i.more.length} lines`})]})}function $t({paused:e,pending:t}){return(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5 whitespace-nowrap text-[10px] text-text-subtle`,"data-testid":`logs-live`,children:[e?(0,Q.jsx)(x,{className:`size-3 text-warning`}):(0,Q.jsx)(_,{className:`size-3 text-success`}),(0,Q.jsx)(`span`,{children:e?`Paused${t?` · ${t.toLocaleString(`en-US`)} new`:``}`:`Live`})]})}function en({title:e,children:t}){return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`lg-sheet-sec`,children:e}),(0,Q.jsx)(`div`,{className:`lg-sheet-chips`,children:t})]})}var $={keys:new Set,anchor:null,cursor:null};function tn(e){return{keys:new Set([e]),anchor:e,cursor:e}}function nn(e,t,n,r=!1){let i=e.anchor??n,a=we(t,i,n);return{keys:new Set(r?[...e.keys,...a]:a),anchor:i,cursor:n}}function rn(e,t){let n=new Set(e.keys);return n.has(t)?n.delete(t):n.add(t),{keys:n,anchor:t,cursor:t}}function an(e,t){return t.keys.size?e.filter(e=>t.keys.has(e.key)):[]}function on(e,t){let n=e.levels;return!n.error||!n.warn||!n.info||n.debug||!!e.chat||!!e.q||e.tagsOff.length>0||t!==`1h`}var sn=e=>e.reduce((e,t)=>e+t.count,0),cn=e=>e.map(e=>Qe(e.entry,e.count)).join(`
|
|
4
|
+
`);async function ln(e){e.length&&(await W(cn(e))?z.success(`Copied ${Y(sn(e),`line`)}`):z.error(`Could not copy the lines`))}function un(){let e=ct();if(e)return Object.values(se.getState().panels).flatMap(e=>e.tabs).find(t=>t.id===e)}function dn(e,t){if(!e.length)return;let n=[...new Set(e.map(e=>Ke(e.entry.src)))].join(`, `),r=cn(e),i=lt(r);st({text:`Selected lines from the PPM logs (${n})\n${i}\n${r}\n${i}`,label:`Log selection`,newTab:t,asContext:!0})}function fn(e,t,n=!1){return e.length?Kt.getState().add([...e])?(n||z.success(`Added ${Y(sn(e),`line`)} to the report`,t?{action:{label:`Open`,onClick:t}}:void 0),!0):(n||z(`These lines are already in the report`),!1):!1}var pn=e=>String(e).padStart(2,`0`);function mn(e){if(!e.length)return;let t=new Date,n=`ppm-logs-${t.getFullYear()}${pn(t.getMonth()+1)}${pn(t.getDate())}-${pn(t.getHours())}${pn(t.getMinutes())}.log`,r=URL.createObjectURL(new Blob([`${cn(e)}\n`],{type:`application/octet-stream`})),i=document.createElement(`a`);i.href=r,i.download=n,i.rel=`noopener`,i.style.display=`none`,document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e4),z.success(`Saved ${n} with ${Y(sn(e),`line`)}`)}var hn=24,gn=200;function _n(e,{follow:t,setFollow:n,feed:r,size:i,virtualizer:a,keep:o}){let s=(0,Z.useRef)(0),[c,l]=(0,Z.useState)(0),u=(0,Z.useCallback)((e=gn)=>{s.current=performance.now()+e},[]),d=(0,Z.useCallback)(()=>{let t=e.current;t&&(u(),t.scrollTop=t.scrollHeight)},[e,u]);(0,Z.useLayoutEffect)(()=>{let e=o.current;if(e!=null&&!t){let{count:t,getItemKey:n}=a.options;for(let r=0;r<t;r++)if(n(r)===e){u(),a.scrollToIndex(r,{align:`start`});break}}return()=>{let e=a.getVirtualItemForOffset(a.scrollOffset??0);o.current=e?String(e.key):null}},[]),(0,Z.useLayoutEffect)(()=>{t&&d()},[t,i,d]),(0,Z.useEffect)(()=>l(0),[r.key]),(0,Z.useEffect)(()=>{t&&l(0)},[t]);let f=r.batch;return(0,Z.useEffect)(()=>{f&&!t&&l(e=>e+f.count)},[f?.seq]),{newCount:c,onScroll:(0,Z.useCallback)(()=>{let r=e.current;if(!r||performance.now()<s.current)return;let i=r.scrollHeight-r.scrollTop-r.clientHeight<hn;i!==t&&n(i)},[e,t,n]),ownScroll:u}}var vn=`flex items-center gap-1 whitespace-nowrap rounded bg-surface-elevated text-text-primary transition-colors hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground px-2 py-0.5 text-xs`,yn=5,bn={ai:`sdk, chat, usage, accounts`,shell:`bash-spy, bg-shell, terminal`,server:`supervisor, startup, stderr`,ext:`extensions, language servers`,files:`file-watcher, file-index, git`,auto:`scheduler, ppmbot, jira`,tunnel:`cloudflared.log`,browser:`Console`};function xn(e,t){return e?t===`all`?Object.values(e).reduce((e,t)=>({total:e.total+t.total,err:e.err+t.err,warn:e.warn+t.warn}),{total:0,err:0,warn:0}):e[t]:{total:0,err:0,warn:0}}function Sn(e,t,n){if(e===`tunnel`)return`cloudflared.log`;if(e===`browser`)return n?`Console · ${Y(n.browserDevices,`device`)}`:bn.browser;let r=t?.[e]?.tags.slice(0,3).map(e=>e[0]);return r?.length?r.join(`, `):bn[e]}function Cn(e,t){return t?e===`all`?`ppm.log, cloudflared.log, ${Y(t.browserDevices,`browser`)}`:e===`tunnel`?t.cloudflaredPath?`cloudflared.log · ${Ee(t.cloudflaredBytes)}`:`no cloudflared.log yet`:e===`browser`?`browser consoles · ${Y(t.browserDevices,`device`)}`:`ppm.log · ${Ee(t.ppmLogBytes)}`:``}function wn({src:e,files:t}){return e===`tunnel`?t.cloudflaredPath?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`b`,{children:t.cloudflaredPath}),(0,Q.jsx)(`br`,{}),`Written by cloudflared itself, to the second.`]}):(0,Q.jsx)(Q.Fragment,{children:`No cloudflared.log yet. It appears once a tunnel has run.`}):e===`browser`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`b`,{children:`Browser consoles`}),(0,Q.jsx)(`br`,{}),`Sent by every open PPM tab and kept `,Y(t.browserRetentionDays,`day`),`.`]}):e===`all`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`b`,{children:t.ppmLogPath}),` and its `,Y(t.rotatedFiles,`older file`),`, `,(0,Q.jsx)(`b`,{children:`cloudflared.log`}),` and `,Y(t.browserDevices,`browser`),`, merged by time.`]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`b`,{children:t.ppmLogPath}),(0,Q.jsx)(`br`,{}),Ee(t.ppmLogBytes),` of `,Ee(t.capBytes),`. When full it becomes ppm.log.1; `,t.generations,` files are kept.`]})}var Tn=(0,Z.memo)(function({row:e,index:t,selected:n,cursor:r,flash:i,open:a,utc:o,re:s,titles:c,onChat:l,onToggleMore:u,measure:d}){let f=e.entry,p=f.more?.length??0;return(0,Q.jsxs)(`div`,{ref:d,"data-index":t,"data-key":e.key,role:`option`,"aria-selected":n,className:H(`lg-row`,pe(f.lv)===`error`&&`err`,n&&`sel`,r&&`cur`,i&&`flash`),children:[(0,Q.jsx)(`span`,{className:`lg-mark`}),(0,Q.jsx)(`span`,{className:`lg-t`,children:Oe(f.ts,o)}),(0,Q.jsx)(`span`,{className:`lg-lv ${f.lv}`,children:Jt[f.lv]}),(0,Q.jsx)(`span`,{className:`lg-tg`,title:f.tag,children:f.tag}),(0,Q.jsxs)(`span`,{className:`lg-m`,children:[(0,Q.jsx)(Xt,{msg:f.msg,re:s,titles:c,onChat:l}),e.count>1&&(0,Q.jsxs)(`span`,{className:`lg-x`,title:`The same line ${e.count} times in a row`,children:[`×`,e.count.toLocaleString(`en-US`)]}),p>0&&(0,Q.jsx)(`button`,{type:`button`,className:`lg-pchip`,onClick:()=>u(e.key),children:a?`Hide lines`:`+${Y(p,`line`)}`})]}),a&&p>0&&(0,Q.jsx)(`div`,{className:`lg-more`,children:(0,Q.jsx)(Yt,{text:f.more.join(`
|
|
5
|
+
`),re:s})})]})});function En({lv:e,cls:t,label:n,n:r,filter:i,setFilter:a}){return(0,Q.jsxs)(`button`,{type:`button`,className:H(`lg-chip`,t),"aria-pressed":i.levels[e],onClick:()=>a({levels:{...i.levels,[e]:!i.levels[e]}}),children:[(0,Q.jsx)(`span`,{className:`dot`}),n,r!=null&&(0,Q.jsx)(`span`,{className:`n`,children:Re(r)})]})}function Dn(e){let{feed:t,rows:n,filter:o,setFilter:c,range:l,setRange:u,sel:d,setSel:f,follow:p,setFollow:m,paused:_,setPaused:v,utc:y,wrap:b}=e,S=t.meta,C=V(e=>e.setLogsWrap),E=(0,Z.useRef)(null),D=(0,Z.useRef)(null),O=(0,Z.useRef)(null),k=(0,Z.useRef)(null),[A,M]=(0,Z.useState)(()=>new Set),[N,F]=(0,Z.useState)(!1),[L,ie]=(0,Z.useState)(()=>new Set),z=(0,Z.useMemo)(()=>je(o),[o]),B=(0,Z.useMemo)(()=>xe(z),[z]),oe=(0,Z.useMemo)(()=>S?.titles??{},[S?.titles]),se=S?.restarts,U=(0,Z.useMemo)(()=>{let e=Fe(n,se??[]),t=[];for(let r of n){let n=e.get(r.key);n!=null&&t.push({kind:`div`,key:`restart-${n}`,at:n}),t.push({kind:`row`,key:r.key,row:r})}return t},[n,se]),W=(0,Z.useMemo)(()=>new Map(U.map((e,t)=>[e.key,t])),[U]),G=(0,Z.useMemo)(()=>n.map(e=>e.key),[n]),K=(0,Z.useMemo)(()=>an(n,d),[n,d]),J=We({count:U.length,getScrollElement:()=>E.current,estimateSize:e=>U[e]?.kind===`div`?32:20,getItemKey:e=>U[e]?.key??e,overscan:24,paddingStart:4,paddingEnd:64}),fe=J.getVirtualItems(),pe=J.getTotalSize(),{newCount:me,onScroll:he,ownScroll:ge}=_n(E,{follow:p,setFollow:m,feed:t,size:pe+U.length,virtualizer:J,keep:e.listTop});(0,Z.useEffect)(()=>M(new Set),[t.key]);let X=t.batch;(0,Z.useEffect)(()=>{if(!X||X.count>yn)return;let e=new Set(t.entries.slice(-X.count).map(e=>e.id)),r=new Set;for(let t=n.length-1;t>=0&&r.size<X.count;t--)if(n[t].ids.some(t=>e.has(t)))r.add(n[t].key);else if(r.size)break;ie(r);let i=setTimeout(()=>ie(new Set),1200);return()=>clearTimeout(i)},[X?.seq]);let _e=e.reveal;(0,Z.useLayoutEffect)(()=>{if(!_e)return;let e=W.get(_e.key);e!=null&&(ge(600),J.scrollToIndex(e,{align:`center`}),E.current?.focus({preventScroll:!0}))},[_e?.seq]),(0,Z.useLayoutEffect)(()=>{let e=k.current;if(!e)return;let t=W.get(e);t==null||t===0||(k.current=null,ge(),J.scrollToIndex(t,{align:`start`}))},[W,J,ge]);let ve=(0,Z.useCallback)(async()=>{m(!1),k.current=G[0]??null,await t.loadEarlier()||(k.current=null)},[t,G,m]),ye=(0,Z.useCallback)(()=>{let e=O.current,t=E.current,n=D.current;if(!e||!t||!n||!K.length)return;let r=W.get(K[0].key),i=W.get(K[K.length-1].key),a=J.measurementsCache,o=r==null?void 0:a[r],s=i==null?void 0:a[i];if(!o||!s)return;let c=e.offsetHeight,l=e.offsetWidth,u=s.end+4;u+c>t.scrollTop+t.clientHeight&&o.start-c-4>=t.scrollTop&&(u=o.start-c-4);let d=n.querySelector(`.lg-m`),f=d?d.getBoundingClientRect().left-n.getBoundingClientRect().left:0,p=Math.max(t.scrollLeft+6,Math.min(f,t.scrollLeft+t.clientWidth-l-6));e.style.transform=`translate(${Math.round(Math.max(0,p))}px, ${Math.round(u)}px)`},[K,W,J]);(0,Z.useLayoutEffect)(()=>{ye()}),(0,Z.useEffect)(()=>{let e=E.current;if(!e)return;let t=new ResizeObserver(()=>ye());return t.observe(e),()=>t.disconnect()},[ye]);let be=()=>{ye(),he()},Ce=e=>{if(e.button!==0)return;let t=e.target,n=t.closest(`.lg-row`);if(!n||t.closest(`button, a`))return;let r=n.dataset.key;r&&(e.preventDefault(),E.current?.focus({preventScroll:!0}),e.shiftKey&&d.anchor?f(nn(d,G,r,e.ctrlKey||e.metaKey)):e.ctrlKey||e.metaKey?f(rn(d,r)):d.keys.size===1&&d.keys.has(r)?f({keys:new Set,anchor:r,cursor:r}):(f(tn(r)),F(!0)))},we=e=>{if(!N)return;let t=e.target.closest(`.lg-row`)?.dataset.key;t&&t!==d.cursor&&f(nn(d,G,t))};(0,Z.useEffect)(()=>{if(!N)return;let e=E.current?.ownerDocument??document,t=()=>F(!1);return e.addEventListener(`mouseup`,t),()=>e.removeEventListener(`mouseup`,t)},[N]);let Te=(0,Z.useCallback)(e=>{M(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),Ee=(0,Z.useCallback)(e=>c({chat:e}),[c]),De=e=>{if(e.key===`Escape`){d.keys.size&&(e.stopPropagation(),f($));return}if(!G.length)return;let t=e.ctrlKey||e.metaKey;if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=d.cursor?G.indexOf(d.cursor):-1;t=t<0?e.key===`ArrowDown`?0:G.length-1:Math.max(0,Math.min(G.length-1,t+(e.key===`ArrowDown`?1:-1)));let n=G[t];e.shiftKey?f(nn(d.anchor?d:{...d,anchor:d.cursor??n},G,n)):f({keys:d.keys,anchor:d.keys.size?d.anchor:n,cursor:n});let r=W.get(n);r!=null&&J.scrollToIndex(r,{align:`auto`})}else if(e.key===` `&&d.cursor)e.preventDefault(),f(rn(d,d.cursor));else if(t&&e.key.toLowerCase()===`a`)e.preventDefault(),f({keys:new Set(G),anchor:G[0],cursor:G[G.length-1]});else if(t&&e.key.toLowerCase()===`c`&&K.length)e.preventDefault(),ln(K);else if(e.key===`Enter`&&d.cursor){let e=n.find(e=>e.key===d.cursor);e?.entry.more?.length&&Te(e.key)}},Ae=()=>f($),Ne=xn(S?.stats,o.src),Pe=fe[0],Ie=K.length>0&&!N,Le=z===void 0||!!S?.badRegex,Ve=o.chat?oe[o.chat]??o.chat.slice(0,8):`All chats`,He=o.src===`all`?[]:S?.stats[o.src].tags??[],Ue=new Set(o.tagsOff),qe=l===`restart`?S?.fromTs:S?.restarts.at(-1);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`nav`,{className:`lg-side`,"aria-label":`Log sources`,children:[(0,Q.jsx)(On,{id:`all`,label:`All sources`,sub:`ppm.log, cloudflared.log, browsers`,stats:xn(S?.stats,`all`),current:o.src===`all`,onPick:()=>c({src:`all`,tagsOff:[]})}),(0,Q.jsx)(`div`,{className:`lg-group`,children:`Server · ppm.log`}),ze.filter(e=>e.group===`ppm`).map(e=>(0,Q.jsx)(On,{id:e.id,label:e.label,sub:Sn(e.id,S?.stats,S?.files),stats:S?.stats[e.id],current:o.src===e.id,onPick:()=>c({src:e.id,tagsOff:[]})},e.id)),(0,Q.jsx)(`div`,{className:`lg-group`,children:`Elsewhere`}),ze.filter(e=>e.group===`elsewhere`).map(e=>(0,Q.jsx)(On,{id:e.id,label:e.label,sub:Sn(e.id,S?.stats,S?.files),stats:S?.stats[e.id],current:o.src===e.id,onPick:()=>c({src:e.id,tagsOff:[]})},e.id)),S&&(0,Q.jsx)(`div`,{className:`lg-side-file`,children:(0,Q.jsx)(wn,{src:o.src,files:S.files})})]}),(0,Q.jsxs)(`section`,{className:`lg-view`,"aria-label":Ke(o.src),children:[(0,Q.jsxs)(`div`,{className:`lg-tools`,children:[(0,Q.jsxs)(`div`,{className:`lg-search`,children:[(0,Q.jsx)(R,{}),(0,Q.jsx)(`input`,{type:`search`,value:o.q,onChange:e=>c({q:e.target.value}),placeholder:o.src===`all`?`Search all logs`:`Search ${Ke(o.src)}`,"aria-label":`Search logs`,"aria-invalid":!!o.q&&Le,title:o.q&&Le?`This regular expression does not compile`:void 0}),(0,Q.jsxs)(`span`,{className:`lg-inl`,children:[(0,Q.jsx)(`button`,{type:`button`,title:`Match case`,"aria-pressed":o.caseSensitive,onClick:()=>c({caseSensitive:!o.caseSensitive}),children:(0,Q.jsx)(Ge,{})}),(0,Q.jsx)(`button`,{type:`button`,title:`Regular expression`,"aria-pressed":o.regex,onClick:()=>c({regex:!o.regex}),children:(0,Q.jsx)(ke,{})})]})]}),(0,Q.jsx)(`span`,{className:`lg-sep`}),(0,Q.jsx)(En,{lv:`error`,cls:`e`,label:`Errors`,n:Ne.err,filter:o,setFilter:c}),(0,Q.jsx)(En,{lv:`warn`,cls:`w`,label:`Warnings`,n:Ne.warn,filter:o,setFilter:c}),(0,Q.jsx)(En,{lv:`info`,label:`Info`,filter:o,setFilter:c}),(0,Q.jsx)(En,{lv:`debug`,label:`Debug`,filter:o,setFilter:c}),(0,Q.jsx)(`span`,{className:`lg-sep lg-hide-narrow`}),(0,Q.jsxs)(de,{children:[(0,Q.jsx)(le,{asChild:!0,children:(0,Q.jsxs)(`button`,{type:`button`,className:H(`lg-ghost`,o.chat&&`on`),title:o.chat?`Only lines naming ${Ve}`:`Lines from every chat`,children:[(0,Q.jsx)(a,{}),(0,Q.jsx)(`span`,{className:`max-w-[140px] truncate`,children:Ve}),(0,Q.jsx)(h,{className:`chev`})]})}),(0,Q.jsx)(kn,{filter:o,setFilter:c,chats:S?.chats??[],titles:oe})]}),(0,Q.jsxs)(de,{children:[(0,Q.jsx)(le,{asChild:!0,children:(0,Q.jsxs)(`button`,{type:`button`,className:`lg-ghost`,children:[(0,Q.jsx)(I,{}),Be[l],(0,Q.jsx)(h,{className:`chev`})]})}),(0,Q.jsx)(ue,{align:`start`,className:`min-w-52`,children:Se.map(e=>(0,Q.jsxs)(q,{onSelect:()=>u(e),children:[(0,Q.jsx)(`span`,{children:Be[e]}),l===e?(0,Q.jsx)(i,{className:`ml-auto`}):e===`restart`&&qe?(0,Q.jsx)(`span`,{className:`lg-mi-sub`,children:Oe(qe,y).slice(0,5)}):e===`all`&&S?(0,Q.jsx)(`span`,{className:`lg-mi-sub`,children:Y(1+S.files.rotatedFiles,`file`)}):null]},e))})]}),(0,Q.jsx)(`span`,{className:`lg-fill`}),(t.loading||t.loadingEarlier)&&(0,Q.jsx)(`span`,{className:`lg-busy`,"aria-label":`Reading the logs`,children:(0,Q.jsx)(ae,{className:`animate-spin`})}),(0,Q.jsx)(`button`,{type:`button`,className:`lg-ibtn`,title:`Wrap long lines`,"aria-pressed":b,onClick:()=>C(!b),children:(0,Q.jsx)(P,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`lg-ibtn`,title:`Follow new lines`,"aria-pressed":p,onClick:()=>m(!p),children:(0,Q.jsx)(ee,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`lg-ibtn`,title:_?`Resume live lines`:`Pause live lines`,"aria-pressed":_,onClick:()=>v(!_),children:_?(0,Q.jsx)(ne,{}):(0,Q.jsx)(x,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`lg-ibtn lg-hide-narrow`,title:`Download these lines`,onClick:()=>mn(n),disabled:!n.length,children:(0,Q.jsx)(w,{})}),(0,Q.jsxs)(de,{children:[(0,Q.jsx)(le,{asChild:!0,children:(0,Q.jsx)(`button`,{type:`button`,className:`lg-ibtn`,title:`More`,"aria-label":`More`,children:(0,Q.jsx)(g,{})})}),(0,Q.jsxs)(ue,{align:`end`,className:`min-w-52`,children:[(0,Q.jsxs)(q,{disabled:!n.length,onSelect:()=>void ln(n),children:[(0,Q.jsx)(re,{}),`Copy visible lines`,(0,Q.jsx)(`span`,{className:`lg-mi-sub`,children:sn(n).toLocaleString(`en-US`)})]}),(0,Q.jsxs)(q,{disabled:!n.length,onSelect:()=>mn(n),children:[(0,Q.jsx)(w,{}),`Download as .log`]}),(0,Q.jsxs)(q,{onSelect:()=>t.reload(),children:[(0,Q.jsx)(te,{}),`Read again`]}),(0,Q.jsx)(ce,{}),(0,Q.jsxs)(q,{onSelect:e.togglePrefs,children:[(0,Q.jsx)(s,{}),`Preferences`]})]})]})]}),He.length>0&&(0,Q.jsxs)(`div`,{className:`lg-tagbar`,children:[(0,Q.jsx)(`span`,{className:`lg-tagbar-lbl`,children:`Tags`}),He.map(([e,t])=>{let n=`${o.src}:${e}`;return(0,Q.jsxs)(`button`,{type:`button`,className:`lg-tag`,"aria-pressed":!Ue.has(n),onClick:()=>c({tagsOff:Ue.has(n)?o.tagsOff.filter(e=>e!==n):[...o.tagsOff,n]}),children:[e,(0,Q.jsx)(`span`,{className:`n`,children:Re(t)})]},e)})]}),(0,Q.jsx)(`div`,{ref:E,className:H(`lg-list`,b&&`wrap`),tabIndex:0,role:`listbox`,"aria-multiselectable":`true`,"aria-label":`Log lines`,"aria-busy":t.loading,onScroll:be,onMouseDown:Ce,onMouseOver:we,onKeyDown:De,"data-testid":`logs-list`,children:n.length>0?(0,Q.jsxs)(`div`,{ref:D,className:`lg-rows`,style:{height:pe,padding:0},children:[(0,Q.jsx)(`div`,{style:{transform:`translateY(${Pe?.start??0}px)`},children:fe.map(e=>{let t=U[e.index];return t.kind===`div`?(0,Q.jsxs)(`div`,{ref:J.measureElement,"data-index":e.index,className:`lg-div`,children:[(0,Q.jsx)(te,{}),`PPM restarted at `,Oe(t.at,y).slice(0,8)]},t.key):(0,Q.jsx)(Tn,{row:t.row,index:e.index,selected:d.keys.has(t.key),cursor:d.cursor===t.key,flash:L.has(t.key),open:A.has(t.key),utc:y,re:B,titles:oe,onChat:Ee,onToggleMore:Te,measure:J.measureElement},t.key)})}),Ie&&(0,Q.jsxs)(`div`,{ref:O,className:`lg-selbar absolute left-0 top-0 z-10 flex max-w-full flex-wrap gap-1 rounded-md border border-border bg-surface p-0.5 shadow-md`,role:`group`,"aria-label":`Selected lines`,"data-testid":`logs-selbar`,children:[(0,Q.jsx)(`span`,{className:`lg-selcount`,children:Y(sn(K),`line`)}),(0,Q.jsxs)(`button`,{type:`button`,className:vn,onClick:()=>{dn(K,!1),Ae()},children:[(0,Q.jsx)(a,{}),`Add to current chat`]}),(0,Q.jsxs)(`button`,{type:`button`,className:vn,onClick:()=>{dn(K,!0),Ae()},children:[(0,Q.jsx)(T,{}),`Add to new chat`]}),(0,Q.jsxs)(`button`,{type:`button`,className:vn,onClick:()=>{fn(K,()=>e.goTo(`report`)),Ae()},children:[(0,Q.jsx)(r,{}),`Add to report`]}),(0,Q.jsxs)(`button`,{type:`button`,className:vn,onClick:()=>void ln(K),children:[(0,Q.jsx)(re,{}),`Copy`]})]})]}):(0,Q.jsx)(An,{...e})}),me>0&&!p&&(0,Q.jsxs)(`button`,{type:`button`,className:`lg-newpill`,onClick:()=>m(!0),children:[(0,Q.jsx)(j,{}),Y(me,`new line`)]}),(0,Q.jsxs)(`div`,{className:`lg-foot`,children:[(0,Q.jsx)(`span`,{className:`src`,children:Cn(o.src,S?.files)}),S&&(0,Q.jsx)(`span`,{children:S.hasMore?`${sn(n).toLocaleString(`en-US`)} of ${Y(S.matched,`line`)}`:Y(S.matched,`line`)}),(0,Q.jsx)(`button`,{type:`button`,disabled:!S?.hasMore||t.loadingEarlier||t.loading,onClick:()=>void ve(),children:t.loadingEarlier?`Loading…`:`Load earlier`}),(0,Q.jsx)(`span`,{className:`sp`}),(0,Q.jsx)(`span`,{className:`tz`,children:y?`UTC`:`Local time (${Me()})`})]})]})]})}function On({id:e,label:t,sub:n,stats:r,current:i,onPick:a}){let o=qt[e],s=r?.err??0,c=r?.warn??0;return(0,Q.jsxs)(`button`,{type:`button`,"aria-current":i,title:t,onClick:a,className:H(`lg-src flex min-h-11 w-full items-center gap-3 px-3 py-2 text-left transition-colors`,s?`has-e`:c?`has-w`:``,i?`bg-primary/10 text-text-primary`:`hover:bg-surface-hover`),children:[(0,Q.jsx)(o,{className:`lg-src-ic size-4 shrink-0`}),(0,Q.jsxs)(`span`,{className:`lg-src-txt`,children:[(0,Q.jsx)(`b`,{children:t}),(0,Q.jsx)(`small`,{children:n})]}),(0,Q.jsxs)(`span`,{className:`lg-cnts`,children:[(s>0||c>0)&&(0,Q.jsxs)(`span`,{className:`flex gap-1`,children:[s>0&&(0,Q.jsx)(`span`,{className:`lg-pill e`,title:Y(s,`error`),children:Re(s)}),c>0&&(0,Q.jsx)(`span`,{className:`lg-pill w`,title:Y(c,`warning`),children:Re(c)})]}),(0,Q.jsx)(`span`,{className:`lg-total`,title:`Lines in this range`,children:Re(r?.total??0)})]})]})}function kn({filter:e,setFilter:t,chats:n,titles:r}){let o=oe(un());return(0,Q.jsxs)(ue,{align:`start`,className:`max-h-80 min-w-60 max-w-80`,children:[(0,Q.jsx)(K,{className:`text-xs font-normal text-text-subtle`,children:`Show lines from`}),(0,Q.jsxs)(q,{onSelect:()=>t({chat:null}),children:[(0,Q.jsx)(b,{}),`All chats`,!e.chat&&(0,Q.jsx)(i,{className:`ml-auto`})]}),(0,Q.jsx)(ce,{}),n.length===0&&(0,Q.jsx)(K,{className:`text-xs font-normal text-text-subtle`,children:`No chat named in this range`}),n.slice(0,40).map(n=>(0,Q.jsxs)(q,{onSelect:()=>t({chat:n.sid}),children:[(0,Q.jsx)(a,{}),(0,Q.jsx)(`span`,{className:`min-w-0 truncate`,children:n.title??r[n.sid]??n.sid.slice(0,8)}),e.chat===n.sid?(0,Q.jsx)(i,{className:`ml-auto`}):(0,Q.jsx)(`span`,{className:`lg-mi-sub`,children:n.sid===o?`this tab`:n.sid.slice(0,8)})]},n.sid))]})}function An(e){let{feed:t,filter:n,range:r}=e;return t.error&&!t.loading?(0,Q.jsxs)(`div`,{className:`lg-empty`,children:[`Could not read the logs: `,t.error,`. `,(0,Q.jsx)(`button`,{type:`button`,onClick:()=>t.reload(),children:`Try again`})]}):t.loading||!t.meta?(0,Q.jsx)(`div`,{className:`lg-empty`,children:`Reading the logs…`}):on(n,r)?(0,Q.jsxs)(`div`,{className:`lg-empty`,children:[`No lines match these filters. `,(0,Q.jsx)(`button`,{type:`button`,onClick:e.clearFilters,children:`Clear filters`})]}):(0,Q.jsxs)(`div`,{className:`lg-empty`,children:[`Nothing in `,Be[r].toLowerCase(),`. `,(0,Q.jsx)(`button`,{type:`button`,onClick:()=>e.setRange(`all`),children:`Show everything kept`})]})}var jn=450,Mn=8,Nn=[[`error`,`e`,`Errors`],[`warn`,`w`,`Warnings`],[`info`,``,`Info`],[`debug`,``,`Debug`]];function Pn(e){let{feed:t,rows:n,filter:i,setFilter:o,range:s,setRange:c,sel:l,setSel:u,follow:d,setFollow:f,utc:p}=e,m=t.meta,h=(0,Z.useRef)(null),g=(0,Z.useRef)(null),[_,v]=(0,Z.useState)(!1),[ee,y]=(0,Z.useState)(()=>new Set),[b,x]=(0,Z.useState)(null),S=V(e=>e.setLogsUtc),C=(0,Z.useMemo)(()=>je(i),[i]),te=(0,Z.useMemo)(()=>xe(C),[C]),w=(0,Z.useMemo)(()=>m?.titles??{},[m?.titles]),E=(0,Z.useMemo)(()=>n.map(e=>e.key),[n]),k=(0,Z.useMemo)(()=>an(n,l),[n,l]),A=_||l.keys.size>0,M=We({count:n.length,getScrollElement:()=>h.current,estimateSize:()=>64,getItemKey:e=>n[e]?.key??e,overscan:10}),ne=M.getTotalSize(),{newCount:N,onScroll:P}=_n(h,{follow:d,setFollow:f,feed:t,size:ne+n.length,virtualizer:M,keep:e.listTop}),F=(0,Z.useCallback)(()=>{v(!1),u($)},[u]),I=e=>{if(A){l.anchor===e&&l.keys.size===1?u({keys:new Set,anchor:null,cursor:null}):l.anchor?u(nn(l,E,e)):u(tn(e));return}y(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},L=()=>{g.current&&clearTimeout(g.current.timer),g.current=null},ie=e=>{if(e.pointerType===`mouse`&&e.button!==0)return;let t=e.target,n=t.closest(`.lg-prow`)?.dataset.key;if(!n||t.closest(`button, a`))return;L();let r=setTimeout(()=>{g.current&&(g.current.fired=!0,v(!0),u(tn(n)),navigator.vibrate?.(10))},jn);g.current={key:n,x:e.clientX,y:e.clientY,timer:r,fired:!1}},ae=e=>{let t=g.current;t&&Math.hypot(e.clientX-t.x,e.clientY-t.y)>Mn&&L()},z=()=>{let e=g.current;e&&(clearTimeout(e.timer),g.current=null,e.fired||I(e.key))},B=sn(k),oe=k[0],se=k[k.length-1],U=oe&&se?Ce(oe.entry.ts,se.lastTs,p):``,W=b===`chat`?un():void 0,K=m?Object.values(m.stats):[],q=e=>{dn(k,e),x(null),F()};return(0,Q.jsxs)(`div`,{className:`lg-view`,children:[(0,Q.jsxs)(`div`,{className:`lg-pchips`,"aria-label":`Sources`,children:[(0,Q.jsx)(Fn,{id:`all`,label:`All`,err:K.reduce((e,t)=>e+t.err,0),warn:K.reduce((e,t)=>e+t.warn,0),current:i.src===`all`,onPick:()=>o({src:`all`,tagsOff:[]})}),ze.map(e=>(0,Q.jsx)(Fn,{id:e.id,label:e.label,err:m?.stats[e.id].err??0,warn:m?.stats[e.id].warn??0,current:i.src===e.id,onPick:()=>o({src:e.id,tagsOff:[]})},e.id))]}),(0,Q.jsxs)(`div`,{className:`lg-psearch`,children:[(0,Q.jsxs)(`div`,{className:`lg-search`,children:[(0,Q.jsx)(R,{}),(0,Q.jsx)(`input`,{type:`search`,value:i.q,onChange:e=>o({q:e.target.value}),placeholder:`Search logs`,"aria-label":`Search logs`,"aria-invalid":!!i.q&&(C===void 0||!!m?.badRegex),enterKeyHint:`search`})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`lg-pfilter`,"aria-label":`Filters`,onClick:()=>x(`filter`),children:[(0,Q.jsx)(D,{}),on(i,s)&&(0,Q.jsx)(`span`,{className:`dotn`})]})]}),!A&&n.length>0&&(0,Q.jsx)(`div`,{className:`lg-phint`,children:`Long-press a line to select it, then tap the last line you need.`}),(0,Q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 flex-col`,children:[(0,Q.jsx)(`div`,{ref:h,className:`lg-plist`,onScroll:P,onPointerDown:ie,onPointerMove:ae,onPointerUp:z,onPointerCancel:L,onPointerLeave:L,onContextMenu:e=>{e.target.closest(`.lg-prow`)&&e.preventDefault()},"data-testid":`logs-plist`,children:n.length>0?(0,Q.jsx)(`div`,{style:{height:ne,position:`relative`},children:(0,Q.jsx)(`div`,{style:{transform:`translateY(${M.getVirtualItems()[0]?.start??0}px)`},children:M.getVirtualItems().map(e=>{let t=n[e.index];return(0,Q.jsx)(In,{row:t,index:e.index,selecting:A,selected:l.keys.has(t.key),open:ee.has(t.key),utc:p,re:te,titles:w,onChat:e=>o({chat:e}),measure:M.measureElement},t.key)})})}):(0,Q.jsx)(An,{...e})}),N>0&&!d&&(0,Q.jsxs)(`button`,{type:`button`,className:`lg-newpill`,style:{bottom:12},onClick:()=>f(!0),children:[(0,Q.jsx)(j,{}),Y(N,`new line`)]})]}),A&&(0,Q.jsxs)(`div`,{className:`lg-pbar`,"data-testid":`logs-pbar`,children:[(0,Q.jsx)(G,{variant:`ghost`,size:`icon`,className:`size-11`,"aria-label":`Stop selecting`,onClick:F,children:(0,Q.jsx)(O,{className:`size-5`})}),(0,Q.jsxs)(`span`,{className:`cnt`,children:[B?`${Y(B,`line`)} selected`:`Nothing selected`,(0,Q.jsx)(`small`,{children:B?U:`Tap lines to select them`})]}),(0,Q.jsxs)(G,{variant:`outline`,className:`min-h-11 px-3`,disabled:!B,onClick:()=>x(`chat`),children:[(0,Q.jsx)(a,{className:`size-4`}),`Ask AI`]}),(0,Q.jsxs)(G,{className:`min-h-11 px-3`,disabled:!B,onClick:()=>{fn(k,()=>e.goTo(`report`)),F()},children:[(0,Q.jsx)(r,{className:`size-4`}),`Report`]})]}),(0,Q.jsxs)(J,{open:b===`chat`,onClose:()=>x(null),children:[(0,Q.jsxs)(`div`,{className:`lg-sheet-title`,children:[`Ask AI about `,Y(B,`line`),(0,Q.jsx)(`small`,{children:U})]}),(0,Q.jsxs)(`div`,{className:`lg-sheet-list`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`lg-sheet-row`,onClick:()=>q(!1),children:[(0,Q.jsx)(a,{}),(0,Q.jsxs)(`span`,{children:[`Add to current chat`,(0,Q.jsx)(`small`,{children:W?W.title:`Opens a new chat`})]})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`lg-sheet-row`,onClick:()=>q(!0),children:[(0,Q.jsx)(T,{}),(0,Q.jsxs)(`span`,{children:[`Add to new chat`,(0,Q.jsx)(`small`,{children:`Starts a chat with these lines attached`})]})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`lg-sheet-row`,onClick:()=>{ln(k),x(null)},children:[(0,Q.jsx)(re,{}),(0,Q.jsx)(`span`,{children:`Copy lines`})]})]})]}),(0,Q.jsxs)(J,{open:b===`filter`,onClose:()=>x(null),className:`flex max-h-[calc(var(--sheet-vh,100dvh)*0.85)] flex-col`,children:[(0,Q.jsx)(`div`,{className:`lg-sheet-title`,children:`Filters`}),(0,Q.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[(0,Q.jsx)(en,{title:`Levels`,children:Nn.map(([e,t,n])=>(0,Q.jsxs)(`button`,{type:`button`,className:H(`lg-chip`,t),"aria-pressed":i.levels[e],onClick:()=>o({levels:{...i.levels,[e]:!i.levels[e]}}),children:[(0,Q.jsx)(`span`,{className:`dot`}),n]},e))}),(0,Q.jsxs)(en,{title:`Chat`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":!i.chat,onClick:()=>o({chat:null}),children:`All chats`}),i.chat&&!m?.chats.slice(0,4).some(e=>e.sid===i.chat)&&(0,Q.jsx)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":!0,children:(0,Q.jsx)(`span`,{className:`t`,children:w[i.chat]??i.chat.slice(0,8)})}),(m?.chats??[]).slice(0,4).map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":i.chat===e.sid,onClick:()=>o({chat:e.sid}),children:(0,Q.jsx)(`span`,{className:`t`,children:e.title??w[e.sid]??e.sid.slice(0,8)})},e.sid))]}),(0,Q.jsx)(en,{title:`Time`,children:Se.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":s===e,onClick:()=>c(e),children:Be[e]},e))}),(0,Q.jsx)(`div`,{className:`lg-sheet-list`,children:(0,Q.jsxs)(`label`,{className:`lg-sheet-row`,children:[(0,Q.jsx)(Ae,{checked:p,onCheckedChange:S}),(0,Q.jsx)(`span`,{children:`Show times in UTC`})]})})]}),(0,Q.jsxs)(`div`,{className:`lg-sheet-foot`,children:[(0,Q.jsx)(G,{variant:`outline`,className:`min-h-11 flex-1`,onClick:e.clearFilters,children:`Reset`}),(0,Q.jsx)(G,{className:`min-h-11 flex-1`,onClick:()=>x(null),children:t.loading?`Reading…`:`Show ${Y(m?.matched??0,`line`)}`})]})]})]})}function Fn({id:e,label:t,err:n,warn:r,current:i,onPick:a}){let o=qt[e];return(0,Q.jsxs)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":i,onClick:a,children:[(0,Q.jsx)(o,{}),t,n>0?(0,Q.jsx)(`span`,{className:`lg-pill e`,children:n}):r>0?(0,Q.jsx)(`span`,{className:`lg-pill w`,children:r}):null]})}function In({row:e,index:t,selecting:n,selected:r,open:a,utc:o,re:s,titles:c,onChat:l,measure:u}){let d=e.entry,f=d.more?.length??0;return(0,Q.jsxs)(`div`,{ref:u,"data-index":t,"data-key":e.key,"aria-selected":n?r:void 0,className:H(`lg-prow`,pe(d.lv)===`error`&&`err`,r&&`sel`,a&&`open`),children:[(0,Q.jsx)(`div`,{className:`lg-prow-g`,children:n?(0,Q.jsx)(`span`,{className:`lg-pcheck`,children:r&&(0,Q.jsx)(i,{})}):(0,Q.jsx)(`span`,{className:`lv ${d.lv}`})}),(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsxs)(`div`,{className:`lg-prow-meta`,children:[(0,Q.jsx)(`span`,{children:Oe(d.ts,o)}),(0,Q.jsx)(`span`,{className:`lv ${d.lv}`,children:Jt[d.lv]}),(0,Q.jsx)(`span`,{className:`tg`,children:d.tag}),e.count>1&&(0,Q.jsxs)(`span`,{children:[`×`,e.count]}),f>0&&(0,Q.jsxs)(`span`,{children:[`+`,Y(f,`line`)]})]}),(0,Q.jsxs)(`div`,{className:`lg-prow-msg`,children:[(0,Q.jsx)(Xt,{msg:d.msg,re:s,titles:c,onChat:l}),a&&f>0&&(0,Q.jsxs)(Q.Fragment,{children:[`
|
|
6
|
+
`,(0,Q.jsx)(Yt,{text:d.more.join(`
|
|
7
|
+
`),re:s})]})]})]})]})}var Ln={bug:{label:`Likely PPM bug`,icon:c,chip:`e`},setup:{label:`Your setup`,icon:s,chip:`w`},upstream:{label:`Upstream`,icon:C},expected:{label:`Expected`,icon:i}},Rn=3;function zn(e){let t=[e.errors>0&&Y(e.errors,`error`),e.warnings>0&&Y(e.warnings,`warning`)].filter(Boolean);return t.length?t.join(` · `):Y(e.count,`time`)}function Bn({utc:e,phone:t,issues:n,goTo:r,showInLogs:i}){let{data:a,error:s}=n,[c,l]=(0,Z.useState)(`all`);if(!a)return(0,Q.jsx)(`div`,{className:`lg-pane`,children:(0,Q.jsx)(`div`,{className:`lg-pane-in`,children:(0,Q.jsx)(`div`,{className:`lg-empty`,children:s?(0,Q.jsxs)(Q.Fragment,{children:[`Could not read what AI found: `,s]}):`Reading what AI found…`})})});let u=a.issues.filter(e=>!e.dismissed),d=e=>u.filter(t=>t.cls===e).length,f=d(`bug`),p=d(`setup`)+d(`upstream`),m=d(`expected`),h=a.issues.length-u.length,g=u.filter(e=>c===`all`||e.cls===c).sort((e,t)=>tt.indexOf(e.cls)-tt.indexOf(t.cls)||t.last-e.last),_=Math.max(1,Math.round((Date.now()-a.windowFrom)/36e5)),v=a.analyzedAt===null,ee=v?`Not sorted yet`:[f&&Y(f,`likely bug`),p&&`${p} to check`,m&&`${m} expected`].filter(Boolean).join(`, `)||`Nothing left to look at`,y=e=>{fn(ve(e.lines),void 0,!0),r(`report`),Kt.getState().draft()},b=e=>{n.setDismissed(e.id,!0),z(e.cls===`expected`?`Hidden. The lines stay in Logs.`:`Dismissed`,{action:{label:`Undo`,onClick:()=>void n.setDismissed(e.id,!1)}})};return(0,Q.jsx)(`div`,{className:`lg-pane`,"data-testid":`logs-issues`,children:(0,Q.jsxs)(`div`,{className:`lg-pane-in`,children:[(0,Q.jsxs)(`div`,{className:`lg-ai-head`,children:[(0,Q.jsx)(`span`,{className:`lg-ai-ic`,children:(0,Q.jsx)(E,{})}),(0,Q.jsxs)(`div`,{className:`lg-ai-txt`,children:[a.running?(0,Q.jsxs)(`h3`,{className:`lg-analyzing`,children:[(0,Q.jsx)(ae,{className:`animate-spin`}),a.unsorted?`Reading ${Y(a.unsorted,`error and warning`,`errors and warnings`)}…`:`Reading the errors and warnings…`]}):(0,Q.jsx)(`h3`,{children:ee}),(0,Q.jsxs)(`p`,{children:[v?`Claude can group`:`Claude grouped`,` the last `,Y(_,`hour`),` of errors and warnings by cause. Info lines are not sent.`]}),a.error&&!a.running&&(0,Q.jsxs)(`p`,{className:`err`,children:[`The last run failed: `,a.error]}),(0,Q.jsxs)(`div`,{className:`lg-ai-meta`,children:[(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(E,{}),a.model]}),a.analyzedAt&&(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(I,{}),`Updated `,Oe(a.analyzedAt,e).slice(0,5)]}),a.lastRun&&(0,Q.jsxs)(`span`,{children:[Y(a.lastRun.lines,`line`),` → `,Y(a.lastRun.patterns,`pattern`),` · `,Re(a.lastRun.tokens),` tokens`]}),!v&&a.unsorted>0&&!a.running&&(0,Q.jsxs)(`span`,{children:[Y(a.unsorted,`new line`),` not sorted yet`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(o,{}),`Secrets removed first`]})]})]}),(0,Q.jsxs)(`div`,{className:`lg-ai-act`,children:[(0,Q.jsxs)(G,{variant:`outline`,size:`sm`,disabled:a.running,onClick:()=>void n.analyze(!v),className:t?`min-h-11`:void 0,children:[(0,Q.jsx)(te,{}),v?`Analyze`:`Re-analyze`]}),(0,Q.jsxs)(`label`,{className:`lg-autoline`,children:[(0,Q.jsx)(Ae,{checked:a.auto,onCheckedChange:e=>void n.setAuto(e)}),`Auto`]})]})]}),(0,Q.jsxs)(`div`,{className:`lg-filters`,children:[(0,Q.jsx)(Vn,{id:`all`,label:`All`,n:u.length,cur:c,set:l}),tt.map(e=>(0,Q.jsx)(Vn,{id:e,label:Ln[e].label,chip:Ln[e].chip,n:d(e),cur:c,set:l},e))]}),g.map(t=>(0,Q.jsx)(Hn,{it:t,utc:e,onDraft:()=>y(t),onChat:()=>dn(ve(t.lines),!1),onShow:()=>i(t.lines),onDismiss:()=>b(t)},t.id)),!g.length&&(0,Q.jsx)(`div`,{className:`lg-empty`,children:v?`Press Analyze to sort the errors and warnings.`:u.length?`Nothing in this group.`:`No errors or warnings worth a look in the last ${Y(_,`hour`)}.`}),(0,Q.jsxs)(`div`,{className:`lg-muted`,children:[(0,Q.jsx)(M,{}),(0,Q.jsx)(`span`,{children:`Nothing goes to GitHub from here: a report opens for you to read first.`}),h>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`span`,{children:[Y(h,`issue`),` hidden`]}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>void n.undismissAll(),children:`Show again`})]})]})]})})}function Vn({id:e,label:t,chip:n,n:r,cur:i,set:a}){return(0,Q.jsxs)(`button`,{type:`button`,className:H(`lg-chip`,n),"aria-pressed":i===e,onClick:()=>a(e),children:[t,` `,(0,Q.jsx)(`span`,{className:`n`,children:r})]})}function Hn({it:e,utc:t,onDraft:n,onChat:r,onShow:i,onDismiss:o}){let s=Ln[e.cls],c=s.icon,l=qt[e.src],u=ve(e.lines);return(0,Q.jsxs)(`article`,{className:H(`lg-issue`,e.cls===`bug`&&`bug`),"data-testid":`logs-issue`,children:[(0,Q.jsxs)(`div`,{className:`lg-issue-top`,children:[(0,Q.jsxs)(`span`,{className:`lg-cls ${e.cls}`,children:[(0,Q.jsx)(c,{}),s.label]}),(0,Q.jsxs)(`span`,{className:`lg-area`,children:[(0,Q.jsx)(l,{}),e.area]}),(0,Q.jsxs)(`span`,{className:`lg-occ`,children:[zn(e),` · last `,Oe(e.last,t).slice(0,5)]})]}),(0,Q.jsx)(`h4`,{children:e.title}),(0,Q.jsx)(`p`,{className:`lg-why`,children:e.why}),e.fix&&(0,Q.jsxs)(`div`,{className:`lg-fix`,children:[(0,Q.jsx)(M,{}),(0,Q.jsx)(`span`,{children:e.fix})]}),u.length>0&&(0,Q.jsxs)(`div`,{className:`lg-evid`,children:[u.slice(0,Rn).map(e=>(0,Q.jsx)(Qt,{row:e,utc:t,trim:!0},e.key)),u.length>Rn&&(0,Q.jsx)(`div`,{className:`r`,children:(0,Q.jsxs)(`span`,{className:`t`,children:[`+ `,Y(u.length-Rn,`more line`)]})})]}),(0,Q.jsxs)(`div`,{className:`lg-issue-act`,children:[e.cls===`bug`&&(0,Q.jsxs)(G,{size:`sm`,onClick:n,children:[(0,Q.jsx)(fe,{}),`Draft report`]}),(0,Q.jsxs)(G,{variant:`outline`,size:`sm`,onClick:r,children:[(0,Q.jsx)(a,{}),`Ask in chat`]}),(0,Q.jsxs)(G,{variant:`ghost`,size:`sm`,onClick:i,disabled:!e.lines.length,children:[(0,Q.jsx)(k,{}),`Show in Logs`]}),e.cls!==`bug`&&(0,Q.jsxs)(G,{variant:`ghost`,size:`sm`,onClick:n,children:[(0,Q.jsx)(fe,{}),`Report anyway`]}),(0,Q.jsxs)(G,{variant:`ghost`,size:`sm`,className:`ml-auto`,onClick:o,children:[(0,Q.jsx)(L,{}),e.cls===`expected`?`Hide`:`Dismiss`]})]})]})}var Un=[[`home`,`Home folder`,`/home/you → ~`],[`email`,`Email addresses`,`you@example.com → <email>`],[`chats`,`Chat ids`,`53952680-0b07-… → 53952680`],[`projects`,`Project names`,`my-app → <project>`]],Wn=700,Gn=null;function Kn(){return Gn??=Xe().catch(()=>(Gn=null,[])),Gn}var qn=e=>e.replace(/^Claude\s+/i,``);function Jn(e){return e.split(/(\u0001[^\u0002]*\u0002)/).map((e,t)=>e.startsWith(``)?(0,Q.jsx)(`mark`,{children:e.slice(1,-1)},t):(0,Q.jsx)(Z.Fragment,{children:e},t))}function Yn(e){return e.startsWith(`### `)?(0,Q.jsx)(`span`,{className:`h`,children:Jn(e)}):/^(<\/?(details|summary|sub)\b|`{3,}|~{3,})/.test(e)?(0,Q.jsx)(`span`,{className:`c`,children:Jn(e)}):Jn(e)}function Xn({utc:e,phone:t,issues:n,goTo:r,showInLogs:a}){let s=Kt(),{snippets:c,fields:u,status:d,stale:f,fresh:m,error:h,model:g,basis:_,view:ee,envOff:b,priv:x}=s,S=U(e=>e.projects).map(e=>e.name),[C,w]=(0,Z.useState)(null),[T,D]=(0,Z.useState)(null),[k,A]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{let e=!0;return Ht().then(t=>{e&&w(t)},()=>{e&&w([])}),Kn().then(t=>{e&&D(t)}),()=>{e=!1}},[]);let j=(0,Z.useMemo)(()=>({home:x.home,email:x.email,chats:x.chats,projects:x.projects?S:[]}),[x.home,x.email,x.chats,x.projects,S.join(`
|
|
8
|
+
`)]),ne=(0,Z.useMemo)(()=>(C??[]).filter(([e])=>!b.includes(e)),[C,b]),P=gt(u.title.trim(),j),F=(0,Z.useMemo)(()=>Et({fields:u,snippets:c,environment:ne,redact:j}),[u,c,ne,j]),I=Dt(P,u.labels,F),L=I.length>vt,ie=L?Dt(P,u.labels,null):I,R=c.reduce((e,t)=>e+xt(t),0),B=d===`drafting`,V=u.title.trim();if((0,Z.useEffect)(()=>{if(A(null),V.length<8)return;let e=!0,t=setTimeout(()=>{me(gt(V,j)).then(t=>{e&&A(t)},()=>{})},Wn);return()=>{e=!1,clearTimeout(t)}},[V,j]),!c.length&&d===`none`)return(0,Q.jsx)(`div`,{className:`lg-pane`,children:(0,Q.jsxs)(`div`,{className:`lg-rep-empty`,"data-testid":`logs-report-empty`,children:[(0,Q.jsx)(`div`,{className:`lg-ai-ic`,children:(0,Q.jsx)(fe,{})}),(0,Q.jsx)(`h3`,{children:`Nothing in the report yet`}),(0,Q.jsxs)(`p`,{children:[`Select lines in Logs and choose `,(0,Q.jsx)(`b`,{children:`Add to report`}),`. Or open Issues: AI may already have found something worth reporting.`]}),(0,Q.jsxs)(`div`,{className:`row`,children:[(0,Q.jsxs)(G,{variant:`outline`,size:`sm`,className:H(t&&`min-h-11`),onClick:()=>r(`logs`),children:[(0,Q.jsx)(v,{}),`Go to Logs`]}),(0,Q.jsxs)(G,{size:`sm`,className:H(t&&`min-h-11`),onClick:()=>r(`issues`),children:[(0,Q.jsx)(E,{}),`See what AI found`]})]})]})});let oe=()=>{L?W(F).then(e=>{e?z.success(`Body copied. Paste it into the issue that just opened.`):z.error(`Could not copy the body. Use Copy as Markdown, then paste it into the issue.`)}):z.success(`Opened the new issue on GitHub. Check it there, then press Submit.`)},se=async()=>{await W(Ot(P,F))?z.success(`Copied the issue as Markdown`):z.error(`Could not copy the issue`)},ce=e=>{let t=s.remove(e.id);t&&z(`Removed ${Y(xt(e),`line`)} from the report`,{action:{label:`Undo`,onClick:()=>Kt.getState().restore(t.snippet,t.index)}})},J=()=>void s.draft(),pe=g??n.data?.model??`Claude Haiku 4.5`,he=d===`done`?(0,Q.jsx)(E,{className:`ai`}):null,ge=Math.min(100,I.length/vt*100),X=(e,t)=>(0,Q.jsx)(G,{asChild:!0,className:t,children:(0,Q.jsxs)(`a`,{href:ie,target:`_blank`,rel:`noopener noreferrer`,onClick:oe,children:[(0,Q.jsx)(fe,{}),e]})});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`lg-pane`,"data-testid":`logs-report`,children:(0,Q.jsxs)(`div`,{className:`lg-rep`,children:[(0,Q.jsxs)(`div`,{className:`lg-rep-main`,children:[(0,Q.jsxs)(`div`,{className:`lg-rep-top`,children:[(0,Q.jsxs)(`h3`,{children:[(0,Q.jsx)(fe,{}),`New issue for `,He]}),(0,Q.jsxs)(`div`,{className:`lg-seg`,role:`tablist`,"aria-label":`Write or preview`,children:[(0,Q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":ee===`write`,onClick:()=>s.setView(`write`),children:`Write`}),(0,Q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":ee===`preview`,onClick:()=>s.setView(`preview`),children:`Preview`})]}),(0,Q.jsx)(`p`,{children:`Nothing is sent from here. GitHub opens with this filled in, and you submit it there.`})]}),ee===`preview`?(0,Q.jsxs)(`pre`,{className:`lg-md`,"data-testid":`logs-report-preview`,children:[(0,Q.jsx)(`span`,{className:`c`,children:`Title: `}),u.title.trim()?Jn(gt(u.title.trim(),j,!0)):(0,Q.jsx)(`span`,{className:`c`,children:`(no title yet)`}),`
|
|
9
|
+
`,(0,Q.jsxs)(`span`,{className:`c`,children:[`Labels: `,u.labels.join(`, `)||`none`]}),`
|
|
10
|
+
|
|
11
|
+
`,Et({fields:u,snippets:c,environment:ne,redact:j,mark:!0}).split(`
|
|
12
|
+
`).map((e,t)=>(0,Q.jsxs)(Z.Fragment,{children:[Yn(e),`
|
|
13
|
+
`]},t))]}):(0,Q.jsxs)(Q.Fragment,{children:[d===`done`?(0,Q.jsxs)(`div`,{className:`lg-aidone`,children:[(0,Q.jsx)(p,{}),(0,Q.jsx)(`span`,{children:h?(0,Q.jsxs)(`span`,{className:`text-error`,children:[`Could not write it again: `,h]}):f?`You changed the lines after Claude wrote this.`:(0,Q.jsxs)(Q.Fragment,{children:[`Drafted by `,(0,Q.jsx)(`b`,{children:pe}),` from `,Y(_,`line`),`. Read it over before sending.`]})}),(0,Q.jsxs)(G,{variant:`ghost`,size:`xs`,className:`ml-auto`,onClick:J,children:[(0,Q.jsx)(te,{}),f?`Write again`:`Redo`]})]}):(0,Q.jsxs)(`div`,{className:`lg-aibox`,children:[(0,Q.jsx)(`span`,{className:`lg-ai-ic`,children:(0,Q.jsx)(E,{})}),(0,Q.jsxs)(`div`,{className:`lg-aibox-txt`,children:[(0,Q.jsx)(`b`,{children:B?`Writing the report…`:`Let AI write it up`}),(0,Q.jsx)(`span`,{children:B?`Reading ${Y(R,`line`)} and the environment.`:`Claude reads the ${Y(R,`line`)} below and fills in the title, what happened, the steps and what you expected.`}),h&&!B&&(0,Q.jsxs)(`span`,{className:`err`,children:[`Could not write it: `,h]})]}),(0,Q.jsx)(`div`,{className:`lg-aibox-act`,children:B?(0,Q.jsxs)(`span`,{className:`lg-analyzing`,children:[(0,Q.jsx)(ae,{className:`animate-spin`}),`Drafting`]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`span`,{className:`lg-modelchip`,children:[(0,Q.jsx)(E,{}),qn(pe)]}),(0,Q.jsxs)(G,{size:`sm`,className:H(t&&`min-h-11`),disabled:!R,onClick:J,children:[(0,Q.jsx)(E,{}),`Draft with AI`]})]})})]}),(0,Q.jsxs)(`div`,{className:`lg-field`,children:[(0,Q.jsxs)(`label`,{htmlFor:`lg-rep-title`,children:[`Title`,he]}),B?(0,Q.jsx)(`div`,{className:`lg-skel`}):(0,Q.jsx)(`input`,{id:`lg-rep-title`,className:H(`lg-input`,m&&`lg-filled`),value:u.title,onChange:e=>s.setFields({title:e.target.value}),placeholder:`What went wrong, in one line`})]}),(0,Q.jsxs)(`div`,{className:`lg-field`,children:[(0,Q.jsx)(`span`,{className:`lbl`,children:`Labels`}),(0,Q.jsxs)(`div`,{className:`lg-labels`,children:[u.labels.map(e=>(0,Q.jsxs)(`span`,{className:`lg-label`,children:[e,(0,Q.jsx)(`button`,{type:`button`,className:`x`,"aria-label":`Remove ${e}`,onClick:()=>s.setFields({labels:u.labels.filter(t=>t!==e)}),children:(0,Q.jsx)(O,{})})]},e)),(0,Q.jsxs)(de,{children:[(0,Q.jsx)(le,{asChild:!0,children:(0,Q.jsxs)(`button`,{type:`button`,className:`lg-label add`,children:[(0,Q.jsx)(y,{}),`Add label`]})}),(0,Q.jsxs)(ue,{align:`start`,className:`max-h-72 min-w-48`,children:[(0,Q.jsx)(K,{className:`text-xs font-normal text-text-subtle`,children:`Add a label`}),T===null&&(0,Q.jsx)(K,{className:`text-xs font-normal`,children:`Reading the labels…`}),T?.filter(e=>!u.labels.includes(e)).map(e=>(0,Q.jsx)(q,{onSelect:()=>s.setFields({labels:[...u.labels,e]}),children:e},e)),T&&!T.some(e=>!u.labels.includes(e))&&(0,Q.jsx)(K,{className:`text-xs font-normal`,children:T.length?`No more labels`:`Could not read the labels`})]})]})]})]}),(0,Q.jsx)(Zn,{id:`lg-rep-what`,label:`What happened`,mark:he,busy:B,fresh:m,rows:3,value:u.what,placeholder:`What you were doing and what went wrong`,onChange:e=>s.setFields({what:e})}),(0,Q.jsxs)(`div`,{className:`lg-grid2`,children:[(0,Q.jsx)(Zn,{id:`lg-rep-steps`,label:`Steps to reproduce`,mark:he,busy:B,fresh:m,rows:4,value:u.steps,placeholder:`1. …`,onChange:e=>s.setFields({steps:e})}),(0,Q.jsx)(Zn,{id:`lg-rep-expected`,label:`Expected`,mark:he,busy:B,fresh:m,rows:4,value:u.expected,placeholder:`What should have happened`,onChange:e=>s.setFields({expected:e})})]}),(0,Q.jsxs)(`div`,{className:`lg-field`,children:[(0,Q.jsxs)(`span`,{className:`lbl`,children:[`Log lines `,(0,Q.jsxs)(`span`,{className:`font-normal text-text-subtle`,children:[Y(R,`line`),` from `,Y(c.length,`place`)]})]}),(0,Q.jsx)(`div`,{className:`lg-snips`,children:c.map(t=>(0,Q.jsx)(Qn,{s:t,utc:e,onContext:e=>void s.setContext(t.id,e),onShow:()=>a(t.rows.map(e=>e.entry)),onRemove:()=>ce(t)},t.id))}),(0,Q.jsxs)(`button`,{type:`button`,className:`lg-addmore`,onClick:()=>{r(`logs`),z(`Select lines, then choose Add to report`)},children:[(0,Q.jsx)(y,{}),`Add lines from Logs`]})]})]})]}),(0,Q.jsxs)(`aside`,{className:`lg-rep-side`,children:[(0,Q.jsx)(`div`,{className:`lg-card`,children:(0,Q.jsxs)(`div`,{className:`lg-send`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`lg-meter-l`,children:[(0,Q.jsx)(`span`,{children:L?`Too long for a link`:`Fits in a GitHub link`}),(0,Q.jsxs)(`span`,{children:[(I.length/1024).toFixed(1),` / `,vt/1024,` KB`]})]}),(0,Q.jsx)(`div`,{className:H(`lg-meter`,ge>85&&`warn`),children:(0,Q.jsx)(`i`,{style:{width:`${ge.toFixed(1)}%`}})})]}),!t&&(0,Q.jsxs)(Q.Fragment,{children:[X(L?`Copy body and open GitHub`:`Open GitHub issue`,`w-full`),(0,Q.jsxs)(G,{variant:`outline`,size:`sm`,className:`w-full`,onClick:()=>void se(),children:[(0,Q.jsx)(re,{}),`Copy as Markdown`]})]}),(0,Q.jsx)(`div`,{className:`lg-send-note`,children:L?`The body is copied for you to paste. The title and labels still go in the link.`:`Opens github.com/${He}/issues/new in your browser, signed in as you. Labels stick only if you can triage that repository.`}),k&&(0,Q.jsxs)(`div`,{className:H(`lg-dupe`,k.issues.length>0&&`found`),children:[k.issues.length?(0,Q.jsx)(N,{}):(0,Q.jsx)(p,{}),(0,Q.jsx)(`span`,{children:k.issues.length?(0,Q.jsxs)(Q.Fragment,{children:[`Open issues that look like this one:`,(0,Q.jsx)(`ul`,{children:k.issues.slice(0,3).map(e=>(0,Q.jsx)(`li`,{children:(0,Q.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,children:[`#`,e.number,` `,e.title]})},e.number))})]}):(0,Q.jsxs)(Q.Fragment,{children:[`No open issue looks like this one. Searched `,`hienlh/ppm`,` for “`,k.query,`”.`]})})]})]})}),(0,Q.jsxs)(`div`,{className:`lg-card`,children:[(0,Q.jsxs)(`div`,{className:`lg-card-h`,children:[(0,Q.jsx)(l,{}),`Removed before sending`,(0,Q.jsx)(`span`,{className:`sub`,children:`see Preview`})]}),(0,Q.jsxs)(`div`,{className:`lg-priv`,children:[(0,Q.jsxs)(`div`,{className:`lg-priv-row`,children:[(0,Q.jsxs)(`span`,{className:`t`,children:[(0,Q.jsx)(`b`,{children:`Secrets and tokens`}),(0,Q.jsx)(`small`,{children:`API keys, OAuth tokens, tunnel addresses`})]}),(0,Q.jsx)(`span`,{className:`inline-flex`,title:`Always removed`,children:(0,Q.jsx)(o,{className:`lock`})})]}),Un.map(([e,t,n])=>(0,Q.jsxs)(`label`,{className:`lg-priv-row`,children:[(0,Q.jsxs)(`span`,{className:`t`,children:[(0,Q.jsx)(`b`,{children:t}),(0,Q.jsx)(`small`,{children:n})]}),(0,Q.jsx)(Ae,{checked:x[e],onCheckedChange:()=>s.togglePriv(e)})]},e))]})]}),(0,Q.jsxs)(`div`,{className:`lg-card`,children:[(0,Q.jsxs)(`div`,{className:`lg-card-h`,children:[(0,Q.jsx)(M,{}),`Environment`,(0,Q.jsx)(`span`,{className:`sub`,children:`untick to leave out`})]}),(0,Q.jsxs)(`div`,{className:`lg-card-b lg-env`,children:[C===null&&(0,Q.jsx)(`span`,{className:`text-xs text-text-subtle`,children:`Reading…`}),C?.map(([e,t])=>{let n=!b.includes(e);return(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`input`,{type:`checkbox`,className:`sr-only`,checked:n,onChange:()=>s.toggleEnv(e)}),(0,Q.jsx)(`span`,{className:`lg-check`,"aria-hidden":`true`,"data-on":n,children:n&&(0,Q.jsx)(i,{})}),(0,Q.jsx)(`b`,{children:e}),(0,Q.jsx)(`span`,{className:`v`,children:t})]},e)})]})]})]})]})}),t&&(0,Q.jsxs)(`div`,{className:`lg-pfoot`,children:[(0,Q.jsxs)(G,{variant:`outline`,className:`min-h-11 flex-1`,onClick:()=>void se(),children:[(0,Q.jsx)(re,{}),`Copy`]}),X(`Open on GitHub`,`min-h-11 flex-1`)]})]})}function Zn({id:e,label:t,mark:n,busy:r,fresh:i,rows:a,value:o,placeholder:s,onChange:c}){return(0,Q.jsxs)(`div`,{className:`lg-field`,children:[(0,Q.jsxs)(`label`,{htmlFor:e,children:[t,n]}),r?(0,Q.jsx)(`div`,{className:`lg-skel tall`}):(0,Q.jsx)(`textarea`,{id:e,className:H(`lg-textarea`,i&&`lg-filled`),rows:a,value:o,placeholder:s,onChange:e=>c(e.target.value)})]})}function Qn({s:e,utc:t,onContext:n,onShow:r,onRemove:i}){let a=qt[e.src],o=e.rows[0],s=e.rows[e.rows.length-1];return(0,Q.jsxs)(`div`,{className:`lg-snip`,children:[(0,Q.jsxs)(`div`,{className:`lg-snip-h`,children:[(0,Q.jsxs)(`span`,{className:`src`,children:[(0,Q.jsx)(a,{}),Ke(e.src)]}),(0,Q.jsxs)(`span`,{className:`rng`,children:[o&&s?Ce(o.entry.ts,s.lastTs,t):``,` · `,Y(xt(e),`line`)]}),(0,Q.jsxs)(`span`,{className:`lg-ctxsel`,children:[`Context`,yt.map(t=>(0,Q.jsx)(`button`,{type:`button`,"aria-pressed":e.ctx===t,onClick:()=>n(t),children:t?`±${t}`:`none`},t))]}),(0,Q.jsxs)(`span`,{className:`end`,children:[(0,Q.jsx)(G,{variant:`ghost`,size:`icon-xs`,title:`Show in Logs`,"aria-label":`Show in Logs`,onClick:r,children:(0,Q.jsx)(k,{})}),(0,Q.jsx)(G,{variant:`ghost`,size:`icon-xs`,title:`Take out of the report`,"aria-label":`Take out of the report`,onClick:i,children:(0,Q.jsx)(O,{})})]})]}),(0,Q.jsx)(`div`,{className:`lg-snip-b`,children:bt(e).map((e,n)=>(0,Q.jsx)(Qt,{row:e.row,utc:t,ctx:e.ctx},n))})]})}var $n={logs:`Logs`,issues:`Issues`,report:`Report`};function er({mode:e,initialView:t=`logs`,onViewChange:n}){let r=e===`phone`,[i,a]=(0,Z.useState)(t),[o,c]=(0,Z.useState)(et),[l,u]=(0,Z.useState)(`1h`),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(!0),[h,g]=(0,Z.useState)($),[_,v]=(0,Z.useState)(!1),[ee,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(null),S=(0,Z.useRef)(null),C=V(e=>e.logsUtc),te=V(e=>e.logsWrap),w=zt(o,l,d),T=(0,Z.useMemo)(()=>ve(w.entries),[w.entries]),D=Bt(),O=Kt(e=>e.snippets.reduce((e,t)=>e+xt(t),0)),k=(0,Z.useRef)(n);k.current=n;let A=(0,Z.useCallback)(e=>{a(e),k.current?.(e)},[]),j=(0,Z.useCallback)(e=>{c(t=>({...t,...e})),g($)},[]),M=(0,Z.useCallback)(e=>{u(e),g($)},[]),ne=(0,Z.useCallback)(()=>{c(e=>({...et,src:e.src})),u(`1h`),g($)},[]),N=(0,Z.useCallback)(e=>{g(e),e.keys.size&&m(!1)},[]),P=(0,Z.useCallback)(e=>{e&&((e.chat||e.src)&&(c({...et,src:e.src??`all`,chat:e.chat??null}),e.chat&&u(`all`),g($),m(!0)),e.view?A(e.view):(e.chat||e.src)&&A(`logs`))},[A]);(0,Z.useEffect)(()=>{P(qe());let e=()=>P(qe());return window.addEventListener(Ue,e),()=>window.removeEventListener(Ue,e)},[P]);let F=(0,Z.useCallback)(e=>{if(!e.length)return;let t=e.reduce((e,t)=>t.ts<e.ts?t:e),n={...et,src:St(e),levels:{...et.levels,debug:e.some(e=>e.lv===`debug`)}},r=Le(t.ts,Date.now());c(n),u(r),g($),m(!1),x({ids:e.map(e=>e.id),key:It(n,r),reach:t.id,reached:!1}),A(`logs`)},[A]);(0,Z.useEffect)(()=>{if(!b||w.key!==b.key||w.loading||w.loadingEarlier||!w.meta)return;let e=new Set(b.ids),t=T.filter(t=>t.ids.some(t=>e.has(t)));if(t.reduce((t,n)=>t+n.ids.filter(t=>e.has(t)).length,0)<e.size&&w.meta.hasMore&&!b.reached){x({...b,reached:!0}),w.loadEarlier(b.reach);return}if(x(null),!t.length){z(w.meta.reachMissed===`far`?`Those lines are too far back to show here`:`Those lines are no longer kept`);return}g({keys:new Set(t.map(e=>e.key)),anchor:t[0].key,cursor:t[t.length-1].key}),y({key:t[0].key,seq:Date.now()})},[b,w,T]);let[I,re]=(0,Z.useState)(!1),L=(0,Z.useRef)(O);(0,Z.useEffect)(()=>{let e=O>L.current;if(L.current=O,!e)return;re(!0);let t=setTimeout(()=>re(!1),1200);return()=>clearTimeout(t)},[O]);let ie=D.data?.issues.filter(e=>e.cls!==`expected`&&!e.dismissed).length??0,ae={feed:w,rows:T,filter:o,setFilter:j,clearFilters:ne,range:l,setRange:M,paused:d,setPaused:f,follow:p,setFollow:m,sel:h,setSel:N,utc:C,wrap:r||te,reveal:ee,listTop:S,goTo:A,togglePrefs:()=>v(e=>!e)},R={utc:C,phone:r,issues:D,goTo:A,showInLogs:F};return(0,Q.jsxs)(`div`,{className:`lg-app`,"data-mode":r?`phone`:`window`,"data-testid":`logs-app`,children:[r&&(0,Q.jsxs)(`div`,{className:`lg-head`,children:[(0,Q.jsx)(`h2`,{children:`Logs`}),(0,Q.jsx)($t,{paused:d,pending:w.pausedCount})]}),(0,Q.jsxs)(`div`,{className:`lg-tabs`,role:`tablist`,"aria-label":`Logs`,children:[Ze.map(e=>(0,Q.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":i===e,onClick:()=>A(e),"data-testid":`logs-tab-${e}`,className:H(`inline-flex min-h-11 shrink-0 items-center px-4 text-sm font-medium transition-colors`,i===e?`-mb-px border-b-2 border-primary text-text-primary`:`text-text-subtle hover:text-text-secondary`),children:[e===`issues`&&(0,Q.jsx)(E,{className:`lg-tab-ai`}),$n[e],e===`issues`&&ie>0&&(0,Q.jsx)(`span`,{className:`lg-tabn`,children:ie}),e===`report`&&O>0&&(0,Q.jsx)(`span`,{className:H(`lg-tabn acc`,I&&`pulse`),children:O.toLocaleString(`en-US`)})]},e)),!r&&(0,Q.jsxs)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2 pl-3 pr-1`,children:[(0,Q.jsx)($t,{paused:d,pending:w.pausedCount}),(0,Q.jsx)(`button`,{type:`button`,"aria-label":`Logs preferences`,"aria-expanded":_,onClick:()=>v(e=>!e),className:H(`flex size-11 items-center justify-center rounded transition-colors md:size-8`,_?`bg-primary/10 text-primary`:`text-text-subtle hover:bg-surface-hover hover:text-text-secondary`),children:(0,Q.jsx)(s,{className:`size-4`})})]})]}),_&&!r&&(0,Q.jsx)(tr,{auto:D.data?.auto,setAuto:D.setAuto,files:w.meta?.files}),(0,Q.jsx)(`div`,{className:`lg-body`,children:i===`logs`?r?(0,Q.jsx)(Pn,{...ae}):(0,Q.jsx)(Dn,{...ae}):i===`issues`?(0,Q.jsx)(Bn,{...R}):(0,Q.jsx)(Xn,{...R})})]})}function tr({auto:e,setAuto:t,files:n}){let r=V(e=>e.logsUtc),i=V(e=>e.setLogsUtc),a=V(e=>e.logsBadge),o=V(e=>e.setLogsBadge);return(0,Q.jsxs)(`div`,{className:`lg-prefs`,"data-testid":`logs-prefs`,children:[(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[`Times`,(0,Q.jsxs)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":!r,onClick:()=>i(!1),children:[`Local (`,Me(),`)`]}),(0,Q.jsx)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":r,onClick:()=>i(!0),children:`UTC`})]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(Ae,{checked:a,onCheckedChange:o}),`Red dot on the Logs button for a likely bug`]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(Ae,{checked:!!e,disabled:e===void 0,onCheckedChange:e=>void t(e)}),`Let AI sort new errors and warnings`]}),n&&(0,Q.jsxs)(`span`,{children:[`Keeps `,(0,Q.jsxs)(`b`,{children:[n.generations,` × `,Ee(n.capBytes)]}),` of ppm.log and `,(0,Q.jsx)(`b`,{children:Y(n.browserRetentionDays,`day`)}),` of browser logs`]})]})}export{er as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{E as e}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./icons-C1wDt09O.js";import"./api-client-BnYFnEfK.js";import"./settings-store-CMpVMq3Y.js";import"./portal-container-context-Gepuvxdg.js";import"./window-store-D6EgLSfT.js";import"./panel-store-H7e9XHZF.js";import"./project-store-Bs-kiU8m.js";import"./project-framework-store-nuePqBBa.js";import"./session-list-sync-triggers-D9i1FxWd.js";import"./tab-store-NUmgzMPf.js";import"./use-is-mobile-CL2I7hLf.js";import"./button-BHGVTbam.js";import"./dropdown-menu-CxZR_vuV.js";import"./mobile-bottom-sheet-M9pZptfh.js";import"./use-visual-viewport-B_GFo6k2.js";import"./send-to-chat-BUxj21hD.js";import{t}from"./logs-app-CDSvyY1H.js";var n=e(),r=()=>(0,n.jsx)(t,{mode:`phone`});export{r as LogsTab};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as e}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./icons-C1wDt09O.js";import"./api-client-BnYFnEfK.js";import"./settings-store-
|
|
1
|
+
import{E as e}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./icons-C1wDt09O.js";import"./api-client-BnYFnEfK.js";import"./settings-store-CMpVMq3Y.js";import"./portal-container-context-Gepuvxdg.js";import{n as t}from"./window-store-D6EgLSfT.js";import"./panel-store-H7e9XHZF.js";import"./project-store-Bs-kiU8m.js";import"./project-framework-store-nuePqBBa.js";import"./session-list-sync-triggers-D9i1FxWd.js";import"./tab-store-NUmgzMPf.js";import"./use-is-mobile-CL2I7hLf.js";import"./button-BHGVTbam.js";import"./dropdown-menu-CxZR_vuV.js";import"./mobile-bottom-sheet-M9pZptfh.js";import"./use-visual-viewport-B_GFo6k2.js";import{dn as n}from"./index-Vd9Xr54k.js";import"./send-to-chat-BUxj21hD.js";import{t as r}from"./logs-app-CDSvyY1H.js";var i=e();function a({id:e,payload:a}){let o=t(e=>e.setPayload);return(0,i.jsx)(r,{mode:`window`,initialView:n(a?.view),onViewChange:t=>o(e,{view:t})})}export{a as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-C5c2KzVm.js";import{H as t}from"./index-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-C5c2KzVm.js";import{H as t}from"./index-Vd9Xr54k.js";var n=e({LspConnection:()=>a,acquireLspConnection:()=>s,releaseLspConnection:()=>l,retryUnavailableLspDocuments:()=>c}),r=15e3;function i(e){clearTimeout(e.timer),e.detach?.()}var a=class{ws;docs=new Map;pending=new Map;notificationListeners=new Set;statusListeners=new Set;nextId=1;constructor(e){this.projectName=e,this.ws=new t(`/ws/project/${encodeURIComponent(e)}/lsp`),this.ws.onMessage(e=>this.receive(e)),this.ws.connect()}open(e,t){this.docs.set(e,{source:t,status:{state:`opening`}}),this.setStatus(e,{state:`opening`}),this.sendOpen(e)}sendOpen(e){let t=this.docs.get(e);t&&this.send({t:`open`,path:e,version:t.source.getVersion(),text:t.source.getText(),clientUri:t.source.clientUri})}close(e){this.docs.delete(e)&&this.send({t:`close`,path:e})}change(e,t,n){this.docs.has(e)&&this.send({t:`change`,path:e,version:t,changes:n})}save(e,t){this.docs.has(e)&&this.send({t:`save`,path:e,text:t})}statusOf(e){return this.docs.get(e)?.status}retryUnavailable(){for(let[e,t]of this.docs)t.status.state===`unavailable`&&(this.setStatus(e,{state:`opening`}),this.sendOpen(e))}request(e,t,n,i={}){let a=this.docs.get(e);if(!a||a.status.state!==`ready`)return Promise.reject(Error(`No language server is ready for ${e}`));let{timeoutMs:o=r,signal:s}=i;if(s?.aborted)return Promise.reject(Error(`${t} was cancelled`));let c=this.nextId++;return new Promise((r,i)=>{let a=setTimeout(()=>{this.pending.delete(c),this.send({t:`cancel`,id:c}),i(Error(`${t} timed out`))},o),l=()=>{this.pending.delete(c)&&(clearTimeout(a),this.send({t:`cancel`,id:c}),i(Error(`${t} was cancelled`)))};s?.addEventListener(`abort`,l,{once:!0}),this.pending.set(c,{resolve:r,reject:i,timer:a,detach:s?()=>s.removeEventListener(`abort`,l):void 0}),this.send({t:`request`,id:c,path:e,method:t,params:n})})}onNotification(e){return this.notificationListeners.add(e),()=>this.notificationListeners.delete(e)}onStatus(e){return this.statusListeners.add(e),()=>this.statusListeners.delete(e)}send(e){this.ws.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(typeof e.data==`string`?e.data:``)}catch{return}switch(t.t){case`hello`:for(let e of this.docs.keys())this.sendOpen(e);break;case`ready`:this.setStatus(String(t.path),{state:`ready`,languageId:String(t.languageId),server:t.server,projectPath:String(t.projectPath??``),capabilities:t.capabilities??{}});break;case`unavailable`:this.setStatus(String(t.path),{state:`unavailable`,reason:String(t.reason),server:t.server??null,message:String(t.message)});break;case`resync`:{let e=String(t.path),n=this.docs.get(e);n&&this.send({t:`change`,path:e,version:n.source.getVersion(),text:n.source.getText()});break}case`response`:{let e=this.pending.get(Number(t.id));if(!e)return;i(e),this.pending.delete(Number(t.id)),e.resolve(t.result);break}case`error`:{let e=this.pending.get(Number(t.id));if(!e)return;i(e),this.pending.delete(Number(t.id)),e.reject(Error(String(t.message)));break}case`notification`:for(let e of this.notificationListeners)e(String(t.method),t.params);break}}setStatus(e,t){let n=this.docs.get(e);n&&(n.status=t);for(let n of this.statusListeners)n(e,t)}dispose(){for(let e of this.pending.values())i(e),e.reject(Error(`The language server connection was closed`));this.pending.clear(),this.docs.clear(),this.notificationListeners.clear(),this.statusListeners.clear(),this.ws.disconnect()}},o=new Map;function s(e){let t=o.get(e);if(t)return t.holders++,t.connection;let n=new a(e);return o.set(e,{connection:n,holders:1}),n}function c(){for(let e of o.values())e.connection.retryUnavailable()}function l(e){let t=o.get(e);return!t||(t.holders--,t.holders>0)?!1:(o.delete(e),t.connection.dispose(),!0)}export{c as i,n,l as r,s as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./icons-C1wDt09O.js";import"./api-client-BnYFnEfK.js";import"./settings-store-
|
|
1
|
+
import"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./icons-C1wDt09O.js";import"./api-client-BnYFnEfK.js";import"./settings-store-CMpVMq3Y.js";import"./window-store-D6EgLSfT.js";import"./panel-store-H7e9XHZF.js";import"./project-store-Bs-kiU8m.js";import"./project-framework-store-nuePqBBa.js";import"./session-list-sync-triggers-D9i1FxWd.js";import"./tab-store-NUmgzMPf.js";import"./file-store-Bn0vbkCx.js";import"./use-is-mobile-CL2I7hLf.js";import"./settings-categories-BY9n3BRr.js";import"./open-settings-DWbF5YsE.js";import"./git-repo-store-CESIqItW.js";import"./fs-api-BVIVh_De.js";import"./lib-DULxhi7W.js";import{t as e}from"./markdown-renderer-DZNMRg6p.js";import"./run-in-terminal-DAdjH24K.js";export{e as MarkdownRenderer};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid.core-DGm3naOX.js","assets/preload-helper-Bf_JiD2A.js","assets/dist-B0kHMXGc.js","assets/rolldown-runtime-C5c2KzVm.js","assets/chunk-PU5JKC2W-B7R1Jo4d.js","assets/src-Dydwo4lv.js","assets/chunk-GEFDOKGD-Dx5lnrkl.js","assets/math-tCrgxYlZ.js","assets/chunk-7R4GIKGN-CTMBH4ua.js","assets/isArrayLikeObject-DXZ1k_cA.js","assets/marked.esm-PRUAkogl.js","assets/isEmpty-BlTBbi80.js","assets/chunk-GLR3WWYH-Dd48L1FK.js","assets/chunk-KYZI473N-TzCLwqs9.js","assets/chunk-PQ6SQG4A-BIt-5Ne4.js","assets/chunk-YBOYWFTD-jnKqH1fC.js","assets/rough.esm-C9m11M_e.js","assets/chunk-O4XLMI2P-_T5QU2qc.js","assets/line-CCff0akv.js","assets/path-DS9Bv73a.js","assets/array-BlA1ePkA.js","assets/chunk-MX3YWQON-DSIik5EY.js","assets/chunk-HHEYEP7N-DbvXJkn7.js","assets/chunk-XPW4576I-DzyrnA7U.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,D as n,E as r,T as i,a,b as o,c as s,d as c,f as l,i as u,l as d,n as f,o as ee,r as te,s as ne,t as p,v as m,w as h,x as re}from"./vendor-markdown-C-P1aR4p.js";import{a as ie}from"./api-client-BnYFnEfK.js";import{t as ae}from"./settings-store-
|
|
2
|
+
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,D as n,E as r,T as i,a,b as o,c as s,d as c,f as l,i as u,l as d,n as f,o as ee,r as te,s as ne,t as p,v as m,w as h,x as re}from"./vendor-markdown-C-P1aR4p.js";import{a as ie}from"./api-client-BnYFnEfK.js";import{t as ae}from"./settings-store-CMpVMq3Y.js";import{t as oe}from"./preload-helper-Bf_JiD2A.js";import{t as g}from"./utils-D3xTlJyU.js";import{i as se}from"./project-store-Bs-kiU8m.js";import{t as _}from"./tab-store-NUmgzMPf.js";import{i as ce,o as le,t as v}from"./file-store-Bn0vbkCx.js";import{r as ue}from"./clipboard-D3XnL7CB.js";import{n as y}from"./fs-api-BVIVh_De.js";import{Ci as de,I as fe,L as pe,Yr as me,ct as b,it as he,lt as ge,n as _e,nt as x,r as ve,rt as ye,t as be}from"./index-Vd9Xr54k.js";import{r as xe,t as Se}from"./image-gallery-DuV1wTMD.js";import{a as S,c as C,l as Ce,n as w,o as T,s as E,t as we}from"./lib-DULxhi7W.js";import{r as D}from"./run-in-terminal-DAdjH24K.js";function O(e){u(e,[/\r?\n|\r/g,k])}function k(){return{type:`break`}}function Te(){return function(e){O(e)}}var Ee={},De={}.hasOwnProperty,A=b(`type`,{handlers:{root:ke,element:Pe,text:Me,comment:Ne,doctype:je}});function Oe(e,n){let r=(n||Ee).space;return A(e,r===`svg`?h:t)}function ke(e,t){let n={nodeName:`#document`,mode:(e.data||{}).quirksMode?`quirks`:`no-quirks`,childNodes:[]};return n.childNodes=j(e.children,n,t),M(e,n),n}function Ae(e,t){let n={nodeName:`#document-fragment`,childNodes:[]};return n.childNodes=j(e.children,n,t),M(e,n),n}function je(e){let t={nodeName:`#documentType`,name:`html`,publicId:``,systemId:``,parentNode:null};return M(e,t),t}function Me(e){let t={nodeName:`#text`,value:e.value,parentNode:null};return M(e,t),t}function Ne(e){let t={nodeName:`#comment`,data:e.value,parentNode:null};return M(e,t),t}function Pe(e,t){let n=t,r=n;e.type===`element`&&e.tagName.toLowerCase()===`svg`&&n.space===`html`&&(r=h);let i=[],a;if(e.properties){for(a in e.properties)if(a!==`children`&&De.call(e.properties,a)){let t=Fe(r,a,e.properties[a]);t&&i.push(t)}}let o=r.space;m(o);let s={nodeName:e.tagName,tagName:e.tagName,attrs:i,namespaceURI:l[o],childNodes:[],parentNode:null};return s.childNodes=j(e.children,s,r),M(e,s),e.tagName===`template`&&e.content&&(s.content=Ae(e.content,r)),s}function Fe(e,t,n){let r=i(e,t);if(n===!1||n==null||typeof n==`number`&&Number.isNaN(n)||!n&&r.boolean)return;Array.isArray(n)&&(n=r.commaSeparated?re(n):o(n));let a={name:r.attribute,value:n===!0?``:String(n)};if(r.space&&r.space!==`html`&&r.space!==`svg`){let e=a.name.indexOf(`:`);e<0?a.prefix=``:(a.name=a.name.slice(e+1),a.prefix=r.attribute.slice(0,e)),a.namespace=l[r.space]}return a}function j(e,t,n){let r=-1,i=[];if(e)for(;++r<e.length;){let a=A(e[r],n);a.parentNode=t,i.push(a)}return i}function M(e,t){let n=e.position;n&&n.start&&n.end&&(m(typeof n.start.offset==`number`),m(typeof n.end.offset==`number`),t.sourceCodeLocation={startLine:n.start.line,startCol:n.start.column,startOffset:n.start.offset,endLine:n.end.line,endCol:n.end.column,endOffset:n.end.offset})}var Ie=/<(\/?)(iframe|noembed|noframes|plaintext|script|style|textarea|title|xmp)(?=[\t\n\f\r />])/gi,Le=new Set([`mdxFlowExpression`,`mdxJsxFlowElement`,`mdxJsxTextElement`,`mdxTextExpression`,`mdxjsEsm`]),N={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function P(e,t){let n=qe(e),r=b(`type`,{handlers:{root:Re,element:ze,text:Be,comment:I,doctype:Ve,raw:Ue},unknown:We}),i={parser:n?new S(N):S.getFragmentParser(void 0,N),handle(e){r(e,i)},stitches:!1,options:t||{}};r(e,i),L(i,d());let a=Ce(n?i.parser.document:i.parser.getFragment(),{file:i.options.file});return i.stitches&&ne(a,`comment`,function(e,t,n){let r=e;if(r.value.stitch&&n&&t!==void 0){let e=n.children;return e[t]=r.value.stitch,t}}),a.type===`root`&&a.children.length===1&&a.children[0].type===e.type?a.children[0]:a}function F(e,t){let n=-1;if(e)for(;++n<e.length;)t.handle(e[n])}function Re(e,t){F(e.children,t)}function ze(e,t){Ge(e,t),F(e.children,t),Ke(e,t)}function Be(e,t){t.parser.tokenizer.state>4&&(t.parser.tokenizer.state=0);let n={type:C.CHARACTER,chars:e.value,location:z(e)};L(t,d(e)),t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken)}function Ve(e,t){let n={type:C.DOCTYPE,name:`html`,forceQuirks:!1,publicId:``,systemId:``,location:z(e)};L(t,d(e)),t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken)}function He(e,t){t.stitches=!0;let n=Je(e);`children`in e&&`children`in n&&(n.children=P({type:`root`,children:e.children},t.options).children),I({type:`comment`,value:{stitch:n}},t)}function I(e,t){let n=e.value,r={type:C.COMMENT,data:n,location:z(e)};L(t,d(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function Ue(e,t){if(t.parser.tokenizer.preprocessor.html=``,t.parser.tokenizer.preprocessor.pos=-1,t.parser.tokenizer.preprocessor.lastGapPos=-2,t.parser.tokenizer.preprocessor.gapStack=[],t.parser.tokenizer.preprocessor.skipNextNewLine=!1,t.parser.tokenizer.preprocessor.lastChunkWritten=!1,t.parser.tokenizer.preprocessor.endOfChunkHit=!1,t.parser.tokenizer.preprocessor.isEol=!1,R(t,d(e)),t.parser.tokenizer.write(t.options.tagfilter?e.value.replace(Ie,`<$1$2`):e.value,!1),t.parser.tokenizer._runParsingLoop(),t.parser.tokenizer.state===72||t.parser.tokenizer.state===78){t.parser.tokenizer.preprocessor.lastChunkWritten=!0;let e=t.parser.tokenizer._consume();t.parser.tokenizer._callState(e)}}function We(e,t){let n=e;if(t.options.passThrough&&t.options.passThrough.includes(n.type))He(n,t);else{let e=``;throw Le.has(n.type)&&(e=". It looks like you are using MDX nodes with `hast-util-raw` (or `rehype-raw`). If you use this because you are using remark or rehype plugins that inject `'html'` nodes, then please raise an issue with that plugin, as its a bad and slow idea. If you use this because you are using markdown syntax, then you have to configure this utility (or plugin) to pass through these nodes (see `passThrough` in docs), but you can also migrate to use the MDX syntax"),Error("Cannot compile `"+n.type+"` node"+e)}}function L(e,t){R(e,t);let n=e.parser.tokenizer.currentCharacterToken;n&&n.location&&(n.location.endLine=e.parser.tokenizer.preprocessor.line,n.location.endCol=e.parser.tokenizer.preprocessor.col+1,n.location.endOffset=e.parser.tokenizer.preprocessor.offset+1,e.parser.currentToken=n,e.parser._processToken(e.parser.currentToken)),e.parser.tokenizer.paused=!1,e.parser.tokenizer.inLoop=!1,e.parser.tokenizer.active=!1,e.parser.tokenizer.returnState=T.DATA,e.parser.tokenizer.charRefCode=-1,e.parser.tokenizer.consumedAfterSnapshot=-1,e.parser.tokenizer.currentLocation=null,e.parser.tokenizer.currentCharacterToken=null,e.parser.tokenizer.currentToken=null,e.parser.tokenizer.currentAttr={name:``,value:``}}function R(e,t){if(t&&t.offset!==void 0){let n={startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:-1,endCol:-1,endOffset:-1};e.parser.tokenizer.preprocessor.lineStartPos=-t.column+1,e.parser.tokenizer.preprocessor.droppedBufferSize=t.offset,e.parser.tokenizer.preprocessor.line=t.line,e.parser.tokenizer.currentLocation=n}}function Ge(e,t){let n=e.tagName.toLowerCase();if(t.parser.tokenizer.state===T.PLAINTEXT)return;L(t,d(e));let r=t.parser.openElements.current,i=`namespaceURI`in r?r.namespaceURI:l.html;i===l.html&&n===`svg`&&(i=l.svg);let a=Oe({...e,children:[]},{space:i===l.svg?`svg`:`html`}),o={type:C.START_TAG,tagName:n,tagID:E(n),selfClosing:!1,ackSelfClosing:!1,attrs:`attrs`in a?a.attrs:[],location:z(e)};t.parser.currentToken=o,t.parser._processToken(t.parser.currentToken),t.parser.tokenizer.lastStartTagName=n}function Ke(e,t){let n=e.tagName.toLowerCase();if(!t.parser.tokenizer.inForeignNode&&ge.includes(n)||t.parser.tokenizer.state===T.PLAINTEXT)return;L(t,s(e));let r={type:C.END_TAG,tagName:n,tagID:E(n),selfClosing:!1,ackSelfClosing:!1,attrs:[],location:z(e)};t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken),n===t.parser.tokenizer.lastStartTagName&&(t.parser.tokenizer.state===T.RCDATA||t.parser.tokenizer.state===T.RAWTEXT||t.parser.tokenizer.state===T.SCRIPT_DATA)&&(t.parser.tokenizer.state=T.DATA)}function qe(e){let t=e.type===`root`?e.children[0]:e;return!!(t&&(t.type===`doctype`||t.type===`element`&&t.tagName.toLowerCase()===`html`))}function z(e){let t=d(e)||{line:void 0,column:void 0,offset:void 0},n=s(e)||{line:void 0,column:void 0,offset:void 0};return{startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:n.line,endCol:n.column,endOffset:n.offset}}function Je(e){return`children`in e?c({...e,children:[]}):c(e)}function Ye(e){return function(t,n){return P(t,{...e,file:n})}}var B=`$$`,Xe=[{open:`\\[`,close:`\\]`,allowNewline:!0},{open:`\\(`,close:`\\)`,allowNewline:!1}];function Ze(e){let t=[],n=``,r=0,i=-1,a=0;for(let o of e.split(`
|
|
3
3
|
`)){let e=a+o.length,s=/^ {0,3}(`{3,}|~{3,})/.exec(o);i>=0?s&&s[1][0]===n&&s[1].length>=r&&/^ {0,3}[`~]+[ \t]*$/.test(o)&&(t.push([i,e]),i=-1):s&&(n=s[1][0],r=s[1].length,i=a),a=e+1}return i>=0&&t.push([i,e.length]),t}function Qe(e,t){let n=[],r=0;for(;r<e.length;){let i=t.find(([e,t])=>r>=e&&r<t);if(i){r=i[1];continue}if(e[r]!=="`"){r++;continue}let a=0;for(;e[r+a]==="`";)a++;let o=r+a,s=-1;for(;o<e.length;){if(e[o]!=="`"){o++;continue}let t=0;for(;e[o+t]==="`";)t++;if(t===a){s=o+t;break}o+=t}if(s<0){r+=a;continue}n.push([r,s]),r=s}return n}function $e(e){if(!e.includes(`\\[`)&&!e.includes(`\\(`))return e;let t=Ze(e),n=[...t,...Qe(e,t)],r=e=>n.some(([t,n])=>e>=t&&e<n),i=``,a=0;for(;a<e.length;){let t=n.find(([e,t])=>a>=e&&a<t);if(t){i+=e.slice(a,t[1]),a=t[1];continue}let o=Xe.find(t=>e.startsWith(t.open,a));if(!o||e[a-1]===`\\`){i+=e[a],a++;continue}let s=a+o.open.length,c=o.allowNewline?e.length:et(e,`
|
|
4
|
-
`,s),l=-1;for(let t=s;t<=c-o.close.length;t++)if(e.startsWith(o.close,t)&&!r(t)){l=t;break}if(l<0){i+=e[a],a++;continue}i+=B+e.slice(s,l)+B,a=l+o.close.length}return i}function et(e,t,n){let r=e.indexOf(t,n);return r<0?e.length:r}var V=e(n(),1),tt=RegExp(`\\.(ts|tsx|js|jsx|mjs|cjs|py|json|md|mdx|yaml|yml|toml|css|scss|less|html|htm|sh|bash|zsh|go|rs|sql|rb|java|kt|swift|c|cpp|h|hpp|cs|vue|svelte|txt|env|cfg|conf|ini|xml|csv|log|dockerfile|makefile|gradle|output)$`,`i`),nt=/[*?{}\[\]]/,H=/^(\/|[A-Za-z]:[/\\])/;function rt(e){return H.test(e)||U(e)?e:ee(e)}function U(e){if(!e||e.startsWith(`#`)||/[?*\u0000-\u001f]/.test(e))return null;let t=e;if(/^file:/i.test(t)){let e=t.match(/^file:\/\/(?:localhost)?(\/.*)$/i);if(!e)return null;t=e[1]}let n=pe(t);if(!n)return null;let r=n.line?n.path:n.path.split(`#`)[0];try{r=decodeURIComponent(r)}catch{return null}return!r||/[\u0000-\u001f\u007f]/.test(r)||/^[\\/]{2}/.test(r)||/^[a-z][a-z\d+.-]*:/i.test(r)&&!/^[a-z]:[/\\]/i.test(r)?null:(r=r.replace(/^\/([a-z]:[/\\])/i,`$1`),{path:r,line:n.line})}var W=(0,V.createContext)(null),G=()=>(0,V.useContext)(W);function K(e,t){return e.flatMap(e=>[...e.name===t?[e.path]:[],...K(e.children??[],t)])}function it(e){let t=_(e=>e.openTab),n=_(e=>e.updateTab);return(0,V.useCallback)(async(r,i)=>{if(!r)return;let a=()=>
|
|
4
|
+
`,s),l=-1;for(let t=s;t<=c-o.close.length;t++)if(e.startsWith(o.close,t)&&!r(t)){l=t;break}if(l<0){i+=e[a],a++;continue}i+=B+e.slice(s,l)+B,a=l+o.close.length}return i}function et(e,t,n){let r=e.indexOf(t,n);return r<0?e.length:r}var V=e(n(),1),tt=RegExp(`\\.(ts|tsx|js|jsx|mjs|cjs|py|json|md|mdx|yaml|yml|toml|css|scss|less|html|htm|sh|bash|zsh|go|rs|sql|rb|java|kt|swift|c|cpp|h|hpp|cs|vue|svelte|txt|env|cfg|conf|ini|xml|csv|log|dockerfile|makefile|gradle|output)$`,`i`),nt=/[*?{}\[\]]/,H=/^(\/|[A-Za-z]:[/\\])/;function rt(e){return H.test(e)||U(e)?e:ee(e)}function U(e){if(!e||e.startsWith(`#`)||/[?*\u0000-\u001f]/.test(e))return null;let t=e;if(/^file:/i.test(t)){let e=t.match(/^file:\/\/(?:localhost)?(\/.*)$/i);if(!e)return null;t=e[1]}let n=pe(t);if(!n)return null;let r=n.line?n.path:n.path.split(`#`)[0];try{r=decodeURIComponent(r)}catch{return null}return!r||/[\u0000-\u001f\u007f]/.test(r)||/^[\\/]{2}/.test(r)||/^[a-z][a-z\d+.-]*:/i.test(r)&&!/^[a-z]:[/\\]/i.test(r)?null:(r=r.replace(/^\/([a-z]:[/\\])/i,`$1`),{path:r,line:n.line})}var W=(0,V.createContext)(null),G=()=>(0,V.useContext)(W);function K(e,t){return e.flatMap(e=>[...e.name===t?[e.path]:[],...K(e.children??[],t)])}function it(e){let t=_(e=>e.openTab),n=_(e=>e.updateTab);return(0,V.useCallback)(async(r,i)=>{if(!r)return;let a=()=>de(fe(r,i));if(/\.output$/.test(r)){let e=be.getState(),t=e.findByOutput(r);if(t){e.openPanel(t.shellId);return}}let o=se.getState().projects.find(t=>t.name===e)?.path,s=/^(\/|[a-z]:[/\\]|~(?:[/\\]|$))/i.test(r),c=s?r:o?v(o,r):null;if(!c){a();return}let l=async r=>{let s=await y.stat(r);for(let e=0;s.kind===`symlink`&&s.target&&e<8;e++){let e=s.target,t=s.path.slice(0,s.path.length-s.name.length);s=await y.stat(/^(\/|[a-z]:[/\\])/i.test(e)?e:v(t,e))}if(s.kind===`directory`){await me(s.path);return}if(s.kind!==`file`){a();return}let c=o?ce(o,s.path):null,l={filePath:c??s.path};e&&(l.projectName=e),i&&Object.assign(l,{lineNumber:i.start,endLine:i.end,revealAt:Date.now()});let u=t({type:`editor`,title:s.name,metadata:l,projectId:c===null?null:e??null,closable:!0});i&&u&&n(u,{metadata:l})};try{await l(c)}catch{if(!s&&!/[/\\]/.test(r)&&o){let e=K(le.getState().tree,g(r));if(e.length===1)try{await l(v(o,e[0]));return}catch{}}a()}},[e,t,n])}var q=r();function at(e,t,n){let[r,i]=(0,V.useState)(()=>n?ye(e,t):null);return(0,V.useEffect)(()=>{if(!n){i(null);return}let r=!1;x();let a=()=>{x(),he(e,t).then(e=>{r||i(e)}).catch(()=>{r||i(null)})};a();let o=()=>{a()};return window.addEventListener(`ppm:shiki-theme-change`,o),()=>{r=!0,window.removeEventListener(`ppm:shiki-theme-change`,o)}},[e,t,n]),r}var ot=/^(sequenceDiagram|flowchart|graph\s|classDiagram|stateDiagram|erDiagram|journey|gantt|pie|quadrantChart|requirementDiagram|gitGraph|mindmap|timeline|sankey|xychart|block-beta|packet-beta|architecture-beta|kanban)\b/,J=null;function st(){return J||=oe(()=>import(`./mermaid.core-DGm3naOX.js`).then(e=>(e.default.initialize({startOnLoad:!1,theme:`default`,securityLevel:`strict`,fontFamily:`ui-sans-serif, system-ui, sans-serif`}),e.default)),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23])),J}function Y(e){return e?e.type===`text`?e.value??``:e.children?e.children.map(Y).join(``):``:``}function ct({children:e,node:t,...n}){let r=ae(e=>e.minimalMode),{codeActions:i,projectName:a,isStreaming:o}=G(),s=t?.children?.[0],c=(s?.properties?.className??[]).find(e=>e.startsWith(`language-`))?.replace(`language-`,``),l=Y(s);if(c===`mermaid`||!c&&ot.test(l.trim()))return(0,q.jsx)(dt,{source:l.trim()});let u=/^(bash|sh|shell|zsh)$/.test(c||``)||!c&&l.startsWith(`$`),d=at(l,c,!o),f=(0,V.useMemo)(()=>d?{__html:d}:null,[d]);return(0,q.jsxs)(`div`,{className:`relative group`,children:[f?(0,q.jsx)(`div`,{className:`shiki-block`,dangerouslySetInnerHTML:f}):(0,q.jsx)(`pre`,{...n,children:e}),i&&(0,q.jsxs)(`div`,{className:`code-actions absolute top-1 right-1 flex gap-1`,children:[(0,q.jsx)(Z,{title:`Copy`,icon:(0,q.jsx)(ft,{}),activeIcon:(0,q.jsx)(pt,{}),onClick:()=>void ue(l)}),!r&&u&&a&&(0,q.jsx)(Z,{title:`Send to terminal`,icon:(0,q.jsx)(Q,{}),onClick:()=>D(l,a)})]})]})}var lt=/^(.+?):(\d+)(?:-(\d+))?$/;function X(e){return!!e&&!e.includes(` `)&&!nt.test(e)&&tt.test(e)}function ut({className:e,children:t,node:n,...r}){let{openFileOrSearch:i}=G();if(e)return(0,q.jsx)(`code`,{className:e,...r,children:t});let a=String(t??``).trim(),o=null,s,c=a.match(lt);if(c&&X(c[1])?(o=c[1],s={start:Number(c[2]),end:c[3]?Number(c[3]):void 0}):X(a)&&(o=a),o){let e=o;return(0,q.jsx)(`code`,{onClick:()=>i(e,s),style:{cursor:`pointer`,textDecoration:`underline`,textDecorationStyle:`dotted`},...r,children:t})}return(0,q.jsx)(`code`,{...r,children:t})}function dt({source:e}){let{openDiagramOverlay:t}=G(),[n,r]=(0,V.useState)(null),i=(0,V.useMemo)(()=>n?{__html:n}:null,[n]);return(0,V.useEffect)(()=>{let t=!1,n=`mermaid-${Math.random().toString(36).slice(2,9)}`;return st().then(async i=>{if(!await i.parse(e,{suppressErrors:!0}))throw Error(`invalid mermaid syntax`);let{svg:a}=await i.render(n,e);t||r(a)}).catch(()=>{document.getElementById(n)?.remove(),document.getElementById(`d${n}`)?.remove()}),()=>{t=!0}},[e]),!n||!i?(0,q.jsx)(`pre`,{children:(0,q.jsx)(`code`,{children:e})}):(0,q.jsxs)(`div`,{className:`mermaid-diagram group relative cursor-pointer rounded-lg border border-border bg-white dark:bg-panel-2 p-3 overflow-x-auto my-2`,onClick:()=>t(n),children:[(0,q.jsx)(`div`,{dangerouslySetInnerHTML:i}),(0,q.jsx)(`div`,{className:`absolute top-2 right-2 flex items-center gap-1 px-2 py-1 rounded bg-black/60 text-white text-xs can-hover:opacity-0 can-hover:group-hover:opacity-100 transition-opacity pointer-events-none`,children:`Click to expand`})]})}function Z({title:e,icon:t,activeIcon:n,onClick:r}){let[i,a]=(0,V.useState)(!1);return(0,q.jsx)(`button`,{className:`flex items-center justify-center size-6 rounded bg-surface-elevated/80 hover:bg-surface-elevated text-text-secondary hover:text-text-primary transition-colors border border-border/50`,title:e,onClick:()=>{r(),n&&(a(!0),setTimeout(()=>a(!1),2e3))},children:i&&n?n:t})}var ft=()=>(0,q.jsxs)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,q.jsx)(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),(0,q.jsx)(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})]}),pt=()=>(0,q.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,q.jsx)(`polyline`,{points:`20 6 9 17 4 12`})}),Q=()=>(0,q.jsxs)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,q.jsx)(`polyline`,{points:`4 17 10 11 4 5`}),(0,q.jsx)(`line`,{x1:`12`,y1:`19`,x2:`20`,y2:`19`})]}),mt={...w,strip:[...w.strip??[],`style`],tagNames:[...w.tagNames??[],`abbr`,`mark`,`small`,`u`],ancestors:{...w.ancestors,source:[`picture`]},attributes:{...w.attributes,code:[[`className`,/^language-./,`math-inline`,`math-display`]]},protocols:{cite:[`http`,`https`],longDesc:[`http`,`https`]}},ht=w.clobberPrefix??`user-content-`;function $(e){let t=e.tagName===`a`?e.properties?.href:void 0;typeof t==`string`&&t.length>1&&t.startsWith(`#`)&&(e.properties.href=`#${ht}${t.slice(1)}`),e.children?.forEach($)}function gt(){return e=>$(e)}var _t={clobberPrefix:``},vt=[[te,{singleTilde:!1}],[f,{singleDollarTextMath:!1}],Te],yt=[Ye,[we,mt],gt,p],bt=[p],xt={a:Ct,img:wt,pre:ct,code:ut,table:Tt};function St({content:e,projectName:t,className:n=``,codeActions:r=!1,isStreaming:i=!1,rawHtml:o=!0}){let s=ve(e=>e.open),c=_e(e=>e.open),l=it(t),u=(0,V.useMemo)(()=>$e(e),[e]),d=(0,V.useMemo)(()=>({projectName:t,codeActions:r,isStreaming:i,openFileOrSearch:l,openImageOverlay:s,openDiagramOverlay:c}),[t,r,i,l,s,c]);return(0,q.jsx)(W.Provider,{value:d,children:(0,q.jsx)(`div`,{className:`markdown-content prose-sm ${i?`is-streaming`:``} ${n}`,children:(0,q.jsx)(a,{remarkPlugins:vt,rehypePlugins:o?yt:bt,remarkRehypeOptions:o?_t:void 0,urlTransform:rt,components:xt,children:u})})})}function Ct({href:e,children:t,node:n,...r}){let{openFileOrSearch:i}=G();if(e?.match(/^(https?:)?\/\//i))return(0,q.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,...r,children:t});let a=e?U(e):null;return a?(0,q.jsx)(`a`,{href:e,onClick:e=>{e.preventDefault(),i(a.path,a.line)},...r,children:t}):(0,q.jsx)(`a`,{href:e,...r,children:t})}function wt({src:e,alt:t,node:n,...r}){let{openImageOverlay:i}=G(),[a,o]=(0,V.useState)(null),[s,c]=(0,V.useState)(!1);(0,V.useEffect)(()=>{if(!e||!H.test(e))return;c(!0);let t=!1,n=null,r=ie();return fetch(`/api/fs/raw?path=${encodeURIComponent(e)}`,{headers:r?{Authorization:`Bearer ${r}`}:{}}).then(e=>{if(!e.ok)throw Error();return e.blob()}).then(e=>{t||(n=URL.createObjectURL(e),o(n),c(!1))}).catch(()=>{t||c(!1)}),()=>{t=!0,n&&URL.revokeObjectURL(n)}},[e]);let l=a||e||``,u=t||(e?g(e):``);return(0,q.jsx)(`img`,{src:l,alt:u,[Se]:``,onClick:e=>l&&i(l,u,xe(e.currentTarget)),className:`max-h-[400px] max-w-full object-contain rounded-md border border-border cursor-pointer`,style:{opacity:s?.3:1,minHeight:s?48:void 0,minWidth:s?48:void 0},...r})}function Tt({children:e,node:t,...n}){return(0,q.jsx)(`div`,{className:`table-scroll-wrapper overflow-x-auto`,children:(0,q.jsx)(`table`,{...n,children:e})})}export{St as t};
|
|
Binary file
|
|
Binary file
|
package/dist/web/assets/{mobile-explorer-sheet-Dz3eJdBl.js → mobile-explorer-sheet-D7e-MM6m.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
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"./icons-C1wDt09O.js";import{t as r}from"./explorer-body-
|
|
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"./icons-C1wDt09O.js";import{t as r}from"./explorer-body-DLaWmxri.js";import"./api-client-BnYFnEfK.js";import"./settings-store-CMpVMq3Y.js";import"./portal-container-context-Gepuvxdg.js";import"./window-store-D6EgLSfT.js";import"./panel-store-H7e9XHZF.js";import"./project-store-Bs-kiU8m.js";import"./project-framework-store-nuePqBBa.js";import"./session-list-sync-triggers-D9i1FxWd.js";import"./tab-store-NUmgzMPf.js";import"./context-menu-DhKbkI1X.js";import"./file-store-Bn0vbkCx.js";import"./use-is-mobile-CL2I7hLf.js";import"./button-BHGVTbam.js";import"./dialog-DnE192fh.js";import"./file-icons-CB0RsVdl.js";import"./dropdown-menu-CxZR_vuV.js";import{t as i}from"./mobile-bottom-sheet-M9pZptfh.js";import"./use-visual-viewport-B_GFo6k2.js";import"./adaptive-context-menu-CxHkI7dL.js";import"./fs-api-BVIVh_De.js";import"./format-file-meta-BOAh9mam.js";import{Xr as a,Zr as o,ci as s}from"./index-Vd9Xr54k.js";var c=e(t(),1),l=n();function u(){let e=o(e=>e.isOpen),t=o(e=>e.close),n=o(e=>e.setSelectMode),u=s(e=>e.slices[a]?.path),d=s(e=>e.slices[a]?.inlineEdit?.kind===`rename`);(0,c.useEffect)(()=>{n(!1)},[u,n]);let f=e=>{d&&e.stopPropagation()};return e?(0,l.jsx)(i,{open:e,onClose:t,zIndex:45,className:`flex h-[var(--sheet-vh)] flex-col p-0`,children:(0,l.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,onTouchStart:f,onTouchMove:f,children:u?(0,l.jsx)(r,{windowId:a,initialPath:u,variant:`sheet`}):(0,l.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-text-2`,children:`Loading…`})})}):null}export{u as MobileExplorerSheet};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
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{ur as r,xn as i,xt as a}from"./icons-C1wDt09O.js";import"./api-client-BnYFnEfK.js";import"./settings-store-
|
|
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{ur as r,xn as i,xt as a}from"./icons-C1wDt09O.js";import"./api-client-BnYFnEfK.js";import"./settings-store-CMpVMq3Y.js";import{n as o}from"./utils-D3xTlJyU.js";import"./portal-container-context-Gepuvxdg.js";import"./window-store-D6EgLSfT.js";import{n as s}from"./panel-store-H7e9XHZF.js";import"./project-store-Bs-kiU8m.js";import"./project-framework-store-nuePqBBa.js";import"./session-list-sync-triggers-D9i1FxWd.js";import"./tab-store-NUmgzMPf.js";import"./chat-preparation-cache-Bzb-T1pm.js";import"./use-is-mobile-CL2I7hLf.js";import"./settings-categories-BY9n3BRr.js";import{t as c}from"./open-settings-DWbF5YsE.js";import{t as l}from"./button-BHGVTbam.js";import"./dialog-DnE192fh.js";import"./patch-tab-metadata-DqvfqUI4.js";import"./mobile-bottom-sheet-M9pZptfh.js";import"./use-visual-viewport-B_GFo6k2.js";import{D as u,T as d,j as f,mi as p}from"./index-Vd9Xr54k.js";import{a as m}from"./api-settings-BPIlTiBi.js";import{s as h,t as g}from"./design-responsive-dialog-DBdfargi.js";import{i as _,l as v,n as y,u as b}from"./design-skill-suggestion-BcP-2VyB.js";var x=e(t(),1),S=`ppm-design-last-system:`;function C(e){try{return localStorage.getItem(S+e)}catch{return null}}function w(e,t){try{localStorage.setItem(S+e,t)}catch{}}var T=n(),E=120,D=[{id:`page`,label:`Page`,hint:`A page, screen or prototype`,icon:a},{id:`slides`,label:`Slides`,hint:`A 1280×720 slide deck`,icon:r}];function O({projectName:e,onClose:t}){let[n,r]=(0,x.useState)(``),[a,S]=(0,x.useState)(`page`),[O,k]=(0,x.useState)(null),[A,j]=(0,x.useState)(``),[M,N]=(0,x.useState)(null),[P,F]=(0,x.useState)(`default`),[I,L]=(0,x.useState)(null),[R,z]=(0,x.useState)(!1);(0,x.useEffect)(()=>{let t=!1;return Promise.all([f(e),m().catch(()=>null)]).then(([e,n])=>{if(t)return;k(e);let r=n?s(n):void 0;j((e.find(e=>e.id===r)??e[0])?.id??``)}).catch(e=>{t||(k([]),L(e.message||`Could not load providers`))}),h(e).then(n=>{if(t)return;N(n);let r=C(e);F(r&&n.some(e=>e.id===r)?r:n[0]?.id??`default`)}).catch(()=>{t||N([])}),()=>{t=!0}},[e]);let[B,V]=(0,x.useState)(!1);(0,x.useEffect)(()=>{let t=!1;return v(e).then(e=>{let n=b(e);t||V(n.length>0&&_(e.instructions,n))}).catch(()=>{}),()=>{t=!0}},[e]);let H=n.trim(),U=!!H&&!!A&&!!M&&!R,W=async()=>{if(U){z(!0),L(null);try{let n=await u(e,{title:H,kind:a,system:P});w(e,P),d(e),p({projectName:e,slug:n.slug,title:n.title,providerId:A,fresh:!0}),t()}catch(e){L(e.message||`Could not create the design`),z(!1)}}};return(0,T.jsx)(g,{open:!0,onClose:()=>{R||t()},title:`New design`,description:`The AI builds it in designs/ in this project, with a live preview beside the chat.`,footer:(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(l,{variant:`outline`,onClick:t,disabled:R,children:`Cancel`}),(0,T.jsxs)(l,{onClick:()=>void W(),disabled:!U,children:[R&&(0,T.jsx)(i,{className:`size-4 animate-spin`}),` Create`]})]}),children:(0,T.jsxs)(`form`,{className:`flex flex-col gap-4`,onSubmit:e=>{e.preventDefault(),W()},children:[(0,T.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-text-secondary`,children:[`Title`,(0,T.jsx)(`input`,{autoFocus:!0,value:n,maxLength:E,onChange:e=>r(e.target.value),placeholder:`e.g. Pricing page`,className:`min-h-11 w-full rounded-md border border-border bg-background px-3 text-sm text-foreground placeholder:text-text-subtle focus:outline-none focus:ring-1 focus:ring-primary md:min-h-9`})]}),(0,T.jsx)(`div`,{role:`radiogroup`,"aria-label":`Kind`,className:`grid grid-cols-2 gap-2`,children:D.map(e=>(0,T.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":a===e.id,onClick:()=>S(e.id),className:o(`flex min-h-14 flex-col items-start gap-0.5 rounded-md border p-2 text-left`,a===e.id?`border-primary`:`border-border`),children:[(0,T.jsxs)(`span`,{className:`flex items-center gap-1.5 text-sm font-medium`,children:[(0,T.jsx)(e.icon,{className:`size-4`}),` `,e.label]}),(0,T.jsx)(`span`,{className:`text-xs text-text-subtle`,children:e.hint})]},e.id))}),M&&M.length>1&&(0,T.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-text-secondary`,children:[`Which app is this for?`,(0,T.jsx)(`select`,{value:P,onChange:e=>F(e.target.value),className:`min-h-11 w-full rounded-md border border-border bg-background px-2 text-sm text-foreground md:min-h-9`,children:M.map(e=>(0,T.jsx)(`option`,{value:e.id,children:e.label},e.id))})]}),(0,T.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs font-medium text-text-secondary`,children:[`AI provider`,O===null?(0,T.jsxs)(`span`,{className:`flex min-h-11 items-center gap-2 text-sm text-text-subtle`,children:[(0,T.jsx)(i,{className:`size-4 animate-spin`}),` Loading…`]}):O.length===0?(0,T.jsx)(`span`,{className:`text-sm text-text-subtle`,children:`No configured provider can run design sessions. Enable Claude or Codex in Settings.`}):(0,T.jsx)(`select`,{value:A,onChange:e=>j(e.target.value),className:`min-h-11 w-full rounded-md border border-border bg-background px-2 text-sm text-foreground md:min-h-9`,children:O.map(e=>(0,T.jsx)(`option`,{value:e.id,children:e.name},e.id))})]}),B&&(0,T.jsx)(y,{onOpenSettings:()=>{t(),c(`design`)}}),I&&(0,T.jsx)(`p`,{className:`text-xs text-destructive`,role:`alert`,children:I})]})})}export{O as NewDesignDialog};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./api-client-BnYFnEfK.js";import{Wi as e}from"./index-Vd9Xr54k.js";export{e as useNotificationStore};
|