termdock 1.4.274 → 1.4.276

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/dist/client/assets/{App-Bgmz2KFR.js → App-Cq29NTOz.js} +39 -39
  2. package/dist/client/assets/App-Cq29NTOz.js.br +0 -0
  3. package/dist/client/assets/App-Cq29NTOz.js.gz +0 -0
  4. package/dist/client/assets/{ChangeWalkthroughPanel-DzqfGdXE.js → ChangeWalkthroughPanel-t4NOgjxM.js} +1 -1
  5. package/dist/client/assets/ChangeWalkthroughPanel-t4NOgjxM.js.br +0 -0
  6. package/dist/client/assets/ChangeWalkthroughPanel-t4NOgjxM.js.gz +0 -0
  7. package/dist/client/assets/{DagPlayground-D-blt_ce.js → DagPlayground-CxQvsac8.js} +1 -1
  8. package/dist/client/assets/DagPlayground-CxQvsac8.js.br +0 -0
  9. package/dist/client/assets/DagPlayground-CxQvsac8.js.gz +0 -0
  10. package/dist/client/assets/{DiffLab-DolN7Thu.js → DiffLab-B5_y5WUP.js} +1 -1
  11. package/dist/client/assets/DiffLab-B5_y5WUP.js.br +0 -0
  12. package/dist/client/assets/DiffLab-B5_y5WUP.js.gz +0 -0
  13. package/dist/client/assets/DiffReview-J3wlEpHg.js +1 -0
  14. package/dist/client/assets/DiffReview-J3wlEpHg.js.br +0 -0
  15. package/dist/client/assets/DiffReview-J3wlEpHg.js.gz +0 -0
  16. package/dist/client/assets/{DiffReviewLab-BGAJuFRb.js → DiffReviewLab-DZI1-J1D.js} +1 -1
  17. package/dist/client/assets/DiffReviewLab-DZI1-J1D.js.br +0 -0
  18. package/dist/client/assets/DiffReviewLab-DZI1-J1D.js.gz +0 -0
  19. package/dist/client/assets/DiffViewer-CgtVILev.js +37 -0
  20. package/dist/client/assets/DiffViewer-CgtVILev.js.br +0 -0
  21. package/dist/client/assets/DiffViewer-CgtVILev.js.gz +0 -0
  22. package/dist/client/assets/{ModelPreview-BqBbpxd1.js → ModelPreview-CFe_gbXI.js} +1 -1
  23. package/dist/client/assets/ModelPreview-CFe_gbXI.js.br +0 -0
  24. package/dist/client/assets/ModelPreview-CFe_gbXI.js.gz +0 -0
  25. package/dist/client/assets/RightSidebar-iy7-XSSb.js +1678 -0
  26. package/dist/client/assets/RightSidebar-iy7-XSSb.js.br +0 -0
  27. package/dist/client/assets/RightSidebar-iy7-XSSb.js.gz +0 -0
  28. package/dist/client/assets/{abnfDiagram-VCTEODGH-C4A-2OCs.js → abnfDiagram-VCTEODGH-CXXSvKzJ.js} +1 -1
  29. package/dist/client/assets/abnfDiagram-VCTEODGH-CXXSvKzJ.js.br +0 -0
  30. package/dist/client/assets/abnfDiagram-VCTEODGH-CXXSvKzJ.js.gz +0 -0
  31. package/dist/client/assets/app-DbY083Oo.js +35 -0
  32. package/dist/client/assets/app-DbY083Oo.js.br +0 -0
  33. package/dist/client/assets/app-DbY083Oo.js.gz +0 -0
  34. package/dist/client/assets/{arc-D9baZTlD.js → arc-cp7SkvLQ.js} +1 -1
  35. package/dist/client/assets/arc-cp7SkvLQ.js.br +0 -0
  36. package/dist/client/assets/arc-cp7SkvLQ.js.gz +0 -0
  37. package/dist/client/assets/{architectureDiagram-5GKGNRK7-DENwPPJf.js → architectureDiagram-5GKGNRK7-C644wSuo.js} +1 -1
  38. package/dist/client/assets/architectureDiagram-5GKGNRK7-C644wSuo.js.br +0 -0
  39. package/dist/client/assets/architectureDiagram-5GKGNRK7-C644wSuo.js.gz +0 -0
  40. package/dist/client/assets/{blockDiagram-I7D4REHJ-D5aOKdyM.js → blockDiagram-I7D4REHJ-D5KyGuKi.js} +1 -1
  41. package/dist/client/assets/blockDiagram-I7D4REHJ-D5KyGuKi.js.br +0 -0
  42. package/dist/client/assets/blockDiagram-I7D4REHJ-D5KyGuKi.js.gz +0 -0
  43. package/dist/client/assets/{c4Diagram-7LVT6UL2-CBOCvHOL.js → c4Diagram-7LVT6UL2-me7O251H.js} +1 -1
  44. package/dist/client/assets/c4Diagram-7LVT6UL2-me7O251H.js.br +0 -0
  45. package/dist/client/assets/c4Diagram-7LVT6UL2-me7O251H.js.gz +0 -0
  46. package/dist/client/assets/channel-D7fov9Fv.js +1 -0
  47. package/dist/client/assets/{chunk-2Q5K7J3B-dlg_y1Yt.js → chunk-2Q5K7J3B-BwXplC7w.js} +1 -1
  48. package/dist/client/assets/{chunk-5VM5RSS4-CO7nRL4g.js → chunk-5VM5RSS4-Cxv0b7hH.js} +1 -1
  49. package/dist/client/assets/{chunk-F27PBJKO-_XEmDjbM.js → chunk-F27PBJKO-DocSLwjs.js} +1 -1
  50. package/dist/client/assets/chunk-F27PBJKO-DocSLwjs.js.br +0 -0
  51. package/dist/client/assets/chunk-F27PBJKO-DocSLwjs.js.gz +0 -0
  52. package/dist/client/assets/{chunk-IMKFNOWR-DsG6lLDO.js → chunk-IMKFNOWR-Crh3XcBw.js} +1 -1
  53. package/dist/client/assets/chunk-IMKFNOWR-Crh3XcBw.js.br +0 -0
  54. package/dist/client/assets/chunk-IMKFNOWR-Crh3XcBw.js.gz +0 -0
  55. package/dist/client/assets/{chunk-JWPE2WC7-BNa5Lx63.js → chunk-JWPE2WC7-DhvxSds2.js} +1 -1
  56. package/dist/client/assets/{chunk-POPQ4Y6H-ixOhaIZ8.js → chunk-POPQ4Y6H-CTsXvY77.js} +1 -1
  57. package/dist/client/assets/{chunk-SVP7TREG-CuF6ZXR9.js → chunk-SVP7TREG-B6tUp675.js} +1 -1
  58. package/dist/client/assets/chunk-SVP7TREG-B6tUp675.js.br +0 -0
  59. package/dist/client/assets/chunk-SVP7TREG-B6tUp675.js.gz +0 -0
  60. package/dist/client/assets/{chunk-TICWLB2K-DXcx3LRb.js → chunk-TICWLB2K-Cq3Ij5FB.js} +1 -1
  61. package/dist/client/assets/chunk-TICWLB2K-Cq3Ij5FB.js.br +0 -0
  62. package/dist/client/assets/chunk-TICWLB2K-Cq3Ij5FB.js.gz +0 -0
  63. package/dist/client/assets/{chunk-XXDRQBXY-D6gKWE42.js → chunk-XXDRQBXY-BFnmmnaf.js} +1 -1
  64. package/dist/client/assets/classDiagram-ZZMXUADV-DhMDhp7_.js +1 -0
  65. package/dist/client/assets/classDiagram-v2-VYDZK3BY-DhMDhp7_.js +1 -0
  66. package/dist/client/assets/{cose-bilkent-JH36ORCC-ByD4BHe2.js → cose-bilkent-JH36ORCC-CH79v5Nm.js} +1 -1
  67. package/dist/client/assets/cose-bilkent-JH36ORCC-CH79v5Nm.js.br +0 -0
  68. package/dist/client/assets/cose-bilkent-JH36ORCC-CH79v5Nm.js.gz +0 -0
  69. package/dist/client/assets/{cynefin-OW5HDTMX-BxCxFVsn.js → cynefin-OW5HDTMX-DPtsHlxo.js} +1 -1
  70. package/dist/client/assets/cynefin-OW5HDTMX-DPtsHlxo.js.br +0 -0
  71. package/dist/client/assets/cynefin-OW5HDTMX-DPtsHlxo.js.gz +0 -0
  72. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-Dbs_tQyc.js → cynefinDiagram-5FMLGOSQ-Ynazqz1w.js} +1 -1
  73. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-Ynazqz1w.js.br +0 -0
  74. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-Ynazqz1w.js.gz +0 -0
  75. package/dist/client/assets/{dagre-GXQ25YYZ-DhTTWuBG.js → dagre-GXQ25YYZ-DfM9ezHp.js} +1 -1
  76. package/dist/client/assets/dagre-GXQ25YYZ-DfM9ezHp.js.br +0 -0
  77. package/dist/client/assets/dagre-GXQ25YYZ-DfM9ezHp.js.gz +0 -0
  78. package/dist/client/assets/{diagram-S7CK7UJ4-Ds8MxWZY.js → diagram-S7CK7UJ4-B_h8RQqw.js} +1 -1
  79. package/dist/client/assets/diagram-S7CK7UJ4-B_h8RQqw.js.br +0 -0
  80. package/dist/client/assets/diagram-S7CK7UJ4-B_h8RQqw.js.gz +0 -0
  81. package/dist/client/assets/{diagram-UQ7AKVKN-BUj7vQY5.js → diagram-UQ7AKVKN-pPwb9I5q.js} +1 -1
  82. package/dist/client/assets/diagram-UQ7AKVKN-pPwb9I5q.js.br +0 -0
  83. package/dist/client/assets/diagram-UQ7AKVKN-pPwb9I5q.js.gz +0 -0
  84. package/dist/client/assets/{diagram-VSXAHHWV-CKKKX8QT.js → diagram-VSXAHHWV-CBpO8J25.js} +1 -1
  85. package/dist/client/assets/diagram-VSXAHHWV-CBpO8J25.js.br +0 -0
  86. package/dist/client/assets/diagram-VSXAHHWV-CBpO8J25.js.gz +0 -0
  87. package/dist/client/assets/{diagram-VX7I27RA-nny7llCn.js → diagram-VX7I27RA-DNyQxlf3.js} +1 -1
  88. package/dist/client/assets/diagram-VX7I27RA-DNyQxlf3.js.br +0 -0
  89. package/dist/client/assets/diagram-VX7I27RA-DNyQxlf3.js.gz +0 -0
  90. package/dist/client/assets/{diagram-Z3DM3KII-DY1uLAKN.js → diagram-Z3DM3KII-dAyb1bjd.js} +1 -1
  91. package/dist/client/assets/diagram-Z3DM3KII-dAyb1bjd.js.br +0 -0
  92. package/dist/client/assets/diagram-Z3DM3KII-dAyb1bjd.js.gz +0 -0
  93. package/dist/client/assets/{ebnfDiagram-PWID7BFC-CE9OBwSc.js → ebnfDiagram-PWID7BFC-DMacuimR.js} +1 -1
  94. package/dist/client/assets/ebnfDiagram-PWID7BFC-DMacuimR.js.br +0 -0
  95. package/dist/client/assets/ebnfDiagram-PWID7BFC-DMacuimR.js.gz +0 -0
  96. package/dist/client/assets/{erDiagram-RLTQ6QDP-Ba2unHup.js → erDiagram-RLTQ6QDP-DryfjFD1.js} +1 -1
  97. package/dist/client/assets/erDiagram-RLTQ6QDP-DryfjFD1.js.br +0 -0
  98. package/dist/client/assets/erDiagram-RLTQ6QDP-DryfjFD1.js.gz +0 -0
  99. package/dist/client/assets/{flowDiagram-HODETNUW-C4_qq0Cb.js → flowDiagram-HODETNUW-c6F7RHIg.js} +1 -1
  100. package/dist/client/assets/flowDiagram-HODETNUW-c6F7RHIg.js.br +0 -0
  101. package/dist/client/assets/flowDiagram-HODETNUW-c6F7RHIg.js.gz +0 -0
  102. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-C9piJJxc.js → ganttDiagram-EL5Y4UJY-j2F3mG_i.js} +1 -1
  103. package/dist/client/assets/ganttDiagram-EL5Y4UJY-j2F3mG_i.js.br +0 -0
  104. package/dist/client/assets/ganttDiagram-EL5Y4UJY-j2F3mG_i.js.gz +0 -0
  105. package/dist/client/assets/{gestureArbiter-DuZwkHF0.js → gestureArbiter-BKuMofhC.js} +1 -1
  106. package/dist/client/assets/gestureArbiter-BKuMofhC.js.br +0 -0
  107. package/dist/client/assets/gestureArbiter-BKuMofhC.js.gz +0 -0
  108. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-CHKtPIr2.js → gitGraphDiagram-WWUBYQGX-wHkJC0Y4.js} +1 -1
  109. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-wHkJC0Y4.js.br +0 -0
  110. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-wHkJC0Y4.js.gz +0 -0
  111. package/dist/client/assets/{index-t8Mh8TuP.css → index-DeTcW7aT.css} +1 -1
  112. package/dist/client/assets/index-DeTcW7aT.css.br +0 -0
  113. package/dist/client/assets/index-DeTcW7aT.css.gz +0 -0
  114. package/dist/client/assets/{infoDiagram-27XIBGKW-Dq_Jycxf.js → infoDiagram-27XIBGKW-CMjoG3lb.js} +1 -1
  115. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BlUBm6UK.js → ishikawaDiagram-5VMMS53U-Di0_L7ly.js} +1 -1
  116. package/dist/client/assets/ishikawaDiagram-5VMMS53U-Di0_L7ly.js.br +0 -0
  117. package/dist/client/assets/ishikawaDiagram-5VMMS53U-Di0_L7ly.js.gz +0 -0
  118. package/dist/client/assets/{journeyDiagram-3NMN7TZE-Uk9X_Qjo.js → journeyDiagram-3NMN7TZE-Bxe0PyVR.js} +1 -1
  119. package/dist/client/assets/journeyDiagram-3NMN7TZE-Bxe0PyVR.js.br +0 -0
  120. package/dist/client/assets/journeyDiagram-3NMN7TZE-Bxe0PyVR.js.gz +0 -0
  121. package/dist/client/assets/{kanban-definition-UXKFOSKX-B_FSzUKj.js → kanban-definition-UXKFOSKX-CV4lZYuw.js} +1 -1
  122. package/dist/client/assets/kanban-definition-UXKFOSKX-CV4lZYuw.js.br +0 -0
  123. package/dist/client/assets/kanban-definition-UXKFOSKX-CV4lZYuw.js.gz +0 -0
  124. package/dist/client/assets/{layout-DarffDx8.js → layout-Dr592wOu.js} +1 -1
  125. package/dist/client/assets/layout-Dr592wOu.js.br +0 -0
  126. package/dist/client/assets/layout-Dr592wOu.js.gz +0 -0
  127. package/dist/client/assets/{linear-CAT9PhQc.js → linear-C68vc9xn.js} +1 -1
  128. package/dist/client/assets/{linear-CAT9PhQc.js.br → linear-C68vc9xn.js.br} +0 -0
  129. package/dist/client/assets/linear-C68vc9xn.js.gz +0 -0
  130. package/dist/client/assets/{mermaid.core-DVQ8ioL7.js → mermaid.core-2nIFOgS5.js} +5 -5
  131. package/dist/client/assets/mermaid.core-2nIFOgS5.js.br +0 -0
  132. package/dist/client/assets/mermaid.core-2nIFOgS5.js.gz +0 -0
  133. package/dist/client/assets/{mindmap-definition-YA3MSWOX-BvFKP0v8.js → mindmap-definition-YA3MSWOX-DNHcj6nu.js} +1 -1
  134. package/dist/client/assets/mindmap-definition-YA3MSWOX-DNHcj6nu.js.br +0 -0
  135. package/dist/client/assets/mindmap-definition-YA3MSWOX-DNHcj6nu.js.gz +0 -0
  136. package/dist/client/assets/{passwordBootstrap-CvkenXI7.js → passwordBootstrap-LVdEOMqV.js} +1 -1
  137. package/dist/client/assets/passwordBootstrap-LVdEOMqV.js.br +0 -0
  138. package/dist/client/assets/{passwordBootstrap-CvkenXI7.js.gz → passwordBootstrap-LVdEOMqV.js.gz} +0 -0
  139. package/dist/client/assets/{pegDiagram-XKGWAZYB-D2IrhbK3.js → pegDiagram-XKGWAZYB-H95jp1fe.js} +1 -1
  140. package/dist/client/assets/pegDiagram-XKGWAZYB-H95jp1fe.js.br +0 -0
  141. package/dist/client/assets/pegDiagram-XKGWAZYB-H95jp1fe.js.gz +0 -0
  142. package/dist/client/assets/{pieDiagram-E7YTZNPT-DjkoPbvN.js → pieDiagram-E7YTZNPT-CSTb71Ib.js} +1 -1
  143. package/dist/client/assets/pieDiagram-E7YTZNPT-CSTb71Ib.js.br +0 -0
  144. package/dist/client/assets/pieDiagram-E7YTZNPT-CSTb71Ib.js.gz +0 -0
  145. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-B6y7YJVk.js → quadrantDiagram-AXDQQJYC-Cj0bkb73.js} +1 -1
  146. package/dist/client/assets/quadrantDiagram-AXDQQJYC-Cj0bkb73.js.br +0 -0
  147. package/dist/client/assets/quadrantDiagram-AXDQQJYC-Cj0bkb73.js.gz +0 -0
  148. package/dist/client/assets/{railroadDiagram-O6MQD6OU-B0zcdgZ7.js → railroadDiagram-O6MQD6OU-CaYCI8KZ.js} +1 -1
  149. package/dist/client/assets/railroadDiagram-O6MQD6OU-CaYCI8KZ.js.br +0 -0
  150. package/dist/client/assets/railroadDiagram-O6MQD6OU-CaYCI8KZ.js.gz +0 -0
  151. package/dist/client/assets/{referenceLongPress-DsXbPK_4.js → referenceLongPress-oAK_YNlu.js} +1 -1
  152. package/dist/client/assets/referenceLongPress-oAK_YNlu.js.br +0 -0
  153. package/dist/client/assets/referenceLongPress-oAK_YNlu.js.gz +0 -0
  154. package/dist/client/assets/{requirementDiagram-BXWQKSXE-D_vSRB6l.js → requirementDiagram-BXWQKSXE-DpvXahus.js} +1 -1
  155. package/dist/client/assets/requirementDiagram-BXWQKSXE-DpvXahus.js.br +0 -0
  156. package/dist/client/assets/requirementDiagram-BXWQKSXE-DpvXahus.js.gz +0 -0
  157. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-DCRHfG7q.js → sankeyDiagram-P5KCCOFB-h5n85VQj.js} +1 -1
  158. package/dist/client/assets/sankeyDiagram-P5KCCOFB-h5n85VQj.js.br +0 -0
  159. package/dist/client/assets/sankeyDiagram-P5KCCOFB-h5n85VQj.js.gz +0 -0
  160. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-CbSi7J6V.js → sequenceDiagram-WJ2MYXX4-BHJ1nrRd.js} +1 -1
  161. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-CbSi7J6V.js.br → sequenceDiagram-WJ2MYXX4-BHJ1nrRd.js.br} +0 -0
  162. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BHJ1nrRd.js.gz +0 -0
  163. package/dist/client/assets/{sizeCapture-INFHLROL-vh3eSHbb.js → sizeCapture-INFHLROL-DX2fcAbk.js} +1 -1
  164. package/dist/client/assets/sizeCapture-INFHLROL-DX2fcAbk.js.br +0 -0
  165. package/dist/client/assets/sizeCapture-INFHLROL-DX2fcAbk.js.gz +0 -0
  166. package/dist/client/assets/{sparkles-CWkaqdcm.js → sparkles-DheyoSzk.js} +1 -1
  167. package/dist/client/assets/{stateDiagram-D77RDMKH-Cewpo9Nj.js → stateDiagram-D77RDMKH-CC2yYkck.js} +1 -1
  168. package/dist/client/assets/stateDiagram-D77RDMKH-CC2yYkck.js.br +0 -0
  169. package/dist/client/assets/stateDiagram-D77RDMKH-CC2yYkck.js.gz +0 -0
  170. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-C4wTnOPJ.js +1 -0
  171. package/dist/client/assets/{swimlanes-42K2YHIH-D_W8ryi7.js → swimlanes-42K2YHIH-_T5qwTlD.js} +1 -1
  172. package/dist/client/assets/swimlanes-42K2YHIH-_T5qwTlD.js.br +0 -0
  173. package/dist/client/assets/swimlanes-42K2YHIH-_T5qwTlD.js.gz +0 -0
  174. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DKcGlYxN.js +8 -0
  175. package/dist/client/assets/{timeline-definition-24CTP7MA-CmCMrrPG.js → timeline-definition-24CTP7MA-BqFoa3XX.js} +1 -1
  176. package/dist/client/assets/timeline-definition-24CTP7MA-BqFoa3XX.js.br +0 -0
  177. package/dist/client/assets/timeline-definition-24CTP7MA-BqFoa3XX.js.gz +0 -0
  178. package/dist/client/assets/{triangle-alert-Djeo1xe8.js → triangle-alert-BbXTlgzI.js} +1 -1
  179. package/dist/client/assets/{vennDiagram-4TSXK5OY-CIAyfZB9.js → vennDiagram-4TSXK5OY-CSpiX1Bh.js} +1 -1
  180. package/dist/client/assets/vennDiagram-4TSXK5OY-CSpiX1Bh.js.br +0 -0
  181. package/dist/client/assets/vennDiagram-4TSXK5OY-CSpiX1Bh.js.gz +0 -0
  182. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-JHK18PKF.js → wardleyDiagram-VM6X3IG4-cGdw8Ed4.js} +1 -1
  183. package/dist/client/assets/wardleyDiagram-VM6X3IG4-cGdw8Ed4.js.br +0 -0
  184. package/dist/client/assets/wardleyDiagram-VM6X3IG4-cGdw8Ed4.js.gz +0 -0
  185. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-B9gfTSaV.js → xychartDiagram-S5SC5T6Z-Du4geU5J.js} +1 -1
  186. package/dist/client/assets/xychartDiagram-S5SC5T6Z-Du4geU5J.js.br +0 -0
  187. package/dist/client/assets/xychartDiagram-S5SC5T6Z-Du4geU5J.js.gz +0 -0
  188. package/dist/client/boot-logo.png +0 -0
  189. package/dist/client/index.html +71 -6
  190. package/dist/client/index.html.br +0 -0
  191. package/dist/client/index.html.gz +0 -0
  192. package/dist/client/sw.js +1 -1
  193. package/dist/client/sw.js.br +0 -0
  194. package/dist/client/sw.js.gz +0 -0
  195. package/dist/server/routes/filesystem.js +48 -14
  196. package/package.json +1 -1
  197. package/runtime-manifest.json +3 -3
  198. package/dist/client/assets/App-Bgmz2KFR.js.br +0 -0
  199. package/dist/client/assets/App-Bgmz2KFR.js.gz +0 -0
  200. package/dist/client/assets/ChangeWalkthroughPanel-DzqfGdXE.js.br +0 -0
  201. package/dist/client/assets/ChangeWalkthroughPanel-DzqfGdXE.js.gz +0 -0
  202. package/dist/client/assets/DagPlayground-D-blt_ce.js.br +0 -0
  203. package/dist/client/assets/DagPlayground-D-blt_ce.js.gz +0 -0
  204. package/dist/client/assets/DiffLab-DolN7Thu.js.br +0 -0
  205. package/dist/client/assets/DiffLab-DolN7Thu.js.gz +0 -0
  206. package/dist/client/assets/DiffReview-D93d8aDU.js +0 -1
  207. package/dist/client/assets/DiffReview-D93d8aDU.js.br +0 -0
  208. package/dist/client/assets/DiffReview-D93d8aDU.js.gz +0 -0
  209. package/dist/client/assets/DiffReviewLab-BGAJuFRb.js.br +0 -0
  210. package/dist/client/assets/DiffReviewLab-BGAJuFRb.js.gz +0 -0
  211. package/dist/client/assets/DiffViewer-sF09Yuq0.js +0 -37
  212. package/dist/client/assets/DiffViewer-sF09Yuq0.js.br +0 -0
  213. package/dist/client/assets/DiffViewer-sF09Yuq0.js.gz +0 -0
  214. package/dist/client/assets/ModelPreview-BqBbpxd1.js.br +0 -0
  215. package/dist/client/assets/ModelPreview-BqBbpxd1.js.gz +0 -0
  216. package/dist/client/assets/RightSidebar-DW9yAEi4.js +0 -1678
  217. package/dist/client/assets/RightSidebar-DW9yAEi4.js.br +0 -0
  218. package/dist/client/assets/RightSidebar-DW9yAEi4.js.gz +0 -0
  219. package/dist/client/assets/abnfDiagram-VCTEODGH-C4A-2OCs.js.br +0 -0
  220. package/dist/client/assets/abnfDiagram-VCTEODGH-C4A-2OCs.js.gz +0 -0
  221. package/dist/client/assets/app-D83E7C03.js +0 -35
  222. package/dist/client/assets/app-D83E7C03.js.br +0 -0
  223. package/dist/client/assets/app-D83E7C03.js.gz +0 -0
  224. package/dist/client/assets/arc-D9baZTlD.js.br +0 -0
  225. package/dist/client/assets/arc-D9baZTlD.js.gz +0 -0
  226. package/dist/client/assets/architectureDiagram-5GKGNRK7-DENwPPJf.js.br +0 -0
  227. package/dist/client/assets/architectureDiagram-5GKGNRK7-DENwPPJf.js.gz +0 -0
  228. package/dist/client/assets/blockDiagram-I7D4REHJ-D5aOKdyM.js.br +0 -0
  229. package/dist/client/assets/blockDiagram-I7D4REHJ-D5aOKdyM.js.gz +0 -0
  230. package/dist/client/assets/c4Diagram-7LVT6UL2-CBOCvHOL.js.br +0 -0
  231. package/dist/client/assets/c4Diagram-7LVT6UL2-CBOCvHOL.js.gz +0 -0
  232. package/dist/client/assets/channel-Cmgcruvo.js +0 -1
  233. package/dist/client/assets/chunk-F27PBJKO-_XEmDjbM.js.br +0 -0
  234. package/dist/client/assets/chunk-F27PBJKO-_XEmDjbM.js.gz +0 -0
  235. package/dist/client/assets/chunk-IMKFNOWR-DsG6lLDO.js.br +0 -0
  236. package/dist/client/assets/chunk-IMKFNOWR-DsG6lLDO.js.gz +0 -0
  237. package/dist/client/assets/chunk-SVP7TREG-CuF6ZXR9.js.br +0 -0
  238. package/dist/client/assets/chunk-SVP7TREG-CuF6ZXR9.js.gz +0 -0
  239. package/dist/client/assets/chunk-TICWLB2K-DXcx3LRb.js.br +0 -0
  240. package/dist/client/assets/chunk-TICWLB2K-DXcx3LRb.js.gz +0 -0
  241. package/dist/client/assets/classDiagram-ZZMXUADV-DwSIwPNN.js +0 -1
  242. package/dist/client/assets/classDiagram-v2-VYDZK3BY-DwSIwPNN.js +0 -1
  243. package/dist/client/assets/cose-bilkent-JH36ORCC-ByD4BHe2.js.br +0 -0
  244. package/dist/client/assets/cose-bilkent-JH36ORCC-ByD4BHe2.js.gz +0 -0
  245. package/dist/client/assets/cynefin-OW5HDTMX-BxCxFVsn.js.br +0 -0
  246. package/dist/client/assets/cynefin-OW5HDTMX-BxCxFVsn.js.gz +0 -0
  247. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-Dbs_tQyc.js.br +0 -0
  248. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-Dbs_tQyc.js.gz +0 -0
  249. package/dist/client/assets/dagre-GXQ25YYZ-DhTTWuBG.js.br +0 -0
  250. package/dist/client/assets/dagre-GXQ25YYZ-DhTTWuBG.js.gz +0 -0
  251. package/dist/client/assets/diagram-S7CK7UJ4-Ds8MxWZY.js.br +0 -0
  252. package/dist/client/assets/diagram-S7CK7UJ4-Ds8MxWZY.js.gz +0 -0
  253. package/dist/client/assets/diagram-UQ7AKVKN-BUj7vQY5.js.br +0 -0
  254. package/dist/client/assets/diagram-UQ7AKVKN-BUj7vQY5.js.gz +0 -0
  255. package/dist/client/assets/diagram-VSXAHHWV-CKKKX8QT.js.br +0 -0
  256. package/dist/client/assets/diagram-VSXAHHWV-CKKKX8QT.js.gz +0 -0
  257. package/dist/client/assets/diagram-VX7I27RA-nny7llCn.js.br +0 -0
  258. package/dist/client/assets/diagram-VX7I27RA-nny7llCn.js.gz +0 -0
  259. package/dist/client/assets/diagram-Z3DM3KII-DY1uLAKN.js.br +0 -0
  260. package/dist/client/assets/diagram-Z3DM3KII-DY1uLAKN.js.gz +0 -0
  261. package/dist/client/assets/ebnfDiagram-PWID7BFC-CE9OBwSc.js.br +0 -0
  262. package/dist/client/assets/ebnfDiagram-PWID7BFC-CE9OBwSc.js.gz +0 -0
  263. package/dist/client/assets/erDiagram-RLTQ6QDP-Ba2unHup.js.br +0 -0
  264. package/dist/client/assets/erDiagram-RLTQ6QDP-Ba2unHup.js.gz +0 -0
  265. package/dist/client/assets/flowDiagram-HODETNUW-C4_qq0Cb.js.br +0 -0
  266. package/dist/client/assets/flowDiagram-HODETNUW-C4_qq0Cb.js.gz +0 -0
  267. package/dist/client/assets/ganttDiagram-EL5Y4UJY-C9piJJxc.js.br +0 -0
  268. package/dist/client/assets/ganttDiagram-EL5Y4UJY-C9piJJxc.js.gz +0 -0
  269. package/dist/client/assets/gestureArbiter-DuZwkHF0.js.br +0 -0
  270. package/dist/client/assets/gestureArbiter-DuZwkHF0.js.gz +0 -0
  271. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-CHKtPIr2.js.br +0 -0
  272. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-CHKtPIr2.js.gz +0 -0
  273. package/dist/client/assets/index-t8Mh8TuP.css.br +0 -0
  274. package/dist/client/assets/index-t8Mh8TuP.css.gz +0 -0
  275. package/dist/client/assets/ishikawaDiagram-5VMMS53U-BlUBm6UK.js.br +0 -0
  276. package/dist/client/assets/ishikawaDiagram-5VMMS53U-BlUBm6UK.js.gz +0 -0
  277. package/dist/client/assets/journeyDiagram-3NMN7TZE-Uk9X_Qjo.js.br +0 -0
  278. package/dist/client/assets/journeyDiagram-3NMN7TZE-Uk9X_Qjo.js.gz +0 -0
  279. package/dist/client/assets/kanban-definition-UXKFOSKX-B_FSzUKj.js.br +0 -0
  280. package/dist/client/assets/kanban-definition-UXKFOSKX-B_FSzUKj.js.gz +0 -0
  281. package/dist/client/assets/layout-DarffDx8.js.br +0 -0
  282. package/dist/client/assets/layout-DarffDx8.js.gz +0 -0
  283. package/dist/client/assets/linear-CAT9PhQc.js.gz +0 -0
  284. package/dist/client/assets/mermaid.core-DVQ8ioL7.js.br +0 -0
  285. package/dist/client/assets/mermaid.core-DVQ8ioL7.js.gz +0 -0
  286. package/dist/client/assets/mindmap-definition-YA3MSWOX-BvFKP0v8.js.br +0 -0
  287. package/dist/client/assets/mindmap-definition-YA3MSWOX-BvFKP0v8.js.gz +0 -0
  288. package/dist/client/assets/passwordBootstrap-CvkenXI7.js.br +0 -0
  289. package/dist/client/assets/pegDiagram-XKGWAZYB-D2IrhbK3.js.br +0 -0
  290. package/dist/client/assets/pegDiagram-XKGWAZYB-D2IrhbK3.js.gz +0 -0
  291. package/dist/client/assets/pieDiagram-E7YTZNPT-DjkoPbvN.js.br +0 -0
  292. package/dist/client/assets/pieDiagram-E7YTZNPT-DjkoPbvN.js.gz +0 -0
  293. package/dist/client/assets/quadrantDiagram-AXDQQJYC-B6y7YJVk.js.br +0 -0
  294. package/dist/client/assets/quadrantDiagram-AXDQQJYC-B6y7YJVk.js.gz +0 -0
  295. package/dist/client/assets/railroadDiagram-O6MQD6OU-B0zcdgZ7.js.br +0 -0
  296. package/dist/client/assets/railroadDiagram-O6MQD6OU-B0zcdgZ7.js.gz +0 -0
  297. package/dist/client/assets/referenceLongPress-DsXbPK_4.js.br +0 -0
  298. package/dist/client/assets/referenceLongPress-DsXbPK_4.js.gz +0 -0
  299. package/dist/client/assets/requirementDiagram-BXWQKSXE-D_vSRB6l.js.br +0 -0
  300. package/dist/client/assets/requirementDiagram-BXWQKSXE-D_vSRB6l.js.gz +0 -0
  301. package/dist/client/assets/sankeyDiagram-P5KCCOFB-DCRHfG7q.js.br +0 -0
  302. package/dist/client/assets/sankeyDiagram-P5KCCOFB-DCRHfG7q.js.gz +0 -0
  303. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-CbSi7J6V.js.gz +0 -0
  304. package/dist/client/assets/sizeCapture-INFHLROL-vh3eSHbb.js.br +0 -0
  305. package/dist/client/assets/sizeCapture-INFHLROL-vh3eSHbb.js.gz +0 -0
  306. package/dist/client/assets/stateDiagram-D77RDMKH-Cewpo9Nj.js.br +0 -0
  307. package/dist/client/assets/stateDiagram-D77RDMKH-Cewpo9Nj.js.gz +0 -0
  308. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-C1r0741_.js +0 -1
  309. package/dist/client/assets/swimlanes-42K2YHIH-D_W8ryi7.js.br +0 -0
  310. package/dist/client/assets/swimlanes-42K2YHIH-D_W8ryi7.js.gz +0 -0
  311. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-BhrvhgDT.js +0 -8
  312. package/dist/client/assets/timeline-definition-24CTP7MA-CmCMrrPG.js.br +0 -0
  313. package/dist/client/assets/timeline-definition-24CTP7MA-CmCMrrPG.js.gz +0 -0
  314. package/dist/client/assets/vennDiagram-4TSXK5OY-CIAyfZB9.js.br +0 -0
  315. package/dist/client/assets/vennDiagram-4TSXK5OY-CIAyfZB9.js.gz +0 -0
  316. package/dist/client/assets/wardleyDiagram-VM6X3IG4-JHK18PKF.js.br +0 -0
  317. package/dist/client/assets/wardleyDiagram-VM6X3IG4-JHK18PKF.js.gz +0 -0
  318. package/dist/client/assets/xychartDiagram-S5SC5T6Z-B9gfTSaV.js.br +0 -0
  319. package/dist/client/assets/xychartDiagram-S5SC5T6Z-B9gfTSaV.js.gz +0 -0
