collabmd 0.1.48 → 0.1.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/README.md +15 -608
  2. package/bin/collabmd.js +39 -20
  3. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-Crf9Y3Q6.js +1 -0
  4. package/dist/client/assets/abnfDiagram-VCTEODGH-PuinKbSQ.js +1 -0
  5. package/dist/client/assets/ar-SA-5WIASEJP-Di7OimCN.js +10 -0
  6. package/dist/client/assets/{architectureDiagram-5GKGNRK7-I39sYjHI.js → architectureDiagram-5GKGNRK7-46hPkrZv.js} +3 -3
  7. package/dist/client/assets/az-AZ-V5EUQD6C-C19OGTT_.js +1 -0
  8. package/dist/client/assets/bg-BG-EXASCMTR-BIt0xWyb.js +5 -0
  9. package/dist/client/assets/{blockDiagram-NRAW4CY4-C6DtJy5Y.js → blockDiagram-I7D4REHJ-C1S5Bzf8.js} +4 -4
  10. package/dist/client/assets/bn-BD-U4SYNFCO-CdNaPy4Q.js +3 -0
  11. package/dist/client/assets/bn-IN-HKDJIITE-CdNaPy4Q.js +3 -0
  12. package/dist/client/assets/{browser-BKLM0ThC-IxjwuOIz-BBqQnUEb.js → browser-BKLM0ThC-IxjwuOIz-DyJcVMFR.js} +1 -1
  13. package/dist/client/assets/browser-utils-DbXSMI-6.js +1 -0
  14. package/dist/client/assets/{c4Diagram-UCG6FXSJ-CtWtxS9_.js → c4Diagram-7LVT6UL2-VAk1HPmz.js} +1 -1
  15. package/dist/client/assets/ca-ES-2KGUU5XB-C9t-c0cH.js +8 -0
  16. package/dist/client/assets/channel-jwdhnPiV.js +1 -0
  17. package/dist/client/assets/chunk-2E4U76K2-Ba8Wf22k.js +1 -0
  18. package/dist/client/assets/{chunk-TEH6E4GO-DVayPj-q.js → chunk-4HAMMTFA-Ht-73lsT.js} +20 -20
  19. package/dist/client/assets/chunk-5XKZK2GL-D4UAZSOJ.js +1 -0
  20. package/dist/client/assets/{chunk-75Z2AOVW-CdFSaPjz.js → chunk-75Z2AOVW-B2cZexqK.js} +1 -1
  21. package/dist/client/assets/{chunk-CLGD4ZFX-DQLgbQrv.js → chunk-CLGD4ZFX-Cmtx89ht.js} +1 -1
  22. package/dist/client/assets/chunk-DU6HZSFF-C6d6PJfE.js +127 -0
  23. package/dist/client/assets/{chunk-F27PBJKO-CNHIFhjo.js → chunk-F27PBJKO-Dg3H6KLL.js} +1 -1
  24. package/dist/client/assets/{chunk-GMAD6QVW-CbcBqPM5.js → chunk-GMAD6QVW-DUfjx_d5.js} +1 -1
  25. package/dist/client/assets/{chunk-OBVCFTLP-BJR7u1jh.js → chunk-GVQU2GXP-D1l7oRGR.js} +1 -1
  26. package/dist/client/assets/{chunk-G27WJ6UU-D9-eg537.js → chunk-IMKFNOWR-3F6NhHUP.js} +2 -2
  27. package/dist/client/assets/{chunk-JQ64N6SF-DSFNH4bh.js → chunk-L3NEJ4N5-BmCVn4y-.js} +1 -1
  28. package/dist/client/assets/chunk-OSK3NFVY-CWHXAmfx.js +10 -0
  29. package/dist/client/assets/{chunk-P2QGCYS3-BRpqY32H.js → chunk-P2QGCYS3-Du8EtwOa.js} +1 -1
  30. package/dist/client/assets/{chunk-POPQ4Y6H-Cb4SlVZF.js → chunk-POPQ4Y6H-B5yJIrZE.js} +1 -1
  31. package/dist/client/assets/{chunk-PWAF6VOD-Cz8IwBB5.js → chunk-PWAF6VOD-B3gML4ps.js} +1 -1
  32. package/dist/client/assets/{chunk-RHFEMEQ7-CWY8cf4H.js → chunk-SHT3W25Y-BKaI8jZO.js} +5 -5
  33. package/dist/client/assets/{chunk-SVP7TREG-CyHOmcac.js → chunk-SVP7TREG-XlsB_ZMZ.js} +1 -1
  34. package/dist/client/assets/{chunk-LCL6LL3I-DmDkVukh.js → chunk-TICWLB2K-Cpp2z8yK.js} +4 -4
  35. package/dist/client/assets/chunk-TLUHSLCS-Yl7B0Vrz.js +1 -0
  36. package/dist/client/assets/chunk-ZNVOA63L-BmCQjhx-.js +40 -0
  37. package/dist/client/assets/{chunk-FLYJHZSQ-Be7lKF17.js → chunk-ZPMXAHWN-Dt0TxJa6.js} +2 -2
  38. package/dist/client/assets/classDiagram-ZZMXUADV-BRw9vo8U.js +1 -0
  39. package/dist/client/assets/classDiagram-v2-VYDZK3BY-BRw9vo8U.js +1 -0
  40. package/dist/client/assets/comment-markdown-renderer-B9_vPc3F.js +1 -0
  41. package/dist/client/assets/comment-thread-store-NNHqRVsX.js +1 -0
  42. package/dist/client/assets/comment-threads-nJhK1yfc.js +4 -0
  43. package/dist/client/assets/cs-CZ-VUCGPRML-BfCoYAgj.js +7 -0
  44. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-CdTPi2yO.js → cynefinDiagram-5FMLGOSQ-BRoCEoZM.js} +1 -1
  45. package/dist/client/assets/da-DK-NNDP2IVP-DBw9ZNTR.js +2 -0
  46. package/dist/client/assets/{dagre-3AP2YEHR-5gtJtd0O.js → dagre-GXQ25YYZ-BSfKCfy7.js} +2 -2
  47. package/dist/client/assets/de-CH-I7RAVIZN-DYW18Vsr.js +11 -0
  48. package/dist/client/assets/de-DE-WBQ3DQLR-DYW18Vsr.js +11 -0
  49. package/dist/client/assets/deferred-collab-rBe4nuQ2.css +1 -0
  50. package/dist/client/assets/deferred-git-BHKtkFYi.css +1 -0
  51. package/dist/client/assets/deferred-preview-pe7Iwwx3.css +1 -0
  52. package/dist/client/assets/{diagram-S7CK7UJ4-BudWz9WU.js → diagram-S7CK7UJ4-D7KaM9yj.js} +2 -2
  53. package/dist/client/assets/{diagram-UQ7AKVKN-3v4rbH-s.js → diagram-UQ7AKVKN-JevUZuYi.js} +1 -1
  54. package/dist/client/assets/diagram-VSXAHHWV-B3-U-Q2E.js +3 -0
  55. package/dist/client/assets/{diagram-VX7I27RA-C_-rj0sw.js → diagram-VX7I27RA-pSD4HMh1.js} +1 -1
  56. package/dist/client/assets/{diagram-Z3DM3KII-B4yxavgj.js → diagram-Z3DM3KII-D8r1_CIb.js} +1 -1
  57. package/dist/client/assets/{direct-engine-DdrQKpgq-CtKfQzCt.js → direct-engine-DdrQKpgq-B5zIoeQw.js} +1 -1
  58. package/dist/client/assets/dist-B3HdUPsK.js +1 -0
  59. package/dist/client/assets/{dist-Tw-Fxpeb.js → dist-B7XMN9AT.js} +1 -1
  60. package/dist/client/assets/dist-BIRygGYH.js +1 -0
  61. package/dist/client/assets/dist-BPyOlNLY.js +2 -0
  62. package/dist/client/assets/{dist-D5wCC32z.js → dist-BR81yxMt.js} +1 -1
  63. package/dist/client/assets/{dist-Bw3VIE_v.js → dist-B_B4XLmq.js} +1 -1
  64. package/dist/client/assets/dist-Bdy9ZRzd.js +9 -0
  65. package/dist/client/assets/{dist-netZOQtD.js → dist-Bfxzlnrf.js} +1 -1
  66. package/dist/client/assets/{dist-CietwTVS.js → dist-Bx3QkS-3.js} +1 -1
  67. package/dist/client/assets/{dist-mj2Ht75J.js → dist-By7ieqAf.js} +1 -1
  68. package/dist/client/assets/dist-ByhQbe-x.js +1 -0
  69. package/dist/client/assets/{dist-CdmKGRGr.js → dist-BzFSJM0U.js} +1 -1
  70. package/dist/client/assets/dist-C5NkYKAa.js +1 -0
  71. package/dist/client/assets/{dist-D3fehAZ2.js → dist-CELhfKzh.js} +1 -1
  72. package/dist/client/assets/dist-CEirJSxk.js +1 -0
  73. package/dist/client/assets/dist-CO0-4CuV.js +39 -0
  74. package/dist/client/assets/dist-CRnJ0D9h.js +1 -0
  75. package/dist/client/assets/{dist-DDUn5zTz.js → dist-CbDyXgCo.js} +1 -1
  76. package/dist/client/assets/{dist-BeajGMhO.js → dist-CqXVyYoH.js} +1 -1
  77. package/dist/client/assets/{dist-LQ4kDCKz.js → dist-CrWzIWEE.js} +1 -1
  78. package/dist/client/assets/dist-CyNrloSI.js +1 -0
  79. package/dist/client/assets/dist-D60_kdpQ.js +1 -0
  80. package/dist/client/assets/{dist-DuH3ZrHo.js → dist-DCpIH3-_.js} +1 -1
  81. package/dist/client/assets/{dist-BPHLJ09L.js → dist-DJAMplZI.js} +2 -2
  82. package/dist/client/assets/{dist-DGEbEfw4.js → dist-DVXzbeDx.js} +1 -1
  83. package/dist/client/assets/{dist-C5NgpdG5.js → dist-Drv_wZYC.js} +1 -1
  84. package/dist/client/assets/{dist-DVy5woUy.js → dist-EWJYvBK1.js} +1 -1
  85. package/dist/client/assets/dist-Hdhj3L3t.js +1 -0
  86. package/dist/client/assets/{dist-B_yQaEv_.js → dist-gRRhmB-2.js} +3 -3
  87. package/dist/client/assets/dist-kWb2d1CH.js +1 -0
  88. package/dist/client/assets/dist-kiD2GIsD.js +13 -0
  89. package/dist/client/assets/dist-l-56SowH.js +19 -0
  90. package/dist/client/assets/{dist-BK9QvQrc.js → dist-nxQErAaK.js} +2 -2
  91. package/dist/client/assets/dist-sLzRQQk7.js +1 -0
  92. package/dist/client/assets/{document-formatter-Dxl_a8XO.js → document-formatter-Qdiq9uJs.js} +1 -2
  93. package/dist/client/assets/drawioEditor-CHf1vtdQ.js +9 -0
  94. package/dist/client/assets/ebnfDiagram-PWID7BFC-UJ0Fz5ci.js +1 -0
  95. package/dist/client/assets/editor-session-4Bn81iWm.js +14 -0
  96. package/dist/client/assets/el-GR-TYQHVGXW-Dx82YYAS.js +7 -0
  97. package/dist/client/assets/embedded-editor-base-jK221GC8.css +1 -0
  98. package/dist/client/assets/{embedpdf-DA4bA119-BPqZxwjc.js → embedpdf-DA4bA119-E8wZ11J2.js} +2 -3
  99. package/dist/client/assets/{embedpdf-BmE13ZZ0.js → embedpdf-LUXDBD3-.js} +1 -1
  100. package/dist/client/assets/{en-SJ2YIMFF-CJBL3nkq.js → en-2RFA324Y-BsuNJTcL.js} +1 -1
  101. package/dist/client/assets/{erDiagram-SSCWMZ5O-C-iy6VkX.js → erDiagram-RLTQ6QDP-CWrH1UJ9.js} +2 -2
  102. package/dist/client/assets/es-ES-JEUOREKJ-Rx0NUQDl.js +12 -0
  103. package/dist/client/assets/eu-ES-SO5DEEAN-CDYm-BcK.js +8 -0
  104. package/dist/client/assets/excalidraw-element-link-iA6zo0_f.js +7 -0
  105. package/dist/client/assets/{excalidraw-scene-BOben2gr.js → excalidraw-scene-6uROebca.js} +1 -1
  106. package/dist/client/assets/{excalidraw-editor-BbSbI80a.css → excalidrawEditor-DDE0n1Pk.css} +1 -1
  107. package/dist/client/assets/excalidrawEditor-WIuguTz7.js +9 -0
  108. package/dist/client/assets/export-page-AN-wI5p4.js +56 -0
  109. package/dist/client/assets/exportDocument-B7IagJhQ.css +1 -0
  110. package/dist/client/assets/exportDocument-B9xNKpQe.js +2 -0
  111. package/dist/client/assets/fa-IR-FIYUE2GQ-C865Nx3X.js +9 -0
  112. package/dist/client/assets/fi-FI-REAEF6HQ-BIpjJqIb.js +6 -0
  113. package/dist/client/assets/flowDiagram-HODETNUW-kb1lUSBo.js +1 -0
  114. package/dist/client/assets/fr-FR-SUCL7J6B-DGAKE8jH.js +12 -0
  115. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-DtKHAbez.js → ganttDiagram-EL5Y4UJY-BBNzDfaV.js} +1 -1
  116. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-oue8fQ5o.js → gitGraphDiagram-WWUBYQGX-Csf0Dm_1.js} +1 -1
  117. package/dist/client/assets/gl-ES-KHCSOGVH-DWKh0CMu.js +6 -0
  118. package/dist/client/assets/he-IL-JYXVXV2Q-zqbcM-4g.js +9 -0
  119. package/dist/client/assets/hi-IN-BU52H3BO-CY8v6eG9.js +3 -0
  120. package/dist/client/assets/highlight-theme-CzNkO-IJ.js +1 -0
  121. package/dist/client/assets/hu-HU-OWADXDQ3-CEl6Udfh.js +3 -0
  122. package/dist/client/assets/id-ID-EOMR5R3I-CGQwUjoL.js +8 -0
  123. package/dist/client/assets/image-2QKV3NAF-BUbX0y5Y.js +1 -0
  124. package/dist/client/assets/index-BAmZnTFV.css +1 -0
  125. package/dist/client/assets/index-mWiw418b.js +1111 -0
  126. package/dist/client/assets/{infoDiagram-RXCK75RN-BMzo6KIn.js → infoDiagram-27XIBGKW-Bzy6kCbb.js} +1 -1
  127. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BIM3h287.js → ishikawaDiagram-5VMMS53U-CRy9vIS5.js} +1 -1
  128. package/dist/client/assets/it-IT-FC2VTM3L-KTijNcUe.js +12 -0
  129. package/dist/client/assets/ja-JP-JBNTKYP4-BflWlGhw.js +12 -0
  130. package/dist/client/assets/{journeyDiagram-EYS64GPL-mF6Lh8O-.js → journeyDiagram-3NMN7TZE-D4ZR_s9J.js} +2 -2
  131. package/dist/client/assets/kaa-TC3VIB7V-B-xtZfy0.js +1 -0
  132. package/dist/client/assets/kab-KAB-UOUDSQKM-BmO0O4Y4.js +4 -0
  133. package/dist/client/assets/{kanban-definition-3QL26DDD-DLN2NyoR.js → kanban-definition-UXKFOSKX-CIDTmu5g.js} +4 -4
  134. package/dist/client/assets/kk-KZ-P5H2X7YS-CSQFB8IN.js +1 -0
  135. package/dist/client/assets/{km-KH-PCWDKPHP-DSmy5shj.js → km-KH-IHMV2US7-BxrjuEzr.js} +4 -4
  136. package/dist/client/assets/ko-KR-ZTMANIDF-BnNRXd5J.js +5 -0
  137. package/dist/client/assets/ku-TR-GPJTRB5G-BZM7f2aT.js +6 -0
  138. package/dist/client/assets/{line-BfTWJmgf.js → line-DSWLHgpx.js} +1 -1
  139. package/dist/client/assets/lobby-presence-Rdjnc0_0.js +1 -0
  140. package/dist/client/assets/lt-LT-V3XDOK3P-MVQBOHmF.js +3 -0
  141. package/dist/client/assets/lv-LV-DVQ3FADO-CrenwAhS.js +4 -0
  142. package/dist/client/assets/markdown-it-CocJWnjv.js +13 -0
  143. package/dist/client/assets/mermaid-parser.core-DrdLA3p0.js +3 -0
  144. package/dist/client/assets/mermaid.core-C_FK-7n4.js +1 -0
  145. package/dist/client/assets/mermaid.core-D0cMM4Rl.js +10 -0
  146. package/dist/client/assets/{mindmap-definition-FBJOCRG2-CRyHaHTk.js → mindmap-definition-YA3MSWOX-DO8NB9VH.js} +8 -8
  147. package/dist/client/assets/mr-IN-VZ6HH5FE-B-PHPglH.js +9 -0
  148. package/dist/client/assets/my-MM-XYKWHRK6-Be5sYp5q.js +1 -0
  149. package/dist/client/assets/nb-NO-UNO2GGZJ-BvSKGdja.js +8 -0
  150. package/dist/client/assets/nl-NL-76EFHT4P-C2yNx1Cj.js +13 -0
  151. package/dist/client/assets/nn-NO-CFKD7ABE-4NsqlDRP.js +4 -0
  152. package/dist/client/assets/oc-FR-YBJTCJ3J-B4OTQsWW.js +4 -0
  153. package/dist/client/assets/pa-IN-SNOXSMRV-CKj_sOG7.js +4 -0
  154. package/dist/client/assets/pegDiagram-XKGWAZYB-DS6Ab21R.js +1 -0
  155. package/dist/client/assets/percentages-Q7USCRWZ-DWE6uvTs.js +1 -0
  156. package/dist/client/assets/{pieDiagram-E7YTZNPT-B5OZPb88.js → pieDiagram-E7YTZNPT-BbFe6Tgs.js} +1 -1
  157. package/dist/client/assets/pl-PL-BSY6YFZ3-CFuzA6L0.js +12 -0
  158. package/dist/client/assets/preload-helper-CtT0-S4g.js +1 -0
  159. package/dist/client/assets/preview-render-compiler-C_7J7eia.js +43 -0
  160. package/dist/client/assets/preview-render-compiler-DzJ1KR_M.js +1 -0
  161. package/dist/client/assets/preview-render-worker-1DoIDllV.js +59 -0
  162. package/dist/client/assets/prod-D5TxmmoB.js +1 -0
  163. package/dist/client/assets/prod-pbFU4TaM.js +145 -0
  164. package/dist/client/assets/pt-BR-CZDV62R3-CkPMtyNx.js +10 -0
  165. package/dist/client/assets/pt-PT-JO57XJJW-CBSnfGtF.js +12 -0
  166. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-Drrw14YH.js → quadrantDiagram-AXDQQJYC-fJE7iAxt.js} +1 -1
  167. package/dist/client/assets/quick-switcher-De4PjZFC.css +1 -0
  168. package/dist/client/assets/quick-switcher-controller-CUajuy78.js +1 -0
  169. package/dist/client/assets/railroadDiagram-O6MQD6OU-CUQKqbCK.js +1 -0
  170. package/dist/client/assets/{requirementDiagram-EFPCY7ZU-CRZG6mRB.js → requirementDiagram-BXWQKSXE-Balm0WW8.js} +2 -2
  171. package/dist/client/assets/ro-RO-UZ5ICYYN-BOuntc_r.js +12 -0
  172. package/dist/client/assets/room-DX7lIfnu.js +1 -0
  173. package/dist/client/assets/ru-RU-AN7JPREC-D-ow3SNR.js +10 -0
  174. package/dist/client/assets/runtime-config-BFVdhnJu.js +1 -0
  175. package/dist/client/assets/runtime-paths-Cn0snt_9.js +1 -0
  176. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-DvarEJpo.js → sankeyDiagram-P5KCCOFB-CcbMqrlQ.js} +1 -1
  177. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-B4oWlb-w.js → sequenceDiagram-WJ2MYXX4-BL1j3Sn-.js} +6 -6
  178. package/dist/client/assets/si-LK-7CBLD6QQ-c91EepX0.js +1 -0
  179. package/dist/client/assets/sk-SK-SWR6DKBI-D5vFMIL6.js +7 -0
  180. package/dist/client/assets/sl-SI-JRML4FIH-D53L_0S2.js +6 -0
  181. package/dist/client/assets/{stateDiagram-HBIQ2CUA-qbHIIqRZ.js → stateDiagram-D77RDMKH-DNi924hh.js} +1 -1
  182. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-C62JEwak.js +1 -0
  183. package/dist/client/assets/sv-SE-4ZPKFFXF-DT-G7RCI.js +12 -0
  184. package/dist/client/assets/{swimlanes-XN3QIQJK-xB6CtUGj.js → swimlanes-42K2YHIH-ColgjSH4.js} +1 -1
  185. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-B9UZhEj4.js +8 -0
  186. package/dist/client/assets/ta-IN-V6NHHU6Z-D5jy7_AE.js +6 -0
  187. package/dist/client/assets/th-TH-P7CTMGDK-6sy0NO7K.js +1 -0
  188. package/dist/client/assets/{timeline-definition-24CTP7MA-Lj_yTNlY.js → timeline-definition-24CTP7MA-7pch5JAr.js} +1 -1
  189. package/dist/client/assets/tr-TR-GUFYG22B-ClVaf8h1.js +4 -0
  190. package/dist/client/assets/uk-UA-K6SV5NFQ-BLTTtyNB.js +6 -0
  191. package/dist/client/assets/uz-UZ-TVKTZO2G-Bm02Eg3D.js +1 -0
  192. package/dist/client/assets/vault-api-client-QjZ_T03l.js +7 -0
  193. package/dist/client/assets/vault-utils-Bct69Xw2.js +1 -0
  194. package/dist/client/assets/{vennDiagram-4TSXK5OY-BekRp5Y0.js → vennDiagram-4TSXK5OY-C5taziCX.js} +1 -1
  195. package/dist/client/assets/vi-VN-7FKFXJNO-CL3WPhmG.js +7 -0
  196. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-kdnV_Hdm.js → wardleyDiagram-VM6X3IG4-BbSlUwuM.js} +1 -1
  197. package/dist/client/assets/wiki-link-resolver-C2P_WmTV.js +1 -0
  198. package/dist/client/assets/{worker-engine-m0rlHn8R-S8mpn_O0.js → worker-engine-m0rlHn8R-eSDcDGEI.js} +1 -1
  199. package/dist/client/assets/workspace-change-CVA9dVmy.js +1 -0
  200. package/dist/client/assets/workspace-sync-client-D4nblH_2.js +1 -0
  201. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-DufGwNSB.js → xychartDiagram-S5SC5T6Z-D06X1arY.js} +1 -1
  202. package/dist/client/assets/yjs-B41tM6Sz.js +4 -0
  203. package/dist/client/assets/yjs-provider-reset-guard-R43MnLNc.js +1 -0
  204. package/dist/client/assets/zh-CN-AOKVLNNK-DGidDH2b.js +11 -0
  205. package/dist/client/assets/zh-HK-CDKPF5DC-CRcNR3rk.js +1 -0
  206. package/dist/client/assets/zh-TW-ZVGYESGW-C7Qji1y6.js +13 -0
  207. package/dist/client/drawio-editor.html +12 -5
  208. package/dist/client/excalidraw-editor.html +46 -5
  209. package/dist/client/export-document.html +6 -8
  210. package/dist/client/index.html +79 -43
  211. package/package.json +39 -36
  212. package/src/client/app/drawio-editor.html +3 -3
  213. package/src/client/app/excalidraw-editor.html +3 -3
  214. package/src/client/app/export-document.html +2 -2
  215. package/src/client/app/index.html +77 -37
  216. package/src/client/app/main-entry.js +13 -17
  217. package/src/client/application/app-shell/chat-feature.js +7 -22
  218. package/src/client/application/app-shell/comments-feature.js +6 -0
  219. package/src/client/application/app-shell/git-feature.js +23 -5
  220. package/src/client/application/app-shell/presence-feature.js +8 -25
  221. package/src/client/application/app-shell/ui-feature-shell.js +172 -149
  222. package/src/client/application/app-shell/ui-feature-sidebar.js +43 -7
  223. package/src/client/application/app-shell/ui-feature-tab-activity.js +27 -9
  224. package/src/client/application/app-shell/ui-feature-toolbar.js +16 -129
  225. package/src/client/application/app-shell-elements.js +9 -0
  226. package/src/client/application/highlight-theme.js +16 -0
  227. package/src/client/application/preview-render-compiler.js +44 -107
  228. package/src/client/application/preview-render-executor.js +0 -26
  229. package/src/client/application/preview-render-scheduler.js +8 -24
  230. package/src/client/application/preview-renderer.js +26 -9
  231. package/src/client/application/webmcp-diagram-renderer.js +47 -0
  232. package/src/client/application/workspace-coordinator.js +23 -22
  233. package/src/client/application/workspace-route-controller.js +7 -0
  234. package/src/client/bootstrap/collabmd-app-shell.js +148 -35
  235. package/src/client/bootstrap/lazy-collab-clients.js +90 -0
  236. package/src/client/domain/excalidraw-element-link.js +73 -0
  237. package/src/client/domain/excalidraw-scene-reconcile.js +5 -2
  238. package/src/client/domain/excalidraw-scene.js +21 -0
  239. package/src/client/domain/hash-routes.js +13 -0
  240. package/src/client/domain/highlight-runtime.js +47 -0
  241. package/src/client/domain/lobby-chat.js +2 -0
  242. package/src/client/domain/room.js +1 -5
  243. package/src/client/domain/runtime-paths.js +61 -7
  244. package/src/client/domain/vault-utils.js +11 -0
  245. package/src/client/excalidraw-editor.js +155 -14
  246. package/src/client/export/export-host.js +3 -1
  247. package/src/client/export/export-pipeline.js +4 -17
  248. package/src/client/infrastructure/agent-connection-api-client.js +23 -0
  249. package/src/client/infrastructure/auth-client.js +4 -15
  250. package/src/client/infrastructure/browser-preferences-port.js +16 -0
  251. package/src/client/infrastructure/editor-session.js +11 -0
  252. package/src/client/infrastructure/editor-view-adapter.js +56 -8
  253. package/src/client/infrastructure/excalidraw-room-client.js +89 -2
  254. package/src/client/infrastructure/git-api-client.js +39 -33
  255. package/src/client/infrastructure/hosted-api-client.js +60 -0
  256. package/src/client/infrastructure/lobby-presence.js +4 -7
  257. package/src/client/infrastructure/runtime-config.js +14 -2
  258. package/src/client/infrastructure/tab-activity-lock.js +2 -5
  259. package/src/client/infrastructure/vault-api-client.js +33 -26
  260. package/src/client/infrastructure/webmcp-tool-registry.js +297 -0
  261. package/src/client/infrastructure/workspace-sync-client.js +6 -4
  262. package/src/client/presentation/agent-connection-controller.js +255 -0
  263. package/src/client/presentation/backlinks-panel.js +3 -0
  264. package/src/client/presentation/bases-preview-controller.js +27 -18
  265. package/src/client/presentation/comment-markdown-renderer.js +2 -14
  266. package/src/client/presentation/comment-overview-controller.js +1 -2
  267. package/src/client/presentation/comment-ui/comment-ui-card.js +4 -2
  268. package/src/client/presentation/comment-ui/comment-ui-shared.js +5 -2
  269. package/src/client/presentation/create-menu-presenter.js +19 -16
  270. package/src/client/presentation/excalidraw-embed-controller.js +164 -4
  271. package/src/client/presentation/file-explorer-controller.js +3 -0
  272. package/src/client/presentation/file-explorer-view.js +338 -182
  273. package/src/client/presentation/file-history-view-controller.js +13 -11
  274. package/src/client/presentation/git-diff-view-controller.js +35 -43
  275. package/src/client/presentation/git-panel-controller.js +78 -28
  276. package/src/client/presentation/hosted-workspace-gate-controller.js +180 -0
  277. package/src/client/presentation/image-lightbox-controller.js +20 -16
  278. package/src/client/presentation/layout-controller.js +13 -2
  279. package/src/client/presentation/quick-switcher-controller.js +20 -78
  280. package/src/client/presentation/quick-switcher-text-search.js +10 -14
  281. package/src/client/presentation/team-settings-controller.js +228 -0
  282. package/src/client/styles/components/navigation.css +1 -2
  283. package/src/client/styles/deferred-collab.css +5 -0
  284. package/src/client/styles/deferred-git.css +7 -0
  285. package/src/client/styles/deferred-preview.css +6 -0
  286. package/src/client/styles/features/agent-connection.css +202 -0
  287. package/src/client/styles/features/collaboration-chat.css +8 -1
  288. package/src/client/styles/features/collaboration-dialogs.css +16 -1
  289. package/src/client/styles/features/collaboration-presence.css +17 -4
  290. package/src/client/styles/features/diagram-preview.css +0 -15
  291. package/src/client/styles/features/diff-toolbar.css +1 -1
  292. package/src/client/styles/features/media-lightbox.css +12 -3
  293. package/src/client/styles/features/outline.css +4 -2
  294. package/src/client/styles/features/preview-markdown.css +25 -11
  295. package/src/client/styles/features/quick-switcher.css +20 -11
  296. package/src/client/styles/features/team-settings.css +162 -0
  297. package/src/client/styles/foundation/themes.css +2 -0
  298. package/src/client/styles/foundation/tokens.css +2 -2
  299. package/src/client/styles/layout/editor-page.css +25 -24
  300. package/src/client/styles/layout/overlays.css +16 -0
  301. package/src/client/styles/layout/responsive.css +7 -25
  302. package/src/client/styles/layout/shell.css +21 -1
  303. package/src/client/styles/layout/sidebar.css +99 -7
  304. package/src/client/styles/primitives/controls.css +21 -54
  305. package/src/client/styles/style.css +4 -19
  306. package/src/domain/agent-tool-definitions.js +872 -0
  307. package/src/domain/collabmd-content-capabilities.js +149 -0
  308. package/src/domain/collaboration-protocol.js +2 -0
  309. package/src/domain/comment-threads.js +3 -5
  310. package/src/domain/diagram-source.js +50 -0
  311. package/src/domain/editable-content-revision.js +10 -0
  312. package/src/domain/editable-text.js +3 -0
  313. package/src/domain/exact-text-edits.js +69 -0
  314. package/src/domain/excalidraw-agent-scene.js +624 -0
  315. package/src/domain/excalidraw-agent-verification.js +554 -0
  316. package/src/domain/excalidraw-room-codec.js +13 -6
  317. package/src/domain/literal-text-search.js +13 -0
  318. package/src/domain/video-embed.js +76 -0
  319. package/src/server/application/agent-connection-service.js +178 -0
  320. package/src/server/application/agent-content-service.js +841 -0
  321. package/src/server/application/workspace-reconciliation.js +5 -7
  322. package/src/server/config/env.js +147 -6
  323. package/src/server/create-app-server.js +47 -141
  324. package/src/server/domain/bases/base-query-service.js +1 -5
  325. package/src/server/domain/collaboration/collaboration-room.js +121 -25
  326. package/src/server/domain/collaboration/protocol.js +4 -0
  327. package/src/server/domain/hosted-workspace.js +31 -1
  328. package/src/server/domain/markdown-reference-extractor.js +15 -1
  329. package/src/server/domain/ripgrep-search-service.js +68 -21
  330. package/src/server/infrastructure/git/git-service.js +19 -1
  331. package/src/server/infrastructure/git/history-service.js +1 -1
  332. package/src/server/infrastructure/git/local-exclude.js +37 -0
  333. package/src/server/infrastructure/git/parsers.js +19 -17
  334. package/src/server/infrastructure/git/path-utils.js +0 -16
  335. package/src/server/infrastructure/git/status-service.js +1 -1
  336. package/src/server/infrastructure/git/untracked-files.js +12 -21
  337. package/src/server/infrastructure/http/create-agent-api-handler.js +171 -0
  338. package/src/server/infrastructure/http/create-git-api-command-handler.js +32 -0
  339. package/src/server/infrastructure/http/create-hosted-api-handler.js +5 -0
  340. package/src/server/infrastructure/http/create-request-handler.js +123 -26
  341. package/src/server/infrastructure/http/create-static-handler.js +9 -0
  342. package/src/server/infrastructure/http/create-vault-api-query-handler.js +15 -2
  343. package/src/server/infrastructure/mcp/create-agent-mcp-handler.js +200 -0
  344. package/src/server/infrastructure/persistence/agent-connection-store.js +120 -0
  345. package/src/server/infrastructure/persistence/pull-backup-store.js +2 -27
  346. package/src/server/infrastructure/persistence/sidecar-store.js +12 -5
  347. package/src/server/infrastructure/persistence/vault-file-store.js +11 -5
  348. package/src/server/infrastructure/websocket/attach-collaboration-gateway.js +48 -22
  349. package/src/server/shared/agent-tool-image.js +22 -0
  350. package/src/server/shared/agent-tool-rate-limiter.js +27 -0
  351. package/src/server/startup/git-remote-bootstrap.js +58 -79
  352. package/src/server/vault-registry.js +251 -0
  353. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BPH4FJkv.js +0 -1
  354. package/dist/client/assets/abnfDiagram-VCTEODGH-BNDLzJ7L.js +0 -1
  355. package/dist/client/assets/ar-SA-PQUY64WN-xjXgbW6d.js +0 -10
  356. package/dist/client/assets/az-AZ-OXJXL76K-4JkO4Pca.js +0 -1
  357. package/dist/client/assets/base-CaIEJUF9.css +0 -1
  358. package/dist/client/assets/bg-BG-W2GKIJDF-DnkH_o81.js +0 -5
  359. package/dist/client/assets/bn-BD-TGL7M4PJ-CG4JkmtP.js +0 -3
  360. package/dist/client/assets/bn-IN-BKETKYEH-CG4JkmtP.js +0 -3
  361. package/dist/client/assets/browser-utils--H_DkyEF.js +0 -1
  362. package/dist/client/assets/ca-ES-LD5SCRVV-U6_TVMX9.js +0 -8
  363. package/dist/client/assets/channel-CaoKA_We.js +0 -1
  364. package/dist/client/assets/chunk-7XWMRXBY-CfMzEq80.js +0 -1
  365. package/dist/client/assets/chunk-CKBBP62Z-DG26UiBv.js +0 -2
  366. package/dist/client/assets/chunk-DSNCTWBM-8xkug7fQ.js +0 -2
  367. package/dist/client/assets/chunk-DU6HZSFF-COXDzJK1.js +0 -127
  368. package/dist/client/assets/chunk-R7TYR2AO-CTd0Yj98.js +0 -10
  369. package/dist/client/assets/chunk-RM4UPSZO-CWRwxNWJ.js +0 -41
  370. package/dist/client/assets/classDiagram-DTDB5LWJ-7fEmn0zV.js +0 -1
  371. package/dist/client/assets/classDiagram-v2-JRS7N3AN-7fEmn0zV.js +0 -1
  372. package/dist/client/assets/comment-thread-store-CdcwrObc.js +0 -1
  373. package/dist/client/assets/comment-threads-9J6Em-_y.js +0 -4
  374. package/dist/client/assets/comment-ui-shared-DuoyznXW.js +0 -7
  375. package/dist/client/assets/cs-CZ-OFPU5DBV-BmFAIhqX.js +0 -7
  376. package/dist/client/assets/da-DK-FRDJFYWF-H387Jw8B.js +0 -2
  377. package/dist/client/assets/de-CH-ZG7H3QK3-C_groygo.js +0 -11
  378. package/dist/client/assets/de-DE-SIJYH4IH-C_groygo.js +0 -11
  379. package/dist/client/assets/diagram-VSXAHHWV-CQRVEZR7.js +0 -3
  380. package/dist/client/assets/dist-73RPdcyU.js +0 -1
  381. package/dist/client/assets/dist-BJ1bJs33.js +0 -1
  382. package/dist/client/assets/dist-ByrG2qBA.js +0 -1
  383. package/dist/client/assets/dist-CH-sQu3r.js +0 -1
  384. package/dist/client/assets/dist-CKS_-are.js +0 -1
  385. package/dist/client/assets/dist-D37Hyu3h.js +0 -9
  386. package/dist/client/assets/dist-DZAAWTG-.js +0 -1
  387. package/dist/client/assets/dist-Dir5dDKZ.js +0 -1
  388. package/dist/client/assets/dist-Dl_tpDSr.js +0 -1
  389. package/dist/client/assets/dist-DutPuFmC.js +0 -1
  390. package/dist/client/assets/dist-RKBTaQMb.js +0 -13
  391. package/dist/client/assets/dist-eBx8q6Sy.js +0 -1
  392. package/dist/client/assets/drawio-editor-BVaNNtYp.js +0 -9
  393. package/dist/client/assets/drawioEditor-BkIBlXx0.js +0 -2
  394. package/dist/client/assets/ebnfDiagram-PWID7BFC-OXa8VEp1.js +0 -1
  395. package/dist/client/assets/editor-session-DMyVdHLj.js +0 -54
  396. package/dist/client/assets/el-GR-IEE2CGI2-BkT6YT54.js +0 -7
  397. package/dist/client/assets/embedded-editor-base-B3l6Xy65.css +0 -1
  398. package/dist/client/assets/es-ES-TVVPWKV5-CpPKJXTM.js +0 -12
  399. package/dist/client/assets/eu-ES-CGBMFQDT-Bu3N2493.js +0 -8
  400. package/dist/client/assets/excalidraw-editor-BjYaNEMY.js +0 -9
  401. package/dist/client/assets/excalidraw-mermaid-stub-BNckbX2n.js +0 -1
  402. package/dist/client/assets/excalidraw-mermaid-stub-DE5FTiZB.js +0 -1
  403. package/dist/client/assets/excalidrawEditor-ChqF_d82.js +0 -2
  404. package/dist/client/assets/export-page-Dyu0XCbu.js +0 -57
  405. package/dist/client/assets/exportDocument-CJBx4Xjx.css +0 -1
  406. package/dist/client/assets/exportDocument-Dgvfa2Sd.js +0 -2
  407. package/dist/client/assets/fa-IR-IE6XAPR4-BEvLCORD.js +0 -9
  408. package/dist/client/assets/fi-FI-P7TKNHRM-DI0q8iSX.js +0 -6
  409. package/dist/client/assets/file-icon-svg-Y_kpF957.js +0 -1
  410. package/dist/client/assets/flowDiagram-A5DVABFB-CiW1eN8C.js +0 -1
  411. package/dist/client/assets/fr-FR-QI2XZNT7-y8kXd8LA.js +0 -12
  412. package/dist/client/assets/gl-ES-TLYCNOZZ-Br-Fhff-.js +0 -6
  413. package/dist/client/assets/he-IL-ZX43XLGP-qKQq6V9X.js +0 -9
  414. package/dist/client/assets/hi-IN-UTYRMTUF-DOUcwrDO.js +0 -3
  415. package/dist/client/assets/hu-HU-AJOSEBW6-FqTyvHlD.js +0 -3
  416. package/dist/client/assets/id-ID-ETLTVG6C-CQqh3CLS.js +0 -8
  417. package/dist/client/assets/image-ZVKINSPA-0zXSnE7M.js +0 -1
  418. package/dist/client/assets/index-CSNIMyOP.css +0 -1
  419. package/dist/client/assets/index-DG3N2Ps-.js +0 -2
  420. package/dist/client/assets/it-IT-B4B6TP6L-V-yK3SZz.js +0 -12
  421. package/dist/client/assets/ja-JP-IYKVURR5-BQKBXRpX.js +0 -12
  422. package/dist/client/assets/kaa-SE2BUIKX-CZ5kfwPg.js +0 -1
  423. package/dist/client/assets/kab-KAB-Y3GLKXLR-Do7GWfuN.js +0 -4
  424. package/dist/client/assets/kk-KZ-ABWUFVOH-BpqVciQz.js +0 -1
  425. package/dist/client/assets/ko-KR-7JQDXKGM-N42lep78.js +0 -5
  426. package/dist/client/assets/ku-TR-NAH2Q5B7-K8LLl9fk.js +0 -6
  427. package/dist/client/assets/lt-LT-VQFYRSNQ-BmOd0ALn.js +0 -3
  428. package/dist/client/assets/lv-LV-T62VSYUM-B22WdPhp.js +0 -4
  429. package/dist/client/assets/main-D0wCxpVn.js +0 -903
  430. package/dist/client/assets/mermaid-parser.core-Bl0efOMt.js +0 -4
  431. package/dist/client/assets/mermaid.core-BJRLUQZE.js +0 -11
  432. package/dist/client/assets/modulepreload-polyfill-P2Xu9kJm.js +0 -1
  433. package/dist/client/assets/mr-IN-V4FHLCJE-XX069tpm.js +0 -9
  434. package/dist/client/assets/my-MM-E3SQ6E54-cst_-5SB.js +0 -1
  435. package/dist/client/assets/nb-NO-MLNOFN5H-Bu2URWko.js +0 -8
  436. package/dist/client/assets/nl-NL-D5L3ZV4M-BqrV0btt.js +0 -13
  437. package/dist/client/assets/nn-NO-NNHDGPKB-DK-xZaWM.js +0 -4
  438. package/dist/client/assets/oc-FR-DWCRF55G-BZ5Po5R6.js +0 -4
  439. package/dist/client/assets/pa-IN-3JSAY44M-BZQSjKrS.js +0 -4
  440. package/dist/client/assets/pegDiagram-XKGWAZYB-B31fKPR2.js +0 -1
  441. package/dist/client/assets/percentages-ETZPVQEE-DFxFqXgH.js +0 -1
  442. package/dist/client/assets/pl-PL-ACURYKP3-qcEOSfCk.js +0 -12
  443. package/dist/client/assets/preload-helper-HclGiUj8.js +0 -1
  444. package/dist/client/assets/preview-render-compiler-CrJIooVD.js +0 -35
  445. package/dist/client/assets/preview-render-compiler-O0JxBVNF.js +0 -1
  446. package/dist/client/assets/preview-render-profile-B4RWYWHt.js +0 -1
  447. package/dist/client/assets/preview-render-worker-_QTxqKvP.js +0 -60
  448. package/dist/client/assets/prod-BiYPMR1i.js +0 -177
  449. package/dist/client/assets/prod-VxdGZ5Ly.js +0 -1
  450. package/dist/client/assets/pt-BR-LOX7MLGD-DLueHSyZ.js +0 -10
  451. package/dist/client/assets/pt-PT-CZ2U2RFQ-BJ-GAEm6.js +0 -12
  452. package/dist/client/assets/quick-switcher-controller-CaEjEtq_.js +0 -1
  453. package/dist/client/assets/railroadDiagram-O6MQD6OU-BPifP0MB.js +0 -1
  454. package/dist/client/assets/ro-RO-2HECL2X6-CJUvKAf0.js +0 -12
  455. package/dist/client/assets/ru-RU-HAYNXO46-BWSlvTrt.js +0 -10
  456. package/dist/client/assets/runtime-config-BLrEKVO1.js +0 -1
  457. package/dist/client/assets/si-LK-W5KNS4H6-DGGCsn7k.js +0 -1
  458. package/dist/client/assets/sk-SK-7K2CFGDV-CY4uTYgQ.js +0 -7
  459. package/dist/client/assets/sl-SI-OXV2QZWW-2-weqaBY.js +0 -6
  460. package/dist/client/assets/stateDiagram-v2-4QOOHH4V-B--gjrit.js +0 -1
  461. package/dist/client/assets/sv-SE-JTOBZRGL-9-IUtVkO.js +0 -12
  462. package/dist/client/assets/swimlanesDiagram-VK2B7HYN-DO8XNXEg.js +0 -8
  463. package/dist/client/assets/ta-IN-KFAVKXGT-gHO6Q_DH.js +0 -6
  464. package/dist/client/assets/th-TH-VDMSCPDL-BvJuw6PJ.js +0 -1
  465. package/dist/client/assets/tr-TR-CEZ6GX45-CG6UU3Su.js +0 -4
  466. package/dist/client/assets/uk-UA-Q3H3OXQC-CSuIg_DY.js +0 -6
  467. package/dist/client/assets/uz-UZ-NGCSWWPX-mom7rxSP.js +0 -1
  468. package/dist/client/assets/vault-api-client-BkwdFjx0.js +0 -6
  469. package/dist/client/assets/vault-utils-DvoSftJT.js +0 -22
  470. package/dist/client/assets/vi-VN-P3NDEVPS-BB0Fu9ck.js +0 -7
  471. package/dist/client/assets/yjs-provider-reset-guard-DE0vINDP.js +0 -4
  472. package/dist/client/assets/zh-CN-SS3O57GA-Bj8wsiMe.js +0 -11
  473. package/dist/client/assets/zh-HK-LWJT3VCF-DOTquTCh.js +0 -1
  474. package/dist/client/assets/zh-TW-VJXC72RT-B48PRo-l.js +0 -13
  475. package/src/client/app/drawio-editor-entry.js +0 -1
  476. package/src/client/app/excalidraw-editor-entry.js +0 -1
  477. package/src/client/excalidraw-mermaid-stub.js +0 -7
  478. package/src/client/main.js +0 -16
  479. /package/dist/client/assets/{vault-api-client-C3mlS_4N.css → auth-gate-C3mlS_4N.css} +0 -0
  480. /package/dist/client/assets/{drawio-editor-UQQ8XHou.css → drawioEditor-UQQ8XHou.css} +0 -0
  481. /package/dist/client/assets/{base-BYODPHdS.js → github.min-DBihDoic.js} +0 -0
  482. /package/dist/client/assets/{sizeCapture-X5ZJPWSS-B0uUizjq.js → sizeCapture-INFHLROL-B0uUizjq.js} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "collabmd",
