@band-app/server 0.32.0 → 0.34.0

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 (160) hide show
  1. package/dist/client/assets/{TerminalPanel-CSIo5ni0.js → TerminalPanel-BlzUBzmR.js} +1 -1
  2. package/dist/client/assets/{_basePickBy-CdaZY6mI.js → _basePickBy-78hIlKHL.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-Cbf2JylA.js → _baseUniq-C_y7bQp7.js} +1 -1
  4. package/dist/client/assets/addon-search-BvnuewQv.js +1 -0
  5. package/dist/client/assets/addon-unicode11-C7S6GMMR.js +1 -0
  6. package/dist/client/assets/{addon-webgl-q3t2iERs.js → addon-webgl-D9URxm_b.js} +5 -5
  7. package/dist/client/assets/{arc-93kXHiVA.js → arc-DHUj8i-C.js} +1 -1
  8. package/dist/client/assets/{architectureDiagram-VXUJARFQ-mXd7ilfO.js → architectureDiagram-VXUJARFQ-D4Gtstny.js} +1 -1
  9. package/dist/client/assets/{blockDiagram-VD42YOAC-DpjfCZDe.js → blockDiagram-VD42YOAC-BnvoqD8n.js} +1 -1
  10. package/dist/client/assets/{c4Diagram-YG6GDRKO-D17zktyo.js → c4Diagram-YG6GDRKO-B3kFa8rY.js} +1 -1
  11. package/dist/client/assets/channel-C2tC7nD9.js +1 -0
  12. package/dist/client/assets/{chunk-4BX2VUAB-UK3Q89L4.js → chunk-4BX2VUAB-Cry6RdNE.js} +1 -1
  13. package/dist/client/assets/{chunk-55IACEB6-DOnNiKCE.js → chunk-55IACEB6-B2Hcf4yS.js} +1 -1
  14. package/dist/client/assets/{chunk-B4BG7PRW-RuY3pvrs.js → chunk-B4BG7PRW-BqTOv_Q4.js} +1 -1
  15. package/dist/client/assets/{chunk-DI55MBZ5-CLkaHQD0.js → chunk-DI55MBZ5-BHJn8-Rw.js} +1 -1
  16. package/dist/client/assets/{chunk-FMBD7UC4-B2_FpfY1.js → chunk-FMBD7UC4-D2HIyXOe.js} +1 -1
  17. package/dist/client/assets/{chunk-QN33PNHL-BJ5cRImN.js → chunk-QN33PNHL-BSLNMHFq.js} +1 -1
  18. package/dist/client/assets/{chunk-QZHKN3VN-DWhBc9Ty.js → chunk-QZHKN3VN-BuBnSFe-.js} +1 -1
  19. package/dist/client/assets/{chunk-TZMSLE5B-C6dn9jrV.js → chunk-TZMSLE5B-DiQMwPjF.js} +1 -1
  20. package/dist/client/assets/classDiagram-2ON5EDUG-BWbZZspv.js +1 -0
  21. package/dist/client/assets/classDiagram-v2-WZHVMYZB-BWbZZspv.js +1 -0
  22. package/dist/client/assets/clone-BxWL4DUp.js +1 -0
  23. package/dist/client/assets/{cose-bilkent-S5V4N54A-CApk1lUu.js → cose-bilkent-S5V4N54A-Db5PXk3I.js} +1 -1
  24. package/dist/client/assets/{dagre-6UL2VRFP-BmLALXZu.js → dagre-6UL2VRFP-COrq1-o3.js} +1 -1
  25. package/dist/client/assets/{diagram-PSM6KHXK-C2cPLLkQ.js → diagram-PSM6KHXK-BEFxHLpj.js} +1 -1
  26. package/dist/client/assets/{diagram-QEK2KX5R-vmbBSzsB.js → diagram-QEK2KX5R-K9i-foPa.js} +1 -1
  27. package/dist/client/assets/{diagram-S2PKOQOG-RgcJYL9S.js → diagram-S2PKOQOG-5WsQ8w0M.js} +1 -1
  28. package/dist/client/assets/{erDiagram-Q2GNP2WA-CpoxBAoy.js → erDiagram-Q2GNP2WA-CzYts47e.js} +1 -1
  29. package/dist/client/assets/{flowDiagram-NV44I4VS-DxnlkHRY.js → flowDiagram-NV44I4VS-BHSMXKBN.js} +1 -1
  30. package/dist/client/assets/{ganttDiagram-JELNMOA3-DsnoA6Bi.js → ganttDiagram-JELNMOA3-lrI55nIi.js} +1 -1
  31. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-CRGiaUIP.js → gitGraphDiagram-V2S2FVAM-BR9i1nFI.js} +1 -1
  32. package/dist/client/assets/{graph-B0pjD7JO.js → graph-CHzn7hGd.js} +1 -1
  33. package/dist/client/assets/{highlighted-body-B3W2YXNL-B-sBG2bX.js → highlighted-body-B3W2YXNL-pf8CG4LE.js} +1 -1
  34. package/dist/client/assets/{index-DoBYcXmW.js → index-B1M1Nr1U.js} +1 -1
  35. package/dist/client/assets/{index-Ct8NuxSL.js → index-B3_tKObw.js} +1 -1
  36. package/dist/client/assets/{index-DHizjwkP.js → index-BFvt5Udm.js} +1 -1
  37. package/dist/client/assets/{index-ftqQmu5s.js → index-BZejpLSO.js} +1 -1
  38. package/dist/client/assets/{index-U5JB6u6d.js → index-C4WPBk8W.js} +1 -1
  39. package/dist/client/assets/{index-CrCMXmx8.js → index-CAapUiFF.js} +1 -1
  40. package/dist/client/assets/{index-THSuS9sd.js → index-C_k8X250.js} +1 -1
  41. package/dist/client/assets/{index-sHvOWbSE.js → index-Cg2goL7s.js} +1 -1
  42. package/dist/client/assets/{index-C08rV2E6.js → index-CprTy2ja.js} +1 -1
  43. package/dist/client/assets/{index-2xKJ9Khi.js → index-DOz7KiMS.js} +1 -1
  44. package/dist/client/assets/{index-TNsDOp6e.js → index-DRbvI3mJ.js} +1 -1
  45. package/dist/client/assets/{index-BuhLC7zE.js → index-iDhzXhLS.js} +1 -1
  46. package/dist/client/assets/{index-C5lac708.js → index-sjjEn2vn.js} +1 -1
  47. package/dist/client/assets/{infoDiagram-HS3SLOUP-CRp6iT8d.js → infoDiagram-HS3SLOUP-CPWEaaXS.js} +1 -1
  48. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-BQ2WA6b4.js → journeyDiagram-XKPGCS4Q-IpZXRX_B.js} +1 -1
  49. package/dist/client/assets/{kanban-definition-3W4ZIXB7-D-VXNhIi.js → kanban-definition-3W4ZIXB7-BcAUFQlt.js} +1 -1
  50. package/dist/client/assets/{layout-DqRyDMTL.js → layout-CIxVWn8u.js} +1 -1
  51. package/dist/client/assets/main-Bx2dZBHM.css +1 -0
  52. package/dist/client/assets/{main-CsKfm_iE.js → main-D13cBYQG.js} +280 -274
  53. package/dist/client/assets/{mindmap-definition-VGOIOE7T-DF_KVmYJ.js → mindmap-definition-VGOIOE7T-CX1T1sUN.js} +1 -1
  54. package/dist/client/assets/{pieDiagram-ADFJNKIX-X9Gpsupa.js → pieDiagram-ADFJNKIX-DyLrkF8x.js} +2 -2
  55. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-Dv43A6Kl.js → quadrantDiagram-AYHSOK5B-B_-kuE5u.js} +1 -1
  56. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-Bsm1ID8v.js → requirementDiagram-UZGBJVZJ-CW2Pkh0d.js} +1 -1
  57. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-C89ZzNUa.js → sankeyDiagram-TZEHDZUN-SH3i00se.js} +1 -1
  58. package/dist/client/assets/{sequenceDiagram-WL72ISMW-DCEzHjMR.js → sequenceDiagram-WL72ISMW-reJi3BTh.js} +1 -1
  59. package/dist/client/assets/{stateDiagram-FKZM4ZOC-DL_-FpOq.js → stateDiagram-FKZM4ZOC-CjXJfQgu.js} +1 -1
  60. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-XtJwX8Ka.js +1 -0
  61. package/dist/client/assets/{timeline-definition-IT6M3QCI-BklAlKxM.js → timeline-definition-IT6M3QCI-B96AUWWH.js} +1 -1
  62. package/dist/client/assets/{treemap-GDKQZRPO-DugwR-ad.js → treemap-GDKQZRPO-DoFQQo5a.js} +1 -1
  63. package/dist/client/assets/workspace._workspaceId-XsdwFk5t.js +1 -0
  64. package/dist/client/assets/{workspace._workspaceId-CvpowXC8.js → workspace._workspaceId-ftjuXabJ.js} +1 -1
  65. package/dist/client/assets/xterm-EbFzQDSP.js +10 -0
  66. package/dist/client/assets/{xychartDiagram-PRI3JC2R-DEyS0s6m.js → xychartDiagram-PRI3JC2R-v-oqC6We.js} +1 -1
  67. package/dist/migrations/20260927123820_agent_sessions/migration.sql +16 -0
  68. package/dist/migrations/20260927123820_agent_sessions/snapshot.json +1675 -0
  69. package/dist/migrations/20260927210840_client_state/migration.sql +11 -0
  70. package/dist/migrations/20260927210840_client_state/snapshot.json +1763 -0
  71. package/dist/openapi.json +1724 -218
  72. package/dist/server/assets/{TerminalPanel-BVyQf1VK.js → TerminalPanel-DJnQglDZ.js} +1 -1
  73. package/dist/server/assets/{_basePickBy-DRh75DZA.js → _basePickBy-RSzPH-5U.js} +2 -2
  74. package/dist/server/assets/{_baseUniq-DxwDPh9u.js → _baseUniq-Cp_Qm3uS.js} +1 -1
  75. package/dist/server/assets/_tanstack-start-manifest_v-GQWxvAsR.js +4 -0
  76. package/dist/server/assets/{addon-search-WCacnXal.js → addon-search-BUjn-C-R.js} +190 -176
  77. package/dist/server/assets/{addon-unicode11-BhCmKRb7.js → addon-unicode11-BQz-Cn6z.js} +14 -20
  78. package/dist/server/assets/{addon-webgl-hypMW_go.js → addon-webgl-CgJYuUAA.js} +47 -48
  79. package/dist/server/assets/{arc-d221pGej.js → arc-BAImyMJ-.js} +1 -1
  80. package/dist/server/assets/{architecture-7HQA4BMR-CDuqFHS1.js → architecture-7HQA4BMR-BldYj4EA.js} +6 -6
  81. package/dist/server/assets/{architectureDiagram-VXUJARFQ-LivVdR2U.js → architectureDiagram-VXUJARFQ-iEEYNhTp.js} +6 -6
  82. package/dist/server/assets/{blockDiagram-VD42YOAC-Cpsga8jz.js → blockDiagram-VD42YOAC-CpXPlM5p.js} +6 -6
  83. package/dist/server/assets/{c4Diagram-YG6GDRKO-CR3dewU0.js → c4Diagram-YG6GDRKO-C0jPSgch.js} +2 -2
  84. package/dist/server/assets/{channel-CznEvUJx.js → channel-BXmVLq-u.js} +1 -1
  85. package/dist/server/assets/{chunk-4BX2VUAB-2XGKksov.js → chunk-4BX2VUAB-BRh-MKqM.js} +1 -1
  86. package/dist/server/assets/{chunk-55IACEB6-D_sfF6RU.js → chunk-55IACEB6-D-II5Uvr.js} +1 -1
  87. package/dist/server/assets/{chunk-B4BG7PRW-DE9YZpuI.js → chunk-B4BG7PRW-CLc3MoS-.js} +4 -4
  88. package/dist/server/assets/{chunk-DI55MBZ5-1WmBcjv0.js → chunk-DI55MBZ5-rIuRlmCw.js} +3 -3
  89. package/dist/server/assets/{chunk-FMBD7UC4-0hzwdviV.js → chunk-FMBD7UC4-CwpJS1jy.js} +1 -1
  90. package/dist/server/assets/{chunk-QN33PNHL-sglY-9R6.js → chunk-QN33PNHL-DDjZ9iRW.js} +1 -1
  91. package/dist/server/assets/{chunk-QZHKN3VN-BL0yO15_.js → chunk-QZHKN3VN-CqXxabdj.js} +1 -1
  92. package/dist/server/assets/{chunk-TZMSLE5B-CRCOAzqG.js → chunk-TZMSLE5B-YmXbykHL.js} +1 -1
  93. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-GVVGcmAY.js → classDiagram-2ON5EDUG-B5goRv2J.js} +5 -5
  94. package/dist/server/assets/{classDiagram-2ON5EDUG-GVVGcmAY.js → classDiagram-v2-WZHVMYZB-B5goRv2J.js} +5 -5
  95. package/dist/server/assets/{clone-Cw9PiOA8.js → clone-8krOB2fX.js} +1 -1
  96. package/dist/server/assets/{cose-bilkent-S5V4N54A-xdF6iXS1.js → cose-bilkent-S5V4N54A-CT0fXZG5.js} +1 -1
  97. package/dist/server/assets/{dagre-6UL2VRFP-ZMimZN6M.js → dagre-6UL2VRFP-BKnoyRYf.js} +6 -6
  98. package/dist/server/assets/{diagram-PSM6KHXK-AtdXKese.js → diagram-PSM6KHXK-3yiYIfYG.js} +7 -7
  99. package/dist/server/assets/{diagram-QEK2KX5R-to1VE7Ky.js → diagram-QEK2KX5R-BZS0Hd_d.js} +6 -6
  100. package/dist/server/assets/{diagram-S2PKOQOG-lJFLwEPR.js → diagram-S2PKOQOG-BkGWooM_.js} +6 -6
  101. package/dist/server/assets/{erDiagram-Q2GNP2WA-CbevyytQ.js → erDiagram-Q2GNP2WA-BlJW8Tz3.js} +4 -4
  102. package/dist/server/assets/{flowDiagram-NV44I4VS-DTd0gkkY.js → flowDiagram-NV44I4VS-BGWlA0EG.js} +5 -5
  103. package/dist/server/assets/{ganttDiagram-JELNMOA3-YwmrEI5N.js → ganttDiagram-JELNMOA3-Cf3LALG6.js} +1 -1
  104. package/dist/server/assets/{gitGraph-G5XIXVHT-BArDd0OC.js → gitGraph-G5XIXVHT-B9S3heYN.js} +6 -6
  105. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-BTThcyM8.js → gitGraphDiagram-V2S2FVAM-C4_f3rx4.js} +7 -7
  106. package/dist/server/assets/{graph-BOO01qmU.js → graph-DYj8A2bp.js} +2 -2
  107. package/dist/server/assets/{highlighted-body-B3W2YXNL-Cym8kCCk.js → highlighted-body-B3W2YXNL-Df68BBlw.js} +1 -1
  108. package/dist/server/assets/{index-CBT9vLeO.js → index-7UlzI_dK.js} +1 -1
  109. package/dist/server/assets/{index-CaFux-EA.js → index-B5gG6MB7.js} +1 -1
  110. package/dist/server/assets/{index-CQd5Q7Kt.js → index-BDEhO1ya.js} +1 -1
  111. package/dist/server/assets/{index-3bt1s3HG.js → index-BYKwSvPL.js} +1 -1
  112. package/dist/server/assets/{index-DVBTKosE.js → index-BiwgNHMQ.js} +1 -1
  113. package/dist/server/assets/{index-Z7BJHwYS.js → index-CISg2hqm.js} +1 -1
  114. package/dist/server/assets/{index-7I7gBKIT.js → index-CMq_WJJ7.js} +1 -1
  115. package/dist/server/assets/{index-Ckc3EtXO.js → index-ChV05j8R.js} +1 -1
  116. package/dist/server/assets/{index-caXQk3Nh.js → index-CopZNvBd.js} +1 -1
  117. package/dist/server/assets/{index-DZfyQWn7.js → index-CxMB5JY7.js} +1 -1
  118. package/dist/server/assets/{index-BQaiSrqT.js → index-DIuiSZSj.js} +1 -1
  119. package/dist/server/assets/{index-DX1Ugorr.js → index-DqsmbFGQ.js} +1 -1
  120. package/dist/server/assets/{index-CsHpsK-4.js → index-DyUjxC3i.js} +1 -1
  121. package/dist/server/assets/{info-VBDWY6EO-D4lcUmb_.js → info-VBDWY6EO-BmkTQbMv.js} +6 -6
  122. package/dist/server/assets/{infoDiagram-HS3SLOUP-C1ai--xt.js → infoDiagram-HS3SLOUP-CKR2MY9e.js} +5 -5
  123. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-qel6lxPz.js → journeyDiagram-XKPGCS4Q-DPsUHcaJ.js} +4 -4
  124. package/dist/server/assets/{kanban-definition-3W4ZIXB7-BQPKgoP_.js → kanban-definition-3W4ZIXB7-C5QIVVhD.js} +2 -2
  125. package/dist/server/assets/{layout-D_wAQ9pE.js → layout-R-e4wg8W.js} +4 -4
  126. package/dist/server/assets/{mermaid-3ZIDBTTL-CtNgetEO.js → mermaid-3ZIDBTTL-ByDi8HnK.js} +1 -1
  127. package/dist/server/assets/{mermaid-parser.core-BwjOeEsU.js → mermaid-parser.core-C9wm222O.js} +11 -11
  128. package/dist/server/assets/{mindmap-definition-VGOIOE7T-DYdatMwP.js → mindmap-definition-VGOIOE7T-1gh-bXjE.js} +3 -3
  129. package/dist/server/assets/{packet-DYOGHKS2-_TbN3RWI.js → packet-DYOGHKS2-Bxy3z0_p.js} +6 -6
  130. package/dist/server/assets/{pie-VRWISCQL-D9Z5k3qi.js → pie-VRWISCQL-BlDk8RiA.js} +6 -6
  131. package/dist/server/assets/{pieDiagram-ADFJNKIX-COmj-G7F.js → pieDiagram-ADFJNKIX-CwnESx-9.js} +7 -7
  132. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-BajsyCAd.js → quadrantDiagram-AYHSOK5B-B-US3olm.js} +1 -1
  133. package/dist/server/assets/{radar-ZZBFDIW7-DLipfn_u.js → radar-ZZBFDIW7-Dy71dV8F.js} +6 -6
  134. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-BGEkpdbY.js → requirementDiagram-UZGBJVZJ-DZZQz_qm.js} +3 -3
  135. package/dist/server/assets/{router-Dpb0Z442.js → router-C6awDsR6.js} +16463 -11602
  136. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-CWd3AEju.js → sankeyDiagram-TZEHDZUN-DMIqo7mj.js} +1 -1
  137. package/dist/server/assets/{sequenceDiagram-WL72ISMW-BMTkK0JQ.js → sequenceDiagram-WL72ISMW-B8koBIGl.js} +3 -3
  138. package/dist/server/assets/{stateDiagram-FKZM4ZOC-CpBXq11c.js → stateDiagram-FKZM4ZOC-BHze-gTI.js} +8 -8
  139. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-DNuppjf9.js → stateDiagram-v2-4FDKWEC3-DRFmfjyi.js} +4 -4
  140. package/dist/server/assets/{timeline-definition-IT6M3QCI-YTyqSIDt.js → timeline-definition-IT6M3QCI-CEkzxLSR.js} +2 -2
  141. package/dist/server/assets/{treemap-GDKQZRPO-BeWiYXRR.js → treemap-GDKQZRPO-0VBmxaAW.js} +6 -6
  142. package/dist/server/assets/{workspace._workspaceId-t0HaEyN5.js → workspace._workspaceId-BtMBxm9H.js} +93 -71
  143. package/dist/server/assets/{workspace._workspaceId-Ce_eap6T.js → workspace._workspaceId-C7ra183B.js} +1 -1
  144. package/dist/server/assets/{xterm-DnMRSOdQ.js → xterm-CsaVCelU.js} +517 -579
  145. package/dist/server/assets/{xychartDiagram-PRI3JC2R-Dlgz7zKK.js → xychartDiagram-PRI3JC2R-BQCIxu2L.js} +1 -1
  146. package/dist/server/server.js +2 -2
  147. package/dist/start-server.mjs +34624 -30192
  148. package/dist/terminal-daemon.mjs +635 -335
  149. package/package.json +14 -12
  150. package/dist/client/assets/addon-search-DBOYg5r3.js +0 -1
  151. package/dist/client/assets/addon-unicode11-LsnDChsR.js +0 -1
  152. package/dist/client/assets/channel-C4GiEGw4.js +0 -1
  153. package/dist/client/assets/classDiagram-2ON5EDUG-y6v_VfOs.js +0 -1
  154. package/dist/client/assets/classDiagram-v2-WZHVMYZB-y6v_VfOs.js +0 -1
  155. package/dist/client/assets/clone-B_3XeJsO.js +0 -1
  156. package/dist/client/assets/main-CmUn6n9o.css +0 -1
  157. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-D5laPTLF.js +0 -1
  158. package/dist/client/assets/workspace._workspaceId-CdoxJFsY.js +0 -1
  159. package/dist/client/assets/xterm-CPJFL3h0.js +0 -10
  160. package/dist/server/assets/_tanstack-start-manifest_v-CfuLu7F9.js +0 -4
