collabmd 0.1.45 → 0.1.47

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 (356) hide show
  1. package/README.md +40 -19
  2. package/bin/collabmd.js +27 -1
  3. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BPH4FJkv.js +1 -0
  4. package/dist/client/assets/{abnfDiagram-N423BO3Z-CUMTFJhI.js → abnfDiagram-VCTEODGH-BNDLzJ7L.js} +1 -1
  5. package/dist/client/assets/architecture-7GRP2DOG-BMOPAkUC.js +1 -0
  6. package/dist/client/assets/{architectureDiagram-T3A2C74G-w25m71oV.js → architectureDiagram-5GKGNRK7-I39sYjHI.js} +1 -1
  7. package/dist/client/assets/base-BYODPHdS.js +1 -0
  8. package/dist/client/assets/blockDiagram-NRAW4CY4-C6DtJy5Y.js +129 -0
  9. package/dist/client/assets/browser-BKLM0ThC-IxjwuOIz-BBqQnUEb.js +1 -0
  10. package/dist/client/assets/browser-utils--H_DkyEF.js +1 -0
  11. package/dist/client/assets/c4Diagram-UCG6FXSJ-CtWtxS9_.js +38 -0
  12. package/dist/client/assets/channel-CaoKA_We.js +1 -0
  13. package/dist/client/assets/{chunk-U6XO7XAA-BFxjP5U3.js → chunk-2ZTRR5NV-C2qZJila.js} +1 -1
  14. package/dist/client/assets/{chunk-YOTPTUD7-D0vRKqYp.js → chunk-3Z5EZCMW-DMniOlPd.js} +1 -1
  15. package/dist/client/assets/{chunk-BIQX33UG-DZEsGuSn.js → chunk-5V3GS4D5-i-ZDOEnP.js} +1 -1
  16. package/dist/client/assets/{chunk-MOZMSUNE-XVucA-n6.js → chunk-6AZGARVD-BB6FqMl-.js} +1 -1
  17. package/dist/client/assets/{chunk-5JV3BV7I-Cy5pj3QY.js → chunk-6EIED4P4-DdUJkP0f.js} +1 -1
  18. package/dist/client/assets/{chunk-R7FJI6CG-Cnn3gE-Y.js → chunk-6K3QC6MW-CqVsVn-y.js} +1 -1
  19. package/dist/client/assets/{chunk-OSBZ3O6U-CrKZOUOr.js → chunk-6TQVIW2G-DKlLbNIP.js} +1 -1
  20. package/dist/client/assets/{chunk-JG7HCLWE-BYfiSaVt.js → chunk-747NJXEK-BFkZPlab.js} +1 -1
  21. package/dist/client/assets/{chunk-NSK5VX7P-TLH37VXI.js → chunk-75Z2AOVW-CdFSaPjz.js} +1 -1
  22. package/dist/client/assets/chunk-CKBBP62Z-DG26UiBv.js +2 -0
  23. package/dist/client/assets/{chunk-3NCLNEKW-Y2Jf_LI-.js → chunk-CLGD4ZFX-DQLgbQrv.js} +1 -1
  24. package/dist/client/assets/chunk-DSNCTWBM-8xkug7fQ.js +2 -0
  25. package/dist/client/assets/chunk-DU6HZSFF-COXDzJK1.js +127 -0
  26. package/dist/client/assets/{chunk-2GRJ4B5K-DhnlUv3F.js → chunk-F27PBJKO-CNHIFhjo.js} +1 -1
  27. package/dist/client/assets/{chunk-YGJVY4SA-CjSe7Bx7.js → chunk-FLYJHZSQ-Be7lKF17.js} +1 -1
  28. package/dist/client/assets/{chunk-KEIR6QF5-BICK3FdT.js → chunk-FOHPRMQF-DHwB1DNv.js} +2 -2
  29. package/dist/client/assets/{chunk-5RXB4S5H-BWrwFqMI.js → chunk-G27WJ6UU-D9-eg537.js} +2 -2
  30. package/dist/client/assets/chunk-GMAD6QVW-CbcBqPM5.js +72 -0
  31. package/dist/client/assets/{chunk-QBLGF6JB-CxAyS2mW.js → chunk-I5DQTOEV-Hm2LfiYI.js} +1 -1
  32. package/dist/client/assets/{chunk-5FCAYU7R-Dh5nylU8.js → chunk-ICYGCRZG-749o-pGJ.js} +1 -1
  33. package/dist/client/assets/{chunk-CQNSW5MT-B8S09OIh.js → chunk-IH6LHLGP-CC6I9F3i.js} +1 -1
  34. package/dist/client/assets/chunk-JQ64N6SF-DSFNH4bh.js +1 -0
  35. package/dist/client/assets/{chunk-CYSBUYHQ-C1Rf4art.js → chunk-KI3K4JFJ-Rma-0k_M.js} +1 -1
  36. package/dist/client/assets/{chunk-GF5L2VYU-DkJpO7ff.js → chunk-LCL6LL3I-DmDkVukh.js} +1 -1
  37. package/dist/client/assets/chunk-LNGE3PJU-DWpGwHrW.js +34 -0
  38. package/dist/client/assets/chunk-OBVCFTLP-BJR7u1jh.js +1 -0
  39. package/dist/client/assets/{chunk-5TONJI2A-DQOY3q1H.js → chunk-OUJLGHUK-D0j2JRSg.js} +1 -1
  40. package/dist/client/assets/chunk-P2QGCYS3-BRpqY32H.js +1 -0
  41. package/dist/client/assets/{chunk-KBJHAD2P-CB_3zWUf.js → chunk-POPQ4Y6H-Cb4SlVZF.js} +1 -1
  42. package/dist/client/assets/{chunk-4I5QYGJK-CCB2YcIH.js → chunk-PWAF6VOD-Cz8IwBB5.js} +1 -1
  43. package/dist/client/assets/chunk-R7TYR2AO-CTd0Yj98.js +10 -0
  44. package/dist/client/assets/chunk-RHFEMEQ7-CWY8cf4H.js +168 -0
  45. package/dist/client/assets/chunk-RM4UPSZO-CWRwxNWJ.js +41 -0
  46. package/dist/client/assets/{chunk-6Q2QTUOP-CPlWzBtc.js → chunk-SVP7TREG-CyHOmcac.js} +1 -1
  47. package/dist/client/assets/chunk-TEH6E4GO-DVayPj-q.js +62 -0
  48. package/dist/client/assets/{chunk-EMLP6XTP-RLD4nXpI.js → chunk-UY3FDG6J-CnmaAkG5.js} +1 -1
  49. package/dist/client/assets/{chunk-5HE753X5-Bw-yg4kO.js → chunk-XHIXRSVI-BFQ6B8BE.js} +1 -1
  50. package/dist/client/assets/classDiagram-DTDB5LWJ-7fEmn0zV.js +1 -0
  51. package/dist/client/assets/classDiagram-v2-JRS7N3AN-7fEmn0zV.js +1 -0
  52. package/dist/client/assets/comment-thread-store-CdcwrObc.js +1 -0
  53. package/dist/client/assets/comment-threads-9J6Em-_y.js +4 -0
  54. package/dist/client/assets/comment-ui-shared-DWkk9Vh3.js +7 -0
  55. package/dist/client/assets/cynefin-OW5HDTMX-7tP7QfM3.js +1 -0
  56. package/dist/client/assets/{cynefinDiagram-MW4NZA55-CJxXfJek.js → cynefinDiagram-5FMLGOSQ-CdTPi2yO.js} +1 -1
  57. package/dist/client/assets/dagre-3AP2YEHR-5gtJtd0O.js +4 -0
  58. package/dist/client/assets/dagre-PrKaheQc.js +1 -0
  59. package/dist/client/assets/{diagram-7IWD3JNH-B2d2Bm15.js → diagram-S7CK7UJ4-BudWz9WU.js} +4 -4
  60. package/dist/client/assets/{diagram-UB23O5K3-DJcKCwv9.js → diagram-UQ7AKVKN-3v4rbH-s.js} +1 -1
  61. package/dist/client/assets/{diagram-B4RE2ZJO-NP4UAwjR.js → diagram-VSXAHHWV-CQRVEZR7.js} +1 -1
  62. package/dist/client/assets/{diagram-Q27KOJAE-DylDuwor.js → diagram-VX7I27RA-C_-rj0sw.js} +1 -1
  63. package/dist/client/assets/{diagram-LBJQPF4R-D1FJQV8t.js → diagram-Z3DM3KII-B4yxavgj.js} +1 -1
  64. package/dist/client/assets/direct-engine-DdrQKpgq-CtKfQzCt.js +5 -0
  65. package/dist/client/assets/dist-73RPdcyU.js +1 -0
  66. package/dist/client/assets/dist-BJ1bJs33.js +1 -0
  67. package/dist/client/assets/{dist-CYZmbokb.js → dist-BK9QvQrc.js} +9 -9
  68. package/dist/client/assets/dist-BPHLJ09L.js +11 -0
  69. package/dist/client/assets/dist-B_yQaEv_.js +6 -0
  70. package/dist/client/assets/dist-BeajGMhO.js +1 -0
  71. package/dist/client/assets/{dist-JYEDRrPT.js → dist-Bw3VIE_v.js} +1 -1
  72. package/dist/client/assets/dist-ByrG2qBA.js +1 -0
  73. package/dist/client/assets/dist-C5NgpdG5.js +1 -0
  74. package/dist/client/assets/dist-CH-sQu3r.js +1 -0
  75. package/dist/client/assets/dist-CKS_-are.js +1 -0
  76. package/dist/client/assets/{dist-MvcV4190.js → dist-CdmKGRGr.js} +1 -1
  77. package/dist/client/assets/{dist-DGb27Dl6.js → dist-CietwTVS.js} +1 -1
  78. package/dist/client/assets/dist-D37Hyu3h.js +9 -0
  79. package/dist/client/assets/dist-D3fehAZ2.js +2 -0
  80. package/dist/client/assets/dist-D5wCC32z.js +1 -0
  81. package/dist/client/assets/{dist-DCzuX1AF.js → dist-DDUn5zTz.js} +1 -1
  82. package/dist/client/assets/dist-DGEbEfw4.js +1 -0
  83. package/dist/client/assets/dist-DVy5woUy.js +1 -0
  84. package/dist/client/assets/{dist-3bgCp7iY.js → dist-DZAAWTG-.js} +1 -1
  85. package/dist/client/assets/{dist-Drp8uu5J.js → dist-Dir5dDKZ.js} +1 -1
  86. package/dist/client/assets/dist-Dl_tpDSr.js +1 -0
  87. package/dist/client/assets/dist-DuH3ZrHo.js +1 -0
  88. package/dist/client/assets/dist-DutPuFmC.js +1 -0
  89. package/dist/client/assets/{dist-D2AQ-76g.js → dist-LQ4kDCKz.js} +1 -1
  90. package/dist/client/assets/{dist-C11hHqv_.js → dist-RKBTaQMb.js} +12 -12
  91. package/dist/client/assets/dist-Tw-Fxpeb.js +1 -0
  92. package/dist/client/assets/dist-eBx8q6Sy.js +1 -0
  93. package/dist/client/assets/{dist-DK5Gs2wa.js → dist-mj2Ht75J.js} +1 -1
  94. package/dist/client/assets/{dist-CnL7Y2sM.js → dist-netZOQtD.js} +1 -1
  95. package/dist/client/assets/{drawio-editor-ClE8jpoG.js → drawio-editor-BjrxTe3l.js} +1 -1
  96. package/dist/client/assets/drawioEditor-DUVZjSSr.js +2 -0
  97. package/dist/client/assets/{ebnfDiagram-BXEA7PRR-nw0wmA6y.js → ebnfDiagram-PWID7BFC-OXa8VEp1.js} +1 -1
  98. package/dist/client/assets/editor-session-DfZuRgB_.js +54 -0
  99. package/dist/client/assets/embedded-editor-base-DvMynhKu.css +1 -0
  100. package/dist/client/assets/embedpdf-BmE13ZZ0.js +1 -0
  101. package/dist/client/assets/embedpdf-DA4bA119-BPqZxwjc.js +2363 -0
  102. package/dist/client/assets/{en-7NFCYGKX-BrgYZAEe.js → en-SJ2YIMFF-CJBL3nkq.js} +1 -1
  103. package/dist/client/assets/erDiagram-SSCWMZ5O-C-iy6VkX.js +99 -0
  104. package/dist/client/assets/es-CAsWR6hG.js +22 -0
  105. package/dist/client/assets/eventmodeling-NTZA5JFV-BR2FzK4R.js +1 -0
  106. package/dist/client/assets/excalidraw-editor-BlcN6umJ.css +1 -0
  107. package/dist/client/assets/excalidraw-editor-D7pnUCLH.js +9 -0
  108. package/dist/client/assets/excalidraw-scene-BOben2gr.js +1 -0
  109. package/dist/client/assets/excalidrawEditor-B0jOK3lv.js +2 -0
  110. package/dist/client/assets/export-page-Bs3xE1fg.js +57 -0
  111. package/dist/client/assets/exportDocument-Dg9MjkIk.js +2 -0
  112. package/dist/client/assets/exportDocument-PnYU3v1s.css +1 -0
  113. package/dist/client/assets/file-icon-svg-CQAjlWjK.js +1 -0
  114. package/dist/client/assets/file-kind-BbqgGzpc.js +1 -0
  115. package/dist/client/assets/flowDiagram-A5DVABFB-CiW1eN8C.js +1 -0
  116. package/dist/client/assets/{ganttDiagram-PKOTCBZU-BnM97BCT.js → ganttDiagram-EL5Y4UJY-DtKHAbez.js} +1 -1
  117. package/dist/client/assets/gitGraph-4MIJSDKK-DYlXv_yJ.js +1 -0
  118. package/dist/client/assets/{gitGraphDiagram-DS77QQ5N-BQpQhjuN.js → gitGraphDiagram-WWUBYQGX-oue8fQ5o.js} +1 -1
  119. package/dist/client/assets/github-dark.min-BV82VuKq.css +1 -0
  120. package/dist/client/assets/github.min-v3dd8CNH.css +1 -0
  121. package/dist/client/assets/image-ZVKINSPA-0zXSnE7M.js +1 -0
  122. package/dist/client/assets/index-BIpgxyGZ.css +1 -0
  123. package/dist/client/assets/index-Z5sI0Bj-.js +2 -0
  124. package/dist/client/assets/info-A6RAGUB7-BlU-8_xu.js +1 -0
  125. package/dist/client/assets/{infoDiagram-6WML65LV-DYB8HCDQ.js → infoDiagram-RXCK75RN-BMzo6KIn.js} +1 -1
  126. package/dist/client/assets/{ishikawaDiagram-WSZJBQD7-Coz_P3t6.js → ishikawaDiagram-5VMMS53U-BIM3h287.js} +1 -1
  127. package/dist/client/assets/{journeyDiagram-NVQOT4AX-B6edChce.js → journeyDiagram-EYS64GPL-mF6Lh8O-.js} +1 -1
  128. package/dist/client/assets/{kanban-definition-27J2QSJJ-BFd9-cLc.js → kanban-definition-3QL26DDD-DLN2NyoR.js} +2 -2
  129. package/dist/client/assets/{line-B_S_S8kV.js → line-BfTWJmgf.js} +1 -1
  130. package/dist/client/assets/main-Dwnj9Gaq.js +903 -0
  131. package/dist/client/assets/{mermaid-parser.core-CUVdebAV.js → mermaid-parser.core-Bl0efOMt.js} +2 -2
  132. package/dist/client/assets/mermaid.core-CLZBlpIW.js +11 -0
  133. package/dist/client/assets/{mindmap-definition-FAOFIHXS-C9PQ38Al.js → mindmap-definition-FBJOCRG2-CRyHaHTk.js} +1 -1
  134. package/dist/client/assets/packet-AYTQ26CC-BSJEH9Lb.js +1 -0
  135. package/dist/client/assets/pdfium-RAgkpwfK.wasm +0 -0
  136. package/dist/client/assets/{pegDiagram-VL7TDLO6-BMZUrSaU.js → pegDiagram-XKGWAZYB-B31fKPR2.js} +1 -1
  137. package/dist/client/assets/pie-WAS4IAKB-qxv01Y8W.js +1 -0
  138. package/dist/client/assets/{pieDiagram-7S7Q4E2Y-h8kbCL9o.js → pieDiagram-E7YTZNPT-B5OZPb88.js} +1 -1
  139. package/dist/client/assets/preview-render-compiler-BApvlLLo.js +35 -0
  140. package/dist/client/assets/preview-render-compiler-BQ_3h9vD.js +1 -0
  141. package/dist/client/assets/preview-render-profile-CE-5rVTC.js +1 -0
  142. package/dist/client/assets/preview-render-worker-BmN79bVc.js +60 -0
  143. package/dist/client/assets/prod-BiYPMR1i.js +177 -0
  144. package/dist/client/assets/prod-VxdGZ5Ly.js +1 -0
  145. package/dist/client/assets/{quadrantDiagram-CIZ2JOQS-CkElyfMi.js → quadrantDiagram-AXDQQJYC-Drrw14YH.js} +1 -1
  146. package/dist/client/assets/quick-switcher-controller-ButWPmCI.js +12 -0
  147. package/dist/client/assets/radar-RG4KPBEZ-B6h6pWOs.js +1 -0
  148. package/dist/client/assets/railroad-74A4TZTK-CGtTWdGc.js +1 -0
  149. package/dist/client/assets/railroad-abnf-HS5TGJTU-Cq7y22IA.js +1 -0
  150. package/dist/client/assets/railroad-ebnf-LZEXJU2U-V0aQVv9m.js +1 -0
  151. package/dist/client/assets/railroad-peg-WCYAUIDC-BQiIsX_p.js +1 -0
  152. package/dist/client/assets/{railroadDiagram-AXF67PYL-c75gnikD.js → railroadDiagram-O6MQD6OU-BPifP0MB.js} +1 -1
  153. package/dist/client/assets/{requirementDiagram-LRYGKXZP-mNxKLuHS.js → requirementDiagram-EFPCY7ZU-CRZG6mRB.js} +2 -2
  154. package/dist/client/assets/runtime-config-BLrEKVO1.js +1 -0
  155. package/dist/client/assets/{sankeyDiagram-W5VNT64P-0OhplksI.js → sankeyDiagram-P5KCCOFB-DvarEJpo.js} +1 -1
  156. package/dist/client/assets/{sequenceDiagram-SI44F4Z6-BJ_yAocC.js → sequenceDiagram-WJ2MYXX4-B4oWlb-w.js} +1 -1
  157. package/dist/client/assets/{stateDiagram-OKZ733FA-Cc83O86s.js → stateDiagram-HBIQ2CUA-qbHIIqRZ.js} +1 -1
  158. package/dist/client/assets/stateDiagram-v2-4QOOHH4V-B--gjrit.js +1 -0
  159. package/dist/client/assets/swimlanes-XN3QIQJK-xB6CtUGj.js +1 -0
  160. package/dist/client/assets/swimlanesDiagram-VK2B7HYN-DO8XNXEg.js +8 -0
  161. package/dist/client/assets/{timeline-definition-Z64GVDOM-BWDAGTHz.js → timeline-definition-24CTP7MA-Lj_yTNlY.js} +1 -1
  162. package/dist/client/assets/treeView-Q6P3EWNA-BTTYcvrF.js +1 -0
  163. package/dist/client/assets/treemap-WGGIJYW6-Cg7tyfH8.js +1 -0
  164. package/dist/client/assets/vault-api-client-_LpV1aIn.js +6 -0
  165. package/dist/client/assets/{vennDiagram-T6HMQDX7-LOSsnlMB.js → vennDiagram-4TSXK5OY-BekRp5Y0.js} +1 -1
  166. package/dist/client/assets/wardley-WFR3VGLG-C6N1rULY.js +1 -0
  167. package/dist/client/assets/{wardleyDiagram-T6FBY63Y-BxII3foY.js → wardleyDiagram-VM6X3IG4-kdnV_Hdm.js} +1 -1
  168. package/dist/client/assets/worker-engine-m0rlHn8R-S8mpn_O0.js +17369 -0
  169. package/dist/client/assets/{xychartDiagram-ELKLHX3M-B-pTEjju.js → xychartDiagram-S5SC5T6Z-DufGwNSB.js} +3 -3
  170. package/dist/client/drawio-editor.html +1 -1
  171. package/dist/client/excalidraw-editor.html +1 -1
  172. package/dist/client/export-document.html +3 -3
  173. package/dist/client/index.html +30 -8
  174. package/docker-compose.yml +42 -0
  175. package/package.json +32 -18
  176. package/scripts/local-structurizr-compose.mjs +101 -0
  177. package/src/client/app/index.html +27 -5
  178. package/src/client/application/app-shell/comments-feature.js +21 -13
  179. package/src/client/application/app-shell/git-feature.js +14 -2
  180. package/src/client/application/app-shell/presence-feature.js +4 -3
  181. package/src/client/application/app-shell/ui-feature-shell.js +109 -2
  182. package/src/client/application/app-shell/ui-feature-toolbar.js +2 -52
  183. package/src/client/application/app-shell/workspace-feature.js +5 -1
  184. package/src/client/application/app-shell-elements.js +3 -0
  185. package/src/client/application/pdf-preview-controller.js +75 -0
  186. package/src/client/application/preview-render-compiler.js +3 -0
  187. package/src/client/application/quick-switcher-loader.js +1 -1
  188. package/src/client/application/structurizr-preview-controller.js +395 -0
  189. package/src/client/application/workspace-coordinator.js +25 -3
  190. package/src/client/application/workspace-preview-controller.js +88 -2
  191. package/src/client/assets/vendor/highlight/github-dark.min.css +2 -10
  192. package/src/client/assets/vendor/highlight/github.min.css +2 -10
  193. package/src/client/bootstrap/collabmd-app-shell.js +39 -6
  194. package/src/client/browser-utils.js +44 -0
  195. package/src/client/domain/runtime-paths.js +26 -5
  196. package/src/client/domain/structurizr-language.js +99 -0
  197. package/src/client/domain/vault-paths.js +48 -0
  198. package/src/client/excalidraw-editor.js +844 -51
  199. package/src/client/export/export-host.js +1 -1
  200. package/src/client/export/export-page.js +6 -2
  201. package/src/client/export/export-pipeline.js +60 -1
  202. package/src/client/infrastructure/browser-preferences-port.js +10 -0
  203. package/src/client/infrastructure/comment-thread-store.js +34 -13
  204. package/src/client/infrastructure/editor-session.js +10 -0
  205. package/src/client/infrastructure/editor-view-adapter.js +46 -2
  206. package/src/client/infrastructure/excalidraw-room-client.js +103 -14
  207. package/src/client/infrastructure/git-api-client.js +5 -0
  208. package/src/client/infrastructure/vault-api-client.js +26 -0
  209. package/src/client/presentation/comment-ui/comment-ui-render.js +4 -0
  210. package/src/client/presentation/comment-ui/comment-ui-shared.js +4 -0
  211. package/src/client/presentation/comment-ui-controller.js +2 -0
  212. package/src/client/presentation/drawio-embed-controller.js +9 -102
  213. package/src/client/presentation/drawio-viewer.js +118 -0
  214. package/src/client/presentation/excalidraw-embed-controller.js +81 -8
  215. package/src/client/presentation/file-action-controller.js +102 -0
  216. package/src/client/presentation/file-explorer-controller.js +0 -5
  217. package/src/client/presentation/file-explorer-view.js +51 -73
  218. package/src/client/presentation/file-icon-svg.js +40 -0
  219. package/src/client/presentation/file-tree-state.js +6 -3
  220. package/src/client/presentation/git-diff-view-controller.js +731 -3
  221. package/src/client/presentation/git-panel-controller.js +2 -2
  222. package/src/client/presentation/outline-controller.js +86 -0
  223. package/src/client/presentation/quick-switcher-controller.js +73 -22
  224. package/src/client/presentation/quick-switcher-text-search.js +1 -1
  225. package/src/client/styles/components/navigation.css +11 -1
  226. package/src/client/styles/features/diagram-preview.css +76 -0
  227. package/src/client/styles/features/diff-special.css +309 -0
  228. package/src/client/styles/features/preview-markdown.css +25 -0
  229. package/src/client/styles/features/quick-switcher.css +8 -0
  230. package/src/client/styles/foundation/themes.css +7 -0
  231. package/src/client/styles/layout/shell.css +40 -1
  232. package/src/client/styles/layout/sidebar.css +42 -4
  233. package/src/client/styles/layout/view-modes.css +1 -0
  234. package/src/client/styles/overrides/highlightjs.css +20 -4
  235. package/src/client/styles/style.css +1 -0
  236. package/src/client/styles/surfaces/excalidraw-editor.css +294 -0
  237. package/src/domain/comment-threads.js +63 -5
  238. package/src/domain/excalidraw-room-codec.js +6 -4
  239. package/src/domain/file-kind.js +35 -3
  240. package/src/server/config/env.js +79 -0
  241. package/src/server/create-app-server.js +12 -0
  242. package/src/server/domain/bases/base-definition.js +1 -1
  243. package/src/server/domain/bases/base-expression-runtime.js +1 -4
  244. package/src/server/domain/bases/base-index-snapshot-store.js +1 -4
  245. package/src/server/domain/bases/base-transform.js +1 -4
  246. package/src/server/domain/collaboration/collaboration-room.js +55 -21
  247. package/src/server/domain/comment-overview.js +15 -5
  248. package/src/server/domain/ripgrep-search-service.js +4 -0
  249. package/src/server/infrastructure/git/diff-service.js +5 -0
  250. package/src/server/infrastructure/git/git-service.js +44 -11
  251. package/src/server/infrastructure/git/history-service.js +54 -0
  252. package/src/server/infrastructure/git/image-mime.js +14 -0
  253. package/src/server/infrastructure/git/untracked-files.js +28 -1
  254. package/src/server/infrastructure/http/create-git-api-command-handler.js +3 -1
  255. package/src/server/infrastructure/http/create-git-api-query-handler.js +31 -1
  256. package/src/server/infrastructure/http/create-request-handler.js +16 -23
  257. package/src/server/infrastructure/http/create-static-handler.js +5 -2
  258. package/src/server/infrastructure/http/create-structurizr-api-handler.js +147 -0
  259. package/src/server/infrastructure/http/create-vault-api-command-handler.js +66 -4
  260. package/src/server/infrastructure/http/create-vault-api-query-handler.js +51 -3
  261. package/src/server/infrastructure/http/http-request-helpers.js +22 -0
  262. package/src/server/infrastructure/persistence/path-utils.js +1 -1
  263. package/src/server/infrastructure/persistence/vault-file-store.js +3 -0
  264. package/src/server/infrastructure/structurizr/structurizr-embed.css +43 -0
  265. package/src/server/infrastructure/structurizr/structurizr-workspace-service.js +400 -0
  266. package/src/server/infrastructure/websocket/attach-collaboration-gateway.js +4 -22
  267. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-CbSISC1w.js +0 -1
  268. package/dist/client/assets/architecture-TIHT7OUA-CsHfPErM.js +0 -1
  269. package/dist/client/assets/base-CxPEiHuy.js +0 -1
  270. package/dist/client/assets/blockDiagram-VBNYF7ZC-CipJt9Jl.js +0 -132
  271. package/dist/client/assets/browser-utils-CKtI_rZl.js +0 -1
  272. package/dist/client/assets/c4Diagram-5PPSVZJV-B5ktVx6g.js +0 -10
  273. package/dist/client/assets/channel-4Jkmq93I.js +0 -1
  274. package/dist/client/assets/chunk-7BUUIJ7U-Bb538aSH.js +0 -1
  275. package/dist/client/assets/chunk-7Z6QIM7H-BP9Pdsm9.js +0 -10
  276. package/dist/client/assets/chunk-ERSWUTIN-ME9RVNel.js +0 -41
  277. package/dist/client/assets/chunk-I66GZJ75-CVFiiffQ.js +0 -127
  278. package/dist/client/assets/chunk-J7OUQ5F2-4CEb7pvH.js +0 -2
  279. package/dist/client/assets/chunk-JQJVKLGR-cx8X_24v.js +0 -156
  280. package/dist/client/assets/chunk-QR6OTTB3-CDAA_5Ib.js +0 -62
  281. package/dist/client/assets/chunk-RYQCIY6F-D-a0zH8K.js +0 -1
  282. package/dist/client/assets/chunk-UBXNYLIW-Bhk-PbFK.js +0 -1
  283. package/dist/client/assets/chunk-W5SLKNZC-BdNSCxZ9.js +0 -1
  284. package/dist/client/assets/chunk-WRU74C26-h6_XkD3_.js +0 -70
  285. package/dist/client/assets/chunk-ZIRB5QZD-O39ZBUk3.js +0 -32
  286. package/dist/client/assets/classDiagram-JCYQIIEL-L7lsyW_w.js +0 -1
  287. package/dist/client/assets/classDiagram-v2-OCEON4UE-L7lsyW_w.js +0 -1
  288. package/dist/client/assets/comment-threads-DDegmaFO.js +0 -4
  289. package/dist/client/assets/cynefin-VYW2F7L2-Ds2Fw2Y0.js +0 -1
  290. package/dist/client/assets/dagre-Buvkdvvj.js +0 -1
  291. package/dist/client/assets/dagre-VZM6K2ZE-L1xArOGs.js +0 -4
  292. package/dist/client/assets/dist-BH87JoHx.js +0 -11
  293. package/dist/client/assets/dist-BIkPRZO7.js +0 -6
  294. package/dist/client/assets/dist-BqCsFpx4.js +0 -1
  295. package/dist/client/assets/dist-C2JHCt8U.js +0 -1
  296. package/dist/client/assets/dist-CZjTtmTu.js +0 -1
  297. package/dist/client/assets/dist-Cig4Ov_X.js +0 -1
  298. package/dist/client/assets/dist-CqQEC8gR.js +0 -1
  299. package/dist/client/assets/dist-D4Rzqod1.js +0 -1
  300. package/dist/client/assets/dist-D5sn-mwk.js +0 -9
  301. package/dist/client/assets/dist-D7G-n87v.js +0 -1
  302. package/dist/client/assets/dist-DRqOrNgN.js +0 -1
  303. package/dist/client/assets/dist-DetkMS_4.js +0 -1
  304. package/dist/client/assets/dist-DhLvC8DS.js +0 -2
  305. package/dist/client/assets/dist-Dp6FVkQ1.js +0 -1
  306. package/dist/client/assets/dist-DtbjNB28.js +0 -1
  307. package/dist/client/assets/dist-DyrYcvpo2.js +0 -1
  308. package/dist/client/assets/dist-GrygD2zE.js +0 -1
  309. package/dist/client/assets/dist-HmEpWUow.js +0 -1
  310. package/dist/client/assets/dist-RTa81Km7.js +0 -1
  311. package/dist/client/assets/drawioEditor-CXaTM9Ds.js +0 -2
  312. package/dist/client/assets/editor-session-GTwZS6Df.js +0 -16
  313. package/dist/client/assets/embedded-editor-base-CiNEc8vy.css +0 -1
  314. package/dist/client/assets/erDiagram-JOGREHBK-cYUpEKpf.js +0 -85
  315. package/dist/client/assets/eventmodeling-45OFAUF4-CLEiVx5s.js +0 -1
  316. package/dist/client/assets/excalidraw-editor-BZVM81BO.js +0 -9
  317. package/dist/client/assets/excalidraw-editor-CyGwOhLz.css +0 -1
  318. package/dist/client/assets/excalidraw-scene-C8n9CHsK.js +0 -176
  319. package/dist/client/assets/excalidrawEditor-DxJanCze.js +0 -2
  320. package/dist/client/assets/export-page-CUfws2T-.js +0 -39
  321. package/dist/client/assets/exportDocument-BCuxqXDY.js +0 -2
  322. package/dist/client/assets/exportDocument-DV-OX74E.css +0 -1
  323. package/dist/client/assets/file-kind-BKPOIRPE.js +0 -1
  324. package/dist/client/assets/flowDiagram-UKHOOZJN-D0ypP0Ez.js +0 -1
  325. package/dist/client/assets/gitGraph-TEB2WS4Q-CZFBqwW-.js +0 -1
  326. package/dist/client/assets/github-dark.min-Z5exjX_n.css +0 -1
  327. package/dist/client/assets/github.min-D2BCvnWf.css +0 -1
  328. package/dist/client/assets/image-QXRYHUNP-lfTHE3bb.js +0 -1
  329. package/dist/client/assets/index-C3YnUgMD.css +0 -1
  330. package/dist/client/assets/index-D2wXraJ1.js +0 -2
  331. package/dist/client/assets/info-DKCQHKI2--1InqQeT.js +0 -1
  332. package/dist/client/assets/main-DtiGz7uI.js +0 -795
  333. package/dist/client/assets/map-BaFkSB1l.js +0 -1
  334. package/dist/client/assets/mermaid.core-DN-lF51U.js +0 -11
  335. package/dist/client/assets/packet-7NZHBO7P-BGMXB0XL.js +0 -1
  336. package/dist/client/assets/pie-RZYD4A2V-DgYg3tCt.js +0 -1
  337. package/dist/client/assets/preview-render-compiler-BSaQO_p3.js +0 -35
  338. package/dist/client/assets/preview-render-compiler-csGM5ZFz.js +0 -1
  339. package/dist/client/assets/preview-render-profile-BZzGSg6K.js +0 -22
  340. package/dist/client/assets/preview-render-worker-B42LWvrD.js +0 -60
  341. package/dist/client/assets/quick-switcher-controller-shW_6vPY.js +0 -12
  342. package/dist/client/assets/radar-I7S5WNFK-Ag-zp_Rq.js +0 -1
  343. package/dist/client/assets/railroad-3IZDKUUU-aibJDIDV.js +0 -1
  344. package/dist/client/assets/railroad-abnf-AHOZXSZD-BBMEuvIl.js +0 -1
  345. package/dist/client/assets/railroad-ebnf-EBAXGLYW-Be1nseej.js +0 -1
  346. package/dist/client/assets/railroad-peg-LSFZ7HO6-DIvD-Eyb.js +0 -1
  347. package/dist/client/assets/room-CQLoqtMo.js +0 -1
  348. package/dist/client/assets/runtime-config-DSGmGE9V.js +0 -1
  349. package/dist/client/assets/stateDiagram-v2-UEYNNEHI-B1-BufUk.js +0 -1
  350. package/dist/client/assets/swimlanes-SLNWSIFB-oVTWEJIj.js +0 -2
  351. package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-C5OTVwEu.js +0 -8
  352. package/dist/client/assets/treeView-QDETBFTQ-uHZ-3Fz8.js +0 -1
  353. package/dist/client/assets/treemap-6X3UGDF4-BnUKyy3l.js +0 -1
  354. package/dist/client/assets/vault-api-client-C6bcGwy-.js +0 -5
  355. package/dist/client/assets/wardley-OPB4EBWU-Da7TLC2F.js +0 -1
  356. package/src/server/domain/collaboration/room-persistence-controller.js +0 -80