3
- "version": "0.1.48",
3
+ "version": "0.1.51",
4
4
  "type": "module",
5
5
  "description": "Collaborative markdown vault — like Obsidian, but online. Serve any directory of markdown files for realtime collaborative editing.",
6
6
  "repository": {
@@ -67,37 +67,18 @@
67
67
  },
68
68
  "license": "MIT",
69
69
  "dependencies": {
70
- "@codemirror/autocomplete": "^6.20.3",
71
- "@codemirror/commands": "^6.11.0",
72
- "@codemirror/lang-html": "^6.4.11",
73
- "@codemirror/lang-markdown": "^6.5.2",
74
- "@codemirror/lang-yaml": "^6.1.3",
75
- "@codemirror/language": "^6.12.4",
76
- "@codemirror/language-data": "^6.5.2",
77
- "@codemirror/search": "^6.7.1",
78
- "@codemirror/state": "^6.7.1",
79
- "@codemirror/theme-one-dark": "^6.1.3",
80
- "@codemirror/view": "^6.43.9",
81
- "@embedpdf/snippet": "2.15.0",
82
- "@excalidraw/excalidraw": "0.18.0-abeeaeb",
83
- "@replit/codemirror-vim": "^6.4.0",
84
- "@turbodocx/html-to-docx": "^1.22.0",
70
+ "@excalidraw/fractional-indexing": "^0.18.0-214cd6e",
71
+ "@modelcontextprotocol/client": "^2.0.0",
72
+ "@modelcontextprotocol/node": "^2.0.0",
73
+ "@modelcontextprotocol/server": "^2.0.0",
74
+ "@turbodocx/html-to-docx": "^1.22.2",
85
75
  "archiver": "^8.0.0",
86
- "highlight.js": "^11.12.0",
87
- "js-yaml": "^5.3.0",
76
+ "js-yaml": "^5.4.1",
88
77
  "lib0": "^0.2.117",
89
- "markdown-it": "^15.0.0",
90
- "mermaid": "^11.17.0",
91
- "mermaid-formatter": "^0.3.0",
92
- "openid-client": "^6.8.7",
93
- "prettier": "^3.9.6",
94
- "react": "^19.2.8",
95
- "react-dom": "^19.2.8",
96
- "sharp": "^0.35.3",
78
+ "openid-client": "^6.8.8",
79
+ "sharp": "^0.35.4",
97
80
  "ws": "^8.21.3",
98
- "y-codemirror.next": "^0.3.6",
99
81
  "y-protocols": "^1.0.7",
100
- "y-websocket": "^3.1.0",
101
82
  "yjs": "^13.6.32"
102
83
  },