@@ -1,5 +1,5 @@
1
1
  var _a, _b, _c;
2
- import { J as setDiagramTitle, M as getDiagramTitle, m as setAccDescription, n as getAccDescription, p as setAccTitle, o as getAccTitle, _ as __name, q as getConfig2, V as defaultConfig2, r as select, bQ as ordinal, az as setupGraphViewbox, U as clear, B as common_default } from "./router-Dpb0Z442.js";
2
+ import { J as setDiagramTitle, M as getDiagramTitle, m as setAccDescription, n as getAccDescription, p as setAccTitle, o as getAccTitle, _ as __name, q as getConfig2, V as defaultConfig2, r as select, bP as ordinal, az as setupGraphViewbox, U as clear, B as common_default } from "./router-C6awDsR6.js";
3
3
  import "../server.js";
4
4
  import "node:async_hooks";
5
5
  import "node:stream";
@@ -1,7 +1,7 @@
1
1
  var _a;
2
- import { a as drawBackgroundRect, b as getTextObj, g as getNoteRect, d as drawRect, c as drawEmbeddedImage, e as drawImage } from "./chunk-TZMSLE5B-CRCOAzqG.js";
3
- import { _ as __name, F as setConfig2, q as getConfig2, r as select, u as log, z as distExports, v as configureSvgSize, w as assignWithDepth_default, B as common_default, p as setAccTitle, m as setAccDescription, J as setDiagramTitle, o as getAccTitle, n as getAccDescription, M as getDiagramTitle, O as load, P as JSON_SCHEMA, U as clear, y as sanitizeText, I as utils_default, aq as hasKatex, ar as calculateMathMLDimensions, as as parseFontSize, at as ZERO_WIDTH_SPACE, au as getUrl, av as renderKatexSanitized, a2 as getConfig } from "./router-Dpb0Z442.js";
4
- import { I as ImperativeState } from "./chunk-QZHKN3VN-BL0yO15_.js";
2
+ import { a as drawBackgroundRect, b as getTextObj, g as getNoteRect, d as drawRect, c as drawEmbeddedImage, e as drawImage } from "./chunk-TZMSLE5B-YmXbykHL.js";
3
+ import { _ as __name, F as setConfig2, q as getConfig2, r as select, u as log, z as distExports, v as configureSvgSize, w as assignWithDepth_default, B as common_default, p as setAccTitle, m as setAccDescription, J as setDiagramTitle, o as getAccTitle, n as getAccDescription, M as getDiagramTitle, O as load, P as JSON_SCHEMA, U as clear, y as sanitizeText, I as utils_default, aq as hasKatex, ar as calculateMathMLDimensions, as as parseFontSize, at as ZERO_WIDTH_SPACE, au as getUrl, av as renderKatexSanitized, a2 as getConfig } from "./router-C6awDsR6.js";
4
+ import { I as ImperativeState } from "./chunk-QZHKN3VN-CqXxabdj.js";
5
5
  import "../server.js";
