termdock 1.4.238 → 1.4.240

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 (319) hide show
  1. package/README.md +2 -0
  2. package/dist/client/assets/App-CmlGDKDj.js +155 -0
  3. package/dist/client/assets/App-CmlGDKDj.js.br +0 -0
  4. package/dist/client/assets/App-CmlGDKDj.js.gz +0 -0
  5. package/dist/client/assets/ChangeWalkthroughPanel-9whVVXTr.js +2 -0
  6. package/dist/client/assets/ChangeWalkthroughPanel-9whVVXTr.js.br +0 -0
  7. package/dist/client/assets/ChangeWalkthroughPanel-9whVVXTr.js.gz +0 -0
  8. package/dist/client/assets/{DagPlayground-BvnU5iIE.js → DagPlayground-y80OTTQj.js} +1 -1
  9. package/dist/client/assets/DagPlayground-y80OTTQj.js.br +0 -0
  10. package/dist/client/assets/DagPlayground-y80OTTQj.js.gz +0 -0
  11. package/dist/client/assets/{DiffLab-CSeMFrtl.js → DiffLab-BY2wbRtg.js} +1 -1
  12. package/dist/client/assets/DiffLab-BY2wbRtg.js.br +0 -0
  13. package/dist/client/assets/DiffLab-BY2wbRtg.js.gz +0 -0
  14. package/dist/client/assets/{DiffReview-D-5YkY_H.js → DiffReview-DLlDJbK1.js} +1 -1
  15. package/dist/client/assets/DiffReview-DLlDJbK1.js.br +0 -0
  16. package/dist/client/assets/DiffReview-DLlDJbK1.js.gz +0 -0
  17. package/dist/client/assets/{DiffReviewLab-CWjl-8Pe.js → DiffReviewLab-CEpa_B8I.js} +1 -1
  18. package/dist/client/assets/DiffReviewLab-CEpa_B8I.js.br +0 -0
  19. package/dist/client/assets/DiffReviewLab-CEpa_B8I.js.gz +0 -0
  20. package/dist/client/assets/{DiffViewer-BPsVQrjM.js → DiffViewer-GLkd1zMQ.js} +1 -1
  21. package/dist/client/assets/DiffViewer-GLkd1zMQ.js.br +0 -0
  22. package/dist/client/assets/DiffViewer-GLkd1zMQ.js.gz +0 -0
  23. package/dist/client/assets/{ModelPreview-BFycVhUy.js → ModelPreview-DB8tw45f.js} +1 -1
  24. package/dist/client/assets/ModelPreview-DB8tw45f.js.br +0 -0
  25. package/dist/client/assets/ModelPreview-DB8tw45f.js.gz +0 -0
  26. package/dist/client/assets/{RightSidebar-BX6rhGB4.js → RightSidebar-aoJjOQGX.js} +9 -9
  27. package/dist/client/assets/RightSidebar-aoJjOQGX.js.br +0 -0
  28. package/dist/client/assets/RightSidebar-aoJjOQGX.js.gz +0 -0
  29. package/dist/client/assets/{abnfDiagram-VCTEODGH-BTzZAuBK.js → abnfDiagram-VCTEODGH-RBGYciHa.js} +1 -1
  30. package/dist/client/assets/abnfDiagram-VCTEODGH-RBGYciHa.js.br +0 -0
  31. package/dist/client/assets/abnfDiagram-VCTEODGH-RBGYciHa.js.gz +0 -0
  32. package/dist/client/assets/{app-B6ME9Eob.js → app-Ctrh4Bku.js} +3 -3
  33. package/dist/client/assets/app-Ctrh4Bku.js.br +0 -0
  34. package/dist/client/assets/app-Ctrh4Bku.js.gz +0 -0
  35. package/dist/client/assets/{arc-DIV29t9b.js → arc-CzQsNCup.js} +1 -1
  36. package/dist/client/assets/arc-CzQsNCup.js.br +0 -0
  37. package/dist/client/assets/arc-CzQsNCup.js.gz +0 -0
  38. package/dist/client/assets/{architectureDiagram-5GKGNRK7-DgHv-608.js → architectureDiagram-5GKGNRK7-sDp6hSiy.js} +1 -1
  39. package/dist/client/assets/architectureDiagram-5GKGNRK7-sDp6hSiy.js.br +0 -0
  40. package/dist/client/assets/architectureDiagram-5GKGNRK7-sDp6hSiy.js.gz +0 -0
  41. package/dist/client/assets/{blockDiagram-I7D4REHJ-DwJbcw0g.js → blockDiagram-I7D4REHJ-C-AHqZPo.js} +1 -1
  42. package/dist/client/assets/blockDiagram-I7D4REHJ-C-AHqZPo.js.br +0 -0
  43. package/dist/client/assets/blockDiagram-I7D4REHJ-C-AHqZPo.js.gz +0 -0
  44. package/dist/client/assets/{c4Diagram-7LVT6UL2-I_d1HrDr.js → c4Diagram-7LVT6UL2-B8VGhLwN.js} +1 -1
  45. package/dist/client/assets/c4Diagram-7LVT6UL2-B8VGhLwN.js.br +0 -0
  46. package/dist/client/assets/c4Diagram-7LVT6UL2-B8VGhLwN.js.gz +0 -0
  47. package/dist/client/assets/channel-zK78er-R.js +1 -0
  48. package/dist/client/assets/{chunk-2Q5K7J3B-D8Up9_Qq.js → chunk-2Q5K7J3B-D56jCJTr.js} +1 -1
  49. package/dist/client/assets/{chunk-5VM5RSS4-Bqu4flXy.js → chunk-5VM5RSS4-cga3WKIM.js} +1 -1
  50. package/dist/client/assets/{chunk-F27PBJKO-BEx-OJOh.js → chunk-F27PBJKO-BNOR_7WA.js} +1 -1
  51. package/dist/client/assets/chunk-F27PBJKO-BNOR_7WA.js.br +0 -0
  52. package/dist/client/assets/chunk-F27PBJKO-BNOR_7WA.js.gz +0 -0
  53. package/dist/client/assets/{chunk-IMKFNOWR-DXRKd1hc.js → chunk-IMKFNOWR-Dk12DKtC.js} +1 -1
  54. package/dist/client/assets/chunk-IMKFNOWR-Dk12DKtC.js.br +0 -0
  55. package/dist/client/assets/chunk-IMKFNOWR-Dk12DKtC.js.gz +0 -0
  56. package/dist/client/assets/{chunk-JWPE2WC7-SPMqs5Ed.js → chunk-JWPE2WC7-CVqdLg0d.js} +1 -1
  57. package/dist/client/assets/{chunk-POPQ4Y6H-BP5FdWvP.js → chunk-POPQ4Y6H-Y6gEzK15.js} +1 -1
  58. package/dist/client/assets/{chunk-SVP7TREG-Cd1MiWuY.js → chunk-SVP7TREG-BIJtdFBL.js} +1 -1
  59. package/dist/client/assets/chunk-SVP7TREG-BIJtdFBL.js.br +0 -0
  60. package/dist/client/assets/chunk-SVP7TREG-BIJtdFBL.js.gz +0 -0
  61. package/dist/client/assets/{chunk-TICWLB2K-Bp824MdF.js → chunk-TICWLB2K-CS3jsxv7.js} +1 -1
  62. package/dist/client/assets/chunk-TICWLB2K-CS3jsxv7.js.br +0 -0
  63. package/dist/client/assets/chunk-TICWLB2K-CS3jsxv7.js.gz +0 -0
  64. package/dist/client/assets/{chunk-XXDRQBXY-BgSF02Yo.js → chunk-XXDRQBXY-BYgvxPrj.js} +1 -1
  65. package/dist/client/assets/classDiagram-ZZMXUADV-BMh5Sak3.js +1 -0
  66. package/dist/client/assets/classDiagram-v2-VYDZK3BY-BMh5Sak3.js +1 -0
  67. package/dist/client/assets/{cose-bilkent-JH36ORCC-MIotlu8S.js → cose-bilkent-JH36ORCC-9udJiW7h.js} +1 -1
  68. package/dist/client/assets/cose-bilkent-JH36ORCC-9udJiW7h.js.br +0 -0
  69. package/dist/client/assets/cose-bilkent-JH36ORCC-9udJiW7h.js.gz +0 -0
  70. package/dist/client/assets/{cynefin-OW5HDTMX-Bx5fAwL9.js → cynefin-OW5HDTMX-D-6q-6N2.js} +1 -1
  71. package/dist/client/assets/cynefin-OW5HDTMX-D-6q-6N2.js.br +0 -0
  72. package/dist/client/assets/cynefin-OW5HDTMX-D-6q-6N2.js.gz +0 -0
  73. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-Dq1IWXBH.js → cynefinDiagram-5FMLGOSQ-B5c37uFA.js} +1 -1
  74. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-B5c37uFA.js.br +0 -0
  75. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-B5c37uFA.js.gz +0 -0
  76. package/dist/client/assets/{dagre-GXQ25YYZ-1uJhB1J8.js → dagre-GXQ25YYZ-DoFMIka4.js} +1 -1
  77. package/dist/client/assets/dagre-GXQ25YYZ-DoFMIka4.js.br +0 -0
  78. package/dist/client/assets/dagre-GXQ25YYZ-DoFMIka4.js.gz +0 -0
  79. package/dist/client/assets/{diagram-S7CK7UJ4-immgVZRx.js → diagram-S7CK7UJ4-DrAwxGx7.js} +1 -1
  80. package/dist/client/assets/diagram-S7CK7UJ4-DrAwxGx7.js.br +0 -0
  81. package/dist/client/assets/diagram-S7CK7UJ4-DrAwxGx7.js.gz +0 -0
  82. package/dist/client/assets/{diagram-UQ7AKVKN-DY0SJCkK.js → diagram-UQ7AKVKN-DbWfEzKd.js} +1 -1
  83. package/dist/client/assets/diagram-UQ7AKVKN-DbWfEzKd.js.br +0 -0
  84. package/dist/client/assets/diagram-UQ7AKVKN-DbWfEzKd.js.gz +0 -0
  85. package/dist/client/assets/{diagram-VSXAHHWV-M6gBY9G0.js → diagram-VSXAHHWV-zKcVacRq.js} +1 -1
  86. package/dist/client/assets/diagram-VSXAHHWV-zKcVacRq.js.br +0 -0
  87. package/dist/client/assets/diagram-VSXAHHWV-zKcVacRq.js.gz +0 -0
  88. package/dist/client/assets/{diagram-VX7I27RA--S_w2OZo.js → diagram-VX7I27RA-BNAI-5sG.js} +1 -1
  89. package/dist/client/assets/diagram-VX7I27RA-BNAI-5sG.js.br +0 -0
  90. package/dist/client/assets/diagram-VX7I27RA-BNAI-5sG.js.gz +0 -0
  91. package/dist/client/assets/{diagram-Z3DM3KII-HEropZ-M.js → diagram-Z3DM3KII-ChB9ZeuK.js} +1 -1
  92. package/dist/client/assets/diagram-Z3DM3KII-ChB9ZeuK.js.br +0 -0
  93. package/dist/client/assets/diagram-Z3DM3KII-ChB9ZeuK.js.gz +0 -0
  94. package/dist/client/assets/{ebnfDiagram-PWID7BFC-DkeQP1kU.js → ebnfDiagram-PWID7BFC-Fe8VFmWJ.js} +1 -1
  95. package/dist/client/assets/ebnfDiagram-PWID7BFC-Fe8VFmWJ.js.br +0 -0
  96. package/dist/client/assets/ebnfDiagram-PWID7BFC-Fe8VFmWJ.js.gz +0 -0
  97. package/dist/client/assets/{erDiagram-RLTQ6QDP-1dq1ilk2.js → erDiagram-RLTQ6QDP-CC7DagoX.js} +1 -1
  98. package/dist/client/assets/erDiagram-RLTQ6QDP-CC7DagoX.js.br +0 -0
  99. package/dist/client/assets/erDiagram-RLTQ6QDP-CC7DagoX.js.gz +0 -0
  100. package/dist/client/assets/{flowDiagram-HODETNUW-CDX2AeEa.js → flowDiagram-HODETNUW-BBIgixMV.js} +1 -1
  101. package/dist/client/assets/flowDiagram-HODETNUW-BBIgixMV.js.br +0 -0
  102. package/dist/client/assets/flowDiagram-HODETNUW-BBIgixMV.js.gz +0 -0
  103. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-BF9-qd5G.js → ganttDiagram-EL5Y4UJY-CHRaIQ9P.js} +1 -1
  104. package/dist/client/assets/ganttDiagram-EL5Y4UJY-CHRaIQ9P.js.br +0 -0
  105. package/dist/client/assets/ganttDiagram-EL5Y4UJY-CHRaIQ9P.js.gz +0 -0
  106. package/dist/client/assets/{gestureArbiter-CahhrDMO.js → gestureArbiter-5c1oGojb.js} +1 -1
  107. package/dist/client/assets/gestureArbiter-5c1oGojb.js.br +0 -0
  108. package/dist/client/assets/gestureArbiter-5c1oGojb.js.gz +0 -0
  109. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-Dr4H-ZZx.js → gitGraphDiagram-WWUBYQGX-iJPivC9C.js} +1 -1
  110. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-iJPivC9C.js.br +0 -0
  111. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-iJPivC9C.js.gz +0 -0
  112. package/dist/client/assets/{infoDiagram-27XIBGKW-Bhu1F8ZQ.js → infoDiagram-27XIBGKW-CWjxPUb1.js} +1 -1
  113. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-D5U3zNlZ.js → ishikawaDiagram-5VMMS53U-2dN_H6WK.js} +1 -1
  114. package/dist/client/assets/ishikawaDiagram-5VMMS53U-2dN_H6WK.js.br +0 -0
  115. package/dist/client/assets/ishikawaDiagram-5VMMS53U-2dN_H6WK.js.gz +0 -0
  116. package/dist/client/assets/{journeyDiagram-3NMN7TZE-Cf3flu2q.js → journeyDiagram-3NMN7TZE-BqY-OLE2.js} +1 -1
  117. package/dist/client/assets/journeyDiagram-3NMN7TZE-BqY-OLE2.js.br +0 -0
  118. package/dist/client/assets/journeyDiagram-3NMN7TZE-BqY-OLE2.js.gz +0 -0
  119. package/dist/client/assets/{kanban-definition-UXKFOSKX-UtUZxvq0.js → kanban-definition-UXKFOSKX-CSOXhjNh.js} +1 -1
  120. package/dist/client/assets/kanban-definition-UXKFOSKX-CSOXhjNh.js.br +0 -0
  121. package/dist/client/assets/kanban-definition-UXKFOSKX-CSOXhjNh.js.gz +0 -0
  122. package/dist/client/assets/{layout-BtJol8tT.js → layout-BxIcRRf7.js} +1 -1
  123. package/dist/client/assets/layout-BxIcRRf7.js.br +0 -0
  124. package/dist/client/assets/{layout-BtJol8tT.js.gz → layout-BxIcRRf7.js.gz} +0 -0
  125. package/dist/client/assets/{linear-NTUDg_k8.js → linear-BYWiw-Yd.js} +1 -1
  126. package/dist/client/assets/linear-BYWiw-Yd.js.br +0 -0
  127. package/dist/client/assets/linear-BYWiw-Yd.js.gz +0 -0
  128. package/dist/client/assets/{mermaid.core-B2sd_0VA.js → mermaid.core-DhRpdkKn.js} +5 -5
  129. package/dist/client/assets/mermaid.core-DhRpdkKn.js.br +0 -0
  130. package/dist/client/assets/mermaid.core-DhRpdkKn.js.gz +0 -0
  131. package/dist/client/assets/{mindmap-definition-YA3MSWOX-BvnyWmZW.js → mindmap-definition-YA3MSWOX-DwBcGwTF.js} +1 -1
  132. package/dist/client/assets/mindmap-definition-YA3MSWOX-DwBcGwTF.js.br +0 -0
  133. package/dist/client/assets/mindmap-definition-YA3MSWOX-DwBcGwTF.js.gz +0 -0
  134. package/dist/client/assets/{passwordBootstrap-B-JP42Ue.js → passwordBootstrap-BkAa-DO2.js} +1 -1
  135. package/dist/client/assets/{passwordBootstrap-B-JP42Ue.js.br → passwordBootstrap-BkAa-DO2.js.br} +0 -0
  136. package/dist/client/assets/passwordBootstrap-BkAa-DO2.js.gz +0 -0
  137. package/dist/client/assets/{pegDiagram-XKGWAZYB-BEfaiRkj.js → pegDiagram-XKGWAZYB-D_04AQMs.js} +1 -1
  138. package/dist/client/assets/pegDiagram-XKGWAZYB-D_04AQMs.js.br +0 -0
  139. package/dist/client/assets/pegDiagram-XKGWAZYB-D_04AQMs.js.gz +0 -0
  140. package/dist/client/assets/{pieDiagram-E7YTZNPT-BJfWnKSk.js → pieDiagram-E7YTZNPT-DgHIGdDc.js} +1 -1
  141. package/dist/client/assets/pieDiagram-E7YTZNPT-DgHIGdDc.js.br +0 -0
  142. package/dist/client/assets/pieDiagram-E7YTZNPT-DgHIGdDc.js.gz +0 -0
  143. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-BTvO0D46.js → quadrantDiagram-AXDQQJYC-BrxP_uCp.js} +1 -1
  144. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BrxP_uCp.js.br +0 -0
  145. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BrxP_uCp.js.gz +0 -0
  146. package/dist/client/assets/{railroadDiagram-O6MQD6OU-DBt4EfEX.js → railroadDiagram-O6MQD6OU-Bj8aV8et.js} +1 -1
  147. package/dist/client/assets/railroadDiagram-O6MQD6OU-Bj8aV8et.js.br +0 -0
  148. package/dist/client/assets/railroadDiagram-O6MQD6OU-Bj8aV8et.js.gz +0 -0
  149. package/dist/client/assets/{referenceLongPress-CJDSbgHQ.js → referenceLongPress-CG4k8F2W.js} +1 -1
  150. package/dist/client/assets/referenceLongPress-CG4k8F2W.js.br +0 -0
  151. package/dist/client/assets/referenceLongPress-CG4k8F2W.js.gz +0 -0
  152. package/dist/client/assets/{requirementDiagram-BXWQKSXE-lxRII39y.js → requirementDiagram-BXWQKSXE-DHOBnmaH.js} +1 -1
  153. package/dist/client/assets/requirementDiagram-BXWQKSXE-DHOBnmaH.js.br +0 -0
  154. package/dist/client/assets/requirementDiagram-BXWQKSXE-DHOBnmaH.js.gz +0 -0
  155. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-Dzx7pHhn.js → sankeyDiagram-P5KCCOFB-B46rNwzQ.js} +1 -1
  156. package/dist/client/assets/sankeyDiagram-P5KCCOFB-B46rNwzQ.js.br +0 -0
  157. package/dist/client/assets/sankeyDiagram-P5KCCOFB-B46rNwzQ.js.gz +0 -0
  158. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-A72IGdL2.js → sequenceDiagram-WJ2MYXX4-D8PnDgC6.js} +1 -1
  159. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-D8PnDgC6.js.br +0 -0
  160. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-D8PnDgC6.js.gz +0 -0
  161. package/dist/client/assets/{sizeCapture-INFHLROL-DBDKkK1y.js → sizeCapture-INFHLROL-CjofpSnZ.js} +1 -1
  162. package/dist/client/assets/sizeCapture-INFHLROL-CjofpSnZ.js.br +0 -0
  163. package/dist/client/assets/sizeCapture-INFHLROL-CjofpSnZ.js.gz +0 -0
  164. package/dist/client/assets/{sparkles-CWd8p2g-.js → sparkles-Zi8g0TMb.js} +1 -1
  165. package/dist/client/assets/{stateDiagram-D77RDMKH-CYH1Rw0N.js → stateDiagram-D77RDMKH-BX_StFJV.js} +1 -1
  166. package/dist/client/assets/stateDiagram-D77RDMKH-BX_StFJV.js.br +0 -0
  167. package/dist/client/assets/stateDiagram-D77RDMKH-BX_StFJV.js.gz +0 -0
  168. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CMG96YGj.js +1 -0
  169. package/dist/client/assets/{swimlanes-42K2YHIH-GvNJG8iK.js → swimlanes-42K2YHIH-bxGulCYh.js} +1 -1
  170. package/dist/client/assets/swimlanes-42K2YHIH-bxGulCYh.js.br +0 -0
  171. package/dist/client/assets/swimlanes-42K2YHIH-bxGulCYh.js.gz +0 -0
  172. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-sPKOywKp.js +8 -0
  173. package/dist/client/assets/{timeline-definition-24CTP7MA-CXGKAjVh.js → timeline-definition-24CTP7MA-DcHYPI0d.js} +1 -1
  174. package/dist/client/assets/timeline-definition-24CTP7MA-DcHYPI0d.js.br +0 -0
  175. package/dist/client/assets/timeline-definition-24CTP7MA-DcHYPI0d.js.gz +0 -0
  176. package/dist/client/assets/triangle-alert-BXXcxTk8.js +1 -0
  177. package/dist/client/assets/{vennDiagram-4TSXK5OY-DcjHEFq_.js → vennDiagram-4TSXK5OY-CjIGwkZf.js} +1 -1
  178. package/dist/client/assets/vennDiagram-4TSXK5OY-CjIGwkZf.js.br +0 -0
  179. package/dist/client/assets/vennDiagram-4TSXK5OY-CjIGwkZf.js.gz +0 -0
  180. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-DYHafp-J.js → wardleyDiagram-VM6X3IG4-B-WK3Fil.js} +1 -1
  181. package/dist/client/assets/wardleyDiagram-VM6X3IG4-B-WK3Fil.js.br +0 -0
  182. package/dist/client/assets/wardleyDiagram-VM6X3IG4-B-WK3Fil.js.gz +0 -0
  183. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-B6LMaSHZ.js → xychartDiagram-S5SC5T6Z-4RzKQfNK.js} +1 -1
  184. package/dist/client/assets/xychartDiagram-S5SC5T6Z-4RzKQfNK.js.br +0 -0
  185. package/dist/client/assets/xychartDiagram-S5SC5T6Z-4RzKQfNK.js.gz +0 -0
  186. package/dist/client/index.html +1 -1
  187. package/dist/client/index.html.br +0 -0
  188. package/dist/client/index.html.gz +0 -0
  189. package/dist/client/sw.js +1 -1
  190. package/dist/client/sw.js.br +0 -0
  191. package/dist/client/sw.js.gz +0 -0
  192. package/dist/server/agent/collaborationPrompt.js +31 -16
  193. package/dist/server/agent/collaborationStore.js +17 -3
  194. package/dist/server/certificateWatcher.js +7 -29
  195. package/dist/server/cli.js +2 -41
  196. package/dist/server/routes/filesystem.js +15 -11
  197. package/dist/server/utils/certificateNames.js +12 -0
  198. package/package.json +1 -1
  199. package/runtime-manifest.json +3 -3
  200. package/dist/client/assets/App-DIvCDJHZ.js +0 -155
  201. package/dist/client/assets/App-DIvCDJHZ.js.br +0 -0
  202. package/dist/client/assets/App-DIvCDJHZ.js.gz +0 -0
  203. package/dist/client/assets/ChangeWalkthroughPanel-BlM9ZAiG.js +0 -2
  204. package/dist/client/assets/ChangeWalkthroughPanel-BlM9ZAiG.js.br +0 -0
  205. package/dist/client/assets/ChangeWalkthroughPanel-BlM9ZAiG.js.gz +0 -0
  206. package/dist/client/assets/DagPlayground-BvnU5iIE.js.br +0 -0
  207. package/dist/client/assets/DagPlayground-BvnU5iIE.js.gz +0 -0
  208. package/dist/client/assets/DiffLab-CSeMFrtl.js.br +0 -0
  209. package/dist/client/assets/DiffLab-CSeMFrtl.js.gz +0 -0
  210. package/dist/client/assets/DiffReview-D-5YkY_H.js.br +0 -0
  211. package/dist/client/assets/DiffReview-D-5YkY_H.js.gz +0 -0
  212. package/dist/client/assets/DiffReviewLab-CWjl-8Pe.js.br +0 -0
  213. package/dist/client/assets/DiffReviewLab-CWjl-8Pe.js.gz +0 -0
  214. package/dist/client/assets/DiffViewer-BPsVQrjM.js.br +0 -0
  215. package/dist/client/assets/DiffViewer-BPsVQrjM.js.gz +0 -0
  216. package/dist/client/assets/ModelPreview-BFycVhUy.js.br +0 -0
  217. package/dist/client/assets/ModelPreview-BFycVhUy.js.gz +0 -0
  218. package/dist/client/assets/RightSidebar-BX6rhGB4.js.br +0 -0
  219. package/dist/client/assets/RightSidebar-BX6rhGB4.js.gz +0 -0
  220. package/dist/client/assets/abnfDiagram-VCTEODGH-BTzZAuBK.js.br +0 -0
  221. package/dist/client/assets/abnfDiagram-VCTEODGH-BTzZAuBK.js.gz +0 -0
  222. package/dist/client/assets/app-B6ME9Eob.js.br +0 -0
  223. package/dist/client/assets/app-B6ME9Eob.js.gz +0 -0
  224. package/dist/client/assets/arc-DIV29t9b.js.br +0 -0
  225. package/dist/client/assets/arc-DIV29t9b.js.gz +0 -0
  226. package/dist/client/assets/architectureDiagram-5GKGNRK7-DgHv-608.js.br +0 -0
  227. package/dist/client/assets/architectureDiagram-5GKGNRK7-DgHv-608.js.gz +0 -0
  228. package/dist/client/assets/blockDiagram-I7D4REHJ-DwJbcw0g.js.br +0 -0
  229. package/dist/client/assets/blockDiagram-I7D4REHJ-DwJbcw0g.js.gz +0 -0
  230. package/dist/client/assets/c4Diagram-7LVT6UL2-I_d1HrDr.js.br +0 -0
  231. package/dist/client/assets/c4Diagram-7LVT6UL2-I_d1HrDr.js.gz +0 -0
  232. package/dist/client/assets/channel-BOGwCQT3.js +0 -1
  233. package/dist/client/assets/chunk-F27PBJKO-BEx-OJOh.js.br +0 -0
  234. package/dist/client/assets/chunk-F27PBJKO-BEx-OJOh.js.gz +0 -0
  235. package/dist/client/assets/chunk-IMKFNOWR-DXRKd1hc.js.br +0 -0
  236. package/dist/client/assets/chunk-IMKFNOWR-DXRKd1hc.js.gz +0 -0
  237. package/dist/client/assets/chunk-SVP7TREG-Cd1MiWuY.js.br +0 -0
  238. package/dist/client/assets/chunk-SVP7TREG-Cd1MiWuY.js.gz +0 -0
  239. package/dist/client/assets/chunk-TICWLB2K-Bp824MdF.js.br +0 -0
  240. package/dist/client/assets/chunk-TICWLB2K-Bp824MdF.js.gz +0 -0
  241. package/dist/client/assets/classDiagram-ZZMXUADV--MBMAd-k.js +0 -1
  242. package/dist/client/assets/classDiagram-v2-VYDZK3BY--MBMAd-k.js +0 -1
  243. package/dist/client/assets/cose-bilkent-JH36ORCC-MIotlu8S.js.br +0 -0
  244. package/dist/client/assets/cose-bilkent-JH36ORCC-MIotlu8S.js.gz +0 -0
  245. package/dist/client/assets/cynefin-OW5HDTMX-Bx5fAwL9.js.br +0 -0
  246. package/dist/client/assets/cynefin-OW5HDTMX-Bx5fAwL9.js.gz +0 -0
  247. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-Dq1IWXBH.js.br +0 -0
  248. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-Dq1IWXBH.js.gz +0 -0
  249. package/dist/client/assets/dagre-GXQ25YYZ-1uJhB1J8.js.br +0 -0
  250. package/dist/client/assets/dagre-GXQ25YYZ-1uJhB1J8.js.gz +0 -0
  251. package/dist/client/assets/diagram-S7CK7UJ4-immgVZRx.js.br +0 -0
  252. package/dist/client/assets/diagram-S7CK7UJ4-immgVZRx.js.gz +0 -0
  253. package/dist/client/assets/diagram-UQ7AKVKN-DY0SJCkK.js.br +0 -0
  254. package/dist/client/assets/diagram-UQ7AKVKN-DY0SJCkK.js.gz +0 -0
  255. package/dist/client/assets/diagram-VSXAHHWV-M6gBY9G0.js.br +0 -0
  256. package/dist/client/assets/diagram-VSXAHHWV-M6gBY9G0.js.gz +0 -0
  257. package/dist/client/assets/diagram-VX7I27RA--S_w2OZo.js.br +0 -0
  258. package/dist/client/assets/diagram-VX7I27RA--S_w2OZo.js.gz +0 -0
  259. package/dist/client/assets/diagram-Z3DM3KII-HEropZ-M.js.br +0 -0
  260. package/dist/client/assets/diagram-Z3DM3KII-HEropZ-M.js.gz +0 -0
  261. package/dist/client/assets/ebnfDiagram-PWID7BFC-DkeQP1kU.js.br +0 -0
  262. package/dist/client/assets/ebnfDiagram-PWID7BFC-DkeQP1kU.js.gz +0 -0
  263. package/dist/client/assets/erDiagram-RLTQ6QDP-1dq1ilk2.js.br +0 -0
  264. package/dist/client/assets/erDiagram-RLTQ6QDP-1dq1ilk2.js.gz +0 -0
  265. package/dist/client/assets/flowDiagram-HODETNUW-CDX2AeEa.js.br +0 -0
  266. package/dist/client/assets/flowDiagram-HODETNUW-CDX2AeEa.js.gz +0 -0
  267. package/dist/client/assets/ganttDiagram-EL5Y4UJY-BF9-qd5G.js.br +0 -0
  268. package/dist/client/assets/ganttDiagram-EL5Y4UJY-BF9-qd5G.js.gz +0 -0
  269. package/dist/client/assets/gestureArbiter-CahhrDMO.js.br +0 -0
  270. package/dist/client/assets/gestureArbiter-CahhrDMO.js.gz +0 -0
  271. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Dr4H-ZZx.js.br +0 -0
  272. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Dr4H-ZZx.js.gz +0 -0
  273. package/dist/client/assets/ishikawaDiagram-5VMMS53U-D5U3zNlZ.js.br +0 -0
  274. package/dist/client/assets/ishikawaDiagram-5VMMS53U-D5U3zNlZ.js.gz +0 -0
  275. package/dist/client/assets/journeyDiagram-3NMN7TZE-Cf3flu2q.js.br +0 -0
  276. package/dist/client/assets/journeyDiagram-3NMN7TZE-Cf3flu2q.js.gz +0 -0
  277. package/dist/client/assets/kanban-definition-UXKFOSKX-UtUZxvq0.js.br +0 -0
  278. package/dist/client/assets/kanban-definition-UXKFOSKX-UtUZxvq0.js.gz +0 -0
  279. package/dist/client/assets/layout-BtJol8tT.js.br +0 -0
  280. package/dist/client/assets/linear-NTUDg_k8.js.br +0 -0
  281. package/dist/client/assets/linear-NTUDg_k8.js.gz +0 -0
  282. package/dist/client/assets/mermaid.core-B2sd_0VA.js.br +0 -0
  283. package/dist/client/assets/mermaid.core-B2sd_0VA.js.gz +0 -0
  284. package/dist/client/assets/mindmap-definition-YA3MSWOX-BvnyWmZW.js.br +0 -0
  285. package/dist/client/assets/mindmap-definition-YA3MSWOX-BvnyWmZW.js.gz +0 -0
  286. package/dist/client/assets/passwordBootstrap-B-JP42Ue.js.gz +0 -0
  287. package/dist/client/assets/pegDiagram-XKGWAZYB-BEfaiRkj.js.br +0 -0
  288. package/dist/client/assets/pegDiagram-XKGWAZYB-BEfaiRkj.js.gz +0 -0
  289. package/dist/client/assets/pieDiagram-E7YTZNPT-BJfWnKSk.js.br +0 -0
  290. package/dist/client/assets/pieDiagram-E7YTZNPT-BJfWnKSk.js.gz +0 -0
  291. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BTvO0D46.js.br +0 -0
  292. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BTvO0D46.js.gz +0 -0
  293. package/dist/client/assets/railroadDiagram-O6MQD6OU-DBt4EfEX.js.br +0 -0
  294. package/dist/client/assets/railroadDiagram-O6MQD6OU-DBt4EfEX.js.gz +0 -0
  295. package/dist/client/assets/referenceLongPress-CJDSbgHQ.js.br +0 -0
  296. package/dist/client/assets/referenceLongPress-CJDSbgHQ.js.gz +0 -0
  297. package/dist/client/assets/requirementDiagram-BXWQKSXE-lxRII39y.js.br +0 -0
  298. package/dist/client/assets/requirementDiagram-BXWQKSXE-lxRII39y.js.gz +0 -0
  299. package/dist/client/assets/sankeyDiagram-P5KCCOFB-Dzx7pHhn.js.br +0 -0
  300. package/dist/client/assets/sankeyDiagram-P5KCCOFB-Dzx7pHhn.js.gz +0 -0
  301. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-A72IGdL2.js.br +0 -0
  302. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-A72IGdL2.js.gz +0 -0
  303. package/dist/client/assets/sizeCapture-INFHLROL-DBDKkK1y.js.br +0 -0
  304. package/dist/client/assets/sizeCapture-INFHLROL-DBDKkK1y.js.gz +0 -0
  305. package/dist/client/assets/stateDiagram-D77RDMKH-CYH1Rw0N.js.br +0 -0
  306. package/dist/client/assets/stateDiagram-D77RDMKH-CYH1Rw0N.js.gz +0 -0
  307. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-ClPva5pp.js +0 -1
  308. package/dist/client/assets/swimlanes-42K2YHIH-GvNJG8iK.js.br +0 -0
  309. package/dist/client/assets/swimlanes-42K2YHIH-GvNJG8iK.js.gz +0 -0
  310. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-D0YOfmzt.js +0 -8
  311. package/dist/client/assets/timeline-definition-24CTP7MA-CXGKAjVh.js.br +0 -0
  312. package/dist/client/assets/timeline-definition-24CTP7MA-CXGKAjVh.js.gz +0 -0
  313. package/dist/client/assets/triangle-alert--V4KOVlD.js +0 -1
  314. package/dist/client/assets/vennDiagram-4TSXK5OY-DcjHEFq_.js.br +0 -0
  315. package/dist/client/assets/vennDiagram-4TSXK5OY-DcjHEFq_.js.gz +0 -0
  316. package/dist/client/assets/wardleyDiagram-VM6X3IG4-DYHafp-J.js.br +0 -0
  317. package/dist/client/assets/wardleyDiagram-VM6X3IG4-DYHafp-J.js.gz +0 -0
  318. package/dist/client/assets/xychartDiagram-S5SC5T6Z-B6LMaSHZ.js.br +0 -0
  319. package/dist/client/assets/xychartDiagram-S5SC5T6Z-B6LMaSHZ.js.gz +0 -0
