collabmd 0.1.48 → 0.1.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -608
- package/bin/collabmd.js +39 -20
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-Crf9Y3Q6.js +1 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-PuinKbSQ.js +1 -0
- package/dist/client/assets/ar-SA-5WIASEJP-Di7OimCN.js +10 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-I39sYjHI.js → architectureDiagram-5GKGNRK7-46hPkrZv.js} +3 -3
- package/dist/client/assets/az-AZ-V5EUQD6C-C19OGTT_.js +1 -0
- package/dist/client/assets/bg-BG-EXASCMTR-BIt0xWyb.js +5 -0
- package/dist/client/assets/{blockDiagram-NRAW4CY4-C6DtJy5Y.js → blockDiagram-I7D4REHJ-C1S5Bzf8.js} +4 -4
- package/dist/client/assets/bn-BD-U4SYNFCO-CdNaPy4Q.js +3 -0
- package/dist/client/assets/bn-IN-HKDJIITE-CdNaPy4Q.js +3 -0
- package/dist/client/assets/{browser-BKLM0ThC-IxjwuOIz-BBqQnUEb.js → browser-BKLM0ThC-IxjwuOIz-DyJcVMFR.js} +1 -1
- package/dist/client/assets/browser-utils-DbXSMI-6.js +1 -0
- package/dist/client/assets/{c4Diagram-UCG6FXSJ-CtWtxS9_.js → c4Diagram-7LVT6UL2-VAk1HPmz.js} +1 -1
- package/dist/client/assets/ca-ES-2KGUU5XB-C9t-c0cH.js +8 -0
- package/dist/client/assets/channel-jwdhnPiV.js +1 -0
- package/dist/client/assets/chunk-2E4U76K2-Ba8Wf22k.js +1 -0
- package/dist/client/assets/{chunk-TEH6E4GO-DVayPj-q.js → chunk-4HAMMTFA-Ht-73lsT.js} +20 -20
- package/dist/client/assets/chunk-5XKZK2GL-D4UAZSOJ.js +1 -0
- package/dist/client/assets/{chunk-75Z2AOVW-CdFSaPjz.js → chunk-75Z2AOVW-B2cZexqK.js} +1 -1
- package/dist/client/assets/{chunk-CLGD4ZFX-DQLgbQrv.js → chunk-CLGD4ZFX-Cmtx89ht.js} +1 -1
- package/dist/client/assets/chunk-DU6HZSFF-C6d6PJfE.js +127 -0
- package/dist/client/assets/{chunk-F27PBJKO-CNHIFhjo.js → chunk-F27PBJKO-Dg3H6KLL.js} +1 -1
- package/dist/client/assets/{chunk-GMAD6QVW-CbcBqPM5.js → chunk-GMAD6QVW-DUfjx_d5.js} +1 -1
- package/dist/client/assets/{chunk-OBVCFTLP-BJR7u1jh.js → chunk-GVQU2GXP-D1l7oRGR.js} +1 -1
- package/dist/client/assets/{chunk-G27WJ6UU-D9-eg537.js → chunk-IMKFNOWR-3F6NhHUP.js} +2 -2
- package/dist/client/assets/{chunk-JQ64N6SF-DSFNH4bh.js → chunk-L3NEJ4N5-BmCVn4y-.js} +1 -1
- package/dist/client/assets/chunk-OSK3NFVY-CWHXAmfx.js +10 -0
- package/dist/client/assets/{chunk-P2QGCYS3-BRpqY32H.js → chunk-P2QGCYS3-Du8EtwOa.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-Cb4SlVZF.js → chunk-POPQ4Y6H-B5yJIrZE.js} +1 -1
- package/dist/client/assets/{chunk-PWAF6VOD-Cz8IwBB5.js → chunk-PWAF6VOD-B3gML4ps.js} +1 -1
- package/dist/client/assets/{chunk-RHFEMEQ7-CWY8cf4H.js → chunk-SHT3W25Y-BKaI8jZO.js} +5 -5
- package/dist/client/assets/{chunk-SVP7TREG-CyHOmcac.js → chunk-SVP7TREG-XlsB_ZMZ.js} +1 -1
- package/dist/client/assets/{chunk-LCL6LL3I-DmDkVukh.js → chunk-TICWLB2K-Cpp2z8yK.js} +4 -4
- package/dist/client/assets/chunk-TLUHSLCS-Yl7B0Vrz.js +1 -0
- package/dist/client/assets/chunk-ZNVOA63L-BmCQjhx-.js +40 -0
- package/dist/client/assets/{chunk-FLYJHZSQ-Be7lKF17.js → chunk-ZPMXAHWN-Dt0TxJa6.js} +2 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-BRw9vo8U.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-BRw9vo8U.js +1 -0
- package/dist/client/assets/comment-markdown-renderer-B9_vPc3F.js +1 -0
- package/dist/client/assets/comment-thread-store-NNHqRVsX.js +1 -0
- package/dist/client/assets/comment-threads-nJhK1yfc.js +4 -0
- package/dist/client/assets/cs-CZ-VUCGPRML-BfCoYAgj.js +7 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-CdTPi2yO.js → cynefinDiagram-5FMLGOSQ-BRoCEoZM.js} +1 -1
- package/dist/client/assets/da-DK-NNDP2IVP-DBw9ZNTR.js +2 -0
- package/dist/client/assets/{dagre-3AP2YEHR-5gtJtd0O.js → dagre-GXQ25YYZ-BSfKCfy7.js} +2 -2
- package/dist/client/assets/de-CH-I7RAVIZN-DYW18Vsr.js +11 -0
- package/dist/client/assets/de-DE-WBQ3DQLR-DYW18Vsr.js +11 -0
- package/dist/client/assets/deferred-collab-rBe4nuQ2.css +1 -0
- package/dist/client/assets/deferred-git-BHKtkFYi.css +1 -0
- package/dist/client/assets/deferred-preview-pe7Iwwx3.css +1 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-BudWz9WU.js → diagram-S7CK7UJ4-D7KaM9yj.js} +2 -2
- package/dist/client/assets/{diagram-UQ7AKVKN-3v4rbH-s.js → diagram-UQ7AKVKN-JevUZuYi.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-B3-U-Q2E.js +3 -0
- package/dist/client/assets/{diagram-VX7I27RA-C_-rj0sw.js → diagram-VX7I27RA-pSD4HMh1.js} +1 -1
- package/dist/client/assets/{diagram-Z3DM3KII-B4yxavgj.js → diagram-Z3DM3KII-D8r1_CIb.js} +1 -1
- package/dist/client/assets/{direct-engine-DdrQKpgq-CtKfQzCt.js → direct-engine-DdrQKpgq-B5zIoeQw.js} +1 -1
- package/dist/client/assets/dist-B3HdUPsK.js +1 -0
- package/dist/client/assets/{dist-Tw-Fxpeb.js → dist-B7XMN9AT.js} +1 -1
- package/dist/client/assets/dist-BIRygGYH.js +1 -0
- package/dist/client/assets/dist-BPyOlNLY.js +2 -0
- package/dist/client/assets/{dist-D5wCC32z.js → dist-BR81yxMt.js} +1 -1
- package/dist/client/assets/{dist-Bw3VIE_v.js → dist-B_B4XLmq.js} +1 -1
- package/dist/client/assets/dist-Bdy9ZRzd.js +9 -0
- package/dist/client/assets/{dist-netZOQtD.js → dist-Bfxzlnrf.js} +1 -1
- package/dist/client/assets/{dist-CietwTVS.js → dist-Bx3QkS-3.js} +1 -1
- package/dist/client/assets/{dist-mj2Ht75J.js → dist-By7ieqAf.js} +1 -1
- package/dist/client/assets/dist-ByhQbe-x.js +1 -0
- package/dist/client/assets/{dist-CdmKGRGr.js → dist-BzFSJM0U.js} +1 -1
- package/dist/client/assets/dist-C5NkYKAa.js +1 -0
- package/dist/client/assets/{dist-D3fehAZ2.js → dist-CELhfKzh.js} +1 -1
- package/dist/client/assets/dist-CEirJSxk.js +1 -0
- package/dist/client/assets/dist-CO0-4CuV.js +39 -0
- package/dist/client/assets/dist-CRnJ0D9h.js +1 -0
- package/dist/client/assets/{dist-DDUn5zTz.js → dist-CbDyXgCo.js} +1 -1
- package/dist/client/assets/{dist-BeajGMhO.js → dist-CqXVyYoH.js} +1 -1
- package/dist/client/assets/{dist-LQ4kDCKz.js → dist-CrWzIWEE.js} +1 -1
- package/dist/client/assets/dist-CyNrloSI.js +1 -0
- package/dist/client/assets/dist-D60_kdpQ.js +1 -0
- package/dist/client/assets/{dist-DuH3ZrHo.js → dist-DCpIH3-_.js} +1 -1
- package/dist/client/assets/{dist-BPHLJ09L.js → dist-DJAMplZI.js} +2 -2
- package/dist/client/assets/{dist-DGEbEfw4.js → dist-DVXzbeDx.js} +1 -1
- package/dist/client/assets/{dist-C5NgpdG5.js → dist-Drv_wZYC.js} +1 -1
- package/dist/client/assets/{dist-DVy5woUy.js → dist-EWJYvBK1.js} +1 -1
- package/dist/client/assets/dist-Hdhj3L3t.js +1 -0
- package/dist/client/assets/{dist-B_yQaEv_.js → dist-gRRhmB-2.js} +3 -3
- package/dist/client/assets/dist-kWb2d1CH.js +1 -0
- package/dist/client/assets/dist-kiD2GIsD.js +13 -0
- package/dist/client/assets/dist-l-56SowH.js +19 -0
- package/dist/client/assets/{dist-BK9QvQrc.js → dist-nxQErAaK.js} +2 -2
- package/dist/client/assets/dist-sLzRQQk7.js +1 -0
- package/dist/client/assets/{document-formatter-Dxl_a8XO.js → document-formatter-Qdiq9uJs.js} +1 -2
- package/dist/client/assets/drawioEditor-CHf1vtdQ.js +9 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-UJ0Fz5ci.js +1 -0
- package/dist/client/assets/editor-session-4Bn81iWm.js +14 -0
- package/dist/client/assets/el-GR-TYQHVGXW-Dx82YYAS.js +7 -0
- package/dist/client/assets/embedded-editor-base-jK221GC8.css +1 -0
- package/dist/client/assets/{embedpdf-DA4bA119-BPqZxwjc.js → embedpdf-DA4bA119-E8wZ11J2.js} +2 -3
- package/dist/client/assets/{embedpdf-BmE13ZZ0.js → embedpdf-LUXDBD3-.js} +1 -1
- package/dist/client/assets/{en-SJ2YIMFF-CJBL3nkq.js → en-2RFA324Y-BsuNJTcL.js} +1 -1
- package/dist/client/assets/{erDiagram-SSCWMZ5O-C-iy6VkX.js → erDiagram-RLTQ6QDP-CWrH1UJ9.js} +2 -2
- package/dist/client/assets/es-ES-JEUOREKJ-Rx0NUQDl.js +12 -0
- package/dist/client/assets/eu-ES-SO5DEEAN-CDYm-BcK.js +8 -0
- package/dist/client/assets/excalidraw-element-link-iA6zo0_f.js +7 -0
- package/dist/client/assets/{excalidraw-scene-BOben2gr.js → excalidraw-scene-6uROebca.js} +1 -1
- package/dist/client/assets/{excalidraw-editor-BbSbI80a.css → excalidrawEditor-DDE0n1Pk.css} +1 -1
- package/dist/client/assets/excalidrawEditor-WIuguTz7.js +9 -0
- package/dist/client/assets/export-page-AN-wI5p4.js +56 -0
- package/dist/client/assets/exportDocument-B7IagJhQ.css +1 -0
- package/dist/client/assets/exportDocument-B9xNKpQe.js +2 -0
- package/dist/client/assets/fa-IR-FIYUE2GQ-C865Nx3X.js +9 -0
- package/dist/client/assets/fi-FI-REAEF6HQ-BIpjJqIb.js +6 -0
- package/dist/client/assets/flowDiagram-HODETNUW-kb1lUSBo.js +1 -0
- package/dist/client/assets/fr-FR-SUCL7J6B-DGAKE8jH.js +12 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-DtKHAbez.js → ganttDiagram-EL5Y4UJY-BBNzDfaV.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-oue8fQ5o.js → gitGraphDiagram-WWUBYQGX-Csf0Dm_1.js} +1 -1
- package/dist/client/assets/gl-ES-KHCSOGVH-DWKh0CMu.js +6 -0
- package/dist/client/assets/he-IL-JYXVXV2Q-zqbcM-4g.js +9 -0
- package/dist/client/assets/hi-IN-BU52H3BO-CY8v6eG9.js +3 -0
- package/dist/client/assets/highlight-theme-CzNkO-IJ.js +1 -0
- package/dist/client/assets/hu-HU-OWADXDQ3-CEl6Udfh.js +3 -0
- package/dist/client/assets/id-ID-EOMR5R3I-CGQwUjoL.js +8 -0
- package/dist/client/assets/image-2QKV3NAF-BUbX0y5Y.js +1 -0
- package/dist/client/assets/index-BAmZnTFV.css +1 -0
- package/dist/client/assets/index-mWiw418b.js +1111 -0
- package/dist/client/assets/{infoDiagram-RXCK75RN-BMzo6KIn.js → infoDiagram-27XIBGKW-Bzy6kCbb.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BIM3h287.js → ishikawaDiagram-5VMMS53U-CRy9vIS5.js} +1 -1
- package/dist/client/assets/it-IT-FC2VTM3L-KTijNcUe.js +12 -0
- package/dist/client/assets/ja-JP-JBNTKYP4-BflWlGhw.js +12 -0
- package/dist/client/assets/{journeyDiagram-EYS64GPL-mF6Lh8O-.js → journeyDiagram-3NMN7TZE-D4ZR_s9J.js} +2 -2
- package/dist/client/assets/kaa-TC3VIB7V-B-xtZfy0.js +1 -0
- package/dist/client/assets/kab-KAB-UOUDSQKM-BmO0O4Y4.js +4 -0
- package/dist/client/assets/{kanban-definition-3QL26DDD-DLN2NyoR.js → kanban-definition-UXKFOSKX-CIDTmu5g.js} +4 -4
- package/dist/client/assets/kk-KZ-P5H2X7YS-CSQFB8IN.js +1 -0
- package/dist/client/assets/{km-KH-PCWDKPHP-DSmy5shj.js → km-KH-IHMV2US7-BxrjuEzr.js} +4 -4
- package/dist/client/assets/ko-KR-ZTMANIDF-BnNRXd5J.js +5 -0
- package/dist/client/assets/ku-TR-GPJTRB5G-BZM7f2aT.js +6 -0
- package/dist/client/assets/{line-BfTWJmgf.js → line-DSWLHgpx.js} +1 -1
- package/dist/client/assets/lobby-presence-Rdjnc0_0.js +1 -0
- package/dist/client/assets/lt-LT-V3XDOK3P-MVQBOHmF.js +3 -0
- package/dist/client/assets/lv-LV-DVQ3FADO-CrenwAhS.js +4 -0
- package/dist/client/assets/markdown-it-CocJWnjv.js +13 -0
- package/dist/client/assets/mermaid-parser.core-DrdLA3p0.js +3 -0
- package/dist/client/assets/mermaid.core-C_FK-7n4.js +1 -0
- package/dist/client/assets/mermaid.core-D0cMM4Rl.js +10 -0
- package/dist/client/assets/{mindmap-definition-FBJOCRG2-CRyHaHTk.js → mindmap-definition-YA3MSWOX-DO8NB9VH.js} +8 -8
- package/dist/client/assets/mr-IN-VZ6HH5FE-B-PHPglH.js +9 -0
- package/dist/client/assets/my-MM-XYKWHRK6-Be5sYp5q.js +1 -0
- package/dist/client/assets/nb-NO-UNO2GGZJ-BvSKGdja.js +8 -0
- package/dist/client/assets/nl-NL-76EFHT4P-C2yNx1Cj.js +13 -0
- package/dist/client/assets/nn-NO-CFKD7ABE-4NsqlDRP.js +4 -0
- package/dist/client/assets/oc-FR-YBJTCJ3J-B4OTQsWW.js +4 -0
- package/dist/client/assets/pa-IN-SNOXSMRV-CKj_sOG7.js +4 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DS6Ab21R.js +1 -0
- package/dist/client/assets/percentages-Q7USCRWZ-DWE6uvTs.js +1 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-B5OZPb88.js → pieDiagram-E7YTZNPT-BbFe6Tgs.js} +1 -1
- package/dist/client/assets/pl-PL-BSY6YFZ3-CFuzA6L0.js +12 -0
- package/dist/client/assets/preload-helper-CtT0-S4g.js +1 -0
- package/dist/client/assets/preview-render-compiler-C_7J7eia.js +43 -0
- package/dist/client/assets/preview-render-compiler-DzJ1KR_M.js +1 -0
- package/dist/client/assets/preview-render-worker-1DoIDllV.js +59 -0
- package/dist/client/assets/prod-D5TxmmoB.js +1 -0
- package/dist/client/assets/prod-pbFU4TaM.js +145 -0
- package/dist/client/assets/pt-BR-CZDV62R3-CkPMtyNx.js +10 -0
- package/dist/client/assets/pt-PT-JO57XJJW-CBSnfGtF.js +12 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-Drrw14YH.js → quadrantDiagram-AXDQQJYC-fJE7iAxt.js} +1 -1
- package/dist/client/assets/quick-switcher-De4PjZFC.css +1 -0
- package/dist/client/assets/quick-switcher-controller-CUajuy78.js +1 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-CUQKqbCK.js +1 -0
- package/dist/client/assets/{requirementDiagram-EFPCY7ZU-CRZG6mRB.js → requirementDiagram-BXWQKSXE-Balm0WW8.js} +2 -2
- package/dist/client/assets/ro-RO-UZ5ICYYN-BOuntc_r.js +12 -0
- package/dist/client/assets/room-DX7lIfnu.js +1 -0
- package/dist/client/assets/ru-RU-AN7JPREC-D-ow3SNR.js +10 -0
- package/dist/client/assets/runtime-config-BFVdhnJu.js +1 -0
- package/dist/client/assets/runtime-paths-Cn0snt_9.js +1 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-DvarEJpo.js → sankeyDiagram-P5KCCOFB-CcbMqrlQ.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-B4oWlb-w.js → sequenceDiagram-WJ2MYXX4-BL1j3Sn-.js} +6 -6
- package/dist/client/assets/si-LK-7CBLD6QQ-c91EepX0.js +1 -0
- package/dist/client/assets/sk-SK-SWR6DKBI-D5vFMIL6.js +7 -0
- package/dist/client/assets/sl-SI-JRML4FIH-D53L_0S2.js +6 -0
- package/dist/client/assets/{stateDiagram-HBIQ2CUA-qbHIIqRZ.js → stateDiagram-D77RDMKH-DNi924hh.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-C62JEwak.js +1 -0
- package/dist/client/assets/sv-SE-4ZPKFFXF-DT-G7RCI.js +12 -0
- package/dist/client/assets/{swimlanes-XN3QIQJK-xB6CtUGj.js → swimlanes-42K2YHIH-ColgjSH4.js} +1 -1
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-B9UZhEj4.js +8 -0
- package/dist/client/assets/ta-IN-V6NHHU6Z-D5jy7_AE.js +6 -0
- package/dist/client/assets/th-TH-P7CTMGDK-6sy0NO7K.js +1 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-Lj_yTNlY.js → timeline-definition-24CTP7MA-7pch5JAr.js} +1 -1
- package/dist/client/assets/tr-TR-GUFYG22B-ClVaf8h1.js +4 -0
- package/dist/client/assets/uk-UA-K6SV5NFQ-BLTTtyNB.js +6 -0
- package/dist/client/assets/uz-UZ-TVKTZO2G-Bm02Eg3D.js +1 -0
- package/dist/client/assets/vault-api-client-QjZ_T03l.js +7 -0
- package/dist/client/assets/vault-utils-Bct69Xw2.js +1 -0
- package/dist/client/assets/{vennDiagram-4TSXK5OY-BekRp5Y0.js → vennDiagram-4TSXK5OY-C5taziCX.js} +1 -1
- package/dist/client/assets/vi-VN-7FKFXJNO-CL3WPhmG.js +7 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-kdnV_Hdm.js → wardleyDiagram-VM6X3IG4-BbSlUwuM.js} +1 -1
- package/dist/client/assets/wiki-link-resolver-C2P_WmTV.js +1 -0
- package/dist/client/assets/{worker-engine-m0rlHn8R-S8mpn_O0.js → worker-engine-m0rlHn8R-eSDcDGEI.js} +1 -1
- package/dist/client/assets/workspace-change-CVA9dVmy.js +1 -0
- package/dist/client/assets/workspace-sync-client-D4nblH_2.js +1 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-DufGwNSB.js → xychartDiagram-S5SC5T6Z-D06X1arY.js} +1 -1
- package/dist/client/assets/yjs-B41tM6Sz.js +4 -0
- package/dist/client/assets/yjs-provider-reset-guard-R43MnLNc.js +1 -0
- package/dist/client/assets/zh-CN-AOKVLNNK-DGidDH2b.js +11 -0
- package/dist/client/assets/zh-HK-CDKPF5DC-CRcNR3rk.js +1 -0
- package/dist/client/assets/zh-TW-ZVGYESGW-C7Qji1y6.js +13 -0
- package/dist/client/drawio-editor.html +12 -5
- package/dist/client/excalidraw-editor.html +46 -5
- package/dist/client/export-document.html +6 -8
- package/dist/client/index.html +79 -43
- package/package.json +39 -36
- package/src/client/app/drawio-editor.html +3 -3
- package/src/client/app/excalidraw-editor.html +3 -3
- package/src/client/app/export-document.html +2 -2
- package/src/client/app/index.html +77 -37
- package/src/client/app/main-entry.js +13 -17
- package/src/client/application/app-shell/chat-feature.js +7 -22
- package/src/client/application/app-shell/comments-feature.js +6 -0
- package/src/client/application/app-shell/git-feature.js +23 -5
- package/src/client/application/app-shell/presence-feature.js +8 -25
- package/src/client/application/app-shell/ui-feature-shell.js +172 -149
- package/src/client/application/app-shell/ui-feature-sidebar.js +43 -7
- package/src/client/application/app-shell/ui-feature-tab-activity.js +27 -9
- package/src/client/application/app-shell/ui-feature-toolbar.js +16 -129
- package/src/client/application/app-shell-elements.js +9 -0
- package/src/client/application/highlight-theme.js +16 -0
- package/src/client/application/preview-render-compiler.js +44 -107
- package/src/client/application/preview-render-executor.js +0 -26
- package/src/client/application/preview-render-scheduler.js +8 -24
- package/src/client/application/preview-renderer.js +26 -9
- package/src/client/application/webmcp-diagram-renderer.js +47 -0
- package/src/client/application/workspace-coordinator.js +23 -22
- package/src/client/application/workspace-route-controller.js +7 -0
- package/src/client/bootstrap/collabmd-app-shell.js +148 -35
- package/src/client/bootstrap/lazy-collab-clients.js +90 -0
- package/src/client/domain/excalidraw-element-link.js +73 -0
- package/src/client/domain/excalidraw-scene-reconcile.js +5 -2
- package/src/client/domain/excalidraw-scene.js +21 -0
- package/src/client/domain/hash-routes.js +13 -0
- package/src/client/domain/highlight-runtime.js +47 -0
- package/src/client/domain/lobby-chat.js +2 -0
- package/src/client/domain/room.js +1 -5
- package/src/client/domain/runtime-paths.js +61 -7
- package/src/client/domain/vault-utils.js +11 -0
- package/src/client/excalidraw-editor.js +155 -14
- package/src/client/export/export-host.js +3 -1
- package/src/client/export/export-pipeline.js +4 -17
- package/src/client/infrastructure/agent-connection-api-client.js +23 -0
- package/src/client/infrastructure/auth-client.js +4 -15
- package/src/client/infrastructure/browser-preferences-port.js +16 -0
- package/src/client/infrastructure/editor-session.js +11 -0
- package/src/client/infrastructure/editor-view-adapter.js +56 -8
- package/src/client/infrastructure/excalidraw-room-client.js +89 -2
- package/src/client/infrastructure/git-api-client.js +39 -33
- package/src/client/infrastructure/hosted-api-client.js +60 -0
- package/src/client/infrastructure/lobby-presence.js +4 -7
- package/src/client/infrastructure/runtime-config.js +14 -2
- package/src/client/infrastructure/tab-activity-lock.js +2 -5
- package/src/client/infrastructure/vault-api-client.js +33 -26
- package/src/client/infrastructure/webmcp-tool-registry.js +297 -0
- package/src/client/infrastructure/workspace-sync-client.js +6 -4
- package/src/client/presentation/agent-connection-controller.js +255 -0
- package/src/client/presentation/backlinks-panel.js +3 -0
- package/src/client/presentation/bases-preview-controller.js +27 -18
- package/src/client/presentation/comment-markdown-renderer.js +2 -14
- package/src/client/presentation/comment-overview-controller.js +1 -2
- package/src/client/presentation/comment-ui/comment-ui-card.js +4 -2
- package/src/client/presentation/comment-ui/comment-ui-shared.js +5 -2
- package/src/client/presentation/create-menu-presenter.js +19 -16
- package/src/client/presentation/excalidraw-embed-controller.js +164 -4
- package/src/client/presentation/file-explorer-controller.js +3 -0
- package/src/client/presentation/file-explorer-view.js +338 -182
- package/src/client/presentation/file-history-view-controller.js +13 -11
- package/src/client/presentation/git-diff-view-controller.js +35 -43
- package/src/client/presentation/git-panel-controller.js +78 -28
- package/src/client/presentation/hosted-workspace-gate-controller.js +180 -0
- package/src/client/presentation/image-lightbox-controller.js +20 -16
- package/src/client/presentation/layout-controller.js +13 -2
- package/src/client/presentation/quick-switcher-controller.js +20 -78
- package/src/client/presentation/quick-switcher-text-search.js +10 -14
- package/src/client/presentation/team-settings-controller.js +228 -0
- package/src/client/styles/components/navigation.css +1 -2
- package/src/client/styles/deferred-collab.css +5 -0
- package/src/client/styles/deferred-git.css +7 -0
- package/src/client/styles/deferred-preview.css +6 -0
- package/src/client/styles/features/agent-connection.css +202 -0
- package/src/client/styles/features/collaboration-chat.css +8 -1
- package/src/client/styles/features/collaboration-dialogs.css +16 -1
- package/src/client/styles/features/collaboration-presence.css +17 -4
- package/src/client/styles/features/diagram-preview.css +0 -15
- package/src/client/styles/features/diff-toolbar.css +1 -1
- package/src/client/styles/features/media-lightbox.css +12 -3
- package/src/client/styles/features/outline.css +4 -2
- package/src/client/styles/features/preview-markdown.css +25 -11
- package/src/client/styles/features/quick-switcher.css +20 -11
- package/src/client/styles/features/team-settings.css +162 -0
- package/src/client/styles/foundation/themes.css +2 -0
- package/src/client/styles/foundation/tokens.css +2 -2
- package/src/client/styles/layout/editor-page.css +25 -24
- package/src/client/styles/layout/overlays.css +16 -0
- package/src/client/styles/layout/responsive.css +7 -25
- package/src/client/styles/layout/shell.css +21 -1
- package/src/client/styles/layout/sidebar.css +99 -7
- package/src/client/styles/primitives/controls.css +21 -54
- package/src/client/styles/style.css +4 -19
- package/src/domain/agent-tool-definitions.js +872 -0
- package/src/domain/collabmd-content-capabilities.js +149 -0
- package/src/domain/collaboration-protocol.js +2 -0
- package/src/domain/comment-threads.js +3 -5
- package/src/domain/diagram-source.js +50 -0
- package/src/domain/editable-content-revision.js +10 -0
- package/src/domain/editable-text.js +3 -0
- package/src/domain/exact-text-edits.js +69 -0
- package/src/domain/excalidraw-agent-scene.js +624 -0
- package/src/domain/excalidraw-agent-verification.js +554 -0
- package/src/domain/excalidraw-room-codec.js +13 -6
- package/src/domain/literal-text-search.js +13 -0
- package/src/domain/video-embed.js +76 -0
- package/src/server/application/agent-connection-service.js +178 -0
- package/src/server/application/agent-content-service.js +841 -0
- package/src/server/application/workspace-reconciliation.js +5 -7
- package/src/server/config/env.js +147 -6
- package/src/server/create-app-server.js +47 -141
- package/src/server/domain/bases/base-query-service.js +1 -5
- package/src/server/domain/collaboration/collaboration-room.js +121 -25
- package/src/server/domain/collaboration/protocol.js +4 -0
- package/src/server/domain/hosted-workspace.js +31 -1
- package/src/server/domain/markdown-reference-extractor.js +15 -1
- package/src/server/domain/ripgrep-search-service.js +68 -21
- package/src/server/infrastructure/git/git-service.js +19 -1
- package/src/server/infrastructure/git/history-service.js +1 -1
- package/src/server/infrastructure/git/local-exclude.js +37 -0
- package/src/server/infrastructure/git/parsers.js +19 -17
- package/src/server/infrastructure/git/path-utils.js +0 -16
- package/src/server/infrastructure/git/status-service.js +1 -1
- package/src/server/infrastructure/git/untracked-files.js +12 -21
- package/src/server/infrastructure/http/create-agent-api-handler.js +171 -0
- package/src/server/infrastructure/http/create-git-api-command-handler.js +32 -0
- package/src/server/infrastructure/http/create-hosted-api-handler.js +5 -0
- package/src/server/infrastructure/http/create-request-handler.js +123 -26
- package/src/server/infrastructure/http/create-static-handler.js +9 -0
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +15 -2
- package/src/server/infrastructure/mcp/create-agent-mcp-handler.js +200 -0
- package/src/server/infrastructure/persistence/agent-connection-store.js +120 -0
- package/src/server/infrastructure/persistence/pull-backup-store.js +2 -27
- package/src/server/infrastructure/persistence/sidecar-store.js +12 -5
- package/src/server/infrastructure/persistence/vault-file-store.js +11 -5
- package/src/server/infrastructure/websocket/attach-collaboration-gateway.js +48 -22
- package/src/server/shared/agent-tool-image.js +22 -0
- package/src/server/shared/agent-tool-rate-limiter.js +27 -0
- package/src/server/startup/git-remote-bootstrap.js +58 -79
- package/src/server/vault-registry.js +251 -0
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BPH4FJkv.js +0 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-BNDLzJ7L.js +0 -1
- package/dist/client/assets/ar-SA-PQUY64WN-xjXgbW6d.js +0 -10
- package/dist/client/assets/az-AZ-OXJXL76K-4JkO4Pca.js +0 -1
- package/dist/client/assets/base-CaIEJUF9.css +0 -1
- package/dist/client/assets/bg-BG-W2GKIJDF-DnkH_o81.js +0 -5
- package/dist/client/assets/bn-BD-TGL7M4PJ-CG4JkmtP.js +0 -3
- package/dist/client/assets/bn-IN-BKETKYEH-CG4JkmtP.js +0 -3
- package/dist/client/assets/browser-utils--H_DkyEF.js +0 -1
- package/dist/client/assets/ca-ES-LD5SCRVV-U6_TVMX9.js +0 -8
- package/dist/client/assets/channel-CaoKA_We.js +0 -1
- package/dist/client/assets/chunk-7XWMRXBY-CfMzEq80.js +0 -1
- package/dist/client/assets/chunk-CKBBP62Z-DG26UiBv.js +0 -2
- package/dist/client/assets/chunk-DSNCTWBM-8xkug7fQ.js +0 -2
- package/dist/client/assets/chunk-DU6HZSFF-COXDzJK1.js +0 -127
- package/dist/client/assets/chunk-R7TYR2AO-CTd0Yj98.js +0 -10
- package/dist/client/assets/chunk-RM4UPSZO-CWRwxNWJ.js +0 -41
- package/dist/client/assets/classDiagram-DTDB5LWJ-7fEmn0zV.js +0 -1
- package/dist/client/assets/classDiagram-v2-JRS7N3AN-7fEmn0zV.js +0 -1
- package/dist/client/assets/comment-thread-store-CdcwrObc.js +0 -1
- package/dist/client/assets/comment-threads-9J6Em-_y.js +0 -4
- package/dist/client/assets/comment-ui-shared-DuoyznXW.js +0 -7
- package/dist/client/assets/cs-CZ-OFPU5DBV-BmFAIhqX.js +0 -7
- package/dist/client/assets/da-DK-FRDJFYWF-H387Jw8B.js +0 -2
- package/dist/client/assets/de-CH-ZG7H3QK3-C_groygo.js +0 -11
- package/dist/client/assets/de-DE-SIJYH4IH-C_groygo.js +0 -11
- package/dist/client/assets/diagram-VSXAHHWV-CQRVEZR7.js +0 -3
- package/dist/client/assets/dist-73RPdcyU.js +0 -1
- package/dist/client/assets/dist-BJ1bJs33.js +0 -1
- package/dist/client/assets/dist-ByrG2qBA.js +0 -1
- package/dist/client/assets/dist-CH-sQu3r.js +0 -1
- package/dist/client/assets/dist-CKS_-are.js +0 -1
- package/dist/client/assets/dist-D37Hyu3h.js +0 -9
- package/dist/client/assets/dist-DZAAWTG-.js +0 -1
- package/dist/client/assets/dist-Dir5dDKZ.js +0 -1
- package/dist/client/assets/dist-Dl_tpDSr.js +0 -1
- package/dist/client/assets/dist-DutPuFmC.js +0 -1
- package/dist/client/assets/dist-RKBTaQMb.js +0 -13
- package/dist/client/assets/dist-eBx8q6Sy.js +0 -1
- package/dist/client/assets/drawio-editor-BVaNNtYp.js +0 -9
- package/dist/client/assets/drawioEditor-BkIBlXx0.js +0 -2
- package/dist/client/assets/ebnfDiagram-PWID7BFC-OXa8VEp1.js +0 -1
- package/dist/client/assets/editor-session-DMyVdHLj.js +0 -54
- package/dist/client/assets/el-GR-IEE2CGI2-BkT6YT54.js +0 -7
- package/dist/client/assets/embedded-editor-base-B3l6Xy65.css +0 -1
- package/dist/client/assets/es-ES-TVVPWKV5-CpPKJXTM.js +0 -12
- package/dist/client/assets/eu-ES-CGBMFQDT-Bu3N2493.js +0 -8
- package/dist/client/assets/excalidraw-editor-BjYaNEMY.js +0 -9
- package/dist/client/assets/excalidraw-mermaid-stub-BNckbX2n.js +0 -1
- package/dist/client/assets/excalidraw-mermaid-stub-DE5FTiZB.js +0 -1
- package/dist/client/assets/excalidrawEditor-ChqF_d82.js +0 -2
- package/dist/client/assets/export-page-Dyu0XCbu.js +0 -57
- package/dist/client/assets/exportDocument-CJBx4Xjx.css +0 -1
- package/dist/client/assets/exportDocument-Dgvfa2Sd.js +0 -2
- package/dist/client/assets/fa-IR-IE6XAPR4-BEvLCORD.js +0 -9
- package/dist/client/assets/fi-FI-P7TKNHRM-DI0q8iSX.js +0 -6
- package/dist/client/assets/file-icon-svg-Y_kpF957.js +0 -1
- package/dist/client/assets/flowDiagram-A5DVABFB-CiW1eN8C.js +0 -1
- package/dist/client/assets/fr-FR-QI2XZNT7-y8kXd8LA.js +0 -12
- package/dist/client/assets/gl-ES-TLYCNOZZ-Br-Fhff-.js +0 -6
- package/dist/client/assets/he-IL-ZX43XLGP-qKQq6V9X.js +0 -9
- package/dist/client/assets/hi-IN-UTYRMTUF-DOUcwrDO.js +0 -3
- package/dist/client/assets/hu-HU-AJOSEBW6-FqTyvHlD.js +0 -3
- package/dist/client/assets/id-ID-ETLTVG6C-CQqh3CLS.js +0 -8
- package/dist/client/assets/image-ZVKINSPA-0zXSnE7M.js +0 -1
- package/dist/client/assets/index-CSNIMyOP.css +0 -1
- package/dist/client/assets/index-DG3N2Ps-.js +0 -2
- package/dist/client/assets/it-IT-B4B6TP6L-V-yK3SZz.js +0 -12
- package/dist/client/assets/ja-JP-IYKVURR5-BQKBXRpX.js +0 -12
- package/dist/client/assets/kaa-SE2BUIKX-CZ5kfwPg.js +0 -1
- package/dist/client/assets/kab-KAB-Y3GLKXLR-Do7GWfuN.js +0 -4
- package/dist/client/assets/kk-KZ-ABWUFVOH-BpqVciQz.js +0 -1
- package/dist/client/assets/ko-KR-7JQDXKGM-N42lep78.js +0 -5
- package/dist/client/assets/ku-TR-NAH2Q5B7-K8LLl9fk.js +0 -6
- package/dist/client/assets/lt-LT-VQFYRSNQ-BmOd0ALn.js +0 -3
- package/dist/client/assets/lv-LV-T62VSYUM-B22WdPhp.js +0 -4
- package/dist/client/assets/main-D0wCxpVn.js +0 -903
- package/dist/client/assets/mermaid-parser.core-Bl0efOMt.js +0 -4
- package/dist/client/assets/mermaid.core-BJRLUQZE.js +0 -11
- package/dist/client/assets/modulepreload-polyfill-P2Xu9kJm.js +0 -1
- package/dist/client/assets/mr-IN-V4FHLCJE-XX069tpm.js +0 -9
- package/dist/client/assets/my-MM-E3SQ6E54-cst_-5SB.js +0 -1
- package/dist/client/assets/nb-NO-MLNOFN5H-Bu2URWko.js +0 -8
- package/dist/client/assets/nl-NL-D5L3ZV4M-BqrV0btt.js +0 -13
- package/dist/client/assets/nn-NO-NNHDGPKB-DK-xZaWM.js +0 -4
- package/dist/client/assets/oc-FR-DWCRF55G-BZ5Po5R6.js +0 -4
- package/dist/client/assets/pa-IN-3JSAY44M-BZQSjKrS.js +0 -4
- package/dist/client/assets/pegDiagram-XKGWAZYB-B31fKPR2.js +0 -1
- package/dist/client/assets/percentages-ETZPVQEE-DFxFqXgH.js +0 -1
- package/dist/client/assets/pl-PL-ACURYKP3-qcEOSfCk.js +0 -12
- package/dist/client/assets/preload-helper-HclGiUj8.js +0 -1
- package/dist/client/assets/preview-render-compiler-CrJIooVD.js +0 -35
- package/dist/client/assets/preview-render-compiler-O0JxBVNF.js +0 -1
- package/dist/client/assets/preview-render-profile-B4RWYWHt.js +0 -1
- package/dist/client/assets/preview-render-worker-_QTxqKvP.js +0 -60
- package/dist/client/assets/prod-BiYPMR1i.js +0 -177
- package/dist/client/assets/prod-VxdGZ5Ly.js +0 -1
- package/dist/client/assets/pt-BR-LOX7MLGD-DLueHSyZ.js +0 -10
- package/dist/client/assets/pt-PT-CZ2U2RFQ-BJ-GAEm6.js +0 -12
- package/dist/client/assets/quick-switcher-controller-CaEjEtq_.js +0 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BPifP0MB.js +0 -1
- package/dist/client/assets/ro-RO-2HECL2X6-CJUvKAf0.js +0 -12
- package/dist/client/assets/ru-RU-HAYNXO46-BWSlvTrt.js +0 -10
- package/dist/client/assets/runtime-config-BLrEKVO1.js +0 -1
- package/dist/client/assets/si-LK-W5KNS4H6-DGGCsn7k.js +0 -1
- package/dist/client/assets/sk-SK-7K2CFGDV-CY4uTYgQ.js +0 -7
- package/dist/client/assets/sl-SI-OXV2QZWW-2-weqaBY.js +0 -6
- package/dist/client/assets/stateDiagram-v2-4QOOHH4V-B--gjrit.js +0 -1
- package/dist/client/assets/sv-SE-JTOBZRGL-9-IUtVkO.js +0 -12
- package/dist/client/assets/swimlanesDiagram-VK2B7HYN-DO8XNXEg.js +0 -8
- package/dist/client/assets/ta-IN-KFAVKXGT-gHO6Q_DH.js +0 -6
- package/dist/client/assets/th-TH-VDMSCPDL-BvJuw6PJ.js +0 -1
- package/dist/client/assets/tr-TR-CEZ6GX45-CG6UU3Su.js +0 -4
- package/dist/client/assets/uk-UA-Q3H3OXQC-CSuIg_DY.js +0 -6
- package/dist/client/assets/uz-UZ-NGCSWWPX-mom7rxSP.js +0 -1
- package/dist/client/assets/vault-api-client-BkwdFjx0.js +0 -6
- package/dist/client/assets/vault-utils-DvoSftJT.js +0 -22
- package/dist/client/assets/vi-VN-P3NDEVPS-BB0Fu9ck.js +0 -7
- package/dist/client/assets/yjs-provider-reset-guard-DE0vINDP.js +0 -4
- package/dist/client/assets/zh-CN-SS3O57GA-Bj8wsiMe.js +0 -11
- package/dist/client/assets/zh-HK-LWJT3VCF-DOTquTCh.js +0 -1
- package/dist/client/assets/zh-TW-VJXC72RT-B48PRo-l.js +0 -13
- package/src/client/app/drawio-editor-entry.js +0 -1
- package/src/client/app/excalidraw-editor-entry.js +0 -1
- package/src/client/excalidraw-mermaid-stub.js +0 -7
- package/src/client/main.js +0 -16
- /package/dist/client/assets/{vault-api-client-C3mlS_4N.css → auth-gate-C3mlS_4N.css} +0 -0
- /package/dist/client/assets/{drawio-editor-UQQ8XHou.css → drawioEditor-UQQ8XHou.css} +0 -0
- /package/dist/client/assets/{base-BYODPHdS.js → github.min-DBihDoic.js} +0 -0
- /package/dist/client/assets/{sizeCapture-X5ZJPWSS-B0uUizjq.js → sizeCapture-INFHLROL-B0uUizjq.js} +0 -0
|
@@ -544,12 +544,14 @@ export class FileHistoryViewController {
|
|
|
544
544
|
this.actionsDivider?.classList.add('hidden');
|
|
545
545
|
this.editorActionsGroup?.classList.remove('hidden');
|
|
546
546
|
this.modeButtons.forEach((button) => {
|
|
547
|
+
const active = button.getAttribute('data-diff-mode') === this.diffMode;
|
|
547
548
|
button.classList.toggle('hidden', !hasSelection);
|
|
548
|
-
button.classList.toggle('active',
|
|
549
|
+
button.classList.toggle('active', active);
|
|
550
|
+
button.setAttribute?.('aria-pressed', String(active));
|
|
549
551
|
});
|
|
550
552
|
this.openEditorButton?.toggleAttribute('disabled', !this.currentFilePath);
|
|
551
553
|
if (this.openEditorButton) {
|
|
552
|
-
this.openEditorButton.textContent = 'Open
|
|
554
|
+
this.openEditorButton.textContent = 'Open file';
|
|
553
555
|
}
|
|
554
556
|
this.primaryActionButton?.toggleAttribute('disabled', true);
|
|
555
557
|
this.commitButton?.toggleAttribute('disabled', true);
|
|
@@ -562,13 +564,13 @@ export class FileHistoryViewController {
|
|
|
562
564
|
this.page?.classList.remove('hidden');
|
|
563
565
|
if (this.content) {
|
|
564
566
|
this.content.classList.add('diff-content--history');
|
|
565
|
-
this.content.innerHTML = '<div class="git-panel-empty">Loading file history
|
|
567
|
+
this.content.innerHTML = '<div class="git-panel-empty" role="status" aria-live="polite">Loading file history…</div>';
|
|
566
568
|
}
|
|
567
569
|
this.historyListElement = null;
|
|
568
570
|
this.syncToolbar();
|
|
569
571
|
}
|
|
570
572
|
|
|
571
|
-
renderEmpty(message) {
|
|
573
|
+
renderEmpty(message, { alert = false } = {}) {
|
|
572
574
|
if (!this.isActive) {
|
|
573
575
|
return;
|
|
574
576
|
}
|
|
@@ -576,7 +578,7 @@ export class FileHistoryViewController {
|
|
|
576
578
|
if (this.content) {
|
|
577
579
|
this.content.classList.add('diff-content--history');
|
|
578
580
|
// pi-lens-ignore: no-inner-html-js
|
|
579
|
-
this.content.innerHTML = `<div class="git-panel-empty">${escapeHtml(message)}</div>`;
|
|
581
|
+
this.content.innerHTML = `<div class="git-panel-empty"${alert ? ' role="alert"' : ''}>${escapeHtml(message)}</div>`;
|
|
580
582
|
}
|
|
581
583
|
this.historyListElement = null;
|
|
582
584
|
this.syncToolbar();
|
|
@@ -691,7 +693,7 @@ export class FileHistoryViewController {
|
|
|
691
693
|
type="button"
|
|
692
694
|
data-file-history-open-selected-diff
|
|
693
695
|
>
|
|
694
|
-
Open
|
|
696
|
+
Open standalone diff
|
|
695
697
|
</button>
|
|
696
698
|
${entry.type === 'commit' ? `
|
|
697
699
|
<button
|
|
@@ -699,7 +701,7 @@ export class FileHistoryViewController {
|
|
|
699
701
|
type="button"
|
|
700
702
|
data-file-history-open-selected-preview
|
|
701
703
|
>
|
|
702
|
-
Preview
|
|
704
|
+
Preview file
|
|
703
705
|
</button>
|
|
704
706
|
` : ''}
|
|
705
707
|
</div>
|
|
@@ -719,7 +721,7 @@ export class FileHistoryViewController {
|
|
|
719
721
|
<div class="diff-file-header">
|
|
720
722
|
<span class="diff-file-path">${escapeHtml(entry.pathAtCommit || this.currentFilePath || '')}</span>
|
|
721
723
|
</div>
|
|
722
|
-
<div class="diff-empty-state">Loading diff
|
|
724
|
+
<div class="diff-empty-state" role="status" aria-live="polite">Loading diff…</div>
|
|
723
725
|
</section>
|
|
724
726
|
`;
|
|
725
727
|
}
|
|
@@ -728,7 +730,7 @@ export class FileHistoryViewController {
|
|
|
728
730
|
return `
|
|
729
731
|
<section class="diff-file-block file-history-diff-block">
|
|
730
732
|
${this.renderDiffFileHeader({ path: entry.pathAtCommit || this.currentFilePath || '' })}
|
|
731
|
-
<div class="diff-empty-state">${escapeHtml(selection.error)}</div>
|
|
733
|
+
<div class="diff-empty-state" role="alert">${escapeHtml(selection.error)}</div>
|
|
732
734
|
</section>
|
|
733
735
|
`;
|
|
734
736
|
}
|
|
@@ -764,7 +766,7 @@ export class FileHistoryViewController {
|
|
|
764
766
|
|
|
765
767
|
const hasRows = Boolean(this.localChanges) || (this.history.commits?.length ?? 0) > 0;
|
|
766
768
|
if (!hasRows) {
|
|
767
|
-
this.renderEmpty(this.history.error || 'No history found for this file.');
|
|
769
|
+
this.renderEmpty(this.history.error || 'No history found for this file.', { alert: Boolean(this.history.error) });
|
|
768
770
|
return;
|
|
769
771
|
}
|
|
770
772
|
|
|
@@ -794,7 +796,7 @@ export class FileHistoryViewController {
|
|
|
794
796
|
data-file-history-load-more
|
|
795
797
|
${this.history.loadingMore ? 'disabled' : ''}
|
|
796
798
|
>
|
|
797
|
-
${this.history.loadingMore ? 'Loading
|
|
799
|
+
${this.history.loadingMore ? 'Loading…' : 'Load more'}
|
|
798
800
|
</button>
|
|
799
801
|
</div>
|
|
800
802
|
` : ''}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createExcalidrawExportOptions } from '../domain/excalidraw-scene.js';
|
|
1
2
|
import { escapeHtml } from '../domain/vault-utils.js';
|
|
2
3
|
import { commitButtonLabel } from '../domain/git-labels.js';
|
|
3
4
|
import { getVaultPathLeaf, getVaultPathParent } from '../domain/vault-paths.js';
|
|
@@ -200,29 +201,25 @@ function getDrawioSourcePair(detail = {}) {
|
|
|
200
201
|
};
|
|
201
202
|
}
|
|
202
203
|
|
|
203
|
-
function decodeXmlAttribute(value) {
|
|
204
|
-
return String(value ?? '')
|
|
205
|
-
.replace(/"/gu, '"')
|
|
206
|
-
.replace(/'/gu, "'")
|
|
207
|
-
.replace(/&/gu, '&')
|
|
208
|
-
.replace(/</gu, '<')
|
|
209
|
-
.replace(/>/gu, '>');
|
|
210
|
-
}
|
|
211
|
-
|
|
212
204
|
function getDrawioCellMap(source) {
|
|
213
205
|
const cells = new Map();
|
|
214
|
-
|
|
215
|
-
|
|
206
|
+
if (typeof DOMParser === 'undefined' || typeof XMLSerializer === 'undefined') {
|
|
207
|
+
return cells;
|
|
208
|
+
}
|
|
216
209
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
210
|
+
const documentNode = new DOMParser().parseFromString(String(source ?? ''), 'application/xml');
|
|
211
|
+
if (documentNode.querySelector('parsererror')) {
|
|
212
|
+
return cells;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const serializer = new XMLSerializer();
|
|
216
|
+
for (const cell of documentNode.getElementsByTagName('mxCell')) {
|
|
217
|
+
const id = cell.getAttribute('id');
|
|
220
218
|
if (!id || id === '0' || id === '1') {
|
|
221
219
|
continue;
|
|
222
220
|
}
|
|
223
221
|
|
|
224
|
-
|
|
225
|
-
cells.set(id, signature);
|
|
222
|
+
cells.set(id, serializer.serializeToString(cell).replace(/\s+/gu, ' ').trim());
|
|
226
223
|
}
|
|
227
224
|
|
|
228
225
|
return cells;
|
|
@@ -647,7 +644,7 @@ export class GitDiffViewController {
|
|
|
647
644
|
this.excalidrawPreviewPayloads.clear();
|
|
648
645
|
this.drawioPreviewPayloads.clear();
|
|
649
646
|
this.requestScope = scope;
|
|
650
|
-
this.renderLoading('Loading diff summary
|
|
647
|
+
this.renderLoading('Loading diff summary…');
|
|
651
648
|
|
|
652
649
|
try {
|
|
653
650
|
const data = await this.gitApiClient.readDiff({
|
|
@@ -677,7 +674,7 @@ export class GitDiffViewController {
|
|
|
677
674
|
source: 'workspace',
|
|
678
675
|
summary: { additions: 0, deletions: 0, filesChanged: 0 },
|
|
679
676
|
};
|
|
680
|
-
this.renderEmpty('Failed to load git diff');
|
|
677
|
+
this.renderEmpty('Failed to load git diff', { alert: true });
|
|
681
678
|
return this.data;
|
|
682
679
|
}
|
|
683
680
|
}
|
|
@@ -700,7 +697,7 @@ export class GitDiffViewController {
|
|
|
700
697
|
this.excalidrawPreviewPayloads.clear();
|
|
701
698
|
this.drawioPreviewPayloads.clear();
|
|
702
699
|
this.requestScope = 'all';
|
|
703
|
-
this.renderLoading('Loading commit summary
|
|
700
|
+
this.renderLoading('Loading commit summary…');
|
|
704
701
|
|
|
705
702
|
try {
|
|
706
703
|
const data = await this.gitApiClient.readCommit({
|
|
@@ -741,7 +738,7 @@ export class GitDiffViewController {
|
|
|
741
738
|
summary: { additions: 0, deletions: 0, filesChanged: 0 },
|
|
742
739
|
};
|
|
743
740
|
this.commitMeta = null;
|
|
744
|
-
this.renderEmpty('Failed to load git commit');
|
|
741
|
+
this.renderEmpty('Failed to load git commit', { alert: true });
|
|
745
742
|
return this.data;
|
|
746
743
|
}
|
|
747
744
|
}
|
|
@@ -790,27 +787,27 @@ export class GitDiffViewController {
|
|
|
790
787
|
void this.loadCurrentFile();
|
|
791
788
|
}
|
|
792
789
|
|
|
793
|
-
renderLoading(message = 'Loading git diff
|
|
790
|
+
renderLoading(message = 'Loading git diff…') {
|
|
794
791
|
if (!this.isActive) {
|
|
795
792
|
return;
|
|
796
793
|
}
|
|
797
794
|
this.page?.classList.remove('hidden');
|
|
798
795
|
if (this.content) {
|
|
799
796
|
// pi-lens-ignore: ast-grep:no-inner-html-js
|
|
800
|
-
this.content.innerHTML = `<div class="diff-empty-state">${escapeHtml(message)}</div>`;
|
|
797
|
+
this.content.innerHTML = `<div class="diff-empty-state" role="status" aria-live="polite">${escapeHtml(message)}</div>`;
|
|
801
798
|
}
|
|
802
799
|
this.data = null;
|
|
803
800
|
this.syncToolbar();
|
|
804
801
|
}
|
|
805
802
|
|
|
806
|
-
renderEmpty(message) {
|
|
803
|
+
renderEmpty(message, { alert = false } = {}) {
|
|
807
804
|
if (!this.isActive) {
|
|
808
805
|
return;
|
|
809
806
|
}
|
|
810
807
|
this.page?.classList.remove('hidden');
|
|
811
808
|
if (this.content) {
|
|
812
809
|
// pi-lens-ignore: ast-grep:no-inner-html-js
|
|
813
|
-
this.content.innerHTML = `<div class="diff-empty-state">${escapeHtml(message)}</div>`;
|
|
810
|
+
this.content.innerHTML = `<div class="diff-empty-state"${alert ? ' role="alert"' : ''}>${escapeHtml(message)}</div>`;
|
|
814
811
|
}
|
|
815
812
|
this.syncToolbar();
|
|
816
813
|
}
|
|
@@ -1194,16 +1191,7 @@ export class GitDiffViewController {
|
|
|
1194
1191
|
}
|
|
1195
1192
|
|
|
1196
1193
|
try {
|
|
1197
|
-
const svg = await exportToSvg(
|
|
1198
|
-
appState: {
|
|
1199
|
-
exportBackground: true,
|
|
1200
|
-
exportWithDarkMode: false,
|
|
1201
|
-
viewBackgroundColor: scene.appState?.viewBackgroundColor || '#ffffff',
|
|
1202
|
-
},
|
|
1203
|
-
elements: getVisibleSceneElements(scene),
|
|
1204
|
-
exportPadding: 24,
|
|
1205
|
-
files: scene.files || null,
|
|
1206
|
-
});
|
|
1194
|
+
const svg = await exportToSvg(createExcalidrawExportOptions(scene));
|
|
1207
1195
|
preview.replaceChildren(svg);
|
|
1208
1196
|
preview.classList.add('is-ready');
|
|
1209
1197
|
} catch (error) {
|
|
@@ -1345,7 +1333,7 @@ export class GitDiffViewController {
|
|
|
1345
1333
|
return `
|
|
1346
1334
|
<section class="diff-file-block">
|
|
1347
1335
|
${this.renderFileHeader(currentFile)}
|
|
1348
|
-
<div class="diff-empty-state">Loading file diff
|
|
1336
|
+
<div class="diff-empty-state" role="status" aria-live="polite">Loading file diff…</div>
|
|
1349
1337
|
</section>
|
|
1350
1338
|
`;
|
|
1351
1339
|
}
|
|
@@ -1355,7 +1343,7 @@ export class GitDiffViewController {
|
|
|
1355
1343
|
return `
|
|
1356
1344
|
<section class="diff-file-block">
|
|
1357
1345
|
${this.renderFileHeader(currentFile)}
|
|
1358
|
-
<div class="diff-empty-state">${escapeHtml(errorMessage)}</div>
|
|
1346
|
+
<div class="diff-empty-state" role="alert">${escapeHtml(errorMessage)}</div>
|
|
1359
1347
|
</section>
|
|
1360
1348
|
`;
|
|
1361
1349
|
}
|
|
@@ -1435,9 +1423,9 @@ export class GitDiffViewController {
|
|
|
1435
1423
|
const bodyMarkup = isCollapsed
|
|
1436
1424
|
? ''
|
|
1437
1425
|
: isLoading
|
|
1438
|
-
? '<div class="diff-empty-state">Loading file diff
|
|
1426
|
+
? '<div class="diff-empty-state" role="status" aria-live="polite">Loading file diff…</div>'
|
|
1439
1427
|
: errorMessage
|
|
1440
|
-
? `<div class="diff-empty-state">${escapeHtml(errorMessage)}</div>`
|
|
1428
|
+
? `<div class="diff-empty-state" role="alert">${escapeHtml(errorMessage)}</div>`
|
|
1441
1429
|
: this.renderDiffDetail(detail, index, { includeHeader: false });
|
|
1442
1430
|
|
|
1443
1431
|
return `
|
|
@@ -1877,11 +1865,15 @@ export class GitDiffViewController {
|
|
|
1877
1865
|
}
|
|
1878
1866
|
|
|
1879
1867
|
this.modeButtons.forEach((button) => {
|
|
1868
|
+
const active = button.getAttribute('data-diff-mode') === this.mode;
|
|
1880
1869
|
button.classList.remove('hidden');
|
|
1881
|
-
button.classList.toggle('active',
|
|
1870
|
+
button.classList.toggle('active', active);
|
|
1871
|
+
button.setAttribute?.('aria-pressed', String(active));
|
|
1882
1872
|
});
|
|
1883
1873
|
this.layoutButtons.forEach((button) => {
|
|
1884
|
-
|
|
1874
|
+
const active = button.getAttribute('data-diff-layout') === this.layoutMode;
|
|
1875
|
+
button.classList.toggle('active', active);
|
|
1876
|
+
button.setAttribute?.('aria-pressed', String(active));
|
|
1885
1877
|
});
|
|
1886
1878
|
|
|
1887
1879
|
const hasCurrentFile = Boolean(this.getCurrentFile()?.path);
|
|
@@ -1906,8 +1898,8 @@ export class GitDiffViewController {
|
|
|
1906
1898
|
this.primaryActionButton.classList.toggle('ui-button--primary', emphasizeInclude);
|
|
1907
1899
|
this.primaryActionButton.classList.toggle('ui-button--secondary', !emphasizeInclude);
|
|
1908
1900
|
this.primaryActionButton.classList.toggle('ui-button--surface', !emphasizeInclude);
|
|
1909
|
-
this.primaryActionButton.textContent = this.pendingAction === primaryAction
|
|
1910
|
-
? 'Working
|
|
1901
|
+
this.primaryActionButton.textContent = this.pendingAction && this.pendingAction === primaryAction
|
|
1902
|
+
? 'Working…'
|
|
1911
1903
|
: primaryAction === 'unstage'
|
|
1912
1904
|
? 'Remove'
|
|
1913
1905
|
: 'Include in commit';
|
|
@@ -1918,7 +1910,7 @@ export class GitDiffViewController {
|
|
|
1918
1910
|
}
|
|
1919
1911
|
if (this.commitButton) {
|
|
1920
1912
|
this.commitButton.textContent = this.pendingAction === 'commit'
|
|
1921
|
-
? 'Working
|
|
1913
|
+
? 'Working…'
|
|
1922
1914
|
: commitButtonLabel(includedFileCount);
|
|
1923
1915
|
}
|
|
1924
1916
|
this.commitButton?.classList.toggle(
|
|
@@ -94,7 +94,9 @@ export class GitPanelController {
|
|
|
94
94
|
onResetFile = () => {},
|
|
95
95
|
onSelectCommit = () => {},
|
|
96
96
|
onSelectDiff = () => {},
|
|
97
|
+
onStageAll = () => {},
|
|
97
98
|
onStageFile = () => {},
|
|
99
|
+
onUnstageAll = () => {},
|
|
98
100
|
onUnstageFile = () => {},
|
|
99
101
|
onViewAllDiff = () => {},
|
|
100
102
|
searchInput = null,
|
|
@@ -110,7 +112,9 @@ export class GitPanelController {
|
|
|
110
112
|
this.onResetFile = onResetFile;
|
|
111
113
|
this.onSelectCommit = onSelectCommit;
|
|
112
114
|
this.onSelectDiff = onSelectDiff;
|
|
115
|
+
this.onStageAll = onStageAll;
|
|
113
116
|
this.onStageFile = onStageFile;
|
|
117
|
+
this.onUnstageAll = onUnstageAll;
|
|
114
118
|
this.onUnstageFile = onUnstageFile;
|
|
115
119
|
this.onViewAllDiff = onViewAllDiff;
|
|
116
120
|
this.searchInput = searchInput;
|
|
@@ -118,6 +122,7 @@ export class GitPanelController {
|
|
|
118
122
|
this.panel = document.getElementById('gitPanel');
|
|
119
123
|
this.pullBackups = [];
|
|
120
124
|
this.status = null;
|
|
125
|
+
this.statusError = '';
|
|
121
126
|
this.active = false;
|
|
122
127
|
this.refreshTimer = null;
|
|
123
128
|
this.searchQuery = '';
|
|
@@ -236,6 +241,17 @@ export class GitPanelController {
|
|
|
236
241
|
|
|
237
242
|
if (this._handleFileActionClick(event)) return;
|
|
238
243
|
|
|
244
|
+
const bulkActionButton = event.target instanceof Element
|
|
245
|
+
? event.target.closest('[data-git-bulk-action]')
|
|
246
|
+
: null;
|
|
247
|
+
if (bulkActionButton) {
|
|
248
|
+
const action = bulkActionButton.getAttribute('data-git-bulk-action');
|
|
249
|
+
if (action === 'stage-all' || action === 'unstage-all') {
|
|
250
|
+
void this.handleBulkAction(action);
|
|
251
|
+
}
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
|
|
239
255
|
if (event.target instanceof Element && event.target.closest('[data-git-view-all]')) {
|
|
240
256
|
this.onViewAllDiff();
|
|
241
257
|
return;
|
|
@@ -280,8 +296,8 @@ export class GitPanelController {
|
|
|
280
296
|
this.stopStatusPolling();
|
|
281
297
|
return;
|
|
282
298
|
}
|
|
283
|
-
|
|
284
299
|
this.syncSearchUi();
|
|
300
|
+
void import('../styles/deferred-git.css');
|
|
285
301
|
void this.refresh({ force: false, includeHistory: this.panelMode === 'history' });
|
|
286
302
|
if (this.panelMode === 'changes') {
|
|
287
303
|
this.ensureStatusPolling();
|
|
@@ -377,7 +393,7 @@ export class GitPanelController {
|
|
|
377
393
|
|
|
378
394
|
async refresh({ force = false, includeHistory = this.panelMode === 'history' } = {}) {
|
|
379
395
|
const status = await this.refreshStatus({ force });
|
|
380
|
-
if (includeHistory && status
|
|
396
|
+
if (includeHistory && status?.isGitRepo) {
|
|
381
397
|
await this.refreshHistory({ force });
|
|
382
398
|
}
|
|
383
399
|
return status;
|
|
@@ -385,6 +401,7 @@ export class GitPanelController {
|
|
|
385
401
|
|
|
386
402
|
async refreshStatus({ force = false } = {}) {
|
|
387
403
|
if (!this.enabled) {
|
|
404
|
+
this.statusError = '';
|
|
388
405
|
this.status = {
|
|
389
406
|
isGitRepo: false,
|
|
390
407
|
sections: [],
|
|
@@ -409,6 +426,7 @@ export class GitPanelController {
|
|
|
409
426
|
try {
|
|
410
427
|
const data = await this.gitApiClient.readStatus({ force });
|
|
411
428
|
this.status = data;
|
|
429
|
+
this.statusError = '';
|
|
412
430
|
this.pullBackups = [];
|
|
413
431
|
if (data.isGitRepo) {
|
|
414
432
|
try {
|
|
@@ -435,25 +453,9 @@ export class GitPanelController {
|
|
|
435
453
|
} catch (error) {
|
|
436
454
|
console.error('[git-panel] Failed to load git status:', error);
|
|
437
455
|
this.toastController?.show('Failed to load git status');
|
|
438
|
-
this.
|
|
439
|
-
isGitRepo: false,
|
|
440
|
-
sections: [],
|
|
441
|
-
summary: { changedFiles: 0 },
|
|
442
|
-
};
|
|
443
|
-
this.pullBackups = [];
|
|
444
|
-
this.history = {
|
|
445
|
-
...this.history,
|
|
446
|
-
commits: [],
|
|
447
|
-
error: '',
|
|
448
|
-
hasMore: false,
|
|
449
|
-
loaded: false,
|
|
450
|
-
loading: false,
|
|
451
|
-
loadingMore: false,
|
|
452
|
-
offset: 0,
|
|
453
|
-
};
|
|
454
|
-
this.onRepoChange(false, this.status);
|
|
456
|
+
this.statusError = 'Failed to load Git status. Try again.';
|
|
455
457
|
this.render();
|
|
456
|
-
return
|
|
458
|
+
return null;
|
|
457
459
|
}
|
|
458
460
|
}
|
|
459
461
|
|
|
@@ -615,6 +617,22 @@ export class GitPanelController {
|
|
|
615
617
|
}
|
|
616
618
|
}
|
|
617
619
|
|
|
620
|
+
async handleBulkAction(action) {
|
|
621
|
+
if (this.pendingActionKey) {
|
|
622
|
+
return;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
this.pendingActionKey = action;
|
|
626
|
+
this.render();
|
|
627
|
+
|
|
628
|
+
try {
|
|
629
|
+
await (action === 'stage-all' ? this.onStageAll() : this.onUnstageAll());
|
|
630
|
+
} finally {
|
|
631
|
+
this.pendingActionKey = null;
|
|
632
|
+
this.render();
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
|
|
618
636
|
async handleCommitStaged() {
|
|
619
637
|
const actionKey = 'commit-staged';
|
|
620
638
|
if (this.pendingActionKey === actionKey) {
|
|
@@ -835,11 +853,11 @@ export class GitPanelController {
|
|
|
835
853
|
const commits = this.filterCommits(this.history.commits);
|
|
836
854
|
|
|
837
855
|
if (this.history.loading && !this.history.loaded) {
|
|
838
|
-
return '<div class="git-panel-empty">Loading git history
|
|
856
|
+
return '<div class="git-panel-empty" role="status" aria-live="polite">Loading git history…</div>';
|
|
839
857
|
}
|
|
840
858
|
|
|
841
859
|
if (this.history.error && !this.history.loaded) {
|
|
842
|
-
return `<div class="git-panel-empty">${escapeHtml(this.history.error)}</div>`;
|
|
860
|
+
return `<div class="git-panel-empty" role="alert">${escapeHtml(this.history.error)}</div>`;
|
|
843
861
|
}
|
|
844
862
|
|
|
845
863
|
if (this.history.loaded && commits.length === 0 && this.history.commits.length === 0) {
|
|
@@ -862,7 +880,7 @@ export class GitPanelController {
|
|
|
862
880
|
data-git-history-load-more
|
|
863
881
|
${this.history.loadingMore ? 'disabled' : ''}
|
|
864
882
|
>
|
|
865
|
-
${this.history.loadingMore ? 'Loading
|
|
883
|
+
${this.history.loadingMore ? 'Loading…' : 'Load more'}
|
|
866
884
|
</button>
|
|
867
885
|
</div>
|
|
868
886
|
` : ''}
|
|
@@ -877,6 +895,8 @@ export class GitPanelController {
|
|
|
877
895
|
.join('');
|
|
878
896
|
const hasChanges = Boolean(this.status.summary?.changedFiles);
|
|
879
897
|
const includedFileCount = Number(this.status.summary?.staged || 0);
|
|
898
|
+
const excludedFileCount = Number(this.status.summary?.workingTree || 0)
|
|
899
|
+
+ Number(this.status.summary?.untracked || 0);
|
|
880
900
|
const isCommitPending = this.pendingActionKey === 'commit-staged';
|
|
881
901
|
|
|
882
902
|
return `
|
|
@@ -885,9 +905,29 @@ export class GitPanelController {
|
|
|
885
905
|
${hasChanges ? `
|
|
886
906
|
<div class="git-panel-footer">
|
|
887
907
|
<div class="git-panel-footer-actions">
|
|
908
|
+
${excludedFileCount > 0 ? `
|
|
909
|
+
<button
|
|
910
|
+
class="${buttonClassNames({ variant: 'secondary', size: 'compact', action: true, surface: true })}"
|
|
911
|
+
type="button"
|
|
912
|
+
data-git-bulk-action="stage-all"
|
|
913
|
+
${this.pendingActionKey ? 'disabled' : ''}
|
|
914
|
+
>
|
|
915
|
+
${this.pendingActionKey === 'stage-all' ? 'Working...' : 'Include all changes'}
|
|
916
|
+
</button>
|
|
917
|
+
` : ''}
|
|
918
|
+
${includedFileCount > 0 ? `
|
|
919
|
+
<button
|
|
920
|
+
class="${buttonClassNames({ variant: 'secondary', size: 'compact', action: true, surface: true })}"
|
|
921
|
+
type="button"
|
|
922
|
+
data-git-bulk-action="unstage-all"
|
|
923
|
+
${this.pendingActionKey ? 'disabled' : ''}
|
|
924
|
+
>
|
|
925
|
+
${this.pendingActionKey === 'unstage-all' ? 'Working...' : 'Remove all from commit'}
|
|
926
|
+
</button>
|
|
927
|
+
` : ''}
|
|
888
928
|
<button class="${buttonClassNames({ variant: 'secondary', size: 'compact', action: true, surface: true })}" type="button" data-git-view-all>
|
|
889
929
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M2 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
|
|
890
|
-
View
|
|
930
|
+
View full diff
|
|
891
931
|
</button>
|
|
892
932
|
<button
|
|
893
933
|
class="${buttonClassNames({ variant: 'primary', action: true, wide: true, extra: 'git-footer-commit-btn' })}"
|
|
@@ -895,7 +935,7 @@ export class GitPanelController {
|
|
|
895
935
|
data-git-commit-staged
|
|
896
936
|
${includedFileCount === 0 || isCommitPending ? 'disabled' : ''}
|
|
897
937
|
>
|
|
898
|
-
${isCommitPending ? 'Working
|
|
938
|
+
${isCommitPending ? 'Working…' : commitButtonLabel(includedFileCount)}
|
|
899
939
|
</button>
|
|
900
940
|
</div>
|
|
901
941
|
</div>
|
|
@@ -903,14 +943,19 @@ export class GitPanelController {
|
|
|
903
943
|
`;
|
|
904
944
|
}
|
|
905
945
|
|
|
906
|
-
renderEmpty(message) {
|
|
946
|
+
renderEmpty(message, { alert = false, status = false } = {}) {
|
|
907
947
|
if (!this.panel) {
|
|
908
948
|
return;
|
|
909
949
|
}
|
|
910
950
|
|
|
951
|
+
const semantics = alert
|
|
952
|
+
? ' role="alert"'
|
|
953
|
+
: status
|
|
954
|
+
? ' role="status" aria-live="polite"'
|
|
955
|
+
: '';
|
|
911
956
|
// pi-lens-ignore: ast-grep:no-inner-html-js
|
|
912
957
|
this.panel.innerHTML = `
|
|
913
|
-
<div class="git-panel-empty ui-empty-state ui-empty-state--compact">
|
|
958
|
+
<div class="git-panel-empty ui-empty-state ui-empty-state--compact"${semantics}>
|
|
914
959
|
<p class="ui-empty-state-copy">${escapeHtml(message)}</p>
|
|
915
960
|
</div>
|
|
916
961
|
`;
|
|
@@ -921,8 +966,13 @@ export class GitPanelController {
|
|
|
921
966
|
return;
|
|
922
967
|
}
|
|
923
968
|
|
|
969
|
+
if (this.statusError) {
|
|
970
|
+
this.renderEmpty(this.statusError, { alert: true });
|
|
971
|
+
return;
|
|
972
|
+
}
|
|
973
|
+
|
|
924
974
|
if (!this.status) {
|
|
925
|
-
this.renderEmpty('Loading git status
|
|
975
|
+
this.renderEmpty('Loading git status…', { status: true });
|
|
926
976
|
return;
|
|
927
977
|
}
|
|
928
978
|
|