6
6
  import "node:async_hooks";
7
7
  import "node:stream";
@@ -1,9 +1,9 @@
1
- import { s as styles_default, a as stateDiagram_default, S as StateDB } from "./chunk-DI55MBZ5-1WmBcjv0.js";
2
- import { _ as __name, q as getConfig2, r as select, u as log, v as configureSvgSize, B as common_default, ap as line, ax as curveBasis, au as getUrl, I as utils_default } from "./router-Dpb0Z442.js";
3
- import { G as Graph } from "./graph-BOO01qmU.js";
4
- import { l as layout } from "./layout-D_wAQ9pE.js";
5
- import "./chunk-55IACEB6-D_sfF6RU.js";
6
- import "./chunk-QN33PNHL-sglY-9R6.js";
1
+ import { s as styles_default, a as stateDiagram_default, S as StateDB } from "./chunk-DI55MBZ5-rIuRlmCw.js";
2
+ import { _ as __name, q as getConfig2, r as select, u as log, v as configureSvgSize, B as common_default, ap as line, ax as curveBasis, au as getUrl, I as utils_default } from "./router-C6awDsR6.js";
3
+ import { G as Graph } from "./graph-DYj8A2bp.js";
4
+ import { l as layout } from "./layout-R-e4wg8W.js";
5
+ import "./chunk-55IACEB6-D-II5Uvr.js";
6
+ import "./chunk-QN33PNHL-DDjZ9iRW.js";
7
7
  import "../server.js";