@@ -20,6 +20,7 @@ import { detectLocalSessionContext, resolveLocalCollaborationContext } from './a
20
20
  import { parseAutomationCommand, executeAutomationCommand, AUTOMATION_HELP } from './agent/automationCli.js';
21
21
  import { parseCollaborationCommand, executeCollaborationCommand, COLLAB_HELP } from './agent/collaborationCli.js';
22
22
  import fs from 'fs';
23
+ import { getMissingCertificateNames } from './utils/certificateNames.js';
23
24
  import http from 'http';
24
25
  import https from 'https';
25
26
  import path from 'path';
@@ -417,50 +418,10 @@ function getRequiredLocalHttpsNames() {
417
418
  '::1',
418
419
  ];
419
420
  }
420
- async function readCertificateSans(certPath) {
421
- try {
422
- const { stdout } = await execFileAsync('openssl', ['x509', '-in', certPath, '-noout', '-ext', 'subjectAltName'], {
423
- timeout: 5000,
424
- maxBuffer: 256 * 1024,
425
- });
426
- return stdout
427
- .split(/[\n,]/)
428
- .map((part) => part.trim())
429
- .filter(Boolean);
430
- }
431
- catch {
432
- return [];
433
- }
434
- }
435
- function sanMatches(required, sans) {
436
- if (/^\d+\.\d+\.\d+\.\d+$/.test(required)) {
437
- return sans.some((san) => san === `IP Address:${required}` || san === `IP:${required}`);
438
- }
439
- if (required.includes(':')) {
440
- const normalizeIpv6 = (value) => {
441
- const [left = '', right = ''] = value.toLowerCase().split('::');
442
- const leftGroups = left ? left.split(':') : [];
443
- const rightGroups = right ? right.split(':') : [];
444
- const missing = Math.max(0, 8 - leftGroups.length - rightGroups.length);
445
- return [...leftGroups, ...Array(missing).fill('0'), ...rightGroups]
446
- .map((group) => Number.parseInt(group || '0', 16).toString(16))
447
- .join(':');
448
- };
449
- const normalizedRequired = normalizeIpv6(required);
450
- return sans.some((san) => {
451
- const match = /^(?:IP Address|IP):(.+)$/.exec(san);
452
- return match ? normalizeIpv6(match[1]) === normalizedRequired : false;
453
- });
454
- }
455
- return sans.some((san) => san === `DNS:${required}`);
456
- }
457
421
  async function defaultCertificateNeedsRefresh() {
458
422
  if (!fileExists(defaultHttpsCertPath) || !fileExists(defaultHttpsKeyPath))
459
423
  return true;
460
- const sans = await readCertificateSans(defaultHttpsCertPath);
461
- if (sans.length === 0)
462
- return true;
463
- return getRequiredLocalHttpsNames().some((name) => !sanMatches(name, sans));
424
+ return (await getMissingCertificateNames(defaultHttpsCertPath, getRequiredLocalHttpsNames())).length > 0;
464
425
  }