@@ -0,0 +1,309 @@
1
+ /* ===== DIFF / SPECIAL FILES ===== */
2
+
3
+ .diff-special {
4
+ padding: var(--space-4);
5
+ border-top: 1px solid var(--color-divider);
6
+ background: var(--color-surface);
7
+ }
8
+
9
+ .diff-special-header {
10
+ display: flex;
11
+ align-items: flex-start;
12
+ justify-content: space-between;
13
+ gap: var(--space-3);
14
+ margin-bottom: var(--space-3);
15
+ }
16
+
17
+ .diff-special-eyebrow {
18
+ display: block;
19
+ margin-bottom: 3px;
20
+ color: var(--color-primary);
21
+ font-size: var(--text-meta);
22
+ font-weight: 700;
23
+ letter-spacing: 0.08em;
24
+ text-transform: uppercase;
25
+ }
26
+
27
+ .diff-special-title {
28
+ margin: 0;
29
+ color: var(--color-text);
30
+ font-size: var(--text-ui-sm);
31
+ font-weight: 700;
32
+ }
33
+
34
+ .diff-special-note,
35
+ .diff-special-footnote {
36
+ color: var(--color-text-faint);
37
+ font-size: var(--text-meta);
38
+ }
39
+
40
+ .diff-special-note {
41
+ flex-shrink: 0;
42
+ font-family: var(--font-mono);
43
+ }
44
+
45
+ .diff-special-footnote {
46
+ margin: var(--space-3) 0 0;
47
+ }
48
+
49
+ .diff-media-grid,
50
+ .diff-excalidraw-grid,
51
+ .diff-drawio-grid {
52
+ display: grid;
53
+ grid-template-columns: repeat(2, minmax(0, 1fr));
54
+ gap: var(--space-3);
55
+ }
56
+
57
+ .diff-media-pane,
58
+ .diff-excalidraw-pane,
59
+ .diff-drawio-pane {
60
+ min-width: 0;
61
+ overflow: hidden;
62
+ border: 1px solid var(--color-divider);
63
+ border-radius: var(--radius-md);
64
+ background: var(--color-surface-offset);
65
+ }
66
+
67
+ .diff-media-pane-header,
68
+ .diff-excalidraw-pane-header,
69
+ .diff-drawio-pane-header {
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: space-between;
73
+ gap: var(--space-2);
74
+ min-height: 34px;
75
+ padding: 0 var(--space-3);
76
+ border-bottom: 1px solid var(--color-divider);
77
+ }
78
+
79
+ .diff-media-pane-label {
80
+ color: var(--color-text);
81
+ font-size: var(--text-label);
82
+ font-weight: 700;
83
+ }
84
+
85
+ .diff-media-pane-meta {
86
+ overflow: hidden;
87
+ color: var(--color-text-faint);
88
+ font-family: var(--font-mono);
89
+ font-size: var(--text-meta);
90
+ text-overflow: ellipsis;
91
+ white-space: nowrap;
92
+ }
93
+
94
+ .diff-media-canvas {
95
+ display: flex;
96
+ align-items: center;
97
+ justify-content: center;
98
+ min-height: 280px;
99
+ padding: var(--space-4);
100
+ background-color: var(--color-surface);
101
+ background-image: linear-gradient(45deg, color-mix(in oklab, var(--color-text) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in oklab, var(--color-text) 5%, transparent) 75%), linear-gradient(45deg, color-mix(in oklab, var(--color-text) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in oklab, var(--color-text) 5%, transparent) 75%);
102
+ background-position: 0 0, 8px 8px;
103
+ background-size: 16px 16px;
104
+ }
105
+
106
+ .diff-media-image {
107
+ display: block;
108
+ width: auto;
109
+ max-width: 100%;
110
+ max-height: 380px;
111
+ object-fit: contain;
112
+ border-radius: var(--radius-sm);
113
+ box-shadow: var(--shadow-md);
114
+ }
115
+
116
+ .diff-media-empty {
117
+ display: flex;
118
+ flex-direction: column;
119
+ align-items: center;
120
+ gap: var(--space-2);
121
+ color: var(--color-text-faint);
122
+ font-size: var(--text-meta);
123
+ text-align: center;
124
+ }
125
+
126
+ .diff-media-empty-icon {
127
+ display: grid;
128
+ width: 30px;
129
+ height: 30px;
130
+ place-items: center;
131
+ border: 1px solid var(--color-divider);
132
+ border-radius: 50%;
133
+ color: var(--color-text-muted);
134
+ font-size: var(--text-title-md);
135
+ }
136
+
137
+ .diff-file-header-kind {
138
+ margin-left: auto;
139
+ color: var(--color-text-muted);
140
+ font-family: var(--font-mono);
141
+ font-size: var(--text-meta);
142
+ }
143
+
144
+ .diff-scene-summary {
145
+ display: flex;
146
+ flex-wrap: wrap;
147
+ gap: var(--space-2);
148
+ margin-bottom: var(--space-3);
149
+ }
150
+
151
+ .diff-scene-stat {
152
+ display: inline-flex;
153
+ align-items: baseline;
154
+ gap: 5px;
155
+ padding: 5px 8px;
156
+ border-radius: var(--radius-sm);
157
+ background: var(--color-surface-offset);
158
+ font-family: var(--font-mono);
159
+ font-size: var(--text-meta);
160
+ }
161
+
162
+ .diff-scene-stat strong {
163
+ font-size: var(--text-ui-sm);
164
+ }
165
+
166
+ .diff-scene-stat--add strong {
167
+ color: var(--diff-add-text);
168
+ }
169
+
170
+ .diff-scene-stat--update strong {
171
+ color: var(--color-primary);
172
+ }
173
+
174
+ .diff-scene-stat--remove strong {
175
+ color: var(--diff-del-text);
176
+ }
177
+
178
+ .diff-excalidraw-preview {
179
+ display: flex;
180
+ align-items: center;
181
+ justify-content: center;
182
+ min-height: 220px;
183
+ padding: var(--space-3);
184
+ background: var(--surface-embed-canvas);
185
+ }
186
+
187
+ .diff-excalidraw-preview svg {
188
+ display: block;
189
+ width: 100%;
190
+ height: 220px;
191
+ }
192
+
193
+ .diff-excalidraw-preview-loading,
194
+ .diff-excalidraw-preview--empty,
195
+ .diff-excalidraw-preview.is-error {
196
+ color: var(--color-text-faint);
197
+ font-size: var(--text-meta);
198
+ }
199
+
200
+ .diff-excalidraw-preview.is-error {
201
+ background: var(--color-surface-offset);
202
+ }
203
+
204
+ .diff-excalidraw-source {
205
+ border-top: 1px solid var(--color-divider);
206
+ }
207
+
208
+ .diff-excalidraw-source summary {
209
+ padding: 8px var(--space-3);
210
+ color: var(--color-text-muted);
211
+ cursor: pointer;
212
+ font-size: var(--text-meta);
213
+ font-weight: 600;
214
+ }
215
+
216
+ .diff-excalidraw-source summary:hover {
217
+ color: var(--color-text);
218
+ }
219
+
220
+ .diff-excalidraw-source pre {
221
+ max-height: 300px;
222
+ margin: 0;
223
+ padding: var(--space-3);
224
+ overflow: auto;
225
+ border-top: 1px solid var(--color-divider);
226
+ color: var(--color-text-muted);
227
+ font-family: var(--font-mono);
228
+ font-size: var(--text-meta);
229
+ line-height: 1.55;
230
+ white-space: pre;
231
+ }
232
+
233
+ .diff-excalidraw-diff .diff-load-full-btn {
234
+ margin-top: var(--space-3);
235
+ }
236
+
237
+ .diff-drawio-preview {
238
+ display: flex;
239
+ align-items: stretch;
240
+ justify-content: center;
241
+ min-height: 280px;
242
+ overflow: hidden;
243
+ background: var(--surface-embed-canvas);
244
+ }
245
+
246
+ .diff-drawio-preview .drawio-viewer-frame {
247
+ min-height: 280px;
248
+ cursor: default;
249
+ }
250
+
251
+ .diff-drawio-preview-loading,
252
+ .diff-drawio-preview--empty,
253
+ .diff-drawio-preview.is-error {
254
+ align-items: center;
255
+ justify-content: center;
256
+ width: 100%;
257
+ color: var(--color-text-faint);
258
+ font-size: var(--text-meta);
259
+ }
260
+
261
+ .diff-drawio-preview.is-error {
262
+ background: var(--color-surface-offset);
263
+ }
264
+
265
+ .diff-drawio-source {
266
+ border-top: 1px solid var(--color-divider);
267
+ }
268
+
269
+ .diff-drawio-source summary {
270
+ padding: 8px var(--space-3);
271
+ color: var(--color-text-muted);
272
+ cursor: pointer;
273
+ font-size: var(--text-meta);
274
+ font-weight: 600;
275
+ }
276
+
277
+ .diff-drawio-source summary:hover {
278
+ color: var(--color-text);
279
+ }
280
+
281
+ .diff-drawio-source pre {
282
+ max-height: 300px;
283
+ margin: 0;
284
+ padding: var(--space-3);
285
+ overflow: auto;
286
+ border-top: 1px solid var(--color-divider);
287
+ color: var(--color-text-muted);
288
+ font-family: var(--font-mono);
289
+ font-size: var(--text-meta);
290
+ line-height: 1.55;
291
+ white-space: pre;
292
+ }
293
+
294
+ @media (max-width: 768px) {
295
+ .diff-media-grid,
296
+ .diff-excalidraw-grid,
297
+ .diff-drawio-grid {
298
+ grid-template-columns: 1fr;
299
+ }
300
+
301
+ .diff-special-header {
302
+ flex-direction: column;
303
+ gap: var(--space-1);
304
+ }
305
+
306
+ .diff-media-canvas {
307
+ min-height: 220px;
308
+ }
309
+ }
@@ -1026,6 +1026,7 @@
1026
1026
  }