8
8
  import "node:async_hooks";
9
9
  import "node:stream";
@@ -15,8 +15,8 @@ import "node:stream/web";
15
15
  import "node:process";
16
16
  import "node:path";
17
17
  import "node:url";
18
- import "./_baseUniq-DxwDPh9u.js";
19
- import "./_basePickBy-DRh75DZA.js";
18
+ import "./_baseUniq-Cp_Qm3uS.js";
19
+ import "./_basePickBy-RSzPH-5U.js";
20
20
  var drawStartState = /* @__PURE__ */ __name((g) => g.append("circle").attr("class", "start-state").attr("r", getConfig2().state.sizeUnit).attr("cx", getConfig2().state.padding + getConfig2().state.sizeUnit).attr("cy", getConfig2().state.padding + getConfig2().state.sizeUnit), "drawStartState");
21
21
  var drawDivider = /* @__PURE__ */ __name((g) => g.append("line").style("stroke", "grey").style("stroke-dasharray", "3").attr("x1", getConfig2().state.textHeight).attr("class", "divider").attr("x2", getConfig2().state.textHeight * 2).attr("y1", 0).attr("y2", 0), "drawDivider");
22
22
  var drawSimpleState = /* @__PURE__ */ __name((g, stateDef) => {
@@ -1,7 +1,7 @@
1
- import { s as styles_default, b as stateRenderer_v3_unified_default, a as stateDiagram_default, S as StateDB } from "./chunk-DI55MBZ5-1WmBcjv0.js";
2
- import { _ as __name } from "./router-Dpb0Z442.js";
3
- import "./chunk-55IACEB6-D_sfF6RU.js";
4
- import "./chunk-QN33PNHL-sglY-9R6.js";
1
+ import { s as styles_default, b as stateRenderer_v3_unified_default, a as stateDiagram_default, S as StateDB } from "./chunk-DI55MBZ5-rIuRlmCw.js";
2
+ import { _ as __name } from "./router-C6awDsR6.js";
3
+ import "./chunk-55IACEB6-D-II5Uvr.js";
4
+ import "./chunk-QN33PNHL-DDjZ9iRW.js";
5
5
  import "../server.js";
6
6
  import "node:async_hooks";
7
7
  import "node:stream";
@@ -1,5 +1,5 @@
1
- import { _ as __name, q as getConfig2, u as log, r as select, az as setupGraphViewbox, aA as isDark, aB as lighten, aC as darken, Z as __export, aD as commonDb_exports, U as clear } from "./router-Dpb0Z442.js";
2
- import { d as d3arc } from "./arc-d221pGej.js";
1
+ import { _ as __name, q as getConfig2, u as log, r as select, az as setupGraphViewbox, aA as isDark, aB as lighten, aC as darken, Z as __export, aD as commonDb_exports, U as clear } from "./router-C6awDsR6.js";
2
+ import { d as d3arc } from "./arc-BAImyMJ-.js";
3
3
  import "../server.js";
4
4
  import "node:async_hooks";
5
5
  import "node:stream";
@@ -1,6 +1,6 @@
1
- import { h as createTreemapServices } from "./mermaid-parser.core-BwjOeEsU.js";
2
- import { T } from "./mermaid-parser.core-BwjOeEsU.js";
3
- import "./router-Dpb0Z442.js";
1
+ import { h as createTreemapServices } from "./mermaid-parser.core-C9wm222O.js";
2
+ import { T } from "./mermaid-parser.core-C9wm222O.js";
3
+ import "./router-C6awDsR6.js";
4
4
  import "../server.js";
5
5
  import "node:async_hooks";
6
6
  import "node:stream";
@@ -12,9 +12,9 @@ import "node:stream/web";
12
12
  import "node:process";
13
13
  import "node:path";
14
14
  import "node:url";
15
- import "./_baseUniq-DxwDPh9u.js";
16
- import "./_basePickBy-DRh75DZA.js";
17
- import "./clone-Cw9PiOA8.js";
15
+ import "./_baseUniq-Cp_Qm3uS.js";
16
+ import "./_basePickBy-RSzPH-5U.js";
17
+ import "./clone-8krOB2fX.js";
18
18
  import "path";
19
19
  import "os";
20
20
  import "net";
@@ -1,5 +1,5 @@
1
1
  import { j as jsxRuntimeExports, r as reactExports } from "../server.js";
2
- import { bp as createLucideIcon, bq as Root, br as Content, bs as Close, bt as X, bu as cn, bv as Title, bw as Description, bx as Portal, by as Overlay, R as Route, bl as useIsDesktop, bz as useDashboardStore, bo as isDesktop, bA as useWorkspacePath, bB as getWorkspaceLeafActions, bC as parseFileLocation, bD as DesktopDragRegion, bE as ChevronsUpDown, bF as WorkspaceCenterDockview, bG as SquareTerminal, bH as FolderOpen, bI as GitCompare, bJ as FileBrowser, bK as ChangesFileTree, bL as QuickOpenDialog, bM as SearchFilesDialog, bN as WorkspacePickerDialog, bm as ToolbarOverflowProvider, bi as DashboardShell, bn as ToolbarActionBar, bO as useDiffSummary } from "./router-Dpb0Z442.js";
2
+ import { bp as createLucideIcon, bq as Root, br as Content, bs as Close, bt as X, bu as cn, bv as Title, bw as Description, bx as Portal, by as Overlay, R as Route, bl as useIsDesktop, bz as useDashboardStore, bo as isDesktop, bA as useWorkspacePath, bB as getWorkspaceLeafActions, bC as parseFileLocation, bD as DesktopDragRegion, bE as FolderOpen, bF as GitCompare, bG as WorkspaceCenterDockview, bH as FileBrowser, bI as ChangesSections, bJ as QuickOpenDialog, bK as SearchFilesDialog, bL as WorkspacePickerDialog, bm as ToolbarOverflowProvider, bi as DashboardShell, bn as ToolbarActionBar, bM as useWorkspaceChanges, bN as countChangedPaths } from "./router-C6awDsR6.js";
3
3
  import "node:async_hooks";
4
4
  import "node:stream";
5
5
  import "util";
@@ -10,6 +10,11 @@ import "node:stream/web";
10
10
  import "node:process";
11
11
  import "node:path";
12
12
  import "node:url";
13
+ const __iconNode$1 = [
14
+ ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
15
+ ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
16
+ ];
17
+ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1);
13
18
  const __iconNode = [
14
19
  ["path", { d: "M4 5h16", key: "1tepv9" }],
15
20
  ["path", { d: "M4 12h16", key: "1lakjw" }],
@@ -106,15 +111,17 @@ function SheetDescription({
106
111
  }
107
112
  );
108
113
  }
109
- const EMPTY_STATUSES = {};
114
+ const KEYBOARD_MIN_HEIGHT_PX = 120;
110
115
  function useAppHeight() {
111
116
  const [height, setHeight] = reactExports.useState(null);
112
117
  const [offsetTop, setOffsetTop] = reactExports.useState(0);
118
+ const [keyboardOpen, setKeyboardOpen] = reactExports.useState(false);
113
119
  reactExports.useLayoutEffect(() => {
114
120
  const vv = window.visualViewport;
115
121
  const update = () => {
116
122
  setHeight(vv ? vv.height : window.innerHeight);
117
123
  setOffsetTop(vv ? vv.offsetTop : 0);
124
+ setKeyboardOpen(vv ? window.innerHeight - vv.height > KEYBOARD_MIN_HEIGHT_PX : false);
118
125
  };
119
126
  update();
120
127
  if (vv) {
@@ -132,17 +139,17 @@ function useAppHeight() {
132
139
  }, []);
133
140
  return {
134
141
  height,
135
- offsetTop
142
+ offsetTop,
143
+ keyboardOpen
136
144
  };
137
145
  }
138
146
  function useChangesSummary(workspaceId) {
139
- const summaryQuery = useDiffSummary(workspaceId, {
147
+ const changesQuery = useWorkspaceChanges(workspaceId, {
140
148
  refetchInterval: 15e3
141
149
  });
142
- const fileStatuses = summaryQuery.data?.fileStatuses ?? EMPTY_STATUSES;
143
150
  return {
144
- fileStatuses,
145
- changeCount: Object.keys(fileStatuses).length
151
+ changes: changesQuery.data,
152
+ changeCount: countChangedPaths(changesQuery.data)
146
153
  };
147
154
  }
148
155
  function WorkspaceLayout() {
@@ -166,7 +173,7 @@ function WorkspaceLayout() {
166
173
  }, [decoded, clearNeedsAttention]);
167
174
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `h-full ${hydrated ? "" : "invisible"}`, children: useDesktopLayout ? null : /* @__PURE__ */ jsxRuntimeExports.jsx(MobileWorkspaceLayout, { workspaceId: decoded }, decoded) });
168
175
  }
169
- function MobileBarButton({
176
+ function MobileHeaderButton({
170
177
  label,
171
178
  icon: Icon,
172
179
  active,
@@ -174,24 +181,34 @@ function MobileBarButton({
174
181
  badge,
175
182
  testid
176
183
  }) {
177
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("button", { type: "button", onClick, "aria-pressed": active, "data-testid": testid, className: `relative flex flex-1 flex-col items-center justify-center gap-0.5 text-[10px] font-medium transition-colors ${active ? "text-foreground" : "text-muted-foreground hover:text-foreground"}`, children: [
178
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "relative", children: [
179
- /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { className: "size-5" }),
180
- badge != null && badge > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "absolute -top-1.5 -right-2 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-blue-500/20 px-1 text-[9px] font-medium text-blue-600 dark:text-blue-400", children: badge })
181
- ] }),
182
- label
183
- ] });
184
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
185
+ "button",
186
+ {
187
+ type: "button",
188
+ onClick,
189
+ "aria-label": badge ? `${label}, ${badge}` : label,
190
+ "aria-pressed": active,
191
+ "aria-haspopup": "dialog",
192
+ "data-testid": testid,
193
+ className: `relative inline-flex size-9 shrink-0 items-center justify-center rounded-md transition-colors hover:bg-accent active:bg-accent ${active ? "text-foreground" : "text-muted-foreground"}`,
194
+ children: [
195
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { className: "size-[18px]" }),
196
+ badge != null && badge > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { "data-testid": `${testid}-badge`, className: "absolute top-0 right-0 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-blue-500/20 px-1 text-[9px] font-medium text-blue-600 dark:text-blue-400", children: badge })
197
+ ]
198
+ }
199
+ );
184
200
  }