@@ -1050,14 +1050,16 @@ async function getGitPushTargets(gitRoot, signal) {
1050
1050
  const [remotesOutput, branchesOutput, remoteBranchesOutput, upstreamOutput, aheadBehindOutput] = await Promise.all([
1051
1051
  execGit(['remote'], gitRoot, signal).catch(emptyOnNonAbortGitError),
1052
1052
  execGit(['for-each-ref', '--format=%(refname:short)', 'refs/heads'], gitRoot, signal).catch(emptyOnNonAbortGitError),
1053
- execGit(['for-each-ref', '--format=%(refname:short)', 'refs/remotes'], gitRoot, signal).catch(emptyOnNonAbortGitError),
1053
+ // Exclude symbolic remote HEAD refs in Git itself. Their short name is the
1054
+ // bare remote (for example refs/remotes/origin/HEAD becomes "origin"), so
1055
+ // filtering the shortened output for "/HEAD" cannot identify them.
1056
+ execGit(['for-each-ref', '--format=%(if)%(symref)%(then)%(else)%(refname:short)%(end)', 'refs/remotes'], gitRoot, signal).catch(emptyOnNonAbortGitError),
1054
1057
  execGit(['rev-parse', '--abbrev-ref', '--symbolic-full-name', '@{u}'], gitRoot, signal).catch(emptyOnNonAbortGitError),
1055
1058
  execGit(['rev-list', '--left-right', '--count', '@{u}...HEAD'], gitRoot, signal).catch(emptyOnNonAbortGitError),
1056
1059
  ]);
1057
1060
  const remotes = uniqueSortedLines(remotesOutput);
1058
1061
  const branches = uniqueSortedLines(branchesOutput);
1059
- const remoteBranches = uniqueSortedLines(remoteBranchesOutput)
1060
- .filter((branch) => !branch.endsWith('/HEAD'));
1062
+ const remoteBranches = uniqueSortedLines(remoteBranchesOutput);
1061
1063
  const upstream = upstreamOutput.trim() || null;
1062
1064
  const { remote: upstreamRemote, branch: upstreamBranch } = splitUpstream(upstream, remotes);
1063
1065
  const { ahead, behind } = parseAheadBehind(aheadBehindOutput, Boolean(upstream));
@@ -2199,6 +2201,7 @@ function parseBranchDiffHunks(diffText) {
2199
2201
  let currentHeader = null;
2200
2202
  let currentLines = [];
2201
2203
  let hunkIndexByFile = 0;
2204
+ let indexHeader = null;
2202
2205
  const flush = () => {
2203
2206
  if (!currentHeader || (!oldPath && !newPath))
2204
2207
  return;
@@ -2207,6 +2210,7 @@ function parseBranchDiffHunks(diffText) {
2207
2210
  const newDiffPath = newPath ? `b/${newPath}` : '/dev/null';
2208
2211
  const hunkDiff = [
2209
2212
  `diff --git a/${oldPath ?? filePath} b/${newPath ?? filePath}`,
2213
+ ...(indexHeader ? [indexHeader] : []),
2210
2214
  `--- ${oldDiffPath}`,
2211
2215
  `+++ ${newDiffPath}`,
2212
2216
  currentHeader,
@@ -2231,11 +2235,16 @@ function parseBranchDiffHunks(diffText) {
2231
2235
  currentHeader = null;
2232
2236
  currentLines = [];
2233
2237
  hunkIndexByFile = 0;
2238
+ indexHeader = null;
2234
2239
  const match = /^diff --git (.+) (.+)$/.exec(line);
2235
2240
  oldPath = normalizeDiffPath(match?.[1] ?? '');
2236
2241
  newPath = normalizeDiffPath(match?.[2] ?? '');
2237
2242
  continue;
2238
2243
  }
2244
+ if (line.startsWith('index ') && !currentHeader) {
2245
+ indexHeader = line;
2246
+ continue;
2247
+ }
2239
2248
  if (line.startsWith('--- ')) {
2240
2249
  oldPath = normalizeDiffPath(line.slice(4).trim());
2241
2250
  continue;
@@ -2291,7 +2300,7 @@ async function getBranchFileDiffPayload(repoRoot, comparisonBase, requestedPath,
2291
2300
  return { available: false, error: 'Invalid comparison base' };
2292
2301
  }
2293
2302
  const filePath = await toGitPathspec(repoRoot, requestedPath);
2294
- const result = await execGitLimited(['diff', comparisonBase, '--', `:(literal)${filePath}`], repoRoot, MAX_BRANCH_DIFF_BYTES, false, signal);
2303
+ const result = await execGitLimited(['diff', '--full-index', comparisonBase, '--', `:(literal)${filePath}`], repoRoot, MAX_BRANCH_DIFF_BYTES, false, signal);
2295
2304
  const untracked = await appendUntrackedDiffs(repoRoot, result.stdout, signal, {
2296
2305
  filePath, maxBytes: MAX_BRANCH_DIFF_BYTES, perFileMaxBytes: MAX_UNTRACKED_DIFF_FILE_BYTES,
2297
2306
  });
@@ -2314,14 +2323,29 @@ async function getBranchDiffPayload(workspaceRoot, repoRoot, baseBranch, options
2314
2323
  const remotes = (await execGit(['remote'], repoRoot, signal)).split('\n').filter(Boolean);
2315
2324
  const remoteBase = trimmedBase.replace(/^refs\/remotes\//, '');
2316
2325
  // Match configured remotes, not arbitrary slashes in local branch names.
2317
- const baseRemote = remotes.sort((a, b) => b.length - a.length)
2318
- .find((remote) => remoteBase.startsWith(`${remote}/`))
2326
+ const sortedRemotes = remotes.sort((a, b) => b.length - a.length);
2327
+ const exactBaseRemote = sortedRemotes.find((remote) => remoteBase === remote) ?? null;
2328
+ const baseRemote = exactBaseRemote
2329
+ ?? sortedRemotes.find((remote) => remoteBase.startsWith(`${remote}/`))
2319
2330
  ?? (!trimmedBase.includes('/') && remotes.includes('origin') ? 'origin' : null);
2320
2331
  let baseRef = trimmedBase;
2321
2332
  if (baseRemote) {
2322
- const remoteBranch = remoteBase.startsWith(`${baseRemote}/`)
2333
+ let remoteBranch = remoteBase.startsWith(`${baseRemote}/`)
2323
2334
  ? remoteBase.slice(baseRemote.length + 1)
2324
2335
  : trimmedBase;
2336
+ if (exactBaseRemote) {
2337
+ const trackingPrefix = `refs/remotes/${baseRemote}/`;
2338
+ const remoteHead = await execGit(['symbolic-ref', '--quiet', `${trackingPrefix}HEAD`], repoRoot, signal)
2339
+ .then((value) => value.trim())
2340
+ .catch(emptyOnNonAbortGitError);
2341
+ if (!remoteHead.startsWith(trackingPrefix) || remoteHead.length === trackingPrefix.length) {
2342
+ return {
2343
+ available: false, workspaceRoot, repoRoot, baseBranch: trimmedBase, baseRef,
2344
+ error: `Baseline ${trimmedBase} names a remote, but its default branch is unavailable. Select an explicit remote branch and retry.`,
2345
+ };
2346
+ }
2347
+ remoteBranch = remoteHead.slice(trackingPrefix.length);
2348
+ }
2325
2349
  baseRef = `${baseRemote}/${remoteBranch}`;
2326
2350
  const trackingRef = `refs/remotes/${baseRef}`;
2327
2351
  try {
@@ -2372,8 +2396,8 @@ async function getBranchDiffPayload(workspaceRoot, repoRoot, baseBranch, options
2372
2396
  execGitLimited(['diff', '--name-only', diffBase], repoRoot, MAX_BRANCH_DIFF_NAME_BYTES, false, signal),
2373
2397
  fetchSeparateWorktreeDiff ? execGitLimited(['diff', '--name-only', 'HEAD'], repoRoot, MAX_BRANCH_DIFF_NAME_BYTES, false, signal) : Promise.resolve({ stdout: '', truncated: false }),
2374
2398
  execGitLimited(['log', `${baseGitRef}..${compareHead}`, '--oneline', '--no-merges'], repoRoot, MAX_BRANCH_DIFF_LOG_BYTES, false, signal),
2375
- execGitLimited(['diff', diffBase], repoRoot, MAX_BRANCH_DIFF_BYTES, false, signal),
2376
- fetchSeparateWorktreeDiff ? execGitLimited(['diff', 'HEAD'], repoRoot, MAX_BRANCH_DIFF_BYTES, false, signal) : Promise.resolve({ stdout: '', truncated: false }),
2399
+ execGitLimited(['diff', '--full-index', diffBase], repoRoot, MAX_BRANCH_DIFF_BYTES, false, signal),
2400
+ fetchSeparateWorktreeDiff ? execGitLimited(['diff', '--full-index', 'HEAD'], repoRoot, MAX_BRANCH_DIFF_BYTES, false, signal) : Promise.resolve({ stdout: '', truncated: false }),
2377
2401
  ]);
2378
2402
  const trackedDiff = [diffResult.stdout, workingDiffResult.stdout].filter(Boolean).join('\n');
2379
2403
  const untrackedResult = includeWorkingTree
@@ -2436,7 +2460,7 @@ async function getCommitDiffPayload(workspaceRoot, repoRoot, commit, signal) {
2436
2460
  execGit(['log', '-1', '--format=%s', trimmedCommit], repoRoot, signal).catch(emptyOnNonAbortGitError),
2437
2461
  execGitLimited(['show', '--stat', '--format=', trimmedCommit], repoRoot, MAX_BRANCH_DIFF_STAT_BYTES, false, signal),
2438
2462
  execGitLimited(['show', '--name-only', '--format=', trimmedCommit], repoRoot, MAX_BRANCH_DIFF_NAME_BYTES, false, signal),
2439
- execGitLimited(['show', '--format=', trimmedCommit], repoRoot, MAX_BRANCH_DIFF_BYTES, false, signal),
2463
+ execGitLimited(['show', '--full-index', '--format=', trimmedCommit], repoRoot, MAX_BRANCH_DIFF_BYTES, false, signal),
2440
2464
  ]);
2441
2465
  const diff = diffResult.stdout;
2442
2466
  const stat = statResult.stdout.trim();
@@ -3107,7 +3131,7 @@ router.get('/git-blob', async (req, res) => {
3107
3131
  const requestedPath = typeof req.query.path === 'string' ? req.query.path : undefined;
3108
3132
  const cwd = typeof req.query.cwd === 'string' ? req.query.cwd : undefined;
3109
3133
  const ref = typeof req.query.ref === 'string' ? req.query.ref : 'HEAD';
3110
- const source = req.query.source === 'index' ? 'index' : 'ref';
3134
+ const source = req.query.source === 'index' ? 'index' : req.query.source === 'blob' ? 'blob' : req.query.source === 'merge-base' ? 'merge-base' : 'ref';
3111
3135
  const controller = new AbortController();
3112
3136
  const abortRequest = () => {
3113
3137
  if (!res.writableEnded)
@@ -3120,10 +3144,17 @@ router.get('/git-blob', async (req, res) => {
3120
3144
  res.status(400).json({ error: 'Missing path parameter' });
3121
3145
  return;
3122
3146
  }
3123
- if (source !== 'index' && !isSafeGitRefName(ref)) {
3147
+ const comparisonRefs = source === 'merge-base' ? ref.split('...') : [];
3148
+ if (source === 'merge-base'
3149
+ ? comparisonRefs.length !== 2 || comparisonRefs.some((value) => !isSafeGitRefName(value))
3150
+ : source !== 'index' && !isSafeGitRefName(ref)) {
3124
3151
  res.status(400).json({ error: 'Invalid git ref' });
3125
3152
  return;
3126
3153
  }
3154
+ if (source === 'blob' && !/^[a-f0-9]{7,64}$/i.test(ref)) {
3155
+ res.status(400).json({ error: 'Invalid git blob id' });
3156
+ return;
3157
+ }
3127
3158
  const resolvedCwd = cwd ? await pathValidator.validatePathAsync(cwd) : process.cwd();
3128
3159
  const refresh = req.query.refresh === 'true';
3129
3160
  const gitRoot = await findGitRoot(resolvedCwd, refresh ? null : GIT_TIMEOUT_MS);
@@ -3132,8 +3163,11 @@ router.get('/git-blob', async (req, res) => {
3132
3163
  return;
3133
3164
  }
3134
3165
  const pathspec = await toGitPathspec(gitRoot, requestedPath);
3135
- const objectSpec = source === 'index' ? `:${pathspec}` : `${ref}:${pathspec}`;
3136
- const result = await execGitLimited(['show', objectSpec], gitRoot, MAX_FILE_SIZE, false, controller.signal);
3166
+ const resolvedRef = source === 'merge-base'
3167
+ ? (await execGit(['merge-base', ...comparisonRefs], gitRoot, controller.signal)).trim()
3168
+ : ref;
3169
+ const objectSpec = source === 'index' ? `:${pathspec}` : `${resolvedRef}:${pathspec}`;
3170
+ const result = await execGitLimited(source === 'blob' ? ['cat-file', 'blob', ref] : ['show', objectSpec], gitRoot, MAX_FILE_SIZE, false, controller.signal);
3137
3171
  logFsIo({ id: requestId, action: 'git_blob', op: 'git.blob', startedAt, status: 'ok', path: requestedPath, cwd, repoRoot: gitRoot, bytes: Buffer.byteLength(result.stdout), truncated: result.truncated });
3138
3172
  res.json({
3139
3173
  path: requestedPath,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termdock",
3
- "version": "1.4.274",
3
+ "version": "1.4.276",
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.274",
4
+ "version": "1.4.276",
5
5
  "runtimeProtocolVersion": 1,
6
6
  "minimumDesktopVersion": "1.4.46",
7
7
  "nodeMajor": 22,
8
8
  "dependencyHash": "sha256-K4KyYJuVoQDpZsBM8ZX1Rw3MddOxAzVdp/cPm0iGZz0=",
9
- "serverBundleHash": "sha256-4mcltZx5g7gibQOk8jNr8OFMmVnETGXDfn7kAejmJ5I=",
10
- "clientBundleHash": "sha256-cE6rn5yVzX7XU1bYVfxZY5W7ibXioIzJGtYmKEhlE+k=",
9
+ "serverBundleHash": "sha256-HwPRuCjWpwmumCYsSWHWeFwrycQ06MlJiEphf9gc9X4=",
10
+ "clientBundleHash": "sha256-y6/rYM5MvrHmfcfc/Jh5AG8ymm3kgilSPgfbcNj4UpU=",
11
11
  "entrypoint": "dist/server/cli.js",
12
12
  "clientEntrypoint": "dist/client/index.html"
13
13
  }
@@ -1 +0,0 @@
1
- import{a5 as Ye,bh as r,d as dt,c as ft,cL as ht,cW as mt,ak as pt,a as xt,cV as gt,bz as vt,X as bt}from"./app-D83E7C03.js";import{b as o,r as Je}from"./dnd-BCFAPC0L.js";import{h as Ze,F as yt,b as wt,c as Ke}from"./gestureArbiter-DuZwkHF0.js";import{S as et}from"./sparkles-CWkaqdcm.js";import{D as kt,i as Rt}from"./DiffViewer-sF09Yuq0.js";const jt=[["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"M3 10a2 2 0 0 0 2 2h3",key:"1npucw"}],["path",{d:"M3 5v12a2 2 0 0 0 2 2h3",key:"x1gjn2"}]],Nt=Ye("list-tree",jt);const Mt=[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]],Tt=Ye("list",Mt);function tt({selected:t,depth:n=0,title:c,leading:m,children:h,trailing:i,role:y,tabIndex:x,ariaExpanded:g,onClick:f,onKeyDown:b,onPointerDown:L,onPointerUp:M,onPointerCancel:F,dataAttributes:G}){return r.jsxs("div",{role:y,tabIndex:x,"aria-expanded":g,title:c,onClick:f,onKeyDown:b,onPointerDown:L,onPointerUp:M,onPointerCancel:F,...G,className:`group flex w-full cursor-pointer items-center gap-1 rounded px-2 py-1.5 text-left text-[13px] transition active:scale-[0.99] ${t?"bg-surface-elevated text-foreground":"text-muted-foreground hover:bg-surface-2 hover:text-foreground"}`,style:{paddingLeft:`${n*14+8}px`},children:[r.jsx("span",{className:"flex min-w-[14px] shrink-0 items-center justify-center text-muted-foreground/80",children:m}),r.jsx("span",{className:"min-w-0 flex-1",children:h}),i]})}function rt(t){return t.path.replace(/^\/+/,"")}function Dt(t){if(t.displayName!==void 0||t.displayDir!==void 0)return{name:t.displayName||t.path,dir:t.displayDir||""};const n=t.path.split("/").filter(Boolean);return{name:n.pop()||t.path,dir:n.join("/")}}function nt(t,n){const c=new Map,m=(i,y,x,g)=>{const f=i.get(y);if(f)return f;const b={path:x,name:y,childCount:0,directories:[],files:[]};return i.set(y,b),g?.directories.push(b),b};for(const i of t){const y=n(i).split("/").filter(Boolean);if(y.length<=1)continue;let x=c,g=null,f="";for(const b of y.slice(0,-1)){f=f?`${f}/${b}`:b;const L=m(x,b,f,g);g=L,x=new Map(L.directories.map(M=>[M.name,M]))}g?.files.push(i)}const h=i=>{const y=i.directories.map(h).sort((g,f)=>g.name.localeCompare(f.name)),x=i.files.sort((g,f)=>g.path.localeCompare(f.path));return{...i,directories:y,files:x,childCount:y.reduce((g,f)=>g+f.childCount,0)+x.length}};return Array.from(c.values()).map(h).sort((i,y)=>i.name.localeCompare(y.name))}function Pe(t,n,c=0){const m=n.selectedKey===t.key||n.selectedKey===t.path||n.selectedKey===t.absolutePath,h=Dt(t);return r.jsx(tt,{selected:m,role:"button",tabIndex:0,title:t.title??t.absolutePath??t.path,onClick:()=>{Ze()||n.onSelectFile(t)},onKeyDown:i=>{i.key!=="Enter"&&i.key!==" "||(i.preventDefault(),n.onSelectFile(t))},leading:n.renderLeading(t),depth:c,trailing:n.renderTrailing?.(t),dataAttributes:{"data-diff-selection-path":t.key,"data-diff-file-path":t.path,"data-diff-absolute-path":t.absolutePath??"","data-diff-status":t.status},children:r.jsxs("span",{className:"select-text","data-sidebar-selectable":!0,children:[r.jsx("span",{className:`block truncate leading-snug ${m?"font-medium":""}`,children:h.name}),n.mode!=="tree"&&h.dir&&r.jsx("span",{className:"block truncate text-[10px] text-muted-foreground/75",children:h.dir}),n.renderSubtitle?.(t)]})},t.key)}function st(t,n,c,m,h){let i=t;const y=[t.name];for(;i.files.length===0&&i.directories.length===1;)i=i.directories[0],y.push(i.name);const x=y.join("/"),g=`${n}:${i.path}`,f=c.collapsedDirectoryKeys.has(g);return r.jsxs("div",{className:"space-y-px",children:[r.jsx(tt,{role:"button",tabIndex:0,onClick:()=>{Ze()||c.onToggleDirectory(g)},onKeyDown:b=>{b.key!=="Enter"&&b.key!==" "||(b.preventDefault(),c.onToggleDirectory(g))},ariaExpanded:!f,depth:m,title:i.path,leading:f?r.jsx(dt,{size:13}):r.jsx(ft,{size:13}),trailing:r.jsxs("span",{className:"flex shrink-0 items-center gap-1",children:[r.jsx("span",{className:"shrink-0 rounded bg-surface-2 px-1.5 py-0.5 text-[10px] text-muted-foreground/60 transition group-hover:text-muted-foreground",children:i.childCount}),c.renderDirectoryTrailing?.(i.path,h)]}),children:r.jsxs("span",{className:"flex min-w-0 items-center gap-1",children:[r.jsx(yt,{size:14,className:"shrink-0 text-[color:var(--folder)]"}),r.jsx("span",{className:"min-w-0 flex-1 truncate leading-snug select-text","data-sidebar-selectable":!0,children:x})]})}),!f&&r.jsxs("div",{className:"space-y-px",children:[i.directories.map(b=>st(b,n,c,m+1,h)),i.files.length>0&&r.jsx("div",{className:"space-y-px",children:i.files.map(b=>Pe(b,c,m+1))})]})]},g)}function St(t,n){const c=n.getFileTreePath??rt,m=t.files.filter(i=>c(i).split("/").filter(Boolean).length<=1),h=nt(t.files,c);return r.jsxs("div",{className:"space-y-px",children:[h.map(i=>st(i,t.key,n,0,t)),m.length>0&&r.jsx("div",{className:"space-y-px",children:m.map(i=>Pe(i,n))})]})}function It(t,n=rt){const c=[],m=i=>{for(const y of i.directories)m(y);c.push(...i.files)};for(const i of nt(t,n))m(i);const h=new Set(c.map(i=>i.key));return c.push(...t.filter(i=>!h.has(i.key))),c}function Et(t){return r.jsx("div",{className:t.mode==="tree"?"space-y-px pt-1":"space-y-2",children:t.groups.map(n=>{const c=!!n.header,m=!!n.collapsed;return r.jsxs("section",{className:c?"overflow-hidden rounded-lg border border-border/15 bg-surface/60":"",children:[n.header,!m&&r.jsx("div",{className:t.mode==="tree"?c?"space-y-px bg-surface/60 p-1":"space-y-px":c?"space-y-px bg-surface/60 p-1.5":"space-y-px",children:t.mode==="tree"?St(n,t):n.files.map(h=>Pe(h,t))})]},n.key)})})}const Ce="termdock:diff-review:list-width:v1",Ct=120,He=320,qe=220,Ft=560;function _t(t){return typeof t=="number"&&Number.isFinite(t)}function Ue(t,n){const c=Math.max(qe,n-360),m=Math.min(Ft,c);return Math.min(m,Math.max(qe,t))}function At(){return vt(Ce,_t)??He}function zt({list:t,detail:n,mobile:c,mobileListHeader:m,mobileDetailHeader:h,desktopListHeader:i,backLabel:y,onMobileSlideChange:x,externalSwiperRef:g,desktopLayout:f="split",onDetailScroll:b,desktopSidePanel:L,desktopListClassName:M,detailOwnsScroll:F=!1}){const{t:G}=ht(),W=o.useRef(null),q=o.useRef(null),E=o.useRef(null),[X,U]=o.useState(At);o.useEffect(()=>{if(c||f!=="split")return;const p=q.current;p&&U(j=>Ue(j,p.clientWidth))},[f,c]);const re=o.useCallback(p=>{c||f!=="split"||(p.preventDefault(),E.current={startX:p.clientX,startWidth:X,pointerId:p.pointerId},p.currentTarget.setPointerCapture(p.pointerId))},[f,X,c]),le=o.useCallback(p=>{const j=E.current;if(!j||j.pointerId!==p.pointerId)return;const T=q.current?.clientWidth??window.innerWidth,D=Ue(j.startWidth+p.clientX-j.startX,T);U(D),mt(Ce,D,Ct)},[]),ne=o.useCallback(p=>{const j=E.current;if(!(!j||j.pointerId!==p.pointerId)){E.current=null,pt(Ce);try{p.currentTarget.releasePointerCapture(p.pointerId)}catch{}}},[]);if(c){const p=()=>{const v=W.current;v&&v.slideTo(1)},j=()=>{const v=W.current;v&&v.slideTo(0)},T=typeof t=="function"?t({slideToDetail:p}):t,D=typeof h=="function"?h({slideToList:j,slideToDetail:p}):h;return r.jsxs(wt,{className:"h-full min-h-0 w-full",slidesPerView:1,resistanceRatio:.45,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:".swiper-no-swiping",allowTouchMove:!1,touchAngle:75,touchStartPreventDefault:!1,onSwiper:v=>{W.current=v,g&&(g.current=v)},onSlideChange:v=>{x?.(v.activeIndex)},children:[r.jsx(Ke,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[m&&r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:m}),r.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain",children:T})]})}),r.jsx(Ke,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden bg-surface",children:[r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:D??r.jsxs("button",{type:"button",onClick:j,className:"inline-flex h-9 shrink-0 items-center gap-1.5 rounded-full bg-surface-2 px-3 text-xs font-semibold text-muted-foreground transition hover:bg-surface-elevated hover:text-foreground active:scale-95",children:[r.jsx(xt,{size:14}),y]})}),r.jsx("div",{className:F?"min-h-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-h-0 flex-1 overflow-y-auto overscroll-contain",onScroll:F?void 0:v=>b?.(v.currentTarget),children:n})]})})]})}const B=typeof t=="function"?t({slideToDetail:()=>{}}):t;return f==="stacked"?F?r.jsxs("div",{className:"termdock-native-select min-h-0 flex-1 overflow-hidden px-2 pb-[calc(env(safe-area-inset-bottom)+4.5rem)]",children:[i&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:i}),B,r.jsx("div",{className:"mt-3 h-[calc(100%-3rem)] min-h-0 overflow-hidden rounded-xl border border-border/15 bg-surface",children:n})]}):r.jsxs("div",{className:"termdock-native-select termdock-diff-stream-scroller min-h-0 flex-1 overflow-y-auto overscroll-contain px-2 pb-[calc(env(safe-area-inset-bottom)+4.5rem)]",onScroll:p=>b?.(p.currentTarget),children:[i&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:i}),B,r.jsx("div",{className:"mt-3 overflow-hidden rounded-xl border border-border/15 bg-surface",children:n})]}):r.jsxs("div",{ref:q,className:"flex h-full min-h-0 overflow-hidden",children:[L,r.jsxs("div",{className:M??"shrink-0 overflow-y-auto overscroll-contain border-r border-border/15 bg-surface",style:{width:X},children:[i&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:i}),B]}),r.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":G("diffViewer.resizeNavigation"),title:G("diffViewer.resizeNavigation"),className:"group relative z-10 w-2 shrink-0 cursor-col-resize touch-none border-r border-border/15 bg-surface",onPointerDown:re,onPointerMove:le,onPointerUp:ne,onPointerCancel:ne,onDoubleClick:()=>{U(He),gt(Ce,He)},children:r.jsx("span",{className:"pointer-events-none absolute inset-y-0 left-1/2 w-px -translate-x-1/2 bg-border/30 transition group-hover:bg-primary/60"})}),r.jsx("div",{className:F?"min-w-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-w-0 flex-1 overflow-y-auto overscroll-contain",onScroll:F?void 0:p=>b?.(p.currentTarget),children:n})]})}function Lt({mode:t,onModeChange:n,showAi:c=!1}){return r.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-md bg-surface-2 p-0.5",children:[r.jsx("button",{type:"button",onClick:()=>n("list"),"aria-pressed":t==="list",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="list"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Tt,{size:13})}),r.jsx("button",{type:"button",onClick:()=>n("tree"),"aria-pressed":t==="tree",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="tree"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Nt,{size:13})}),c&&r.jsx("button",{type:"button",onClick:()=>n("ai"),"aria-pressed":t==="ai",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="ai"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(et,{size:13})})]})}function Ht({groups:t,mode:n,onModeChange:c,selectedKey:m,collapsedDirectoryKeys:h,onToggleDirectory:i,onSelectFile:y,renderLeading:x,renderTrailing:g,renderDirectoryTrailing:f,renderSubtitle:b,detail:L,mobile:M,backLabel:F,compact:G=!1,emptyContent:W,listPrefix:q,aiContent:E,listContainerClassName:X="px-2 py-2",detailContainerClassName:U="termdock-native-select termdock-diff-stream-scroller min-h-0",renderListHeader:re,renderMobileDetailHeader:le,externalSwiperRef:ne,onMobileSlideChange:B,slideToDetailOnMobile:p=!0,desktopLayout:j="split",onDetailScroll:T,desktopSidePanel:D,desktopListClassName:v,detailOwnsScroll:ue}){const[H,se]=o.useState(!1);o.useEffect(()=>{if(!H)return;const z=_=>{_.key==="Escape"&&se(!1)};return document.addEventListener("keydown",z),()=>document.removeEventListener("keydown",z)},[H]);const de=r.jsx(Lt,{mode:n,onModeChange:c,showAi:!!E}),ke=n==="tree"?"tree":"list",fe=re?re(de):r.jsx("div",{className:"flex justify-end",children:de}),oe=t.some(z=>z.files.length>0),O=r.jsx(zt,{mobile:H?!1:M,backLabel:F,externalSwiperRef:ne,onMobileSlideChange:B,desktopLayout:H?"split":j,onDetailScroll:T,desktopSidePanel:D,desktopListClassName:v,detailOwnsScroll:ue,mobileListHeader:M?fe:void 0,desktopListHeader:M?void 0:fe,mobileDetailHeader:le,list:({slideToDetail:z})=>r.jsx("div",{className:X,children:n==="ai"?typeof E=="function"?E({slideToDetail:z,fullscreen:H,toggleFullscreen:()=>se(_=>!_)}):E??W:r.jsxs(r.Fragment,{children:[q,oe?r.jsx(Et,{groups:t,selectedKey:m,mode:ke,mobile:M,compact:G,collapsedDirectoryKeys:h,onToggleDirectory:i,onSelectFile:_=>{y(_),M&&p&&window.requestAnimationFrame(z)},renderLeading:x,renderTrailing:g,renderDirectoryTrailing:f,renderSubtitle:b}):W]})}),detail:r.jsx("div",{className:ue?"h-full min-h-0":U,children:L})});return!H||typeof document>"u"?O:Je.createPortal(r.jsxs("div",{className:"fixed inset-0 z-modal-panel flex min-h-0 flex-col bg-surface text-foreground",children:[r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b border-border/15 bg-[var(--chrome-bg)] px-3",children:[r.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[r.jsx(et,{size:15,className:"shrink-0 text-primary"}),r.jsx("span",{className:"truncate text-[12px] font-semibold",children:"DAG Review"}),r.jsx("span",{className:"hidden text-[10px] text-muted-foreground sm:inline",children:"Select a step to inspect its exact change"})]}),r.jsx("button",{type:"button",onClick:()=>se(!1),className:"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95",title:"Exit full-screen DAG review (Esc)","aria-label":"Exit full-screen DAG review",children:r.jsx(bt,{size:16})})]}),r.jsx("div",{className:"min-h-0 flex-1",children:O})]}),document.body)}const Pt=96,ze=44;function Wt({file:t,repoRoot:n,selectionPath:c,displayName:m,displayDir:h,selected:i,activePane:y,visible:x,reusableContent:g=!1,estimatedHeight:f,lightweight:b=!1,wrap:L,viewType:M,inlineMode:F,diffOptions:G,reloadKey:W=0,auditRecords:q,diffOverride:E,preparedDiff:X,renderBadge:U,onInsertDiffReference:re,onHunkGitAction:le,previewReverts:ne,onReferenceCopied:B,insertedReferenceKey:p,copiedReferenceKey:j,onClearAuditRecord:T,onContentReady:D,onHeightChange:v}){const ue=o.useRef(null),H=o.useRef(null),se=o.useRef(null),[de,ke]=o.useState(null),fe=o.useRef(64),oe=o.useRef(f??104),O=o.useRef(null),z=o.useRef(null),_=o.useRef(!1),Z=o.useRef(!1),P=o.useRef(null),[K,he]=o.useState(!1),[Re,Se]=o.useState(!1),je=t.absolutePath||(n?`${n}/${t.path}`:t.path),ce=o.useCallback(()=>{Z.current||(Z.current=!0,Se(!0),D?.(c))},[D,c]);o.useLayoutEffect(()=>{if(!(E!==void 0&&x&&Z.current))return _.current=!1,Z.current=!1,O.current=null,z.current=null,P.current!==null&&(window.clearTimeout(P.current),P.current=null),he(!1),Se(!1),()=>{P.current!==null&&(window.clearTimeout(P.current),P.current=null)}},[E,X,W,g,x]),o.useLayoutEffect(()=>{const I=O.current;!K||I===null||Math.abs((f??104)-I)>=1||(O.current=null,ce())},[ce,f,K]),o.useLayoutEffect(()=>{if(!x||!K)return;const I=se.current;if(!I)return;const Ne=()=>{if(!_.current)return;const xe=I.firstElementChild;if(!xe)return;const $=Math.ceil(Math.max(xe.getBoundingClientRect().height,xe.scrollHeight,64)),me=fe.current;if($>0&&me!==$&&(fe.current=$,ke($)),!ue.current)return;const Q=H.current?.getBoundingClientRect().height??ze,S=Math.ceil(Q+$+1);S<=0||z.current===S||(z.current=S,P.current!==null&&window.clearTimeout(P.current),P.current=window.setTimeout(()=>{if(P.current=null,!_.current)return;const A=z.current;if(A===null)return;const ie=oe.current;if(Z.current){oe.current=A,Math.abs(ie-A)>=1&&v?.(c,ie,A),D?.(c);return}if(O.current=A,Math.abs(ie-A)<1||!v){oe.current=A,O.current=null,ce();return}oe.current=A,v(c,ie,A)},Pt))};if(Ne(),typeof ResizeObserver>"u")return;const ae=new ResizeObserver(Ne);return ae.observe(I),I.firstElementChild&&ae.observe(I.firstElementChild),H.current&&ae.observe(H.current),()=>ae.disconnect()},[ce,D,v,c,K,x,L,M,F]);const C=x&&!Re;return r.jsxs("div",{ref:ue,"data-diff-stream-item":c,"data-diff-selection-path":c,"data-diff-file-path":t.path,"data-diff-absolute-path":je,className:`scroll-mt-3 border-b border-border/15 last:border-b-0 ${C||!x?"overflow-hidden":""} ${i?"bg-surface-elevated/35":""}`,style:x?C?{height:f??104}:void 0:{height:f??104},children:[r.jsxs("div",{ref:H,"data-diff-stream-header":!0,className:`sticky top-0 z-10 flex min-w-0 items-center gap-2 border-b border-border/15 px-3 py-2 ${i?"bg-surface-elevated":"bg-surface"}`,children:[U(t.status),r.jsxs("div",{className:"min-w-0 flex-1",title:je,children:[r.jsx("div",{className:"truncate text-xs font-semibold text-foreground",children:m}),h&&r.jsx("div",{className:"truncate text-[10px] text-muted-foreground",children:h})]})]}),r.jsxs("div",{ref:se,className:"relative","data-diff-stream-body":!0,style:x?{minHeight:Re?64:Math.max(de??64,(f??104)-ze)}:{height:Math.max(de??64,(f??104)-ze)},children:[x?r.jsx(kt,{active:y,repoRoot:n,filePath:t.path,referenceFilePath:je,changedFile:t,wrap:L,viewType:M,inlineMode:F,diffOptions:G,reloadKey:W,embedded:!0,lightweight:b,auditRecords:q,diffOverride:E,preparedDiff:X,onClearAuditRecord:T,onContentReady:()=>{if(g){_.current=!0,he(!0),ce();return}_.current||(_.current=!0,he(!0))},onInsertDiffReference:re,onHunkGitAction:le,previewReverts:ne,onReferenceCopied:B,insertedReferenceKey:p,copiedReferenceKey:j}):r.jsx("div",{className:"flex h-full min-h-16 items-center justify-center bg-surface px-3 py-4 text-center text-xs text-muted-foreground",children:t.path}),x&&K&&!Re&&r.jsx("div",{"data-diff-measuring-overlay":!0,className:"absolute inset-0 z-20 bg-surface"})]})]})}const Oe=8,Le=1600,Qe=104,Bt=1e3,we=new Map;function $t(t,n){for(we.delete(t),we.set(t,n);we.size>Bt;){const c=we.keys().next().value;if(c===void 0)break;we.delete(c)}}function Vt(t,n){return!!(t&&t.diffOverride===n.diffOverride&&t.reloadKey===n.reloadKey&&t.wrap===n.wrap&&t.viewType===n.viewType&&t.inlineMode===n.inlineMode&&t.algorithm===n.algorithm&&t.whitespace===n.whitespace&&t.context===n.context)}const Gt={added:{label:"A",className:"text-[color:var(--diff-insert-strong)]",title:"Added"},modified:{label:"M",className:"text-[color:var(--diff-hunk-accent)]",title:"Modified"},deleted:{label:"D",className:"text-[color:var(--diff-delete-strong)]",title:"Deleted"},renamed:{label:"R",className:"text-muted-foreground",title:"Renamed"},copied:{label:"C",className:"text-[color:var(--diff-insert-strong)]",title:"Copied"},untracked:{label:"U",className:"text-[color:var(--diff-insert-strong)]",title:"Untracked (new file)"},conflicted:{label:"!",className:"text-destructive",title:"Conflicted"},unknown:{label:"?",className:"text-muted-foreground",title:"Unknown"}};function Zt({status:t}){const n=Gt[t]??{label:"?",className:"text-muted-foreground",title:t};return r.jsx("span",{className:`w-4 shrink-0 text-center text-[10px] font-mono font-bold ${n.className}`,title:n.title,children:n.label})}function er(t,n){return n?{key:n,nonce:t.nonce+1}:t}function tr({files:t,groups:n,selectedKey:c,onSelectFile:m,mode:h,onModeChange:i,collapsedDirectoryKeys:y,onToggleDirectory:x,renderLeading:g,renderTrailing:f,renderDirectoryTrailing:b,renderSubtitle:L,renderStreamBadge:M,onInsertDiffReference:F,onHunkGitAction:G,onReferenceCopied:W,insertedReferenceKey:q,copiedReferenceKey:E,onClearAuditRecord:X,mobile:U,backLabel:re,compact:le,desktopLayout:ne,wrap:B,diffViewType:p,inlineMode:j,diffOptions:T,activePane:D,reloadKey:v=0,renderListHeader:ue,renderMobileDetailHeader:H,emptyContent:se,listPrefix:de,aiContent:ke,listContainerClassName:fe,detailContainerClassName:oe,desktopSidePanel:O,desktopListClassName:z,onDetailScroll:_,initialDetailScrollTop:Z,preserveScrollOnUpdate:P=!1,scrollToKey:K,scrollToKeyNonce:he=0,externalSwiperRef:Re,onMobileSlideChange:Se,slideToDetailOnMobile:je}){const ce=o.useMemo(()=>e=>c===e.key||c===e.path||c===e.absolutePath,[c]),C=o.useMemo(()=>{const e=new Map;for(const a of t)e.set(a.key,a),a.path&&e.set(a.path,a),a.absolutePath&&e.set(a.absolutePath,a);const s=[],l=new Set;for(const a of n){const d=h==="tree"?It(a.files):a.files;for(const w of d){const u=e.get(w.key);!u||l.has(u.key)||(s.push(u),l.add(u.key))}}for(const a of t)l.has(a.key)||s.push(a);return s},[t,n,h]),I=o.useRef(null),Ne=o.useRef(null),ae=o.useRef(null),xe=o.useRef(v),$=o.useRef(0),me=o.useRef(null),ge=o.useRef(new Map(we)),Q=o.useRef({key:null,top:0}),S=o.useRef(new Set),A=o.useRef(new Map),ie=o.useRef(new Map),V=o.useRef(null),We=o.useRef(()=>{}),Me=o.useRef([]),pe=o.useRef(new Map),Be=o.useRef({tops:[],heights:[],bottom:0}),[Ie,ot]=o.useState(()=>new Set),[ct,at]=o.useState(0),[Y,ve]=o.useState({top:0,height:0}),Te=o.useMemo(()=>C.map(e=>e.key),[C]),Ee=Te.join("");ie.current=o.useMemo(()=>new Map(C.map(e=>[e.key,{diffOverride:e.diffOverride,reloadKey:v,wrap:B,viewType:p,inlineMode:j,algorithm:T?.algorithm,whitespace:T?.whitespace,context:T?.context}])),[C,v,B,p,j,T?.algorithm,T?.whitespace,T?.context]),Me.current=Te,pe.current=o.useMemo(()=>new Map(Te.map((e,s)=>[e,s])),[Te]);const k=o.useMemo(()=>{const e=Te.map(a=>ge.current.get(a)??Qe),s=new Array(e.length);for(let a=0;a<e.length;a+=1)s[a]=a===0?0:s[a-1]+e[a-1];const l=e.length>0?s[e.length-1]+e[e.length-1]:0;return{tops:s,heights:e,bottom:l}},[ct,Ee]);Be.current=k;const ee=o.useMemo(()=>K?C.find(e=>K===e.key||K===e.path||K===e.absolutePath)?.key??null:null,[C,K]),Fe=o.useMemo(()=>c?C.find(e=>c===e.key||c===e.path||c===e.absolutePath)?.key??null:null,[C,c]),De=o.useMemo(()=>{const e=k.tops.length;if(e===0)return-1;let s=0,l=e;for(;s<l;){const a=Math.floor((s+l)/2);k.tops[a]<=Y.top+1?s=a+1:l=a}return Math.min(e-1,Math.max(0,s-1))},[k.tops,Y.top]),te=o.useCallback(e=>{S.current=e,ot(e)},[]),$e=o.useMemo(()=>{const e=Y.top-Le,s=Y.top+Y.height+Le,l=new Set;let a=0,d=k.tops.length;for(;a<d;){const u=Math.floor((a+d)/2);k.tops[u]<=e?a=u+1:d=u}const w=Math.max(0,a-1);for(let u=w;u<k.tops.length;u+=1){const R=k.tops[u];if(R>s)break;R+k.heights[u]>=e&&R<=s&&l.add(u)}for(let u=De-1;u<=De+1;u+=1)u>=0&&u<k.tops.length&&l.add(u);for(const u of Ie){const R=pe.current.get(u);R!==void 0&&l.add(R)}return Array.from(l).sort((u,R)=>u-R)},[k,Y,Ie,De]),_e=o.useCallback(()=>{if(!D||V.current)return;const e=Me.current;if(e.length===0)return;const s=Q.current.key,l=Math.min(e.length-1,(s!==null?pe.current.get(s):void 0)??Math.max(0,De)),a=u=>Math.abs((pe.current.get(u)??0)-l),d=[];S.current.has(e[l])||d.push(e[l]);for(let u=1;u<=Oe;u+=1){const R=l+u,N=l-u;R<e.length&&!S.current.has(e[R])&&d.push(e[R]),N>=0&&!S.current.has(e[N])&&d.push(e[N])}const w=d[0];if(w){if(S.current.size>=Oe){const u=a(w),R=Array.from(S.current).filter(J=>J!==V.current).sort((J,ye)=>a(ye)-a(J))[0];if(!R||a(R)<=u)return;const N=new Set(S.current);N.delete(R),te(N)}V.current=w,te(new Set(S.current).add(w))}},[D,te,De]);We.current=_e;const be=o.useCallback(e=>{if(S.current.has(e))return;const s=V.current;if(s&&s!==e){const l=new Set(S.current);l.delete(s),te(l),V.current=null}V.current=e,te(new Set(S.current).add(e))},[te]),Ve=o.useCallback(e=>{if(!S.current.has(e))return;const s=ie.current.get(e);s&&A.current.set(e,s),V.current===e&&(V.current=null),window.requestAnimationFrame(()=>We.current())},[]),Ge=o.useCallback((e,s,l)=>{if(Math.abs(l-s)<1)return;const a=ge.current.get(e);a!==void 0&&Math.abs(a-l)<1||(ge.current.set(e,l),$t(e,l),at(d=>d+1))},[]);o.useLayoutEffect(()=>{if(xe.current!==v){xe.current=v;for(const e of C){if(e.diffOverride!==void 0)continue;const s=qt(e.path,e.repoRoot);Rt(s,e.repoRoot??void 0,T)}}},[C,T,v]),o.useLayoutEffect(()=>{const e=I.current;if(!e)return;const s=()=>{const a=Math.max(0,Math.ceil(e.clientHeight));if(a===0)return;const d=e.scrollTop;ve(w=>w.height===a&&w.top===d?w:{top:d,height:a})};if(s(),typeof ResizeObserver>"u")return;const l=new ResizeObserver(s);return l.observe(e),()=>l.disconnect()},[U]),o.useEffect(()=>{D&&Fe&&be(Fe)},[D,be,Fe]),o.useEffect(()=>{const e=new Set(Me.current);for(const s of Array.from(ge.current.keys()))e.has(s)||ge.current.delete(s);for(const s of Array.from(S.current))if(!e.has(s)){const l=new Set(S.current);l.delete(s),te(l)}for(const s of Array.from(A.current.keys()))e.has(s)||A.current.delete(s);if(V.current&&!e.has(V.current)&&(V.current=null),C.length===0){V.current=null,A.current.clear(),te(new Set);return}_e()},[C.length,Ee,_e,$e,te]);const Xe=o.useCallback(e=>{I.current=e;const s=$.current,l=e.scrollTop;$.current=l;const a=d=>{const w=Be.current,u=Me.current;let R=0,N=w.tops.length;for(;R<N;){const Ae=Math.floor((R+N)/2);w.tops[Ae]<=d+1?R=Ae+1:N=Ae}const J=Math.min(u.length-1,Math.max(0,R-1)),ye=u[J]??null;Q.current={key:ye,top:w.tops[J]??0},ye&&be(ye)};Math.abs(l-s)>=Le?(Je.flushSync(()=>{ve({top:l,height:e.clientHeight})}),a(l)):me.current===null&&(me.current=window.requestAnimationFrame(()=>{me.current=null;const d=I.current;if(d){const w=d.scrollTop;ve({top:w,height:d.clientHeight}),a(w)}})),_?.(e)},[_,be]);o.useEffect(()=>()=>{me.current!==null&&window.cancelAnimationFrame(me.current)},[]),o.useLayoutEffect(()=>{const e=I.current;if(!e)return;const s=Q.current;if(s.key===null)return;const l=pe.current.get(s.key);if(l===void 0)return;const a=(k.tops[l]??s.top)-s.top;if(Math.abs(a)<1)return;const d=e.scrollTop+a;$.current=d,ve(w=>({top:d,height:w.height})),typeof e.scrollTo=="function"?e.scrollTo({top:d,behavior:"instant"}):e.scrollTop=d},[k]),o.useLayoutEffect(()=>{const e=Me.current,s=k.tops;if(e.length===0){Q.current={key:null,top:0};return}const l=$.current,a=l+(I.current?.clientHeight??Y.height),d=Q.current;if(d.key!==null){const N=pe.current.get(d.key);if(N!==void 0){const J=s[N]??0;if(J+(k.heights[N]??Qe)>l&&J<a){Q.current={key:d.key,top:J};return}}}let w=0,u=s.length;for(;w<u;){const N=Math.floor((w+u)/2);s[N]<=l+1?w=N+1:u=N}const R=Math.min(s.length-1,Math.max(0,w-1));Q.current={key:e[R]??null,top:s[R]??0}}),o.useLayoutEffect(()=>{if(!ee)return;const e=Ne.current;if(e?.key===ee&&e.nonce===he)return;const s=pe.current.get(ee);if(s===void 0)return;be(ee),Q.current={key:ee,top:k.tops[s]??0};const l=I.current;if(!l||l.clientHeight===0||Y.height!==l.clientHeight)return;Ne.current={key:ee,nonce:he};const a=k.tops[s]??0;typeof l.scrollTo=="function"?l.scrollTo({top:a,behavior:"instant"}):l.scrollTop=a;const d=l.scrollTop;$.current=d,ve({top:d,height:l.clientHeight})},[k,Y.height,be,ee,he]),o.useLayoutEffect(()=>{if(Z===void 0||ee)return;const e=Ee;if(ae.current===e||P&&ae.current!==null)return;const s=I.current;if(!s)return;ae.current=e;const l=Math.max(0,k.bottom-s.clientHeight),a=Math.min(Math.max(0,Z),l);typeof s.scrollTo=="function"?s.scrollTo({top:a,behavior:"instant"}):s.scrollTop=a;const d=s.scrollTop;$.current=d,ve({top:d,height:s.clientHeight})},[k.bottom,Z,Ee,P,ee]);const it=o.useCallback((e,s)=>{const l=ce(e),a=ie.current.get(e.key),d=a!==void 0&&Vt(A.current.get(e.key),a);return r.jsx(Xt,{item:e,repoRoot:e.repoRoot,selectionPath:e.key,displayName:e.displayName,displayDir:e.displayDir,selected:l,activePane:D,visible:Ie.has(e.key),reusableContent:d,estimatedHeight:s,lightweight:!1,wrap:B,viewType:p,inlineMode:j,diffOptions:T,reloadKey:v,auditRecords:e.auditRecords,diffOverride:e.diffOverride,renderStreamBadge:M,onInsertDiffReference:e.onInsertDiffReference??F,onHunkGitAction:e.onHunkGitAction??G,previewReverts:e.previewReverts,onReferenceCopied:W,insertedReferenceKey:q,copiedReferenceKey:E,onClearAuditRecord:X,onContentReady:Ve,onHeightChange:Ge})},[D,E,T,p,Ve,Ge,j,q,ce,Ie,X,G,F,W,v,M,B]),lt=r.jsx("div",{"data-diff-stream-content":!0,"data-diff-stream-canvas":!0,className:"termdock-diff-stream relative overflow-clip bg-surface will-change-transform",style:{height:Math.max(k.bottom,(k.tops.at(-1)??0)+Y.height)},children:$e.map(e=>{const s=C[e];return s?r.jsx("div",{"data-diff-canvas-slot":s.key,className:"absolute inset-x-0",style:{top:k.tops[e]},children:it(s,k.heights[e])},s.key):null})}),ut=r.jsx("div",{ref:I,className:"termdock-diff-stream termdock-diff-stream-scroller h-full max-h-full min-h-0 overflow-y-auto overscroll-contain bg-surface [overflow-anchor:none]",onScroll:e=>Xe(e.currentTarget),children:lt});return r.jsx(Ht,{groups:n,mode:h,onModeChange:i,selectedKey:c,collapsedDirectoryKeys:y,onToggleDirectory:x,onSelectFile:m,renderLeading:g,renderTrailing:f,renderDirectoryTrailing:b,renderSubtitle:L,detail:ut,mobile:U,backLabel:re,compact:le,emptyContent:se,listPrefix:de,aiContent:ke,listContainerClassName:fe,detailContainerClassName:oe,renderListHeader:ue,renderMobileDetailHeader:H,externalSwiperRef:Re,onMobileSlideChange:Se,slideToDetailOnMobile:je,desktopLayout:ne,onDetailScroll:Xe,desktopSidePanel:O,desktopListClassName:z,detailOwnsScroll:!0})}const Xt=o.memo(function({item:n,renderStreamBadge:c,...m}){return r.jsx(Wt,{...m,file:Kt(n),renderBadge:h=>c(h,n)})});function Kt(t){return{path:t.path,absolutePath:t.absolutePath,status:t.status}}function qt(t,n){if(t)return n&&t.startsWith(`${n}/`)?t.slice(n.length+1):t}export{Zt as C,tr as D,Nt as L,It as f,er as n};