465
426
  async function ensureDefaultHttpsCertificateFresh() {
466
427
  if (!(await defaultCertificateNeedsRefresh()))
@@ -10,7 +10,7 @@ import busboy from 'busboy';
10
10
  import { validatePreview } from '../utils/previewValidation.js';
11
11
  import { pathValidator } from '../utils/pathValidator.js';
12
12
  import { isAuthEnabled, isRequestAuthenticated } from '../utils/authProtection.js';
13
- import { isEncryptedRequest } from '../federation/requestContext.js';
13
+ import { encryptedRequestSubject, isEncryptedRequest } from '../federation/requestContext.js';
14
14
  import { getImageDimensions, parseImageDimensions } from '../utils/imageDimensions.js';
15
15
  import { writeDiffTraceLog, writeErrorLog, writeJsonLog } from '../utils/serverLogger.js';
16
16
  import { clearBranchAuditRecords, clearChangeAuditRecords, listBranchAuditRecords, listChangeAuditRecords, buildChangeAuditFingerprint } from '../utils/changeAuditStore.js';
@@ -3580,20 +3580,23 @@ export function isPathWithinPreviewRoot(root, targetPath) {
3580
3580
  const prefix = resolvedRoot.endsWith(path.sep) ? resolvedRoot : `${resolvedRoot}${path.sep}`;
3581
3581
  return resolvedTarget === resolvedRoot || resolvedTarget.startsWith(prefix);
3582
3582
  }
3583
- // Absolute expiration and owner-session validation prevent indefinite bearer access.
3584
- export function validatePreviewToken(token, targetPath) {
3583
+ // Device tokens require the verified channel on every read; its runtime rechecks
3584
+ // current authorization. Legacy cookie tokens retain their session validation.
3585
+ export function validatePreviewToken(token, targetPath, subjectId) {
3585
3586
  const entry = previewTokens.get(token);
3586
3587
  if (!entry)
3587
3588
  return false;
3588
- if (entry.expiresAt <= Date.now() || (entry.ownerSession ? !isSessionValid(entry.ownerSession) : isAuthEnabled())) {
3589
+ if (entry.expiresAt <= Date.now() || (!entry.ownerSubject && (entry.ownerSession ? !isSessionValid(entry.ownerSession) : isAuthEnabled()))) {
3589
3590
  previewTokens.delete(token);
3590
3591
  return false;
3591
3592
  }
3593
+ if (entry.ownerSubject && entry.ownerSubject !== subjectId)
3594
+ return false;
3592
3595
  if (!isPathWithinPreviewRoot(entry.root, targetPath))
3593
3596
  return false;
3594
3597
  return true;
3595
3598
  }
3596
- export function mintPreviewToken(root, ownerSession) {
3599
+ export function mintPreviewToken(root, ownerSession, ownerSubject) {
3597
3600
  const now = Date.now();
3598
3601
  for (const [token, entry] of previewTokens) {
3599
3602
  if (entry.expiresAt < now)
@@ -3602,7 +3605,7 @@ export function mintPreviewToken(root, ownerSession) {
3602
3605
  if (previewTokens.size >= 128)
3603
3606
  previewTokens.delete(previewTokens.keys().next().value);
3604
3607
  const token = crypto.randomBytes(16).toString('hex');
3605
- previewTokens.set(token, { root: path.resolve(root), expiresAt: now + PREVIEW_TOKEN_TTL_MS, ownerSession });
3608
+ previewTokens.set(token, { root: path.resolve(root), expiresAt: now + PREVIEW_TOKEN_TTL_MS, ownerSession, ownerSubject });
3606
3609
  return token;
3607
3610
  }
3608
3611
  function tokenizePreviewUrl(previewBaseUrl, token) {
@@ -3664,6 +3667,7 @@ router.get('/preview/*path', async (req, res) => {
3664
3667
  // injected <base> so it always equals the document URL.
3665
3668
  const previewBaseUrl = req.originalUrl.split('?', 1)[0];
3666
3669
  const authEnabled = isAuthEnabled();
3670
+ const subjectId = encryptedRequestSubject(req);
3667
3671
  // Token requests carry their own credential in the URL. Document requests
3668
3672
  // must present the session cookie before we mint a token for them.
3669
3673
  if (!maybeToken && authEnabled && !isRequestAuthenticated(req)) {
@@ -3672,13 +3676,13 @@ router.get('/preview/*path', async (req, res) => {
3672
3676
  }
3673
3677
  if (maybeToken) {
3674
3678
  const entry = previewTokens.get(maybeToken);
3675
- if (!entry || !validatePreviewToken(maybeToken, entry.root)) {
3679
+ if (!entry || !validatePreviewToken(maybeToken, entry.root, subjectId)) {
3676
3680
  res.status(403).json({ error: 'Preview token invalid or expired', code: 'PREVIEW_TOKEN_INVALID' });
3677
3681
  return;
3678
3682
  }
3679
3683
  }
3680
3684
  const validatedPath = await pathValidator.validatePathAsync(requestedPath);
3681
- if (maybeToken && !validatePreviewToken(maybeToken, validatedPath)) {
3685
+ if (maybeToken && !validatePreviewToken(maybeToken, validatedPath, subjectId)) {
3682
3686
  res.status(403).json({ error: 'Preview path outside token scope', code: 'PREVIEW_TOKEN_INVALID' });
3683
3687
  return;
3684
3688
  }
@@ -3708,10 +3712,10 @@ router.get('/preview/*path', async (req, res) => {
3708
3712
  // relative reference the document makes.
3709
3713
  if ((authEnabled || isEncryptedRequest(req)) && !maybeToken) {
3710
3714
  const root = stat.isDirectory() ? validatedPath : path.dirname(validatedPath);
3711
- const tokenized = tokenizePreviewUrl(previewBaseUrl, mintPreviewToken(root, req.cookies?.[AUTH_COOKIE]));
3715
+ const tokenized = tokenizePreviewUrl(previewBaseUrl, mintPreviewToken(root, req.cookies?.[AUTH_COOKIE], subjectId));
3712
3716
  redirectUrl = stat.isDirectory() && !previewBaseUrl.endsWith('/') ? `${tokenized}/` : tokenized;
3713
3717
  }
3714
- if (maybeToken && !validatePreviewToken(maybeToken, targetPath)) {
3718
+ if (maybeToken && !validatePreviewToken(maybeToken, targetPath, subjectId)) {
3715
3719
  res.status(403).json({ error: 'Preview token invalid or expired', code: 'PREVIEW_TOKEN_INVALID' });
3716
3720
  return;
3717
3721
  }
@@ -3723,7 +3727,7 @@ router.get('/preview/*path', async (req, res) => {
3723
3727
  res.status(400).json({ error: 'Path is not a file' });
3724
3728
  return;
3725
3729
  }
3726
- if (maybeToken && !validatePreviewToken(maybeToken, targetPath)) {
3730
+ if (maybeToken && !validatePreviewToken(maybeToken, targetPath, subjectId)) {
3727
3731
  res.status(403).json({ error: 'Preview token invalid or expired', code: 'PREVIEW_TOKEN_INVALID' });
3728
3732
  return;
3729
3733
  }
@@ -0,0 +1,12 @@
1
+ import { X509Certificate } from 'node:crypto';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { isIP } from 'node:net';
4
+ // Use Node's certificate parser: the system openssl (notably LibreSSL on
5
+ // macOS) may not support `x509 -ext`. Propagate read/parse errors so callers
6
+ // cannot mistake an inspection failure for an empty SAN extension.
7
+ export async function getMissingCertificateNames(certPath, required) {
8
+ const cert = new X509Certificate(await readFile(certPath));
9
+ return required.filter((name) => isIP(name)
10
+ ? cert.checkIP(name) === undefined
11
+ : cert.checkHost(name, { subject: 'never', wildcards: false }) === undefined);
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termdock",
3
- "version": "1.4.238",
3
+ "version": "1.4.240",
4
4
  "description": "A complete web-based terminal application with modern UI",
5
5
  "type": "module",
6
6
  "main": ".desktop-dist/main.js",
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "packageName": "termdock",
4
- "version": "1.4.238",
4
+ "version": "1.4.240",
5
5
  "runtimeProtocolVersion": 1,
6
6
  "minimumDesktopVersion": "1.4.46",
7
7
  "nodeMajor": 22,
8
8
  "dependencyHash": "sha256-K4KyYJuVoQDpZsBM8ZX1Rw3MddOxAzVdp/cPm0iGZz0=",
9
- "serverBundleHash": "sha256-nRIwkH5+bg0aR08alnrQVcN5Q10duk4wtzWPNtdJAFU=",
10
- "clientBundleHash": "sha256-Qcd7LDUxj1WE6Rx2N39EUwN6bFFgSHPIPtJQ/YmyeBk=",
9
+ "serverBundleHash": "sha256-OjLwoxfVNp7VlqCwrjCUGgjj0Yb3zlTm1sdlQGCGYIs=",
10
+ "clientBundleHash": "sha256-1wPbozETRlatzFMaBkX5wcha5zbSwUdAw4I0XckzdLk=",
11
11
  "entrypoint": "dist/server/cli.js",
12
12
  "clientEntrypoint": "dist/client/index.html"
13
13
  }