103
84
  "overrides": {
@@ -113,14 +94,36 @@
113
94
  "axios": "1.18.0"
114
95
  },
115
96
  "devDependencies": {
97
+ "@codemirror/autocomplete": "^6.20.3",
98
+ "@codemirror/commands": "^6.11.0",
99
+ "@codemirror/lang-html": "^6.4.12",
100
+ "@codemirror/lang-markdown": "^6.5.2",
101
+ "@codemirror/lang-yaml": "^6.1.3",
102
+ "@codemirror/language": "^6.12.4",
103
+ "@codemirror/language-data": "^6.5.2",
104
+ "@codemirror/search": "^6.7.2",
105
+ "@codemirror/state": "^6.7.4",
106
+ "@codemirror/theme-one-dark": "^6.1.3",
107
+ "@codemirror/view": "^6.43.11",
108
+ "@embedpdf/snippet": "2.15.0",
116
109
  "@eslint/js": "^10.0.1",
117
- "@playwright/test": "^1.62.1",
118
- "@vitest/browser": "^4.1.11",
119
- "@vitest/browser-playwright": "^4.1.11",
120
- "eslint": "^10.8.1",
121
- "globals": "^17.11.0",
110
+ "@excalidraw/excalidraw": "0.18.0-214cd6e",
111
+ "@playwright/test": "^1.63.0",
112
+ "@replit/codemirror-vim": "^6.4.0",
113
+ "@vitest/browser": "^5.0.0",
114
+ "@vitest/browser-playwright": "^5.0.0",
115
+ "eslint": "^10.10.0",
116
+ "globals": "^17.12.0",
117
+ "highlight.js": "^11.12.0",
118
+ "markdown-it": "^15.0.1",
119
+ "mermaid": "^11.17.2",
120
+ "mermaid-formatter": "^0.3.0",
121
+ "prettier": "^3.9.6",
122
+ "react": "^19.2.8",
123
+ "react-dom": "^19.2.8",
122
124
  "vite": "^8.2.2",
123
- "vitest": "^4.1.11"
124
- },
125
- "packageManager": "pnpm@11.22.0+sha512.1ff870c4c6133dfd88fb2afc46dd13d47f09c9794b438c6fdb47ca98caf3bc16381ee0be93a091b8e3824cf01f889f46d7d9e20910fb0be1ab0fb5baa80dd621"
125
+ "vitest": "^5.0.0",
126
+ "y-codemirror.next": "^0.3.6",
127
+ "y-websocket": "^3.1.0"
128
+ }
126
129
  }