1027
1027
 
1028
1028
  .preview-content pre {
1029
+ position: relative;
1029
1030
  max-width: 100%;
1030
1031
  margin: var(--space-4) 0;
1031
1032
  overflow-x: auto;
@@ -1049,6 +1050,30 @@
1049
1050
  overflow-wrap: normal;
1050
1051
  }
1051
1052
 
1053
+ .preview-content .preview-code-block {
1054
+ position: relative;
1055
+ }
1056
+
1057
+ .preview-content .preview-code-block pre code {
1058
+ padding-right: 84px;
1059
+ }
1060
+
1061
+ .preview-content .preview-code-actions {
1062
+ position: sticky;
1063
+ top: 0;
1064
+ z-index: 2;
1065
+ height: 0;
1066
+ }
1067
+
1068
+ .preview-content .preview-code-copy-button {
1069
+ position: absolute;
1070
+ top: calc(var(--space-2) + 1px);
1071
+ right: var(--space-2);
1072
+ background: color-mix(in oklab, var(--color-surface) 90%, transparent);
1073
+ box-shadow: var(--shadow-sm);
1074
+ backdrop-filter: blur(8px);
1075
+ }
1076
+
1052
1077
  .preview-content .table-wrapper {
1053
1078
  margin: var(--space-4) 0;
1054
1079
  overflow-x: auto;
@@ -78,6 +78,12 @@
78
78
  color: var(--color-primary);
79
79
  }