185
201
  function MobileWorkspaceLayout({
186
202
  workspaceId
187
203
  }) {
188
204
  const {
189
205
  height: appHeight,
190
- offsetTop: appOffsetTop
206
+ offsetTop: appOffsetTop,
207
+ keyboardOpen
191
208
  } = useAppHeight();
192
209
  const workspacePath = useWorkspacePath(workspaceId);
193
210
  const {
194
- fileStatuses,
211
+ changes,
195
212
  changeCount
196
213
  } = useChangesSummary(workspaceId);
197
214
  const [view, setView] = reactExports.useState("editor");
@@ -199,8 +216,11 @@ function MobileWorkspaceLayout({
199
216
  getWorkspaceLeafActions(workspaceId)?.openFile(filePath, opts);
200
217
  setView("editor");
201
218
  }, [workspaceId]);
202
- const openDiffLeaf = reactExports.useCallback((filePath) => {
203
- getWorkspaceLeafActions(workspaceId)?.openDiff(filePath);
219
+ const openDiffLeaf = reactExports.useCallback((section, entry) => {
220
+ getWorkspaceLeafActions(workspaceId)?.openDiff(entry.path, {
221
+ section,
222
+ oldPath: entry.oldPath
223
+ });
204
224
  setView("editor");
205
225
  }, [workspaceId]);
206
226
  const [pickerOpen, setPickerOpen] = reactExports.useState(false);
@@ -240,59 +260,61 @@ function MobileWorkspaceLayout({
240
260
  window.removeEventListener("band:open-search-files", openSF);
241
261
  };
242
262
  }, []);
243
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col overflow-hidden", style: {
244
- height: appHeight ? `${appHeight}px` : "100dvh",
245
- transform: appOffsetTop ? `translateY(${appOffsetTop}px)` : void 0
246
- }, children: [
247
- isDesktop && /* @__PURE__ */ jsxRuntimeExports.jsx(DesktopDragRegion, {}),
248
- /* @__PURE__ */ jsxRuntimeExports.jsxs("header", { className: "flex h-[calc(2.5rem+env(safe-area-inset-top))] shrink-0 items-center gap-2 border-b border-border/50 px-3 pt-[env(safe-area-inset-top)]", children: [
249
- /* @__PURE__ */ jsxRuntimeExports.jsx("button", { type: "button", onClick: () => setProjectListOpen(true), "aria-label": "Open project list", "aria-haspopup": "dialog", "data-testid": "mobile-workspace__project-list-trigger", className: "inline-flex size-7 shrink-0 items-center justify-center rounded-md hover:bg-accent", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Menu, { className: "size-4" }) }),
250
- /* @__PURE__ */ jsxRuntimeExports.jsxs("button", { type: "button", onClick: () => setPickerOpen(true), "aria-haspopup": "dialog", "aria-label": "Switch workspace", className: "inline-flex min-w-0 flex-1 items-center justify-center gap-1.5 rounded-md px-2 py-1 hover:bg-accent active:bg-accent", children: [
251
- /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "truncate text-sm font-semibold", children: workspaceId }),
252
- /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronsUpDown, { className: "size-3.5 shrink-0 text-muted-foreground" })
263
+ return (
264
+ // Fixed, so a document scroll iOS makes to reveal the focused input can't
265
+ // move it; `offsetTop` then follows the visual viewport as it pans.
266
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "fixed inset-x-0 top-0 flex flex-col overflow-hidden", style: {
267
+ height: appHeight ? `${appHeight}px` : "100dvh",
268
+ transform: appOffsetTop ? `translateY(${appOffsetTop}px)` : void 0
269
+ }, children: [
270
+ isDesktop && /* @__PURE__ */ jsxRuntimeExports.jsx(DesktopDragRegion, {}),
271
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("header", { "data-testid": "mobile-workspace__header", className: "flex h-[calc(2.5rem+env(safe-area-inset-top))] shrink-0 items-center gap-2 border-b border-border/50 px-3 pt-[env(safe-area-inset-top)]", children: [
272
+ /* @__PURE__ */ jsxRuntimeExports.jsx("button", { type: "button", onClick: () => setProjectListOpen(true), "aria-label": "Open project list", "aria-haspopup": "dialog", "data-testid": "mobile-workspace__project-list-trigger", className: "inline-flex size-7 shrink-0 items-center justify-center rounded-md hover:bg-accent", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Menu, { className: "size-4" }) }),
273
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("button", { type: "button", onClick: () => setPickerOpen(true), "aria-haspopup": "dialog", "aria-label": "Switch workspace", "data-testid": "mobile-workspace__switcher", className: "inline-flex min-w-0 flex-1 items-center justify-center gap-1.5 rounded-md px-2 py-1 hover:bg-accent active:bg-accent", children: [
274
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "truncate text-sm font-semibold", children: workspaceId }),
275
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronsUpDown, { className: "size-3.5 shrink-0 text-muted-foreground" })
276
+ ] }),
277
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center", children: [
278
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MobileHeaderButton, { label: "Explorer", icon: FolderOpen, active: view === "explorer", onClick: () => setView("explorer"), testid: "mobile-workspace__header-explorer" }),
279
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MobileHeaderButton, { label: "Changes", icon: GitCompare, active: view === "changes", badge: changeCount, onClick: () => setView("changes"), testid: "mobile-workspace__header-changes" })
280
+ ] })
253
281
  ] }),