@@ -4,12 +4,12 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>draw.io — CollabMD</title>
7
+ <script vite-ignore defer src="./app-config.js"></script>
7
8
  </head>
8
9
  <body data-theme="dark" data-surface="drawio-editor">
9
10
  <div id="root">
10
- <div class="drawio-loading" id="loadingState">Loading draw.io…</div>
11
+ <div class="drawio-loading" id="loadingState" role="status" aria-live="polite">Loading draw.io…</div>
11
12
  </div>
12
- <script vite-ignore src="./app-config.js"></script>
13
- <script type="module" src="./drawio-editor-entry.js"></script>
13
+ <script type="module" src="../drawio-editor.js"></script>
14
14
  </body>
15
15
  </html>
@@ -4,12 +4,12 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Excalidraw — CollabMD</title>
7
+ <script vite-ignore defer src="./app-config.js"></script>
7
8
  </head>
8
9
  <body data-theme="dark" data-surface="excalidraw-editor">
9
10
  <div id="root">
10
- <div class="loading-state" id="loadingState">Loading Excalidraw...</div>
11
+ <div class="loading-state" id="loadingState" role="status" aria-live="polite">Loading Excalidraw…</div>
11
12
  </div>
12
- <script vite-ignore src="./app-config.js"></script>
13
- <script type="module" src="./excalidraw-editor-entry.js"></script>
13
+ <script type="module" src="../excalidraw-editor.js"></script>
14
14
  </body>