80
80
 
81
+ .qs-mode-tab:disabled {
82
+ color: var(--color-text-faint);
83
+ cursor: not-allowed;
84
+ opacity: 0.6;
85
+ }
86
+
81
87
  .qs-overlay.visible .qs-modal {
82
88
  transform: translateY(0) scale(1);
83
89
  }
@@ -214,6 +220,8 @@
214
220
  max-width: 180px;
215
221
  overflow: hidden;
216
222
  color: var(--color-text-faint);
223
+ direction: rtl;
224
+ text-align: left;
217
225
  text-overflow: ellipsis;
218
226
  white-space: nowrap;
219
227
  font-size: var(--text-xs);
@@ -1,5 +1,11 @@
1
1
  /* ===== FOUNDATION / THEMES ===== */
2
2
 
3
+ :root {
4
+ --pdf-highlight-bg: rgb(180 0 170 / 25%);
5
+ --pdf-highlight-selected-bg: rgb(0 100 0 / 25%);
6
+ --pdf-selection-bg: rgb(0 90 255 / 25%);
7
+ }
8
+
3
9
  :root,
4
10
  [data-theme="light"] {
5
11
  --color-bg: #f6f8fa;
@@ -135,6 +141,7 @@
135
141
  --color-text-muted: #9aa7b4;
136
142
  --color-text-faint: #687584;
137
143
  --color-text-inverse: #0b0f14;
144
+ --color-code-text: #abb2bf;
138
145
 
139
146
  --color-primary: #60a5fa;
140
147
  --color-primary-hover: #3b82f6;
@@ -217,6 +217,18 @@
217
217
  padding: var(--space-4);
218
218
  }