254
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { "aria-hidden": "true", className: "size-7 shrink-0" })
255
- ] }),
256
- /* @__PURE__ */ jsxRuntimeExports.jsx("main", { className: "flex min-h-0 flex-1 flex-col", children: /* @__PURE__ */ jsxRuntimeExports.jsx(WorkspaceCenterDockview, { workspaceId, visible: true, wsActive: true, mobile: true }) }),
257
- /* @__PURE__ */ jsxRuntimeExports.jsxs("nav", { className: "flex h-[calc(3rem+env(safe-area-inset-bottom))] shrink-0 items-stretch border-t border-border/50 pb-[env(safe-area-inset-bottom)]", "data-testid": "mobile-workspace__bottom-bar", children: [
258
- /* @__PURE__ */ jsxRuntimeExports.jsx(MobileBarButton, { label: "Editor", icon: SquareTerminal, active: view === "editor", onClick: () => setView("editor"), testid: "mobile-workspace__bar--editor" }),
259
- /* @__PURE__ */ jsxRuntimeExports.jsx(MobileBarButton, { label: "Explorer", icon: FolderOpen, active: view === "explorer", onClick: () => setView("explorer"), testid: "mobile-workspace__bar--explorer" }),
260
- /* @__PURE__ */ jsxRuntimeExports.jsx(MobileBarButton, { label: "Changes", icon: GitCompare, active: view === "changes", badge: changeCount, onClick: () => setView("changes"), testid: "mobile-workspace__bar--changes" })
261
- ] }),
262
- /* @__PURE__ */ jsxRuntimeExports.jsx(Sheet, { open: view === "explorer", onOpenChange: (open) => setView(open ? "explorer" : "editor"), children: /* @__PURE__ */ jsxRuntimeExports.jsxs(SheetContent, { side: "bottom", className: "h-[75dvh] p-0", "data-testid": "mobile-workspace__explorer-sheet", children: [
263
- /* @__PURE__ */ jsxRuntimeExports.jsx(SheetTitle, { className: "border-b border-border/50 px-4 py-3 text-sm", children: "Explorer" }),
264
- /* @__PURE__ */ jsxRuntimeExports.jsx(SheetDescription, { className: "sr-only", children: "Browse workspace files and open one in the editor" }),
265
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { "data-testid": "mobile-workspace__explorer-body", className: "min-h-0 flex-1 overflow-auto pb-[env(safe-area-inset-bottom)]", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FileBrowser, { workspaceId, workspacePath, onOpenFile: (p) => openFileLeaf(p), onOpenFilePinned: (p) => openFileLeaf(p), compact: true }) })
266
- ] }) }),
267
- /* @__PURE__ */ jsxRuntimeExports.jsx(Sheet, { open: view === "changes", onOpenChange: (open) => setView(open ? "changes" : "editor"), children: /* @__PURE__ */ jsxRuntimeExports.jsxs(SheetContent, { side: "bottom", className: "h-[75dvh] p-0", "data-testid": "mobile-workspace__changes-sheet", children: [
268
- /* @__PURE__ */ jsxRuntimeExports.jsx(SheetTitle, { className: "border-b border-border/50 px-4 py-3 text-sm", children: "Changes" }),
269
- /* @__PURE__ */ jsxRuntimeExports.jsx(SheetDescription, { className: "sr-only", children: "Browse changed files and open one as a diff" }),
270
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { "data-testid": "mobile-workspace__changes-body", className: "min-h-0 flex-1 overflow-auto pb-[env(safe-area-inset-bottom)]", children: changeCount === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "px-3 py-2 text-xs text-muted-foreground", children: "No changes" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChangesFileTree, { fileStatuses, onSelectFile: openDiffLeaf, onSelectFilePinned: openDiffLeaf, workspacePath }) })
271
- ] }) }),
272
- /* @__PURE__ */ jsxRuntimeExports.jsx(QuickOpenDialog, { workspaceId, open: quickOpenOpen, onOpenChange: (open) => {
273
- setQuickOpenOpen(open);
274
- if (!open) setQuickOpenQuery(void 0);
275
- }, onOpenFile: handleOpenFile, initialQuery: quickOpenQuery, autoOpen: quickOpenQuery != null }),
276
- /* @__PURE__ */ jsxRuntimeExports.jsx(SearchFilesDialog, { workspaceId, open: searchFilesOpen, onOpenChange: setSearchFilesOpen, onOpenFile: handleOpenFile }),
277
- /* @__PURE__ */ jsxRuntimeExports.jsx(WorkspacePickerDialog, { open: pickerOpen, onOpenChange: setPickerOpen }),
278
- /* @__PURE__ */ jsxRuntimeExports.jsx(Sheet, { open: projectListOpen, onOpenChange: setProjectListOpen, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
279
- SheetContent,
280
- {
281
- side: "left",
282
- showCloseButton: false,
283
- "data-testid": "project-list-flyout",
284
- onOpenAutoFocus: (e) => {
285
- e.preventDefault();
286
- e.currentTarget?.focus();
287
- },
288
- children: [
289
- /* @__PURE__ */ jsxRuntimeExports.jsx(SheetTitle, { className: "sr-only", children: "Projects" }),
290
- /* @__PURE__ */ jsxRuntimeExports.jsx(SheetDescription, { className: "sr-only", children: "Browse projects and open a workspace" }),
291
- /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarOverflowProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(DashboardShell, { bottomActions: /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarActionBar, {}), hideTitleBar: true, padBottomInset: true }) })
292
- ]
293
- }
294
- ) })
295
- ] });
282
+ /* @__PURE__ */ jsxRuntimeExports.jsx("main", { "data-testid": "mobile-workspace__main", className: `flex min-h-0 flex-1 flex-col ${keyboardOpen ? "" : "pb-[env(safe-area-inset-bottom)]"}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(WorkspaceCenterDockview, { workspaceId, visible: true, wsActive: true, mobile: true }) }),
283
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Sheet, { open: view === "explorer", onOpenChange: (open) => setView(open ? "explorer" : "editor"), children: /* @__PURE__ */ jsxRuntimeExports.jsxs(SheetContent, { side: "bottom", className: "h-[75dvh] p-0", "data-testid": "mobile-workspace__explorer-sheet", children: [
284
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SheetTitle, { className: "border-b border-border/50 px-4 py-3 text-sm", children: "Explorer" }),
285
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SheetDescription, { className: "sr-only", children: "Browse workspace files and open one in the editor" }),
286
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { "data-testid": "mobile-workspace__explorer-body", className: "min-h-0 flex-1 overflow-auto pb-[env(safe-area-inset-bottom)]", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FileBrowser, { workspaceId, workspacePath, onOpenFile: (p) => openFileLeaf(p), onOpenFilePinned: (p) => openFileLeaf(p), compact: true }) })
287
+ ] }) }),
288
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Sheet, { open: view === "changes", onOpenChange: (open) => setView(open ? "changes" : "editor"), children: /* @__PURE__ */ jsxRuntimeExports.jsxs(SheetContent, { side: "bottom", className: "h-[75dvh] p-0", "data-testid": "mobile-workspace__changes-sheet", children: [
289
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SheetTitle, { className: "border-b border-border/50 px-4 py-3 text-sm", children: "Changes" }),
290
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SheetDescription, { className: "sr-only", children: "Browse changed files and open one as a diff" }),
291
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { "data-testid": "mobile-workspace__changes-body", className: "min-h-0 flex-1 overflow-auto pb-[env(safe-area-inset-bottom)]", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChangesSections, { workspaceId, changes, onOpen: openDiffLeaf, workspacePath }) })
292
+ ] }) }),
293
+ /* @__PURE__ */ jsxRuntimeExports.jsx(QuickOpenDialog, { workspaceId, open: quickOpenOpen, onOpenChange: (open) => {
294
+ setQuickOpenOpen(open);
295
+ if (!open) setQuickOpenQuery(void 0);
296
+ }, onOpenFile: handleOpenFile, initialQuery: quickOpenQuery, autoOpen: quickOpenQuery != null }),
297
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SearchFilesDialog, { workspaceId, open: searchFilesOpen, onOpenChange: setSearchFilesOpen, onOpenFile: handleOpenFile }),
298
+ /* @__PURE__ */ jsxRuntimeExports.jsx(WorkspacePickerDialog, { open: pickerOpen, onOpenChange: setPickerOpen }),
299
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Sheet, { open: projectListOpen, onOpenChange: setProjectListOpen, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
300
+ SheetContent,
301
+ {
302
+ side: "left",
303
+ showCloseButton: false,
304
+ "data-testid": "project-list-flyout",
305
+ onOpenAutoFocus: (e) => {
306
+ e.preventDefault();
307
+ e.currentTarget?.focus();
308
+ },
309
+ children: [
310
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SheetTitle, { className: "sr-only", children: "Projects" }),
311
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SheetDescription, { className: "sr-only", children: "Browse projects and open a workspace" }),
312
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarOverflowProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(DashboardShell, { bottomActions: /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarActionBar, {}), hideTitleBar: true, padBottomInset: true }) })
313
+ ]
314
+ }
315
+ ) })
316
+ ] })
317
+ );
296
318
  }
297
319
  export {
298
320
  WorkspaceLayout as component
@@ -1,5 +1,5 @@
1
1
  import { j as jsxRuntimeExports } from "../server.js";
2
- import { R as Route, a as Navigate } from "./router-Dpb0Z442.js";
2
+ import { R as Route, a as Navigate } from "./router-C6awDsR6.js";
3
3
  import "node:async_hooks";
4
4
  import "node:stream";
5
5
  import "util";