15
15
  </html>
@@ -4,13 +4,14 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>CollabMD Export</title>
7
+ <script vite-ignore defer src="./app-config.js"></script>
7
8
  </head>
8
9
  <body data-theme="light" data-surface="export-document">
9
10
  <main class="export-page-shell">
10
11
  <header class="export-page-header">
11
12
  <div>
12
13
  <h1>Preparing export</h1>
13
- <p id="exportStatus">Initializing…</p>
14
+ <p id="exportStatus" role="status" aria-live="polite">Initializing…</p>
14
15
  </div>
15
16
  </header>
16
17
  <section id="exportWarningsSection" class="export-warnings-panel" hidden>
@@ -19,7 +20,6 @@
19
20
  </section>
20
21
  <article id="exportContent" class="preview-content export-content"></article>
21
22
  </main>
22
- <script vite-ignore src="./app-config.js"></script>
23
23
  <script type="module" src="./export-document-entry.js"></script>
24
24
  </body>
25
25
  </html>
@@ -15,12 +15,13 @@
15
15
  document.documentElement.setAttribute('data-initial-file-requested', 'true');
16
16
  }
17
17
  </script>
18
+ <script vite-ignore defer src="./app-config.js"></script>
18
19
  </head>
19
20
  <body>
20
21
 
