collabmd 0.1.49 → 0.1.52
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 +11 -660
- package/bin/collabmd.js +36 -20
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BEz2BKN1.js +1 -0
- package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/client/assets/Middleware-DUgFSleI.js +1 -0
- package/dist/client/assets/_basePickBy-QJXUw_pr.js +1 -0
- package/dist/client/assets/_baseUniq-DR4vVjyC.js +1 -0
- package/dist/client/assets/abnfDiagram-O67JEVCF-Dwt6a0Ds.js +1 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-DxNxad6-.js +1 -0
- package/dist/client/assets/ar-SA-5WIASEJP-Di7OimCN.js +10 -0
- package/dist/client/assets/architecture-7GRP2DOG-BBwRXFv3.js +1 -0
- package/dist/client/assets/architecture-7GRP2DOG-DJVtYNt-.js +1 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-C1uvg5id.js +36 -0
- package/dist/client/assets/architectureDiagram-NJMV4G6O-D5CGiX3G.js +36 -0
- package/dist/client/assets/az-AZ-V5EUQD6C-C19OGTT_.js +1 -0
- package/dist/client/assets/{babel-CY5KOv-I.js → babel-Bi_28hhi.js} +1 -1
- package/dist/client/assets/band-D-Cum8PO.js +1 -0
- package/dist/client/assets/bg-BG-EXASCMTR-BIt0xWyb.js +5 -0
- package/dist/client/assets/blockDiagram-BEXU5L5S-BgTM0var.js +140 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-B2YonsoG.js +129 -0
- 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-C0mP17s1.js} +1 -1
- package/dist/client/assets/{browser-utils-DbXSMI-6.js → browser-utils-vlHL9goC.js} +1 -1
- package/dist/client/assets/{c4Diagram-7LVT6UL2-yD2poxqw.js → c4Diagram-7LVT6UL2-r4IwomZm.js} +2 -2
- package/dist/client/assets/c4Diagram-YGBWAQC7-_xZPrNkB.js +38 -0
- package/dist/client/assets/ca-ES-2KGUU5XB-C9t-c0cH.js +8 -0
- package/dist/client/assets/channel-CgcHBnmr.js +1 -0
- package/dist/client/assets/chunk-2E4U76K2-CIQUuV9n.js +1 -0
- package/dist/client/assets/chunk-2Q5K7J3B-BMFG3ur0.js +1 -0
- package/dist/client/assets/{chunk-2ZTRR5NV-C2qZJila.js → chunk-2ZTRR5NV-CnDP55cn.js} +1 -1
- package/dist/client/assets/chunk-2ZTRR5NV-DcPRfelM.js +2 -0
- package/dist/client/assets/chunk-3FUC2YCW-8tZlhTGX.js +1 -0
- package/dist/client/assets/{chunk-3Z5EZCMW-DMniOlPd.js → chunk-3Z5EZCMW-BAnA6eQ7.js} +1 -1
- package/dist/client/assets/chunk-3Z5EZCMW-Yx4Q5AcN.js +1 -0
- package/dist/client/assets/chunk-4HAMMTFA-q0ldNVvr.js +62 -0
- package/dist/client/assets/chunk-4SOEAONT-C3fufoVl.js +40 -0
- package/dist/client/assets/chunk-5DYCD2WN-BKWCKnK-.js +1 -0
- package/dist/client/assets/{chunk-5V3GS4D5-i-ZDOEnP.js → chunk-5V3GS4D5-B5uC2oxu.js} +1 -1
- package/dist/client/assets/chunk-5V3GS4D5-BR7kgIgJ.js +1 -0
- package/dist/client/assets/chunk-5VM5RSS4-hE9rU_bl.js +15 -0
- package/dist/client/assets/chunk-6AEJRKK7-DTVZj5bY.js +1 -0
- package/dist/client/assets/{chunk-6AZGARVD-BB6FqMl-.js → chunk-6AZGARVD--pTGpDnx.js} +1 -1
- package/dist/client/assets/chunk-6AZGARVD-CnZDr4Cj.js +1 -0
- package/dist/client/assets/{chunk-6EIED4P4-DdUJkP0f.js → chunk-6EIED4P4-Bp8dpTvX.js} +1 -1
- package/dist/client/assets/chunk-6EIED4P4-DBVWq7Tz.js +1 -0
- package/dist/client/assets/{chunk-6K3QC6MW-CqVsVn-y.js → chunk-6K3QC6MW-DGVRzL6v.js} +1 -1
- package/dist/client/assets/chunk-6K3QC6MW-JnuvEGV4.js +1 -0
- package/dist/client/assets/{chunk-6TQVIW2G-DKlLbNIP.js → chunk-6TQVIW2G-BSj0l_pu.js} +1 -1
- package/dist/client/assets/chunk-6TQVIW2G-DgBX-Pv0.js +1 -0
- package/dist/client/assets/chunk-742MDFTN-D1nh6vNv.js +1 -0
- package/dist/client/assets/{chunk-747NJXEK-BFkZPlab.js → chunk-747NJXEK-BjqqAsS9.js} +1 -1
- package/dist/client/assets/chunk-747NJXEK-Cur1aosP.js +2 -0
- package/dist/client/assets/chunk-75Z2AOVW-DitkSoSG.js +2 -0
- package/dist/client/assets/chunk-7INBJB4K-CDmiHbaX.js +62 -0
- package/dist/client/assets/chunk-7M6MHVWA-BDakkknV.js +213 -0
- package/dist/client/assets/chunk-7PRAP22T-9uTvtc_-.js +1 -0
- package/dist/client/assets/{chunk-CLGD4ZFX-BMeArk03.js → chunk-CLGD4ZFX-BfYJtJm1.js} +1 -1
- package/dist/client/assets/chunk-DU6HZSFF-CWlP1Dk_.js +125 -0
- package/dist/client/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
- package/dist/client/assets/chunk-DYU5D34O-DN0WQZBm.js +1 -0
- package/dist/client/assets/{chunk-F27PBJKO-D4xNct1r.js → chunk-F27PBJKO-DPcsPcEs.js} +1 -1
- package/dist/client/assets/{chunk-FOHPRMQF-DHwB1DNv.js → chunk-FOHPRMQF-Dmmo5Kak.js} +9 -9
- package/dist/client/assets/chunk-FOHPRMQF-DzxwRta7.js +161 -0
- package/dist/client/assets/chunk-GMAD6QVW-Bgk8qnty.js +8 -0
- package/dist/client/assets/chunk-GNY47TPC-CTrH5O5R.js +1 -0
- package/dist/client/assets/{chunk-SVP7TREG-DB485R5x.js → chunk-GTNCS2PH-ChgkzEIi.js} +1 -1
- package/dist/client/assets/chunk-GVQU2GXP-CQ8cl-Uu.js +1 -0
- package/dist/client/assets/chunk-GWA4HPMP-CGmv2yIq.js +1 -0
- package/dist/client/assets/{chunk-I5DQTOEV-Hm2LfiYI.js → chunk-I5DQTOEV-B98XA8VK.js} +1 -1
- package/dist/client/assets/chunk-I5DQTOEV-aBZooNp1.js +1 -0
- package/dist/client/assets/{chunk-ICYGCRZG-749o-pGJ.js → chunk-ICYGCRZG-D97UeqJs.js} +1 -1
- package/dist/client/assets/chunk-ICYGCRZG-odvlDZyA.js +1 -0
- package/dist/client/assets/{chunk-IH6LHLGP-CC6I9F3i.js → chunk-IH6LHLGP-BNevEHZK.js} +1 -1
- package/dist/client/assets/chunk-IH6LHLGP-CvXe34hB.js +1 -0
- package/dist/client/assets/{chunk-IMKFNOWR-D8jEuU3Q.js → chunk-IMKFNOWR-CBqxfpcP.js} +2 -2
- package/dist/client/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
- package/dist/client/assets/chunk-JWPE2WC7-GDilnS5Y.js +1 -0
- package/dist/client/assets/{chunk-KI3K4JFJ-Rma-0k_M.js → chunk-KI3K4JFJ-D5XCPRZv.js} +1 -1
- package/dist/client/assets/chunk-KI3K4JFJ-FTtDwx3-.js +1 -0
- package/dist/client/assets/chunk-L3NEJ4N5-BflzkdTI.js +1 -0
- package/dist/client/assets/{chunk-LNGE3PJU-DWpGwHrW.js → chunk-LNGE3PJU-5-SxdO55.js} +1 -1
- package/dist/client/assets/chunk-LNGE3PJU-5nWSl6jJ.js +34 -0
- package/dist/client/assets/chunk-MBY4JIJT-DTJ4UcAm.js +8 -0
- package/dist/client/assets/chunk-NETBCI7D-CmUwDWUZ.js +1 -0
- package/dist/client/assets/chunk-O7XYJQB3-D0_ZY2za.js +126 -0
- package/dist/client/assets/chunk-OSK3NFVY-DqeKV_pg.js +10 -0
- package/dist/client/assets/{chunk-OUJLGHUK-D0j2JRSg.js → chunk-OUJLGHUK-75UXlPjl.js} +1 -1
- package/dist/client/assets/chunk-OUJLGHUK-DA95-S9B.js +2 -0
- package/dist/client/assets/{chunk-P2QGCYS3-Oag_FdCq.js → chunk-P2QGCYS3-BA--DhpW.js} +1 -1
- package/dist/client/assets/chunk-POPQ4Y6H-V_NEc45n.js +1 -0
- package/dist/client/assets/chunk-PWAF6VOD-D_kLse-N.js +1 -0
- package/dist/client/assets/{chunk-FLYJHZSQ-Be7lKF17.js → chunk-RUX4WMZV-BGnd3s_C.js} +4 -4
- package/dist/client/assets/{chunk-SHT3W25Y-BiQGljao.js → chunk-SHT3W25Y-YM3S-A_M.js} +5 -5
- package/dist/client/assets/chunk-SVP7TREG-DdNhDOmW.js +88 -0
- package/dist/client/assets/{chunk-TICWLB2K-8rAVvoS3.js → chunk-TICWLB2K-BGGgCr4x.js} +3 -3
- package/dist/client/assets/chunk-TLUHSLCS-DCZhIDYA.js +1 -0
- package/dist/client/assets/chunk-UA2S7LBM-DicYDjDM.js +1 -0
- package/dist/client/assets/{chunk-UY3FDG6J-CnmaAkG5.js → chunk-UY3FDG6J-DqSM_0FB.js} +1 -1
- package/dist/client/assets/chunk-UY3FDG6J-QT-rkt0y.js +1 -0
- package/dist/client/assets/chunk-WEXAMYUT-DDlVNp8J.js +1 -0
- package/dist/client/assets/chunk-X3CZISLH-BixgQztF.js +1 -0
- package/dist/client/assets/chunk-X3CZISLH-DwWpRaN8.js +1 -0
- package/dist/client/assets/{chunk-XHIXRSVI-BFQ6B8BE.js → chunk-XHIXRSVI-BSN7JlfK.js} +1 -1
- package/dist/client/assets/chunk-XHIXRSVI-DN_fEwws.js +1 -0
- package/dist/client/assets/chunk-XXDRQBXY-C7hQHDmQ.js +1 -0
- package/dist/client/assets/{chunk-XXDRQBXY-BvKO0v-W.js → chunk-XXDRQBXY-CdRN9Akd.js} +1 -1
- package/dist/client/assets/chunk-Y2CYZVJY-BbRBGnmc.js +1 -0
- package/dist/client/assets/chunk-Z7XXMR3K-P4Vaq8hD.js +10 -0
- package/dist/client/assets/chunk-ZIGJFQKS-b8OUHKK5.js +2 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-QLbh_Nkf.js +1 -0
- package/dist/client/assets/classDiagram-v2-NBCMYWYE-3TQORq33.js +217 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-QLbh_Nkf.js +1 -0
- package/dist/client/assets/clone-C1hp9FUh.js +1 -0
- package/dist/client/assets/comment-markdown-renderer-Bxi_JRSR.js +1 -0
- package/dist/client/assets/comment-thread-store-CHvy8GF8.js +1 -0
- package/dist/client/assets/comment-threads-nJhK1yfc.js +4 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-Czr0rwGr.js +1 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-DLmEf9HS.js +1 -0
- package/dist/client/assets/cs-CZ-VUCGPRML-BfCoYAgj.js +7 -0
- package/dist/client/assets/cynefin-OW5HDTMX-CF3N9j1_.js +1 -0
- package/dist/client/assets/cynefin-OW5HDTMX-e-Quc9Yl.js +1 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-DTnLZaO7.js +62 -0
- package/dist/client/assets/cynefinDiagram-VND7K2PF-DwfMZ3vk.js +62 -0
- package/dist/client/assets/cytoscape-cose-bilkent-NdTYBUiT.js +1 -0
- package/dist/client/assets/cytoscape-fcose-DE9_QRG_.js +1 -0
- package/dist/client/assets/cytoscape.esm-EK2DW5Qr.js +321 -0
- package/dist/client/assets/da-DK-NNDP2IVP-DBw9ZNTR.js +2 -0
- package/dist/client/assets/dagre-6A5THRUB-DewyAGK6.js +4 -0
- package/dist/client/assets/dagre-D7FiCLLP.js +1 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-Cr67wLpQ.js → dagre-GXQ25YYZ-Vtyx08Qh.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-D4cxEdad.css +1 -0
- package/dist/client/assets/deferred-git-BHKtkFYi.css +1 -0
- package/dist/client/assets/deferred-preview-BAXYgf4T.css +1 -0
- package/dist/client/assets/diagram-22UHCM2B-DbZirFfl.js +200 -0
- package/dist/client/assets/diagram-3UASUU5V-DmhdYv6_.js +24 -0
- package/dist/client/assets/diagram-ATOU4E4O-B5uX-jVO.js +3 -0
- package/dist/client/assets/diagram-CDSNMT55-D_qyS11R.js +30 -0
- package/dist/client/assets/diagram-MLGK6HIB-DIBG6Ivu.js +24 -0
- package/dist/client/assets/diagram-MPIPVDR6-D9XsALDV.js +41 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-DywERe__.js → diagram-S7CK7UJ4-CGTzfo2f.js} +3 -3
- package/dist/client/assets/diagram-UQ7AKVKN-CWZS8QtB.js +41 -0
- package/dist/client/assets/{diagram-VSXAHHWV-0H1a61Bn.js → diagram-VSXAHHWV-DaO1nOZF.js} +3 -3
- package/dist/client/assets/diagram-VX7I27RA-B54P6Cyf.js +24 -0
- package/dist/client/assets/diagram-Z3DM3KII-Cl2EXiXp.js +24 -0
- package/dist/client/assets/direct-engine-DdrQKpgq-4QysbH_V.js +5 -0
- package/dist/client/assets/dist-B7fBbwrO.js +1 -0
- package/dist/client/assets/{dist-DGEbEfw4.js → dist-BVCNc-Es.js} +1 -1
- package/dist/client/assets/dist-BYBF4LtZ.js +1 -0
- package/dist/client/assets/{dist-TW8iFRyW.js → dist-B_1hMrc6.js} +1 -1
- package/dist/client/assets/{dist-DVy5woUy.js → dist-BfpAc922.js} +1 -1
- package/dist/client/assets/dist-BnVaoRgZ.js +1 -0
- package/dist/client/assets/dist-Bog8M5U3.js +13 -0
- package/dist/client/assets/{dist-jVU5Be5P.js → dist-CAG5sIOj.js} +1 -1
- package/dist/client/assets/{dist-LQ4kDCKz.js → dist-CKf7LlAo.js} +1 -1
- package/dist/client/assets/{dist-BeajGMhO.js → dist-CUsXdnU4.js} +1 -1
- package/dist/client/assets/{dist-Tw-Fxpeb.js → dist-CXOUa90Q.js} +1 -1
- package/dist/client/assets/dist-CYMCikZo.js +1 -0
- package/dist/client/assets/dist-CYfPeupF.js +1 -0
- package/dist/client/assets/dist-Ch6Sr9KF.js +28 -0
- package/dist/client/assets/dist-Ck-B8onw.js +2 -0
- package/dist/client/assets/dist-CrkYYcOU.js +1 -0
- package/dist/client/assets/{dist-D5wCC32z.js → dist-CsQTfQFi.js} +1 -1
- package/dist/client/assets/dist-Cu5Ze2cs.js +6 -0
- package/dist/client/assets/{dist-C5NgpdG5.js → dist-CvVoyTRF.js} +1 -1
- package/dist/client/assets/{dist-GvvCNBe4.js → dist-D4kDR0g8.js} +1 -1
- package/dist/client/assets/dist-D8LnhZzy.js +1 -0
- package/dist/client/assets/{dist-D3fehAZ2.js → dist-DGa-2MNX.js} +2 -2
- package/dist/client/assets/dist-DI6c02Da.js +39 -0
- package/dist/client/assets/{dist-BPHLJ09L.js → dist-DNONgI1P.js} +2 -2
- package/dist/client/assets/{dist-C0G3AaXG.js → dist-DVBYH83t.js} +1 -1
- package/dist/client/assets/dist-DX6qtdxv.js +1 -0
- package/dist/client/assets/{dist-DzNmC81X.js → dist-Da-jLrCf.js} +1 -1
- package/dist/client/assets/dist-DofvCYzJ.js +1 -0
- package/dist/client/assets/{dist-CdmKGRGr.js → dist-Dx37MHWs.js} +1 -1
- package/dist/client/assets/dist-GTGhtpyW.js +9 -0
- package/dist/client/assets/{dist-BK9QvQrc.js → dist-W0FoeIxk.js} +9 -9
- package/dist/client/assets/{dist-mj2Ht75J.js → dist-Y6zYRI-A.js} +1 -1
- package/dist/client/assets/{dist-netZOQtD.js → dist-jVKfryIL.js} +1 -1
- package/dist/client/assets/{dist-DuH3ZrHo.js → dist-zHDLm1oE.js} +1 -1
- package/dist/client/assets/document-formatter-gO8qM2qY.js +1 -0
- package/dist/client/assets/drawioEditor-DCkWweiy.js +9 -0
- package/dist/client/assets/duration-BiuFXtXd.js +1 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-PfC84FyI.js +1 -0
- package/dist/client/assets/ebnfDiagram-ZINNZB2B-DYvm_QtE.js +1 -0
- package/dist/client/assets/editor-session-DxRyr4EM.js +14 -0
- package/dist/client/assets/el-GR-TYQHVGXW-Dx82YYAS.js +7 -0
- package/dist/client/assets/elk-276RUBZZ-B8LB3Pac.js +27 -0
- package/dist/client/assets/embedded-editor-base-elU0Avik.css +1 -0
- package/dist/client/assets/{embedpdf-DA4bA119-BPqZxwjc.js → embedpdf-DA4bA119-DsoNiPlQ.js} +4 -5
- package/dist/client/assets/{embedpdf-BmE13ZZ0.js → embedpdf-DyOonRvx.js} +1 -1
- package/dist/client/assets/{en-SJ2YIMFF-CJBL3nkq.js → en-GNC3RJIS-CEy_oGTd.js} +1 -1
- package/dist/client/assets/erDiagram-OPXOYQCR-o8GRv8A_.js +99 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-CbrDdd5P.js → erDiagram-RLTQ6QDP-C9cJl5NB.js} +2 -2
- package/dist/client/assets/es-ES-JEUOREKJ-Rx0NUQDl.js +12 -0
- package/dist/client/assets/esm-BzZ1JFVo.js +65 -0
- package/dist/client/assets/{estree-CuT_pB8K.js → estree-DCT3Jm65.js} +4 -4
- package/dist/client/assets/eu-ES-SO5DEEAN-CDYm-BcK.js +8 -0
- package/dist/client/assets/eventmodeling-NTZA5JFV-CDy1bN6j.js +1 -0
- package/dist/client/assets/eventmodeling-NTZA5JFV-Dxtv5D-P.js +1 -0
- package/dist/client/assets/excalidraw-element-link-CGZ5934B.js +7 -0
- package/dist/client/assets/{excalidrawEditor-BbSbI80a.css → excalidrawEditor-BCTFp_CV.css} +1 -1
- package/dist/client/assets/excalidrawEditor-BVfSxjSO.js +9 -0
- package/dist/client/assets/export-page-BCo_e15t.js +46 -0
- package/dist/client/assets/exportDocument-Ba-n1X4U.css +1 -0
- package/dist/client/assets/exportDocument-DP6oE_or.js +2 -0
- package/dist/client/assets/fa-IR-I4JNTJHK-CFtHZqoT.js +9 -0
- package/dist/client/assets/fi-FI-REAEF6HQ-BIpjJqIb.js +6 -0
- package/dist/client/assets/file-search-3hYF4cYa.js +1 -0
- package/dist/client/assets/flowDiagram-HODETNUW-Bq4470NR.js +1 -0
- package/dist/client/assets/flowDiagram-KWPJA3E3-DQG9qGiU.js +1 -0
- package/dist/client/assets/forth-D6RzAl64.js +1 -0
- package/dist/client/assets/fr-FR-SUCL7J6B-DGAKE8jH.js +12 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-x40PW0Ah.js +292 -0
- package/dist/client/assets/ganttDiagram-FUAMR5RP-BQpsI7gQ.js +292 -0
- package/dist/client/assets/gitGraph-4MIJSDKK-B-rpDYbz.js +1 -0
- package/dist/client/assets/gitGraph-4MIJSDKK-ZaBIE4Lb.js +1 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-ahsNaZsp.js +106 -0
- package/dist/client/assets/gitGraphDiagram-X574FWY7-wbs_2m9f.js +106 -0
- package/dist/client/assets/gl-ES-KHCSOGVH-DWKh0CMu.js +6 -0
- package/dist/client/assets/graphlib-C9Tl7QrK.js +1 -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/{html-Cdnr2qzU.js → html-CBXMuS97.js} +2 -2
- package/dist/client/assets/html-DTuc_pxj.js +1 -0
- package/dist/client/assets/hu-HU-OWADXDQ3-CEl6Udfh.js +3 -0
- package/dist/client/assets/id-ID-2WY7E4VX-CCAeQpPr.js +8 -0
- package/dist/client/assets/image-EJJKRVD3-BQfi5nWJ.js +1 -0
- package/dist/client/assets/{image-blob-reduce.esm-Dj7YBvMv.js → image-blob-reduce.esm-BFq-Mx5V.js} +2 -2
- package/dist/client/assets/index-BxAuGDoN.css +1 -0
- package/dist/client/assets/index-uw9O0z1c.js +1112 -0
- package/dist/client/assets/info-A6RAGUB7-BcGxhjED.js +1 -0
- package/dist/client/assets/info-A6RAGUB7-BlutK7BT.js +1 -0
- package/dist/client/assets/infoDiagram-27XIBGKW-MrZyptIy.js +2 -0
- package/dist/client/assets/infoDiagram-VRGFBTTK-KkUjDRAQ.js +2 -0
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BMPC6hfp.js → ishikawaDiagram-5VMMS53U-Bnt9yM0O.js} +2 -2
- package/dist/client/assets/ishikawaDiagram-OU5B5YK6-Di9BcpOY.js +70 -0
- package/dist/client/assets/it-IT-INVHSAJF-DytAgndh.js +12 -0
- package/dist/client/assets/ja-JP-JBNTKYP4-BflWlGhw.js +12 -0
- package/dist/client/assets/javascript-B9I2pbsP.js +1 -0
- package/dist/client/assets/javascript-DctB8BJo.js +1 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-B1sApUmM.js → journeyDiagram-3NMN7TZE-Bl0abK1r.js} +1 -1
- package/dist/client/assets/journeyDiagram-ZHPQQLJL-J-sGrs9e.js +139 -0
- package/dist/client/assets/jsx-runtime-DKj5X9O4.js +1 -0
- 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-PNTS6WVX-5ZDV_yIa.js +89 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-C9yP4td1.js → kanban-definition-UXKFOSKX-DMgUfNt0.js} +10 -10
- package/dist/client/assets/{katex-CXMH3UgJ.js → katex-9NBMfU68.js} +2 -2
- package/dist/client/assets/katex-ZlcWpGUi.js +257 -0
- 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-DEbP8Ok6.js +1 -0
- package/dist/client/assets/linear-DExL6ILt.js +1 -0
- package/dist/client/assets/lobby-presence-Cz5jGOPg.js +1 -0
- package/dist/client/assets/lt-LT-V3XDOK3P-MVQBOHmF.js +3 -0
- package/dist/client/assets/{lua-CL1SqxuB.js → lua-zbJo2mq3.js} +1 -1
- package/dist/client/assets/lv-LV-DVQ3FADO-CrenwAhS.js +4 -0
- package/dist/client/assets/{markdown-CByV-4CU.js → markdown-Bo71X2X2.js} +8 -8
- package/dist/client/assets/markdown-it-DpvIRaVq.js +13 -0
- package/dist/client/assets/markdown-math-CyyBVuDO.js +517 -0
- package/dist/client/assets/merge-CALoRt3l.js +1 -0
- package/dist/client/assets/mermaid-parser.core-Bpogunsh.js +3 -0
- package/dist/client/assets/mermaid-parser.core-DBy--Jc0.js +3 -0
- package/dist/client/assets/mermaid.core-BeOUPE3Q.js +10 -0
- package/dist/client/assets/mindmap-definition-NLK3R4M7-ByVb-0vj.js +96 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-BUQHcYbK.js → mindmap-definition-YA3MSWOX-DBZN5_GH.js} +29 -29
- 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/{nginx-BMaDbqW3.js → nginx-8H7HVH4w.js} +1 -1
- 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/packet-AYTQ26CC-CqpSjTWl.js +1 -0
- package/dist/client/assets/packet-AYTQ26CC-DvbY8dI6.js +1 -0
- package/dist/client/assets/pegDiagram-GJSIUBJH-aost1sSO.js +1 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DRo8CZu3.js +1 -0
- package/dist/client/assets/percentages-LWOC67ZH-VhvllE7L.js +1 -0
- package/dist/client/assets/{pica-xkWDouSg.js → pica-BPrp-GK1.js} +1 -1
- package/dist/client/assets/pie-DzWLGKAD.js +1 -0
- package/dist/client/assets/pie-WAS4IAKB-Bg2eCNl5.js +1 -0
- package/dist/client/assets/pie-WAS4IAKB-DWSm9SSD.js +1 -0
- package/dist/client/assets/pieDiagram-5QR66LMP-BICdpEuz.js +39 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-CZThaHsc.js +39 -0
- package/dist/client/assets/pl-PL-BSY6YFZ3-CFuzA6L0.js +12 -0
- package/dist/client/assets/preload-helper-BAlEavIC.js +1 -0
- package/dist/client/assets/preview-render-compiler-ktU0SXxY.js +43 -0
- package/dist/client/assets/preview-render-profile-D652PAjA.js +1 -0
- package/dist/client/assets/preview-render-worker-BI2bFVqM.js +575 -0
- package/dist/client/assets/prod-DU-0VfI7.js +145 -0
- package/dist/client/assets/prod-cXUNdmYV.js +1 -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/{pug-Wky5Dnfy.js → pug-CqqUmdG7.js} +1 -1
- package/dist/client/assets/purify.es-go7v6Te-.js +3 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DwexhEhd.js → quadrantDiagram-AXDQQJYC-C5iowkl_.js} +3 -3
- package/dist/client/assets/quadrantDiagram-O4NWA36T-Bgx5bF97.js +7 -0
- package/dist/client/assets/quick-switcher-De4PjZFC.css +1 -0
- package/dist/client/assets/quick-switcher-controller-DSlOwOsU.js +1 -0
- package/dist/client/assets/radar-RG4KPBEZ-BfNQUEQy.js +1 -0
- package/dist/client/assets/radar-RG4KPBEZ-DxExotg6.js +1 -0
- package/dist/client/assets/railroad-74A4TZTK-BaQ6U6eJ.js +1 -0
- package/dist/client/assets/railroad-74A4TZTK-FfHmeIQk.js +1 -0
- package/dist/client/assets/railroad-abnf-HS5TGJTU-BJ3KZw7J.js +1 -0
- package/dist/client/assets/railroad-abnf-HS5TGJTU-CLkdDRsJ.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-B162zvcG.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-DA0sEq7w.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-CGs5GeJ5.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-DCmlICzO.js +1 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BTt_rKjT.js +1 -0
- package/dist/client/assets/railroadDiagram-XR7U4H2S-DbVoNgSz.js +1 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-C4cKwiIw.js → requirementDiagram-BXWQKSXE-BkvazG7r.js} +1 -1
- package/dist/client/assets/requirementDiagram-PLB6GJNP-BT0j9C40.js +84 -0
- 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-IPEJSGJF-X1BCUIrf.js +40 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-C_IemB9h.js +40 -0
- package/dist/client/assets/sankeyLinkHorizontal-usjP1-Cg.js +1 -0
- package/dist/client/assets/sequenceDiagram-PO4LG4MO-B-2QfXhV.js +169 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BX6jqJFD.js → sequenceDiagram-WJ2MYXX4-CxFBgLGd.js} +3 -3
- package/dist/client/assets/si-LK-7CBLD6QQ-c91EepX0.js +1 -0
- package/dist/client/assets/{sieve-BAxa3IjF.js → sieve-tLWDfEkZ.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-DrzwYt5z.js +1 -0
- package/dist/client/assets/sk-SK-SWR6DKBI-D5vFMIL6.js +7 -0
- package/dist/client/assets/sl-SI-QY5KCFGA-RZhwMpQL.js +8 -0
- package/dist/client/assets/solr-B78wSQJQ.js +1 -0
- package/dist/client/assets/src-XiVvaevx.js +1 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-BaSQ6Owj.js +1 -0
- package/dist/client/assets/stateDiagram-v2-GCMORJYK-CsVcfwVp.js +291 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CLlwrdvU.js +1 -0
- package/dist/client/assets/sv-SE-O3OFCY3J-DnS86_7q.js +12 -0
- package/dist/client/assets/swimlanes-2SLR337P-CnYTVqRX.js +1 -0
- package/dist/client/assets/swimlanes-42K2YHIH-CALFEmiS.js +1 -0
- package/dist/client/assets/swimlanesDiagram-TC7HE7FX-Bh4tmz27.js +8 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-xhehUG9e.js +8 -0
- package/dist/client/assets/ta-IN-V6NHHU6Z-D5jy7_AE.js +6 -0
- package/dist/client/assets/th-TH-WLSZUSBX-DHehoYR2.js +1 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-BA-lVH6P.js → timeline-definition-24CTP7MA-zse-5Dbm.js} +5 -5
- package/dist/client/assets/timeline-definition-EJHVYXUP-BhqPlKkN.js +120 -0
- package/dist/client/assets/tr-TR-GUFYG22B-ClVaf8h1.js +4 -0
- package/dist/client/assets/treeView-Q6P3EWNA-BvHOzbu9.js +1 -0
- package/dist/client/assets/treeView-Q6P3EWNA-Cccy0ngL.js +1 -0
- package/dist/client/assets/treemap-CxZTjHiH.js +1 -0
- package/dist/client/assets/treemap-WGGIJYW6-oety7paS.js +1 -0
- package/dist/client/assets/treemap-WGGIJYW6-sMRCjCtX.js +1 -0
- package/dist/client/assets/uk-UA-K6SV5NFQ-BLTTtyNB.js +6 -0
- package/dist/client/assets/usecaseDiagram-POWQR4AR-DR2LHQYs.js +328 -0
- package/dist/client/assets/uz-UZ-TVKTZO2G-Bm02Eg3D.js +1 -0
- package/dist/client/assets/v4-DDdyfk2q.js +1 -0
- package/dist/client/assets/vault-api-client-BQxLVPeF.js +7 -0
- package/dist/client/assets/vault-paths-BT-6nztu.js +1 -0
- package/dist/client/assets/vault-utils-Bct69Xw2.js +1 -0
- package/dist/client/assets/venn.esm-C5rDfA9t.js +7 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-DgHr6cJD.js +28 -0
- package/dist/client/assets/vennDiagram-UO4OBE2U-BRwLn2Q1.js +28 -0
- package/dist/client/assets/{verilog-7LoJAqYT.js → verilog-CjI9Y6RI.js} +1 -1
- package/dist/client/assets/vi-VN-7FKFXJNO-CL3WPhmG.js +7 -0
- package/dist/client/assets/wardley-WFR3VGLG-BdwDpX_I.js +1 -0
- package/dist/client/assets/wardley-WFR3VGLG-Y7xty_3m.js +1 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-C2oY-YbF.js → wardleyDiagram-VM6X3IG4-9A60XZis.js} +3 -3
- package/dist/client/assets/wardleyDiagram-VNRHLVJA-B_tMcVFG.js +78 -0
- package/dist/client/assets/wiki-link-resolver-Dch88erO.js +1 -0
- package/dist/client/assets/{worker-engine-m0rlHn8R-S8mpn_O0.js → worker-engine-m0rlHn8R-5h66k403.js} +1 -1
- package/dist/client/assets/workspace-change-CVA9dVmy.js +1 -0
- package/dist/client/assets/workspace-sync-client-C2pdaQUN.js +1 -0
- package/dist/client/assets/xychartDiagram-PMCCYNJV-fRpZ1MA5.js +7 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-D00iy-wB.js +7 -0
- package/dist/client/assets/{yaml-9ltHPDNO.js → yaml-BcZaqAz8.js} +1 -1
- package/dist/client/assets/yjs-B41tM6Sz.js +4 -0
- package/dist/client/assets/yjs-provider-reset-guard-DpntzUDR.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 +9 -9
- package/dist/client/excalidraw-editor.html +43 -38
- package/dist/client/export-document.html +6 -7
- package/dist/client/index.html +49 -38
- package/package.json +23 -26
- package/src/client/app/drawio-editor.html +2 -1
- package/src/client/app/excalidraw-editor.html +2 -1
- package/src/client/app/export-document-entry.js +1 -0
- package/src/client/app/export-document.html +2 -1
- package/src/client/app/index.html +47 -16
- package/src/client/app/main-entry.js +1 -19
- package/src/client/application/app-shell/comments-feature.js +6 -0
- package/src/client/application/app-shell/ui-feature-shell.js +156 -59
- package/src/client/application/app-shell/ui-feature-tab-activity.js +8 -3
- package/src/client/application/app-shell-elements.js +7 -0
- package/src/client/application/diagram-preview-hydrator.js +7 -0
- package/src/client/application/highlight-theme.js +16 -0
- package/src/client/application/mermaid-preview-hydrator.js +89 -3
- package/src/client/application/preview-diagram-utils.js +1 -0
- package/src/client/application/preview-render-compiler.js +45 -20
- package/src/client/application/preview-render-executor.js +4 -27
- package/src/client/application/preview-render-profile.js +8 -12
- package/src/client/application/preview-renderer.js +27 -7
- package/src/client/application/workspace-coordinator.js +20 -21
- package/src/client/bootstrap/collabmd-app-shell.js +87 -42
- package/src/client/bootstrap/lazy-collab-clients.js +90 -0
- package/src/client/browser-utils.js +1 -1
- package/src/client/domain/excalidraw-scene-reconcile.js +5 -2
- package/src/client/domain/excalidraw-scene.js +0 -11
- package/src/client/domain/file-search.js +1 -0
- package/src/client/domain/hash-routes.js +5 -0
- package/src/client/domain/highlight-runtime.js +74 -0
- package/src/client/domain/lobby-chat.js +2 -0
- package/src/client/domain/markdown-math.js +14 -0
- package/src/client/domain/runtime-paths.js +56 -7
- package/src/client/domain/vault-utils.js +11 -0
- package/src/client/excalidraw-editor.js +20 -4
- package/src/client/export/export-host.js +3 -7
- package/src/client/export/export-pipeline.js +208 -21
- package/src/client/infrastructure/auth-client.js +1 -2
- package/src/client/infrastructure/browser-preferences-port.js +24 -0
- package/src/client/infrastructure/editor-session.js +20 -0
- package/src/client/infrastructure/editor-view-adapter.js +51 -15
- package/src/client/infrastructure/excalidraw-room-client.js +11 -46
- package/src/client/infrastructure/git-api-client.js +5 -0
- package/src/client/infrastructure/hosted-api-client.js +60 -0
- package/src/client/infrastructure/lobby-presence.js +2 -2
- package/src/client/infrastructure/runtime-config.js +3 -1
- package/src/client/infrastructure/tab-activity-lock.js +8 -4
- package/src/client/infrastructure/webmcp-tool-registry.js +27 -6
- package/src/client/presentation/bases-preview-controller.js +2 -1
- package/src/client/presentation/comment-markdown-renderer.js +4 -14
- package/src/client/presentation/comment-overview-controller.js +1 -2
- package/src/client/presentation/comment-ui/comment-ui-shared.js +5 -2
- package/src/client/presentation/comment-ui-controller.js +21 -30
- package/src/client/presentation/create-menu-presenter.js +16 -18
- package/src/client/presentation/drawio-embed-controller.js +55 -7
- package/src/client/presentation/excalidraw-embed-controller.js +11 -3
- package/src/client/presentation/file-explorer-controller.js +4 -0
- package/src/client/presentation/file-explorer-view.js +304 -176
- package/src/client/presentation/file-history-view-controller.js +6 -0
- package/src/client/presentation/git-diff-view-controller.js +3 -2
- package/src/client/presentation/git-panel-controller.js +7 -6
- package/src/client/presentation/hosted-workspace-gate-controller.js +180 -0
- package/src/client/presentation/image-lightbox-controller.js +7 -6
- package/src/client/presentation/layout-controller.js +10 -1
- package/src/client/presentation/outline-controller.js +0 -86
- package/src/client/presentation/quick-switcher-controller.js +50 -13
- package/src/client/presentation/scroll-sync-controller.js +69 -21
- package/src/client/presentation/team-settings-controller.js +228 -0
- package/src/client/styles/components/navigation.css +2 -2
- package/src/client/styles/deferred-collab.css +6 -0
- package/src/client/styles/deferred-git.css +7 -0
- package/src/client/styles/deferred-preview.css +7 -0
- package/src/client/styles/features/diagram-preview.css +1 -15
- package/src/client/styles/features/outline.css +4 -2
- package/src/client/styles/features/preview-markdown.css +29 -15
- package/src/client/styles/features/team-settings.css +162 -0
- package/src/client/styles/foundation/themes.css +56 -271
- package/src/client/styles/foundation/tokens.css +2 -2
- package/src/client/styles/layout/editor-page.css +0 -14
- package/src/client/styles/layout/overlays.css +16 -0
- package/src/client/styles/layout/responsive.css +5 -5
- package/src/client/styles/layout/shell.css +26 -1
- package/src/client/styles/layout/sidebar.css +95 -3
- package/src/client/styles/style.css +3 -19
- package/src/client/styles/surfaces/landing-page.css +260 -0
- package/src/domain/agent-tool-definitions.js +182 -74
- package/src/domain/collabmd-content-capabilities.js +62 -7
- package/src/domain/collaboration-protocol.js +2 -0
- package/src/domain/excalidraw-agent-scene.js +108 -6
- package/src/domain/excalidraw-agent-verification.js +95 -1
- package/src/domain/excalidraw-room-codec.js +12 -1
- package/src/domain/literal-text-search.js +13 -0
- package/src/domain/markdown-outline.js +35 -0
- package/src/server/application/agent-connection-service.js +6 -2
- package/src/server/application/agent-content-service.js +250 -114
- package/src/server/auth/create-auth-service.js +40 -12
- package/src/server/auth/session-cookie.js +49 -38
- package/src/server/config/env.js +97 -6
- package/src/server/create-app-server.js +23 -153
- package/src/server/domain/backlink-index.js +1 -11
- package/src/server/domain/bases/base-query-results.js +7 -3
- package/src/server/domain/bases/base-query-service.js +2 -7
- package/src/server/domain/collaboration/collaboration-room.js +54 -16
- package/src/server/domain/docx-exporter.js +256 -2
- package/src/server/domain/hosted-workspace-contract.js +7 -0
- package/src/server/domain/hosted-workspace.js +39 -63
- package/src/server/domain/ripgrep-search-service.js +97 -34
- package/src/server/infrastructure/git/diff-service.js +15 -11
- package/src/server/infrastructure/git/git-service.js +4 -0
- package/src/server/infrastructure/git/image-mime.js +4 -3
- package/src/server/infrastructure/git/local-exclude.js +13 -1
- package/src/server/infrastructure/git/status-service.js +10 -6
- package/src/server/infrastructure/http/create-agent-api-handler.js +1 -1
- package/src/server/infrastructure/http/create-git-api-query-handler.js +25 -0
- package/src/server/infrastructure/http/create-hosted-api-handler.js +5 -0
- package/src/server/infrastructure/http/create-request-handler.js +95 -26
- package/src/server/infrastructure/http/create-static-handler.js +3 -0
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +28 -55
- package/src/server/infrastructure/http/http-response.js +2 -0
- package/src/server/infrastructure/mcp/create-agent-mcp-handler.js +2 -1
- package/src/server/infrastructure/persistence/hosted-metadata-store.js +42 -5
- package/src/server/infrastructure/persistence/path-utils.js +23 -3
- package/src/server/infrastructure/persistence/pull-backup-store.js +52 -42
- package/src/server/infrastructure/persistence/sidecar-store.js +19 -9
- package/src/server/infrastructure/persistence/vault-file-store.js +57 -171
- package/src/server/infrastructure/plantuml/plantuml-renderer.js +33 -0
- package/src/server/infrastructure/structurizr/structurizr-workspace-service.js +24 -10
- package/src/server/infrastructure/websocket/attach-collaboration-gateway.js +55 -25
- package/src/server/infrastructure/websocket/client-socket-session.js +32 -4
- package/src/server/infrastructure/workspace/file-system-sync-service.js +4 -2
- package/src/server/shared/agent-tool-rate-limiter.js +7 -0
- package/src/server/startup/git-remote-bootstrap.js +56 -49
- package/src/server/vault-registry.js +251 -0
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-C-nmgL5g.js +0 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-CdVZqicp.js +0 -1
- package/dist/client/assets/ar-SA-PQUY64WN-xjXgbW6d.js +0 -10
- package/dist/client/assets/architecture-7GRP2DOG-BMOPAkUC.js +0 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-wUo0bXif.js +0 -36
- 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/blockDiagram-I7D4REHJ-BRSK3m49.js +0 -129
- 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/ca-ES-LD5SCRVV-U6_TVMX9.js +0 -8
- package/dist/client/assets/channel-Fa4GS_-F.js +0 -1
- package/dist/client/assets/chunk-2E4U76K2-BPnTT-J3.js +0 -2
- package/dist/client/assets/chunk-4HAMMTFA-DStbIfJ1.js +0 -62
- package/dist/client/assets/chunk-75Z2AOVW-C5pGd3W9.js +0 -2
- package/dist/client/assets/chunk-7XWMRXBY-CfMzEq80.js +0 -1
- package/dist/client/assets/chunk-DU6HZSFF-Zkp69c6c.js +0 -127
- package/dist/client/assets/chunk-GMAD6QVW-NZ6WpDb8.js +0 -72
- package/dist/client/assets/chunk-GVQU2GXP-D8SDprfX.js +0 -1
- package/dist/client/assets/chunk-L3NEJ4N5-aijKP-eh.js +0 -1
- package/dist/client/assets/chunk-OSK3NFVY-CCbLQAMa.js +0 -10
- package/dist/client/assets/chunk-POPQ4Y6H-CYnpIgXT.js +0 -1
- package/dist/client/assets/chunk-PWAF6VOD-JSNrcBmP.js +0 -1
- package/dist/client/assets/chunk-RM4UPSZO-DOWllDY8.js +0 -41
- package/dist/client/assets/chunk-TLUHSLCS-DTY5v0aj.js +0 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-BsQWoR3Q.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-BsQWoR3Q.js +0 -1
- package/dist/client/assets/comment-thread-store-CX98zR6q.js +0 -1
- package/dist/client/assets/comment-threads-BnRwo5B9.js +0 -4
- package/dist/client/assets/cose-bilkent-JH36ORCC-Cm_QF_yb.js +0 -1
- package/dist/client/assets/cs-CZ-OFPU5DBV-BmFAIhqX.js +0 -7
- package/dist/client/assets/cynefin-OW5HDTMX-7tP7QfM3.js +0 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-rTz9RhFH.js +0 -62
- package/dist/client/assets/cytoscape.esm-B-NFISlW.js +0 -321
- package/dist/client/assets/da-DK-FRDJFYWF-H387Jw8B.js +0 -2
- package/dist/client/assets/dagre-PrKaheQc.js +0 -1
- 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-UQ7AKVKN-CNYlXtu4.js +0 -41
- package/dist/client/assets/diagram-VX7I27RA-CsJbsx5F.js +0 -24
- package/dist/client/assets/diagram-Z3DM3KII-D0mLxEgI.js +0 -24
- package/dist/client/assets/direct-engine-DdrQKpgq-CtKfQzCt.js +0 -5
- package/dist/client/assets/dist--hk9I5HQ.js +0 -1
- package/dist/client/assets/dist-B1XEa-Zs.js +0 -1
- package/dist/client/assets/dist-BJ1bJs33.js +0 -1
- package/dist/client/assets/dist-Bd1JucQF.js +0 -1
- package/dist/client/assets/dist-ByrG2qBA.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-Dl_tpDSr.js +0 -1
- package/dist/client/assets/dist-Dm4w5UId.js +0 -1
- package/dist/client/assets/dist-DpYDHR9p.js +0 -6
- package/dist/client/assets/dist-JaU3aRlD.js +0 -19
- package/dist/client/assets/dist-RKBTaQMb.js +0 -13
- package/dist/client/assets/dist-eBx8q6Sy.js +0 -1
- package/dist/client/assets/document-formatter-rDDjRfZ2.js +0 -2
- package/dist/client/assets/drawioEditor-JubEEha7.js +0 -9
- package/dist/client/assets/ebnfDiagram-PWID7BFC-HeTxHpCU.js +0 -1
- package/dist/client/assets/editor-session-Bk6oIvSr.js +0 -54
- package/dist/client/assets/el-GR-IEE2CGI2-BkT6YT54.js +0 -7
- package/dist/client/assets/embedded-editor-base-BlCgz6mw.css +0 -1
- package/dist/client/assets/es-Bfdp096f.js +0 -22
- 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/eventmodeling-NTZA5JFV-BR2FzK4R.js +0 -1
- package/dist/client/assets/excalidraw-element-link-YLIaTnVF.js +0 -7
- package/dist/client/assets/excalidrawEditor-dBMbRX_S.js +0 -9
- package/dist/client/assets/export-page-CRRQ2NEl.js +0 -57
- package/dist/client/assets/exportDocument-BlQRd9_m.js +0 -2
- package/dist/client/assets/exportDocument-CNSbjZwu.css +0 -1
- 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/file-search-DDLyyLDU.js +0 -1
- package/dist/client/assets/flowDiagram-HODETNUW-D5Gy0wmg.js +0 -1
- package/dist/client/assets/forth-Cezjo90N.js +0 -1
- package/dist/client/assets/fr-FR-QI2XZNT7-y8kXd8LA.js +0 -12
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BHgOYiZz.js +0 -292
- package/dist/client/assets/gitGraph-4MIJSDKK-DYlXv_yJ.js +0 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Dl__X3Sk.js +0 -106
- package/dist/client/assets/gl-ES-TLYCNOZZ-Br-Fhff-.js +0 -6
- package/dist/client/assets/graphlib-DS17s2tU.js +0 -1
- 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-DgzW5zAy.js +0 -1
- package/dist/client/assets/index-D3RER1SZ.js +0 -1023
- package/dist/client/assets/index-DREVKl_K.css +0 -1
- package/dist/client/assets/info-A6RAGUB7-BlU-8_xu.js +0 -1
- package/dist/client/assets/infoDiagram-27XIBGKW-DBpoANC9.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/javascript-BWjar7HY.js +0 -1
- package/dist/client/assets/javascript-D-FtdkNC.js +0 -1
- package/dist/client/assets/jsx-runtime-BpzPEenQ.js +0 -1
- 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/line-BFl3ujec.js +0 -1
- package/dist/client/assets/linear-n-3HSMUF.js +0 -1
- 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/mermaid-parser.core-Bl0efOMt.js +0 -4
- package/dist/client/assets/mermaid.core-BrY09czX.js +0 -11
- package/dist/client/assets/mermaid.core-DfcNfOTv.js +0 -1
- 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/packet-AYTQ26CC-BSJEH9Lb.js +0 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-Bi2Iml7Z.js +0 -1
- package/dist/client/assets/percentages-ETZPVQEE-DFxFqXgH.js +0 -1
- package/dist/client/assets/pie-WAS4IAKB-qxv01Y8W.js +0 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-_gYXnMoi.js +0 -39
- 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-CfxJYldJ.js +0 -41
- package/dist/client/assets/preview-render-compiler-Cu8_i9iS.js +0 -1
- package/dist/client/assets/preview-render-worker-c4Yi93qW.js +0 -66
- package/dist/client/assets/prod-BiJL30sl.js +0 -1
- package/dist/client/assets/prod-qAk7rHa4.js +0 -177
- 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-BoIK_wuG.js +0 -1
- package/dist/client/assets/radar-RG4KPBEZ-B6h6pWOs.js +0 -1
- package/dist/client/assets/railroad-74A4TZTK-CGtTWdGc.js +0 -1
- package/dist/client/assets/railroad-abnf-HS5TGJTU-Cq7y22IA.js +0 -1
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-V0aQVv9m.js +0 -1
- package/dist/client/assets/railroad-peg-WCYAUIDC-BQiIsX_p.js +0 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BVA5UbMu.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-DcmnGcXU.js +0 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-B5HHkRT2.js +0 -40
- 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/solr-BBopId9w.js +0 -1
- package/dist/client/assets/src-oBChb5qS.js +0 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-CmqxyRGx.js +0 -1
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-zoLLQVyh.js +0 -1
- package/dist/client/assets/sv-SE-JTOBZRGL-9-IUtVkO.js +0 -12
- package/dist/client/assets/swimlanes-42K2YHIH-Bmgb9Zld.js +0 -1
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DS-KQN37.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/treeView-Q6P3EWNA-BTTYcvrF.js +0 -1
- package/dist/client/assets/treemap-WGGIJYW6-Cg7tyfH8.js +0 -1
- 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-iZLhMJKe.js +0 -6
- package/dist/client/assets/vennDiagram-4TSXK5OY-DNdUC_Xj.js +0 -34
- package/dist/client/assets/vi-VN-P3NDEVPS-BB0Fu9ck.js +0 -7
- package/dist/client/assets/wardley-WFR3VGLG-C6N1rULY.js +0 -1
- package/dist/client/assets/wiki-link-resolver-DFIwErjc.js +0 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-CoIR8CBX.js +0 -7
- package/dist/client/assets/yjs-provider-reset-guard-9ul1qF6k.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/integrations/pi/index.ts +0 -94
- package/src/server/domain/collaboration/protocol.js +0 -6
- /package/dist/client/assets/{vault-api-client-C3mlS_4N.css → auth-gate-C3mlS_4N.css} +0 -0
- /package/dist/client/assets/{base-BYODPHdS.js → github.min-DBihDoic.js} +0 -0
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ Tunnel: disabled
|
|
|
49
49
|
Ready for collaboration. Press Ctrl+C to stop.
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
Prefer Homebrew or source install? Jump to [Installation options](
|
|
52
|
+
Prefer Homebrew or source install? Jump to [Installation options](docs/installation.md).
|
|
53
53
|
|
|
54
54
|
## See it in action
|
|
55
55
|
|
|
@@ -85,68 +85,6 @@ Prefer video? [Open the WebM demo](https://raw.githubusercontent.com/andes90/col
|
|
|
85
85
|
- Editing notes and diagrams together while keeping everything as plain files on disk
|
|
86
86
|
- Giving browser access to collaborators who do not use your local markdown setup
|
|
87
87
|
|
|
88
|
-
## Installation options
|
|
89
|
-
|
|
90
|
-
### Requirements
|
|
91
|
-
|
|
92
|
-
- macOS, Linux, or Windows (via WSL2)
|
|
93
|
-
- Node.js 26 for `npx` and source installs
|
|
94
|
-
- ripgrep for global text search. Install with `brew install ripgrep` on macOS, `apk add ripgrep` on Alpine, or `apt install ripgrep` on Debian/Ubuntu. Docker images already include it.
|
|
95
|
-
|
|
96
|
-
### Run via npx (Node.js)
|
|
97
|
-
|
|
98
|
-
If you have Node.js installed, you can run CollabMD directly without installing it globally:
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
npx collabmd@latest ~/my-vault --no-tunnel
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Open `http://localhost:1234`.
|
|
105
|
-
|
|
106
|
-
### Install with Homebrew
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
brew tap andes90/tap
|
|
110
|
-
brew install collabmd
|
|
111
|
-
collabmd ~/my-vault --no-tunnel
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Or in a single command:
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
brew install andes90/tap/collabmd
|
|
118
|
-
collabmd ~/my-vault --no-tunnel
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
Open `http://localhost:1234`.
|
|
122
|
-
|
|
123
|
-
### Install from source
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
git clone https://github.com/andes90/collabmd.git
|
|
127
|
-
cd collabmd
|
|
128
|
-
npm install
|
|
129
|
-
npm run build
|
|
130
|
-
npm link # optional: makes `collabmd` available globally
|
|
131
|
-
collabmd ~/my-vault --no-tunnel
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
Open `http://localhost:1234`.
|
|
135
|
-
|
|
136
|
-
For a safer first run, start local-only:
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
collabmd ~/my-vault --no-tunnel
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
If you want to share the session over the internet, protect it first:
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
collabmd ~/my-vault --auth password
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
If `cloudflared` is installed, CollabMD starts a quick tunnel by default unless you pass `--no-tunnel`.
|
|
149
|
-
|
|
150
88
|
## Share with a collaborator
|
|
151
89
|
|
|
152
90
|
If you want to share the workspace over the internet, start with password auth:
|
|
@@ -167,59 +105,11 @@ Then share the printed URL and password with your collaborator. If `cloudflared`
|
|
|
167
105
|
- If `cloudflared` is installed, CollabMD may expose the app through a Cloudflare Quick Tunnel unless you pass `--no-tunnel`
|
|
168
106
|
- `--auth oidc` requires a stable `PUBLIC_BASE_URL`; Quick Tunnel URLs are not supported for OIDC
|
|
169
107
|
|
|
170
|
-
## Connect an AI agent
|
|
171
|
-
|
|
172
|
-
Enable MCP Streamable HTTP access:
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
COLLABMD_AGENT_ACCESS_ENABLED=true collabmd --no-tunnel
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
CollabMD exposes `/mcp`, or `<BASE_PATH>/mcp` when a base path is configured, with these tools:
|
|
179
|
-
|
|
180
|
-
- `list_documents`, `list_workspace_entries`, `search_vault`, and `read_document`
|
|
181
|
-
- `inspect_document_references` for resolved and missing wiki-links, embeds, public video embeds, and backlinks
|
|
182
|
-
- `validate_document` for missing Markdown references and unsupported public video embeds
|
|
183
|
-
- `render_diagram` for standalone or fenced PlantUML through remote MCP and Mermaid or PlantUML through WebMCP
|
|
184
|
-
- `apply_text_edits` with exact replacements and revision conflict protection
|
|
185
|
-
- `create_document`
|
|
186
|
-
- `create_excalidraw` and `edit_excalidraw` for canonical element creation, updates, relationship-aware translation, standalone text auto-resizing, same-ID replacement, explicit paint-order changes, deletion, and optional same-revision verification
|
|
187
|
-
- `inspect_excalidraw` for paint order, bounds, bindings, text layout properties, distant bound endpoints, connector/component intersections, unintended overlaps, occlusion, clipping, and validity warnings
|
|
188
|
-
- `render_excalidraw` for PNG or SVG verification previews with renderer and parity metadata
|
|
189
|
-
- `verify_excalidraw` to inspect and render one exact revision with compact inspection; use `inspect_excalidraw` for per-element summaries
|
|
190
|
-
- `get_collabmd_syntax`
|
|
191
|
-
|
|
192
|
-
`search_vault` uses the server's ripgrep installation. Install `rg` on source or npm deployments; the Docker image already includes it.
|
|
193
|
-
|
|
194
|
-
Agent text writes support Markdown, HTML, Mermaid, PlantUML, and Structurizr. Excalidraw writes use the dedicated element tools. Base, draw.io, PDF, images, delete, rename, Git, and publish are not writable through Agent Access.
|
|
195
|
-
|
|
196
|
-
Remote MCP renders PlantUML through the configured PlantUML service; Mermaid rendering requires WebMCP because Mermaid needs a browser layout engine. Remote MCP Excalidraw rendering uses the basic element types supported by the agent tools. The `collabmd-basic-svg` renderer is intended for layout verification rather than pixel-identical Excalidraw reproduction and returns `preview-not-pixel-identical`. WebMCP replaces these previews with Excalidraw's official browser renderer.
|
|
197
|
-
|
|
198
|
-
With password or OIDC auth, open **More actions → Connect AI Agent** after signing in. Create a named connection, choose read/edit scope, and copy the token shown once. Tokens expire after 30 days by default and can be revoked from the same dialog. OIDC connections retain Collaborator attribution; shared-password connections are workspace-level because password sessions have no individual identity.
|
|
199
|
-
|
|
200
|
-
Use these connection details with any Streamable HTTP MCP client:
|
|
201
|
-
|
|
202
|
-
```text
|
|
203
|
-
URL: https://notes.example.com/mcp
|
|
204
|
-
Transport: Streamable HTTP
|
|
205
|
-
Authorization: Bearer <token>
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
For protected workspaces, configure the generated token as a bearer credential in the MCP client. For `AUTH_STRATEGY=none`, omit the bearer token; MCP uses the same anonymous access policy as the web app, so anyone who can reach `/mcp` can read, edit, and create supported Vault Content.
|
|
209
|
-
|
|
210
|
-
CollabMD uses preconfigured bearer credentials rather than MCP OAuth enrollment.
|
|
211
|
-
|
|
212
|
-
The `Authorization` header is required for password and OIDC workspaces. Omit it for `AUTH_STRATEGY=none`.
|
|
213
|
-
|
|
214
|
-
Remote endpoints should use HTTPS. `COLLABMD_AGENT_ALLOWED_HOSTS` adds comma-separated MCP hostnames accepted for password/OIDC requests and browser-origin requests. OIDC automatically allows the hostname from `PUBLIC_BASE_URL`; localhost is always allowed. Native no-auth MCP clients normally omit `Origin` and remain anonymous; browser-origin MCP requests must use an allowed hostname to prevent DNS rebinding.
|
|
215
|
-
|
|
216
|
-
Vault text returned to an agent is untrusted input. Never paste managed Agent Access tokens into agent prompts or chat history. Treat every no-auth workspace URL as anonymous automated write access to the Vault.
|
|
217
|
-
|
|
218
108
|
## Current limitations
|
|
219
109
|
|
|
220
110
|
- Single-instance deployment only: collaboration room state is kept in-process and is not shared across replicas
|
|
221
111
|
- `oidc` currently supports Google only
|
|
222
|
-
- Hosted workspace mode
|
|
112
|
+
- Hosted workspace mode now includes a basic Team Settings UI (collaborators, pending invitations, roles, and access history) plus claim, setup, and invitation-acceptance screens; invitation email delivery, GitHub callback redirect polish, and GitHub App checkout/publish wiring are still pending
|
|
223
113
|
- Text-anchored comments support markdown, Mermaid, PlantUML, and Structurizr DSL files. Excalidraw supports element-anchored threads; draw.io comments are not supported
|
|
224
114
|
- WebMCP requires experimental browser support and an active CollabMD tab; for local Chrome testing, enable `chrome://flags/#enable-webmcp-testing`. It uses the browser session rather than an Agent Connection and does not provide remote access, per-agent scopes, delete, rename, attachments, Git, commit, or publish tools
|
|
225
115
|
- Windows use is supported via WSL2 rather than native Windows execution
|
|
@@ -233,7 +123,7 @@ collabmd ~/my-vault --no-tunnel
|
|
|
233
123
|
CollabMD starts a local server, scans the vault, and opens a browser-based editor with:
|
|
234
124
|
|
|
235
125
|
- **File explorer sidebar** — upload, browse, create, rename, and delete `.md`, `.markdown`, `.mdx`, `.html`, `.htm`, `.base`, `.mmd`, `.mermaid`, `.puml`, `.plantuml`, `.dsl`, `.excalidraw`, `.drawio`, `.pdf`, and supported image files plus folders
|
|
236
|
-
- **Live preview** — rendered as you type, with sandboxed static HTML, syntax-highlighted code blocks, public video embeds, plus Mermaid, PlantUML, and Structurizr diagrams
|
|
126
|
+
- **Live preview** — rendered as you type, with sandboxed static HTML, syntax-highlighted code blocks, public video embeds, KaTeX math (`$...$` and `$$...$$`), plus Mermaid, PlantUML, and Structurizr diagrams
|
|
237
127
|
- **Anchored comments and diagram links** — add comments from the editor or selected Excalidraw elements, reopen threads in context, and link Excalidraw elements to other vault diagrams with focused navigation
|
|
238
128
|
- **`[[wiki-links]]` + backlinks** — jump between notes and inspect linked mentions
|
|
239
129
|
- **Room chat** — discuss changes without leaving the workspace
|
|
@@ -254,555 +144,16 @@ Markdown video embeds are opt-in and use standard image syntax such as `![Video]
|
|
|
254
144
|
|
|
255
145
|
Your filesystem is the source of truth. CollabMD reads files from disk, uses Yjs for realtime collaboration, and continuously writes plain text back to disk as you type. External changes from tools like Obsidian, direct file writes, or git-driven file updates are watched and reconciled back into live rooms and the explorer. The file explorer can import multiple supported vault files at once; uploads preserve their names and bytes, reject duplicates, and include PDF files for readonly preview.
|
|
256
146
|
|
|
257
|
-
## Usage
|
|
258
|
-
|
|
259
|
-
```bash
|
|
260
|
-
collabmd [directory] [options]
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
### Arguments
|
|
264
|
-
|
|
265
|
-
| Argument | Description |
|
|
266
|
-
|----------|-------------|
|
|
267
|
-
| `directory` | Path to the vault directory (default: current directory) |
|
|
268
|
-
|
|
269
|
-
### Options
|
|
270
|
-
|
|
271
|
-
| Option | Description | Default |
|
|
272
|
-
|--------|-------------|---------|
|
|
273
|
-
| `-p, --port` | Port to listen on | `1234` |
|
|
274
|
-
| `--host` | Host to bind to | `127.0.0.1` |
|
|
275
|
-
| `--auth` | Auth strategy: `none`, `password`, `oidc` | `none` |
|
|
276
|
-
| `--auth-password` | Password for `--auth password` | generated per run |
|
|
277
|
-
| `--local-plantuml` | Start the bundled local docker-compose PlantUML service | off |
|
|
278
|
-
| `--local-structurizr` | Start the bundled local Structurizr renderer | off |
|
|
279
|
-
| `--no-tunnel` | Don't start Cloudflare Tunnel | tunnel on |
|
|
280
|
-
| `-v, --version` | Show version | |
|
|
281
|
-
| `-h, --help` | Show help | |
|
|
282
|
-
|
|
283
|
-
### Examples
|
|
284
|
-
|
|
285
|
-
```bash
|
|
286
|
-
# Serve the current directory locally
|
|
287
|
-
collabmd --no-tunnel
|
|
288
|
-
|
|
289
|
-
# Serve a specific vault locally
|
|
290
|
-
collabmd ~/my-vault --no-tunnel
|
|
291
|
-
|
|
292
|
-
# Use a custom port, no tunnel
|
|
293
|
-
collabmd --port 3000 --no-tunnel
|
|
294
|
-
|
|
295
|
-
# Share with collaborators using a generated password
|
|
296
|
-
collabmd --auth password
|
|
297
|
-
|
|
298
|
-
# Require an explicit password
|
|
299
|
-
collabmd --auth password --auth-password "shared-secret"
|
|
300
|
-
|
|
301
|
-
# Use Google OIDC on a stable public domain
|
|
302
|
-
PUBLIC_BASE_URL=https://notes.example.com \
|
|
303
|
-
AUTH_OIDC_CLIENT_ID=your-google-client-id \
|
|
304
|
-
AUTH_OIDC_CLIENT_SECRET=your-google-client-secret \
|
|
305
|
-
collabmd --auth oidc --no-tunnel
|
|
306
|
-
|
|
307
|
-
# Use the local docker-compose PlantUML service
|
|
308
|
-
collabmd --local-plantuml
|
|
309
|
-
|
|
310
|
-
# Use the local Structurizr renderer for .dsl workspaces
|
|
311
|
-
collabmd --local-structurizr
|
|
312
|
-
|
|
313
|
-
# Serve an Obsidian vault
|
|
314
|
-
collabmd ~/Documents/Obsidian/MyVault
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
## Public access
|
|
318
|
-
|
|
319
|
-
CollabMD can optionally expose the session using a [Cloudflare Quick Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/). Since the editor uses same-origin WebSocket routing (`/ws/:file`), the tunnel works for both HTTP and collaboration traffic.
|
|
320
|
-
|
|
321
|
-
If you are exposing the session publicly, `collabmd --auth password` is the intended first-line protection. When you do not pass `--auth-password`, CollabMD generates a password for that host run and prints it in the terminal. Restarting the app rotates that password and the signed session secret.
|
|
322
|
-
|
|
323
|
-
To share safely:
|
|
324
|
-
|
|
325
|
-
```bash
|
|
326
|
-
collabmd ~/my-vault --auth password
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
`cloudflared` is optional. Install it only if you want public tunnel access:
|
|
330
|
-
|
|
331
|
-
- macOS: `brew install cloudflared`
|
|
332
|
-
- Linux/Windows: [official installer](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/)
|
|
333
|
-
|
|
334
|
-
To disable the tunnel:
|
|
335
|
-
|
|
336
|
-
```bash
|
|
337
|
-
collabmd --no-tunnel
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
### Google OIDC setup
|
|
341
|
-
|
|
342
|
-
`--auth oidc` uses Google OpenID Connect with the authorization code + PKCE flow.
|
|
343
|
-
|
|
344
|
-
For the full Google Cloud Console walkthrough, including where to create the OAuth client and copy the client ID/client secret, see [docs/google-oidc-setup.md](https://github.com/andes90/collabmd/blob/master/docs/google-oidc-setup.md).
|
|
345
|
-
|
|
346
|
-
Required environment variables:
|
|
347
|
-
|
|
348
|
-
```bash
|
|
349
|
-
PUBLIC_BASE_URL=https://notes.example.com
|
|
350
|
-
AUTH_OIDC_CLIENT_ID=your-google-client-id
|
|
351
|
-
AUTH_OIDC_CLIENT_SECRET=your-google-client-secret
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
In Google Cloud Console, create a Web application OAuth client and register this redirect URI:
|
|
355
|
-
|
|
356
|
-
```text
|
|
357
|
-
https://notes.example.com/api/auth/oidc/callback
|
|
358
|
-
```
|
|
359
|
-
|
|
360
|
-
If you mount the app under a subpath with `BASE_PATH=/collabmd`, the redirect URI becomes:
|
|
361
|
-
|
|
362
|
-
```text
|
|
363
|
-
https://notes.example.com/collabmd/api/auth/oidc/callback
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
Notes:
|
|
367
|
-
|
|
368
|
-
- OIDC requires a stable public URL and is not compatible with ephemeral Cloudflare Quick Tunnel URLs
|
|
369
|
-
- After sign-in, the verified Google name/email become the displayed app identity and the default in-app git commit author
|
|
370
|
-
- Set `AUTH_SESSION_MAX_AGE_MS` to keep the signed-in session valid longer than the default token lifetime
|
|
371
|
-
- You can restrict sign-in to exact users with `AUTH_OIDC_ALLOWED_EMAILS` or entire domains with `AUTH_OIDC_ALLOWED_DOMAINS`
|
|
372
|
-
- The CLI disables the tunnel automatically when `--auth oidc` is active
|
|
373
|
-
|
|
374
|
-
### Single-tenant hosted workspace mode
|
|
375
|
-
|
|
376
|
-
Hosted workspace mode is for manually provisioned, single-tenant deployments: one CollabMD app replica for one team, one workspace, one vault source, and one hosted metadata store. It is not a shared multi-tenant account system.
|
|
377
|
-
|
|
378
|
-
Hosted mode requires Google OIDC:
|
|
379
|
-
|
|
380
|
-
```bash
|
|
381
|
-
AUTH_STRATEGY=oidc
|
|
382
|
-
PUBLIC_BASE_URL=https://notes.example.com
|
|
383
|
-
AUTH_OIDC_CLIENT_ID=your-google-client-id
|
|
384
|
-
AUTH_OIDC_CLIENT_SECRET=your-google-client-secret
|
|
385
|
-
COLLABMD_HOSTED_ENABLED=true
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
The first Team Admin is created through an email-bound workspace claim. Set the intended admin email and a one-time claim token when provisioning the deployment:
|
|
389
|
-
|
|
390
|
-
```bash
|
|
391
|
-
COLLABMD_HOSTED_CLAIM_EMAIL=admin@example.com
|
|
392
|
-
COLLABMD_HOSTED_CLAIM_TOKEN=generated-one-time-secret
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
The claim is seeded into hosted metadata and expires after 7 days. The claimant must sign in with the matching verified Google email. After claim, Team Admins can manage active memberships, pending invitations, roles, and the access audit trail through the hosted API. The first roles are:
|
|
396
|
-
|
|
397
|
-
- `admin` — can manage team access and configure initial workspace setup
|
|
398
|
-
- `collaborator` — can access, edit, and publish changes after setup is complete
|
|
399
|
-
|
|
400
|
-
Hosted metadata is stored in SQLite and defaults to `.collabmd/hosted.sqlite` inside the vault directory. Override it when the metadata store should live on a separate persistent volume:
|
|
401
|
-
|
|
402
|
-
```bash
|
|
403
|
-
COLLABMD_HOSTED_METADATA_DB_PATH=/data/.collabmd/hosted.sqlite
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
Hosted vault-source setup is GitHub-only in the first version and uses a GitHub App installation flow. Configure the GitHub App credentials on the server:
|
|
407
|
-
|
|
408
|
-
```bash
|
|
409
|
-
COLLABMD_GITHUB_APP_ID=123456
|
|
410
|
-
COLLABMD_GITHUB_APP_SLUG=collabmd
|
|
411
|
-
COLLABMD_GITHUB_APP_PRIVATE_KEY_FILE=/run/secrets/collabmd_github_app_private_key.pem
|
|
412
|
-
```
|
|
413
|
-
|
|
414
|
-
`COLLABMD_GITHUB_APP_PRIVATE_KEY` is also supported for environments that inject the private key directly. The Team Admin starts setup, installs the GitHub App, and selects exactly one repository. CollabMD resolves the installation and repository from GitHub, captures the selected repository's default branch as the configured branch, and stores that vault-source metadata in SQLite. The browser does not directly submit trusted repository or installation metadata.
|
|
415
|
-
|
|
416
|
-
Current backend endpoints include:
|
|
417
|
-
|
|
418
|
-
- `GET /api/hosted/status`
|
|
419
|
-
- `POST /api/hosted/claim`
|
|
420
|
-
- `POST /api/hosted/vault-source/github/setup`
|
|
421
|
-
- `GET /api/hosted/vault-source/github/callback`
|
|
422
|
-
- `GET /api/hosted/memberships`
|
|
423
|
-
- `POST /api/hosted/invitations`
|
|
424
|
-
- `POST /api/hosted/invitations/accept`
|
|
425
|
-
- `GET /api/hosted/audit`
|
|
426
|
-
|
|
427
|
-
Until the Team Settings UI and invitation email delivery are added, these are backend integration points rather than a complete hosted onboarding screen.
|
|
428
|
-
|
|
429
|
-
### Draw.io setup
|
|
430
|
-
|
|
431
|
-
CollabMD uses diagrams.net for `.drawio` rendering and editing. By default it points at the hosted embed runtime:
|
|
432
|
-
|
|
433
|
-
```bash
|
|
434
|
-
COLLABMD_DRAWIO_BASE_URL=https://embed.diagrams.net
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
You can also point it at a self-hosted diagrams.net deployment:
|
|
438
|
-
|
|
439
|
-
```bash
|
|
440
|
-
COLLABMD_DRAWIO_BASE_URL=https://drawio.example.com
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
If the draw.io runtime is unavailable, direct `.drawio` file opens fall back to plain XML editing instead of leaving the file inaccessible.
|
|
444
|
-
|
|
445
|
-
You can also configure the tunnel via environment variables:
|
|
446
|
-
|
|
447
|
-
```bash
|
|
448
|
-
TUNNEL_TARGET_PORT=4000 collabmd
|
|
449
|
-
TUNNEL_TARGET_URL=http://127.0.0.1:4000 collabmd
|
|
450
|
-
CLOUDFLARED_EXTRA_ARGS="--loglevel info" collabmd
|
|
451
|
-
```
|
|
452
|
-
|
|
453
|
-
For the full runtime env var reference, see the `Environment variables` details block in the Development section below.
|
|
454
|
-
|
|
455
|
-
## Docker / Coolify deployment
|
|
456
|
-
|
|
457
|
-
Published image: `ghcr.io/andes90/collabmd:latest`
|
|
458
|
-
|
|
459
|
-
From the vault directory:
|
|
460
|
-
|
|
461
|
-
```bash
|
|
462
|
-
docker run --rm -p 1234:1234 -v "$PWD:/data" ghcr.io/andes90/collabmd:latest
|
|
463
|
-
```
|
|
464
|
-
|
|
465
|
-
Open `http://localhost:1234`. The published Docker image includes `ripgrep`, so global text search works without installing extra packages in the container.
|
|
466
|
-
|
|
467
|
-
The container listens on `0.0.0.0:1234` and stores vault files at `/data`.
|
|
468
|
-
|
|
469
|
-
### Kubernetes / Helm
|
|
470
|
-
|
|
471
|
-
CollabMD now includes a Helm chart at [`packaging/helm/collabmd`](./packaging/helm/collabmd).
|
|
472
|
-
|
|
473
|
-
Use it when you want a Kubernetes-native deployment with:
|
|
474
|
-
|
|
475
|
-
- one supported application replica
|
|
476
|
-
- a persistent volume mounted at `/data`
|
|
477
|
-
- optional ingress
|
|
478
|
-
- optional bundled PlantUML
|
|
479
|
-
- secret-backed auth and private git bootstrap settings
|
|
480
|
-
|
|
481
|
-
Quick start:
|
|
482
|
-
|
|
483
|
-
```bash
|
|
484
|
-
helm install collabmd ./packaging/helm/collabmd
|
|
485
|
-
```
|
|
486
|
-
|
|
487
|
-
For examples covering ingress, OIDC, PlantUML, and private git bootstrap, see [packaging/helm/collabmd/README.md](./packaging/helm/collabmd/README.md).
|
|
488
|
-
|
|
489
|
-
To bootstrap `/data` from a private git repository instead, pass the repo URL plus SSH credentials:
|
|
490
|
-
|
|
491
|
-
```bash
|
|
492
|
-
docker run \
|
|
493
|
-
-p 1234:1234 \
|
|
494
|
-
-v /path/to/persistent/vault:/data \
|
|
495
|
-
-e COLLABMD_GIT_REPO_URL=git@github.com:your-org/your-private-vault.git \
|
|
496
|
-
-e COLLABMD_GIT_SSH_PRIVATE_KEY_B64="$(base64 < ~/.ssh/id_ed25519 | tr -d '\n')" \
|
|
497
|
-
-e COLLABMD_GIT_USER_NAME="CollabMD Bot" \
|
|
498
|
-
-e COLLABMD_GIT_USER_EMAIL="bot@example.com" \
|
|
499
|
-
ghcr.io/andes90/collabmd:latest
|
|
500
|
-
```
|
|
501
|
-
|
|
502
|
-
For a full local and Docker test walkthrough, including key generation and deploy-key setup, see [docs/private-git-deployment.md](https://github.com/andes90/collabmd/blob/master/docs/private-git-deployment.md).
|
|
503
|
-
|
|
504
|
-
When `COLLABMD_GIT_REPO_URL` is set, CollabMD clones into `COLLABMD_VAULT_DIR` on first boot, then reuses that checkout on later starts. If the checkout already exists, startup validates that `origin` matches. Clean checkouts are fast-forwarded to the remote default branch; dirty checkouts are reused as-is and startup skips the sync.
|
|
505
|
-
|
|
506
|
-
On every startup, CollabMD adds `.collabmd/` to the vault's local git exclude file at `.git/info/exclude` so runtime metadata stays out of git status and bulk staging without modifying the repository's tracked `.gitignore`.
|
|
507
|
-
|
|
508
|
-
File-based secrets are also supported and take precedence over base64 input:
|
|
509
|
-
|
|
510
|
-
```bash
|
|
511
|
-
docker run \
|
|
512
|
-
-p 1234:1234 \
|
|
513
|
-
-v /path/to/persistent/vault:/data \
|
|
514
|
-
-v ~/.ssh/id_ed25519:/run/secrets/collabmd_git_key:ro \
|
|
515
|
-
-v ~/.ssh/known_hosts:/run/secrets/collabmd_known_hosts:ro \
|
|
516
|
-
-e COLLABMD_GIT_REPO_URL=git@github.com:your-org/your-private-vault.git \
|
|
517
|
-
-e COLLABMD_GIT_SSH_PRIVATE_KEY_FILE=/run/secrets/collabmd_git_key \
|
|
518
|
-
-e COLLABMD_GIT_SSH_KNOWN_HOSTS_FILE=/run/secrets/collabmd_known_hosts \
|
|
519
|
-
-e COLLABMD_GIT_USER_NAME="CollabMD Bot" \
|
|
520
|
-
-e COLLABMD_GIT_USER_EMAIL="bot@example.com" \
|
|
521
|
-
ghcr.io/andes90/collabmd:latest
|
|
522
|
-
```
|
|
523
|
-
|
|
524
|
-
### Local docker-compose with private diagram renderers
|
|
525
|
-
|
|
526
|
-
The included `docker-compose.yml` runs a prebuilt CollabMD image together with local PlantUML and Structurizr containers. PlantUML SVG rendering and Structurizr `workspace.dsl` previews stay on the private Docker network automatically.
|
|
527
|
-
|
|
528
|
-
```bash
|
|
529
|
-
mkdir -p data/vault
|
|
530
|
-
docker compose up
|
|
531
|
-
```
|
|
532
|
-
|
|
533
|
-
Open `http://localhost:1234`.
|
|
534
|
-
|
|
535
|
-
To test Google OIDC locally with the included compose setup, register this redirect URI in Google Cloud Console:
|
|
536
|
-
|
|
537
|
-
```text
|
|
538
|
-
http://localhost:1234/api/auth/oidc/callback
|
|
539
|
-
```
|
|
540
|
-
|
|
541
|
-
Then start compose with the OIDC env vars:
|
|
542
|
-
|
|
543
|
-
```bash
|
|
544
|
-
AUTH_STRATEGY=oidc \
|
|
545
|
-
PUBLIC_BASE_URL=http://localhost:1234 \
|
|
546
|
-
AUTH_OIDC_CLIENT_ID=your-google-client-id \
|
|
547
|
-
AUTH_OIDC_CLIENT_SECRET=your-google-client-secret \
|
|
548
|
-
docker compose up
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
If you change `COLLABMD_HOST_PORT`, update `PUBLIC_BASE_URL` and the Google redirect URI to match that host port.
|
|
552
|
-
|
|
553
|
-
By default, compose uses `COLLABMD_IMAGE=ghcr.io/andes90/collabmd:latest`. If you want to test a local image while developing instead:
|
|
554
|
-
|
|
555
|
-
```bash
|
|
556
|
-
docker build -t collabmd:local .
|
|
557
|
-
COLLABMD_IMAGE=collabmd:local docker compose up
|
|
558
|
-
```
|
|
559
|
-
|
|
560
|
-
The PlantUML container is published on loopback by default at `http://127.0.0.1:18080`, and Structurizr is published at `http://127.0.0.1:19090` for host-based CLI use:
|
|
561
|
-
|
|
562
|
-
```bash
|
|
563
|
-
npm run start:local-plantuml
|
|
564
|
-
|
|
565
|
-
# Start CollabMD with Structurizr DSL support
|
|
566
|
-
npm run start:local-structurizr -- --no-tunnel
|
|
567
|
-
```
|
|
568
|
-
|
|
569
|
-
To use an existing vault on your machine instead of `./data/vault`:
|
|
570
|
-
|
|
571
|
-
```bash
|
|
572
|
-
HOST_VAULT_DIR=/absolute/path/to/vault docker compose up
|
|
573
|
-
```
|
|
574
|
-
|
|
575
|
-
`HOST_VAULT_DIR` controls the host-side bind mount source. The app uses `COLLABMD_VAULT_DIR` for the in-container vault path and defaults that to `/data` in Docker.
|
|
576
|
-
|
|
577
|
-
To bootstrap the compose-managed vault from a private repo, set the git env vars in `.env` and keep `HOST_VAULT_DIR` on a persistent host path. For file-based SSH auth, point `COLLABMD_GIT_SSH_PRIVATE_KEY_FILE` and `COLLABMD_GIT_SSH_KNOWN_HOSTS_FILE` at mounted secret paths; for simpler setups, set `COLLABMD_GIT_SSH_PRIVATE_KEY_B64` instead.
|
|
578
|
-
|
|
579
|
-
If you want the in-app Git commit action to work inside the container without OIDC, also set `COLLABMD_GIT_USER_NAME` and `COLLABMD_GIT_USER_EMAIL` so CollabMD can configure the checkout identity automatically. With `AUTH_STRATEGY=oidc`, CollabMD uses the signed-in Google identity for each commit instead.
|
|
580
|
-
|
|
581
|
-
To change the host port:
|
|
582
|
-
|
|
583
|
-
```bash
|
|
584
|
-
COLLABMD_HOST_PORT=3000 docker compose up
|
|
585
|
-
```
|
|
586
|
-
|
|
587
|
-
To change the local PlantUML host port used by both `docker compose` and `--local-plantuml`:
|
|
588
|
-
|
|
589
|
-
```bash
|
|
590
|
-
PLANTUML_HOST_PORT=18081 npm run start:local-plantuml
|
|
591
|
-
```
|
|
592
|
-
|
|
593
|
-
Recommended Coolify setup:
|
|
594
|
-
|
|
595
|
-
1. Use the included `Dockerfile`.
|
|
596
|
-
2. Expose port `1234`.
|
|
597
|
-
3. Mount a persistent volume to `/data` for the vault checkout and runtime files. It can be pre-populated with markdown files or start empty when `COLLABMD_GIT_REPO_URL` is enabled.
|
|
598
|
-
4. Add `COLLABMD_GIT_REPO_URL` plus either `COLLABMD_GIT_SSH_PRIVATE_KEY_FILE` or `COLLABMD_GIT_SSH_PRIVATE_KEY_B64` if the vault should be cloned from a private repo.
|
|
599
|
-
5. Mount `known_hosts` and set `COLLABMD_GIT_SSH_KNOWN_HOSTS_FILE` if you want strict host verification.
|
|
600
|
-
6. Add a health check for `GET /health` with enough startup grace for the initial clone.
|
|
601
|
-
7. Run a single replica only because room state is in-process and not shared across instances.
|
|
602
|
-
8. Set `BASE_PATH` if the app is mounted under a subpath such as `/collabmd`.
|
|
603
|
-
9. Set `PUBLIC_WS_BASE_URL` only if your WebSocket endpoint differs from the app origin.
|
|
604
|
-
|
|
605
|
-
For a standard Coolify reverse-proxy setup, the default same-origin WebSocket routing works as-is and you should not need `PUBLIC_WS_BASE_URL`.
|
|
606
|
-
|
|
607
|
-
Health check: `GET /health`
|
|
608
|
-
|
|
609
|
-
## Troubleshooting
|
|
610
|
-
|
|
611
|
-
- `npx collabmd@latest` fails immediately: confirm you are running Node.js 26, which is the supported runtime for source and npm usage
|
|
612
|
-
- The app is reachable only from localhost: pass `--host 0.0.0.0` or set `HOST=0.0.0.0` when you intend to expose it on your network
|
|
613
|
-
- Port `1234` is already in use: pass `--port 3000` or set `PORT` to another free port
|
|
614
|
-
- Tunnel did not start: install `cloudflared`, or pass `--no-tunnel` to stay local-only
|
|
615
|
-
- `--auth oidc` fails on startup: set `PUBLIC_BASE_URL`, `AUTH_OIDC_CLIENT_ID`, and `AUTH_OIDC_CLIENT_SECRET`, and make sure the Google redirect URI matches `/api/auth/oidc/callback`
|
|
616
|
-
- Google login loops back to the auth screen: verify the configured `PUBLIC_BASE_URL` matches the browser URL and that your reverse proxy forwards HTTPS correctly
|
|
617
|
-
- `--local-plantuml` fails: make sure Docker is installed and running, or point `PLANTUML_SERVER_URL` at another PlantUML server
|
|
618
|
-
- Global text search is disabled: install `ripgrep` on the server host and restart CollabMD. Docker images already include `ripgrep`.
|
|
619
|
-
- Private git bootstrap fails on startup: verify `COLLABMD_GIT_REPO_URL` plus either `COLLABMD_GIT_SSH_PRIVATE_KEY_FILE` or `COLLABMD_GIT_SSH_PRIVATE_KEY_B64`
|
|
620
|
-
- WSL2 path issues: run CollabMD against a directory inside your Linux filesystem when possible rather than a mounted Windows path
|
|
621
|
-
|
|
622
|
-
## Development
|
|
623
|
-
|
|
624
|
-
Install dependencies:
|
|
625
|
-
|
|
626
|
-
```bash
|
|
627
|
-
npm install
|
|
628
|
-
```
|
|
629
|
-
|
|
630
|
-
Build and run:
|
|
631
|
-
|
|
632
|
-
```bash
|
|
633
|
-
npm start
|
|
634
|
-
```
|
|
635
|
-
|
|
636
|
-
Open `http://localhost:1234`.
|
|
637
|
-
|
|
638
|
-
Useful commands:
|
|
639
|
-
|
|
640
|
-
```bash
|
|
641
|
-
npm run build # Build the Vite client into dist/client
|
|
642
|
-
npm run check # Syntax check all entry points
|
|
643
|
-
npm run dev:client # Start the Vite dev server with API/WebSocket proxying
|
|
644
|
-
npm run dev:server # Start only the backend server for local frontend development
|
|
645
|
-
npm run start # Build + start server
|
|
646
|
-
npm run start:local-plantuml # Build + start server with local docker-compose PlantUML
|
|
647
|
-
npm run start:local-structurizr # Build + start server with local Structurizr
|
|
648
|
-
npm run start:prod # Start server (expects previous build)
|
|
649
|
-
npm run test # Run unit + e2e tests
|
|
650
|
-
npm run test:unit # Fast Node-based unit tests
|
|
651
|
-
npm run test:e2e # Playwright browser tests
|
|
652
|
-
npm run tunnel # Start only the Cloudflare tunnel
|
|
653
|
-
npm run plantuml:up # Start only the local docker-compose PlantUML service
|
|
654
|
-
npm run plantuml:down # Stop only the local docker-compose PlantUML service
|
|
655
|
-
npm run structurizr:up # Start only the local Structurizr renderer
|
|
656
|
-
npm run structurizr:down # Stop only the local Structurizr renderer
|
|
657
|
-
npm run capture:readme-assets # Regenerate the README screenshot and demo assets
|
|
658
|
-
```
|
|
659
|
-
|
|
660
|
-
## Testing
|
|
661
|
-
|
|
662
|
-
### Unit tests
|
|
663
|
-
|
|
664
|
-
```bash
|
|
665
|
-
npm run test:unit
|
|
666
|
-
```
|
|
667
|
-
|
|
668
|
-
Covers the vault file store, HTTP endpoints, collaboration room behavior, WebSocket integration, and supporting domain logic.
|
|
669
|
-
|
|
670
|
-
### End-to-end tests
|
|
671
|
-
|
|
672
|
-
```bash
|
|
673
|
-
npx playwright install chromium # first time only
|
|
674
|
-
npm run test:e2e
|
|
675
|
-
```
|
|
676
|
-
|
|
677
|
-
Playwright boots the full app against the `test-vault/` directory and verifies the file explorer, editor, preview, collaboration, chat, outline, and scroll sync flows.
|
|
678
|
-
|
|
679
|
-
### All tests
|
|
680
|
-
|
|
681
|
-
```bash
|
|
682
|
-
npm run test
|
|
683
|
-
```
|
|
684
|
-
|
|
685
|
-
<details>
|
|
686
|
-
<summary>Architecture</summary>
|
|
687
|
-
|
|
688
|
-
```text
|
|
689
|
-
bin/
|
|
690
|
-
collabmd.js CLI entry point
|
|
691
|
-
src/
|
|
692
|
-
client/
|
|
693
|
-
app/ Vite-owned HTML entries and browser entry modules
|
|
694
|
-
application/ app orchestration, preview rendering, workspace coordination
|
|
695
|
-
bootstrap/ app-shell composition and startup wiring
|
|
696
|
-
domain/ markdown editing, wiki-link, room, and vault helpers
|
|
697
|
-
infrastructure/ runtime config, auth bootstrap, browser ports, collaborative editor session
|
|
698
|
-
presentation/ file explorer, backlinks, quick switcher, outline, scroll sync, theme, layout
|
|
699
|
-
static/ Vite passthrough assets copied into the built client
|
|
700
|
-
styles/ app CSS
|
|
701
|
-
domain/ shared wiki-link helpers
|
|
702
|
-
server/
|
|
703
|
-
auth/ strategy selection and cookie-backed auth sessions
|
|
704
|
-
config/ environment loading
|
|
705
|
-
domain/ collaboration room model, registry, backlink index, server-side abstractions
|
|
706
|
-
infrastructure/ HTTP handlers, git service, vault file store, PlantUML, WebSocket gateway
|
|
707
|
-
startup/ preflight vault bootstrap, including remote git checkout setup
|
|
708
|
-
dist/
|
|
709
|
-
client/ built client served by the backend and packaged for release
|
|
710
|
-
scripts/
|
|
711
|
-
cloudflare-tunnel.mjs Cloudflare quick tunnel helper
|
|
712
|
-
local-plantuml-compose.mjs
|
|
713
|
-
capture-readme-assets.mjs
|
|
714
|
-
vite.config.mjs Vite multi-page build and dev-server proxy config
|
|
715
|
-
```
|
|
716
|
-
|
|
717
|
-
</details>
|
|
718
|
-
|
|
719
|
-
<details>
|
|
720
|
-
<summary>Environment variables</summary>
|
|
721
|
-
|
|
722
|
-
| Variable | Description | Default |
|
|
723
|
-
|----------|-------------|---------|
|
|
724
|
-
| `HOST` | Bind host | `127.0.0.1` (dev), `0.0.0.0` (prod) |
|
|
725
|
-
| `PORT` | HTTP + WebSocket port | `1234` |
|
|
726
|
-
| `AUTH_STRATEGY` | Auth strategy: `none`, `password`, `oidc` | `none` |
|
|
727
|
-
| `AUTH_PASSWORD` | Shared password for `AUTH_STRATEGY=password` | generated per run |
|
|
728
|
-
| `AUTH_SESSION_COOKIE_NAME` | Session cookie name | `collabmd_auth` |
|
|
729
|
-
| `AUTH_SESSION_SECRET` | Cookie signing secret | generated per run |
|
|
730
|
-
| `AUTH_SESSION_MAX_AGE_MS` | Optional auth session lifetime in milliseconds; when set, cookies persist until that expiry | |
|
|
731
|
-
| `PUBLIC_BASE_URL` | Stable public app origin required for `AUTH_STRATEGY=oidc` | |
|
|
732
|
-
| `AUTH_OIDC_CLIENT_ID` | Google OAuth client ID used for `AUTH_STRATEGY=oidc` | |
|
|
733
|
-
| `AUTH_OIDC_CLIENT_SECRET` | Google OAuth client secret used for `AUTH_STRATEGY=oidc` | |
|
|
734
|
-
| `AUTH_OIDC_ALLOWED_EMAILS` | Comma-separated exact email allowlist for `AUTH_STRATEGY=oidc` | |
|
|
735
|
-
| `AUTH_OIDC_ALLOWED_DOMAINS` | Comma-separated email domain allowlist for `AUTH_STRATEGY=oidc` | |
|
|
736
|
-
| `COLLABMD_AGENT_ACCESS_ENABLED` | Enable scoped MCP Agent Access | `false` |
|
|
737
|
-
| `COLLABMD_AGENT_ALLOWED_HOSTS` | Extra comma-separated MCP hostnames accepted for password/OIDC and browser-origin requests | |
|
|
738
|
-
| `COLLABMD_AGENT_REQUESTS_PER_MINUTE` | Maximum MCP tool calls per managed connection or anonymous client address each minute | `120` |
|
|
739
|
-
| `COLLABMD_AGENT_CONNECTION_TTL_MS` | Managed Agent Connection lifetime in milliseconds | `2592000000` |
|
|
740
|
-
| `COLLABMD_AGENT_METADATA_DB_PATH` | SQLite path for managed Agent Connections | `<vault>/.collabmd/agent-access.sqlite` |
|
|
741
|
-
| `BASE_PATH` | URL path prefix for subpath deployments | |
|
|
742
|
-
| `COLLABMD_HOSTED_ENABLED` | Enable single-tenant hosted workspace mode; requires `AUTH_STRATEGY=oidc` | `false` |
|
|
743
|
-
| `COLLABMD_HOSTED_METADATA_DB_PATH` | SQLite database path for hosted workspace metadata | `<vault>/.collabmd/hosted.sqlite` |
|
|
744
|
-
| `COLLABMD_HOSTED_CLAIM_EMAIL` | Verified Google email allowed to claim the first Team Admin role | |
|
|
745
|
-
| `COLLABMD_HOSTED_CLAIM_TOKEN` | One-time token required for the first workspace claim | |
|
|
746
|
-
| `COLLABMD_GITHUB_APP_ID` | GitHub App ID used for hosted vault-source setup | |
|
|
747
|
-
| `COLLABMD_GITHUB_APP_SLUG` | GitHub App slug used to build the installation setup URL | |
|
|
748
|
-
| `COLLABMD_GITHUB_APP_PRIVATE_KEY` | GitHub App private key; `\n` escapes are converted to newlines | |
|
|
749
|
-
| `COLLABMD_GITHUB_APP_PRIVATE_KEY_FILE` | File path for the GitHub App private key; used when direct key input is not set | |
|
|
750
|
-
| `COLLABMD_GITHUB_API_BASE_URL` | GitHub API base URL for hosted vault-source setup | `https://api.github.com` |
|
|
751
|
-
| `COLLABMD_GITHUB_HTML_BASE_URL` | GitHub web base URL for installation setup | `https://github.com` |
|
|
752
|
-
| `COLLABMD_GITHUB_SETUP_FLOW_COOKIE_NAME` | Signed cookie name for the GitHub App setup callback flow | `collabmd_github_setup_flow` |
|
|
753
|
-
| `PLANTUML_SERVER_URL` | Upstream PlantUML server base URL used for server-side SVG rendering | `https://www.plantuml.com/plantuml` |
|
|
754
|
-
| `STRUCTURIZR_SERVER_URL` | Structurizr Local-compatible sidecar base URL used for `.dsl` previews | disabled |
|
|
755
|
-
| `COLLABMD_STRUCTURIZR_MIRROR_DIR` | Writable disposable mirror directory passed to Structurizr | `<vault>/.collabmd/structurizr` |
|
|
756
|
-
| `COLLABMD_STRUCTURIZR_TRUSTED_EXECUTABLE_DSL` | Allow Structurizr `!script` and `!plugin` directives; keep false for untrusted vaults | `false` |
|
|
757
|
-
| `COLLABMD_DRAWIO_BASE_URL` | diagrams.net base URL used for `.drawio` viewing and editing | `https://embed.diagrams.net` |
|
|
758
|
-
| `COLLABMD_WIKI_LINK_AUTO_CREATE` | Create missing markdown files when clicking unresolved wiki-links; set to `false` to disable | `true` |
|
|
759
|
-
| `COLLABMD_SEARCH_MAX_FILE_SIZE` | Maximum size of each file considered by global text search; supports bytes or `K`, `M`, and `G` suffixes | `1M` |
|
|
760
|
-
| `COLLABMD_SEARCH_MAX_BUFFER_BYTES` | Maximum ripgrep output buffer for one global text search | `2097152` |
|
|
761
|
-
| `COLLABMD_MAX_PDF_UPLOAD_BYTES` | Maximum size of a PDF upload in bytes; other uploads remain limited to the default 8 MiB request-body limit | `52428800` |
|
|
762
|
-
| `COLLABMD_VAULT_DIR` | Vault directory path | CLI: current directory, server entrypoint: `data/vault`, Docker: `/data` |
|
|
763
|
-
| `COLLABMD_GIT_ENABLED` | Enable or disable git integration in the UI and API | `true` |
|
|
764
|
-
| `COLLABMD_GIT_REPO_URL` | Remote git repository used to bootstrap the vault checkout | |
|
|
765
|
-
| `COLLABMD_GIT_SSH_PRIVATE_KEY_FILE` | SSH private key file path for remote git auth; preferred over base64 input | |
|
|
766
|
-
| `COLLABMD_GIT_SSH_PRIVATE_KEY_B64` | Base64-encoded SSH private key used when no key file path is provided | |
|
|
767
|
-
| `COLLABMD_GIT_SSH_KNOWN_HOSTS_FILE` | Optional `known_hosts` file path for strict SSH host verification | |
|
|
768
|
-
| `COLLABMD_GIT_USER_NAME` | Fallback git author/committer name for in-app commits when OIDC is not active | |
|
|
769
|
-
| `COLLABMD_GIT_USER_EMAIL` | Fallback git author/committer email for in-app commits when OIDC is not active | |
|
|
770
|
-
| `WS_BASE_PATH` | WebSocket base path | `/ws` |
|
|
771
|
-
| `PUBLIC_WS_BASE_URL` | Public WebSocket URL override for reverse proxies | |
|
|
772
|
-
| `HTTP_KEEP_ALIVE_TIMEOUT_MS` | Keep-alive timeout | `5000` |
|
|
773
|
-
| `HTTP_HEADERS_TIMEOUT_MS` | Header read timeout | `60000` |
|
|
774
|
-
| `HTTP_REQUEST_TIMEOUT_MS` | Request timeout | `30000` |
|
|
775
|
-
| `WS_HEARTBEAT_INTERVAL_MS` | Heartbeat interval for evicting dead clients | `30000` |
|
|
776
|
-
| `WS_ROOM_IDLE_GRACE_MS` | Delay before closing empty collaboration rooms to disk | `15000` |
|
|
777
|
-
| `WS_MAX_BUFFERED_AMOUNT_BYTES` | Max outbound buffer per WebSocket | `16777216` |
|
|
778
|
-
| `WS_MAX_PAYLOAD_BYTES` | Max inbound WebSocket frame | `16777216` |
|
|
779
|
-
| `CLOUDFLARED_BIN` | `cloudflared` binary path | `cloudflared` |
|
|
780
|
-
| `TUNNEL_TARGET_HOST` | Tunnel target host | `127.0.0.1` |
|
|
781
|
-
| `TUNNEL_TARGET_PORT` | Tunnel target port | `1234` |
|
|
782
|
-
| `TUNNEL_TARGET_URL` | Full tunnel target URL override | |
|
|
783
|
-
| `CLOUDFLARED_EXTRA_ARGS` | Extra `cloudflared` flags | |
|
|
784
|
-
|
|
785
|
-
Copy the example file:
|
|
786
|
-
|
|
787
|
-
```bash
|
|
788
|
-
cp .env.example .env
|
|
789
|
-
```
|
|
790
|
-
|
|
791
|
-
</details>
|
|
792
|
-
|
|
793
|
-
## Notes
|
|
794
147
|
|
|
795
|
-
|
|
796
|
-
- When `COLLABMD_GIT_REPO_URL` is set, startup clones the configured repo into `COLLABMD_VAULT_DIR` on first boot and reuses an existing same-origin checkout on later starts.
|
|
797
|
-
- If `COLLABMD_GIT_SSH_KNOWN_HOSTS_FILE` is not set, SSH falls back to `StrictHostKeyChecking=accept-new`.
|
|
798
|
-
- External filesystem edits are reconciled back into active rooms and the explorer. Ambiguous watcher bursts still fall back to batched workspace reconciliation.
|
|
799
|
-
- `.obsidian`, `.git`, `.trash`, and `node_modules` directories are ignored.
|
|
800
|
-
- Markdown, HTML, Base, Mermaid, PlantUML, Structurizr DSL, draw.io, Excalidraw, PDF, and image files are tracked by the vault tree; global text search indexes supported text formats.
|
|
801
|
-
- PlantUML preview rendering is server-side and uses `PLANTUML_SERVER_URL`; point it at a self-hosted renderer if you do not want to use the public PlantUML service.
|
|
802
|
-
- Structurizr previews use a read-only official Local sidecar and a disposable `.collabmd/structurizr` mirror; the authoritative vault is never mounted into the renderer as its data directory.
|
|
803
|
-
- `docker compose up` uses the included local PlantUML and Structurizr services and avoids public diagram renderers by default. The initial git clone may also require a longer health-check grace period than a purely local vault.
|
|
804
|
-
- `collabmd --local-plantuml` and `npm run start:local-plantuml` start the local PlantUML compose service. `collabmd --local-structurizr` starts Structurizr Local against `http://127.0.0.1:${STRUCTURIZR_HOST_PORT:-19090}`.
|
|
148
|
+
## Docs
|
|
805
149
|
|
|
150
|
+
- [Installation](docs/installation.md) — requirements, npx, Homebrew, and source installs
|
|
151
|
+
- [Configuration](docs/configuration.md) — CLI usage and environment variables
|
|
152
|
+
- [Auth and access](docs/auth-and-access.md) — password, Google OIDC, and hosted workspaces
|
|
153
|
+
- [Deployment](docs/deployment.md) — Docker, Coolify, Helm, and private git
|
|
154
|
+
- [AI agents](docs/ai-agents.md) — MCP and WebMCP access
|
|
155
|
+
- [Development](docs/dev/development.md) — architecture, dev commands, and tests
|
|
156
|
+
- [Troubleshooting](docs/troubleshooting.md)
|
|
806
157
|
## License
|
|
807
158
|
|
|
808
159
|
MIT
|