219
219
 
220
+ .preview-content.is-pdf-file-preview {
221
+ position: relative;
222
+ display: flex;
223
+ box-sizing: border-box;
224
+ width: 100%;
225
+ min-height: 100%;
226
+ height: 100%;
227
+ max-width: none;
228
+ margin: 0;
229
+ padding: var(--space-3);
230
+ }
231
+
220
232
  .preview-content.is-base-file-preview {
221
233
  width: 100%;
222
234
  min-height: 100%;
@@ -236,7 +248,8 @@
236
248
  padding: var(--space-3);
237
249
  }
238
250
 
239
- .preview-content.is-drawio-file-preview {
251
+ .preview-content.is-drawio-file-preview,
252
+ .preview-content.is-structurizr-file-preview {
240
253
  position: relative;
241
254
  display: flex;
242
255
  box-sizing: border-box;
@@ -260,8 +273,10 @@
260
273
  }
261
274
 
262
275
  .preview-content.is-drawio-file-preview [data-preview-render-host='true'],
276
+ .preview-content.is-structurizr-file-preview [data-preview-render-host='true'],
263
277
  .preview-content.is-excalidraw-file-preview [data-preview-render-host='true'],
264
278
  .preview-content.is-image-file-preview [data-preview-render-host='true'],
279
+ .preview-content.is-pdf-file-preview [data-preview-render-host='true'],
265
280
  .preview-content.is-base-file-preview [data-preview-render-host='true'] {
266
281
  display: flex;
267
282
  flex: 1;
@@ -271,6 +286,10 @@
271
286
  min-height: 100%;
272
287
  }
273
288
 
289
+ .preview-content.is-pdf-file-preview [data-preview-render-host='true'] {
290
+ flex-direction: column;
291
+ }
292
+
274
293
  .image-file-preview-shell {
275
294
  display: flex;
276
295
  align-items: center;
@@ -289,6 +308,26 @@
289
308
  box-shadow: var(--shadow-lg);
290
309
  }
291
310
 
311
+ .pdf-file-preview-viewer {
312
+ width: 100%;
313
+ height: calc(var(--app-viewport-height, 100dvh) - var(--toolbar-h) - 43px);
314
+ min-height: 320px;
315
+ overflow: hidden;
316
+ border: 1px solid var(--color-divider);
317
+ border-radius: var(--radius-lg);
318
+ background: var(--color-surface);
319
+ }
320
+
321
+ .pdf-file-preview-error {
322
+ display: grid;
323
+ height: 100%;
324
+ min-height: 240px;
325
+ place-items: center;
326
+ padding: var(--space-6);
327
+ color: var(--color-text-muted);
328
+ text-align: center;
329
+ }
330
+
292
331
  .preview-content.is-mermaid-file-preview .mermaid-shell,
293
332
  .preview-content.is-plantuml-file-preview .plantuml-shell {
294
333
  flex: 1;
@@ -131,7 +131,7 @@
131
131
  }
132
132
 
133
133
  .sidebar-search-input::placeholder {
134
- color: var(--color-text-faint);
134
+ color: var(--color-text-muted);
135
135
  }
136
136
 
137
137
  .sidebar-search-input:hover:not(:focus) {
@@ -144,6 +144,12 @@
144
144
  box-shadow: var(--shadow-focus);
145
145
  }
146
146
 
147
+ .sidebar-search-status {
148
+ padding: 5px 2px 0;
149
+ color: var(--color-text-muted);
150
+ font-size: var(--text-caption);
151
+ }
152
+
147
153
  @keyframes pulse-dot {
148
154
  0%,
149
155
  100% {
@@ -237,7 +243,7 @@ body.is-file-tree-dragging .file-tree-root-drop-zone {
237
243
  padding-top: 4px;
238
244
  padding-right: 8px;
239
245
  padding-bottom: 4px;
240
- padding-left: calc(8px + var(--depth, 0) * 16px);
246
+ padding-left: calc(8px + var(--depth, 0) * 12px);
241
247
  border: none;
242
248
  border-radius: var(--radius-md);
243
249
  background: none;
@@ -266,14 +272,14 @@ body.is-file-tree-dragging * {
266
272
  position: absolute;
267
273
  top: 0;
268
274
  bottom: 0;
269
- left: calc(8px + (var(--depth, 1) - 1) * 16px + 6px);
275
+ left: calc(8px + (var(--depth, 1) - 1) * 12px + 6px);
270
276
  width: 1px;
271
277
  background-color: var(--color-border);
272
278
  opacity: 0.2;
273
279
  }
274
280
 
275
281
  .file-tree-file {
276
- padding-left: calc(8px + var(--depth, 0) * 16px + 18px);
282
+ padding-left: calc(8px + var(--depth, 0) * 12px + 18px);
277
283
  }
278
284
 
279
285
  .file-tree-item:hover {
@@ -316,8 +322,40 @@ body.is-file-tree-dragging * {
316
322
  }
317
323
 
318
324
  .file-tree-name {
325
+ flex: 1 1 auto;
326
+ min-width: 0;
327
+ overflow: hidden;
328
+ text-overflow: ellipsis;
329
+ white-space: nowrap;
330
+ }
331
+
332
+ .file-tree-search-result {
333
+ align-items: flex-start;
334
+ padding: 6px 8px;
335
+ }
336
+
337
+ .file-tree-search-result .file-tree-icon {
338
+ margin-top: 2px;
339
+ }
340
+
341
+ .file-tree-search-copy {
342
+ display: grid;
343
+ flex: 1 1 auto;
344
+ min-width: 0;
345
+ gap: 1px;
346
+ }
347
+
348
+ .file-tree-search-copy .file-tree-name,
349
+ .file-tree-search-path {
319
350
  overflow: hidden;
320
351
  text-overflow: ellipsis;
352
+ white-space: nowrap;
353
+ }
354
+
355
+ .file-tree-search-path {
356
+ color: var(--color-text-faint);
357
+ font-size: var(--text-caption);
358
+ font-weight: 400;
321
359
  }
322
360
 
323
361
  .file-tree-children {
@@ -29,6 +29,7 @@
29
29
  .editor-layout[data-view="preview"] .preview-content.is-drawio-file-preview,
30
30
  .editor-layout[data-view="preview"] .preview-content.is-base-file-preview,
31
31
  .editor-layout[data-view="preview"] .preview-content.is-image-file-preview,
32
+ .editor-layout[data-view="preview"] .preview-content.is-pdf-file-preview,
32
33
  .editor-layout[data-view="preview"] .preview-content.is-mermaid-file-preview,
33
34
  .editor-layout[data-view="preview"] .preview-content.is-plantuml-file-preview {
34
35
  max-width: none;
@@ -1,7 +1,23 @@
1
1
  /* ===== OVERRIDES / HIGHLIGHTJS ===== */
2
2
 
3
- [data-theme="light"] .preview-content pre,
4
- [data-theme="light"] .preview-content pre code,
5
- [data-theme="light"] .hljs {
6
- background: var(--color-surface) !important;
3
+ [data-theme="light"] .preview-content pre {
4
+ border-color: color-mix(in oklab, var(--color-border) 78%, var(--color-primary) 22%);
5
+ background: color-mix(in oklab, var(--color-bg) 94%, var(--color-primary) 6%) !important;
6
+ box-shadow: var(--shadow-sm);
7
+ }
8
+
9
+ [data-theme="light"] .preview-content pre code {
10
+ background: transparent !important;
11
+ color: var(--color-text) !important;
12
+ }
13
+
14
+ [data-theme="dark"] .preview-content pre {
15
+ border-color: color-mix(in oklab, var(--color-border) 74%, var(--color-primary) 26%);
16
+ background: color-mix(in oklab, var(--color-bg) 88%, var(--color-primary) 12%) !important;
17
+ box-shadow: var(--shadow-elevated-soft);
18
+ }
19
+
20
+ [data-theme="dark"] .preview-content pre code {
21
+ background: transparent !important;
22
+ color: var(--color-code-text) !important;
7
23
  }
@@ -17,6 +17,7 @@
17
17
  @import './features/diff-toolbar.css';
18
18
  @import './features/diff-commit.css';
19
19
  @import './features/diff-lines.css';
20
+ @import './features/diff-special.css';
20
21
  @import './features/collaboration-presence.css';
21
22
  @import './features/collaboration-chat.css';
22
23
  @import './features/collaboration-dialogs.css';