21
22
  <a href="#editorContainer" class="sr-only skip-link" id="skipToEditor">Skip to editor</a>
22
23
 
23
- <div class="app-shell">
24
+ <div class="app-shell" id="appShell">
24
25
  <aside id="sidebar" class="sidebar">
25
26
  <div class="sidebar-header">
26
27
  <div class="sidebar-brand">
@@ -72,8 +73,8 @@
72
73
  </button>
73
74
  </div>
74
75
  </div>
75
- <div class="ui-nav-tabs" id="sidebarTabs">
76
- <button class="ui-nav-tab active" id="filesSidebarTab" type="button">
76
+ <div class="ui-nav-tabs" id="sidebarTabs" role="tablist" aria-label="Sidebar views">
77
+ <button class="ui-nav-tab active" id="filesSidebarTab" type="button" role="tab" aria-selected="true" aria-controls="fileTree" tabindex="0">
77
78
  <span class="ui-nav-tab-icon" aria-hidden="true">
78
79
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">
79
80
  <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path>
@@ -81,7 +82,7 @@
81
82
  </span>
82
83
  <span class="ui-nav-tab-label">Files</span>
83
84
  </button>
84
- <button class="ui-nav-tab" id="commentsSidebarTab" type="button">
85
+ <button class="ui-nav-tab" id="commentsSidebarTab" type="button" role="tab" aria-selected="false" aria-controls="commentOverviewPanel" tabindex="-1">
85
86
  <span class="ui-nav-tab-icon" aria-hidden="true">
86
87
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
87
88
  <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
@@ -89,7 +90,7 @@
89
90
  </span>
90
91
  <span class="ui-nav-tab-label">Comments</span>
91
92
  </button>
92
- <button class="ui-nav-tab hidden" id="gitSidebarTab" type="button">
93
+ <button class="ui-nav-tab hidden" id="gitSidebarTab" type="button" role="tab" aria-selected="false" aria-controls="gitPanel" tabindex="-1">
93
94
  <span class="ui-nav-tab-icon" aria-hidden="true">
94
95
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
95
96
  <circle cx="18" cy="18" r="3"></circle>
@@ -125,9 +126,9 @@
125
126
  aria-label="Search changed files"
126
127
  >
127
128
  </div>
128
- <nav id="fileTree" class="file-tree" aria-label="File explorer"></nav>
129
- <section id="commentOverviewPanel" class="comment-overview-panel hidden" aria-label="Open comments"></section>
130
- <div id="gitPanel" class="git-panel hidden" aria-label="Git changes"></div>
129
+ <nav id="fileTree" class="file-tree" role="tabpanel" aria-labelledby="filesSidebarTab"></nav>
130
+ <section id="commentOverviewPanel" class="comment-overview-panel hidden" role="tabpanel" aria-labelledby="commentsSidebarTab"></section>
131
+ <div id="gitPanel" class="git-panel hidden" role="tabpanel" aria-labelledby="gitSidebarTab"></div>
131
132
  <div
132
133
  class="sidebar-resizer"
133
134
  id="sidebarResizer"
@@ -228,7 +229,7 @@
228
229
  <span class="ui-toolbar-button-label">Preview</span>
229
230
  </button>
230
231
 
231
- <div class="toolbar-status-cluster" aria-label="Workspace status">
232
+ <div class="toolbar-status-cluster" role="group" aria-label="Workspace status">
232
233
  <span class="ui-pill-badge ui-pill-badge--accent hidden toolbar-badge" id="toolbarDiffBadge">Diff</span>
233
234
  <span class="ui-pill-badge ui-pill-badge--muted hidden toolbar-badge" id="gitOperationStatus" aria-live="polite" aria-atomic="true"></span>
234
235
  </div>
@@ -239,13 +240,11 @@
239
240
  type="button"
240
241
  class="ui-pill-badge ui-pill-badge--muted toolbar-badge toolbar-badge-button toolbar-presence-count"
241
242
  id="userCount"
242
- aria-controls="presencePanel"
243
- aria-expanded="false"
244
- data-presence-panel-trigger="true"
243
+ popovertarget="presencePanel"
245
244
  ></button>
246
245
  </div>
247
246
 
248
- <section class="collaboration-popover presence-panel hidden" id="presencePanel" aria-label="Online users" aria-hidden="true">
247
+ <section class="collaboration-popover presence-panel" id="presencePanel" aria-label="Online users" popover="auto">
249
248
  <div class="presence-panel-header">
250
249
  <div>
251
250
  <h2 class="presence-panel-title">Online now</h2>
@@ -256,7 +255,7 @@
256
255
  </section>
257
256
 
258
257
  <div class="chat-container" id="chatContainer">
259
- <button type="button" class="ui-button ui-button--ghost ui-button--toolbar chat-toggle-btn" id="chatToggleBtn" aria-label="Open team chat" aria-controls="chatPanel" aria-expanded="false" title="Team chat">
258
+ <button type="button" class="ui-button ui-button--ghost ui-button--toolbar chat-toggle-btn" id="chatToggleBtn" aria-label="Open team chat" popovertarget="chatPanel" title="Team chat">
260
259
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
261
260
  <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
262
261
  </svg>
@@ -265,7 +264,7 @@
265
264
  </button>
266
265
  <div class="toast-container chat-toast-container" id="chatToastContainer" aria-live="polite" aria-atomic="true"></div>
267
266
 
268
- <section class="collaboration-popover chat-panel hidden" id="chatPanel" role="dialog" aria-labelledby="chatPanelTitle">
267
+ <section class="collaboration-popover chat-panel" id="chatPanel" role="dialog" aria-labelledby="chatPanelTitle" popover="auto">
269
268
  <div class="chat-panel-header">
270
269
  <div class="chat-panel-heading">
271
270
  <h2 class="chat-panel-title" id="chatPanelTitle">Team chat</h2>
@@ -292,7 +291,7 @@
292
291
  <path class="chat-notification-mute-slash" d="m4 4 16 16"></path>
293
292
  </svg>
294
293
  </button>
295
- <button type="button" class="ui-icon-button chat-close-btn" id="chatCloseBtn" aria-label="Close team chat" title="Close team chat">
294
+ <button type="button" class="ui-icon-button chat-close-btn" id="chatCloseBtn" aria-label="Close team chat" popovertarget="chatPanel" popovertargetaction="hide" title="Close team chat">
296
295
  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
297
296
  <line x1="18" y1="6" x2="6" y2="18"></line>
298
297
  <line x1="6" y1="6" x2="18" y2="18"></line>
@@ -327,7 +326,7 @@
327
326
  class="ui-button ui-button--ghost ui-button--toolbar toolbar-overflow-toggle"
328
327
  id="toolbarOverflowToggle"
329
328
  aria-label="Open more actions"
330
- aria-expanded="false"
329
+ popovertarget="toolbarOverflowMenu"
331
330
  title="More actions"
332
331
  >
333
332
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
@@ -337,7 +336,7 @@
337
336
  </svg>
338
337
  </button>
339
338
 
340
- <div class="toolbar-overflow-menu" id="toolbarOverflowMenu">
339
+ <div class="toolbar-overflow-menu" id="toolbarOverflowMenu" popover="auto">
341
340
  <button class="ui-button ui-button--ghost ui-button--toolbar hidden" id="fileHistoryBtn" aria-label="Open file history" title="View file history">
342
341
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
343
342
  <path d="M3 12a9 9 0 1 0 3-6.7"></path>
@@ -363,6 +362,24 @@
363
362
  <span class="ui-toolbar-button-label">Share</span>
364
363
  </button>
365
364
 
365
+ <button class="ui-button ui-button--ghost ui-button--toolbar hidden" id="connectAgentBtn" aria-label="Connect AI Agent" title="Connect AI Agent">
366
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
367
+ <rect x="5" y="7" width="14" height="11" rx="3"></rect>
368
+ <path d="M12 3v4M8 12h.01M16 12h.01M9 16h6"></path>
369
+ </svg>
370
+ <span class="ui-toolbar-button-label">Connect AI Agent</span>
371
+ </button>
372
+
373
+ <button class="ui-button ui-button--ghost ui-button--toolbar hidden" id="teamSettingsBtn" aria-label="Team Settings" title="Team Settings">
374
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
375
+ <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
376
+ <circle cx="9" cy="7" r="4"></circle>
377
+ <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
378
+ <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
379
+ </svg>
380
+ <span class="ui-toolbar-button-label">Team Settings</span>
381
+ </button>
382
+
366
383
  <button class="ui-button ui-button--ghost ui-button--toolbar toolbar-search-files-btn" id="searchFilesBtn" aria-label="Search files" title="Search files">
367
384
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
368
385
  <circle cx="11" cy="11" r="7"></circle>
@@ -460,7 +477,7 @@
460
477
  <circle cx="11" cy="11" r="8"></circle>
461
478
  <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
462
479
  </svg>
463
- Search Everything
480
+ Search everything
464
481
  <kbd class="empty-state-kbd">⌘K</kbd>
465
482
  </button>
466
483
  </div>
@@ -509,7 +526,7 @@
509
526
  </div>
510
527
  <div id="markdownToolbar" class="markdown-toolbar hidden" role="toolbar" aria-label="Markdown formatting"></div>
511
528
  <div id="editorContainer" class="editor-container">
512
- <div class="editor-loading" id="editorLoading">
529
+ <div class="editor-loading" id="editorLoading" role="status" aria-live="polite" aria-label="Loading file…">
513
530
  <div class="skeleton-line skeleton-line--title skeleton-line--break"></div>
514
531
  <div class="skeleton-line skeleton-line--full"></div>
515
532
  <div class="skeleton-line skeleton-line--ninety"></div>
@@ -540,7 +557,7 @@
540
557
  <div class="backlinks-list"></div>
541
558
  </div>
542
559
  </div>
543
- <button class="ui-button ui-button--ghost ui-button--compact ui-button--toggle hidden" id="commentsToggle" aria-label="Toggle comments" title="Toggle comments">
560
+ <button class="ui-button ui-button--ghost ui-button--compact ui-button--toggle hidden" id="commentsToggle" aria-expanded="false" title="Toggle comments">
544
561
  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
545
562
  <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
546
563
  </svg>
@@ -630,7 +647,7 @@
630
647
  </div>
631
648
  <div class="diff-toolbar-actions">
632
649
  <button class="ui-button ui-button--secondary ui-button--action ui-button--wide ui-button--surface hidden diff-back-btn" id="diffBackToHistoryBtn" type="button">
633
- Back to History
650
+ Back to history
634
651
  </button>
635
652
  <div class="diff-toolbar-actions-group diff-toolbar-actions-group-git" id="diffGitActionsGroup" role="group" aria-label="Git file actions">
636
653
  <button class="ui-button ui-button--secondary ui-button--action ui-button--wide ui-button--surface" id="diffPrimaryActionBtn" type="button" disabled>
@@ -648,12 +665,12 @@
648
665
  <span class="ui-stat-token ui-stat-token--del diff-stats-del">-0</span>
649
666
  </div>
650
667
  <div class="ui-segmented-control hidden diff-layout-toggle" id="diffLayoutToggle" role="group" aria-label="Commit diff layout">
651
- <button class="ui-segmented-btn view-btn diff-layout-btn" data-diff-layout="stacked" type="button">Stacked</button>
652
- <button class="ui-segmented-btn active view-btn diff-layout-btn" data-diff-layout="focused" type="button">Focused</button>
668
+ <button class="ui-segmented-btn diff-layout-btn" data-diff-layout="stacked" type="button" aria-pressed="false">Stacked</button>
669
+ <button class="ui-segmented-btn active diff-layout-btn" data-diff-layout="focused" type="button" aria-pressed="true">Focused</button>
653
670
  </div>
654
671
  <div class="ui-segmented-control diff-mode-toggle" role="group" aria-label="Diff view mode">
655
- <button class="ui-segmented-btn active view-btn diff-mode-btn" data-diff-mode="unified" type="button">Unified</button>
656
- <button class="ui-segmented-btn view-btn diff-mode-btn" data-diff-mode="split" type="button">Split</button>
672
+ <button class="ui-segmented-btn active diff-mode-btn" data-diff-mode="unified" type="button" aria-pressed="true">Unified</button>
673
+ <button class="ui-segmented-btn diff-mode-btn" data-diff-mode="split" type="button" aria-pressed="false">Split</button>
657
674
  </div>
658
675
  <span class="diff-toolbar-actions-divider" id="diffToolbarDivider" aria-hidden="true"></span>
659
676
  <div class="diff-toolbar-actions-group" id="diffEditorActionsGroup" role="group" aria-label="Navigation actions">
@@ -670,7 +687,7 @@
670
687
  </main>
671
688
  </div>
672
689
 
673
- <dialog class="app-dialog" id="displayNameDialog">
690
+ <dialog class="app-dialog" id="displayNameDialog" aria-labelledby="displayNameTitle">
674
691
  <form class="app-dialog-form" id="displayNameForm" method="dialog">
675
692
  <div class="app-dialog-header">
676
693
  <h2 class="app-dialog-title" id="displayNameTitle">Update display name</h2>
@@ -687,7 +704,31 @@
687
704
  </form>
688
705
  </dialog>
689
706
 
690
- <dialog class="app-dialog" id="fileActionDialog">
707
+ <dialog class="app-dialog agent-connection-dialog" id="agentConnectionDialog" aria-labelledby="agentConnectionTitle">
708
+ <div class="app-dialog-form">
709
+ <div class="app-dialog-header">
710
+ <h2 class="app-dialog-title" id="agentConnectionTitle">Connect an AI agent</h2>
711
+ <p class="app-dialog-copy">Follow the steps below to give an agent secure access to this workspace.</p>
712
+ </div>
713
+ <div id="agentConnectionContent"></div>
714
+ </div>
715
+ </dialog>
716
+
717
+ <dialog class="app-dialog team-settings-dialog" id="teamSettingsDialog" aria-labelledby="teamSettingsTitle">
718
+ <div class="app-dialog-form">
719
+ <div class="app-dialog-header">
720
+ <h2 class="app-dialog-title" id="teamSettingsTitle">Team Settings</h2>
721
+ <p class="app-dialog-copy">Manage collaborators, pending invitations, and access history.</p>
722
+ </div>
723
+ <div id="teamSettingsContent"></div>
724
+ </div>
725
+ </dialog>
726
+
727
+ <div class="hosted-gate hidden" id="hostedGate">
728
+ <div class="hosted-gate-card" data-hosted-gate-content role="dialog" aria-modal="true" aria-labelledby="hostedGateTitle"></div>
729
+ </div>
730
+
731
+ <dialog class="app-dialog" id="fileActionDialog" aria-labelledby="fileActionTitle">
691
732
  <form class="app-dialog-form" id="fileActionForm" method="dialog">
692
733
  <div class="app-dialog-header">
693
734
  <h2 class="app-dialog-title" id="fileActionTitle">Create file</h2>
@@ -706,7 +747,7 @@
706
747
  </form>
707
748
  </dialog>
708
749
 
709
- <dialog class="app-dialog" id="gitCommitDialog">
750
+ <dialog class="app-dialog" id="gitCommitDialog" aria-labelledby="gitCommitTitle">
710
751
  <form class="app-dialog-form" id="gitCommitForm" method="dialog">
711
752
  <div class="app-dialog-header">
712
753
  <h2 class="app-dialog-title" id="gitCommitTitle">Commit included files</h2>
@@ -724,7 +765,7 @@
724
765
  </form>
725
766
  </dialog>
726
767
 
727
- <dialog class="app-dialog" id="gitResetDialog">
768
+ <dialog class="app-dialog" id="gitResetDialog" aria-labelledby="gitResetTitle">
728
769
  <form class="app-dialog-form" method="dialog">
729
770
  <div class="app-dialog-header">
730
771
  <h2 class="app-dialog-title" id="gitResetTitle">Reset file</h2>
@@ -739,12 +780,12 @@
739
780
  </div>
740
781
  <div class="app-dialog-actions">
741
782
  <button class="ui-button ui-button--secondary" id="gitResetCancel" type="button">Cancel</button>
742
- <button class="ui-button ui-button--danger" id="gitResetSubmit" type="button">Reset File</button>
783
+ <button class="ui-button ui-button--danger" id="gitResetSubmit" type="button">Reset file</button>
743
784
  </div>
744
785
  </form>
745
786
  </dialog>
746
787
 
747
- <div class="tab-lock-overlay hidden" id="tabLockOverlay" role="dialog" aria-modal="true" aria-labelledby="tabLockTitle">
788
+ <dialog class="tab-lock-overlay" id="tabLockOverlay" aria-labelledby="tabLockTitle">
748
789
  <div class="tab-lock-card">
749
790
  <span class="tab-lock-kicker">Single active tab</span>
750
791
  <h2 class="tab-lock-title" id="tabLockTitle">This vault is active in another tab</h2>
@@ -753,11 +794,11 @@
753
794
  <button type="button" class="ui-button ui-button--primary ui-button--lg" id="tabLockTakeoverBtn">Take over here</button>
754
795
  </div>
755
796
  </div>
756
- </div>
797
+ </dialog>
757
798
 
758
799
  <div class="toast-container" id="toastContainer"></div>
759
800
 
760
- <div class="qs-overlay" id="quickSwitcher" role="dialog" aria-modal="true" aria-labelledby="quickSwitcherTitle" aria-hidden="true">
801
+ <dialog class="qs-overlay" id="quickSwitcher" aria-labelledby="quickSwitcherTitle" closedby="any">
761
802
  <div class="qs-modal">
762
803
  <h2 class="sr-only" id="quickSwitcherTitle">Search files and text</h2>
763
804
  <div class="qs-mode-tabs" role="tablist" aria-label="Search mode">
@@ -769,7 +810,7 @@
769
810
  <circle cx="11" cy="11" r="8"></circle>
770
811
  <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
771
812
  </svg>
772
- <input type="text" class="qs-input" id="quickSwitcherInput" role="combobox" placeholder="Search files..." aria-label="Search files" aria-controls="quickSwitcherResults" aria-describedby="quickSwitcherHint quickSwitcherScope" aria-autocomplete="list" aria-expanded="false" autocomplete="off" spellcheck="false">
813
+ <input type="text" class="qs-input" id="quickSwitcherInput" role="combobox" placeholder="Search files..." aria-label="Search files" aria-controls="quickSwitcherResults" aria-describedby="quickSwitcherHint quickSwitcherScope" aria-autocomplete="list" aria-expanded="false" autocomplete="off" spellcheck="false" autofocus>
773
814
  <kbd class="qs-kbd">esc</kbd>
774
815
  </div>
775
816
  <div class="qs-scope hidden" id="quickSwitcherScope" role="note" aria-hidden="true">Exact, case-insensitive text in Markdown, Base, Mermaid, PlantUML, Draw.io, and Excalidraw files. Images are excluded.</div>
@@ -781,8 +822,7 @@
781
822
  <span><kbd>Tab</kbd> Switch mode</span>
782
823
  </div>
783
824
  </div>
784
- </div>
785
- <script vite-ignore src="./app-config.js"></script>
825
+ </dialog>
786
826
  <script type="module" src="./main-entry.js"></script>
787
827
  </body>
788
828
  </html>
@@ -1,21 +1,17 @@
1
- import darkHighlightThemeUrl from '../assets/vendor/highlight/github-dark.min.css?url';
2
- import lightHighlightThemeUrl from '../assets/vendor/highlight/github.min.css?url';
3
- import '../styles/base.css';
1
+ import { CollabMdAppShell } from '../bootstrap/collabmd-app-shell.js';
2
+ import { ensureClientAuthenticated } from '../infrastructure/auth-client.js';
4
3
  import '../styles/style.css';
5
4
 
6
- function ensureHighlightThemeStylesheet() {
7
- let themeStylesheet = document.getElementById('hljs-theme');
8
- if (!(themeStylesheet instanceof HTMLLinkElement)) {
9
- themeStylesheet = document.createElement('link');
10
- themeStylesheet.id = 'hljs-theme';
11
- themeStylesheet.rel = 'stylesheet';
12
- document.head.append(themeStylesheet);
13
- }
14
-
15
- themeStylesheet.href = darkHighlightThemeUrl;
16
- themeStylesheet.dataset.darkHref = darkHighlightThemeUrl;
17
- themeStylesheet.dataset.lightHref = lightHighlightThemeUrl;
5
+ async function start() {
6
+ await ensureClientAuthenticated();
7
+ const app = new CollabMdAppShell();
8
+ await app.initialize();
18
9
  }
19
10
 
20
- ensureHighlightThemeStylesheet();
21
- await import('../main.js');
11
+ if (document.readyState === 'loading') {
12
+ document.addEventListener('DOMContentLoaded', () => {
13
+ void start();
14
+ }, { once: true });
15
+ } else {
16
+ void start();
17
+ }
@@ -72,34 +72,23 @@ export const chatFeature = {
72
72
  this.renderChat();
73
73
  },
74
74
 
75
- toggleChatPanel() {
76
- if (this.chatIsOpen) {
77
- this.closeChatPanel({ restoreFocus: true });
78
- return;
79
- }
80
-
81
- this.openChatPanel();
82
- },
83
75
 
84
76
  openChatPanel() {
85
77
  this.chatIsOpen = true;
86
78
  this.chatUnreadCount = 0;
79
+ if (!this.elements.chatPanel?.matches(':popover-open')) {
80
+ this.elements.chatPanel?.showPopover();
81
+ }
87
82
  this.renderChat({ stickToBottom: true });
88
- requestAnimationFrame(() => {
89
- this.elements.chatInput?.focus();
90
- });
83
+ requestAnimationFrame(() => this.elements.chatInput?.focus());
91
84
  },
92
85
 
93
- closeChatPanel({ restoreFocus = false } = {}) {
94
- if (!this.chatIsOpen) {
95
- return;
86
+ closeChatPanel() {
87
+ if (this.elements.chatPanel?.matches(':popover-open')) {
88
+ this.elements.chatPanel.hidePopover();
96
89
  }
97
-
98
90
  this.chatIsOpen = false;
99
91
  this.renderChat({ messagesChanged: false });
100
- if (restoreFocus) {
101
- requestAnimationFrame(() => this.elements.chatToggleButton?.focus());
102
- }
103
92
  },
104
93
 
105
94
  handleChatSubmit() {
@@ -129,8 +118,6 @@ export const chatFeature = {
129
118
  },
130
119
 
131
120
  renderChat({ messagesChanged = true, stickToBottom = false } = {}) {
132
- this.elements.chatContainer?.classList.toggle('is-open', this.chatIsOpen);
133
- this.elements.chatPanel?.classList.toggle('hidden', !this.chatIsOpen);
134
121
 
135
122
  this.syncChatToggleButton();
136
123
  this.syncChatNotificationButton();
@@ -363,8 +350,6 @@ export const chatFeature = {
363
350
 
364
351
  button.classList.toggle('is-active', this.chatIsOpen);
365
352
  button.classList.toggle('is-unread', shouldEmphasizeUnread);
366
- button.setAttribute('aria-controls', 'chatPanel');
367
- button.setAttribute('aria-expanded', String(this.chatIsOpen));
368
353
  button.setAttribute(
369
354
  'aria-label',
370
355
  hasUnread ? `Open team chat, ${this.chatUnreadCount} unread` : 'Open team chat',
@@ -34,6 +34,9 @@ export const commentsFeature = {
34
34
 
35
35
  syncCommentChrome(filePath = this.currentFilePath) {
36
36
  const supported = supportsCommentsForFilePath(filePath) && !this.isExcalidrawFile(filePath);
37
+ if (supported && globalThis.document) {
38
+ this._deferredCollabStylesPromise ??= import('../../styles/deferred-collab.css');
39
+ }
37
40
  this.commentUi.setCurrentFile(filePath, {
38
41
  fileKind: this.getCommentFileKind(filePath),
39
42
  supported,
@@ -77,6 +80,9 @@ export const commentsFeature = {
77
80
 
78
81
  refreshCommentOverviewForSidebarOpen() {
79
82
  this._commentOverviewStale = false;
83
+ if (globalThis.document) {
84
+ this._deferredCollabStylesPromise ??= import('../../styles/deferred-collab.css');
85
+ }
80
86
  void this.commentsOverview?.refresh?.();
81
87
  },
82
88