@dylanpiercey/work 0.0.81 → 0.0.83

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 (253) hide show
  1. package/dist/{_CnoncJm9.js → _BLfl5xCk.js} +14 -14
  2. package/dist/{_DYjQjuVZ.js → _CExzMbX7.js} +52 -14
  3. package/dist/{_C-IJTsSL.js → _Ca65AieL.js} +320 -284
  4. package/dist/_DkOK1JPO.js +2 -0
  5. package/dist/index.mjs +783 -695
  6. package/dist/public/assets/{_cyCiLNCO2.js → _1lHl-1Rm2.js} +1 -1
  7. package/dist/public/assets/{_DhjTrs6h.js → _5zsw-7Cr.js} +1 -1
  8. package/dist/public/assets/_5zsw-7Cr.js.br +0 -0
  9. package/dist/public/assets/{_B59BODZo.js → _71X9fj6D.js} +1 -1
  10. package/dist/public/assets/_71X9fj6D.js.br +0 -0
  11. package/dist/public/assets/{_BmGbWdBH.js → _9c4YB0Zk.js} +1 -1
  12. package/dist/public/assets/_9c4YB0Zk.js.br +0 -0
  13. package/dist/public/assets/{_NAnVv-uy.js → _B-AJiJGO.js} +1 -1
  14. package/dist/public/assets/_B-AJiJGO.js.br +0 -0
  15. package/dist/public/assets/{_D8Rch_qk2.js → _B4ZyyQsV2.js} +1 -1
  16. package/dist/public/assets/_B4ZyyQsV2.js.br +0 -0
  17. package/dist/public/assets/{_DfpKlxWe2.js → _B8DzQMv92.js} +1 -1
  18. package/dist/public/assets/_B8DzQMv92.js.br +0 -0
  19. package/dist/public/assets/{_D-GUbNXT2.js → _B8WT48P_2.js} +1 -1
  20. package/dist/public/assets/_B8WT48P_2.js.br +0 -0
  21. package/dist/public/assets/{_DMuoSYnd.js → _BBiuY4UK.js} +1 -1
  22. package/dist/public/assets/_BBiuY4UK.js.br +0 -0
  23. package/dist/public/assets/{_DpbFj6NR.js → _BNAx3Tvj.js} +1 -1
  24. package/dist/public/assets/_BNAx3Tvj.js.br +0 -0
  25. package/dist/public/assets/{_CFUXJ_EV.js → _BNdhhhCZ.js} +1 -1
  26. package/dist/public/assets/_BNdhhhCZ.js.br +0 -0
  27. package/dist/public/assets/{_Do3JKWR_.js → _BTBSshGN.js} +1 -1
  28. package/dist/public/assets/_BTBSshGN.js.br +0 -0
  29. package/dist/public/assets/{_Dgek0-uf.js → _BeJffPsp.js} +20 -20
  30. package/dist/public/assets/_BeJffPsp.js.br +0 -0
  31. package/dist/public/assets/{_CfPkIUbn2.js → _BkJekmrD2.js} +1 -1
  32. package/dist/public/assets/_BkJekmrD2.js.br +0 -0
  33. package/dist/public/assets/{_DxXqBzi-2.js → _BpH_rTuR2.js} +1 -1
  34. package/dist/public/assets/_BpH_rTuR2.js.br +0 -0
  35. package/dist/public/assets/{_COlIeABW.js → _Bw8PBJao.js} +1 -1
  36. package/dist/public/assets/_Bw8PBJao.js.br +0 -0
  37. package/dist/public/assets/{_DvlJL4ic2.js → _C0-yuWNo2.js} +1 -1
  38. package/dist/public/assets/_C0-yuWNo2.js.br +0 -0
  39. package/dist/public/assets/{_D-3GiMqk.js → _C2LcDpnr.js} +1 -1
  40. package/dist/public/assets/_C2LcDpnr.js.br +0 -0
  41. package/dist/public/assets/{_BXPu_k6S2.js → _CB9aQE1R2.js} +1 -1
  42. package/dist/public/assets/_CB9aQE1R2.js.br +0 -0
  43. package/dist/public/assets/{_xTsO9dyr.js → _CC7YPvFo.js} +1 -1
  44. package/dist/public/assets/_CC7YPvFo.js.br +0 -0
  45. package/dist/public/assets/{_DwA5Ke8K.js → _CE_6fit5.js} +1 -1
  46. package/dist/public/assets/{_CkAFPBk32.js → _CGtQk7b82.js} +1 -1
  47. package/dist/public/assets/_CGtQk7b82.js.br +0 -0
  48. package/dist/public/assets/{_Tjz9EBxY.js → _CIjpqTI-.js} +1 -1
  49. package/dist/public/assets/_CIjpqTI-.js.br +0 -0
  50. package/dist/public/assets/{_BBDLIlVo.js → _CKhhDaA8.js} +1 -1
  51. package/dist/public/assets/_CKhhDaA8.js.br +0 -0
  52. package/dist/public/assets/{_H_RhWskE.js → _CMWsOFy3.js} +1 -1
  53. package/dist/public/assets/_CMWsOFy3.js.br +0 -0
  54. package/dist/public/assets/{_D5lK9Gwf2.js → _CN3D32Vg2.js} +1 -1
  55. package/dist/public/assets/{_BxDDNHJ5.js → _COBgV0Ex.js} +1 -1
  56. package/dist/public/assets/_COBgV0Ex.js.br +0 -0
  57. package/dist/public/assets/{_D4JXuCIt2.js → _CSZL_zs72.js} +1 -1
  58. package/dist/public/assets/_CSZL_zs72.js.br +0 -0
  59. package/dist/public/assets/{_zNWE-pQK.js → _CURT6lGE.js} +1 -1
  60. package/dist/public/assets/_CURT6lGE.js.br +0 -0
  61. package/dist/public/assets/{_D1t8bSwi.js → _CWGeGR1-.js} +1 -1
  62. package/dist/public/assets/_CWGeGR1-.js.br +0 -0
  63. package/dist/public/assets/{_CugIhU8U.js → _CXWT7nK9.js} +1 -1
  64. package/dist/public/assets/_CXWT7nK9.js.br +0 -0
  65. package/dist/public/assets/{_38k-DUKf2.js → _CfZzHhpg2.js} +1 -1
  66. package/dist/public/assets/_CfZzHhpg2.js.br +0 -0
  67. package/dist/public/assets/{_CHdLxrpY.js → _CivgOlHG.js} +1 -1
  68. package/dist/public/assets/_CivgOlHG.js.br +0 -0
  69. package/dist/public/assets/{_CHJpciL7.js → _ClQgvU1_.js} +1 -1
  70. package/dist/public/assets/_ClQgvU1_.js.br +0 -0
  71. package/dist/public/assets/{_C5f4BQIY.js → _CqrvgCsT.js} +1 -1
  72. package/dist/public/assets/_CqrvgCsT.js.br +0 -0
  73. package/dist/public/assets/{_ZqbDxYVf2.js → _Cqt93gRb2.js} +1 -1
  74. package/dist/public/assets/_Cqt93gRb2.js.br +0 -0
  75. package/dist/public/assets/{_Cw9bcUhh2.js → _Cs_y81HQ2.js} +1 -1
  76. package/dist/public/assets/_Cs_y81HQ2.js.br +0 -0
  77. package/dist/public/assets/{_a39GXCT8.js → _CvL7IC5I.js} +1 -1
  78. package/dist/public/assets/_CvL7IC5I.js.br +4 -0
  79. package/dist/public/assets/{_DdK5hMw2.js → _Cwv4XAV0.js} +1 -1
  80. package/dist/public/assets/_Cwv4XAV0.js.br +0 -0
  81. package/dist/public/assets/{_oGJRJJ6q2.js → _Cywp9KWf2.js} +1 -1
  82. package/dist/public/assets/_Cywp9KWf2.js.br +0 -0
  83. package/dist/public/assets/{_C9AM8IPU.js → _Cz2jRq37.js} +1 -1
  84. package/dist/public/assets/_Cz2jRq37.js.br +0 -0
  85. package/dist/public/assets/{_Hux__Mi3.js → _D2MGiD8V.js} +1 -1
  86. package/dist/public/assets/_D2MGiD8V.js.br +0 -0
  87. package/dist/public/assets/{_BuIiixzK.js → _D2bGG_RX.js} +1 -1
  88. package/dist/public/assets/_D2bGG_RX.js.br +0 -0
  89. package/dist/public/assets/{_Bs_Nyyxy.js → _D2x1WYfZ.js} +1 -1
  90. package/dist/public/assets/_D2x1WYfZ.js.br +0 -0
  91. package/dist/public/assets/{_BC5x_iTW.js → _D3IUSXVw.js} +1 -1
  92. package/dist/public/assets/_D3IUSXVw.js.br +0 -0
  93. package/dist/public/assets/{_rYZOlpFQ.js → _D5cWvWuM.js} +1 -1
  94. package/dist/public/assets/_D5cWvWuM.js.br +0 -0
  95. package/dist/public/assets/{_DRUs2U2L2.js → _D8BrjHYz2.js} +1 -1
  96. package/dist/public/assets/_D8BrjHYz2.js.br +0 -0
  97. package/dist/public/assets/{_BHWCRVlP2.js → _DDSIV5XW2.js} +1 -1
  98. package/dist/public/assets/_DDSIV5XW2.js.br +0 -0
  99. package/dist/public/assets/{_DIAm5nVY.js → _DDUZJRiJ.js} +1 -1
  100. package/dist/public/assets/_DDUZJRiJ.js.br +0 -0
  101. package/dist/public/assets/{_CWltQqCx.js → _DK8vvdFF.js} +1 -1
  102. package/dist/public/assets/_DK8vvdFF.js.br +0 -0
  103. package/dist/public/assets/{_Dkgc1lkg2.js → _DRA2wEgv2.js} +1 -1
  104. package/dist/public/assets/_DRA2wEgv2.js.br +0 -0
  105. package/dist/public/assets/{_C159-D0m2.js → _DVn08SF42.js} +1 -1
  106. package/dist/public/assets/_DVn08SF42.js.br +0 -0
  107. package/dist/public/assets/{_Ze6GZrZW.js → _DWIUnSeX.js} +1 -1
  108. package/dist/public/assets/_DWIUnSeX.js.br +0 -0
  109. package/dist/public/assets/{_CKzcpszv.js → _DXW9fmgm.js} +1 -1
  110. package/dist/public/assets/_DXW9fmgm.js.br +0 -0
  111. package/dist/public/assets/{_B1jIC0mN.js → _DXmHpEMS.js} +1 -1
  112. package/dist/public/assets/_DXmHpEMS.js.br +0 -0
  113. package/dist/public/assets/{_DyY6_FZE2.js → _DbpmyGgl2.js} +1 -1
  114. package/dist/public/assets/_DbpmyGgl2.js.br +0 -0
  115. package/dist/public/assets/{_CFZKcirD.js → _DcVr_TjS.js} +1 -1
  116. package/dist/public/assets/_DcVr_TjS.js.br +0 -0
  117. package/dist/public/assets/{_Jn2CGV4M.js → _De67jPbo.js} +1 -1
  118. package/dist/public/assets/_De67jPbo.js.br +0 -0
  119. package/dist/public/assets/{_CWzD5LyS.js → _DoAI1Cio.js} +1 -1
  120. package/dist/public/assets/_DoAI1Cio.js.br +0 -0
  121. package/dist/public/assets/{_CS2Z8-652.js → _DsFfIB9W2.js} +1 -1
  122. package/dist/public/assets/_DsFfIB9W2.js.br +0 -0
  123. package/dist/public/assets/{_DzBcg-pn.js → _Dxbfkc2B.js} +1 -1
  124. package/dist/public/assets/_Dxbfkc2B.js.br +0 -0
  125. package/dist/public/assets/{_D5pA1_Bu.js → _DyY5UoNQ.js} +1 -1
  126. package/dist/public/assets/_DyY5UoNQ.js.br +0 -0
  127. package/dist/public/assets/{_B3PCaRpt2.js → _IeYqvfsh2.js} +1 -1
  128. package/dist/public/assets/_IeYqvfsh2.js.br +0 -0
  129. package/dist/public/assets/{_C9q_jsUx.js → _J_yTPbzZ.js} +1 -1
  130. package/dist/public/assets/_J_yTPbzZ.js.br +0 -0
  131. package/dist/public/assets/{_zBHCIvDr.js → _P3pi7WhS.js} +1 -1
  132. package/dist/public/assets/_P3pi7WhS.js.br +0 -0
  133. package/dist/public/assets/_WenLkIjY.js +1536 -0
  134. package/dist/public/assets/_WenLkIjY.js.br +0 -0
  135. package/dist/public/assets/{_BC0tZwbo.js → _XM5e4Yae.js} +1 -1
  136. package/dist/public/assets/_XM5e4Yae.js.br +0 -0
  137. package/dist/public/assets/{_BHJncayq.js → _ZQ-ezWX8.js} +1 -1
  138. package/dist/public/assets/_ZQ-ezWX8.js.br +0 -0
  139. package/dist/public/assets/{_CeUd4dPX2.js → _ahQRSeLl2.js} +1 -1
  140. package/dist/public/assets/_ahQRSeLl2.js.br +0 -0
  141. package/dist/public/assets/{_Crj20mO1.js → _e7CPMPrv.js} +1 -1
  142. package/dist/public/assets/_e7CPMPrv.js.br +0 -0
  143. package/dist/public/assets/{_DmCXj862.js → _i7IDJStN.js} +1 -1
  144. package/dist/public/assets/_i7IDJStN.js.br +0 -0
  145. package/dist/public/assets/{_xg3o9zgg.js → _idtdrYvz.js} +1 -1
  146. package/dist/public/assets/_idtdrYvz.js.br +0 -0
  147. package/dist/public/assets/{_B0uVeTlg.js → _lolrb9dN.js} +1 -1
  148. package/dist/public/assets/_lolrb9dN.js.br +0 -0
  149. package/dist/public/assets/{_7YSKrnqP.js → _m_DP0WPC.js} +1 -1
  150. package/dist/public/assets/_m_DP0WPC.js.br +0 -0
  151. package/dist/public/assets/{_DyS4BOQr.js → _qNUpyBGd.js} +1 -1
  152. package/dist/public/assets/_qNUpyBGd.js.br +0 -0
  153. package/dist/public/assets/{_Drn51w342.js → _sCtbaNyE2.js} +1 -1
  154. package/dist/public/assets/_sCtbaNyE2.js.br +0 -0
  155. package/dist/public/assets/app-page-5plmHdjK.css +1 -0
  156. package/dist/public/assets/app-page-5plmHdjK.css.br +0 -0
  157. package/dist/public/assets/diff-view-DzsI9FBu.css +1 -0
  158. package/dist/public/assets/diff-view-DzsI9FBu.css.br +0 -0
  159. package/dist/public/assets/new-LrOl93NC.js +1 -0
  160. package/dist/public/assets/settings-LrOl93NC.js +1 -0
  161. package/dist/public/assets/w-LrOl93NC.js +1 -0
  162. package/dist/public/assets/w._-GgKc86fL.js +1 -0
  163. package/dist/public/assets/w._-LrOl93NC.js +1 -0
  164. package/dist/public/assets/wasm-S0UXjx1m.js +1 -0
  165. package/dist/public/assets/wasm-S0UXjx1m.js.br +0 -0
  166. package/dist/public/assets/worker-DZo603XT.js +161 -0
  167. package/dist/public/assets/worker-DZo603XT.js.br +0 -0
  168. package/lib/setup/agents.json +13 -0
  169. package/package.json +1 -1
  170. package/dist/_DjE4lBg7.js +0 -2
  171. package/dist/public/assets/_38k-DUKf2.js.br +0 -0
  172. package/dist/public/assets/_7YSKrnqP.js.br +0 -0
  173. package/dist/public/assets/_B0uVeTlg.js.br +0 -0
  174. package/dist/public/assets/_B1jIC0mN.js.br +0 -0
  175. package/dist/public/assets/_B3PCaRpt2.js.br +0 -0
  176. package/dist/public/assets/_B59BODZo.js.br +0 -0
  177. package/dist/public/assets/_BBDLIlVo.js.br +0 -0
  178. package/dist/public/assets/_BC0tZwbo.js.br +0 -3
  179. package/dist/public/assets/_BC5x_iTW.js.br +0 -0
  180. package/dist/public/assets/_BHJncayq.js.br +0 -0
  181. package/dist/public/assets/_BHWCRVlP2.js.br +0 -0
  182. package/dist/public/assets/_BXPu_k6S2.js.br +0 -0
  183. package/dist/public/assets/_BmGbWdBH.js.br +0 -0
  184. package/dist/public/assets/_Bs_Nyyxy.js.br +0 -0
  185. package/dist/public/assets/_BtA6ftQw.js +0 -1532
  186. package/dist/public/assets/_BtA6ftQw.js.br +0 -0
  187. package/dist/public/assets/_BuIiixzK.js.br +0 -0
  188. package/dist/public/assets/_BxDDNHJ5.js.br +0 -0
  189. package/dist/public/assets/_C159-D0m2.js.br +0 -0
  190. package/dist/public/assets/_C5f4BQIY.js.br +0 -0
  191. package/dist/public/assets/_C9AM8IPU.js.br +0 -0
  192. package/dist/public/assets/_C9q_jsUx.js.br +0 -0
  193. package/dist/public/assets/_CFUXJ_EV.js.br +0 -0
  194. package/dist/public/assets/_CFZKcirD.js.br +0 -0
  195. package/dist/public/assets/_CHJpciL7.js.br +0 -0
  196. package/dist/public/assets/_CHdLxrpY.js.br +0 -0
  197. package/dist/public/assets/_CKzcpszv.js.br +0 -0
  198. package/dist/public/assets/_COlIeABW.js.br +0 -0
  199. package/dist/public/assets/_CS2Z8-652.js.br +0 -0
  200. package/dist/public/assets/_CWltQqCx.js.br +0 -0
  201. package/dist/public/assets/_CWzD5LyS.js.br +0 -0
  202. package/dist/public/assets/_CeUd4dPX2.js.br +0 -0
  203. package/dist/public/assets/_CfPkIUbn2.js.br +0 -0
  204. package/dist/public/assets/_CkAFPBk32.js.br +0 -0
  205. package/dist/public/assets/_Crj20mO1.js.br +0 -0
  206. package/dist/public/assets/_CugIhU8U.js.br +0 -0
  207. package/dist/public/assets/_Cw9bcUhh2.js.br +0 -0
  208. package/dist/public/assets/_D-3GiMqk.js.br +0 -0
  209. package/dist/public/assets/_D-GUbNXT2.js.br +0 -0
  210. package/dist/public/assets/_D1t8bSwi.js.br +0 -0
  211. package/dist/public/assets/_D4JXuCIt2.js.br +0 -0
  212. package/dist/public/assets/_D5pA1_Bu.js.br +0 -0
  213. package/dist/public/assets/_D8Rch_qk2.js.br +0 -0
  214. package/dist/public/assets/_DIAm5nVY.js.br +0 -0
  215. package/dist/public/assets/_DMuoSYnd.js.br +0 -0
  216. package/dist/public/assets/_DRUs2U2L2.js.br +0 -0
  217. package/dist/public/assets/_DdK5hMw2.js.br +0 -0
  218. package/dist/public/assets/_DfpKlxWe2.js.br +0 -0
  219. package/dist/public/assets/_Dgek0-uf.js.br +0 -0
  220. package/dist/public/assets/_DhjTrs6h.js.br +0 -0
  221. package/dist/public/assets/_Dkgc1lkg2.js.br +0 -0
  222. package/dist/public/assets/_DmCXj862.js.br +0 -0
  223. package/dist/public/assets/_Do3JKWR_.js.br +0 -0
  224. package/dist/public/assets/_DpbFj6NR.js.br +0 -0
  225. package/dist/public/assets/_Drn51w342.js.br +0 -0
  226. package/dist/public/assets/_DvlJL4ic2.js.br +0 -0
  227. package/dist/public/assets/_DxXqBzi-2.js.br +0 -0
  228. package/dist/public/assets/_DyS4BOQr.js.br +0 -0
  229. package/dist/public/assets/_DyY6_FZE2.js.br +0 -0
  230. package/dist/public/assets/_DzBcg-pn.js.br +0 -0
  231. package/dist/public/assets/_H_RhWskE.js.br +0 -0
  232. package/dist/public/assets/_Hux__Mi3.js.br +0 -0
  233. package/dist/public/assets/_Jn2CGV4M.js.br +0 -0
  234. package/dist/public/assets/_NAnVv-uy.js.br +0 -0
  235. package/dist/public/assets/_Tjz9EBxY.js.br +0 -0
  236. package/dist/public/assets/_Ze6GZrZW.js.br +0 -0
  237. package/dist/public/assets/_ZqbDxYVf2.js.br +0 -0
  238. package/dist/public/assets/_a39GXCT8.js.br +0 -0
  239. package/dist/public/assets/_oGJRJJ6q2.js.br +0 -0
  240. package/dist/public/assets/_rYZOlpFQ.js.br +0 -0
  241. package/dist/public/assets/_xTsO9dyr.js.br +0 -0
  242. package/dist/public/assets/_xg3o9zgg.js.br +0 -0
  243. package/dist/public/assets/_zBHCIvDr.js.br +0 -0
  244. package/dist/public/assets/_zNWE-pQK.js.br +0 -0
  245. package/dist/public/assets/app-page-BQvp9SF4.css +0 -1
  246. package/dist/public/assets/app-page-BQvp9SF4.css.br +0 -0
  247. package/dist/public/assets/diff-view-7UYLREHv.css +0 -1
  248. package/dist/public/assets/diff-view-7UYLREHv.css.br +0 -0
  249. package/dist/public/assets/new-bAuaAH8k.js +0 -1
  250. package/dist/public/assets/settings-bAuaAH8k.js +0 -1
  251. package/dist/public/assets/w-bAuaAH8k.js +0 -1
  252. package/dist/public/assets/w._-D4469Kq9.js +0 -1
  253. package/dist/public/assets/w._-bAuaAH8k.js +0 -1
@@ -1,4 +1,4 @@
1
- import { $ as _el_resume, A as iconBtnRow, B as _attr_input_value, F as tone, L as _attr, Ot as writeScope, Q as _el_read_error, R as _attr_class, S as icon_xmark_default, U as _attr_select_value, V as _attr_option_value, W as _attr_style, Y as _content_resume, Z as _el, _ as icon_refresh_default, _t as _serialize_guard, a as diffPos, bt as _subscribe, c as setDiffPos, ct as _if, dt as _resume_branch, et as _escape, ft as _scope_id, g as icon_back_default, gt as _sep, h as icon_search_default, ht as _script, i as diffFilter, k as iconBtnLg, l as setDiffScope, lt as _peek_scope_id, mt as _scope_with_id, n as findInput, o as diffScope, ot as _html, p as fuzzy, pt as _scope_reason, r as icon_sidebar_default, rt as _for_of, s as diffTreeOpen, t as findIconBtn, tt as _existing_scope, ut as _resume, vt as _serialize_if, w as repoLabel, x as toast_default, xt as _template, yt as _set_serialize_reason, z as _attr_details_or_dialog_open } from "./_CnoncJm9.js";
1
+ import { $ as _el_resume, A as iconBtnRow, B as _attr_input_value, F as tone, L as _attr, Ot as writeScope, Q as _el_read_error, R as _attr_class, S as icon_xmark_default, U as _attr_select_value, V as _attr_option_value, W as _attr_style, Y as _content_resume, Z as _el, _ as icon_refresh_default, _t as _serialize_guard, a as diffPos, bt as _subscribe, c as setDiffPos, ct as _if, dt as _resume_branch, et as _escape, ft as _scope_id, g as icon_back_default, gt as _sep, h as icon_search_default, ht as _script, i as diffFilter, k as iconBtnLg, l as setDiffScope, lt as _peek_scope_id, mt as _scope_with_id, n as findInput, o as diffScope, ot as _html, p as fuzzy, pt as _scope_reason, r as icon_sidebar_default, rt as _for_of, s as diffTreeOpen, t as findIconBtn, tt as _existing_scope, ut as _resume, vt as _serialize_if, w as repoLabel, x as toast_default, xt as _template, yt as _set_serialize_reason, z as _attr_details_or_dialog_open } from "./_BLfl5xCk.js";
2
2
  //#region src/client/router.ts
3
3
  function urlFor(r) {
4
4
  if (r.view === "settings") return "/settings";
@@ -242,31 +242,31 @@ function treeDirs(files) {
242
242
  };
243
243
  return build(root, "", "", -1);
244
244
  }
245
- var treeToggle = "_du _0 _j";
245
+ var treeToggle = "_ez _0 _j";
246
246
  //#endregion
247
247
  //#region src/tags/diff-send.marko
248
- var diff_send_default = _template("h", (input) => {
248
+ var diff_send_default = _template("i", (input) => {
249
249
  const $scope0_reason = _scope_reason(), $sg__input_sessions = _serialize_guard($scope0_reason, 0), $si__input_sessions = _serialize_if($scope0_reason, 0);
250
250
  const $scope0_id = _scope_id();
251
251
  let sending = false;
252
252
  let sendTarget = null;
253
253
  const sessions = input.sessions || [];
254
254
  const sendPick = sessions.some((s) => s.id === sendTarget) ? sendTarget : sessions[0]?.id ?? null;
255
- _html(`<span${_attr_class("_eX")}><button type=button${_attr_class("_o")} title="Copy comments as markdown">Copy${_el_resume($scope0_id, "c")}</button>${_el_resume($scope0_id, "b")}`);
255
+ _html(`<span${_attr_class("_e8")}><button type=button${_attr_class("_o")} title="Copy comments as markdown">Copy${_el_resume($scope0_id, "c")}</button>${_el_resume($scope0_id, "b")}`);
256
256
  _if(() => {
257
257
  if (sessions.length === 1) {
258
258
  const $scope1_id = _scope_id();
259
259
  _html(`<button type=button${_attr_class(["_o", "_p"])}${_attr("disabled", sending)}>${`Send to ${_escape(`${sessions[0].title || sessions[0].agent}`)}`}${_el_resume($scope1_id, "b")}</button>${_el_resume($scope1_id, "a")}`);
260
- _script($scope1_id, "h1");
260
+ _script($scope1_id, "i1");
261
261
  writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
262
262
  return 0;
263
263
  } else if (sessions.length) {
264
264
  const $scope2_id = _scope_id();
265
- _html(`<span${_attr_class("_eY")}><button type=button${_attr_class(["_p", "_eZ"])}${_attr("disabled", sending)}>Send to${_el_resume($scope2_id, "c")}</button>${_el_resume($scope2_id, "b")}`);
265
+ _html(`<span${_attr_class("_e9")}><button type=button${_attr_class(["_p", "_e_"])}${_attr("disabled", sending)}>Send to${_el_resume($scope2_id, "c")}</button>${_el_resume($scope2_id, "b")}`);
266
266
  _attr_select_value($scope2_id, "d", sendTarget, _resume((_new_sendTarget) => {
267
267
  sendTarget = _new_sendTarget;
268
- }, "h0", $scope2_id), () => {
269
- _html(`<select${_attr_class("_e0")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
268
+ }, "i0", $scope2_id), () => {
269
+ _html(`<select${_attr_class("_fa")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
270
270
  _for_of(sessions, (s) => {
271
271
  const $scope3_id = _scope_id();
272
272
  _html(`<option${_attr_option_value(s.id)}>${_escape(s.title || s.agent)}${_el_resume($scope3_id, "b", $sg__input_sessions)}</option>${_el_resume($scope3_id, "a", $sg__input_sessions)}`);
@@ -274,13 +274,13 @@ var diff_send_default = _template("h", (input) => {
274
274
  }, "id", $scope2_id, "d", $sg__input_sessions, 1, $sg__input_sessions, "</select>", 1);
275
275
  });
276
276
  _html("</span>");
277
- _script($scope2_id, "h2");
277
+ _script($scope2_id, "i2");
278
278
  writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
279
279
  return 1;
280
280
  }
281
281
  }, $scope0_id, "d", 1, $sg__input_sessions, $sg__input_sessions, 0, 1);
282
282
  _html("</span>");
283
- _script($scope0_id, "h3");
283
+ _script($scope0_id, "i3");
284
284
  writeScope($scope0_id, {
285
285
  h: input.onCopy,
286
286
  i: input.onSend,
@@ -1630,27 +1630,57 @@ function createMissingFile() {
1630
1630
  contents: ""
1631
1631
  };
1632
1632
  }
1633
- //#endregion
1634
- //#region src/client/diff-search.ts
1635
- var MAX_HITS = 200;
1636
1633
  var MAX_PER_FILE = 40;
1637
1634
  /** Substring search over path + lines pierre actually renders (hunk
1638
1635
  * change + context). Full-file old/new text is much larger than the
1639
1636
  * visible diff — counting those made Next feel broken ("32 matches"
1640
1637
  * with nothing on screen for many steps). */
1638
+ /** Last search, keyed by files identity + query: the find box asks up to
1639
+ * three times per keystroke (immediate paint, debounced state, template). */
1640
+ var last;
1641
+ /** Files with hits, or null when the list hit its cap and so can't say
1642
+ * which files are clean (paint then falls back to walking every host). */
1643
+ function hitKeys(hits) {
1644
+ return hits.length >= 200 ? null : [...new Set(hits.map((h) => h.key))];
1645
+ }
1641
1646
  function searchDiffFiles(files, raw) {
1642
1647
  const query = raw.trim();
1643
1648
  if (!query) return [];
1649
+ if (last && last.files === files && last.query === query) return last.hits;
1650
+ const hits = searchUncached(files, query);
1651
+ last = {
1652
+ files,
1653
+ query,
1654
+ hits
1655
+ };
1656
+ return hits;
1657
+ }
1658
+ /** Hunk line sets and split lines are query-independent and dominate the
1659
+ * cost (pierre re-parses the whole file); keep them per file object. */
1660
+ var parsed = /* @__PURE__ */ new WeakMap();
1661
+ function parsedFor(file) {
1662
+ let p = parsed.get(file);
1663
+ if (!p) {
1664
+ p = {
1665
+ visible: visibleHunkLines(file.old, file.new),
1666
+ newLines: file.new == null ? null : file.new.split("\n"),
1667
+ oldLines: file.old == null ? null : file.old.split("\n")
1668
+ };
1669
+ parsed.set(file, p);
1670
+ }
1671
+ return p;
1672
+ }
1673
+ function searchUncached(files, query) {
1644
1674
  const sensitive = /[A-Z]/.test(query);
1645
1675
  const needle = sensitive ? query : query.toLowerCase();
1646
1676
  const hits = [];
1647
1677
  for (const file of files) {
1648
- if (hits.length >= MAX_HITS) break;
1678
+ if (hits.length >= 200) break;
1649
1679
  const before = hits.length;
1650
- const visible = visibleHunkLines(file.old, file.new);
1680
+ const { visible, newLines, oldLines } = parsedFor(file);
1651
1681
  const seen = /* @__PURE__ */ new Set();
1652
- scanSide(file, file.new, "additions", needle, sensitive, seen, hits, visible.additions);
1653
- scanSide(file, file.old, "deletions", needle, sensitive, seen, hits, visible.deletions);
1682
+ scanSide(file, newLines, "additions", needle, sensitive, seen, hits, visible.additions);
1683
+ scanSide(file, oldLines, "deletions", needle, sensitive, seen, hits, visible.deletions);
1654
1684
  if (hits.length === before && pathMeaningfulMatch(file.path, needle, sensitive)) hits.push({
1655
1685
  key: file.key,
1656
1686
  path: file.path,
@@ -1703,12 +1733,11 @@ function visibleHunkLines(oldText, newText) {
1703
1733
  deletions
1704
1734
  };
1705
1735
  }
1706
- function scanSide(file, text, side, needle, sensitive, seen, hits, visible) {
1707
- if (!text || hits.length >= MAX_HITS || !visible.size) return;
1736
+ function scanSide(file, lines, side, needle, sensitive, seen, hits, visible) {
1737
+ if (!lines || hits.length >= 200 || !visible.size) return;
1708
1738
  let fromFile = 0;
1709
- const lines = text.split("\n");
1710
1739
  for (let i = 0; i < lines.length; i++) {
1711
- if (hits.length >= MAX_HITS || fromFile >= MAX_PER_FILE) return;
1740
+ if (hits.length >= 200 || fromFile >= MAX_PER_FILE) return;
1712
1741
  const lineNo = i + 1;
1713
1742
  if (!visible.has(lineNo)) continue;
1714
1743
  const line = lines[i];
@@ -1736,7 +1765,7 @@ function clip(line, at, len) {
1736
1765
  //#endregion
1737
1766
  //#region src/tags/diff-find.marko
1738
1767
  var setSearchPaint$1;
1739
- var diff_find_default = _template("g", (input) => {
1768
+ var diff_find_default = _template("h", (input) => {
1740
1769
  const $scope0_reason = _scope_reason();
1741
1770
  const $scope0_id = _scope_id();
1742
1771
  let open = input.open;
@@ -1754,27 +1783,28 @@ var diff_find_default = _template("g", (input) => {
1754
1783
  const emit = _resume((q, i) => {
1755
1784
  if (!live.open) return;
1756
1785
  const list = searchDiffFiles(input.files, q);
1757
- [...new Set(list.map((h) => h.key))];
1786
+ const keys = [...new Set(list.map((h) => h.key))];
1758
1787
  if (!list.length) {
1759
1788
  hi = 0;
1760
- setSearchPaint$1(q, null);
1789
+ setSearchPaint$1(q, null, keys);
1761
1790
  return;
1762
1791
  }
1763
1792
  hi = (i % list.length + list.length) % list.length;
1764
1793
  const hit = list[hi];
1765
- setSearchPaint$1(q, hit);
1766
- }, "g1", $scope0_id);
1794
+ setSearchPaint$1(q, hit, hitKeys(list) ?? void 0);
1795
+ }, "h1", $scope0_id);
1767
1796
  const type = _resume((v) => {
1768
1797
  if (!live.open) return;
1769
1798
  query = v;
1770
1799
  hi = 0;
1771
- setSearchPaint$1(v, searchDiffFiles(input.files, v)[0] ?? null);
1800
+ const list = searchDiffFiles(input.files, v);
1801
+ setSearchPaint$1(v, list[0] ?? null, hitKeys(list) ?? void 0);
1772
1802
  if (box.timer) clearTimeout(box.timer);
1773
1803
  box.timer = setTimeout(() => {
1774
1804
  box.timer = 0;
1775
1805
  emit(v, 0);
1776
1806
  }, 80);
1777
- }, "g2", $scope0_id);
1807
+ }, "h2", $scope0_id);
1778
1808
  const next = _resume((dir) => {
1779
1809
  if (!live.open) return;
1780
1810
  if (box.timer) {
@@ -1782,7 +1812,7 @@ var diff_find_default = _template("g", (input) => {
1782
1812
  box.timer = 0;
1783
1813
  }
1784
1814
  emit(query || "", (at < 0 ? 0 : at) + dir);
1785
- }, "g3", $scope0_id);
1815
+ }, "h3", $scope0_id);
1786
1816
  const close = _resume(() => {
1787
1817
  open = false;
1788
1818
  live.open = false;
@@ -1791,7 +1821,7 @@ var diff_find_default = _template("g", (input) => {
1791
1821
  box.timer = 0;
1792
1822
  }
1793
1823
  setSearchPaint$1("", null);
1794
- }, "g4", $scope0_id);
1824
+ }, "h4", $scope0_id);
1795
1825
  const focusInput = _resume(() => {
1796
1826
  const el = ((findEl) => findEl())(_el_read_error);
1797
1827
  if (!el) return;
@@ -1801,15 +1831,15 @@ var diff_find_default = _template("g", (input) => {
1801
1831
  el.focus();
1802
1832
  el.select();
1803
1833
  }, 0);
1804
- }, "g5", $scope0_id);
1805
- _html(`<div${_attr_class(["_e2", !open && "_e1"])} aria-hidden=${open ? "false" : "true"}><input${_attr_input_value($scope0_id, "b", query || "", _resume(function(v) {
1834
+ }, "h5", $scope0_id);
1835
+ _html(`<div${_attr_class(["_fc", !open && "_fb"])} aria-hidden=${open ? "false" : "true"}><input${_attr_input_value($scope0_id, "b", query || "", _resume(function(v) {
1806
1836
  type(v);
1807
- }, "g0", $scope0_id))}${_attr_class(findInput)} type=search enterkeyhint=search autocomplete=off tabindex=${open ? "0" : "-1"} placeholder="Find in review" aria-label="Find in review">${_el_resume($scope0_id, "b")}<span${_attr_class("_e5")}>${open && (query || "").trim() ? hits.length ? `${_escape(`${at + 1}`)}/${_escape(`${hits.length}`)}` : "0/0" : ""}${_el_resume($scope0_id, "d")}</span><button type=button${_attr_class(findIconBtn)} title="Previous match"${_attr("disabled", !hits.length || !open)} tabindex=${open ? "0" : "-1"}>↑</button>${_el_resume($scope0_id, "e")}<button type=button${_attr_class(findIconBtn)} title="Next match"${_attr("disabled", !hits.length || !open)} tabindex=${open ? "0" : "-1"}>↓</button>${_el_resume($scope0_id, "f")}<button type=button${_attr_class(findIconBtn)} title="Close find" tabindex=${open ? "0" : "-1"}>`);
1837
+ }, "h0", $scope0_id))}${_attr_class(findInput)} type=search enterkeyhint=search autocomplete=off tabindex=${open ? "0" : "-1"} placeholder="Find in review" aria-label="Find in review">${_el_resume($scope0_id, "b")}<span${_attr_class("_ff")}>${open && (query || "").trim() ? hits.length ? `${_escape(`${at + 1}`)}/${_escape(`${hits.length}`)}` : "0/0" : ""}${_el_resume($scope0_id, "d")}</span><button type=button${_attr_class(findIconBtn)} title="Previous match"${_attr("disabled", !hits.length || !open)} tabindex=${open ? "0" : "-1"}>↑</button>${_el_resume($scope0_id, "e")}<button type=button${_attr_class(findIconBtn)} title="Next match"${_attr("disabled", !hits.length || !open)} tabindex=${open ? "0" : "-1"}>↓</button>${_el_resume($scope0_id, "f")}<button type=button${_attr_class(findIconBtn)} title="Close find" tabindex=${open ? "0" : "-1"}>`);
1808
1838
  icon_xmark_default({ size: 14 });
1809
1839
  _html(`</button>${_el_resume($scope0_id, "g")}</div>${_el_resume($scope0_id, "a")}`);
1810
- _script($scope0_id, "g6");
1811
- _script($scope0_id, "g7");
1812
- _script($scope0_id, "g8");
1840
+ _script($scope0_id, "h6");
1841
+ _script($scope0_id, "h7");
1842
+ _script($scope0_id, "h8");
1813
1843
  writeScope($scope0_id, {
1814
1844
  k: _serialize_if($scope0_reason, 1) && input.open,
1815
1845
  l: _serialize_if($scope0_reason, 0) && input.openChange,
@@ -1901,15 +1931,15 @@ function shortBranch(name, wsBranch = "", wsName = "") {
1901
1931
  }
1902
1932
  return shortHeadFallback(head);
1903
1933
  }
1904
- var repoWorktree = "_gm _x";
1905
- var repoTitle = "_gs _w";
1934
+ var repoWorktree = "_f3 _x";
1935
+ var repoTitle = "_f9 _w";
1906
1936
  tone.warn;
1907
- var diff_file_default = _template("f", (input) => {
1937
+ var diff_file_default = _template("g", (input) => {
1908
1938
  _scope_reason();
1909
1939
  const $scope0_id = _scope_id();
1910
- _el($scope0_id, "f0");
1940
+ _el($scope0_id, "g0");
1911
1941
  _html(`<div${_attr_class(["_gW", input.class])}></div>${_el_resume($scope0_id, "a")}`);
1912
- _script($scope0_id, "f1");
1942
+ _script($scope0_id, "g1");
1913
1943
  writeScope($scope0_id, {
1914
1944
  e: input.file,
1915
1945
  f: input.comments,
@@ -1927,7 +1957,7 @@ var diff_file_default = _template("f", (input) => {
1927
1957
  });
1928
1958
  //#endregion
1929
1959
  //#region src/tags/review-section.marko
1930
- var review_section_default = _template("s", (input) => {
1960
+ var review_section_default = _template("t", (input) => {
1931
1961
  const $scope0_reason = _scope_reason(), $sg__input_repo = _serialize_guard($scope0_reason, 34), $si__input_repo = _serialize_if($scope0_reason, 34), $sg__input_repo__OR__input_files__OR__input_shownKeys__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_collapsible__OR__input_collapsed__OR__input_localDiffers__OR__input_onlyNew__OR__input_opened = _serialize_guard($scope0_reason, 31), $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName = _serialize_guard($scope0_reason, 13), $sg__input_repo__OR__input_files_length = _serialize_guard($scope0_reason, 0), $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName = _serialize_if($scope0_reason, 13), $sg__input_files__OR__input_shownKeys = _serialize_guard($scope0_reason, 3), $sg__input_files__OR__input_onlyNew = _serialize_guard($scope0_reason, 4), $sg__input_files = _serialize_guard($scope0_reason, 35), $sg__input_files__OR__input_commentsByFile = _serialize_guard($scope0_reason, 5), $sg__input_files__OR__input_commentsByFile__OR__input_collapsedFiles = _serialize_guard($scope0_reason, 18), $si__input_files__OR__input_collapsedFiles = _serialize_if($scope0_reason, 6), $si__input_files = _serialize_if($scope0_reason, 35), $si__input_files__OR__input_commentsByFile = _serialize_if($scope0_reason, 5), $si__input_findHit_key = _serialize_if($scope0_reason, 43), $sg__input_files__OR__input_collapsedFiles = _serialize_guard($scope0_reason, 6), $si__input_onFileToggle = _serialize_if($scope0_reason, 44), $si__input_repo__OR__input_files__OR__input_shownKeys = _serialize_if($scope0_reason, 11), $si__input_collapsible__OR__input_collapsed = _serialize_if($scope0_reason, 9), $si__input_files__OR__input_collapsible__OR__input_collapsed__OR__input_opened = _serialize_if($scope0_reason, 24), $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_localDiffers = _serialize_if($scope0_reason, 23), $si__input_files__OR__input_shownKeys = _serialize_if($scope0_reason, 3), $si__input_files__OR__input_onlyNew = _serialize_if($scope0_reason, 4), $si__input = _serialize_if($scope0_reason, 33), $si__input_draft = _serialize_if($scope0_reason, 46), $si__input_sessions = _serialize_if($scope0_reason, 47), $si__input_onSelect = _serialize_if($scope0_reason, 48), $si__input_onSaveComment = _serialize_if($scope0_reason, 49), $si__input_onSendDraft = _serialize_if($scope0_reason, 50), $si__input_onCancelDraft = _serialize_if($scope0_reason, 51), $si__input_onDeleteComment = _serialize_if($scope0_reason, 52), $si__input_onSendComment = _serialize_if($scope0_reason, 53), $si__input_onError = _serialize_if($scope0_reason, 54), $si__input_shownKeys = _serialize_if($scope0_reason, 36), $si__input_commentsByFile = _serialize_if($scope0_reason, 41), $si__input_collapsedFiles = _serialize_if($scope0_reason, 42), $si__input_findHit_line = _serialize_if($scope0_reason, 45);
1932
1962
  const $scope0_id = _scope_id();
1933
1963
  const $input__closures = /* @__PURE__ */ new Set();
@@ -1965,16 +1995,16 @@ var review_section_default = _template("s", (input) => {
1965
1995
  const newCount = input.files.filter((f) => f.changedSince).length;
1966
1996
  const compare$1 = reviewCompareLabel(repo.pr?.baseRefName || repo.base, repo.pr?.headRefName || repo.branch, input.workspaceBranch, input.workspaceName);
1967
1997
  const prTitle = repo.pr ? `${repo.pr.title}: ${repo.pr.headRefName} ${repo.head} vs ${repo.base} ${repo.baseSha}` : "";
1968
- _html(`<section${_attr_class("_gi")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownCount && !repo.pr && input.findHit?.repo !== repo.id)}><div${_attr_class(["_gj", { ["_gk"]: input.collapsible && input.collapsed }])}>`);
1998
+ _html(`<section${_attr_class("_fZ")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownCount && !repo.pr && input.findHit?.repo !== repo.id)}><div${_attr_class(["_f0", { ["_f1"]: input.collapsible && input.collapsed }])}>`);
1969
1999
  _if(() => {
1970
2000
  if (input.collapsible) {
1971
2001
  const $scope1_id = _scope_id();
1972
- _html(`<button type=button${_attr_class("_gl")} aria-expanded=${!input.collapsed ? "true" : "false"} aria-busy=${input.expanding ? "true" : "false"}${input.collapsed ? _attr("title", `Show ${countLabel} files`) : " title=\"Hide files\""}><span${_attr_class([
1973
- "_gF",
1974
- !input.collapsed && "_gG",
1975
- input.expanding && "_gH"
2002
+ _html(`<button type=button${_attr_class("_f2")} aria-expanded=${!input.collapsed ? "true" : "false"} aria-busy=${input.expanding ? "true" : "false"}${input.collapsed ? _attr("title", `Show ${countLabel} files`) : " title=\"Hide files\""}><span${_attr_class([
2003
+ "_gl",
2004
+ !input.collapsed && "_gm",
2005
+ input.expanding && "_gn"
1976
2006
  ])} aria-hidden=true>${input.collapsed ? "▸" : "▾"}${_el_resume($scope1_id, "c", _serialize_guard($scope0_reason, 39))}</span>${_el_resume($scope1_id, "b", _serialize_guard($scope0_reason, 10))}<span${_attr_class(repoWorktree)}>${_escape(repo.worktree)}${_el_resume($scope1_id, "e", $sg__input_repo)}</span></button>${_el_resume($scope1_id, "a")}`);
1977
- _script($scope1_id, "s8");
2007
+ _script($scope1_id, "t8");
1978
2008
  writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
1979
2009
  return 0;
1980
2010
  } else {
@@ -1997,14 +2027,14 @@ var review_section_default = _template("s", (input) => {
1997
2027
  return 1;
1998
2028
  }
1999
2029
  }, $scope0_id, "d", $sg__input_repo, $sg__input_repo, $sg__input_repo__OR__input_files__OR__input_shownKeys__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_collapsible__OR__input_collapsed__OR__input_localDiffers__OR__input_onlyNew__OR__input_opened);
2000
- _html(`<span${_attr_class("_gt")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_I", "_gu"])}>${_escape(compare$1.base)}${_el_resume($scope0_id, "g", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_K", "_gw"])} aria-hidden=true>vs</span><span${_attr_class(["_I", "_gv"])}>${_escape(compare$1.head)}${_el_resume($scope0_id, "j", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2030
+ _html(`<span${_attr_class("_f_")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_I", "_ga"])}>${_escape(compare$1.base)}${_el_resume($scope0_id, "g", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_K", "_gc"])} aria-hidden=true>vs</span><span${_attr_class(["_I", "_gb"])}>${_escape(compare$1.head)}${_el_resume($scope0_id, "j", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2001
2031
  _if(() => {
2002
2032
  if (compare$1.topic) {
2003
2033
  const $scope15_id = _scope_id();
2004
2034
  _html(`<span${_attr_class([
2005
2035
  "_I",
2006
2036
  tone.accent,
2007
- "_gx"
2037
+ "_gd"
2008
2038
  ])}>${_escape(compare$1.topic)}${_el_resume($scope15_id, "b", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2009
2039
  $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName && writeScope($scope15_id, { _: _scope_with_id($scope0_id) });
2010
2040
  return 0;
@@ -2017,9 +2047,9 @@ var review_section_default = _template("s", (input) => {
2017
2047
  _html(`<button type=button${_attr_class([
2018
2048
  "_I",
2019
2049
  tone.warn,
2020
- "_gy"
2050
+ "_ge"
2021
2051
  ])}${_attr("title", `origin/${repo.pr.headRefName} ${repo.head} · GitHub ${repo.pr.headRefOid}. Reload to re-ask GitHub`)}${_attr("disabled", input.loading)}>behind GitHub ${_sep($sg__input_repo)}${_escape(shortSha(repo.head, 7))}${_el_resume($scope2_id, "b", $sg__input_repo)} → ${_sep($sg__input_repo)}${_escape(shortSha(repo.pr.headRefOid, 7))}${_el_resume($scope2_id, "c", $sg__input_repo)}</button>${_el_resume($scope2_id, "a")}`);
2022
- _script($scope2_id, "s9");
2052
+ _script($scope2_id, "t9");
2023
2053
  writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
2024
2054
  return 0;
2025
2055
  }
@@ -2027,7 +2057,7 @@ var review_section_default = _template("s", (input) => {
2027
2057
  _if(() => {
2028
2058
  if (repo.contained && input.files.length) {
2029
2059
  const $scope13_id = _scope_id();
2030
- _html(`<span${_attr_class(["_I", "_gy"])}${_attr("title", `${repo.pr ? `#${repo.pr.number}` : repo.branch} is already in ${repo.base}; showing the working tree only`)}>already in ${_sep($sg__input_repo)}${_escape(repo.base)}${_el_resume($scope13_id, "b", $sg__input_repo)}</span>${_el_resume($scope13_id, "a", $sg__input_repo)}`);
2060
+ _html(`<span${_attr_class(["_I", "_ge"])}${_attr("title", `${repo.pr ? `#${repo.pr.number}` : repo.branch} is already in ${repo.base}; showing the working tree only`)}>already in ${_sep($sg__input_repo)}${_escape(repo.base)}${_el_resume($scope13_id, "b", $sg__input_repo)}</span>${_el_resume($scope13_id, "a", $sg__input_repo)}`);
2031
2061
  _serialize_if($scope0_reason, 0) && writeScope($scope13_id, { _: $si__input_repo && _scope_with_id($scope0_id) });
2032
2062
  return 0;
2033
2063
  }
@@ -2035,16 +2065,16 @@ var review_section_default = _template("s", (input) => {
2035
2065
  _if(() => {
2036
2066
  if (input.localDiffers) {
2037
2067
  const $scope3_id = _scope_id();
2038
- _html(`<span${_attr_class(["_I", "_gy"])}${_attr("title", `This view is ${shortSha(repo.head)} (${repo.pr.headRefName}); checked out is ${shortSha(repo.localHead)} (${repo.branch})`)}>local ${_sep($sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}${_escape(shortBranch(repo.branch, input.workspaceBranch, input.workspaceName))}${_el_resume($scope3_id, "b", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)} ${_sep($sg__input_repo)}${_escape(shortSha(repo.localHead, 7))}${_el_resume($scope3_id, "c", $sg__input_repo)}</span>${_el_resume($scope3_id, "a", $sg__input_repo)}`);
2068
+ _html(`<span${_attr_class(["_I", "_ge"])}${_attr("title", `This view is ${shortSha(repo.head)} (${repo.pr.headRefName}); checked out is ${shortSha(repo.localHead)} (${repo.branch})`)}>local ${_sep($sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}${_escape(shortBranch(repo.branch, input.workspaceBranch, input.workspaceName))}${_el_resume($scope3_id, "b", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)} ${_sep($sg__input_repo)}${_escape(shortSha(repo.localHead, 7))}${_el_resume($scope3_id, "c", $sg__input_repo)}</span>${_el_resume($scope3_id, "a", $sg__input_repo)}`);
2039
2069
  $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_localDiffers && writeScope($scope3_id, { _: $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName && _scope_with_id($scope0_id) });
2040
2070
  return 0;
2041
2071
  }
2042
2072
  }, $scope0_id, "n", _serialize_guard($scope0_reason, 23), _serialize_guard($scope0_reason, 40), $sg__input_repo__OR__input_files__OR__input_shownKeys__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_collapsible__OR__input_collapsed__OR__input_localDiffers__OR__input_onlyNew__OR__input_opened, 0, 1);
2043
- _html(`<span${_attr_class("_gn")}><span>${_escape(countLabel)}${_el_resume($scope0_id, "p", $sg__input_files__OR__input_shownKeys)} file${_sep($sg__input_files__OR__input_shownKeys)}${countLabel === 1 ? "" : "s"}${_el_resume($scope0_id, "q", $sg__input_files__OR__input_shownKeys)}</span>`);
2073
+ _html(`<span${_attr_class("_f4")}><span>${_escape(countLabel)}${_el_resume($scope0_id, "p", $sg__input_files__OR__input_shownKeys)} file${_sep($sg__input_files__OR__input_shownKeys)}${countLabel === 1 ? "" : "s"}${_el_resume($scope0_id, "q", $sg__input_files__OR__input_shownKeys)}</span>`);
2044
2074
  _if(() => {
2045
2075
  if (stats.additions || stats.deletions) {
2046
2076
  const $scope14_id = _scope_id();
2047
- _html(`<span${_attr_class("_go")}>+${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.additions)}${_el_resume($scope14_id, "b", $sg__input_files__OR__input_shownKeys)}</span><span${_attr_class("_gp")}>−${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.deletions)}${_el_resume($scope14_id, "d", $sg__input_files__OR__input_shownKeys)}</span>`);
2077
+ _html(`<span${_attr_class("_f5")}>+${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.additions)}${_el_resume($scope14_id, "b", $sg__input_files__OR__input_shownKeys)}</span><span${_attr_class("_f6")}>−${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.deletions)}${_el_resume($scope14_id, "d", $sg__input_files__OR__input_shownKeys)}</span>`);
2048
2078
  $si__input_files__OR__input_shownKeys && writeScope($scope14_id, { _: _scope_with_id($scope0_id) });
2049
2079
  return 0;
2050
2080
  }
@@ -2052,8 +2082,8 @@ var review_section_default = _template("s", (input) => {
2052
2082
  _if(() => {
2053
2083
  if (newCount || input.onlyNew) {
2054
2084
  const $scope4_id = _scope_id();
2055
- _html(`<button type=button${_attr_class(["_gr", { ["_gq"]: input.onlyNew }])} aria-pressed=${input.onlyNew ? "true" : "false"} title=${input.onlyNew ? "\"Show every file\"" : "\"Show only files changed since your last visit\""}>${_escape(newCount)}${_el_resume($scope4_id, "b", $sg__input_files)} new</button>${_el_resume($scope4_id, "a")}`);
2056
- _script($scope4_id, "s10");
2085
+ _html(`<button type=button${_attr_class(["_f8", { ["_f7"]: input.onlyNew }])} aria-pressed=${input.onlyNew ? "true" : "false"} title=${input.onlyNew ? "\"Show every file\"" : "\"Show only files changed since your last visit\""}>${_escape(newCount)}${_el_resume($scope4_id, "b", $sg__input_files)} new</button>${_el_resume($scope4_id, "a")}`);
2086
+ _script($scope4_id, "t10");
2057
2087
  writeScope($scope4_id, { _: _scope_with_id($scope0_id) });
2058
2088
  return 0;
2059
2089
  }
@@ -2062,7 +2092,7 @@ var review_section_default = _template("s", (input) => {
2062
2092
  _if(() => {
2063
2093
  if (!input.collapsible || !input.collapsed || input.opened) {
2064
2094
  const $scope5_id = _scope_id();
2065
- _html(`<div${_attr_class("_gA")}${_attr("hidden", input.collapsible && input.collapsed)}>`);
2095
+ _html(`<div${_attr_class("_gg")}${_attr("hidden", input.collapsible && input.collapsed)}>`);
2066
2096
  _for_of(input.files, (file$1) => {
2067
2097
  const $scope6_id = _scope_id();
2068
2098
  const $for_content__file__closures = /* @__PURE__ */ new Set();
@@ -2072,11 +2102,11 @@ var review_section_default = _template("s", (input) => {
2072
2102
  const expanded = !input.collapsedFiles.has(file$1.key);
2073
2103
  _html(`<details${_attr_details_or_dialog_open($scope6_id, "a", expanded, _resume(function(open) {
2074
2104
  input.onFileToggle(file$1.key, open);
2075
- }, "s0", $scope6_id))}${_attr_class(["_gB", input.findHit?.key === file$1.key && "_gg"])}${_attr("data-key", file$1.key)}${_attr("hidden", !input.shownKeys.has(file$1.key))}><summary${_attr_class("_gD")}><span${_attr_class("_gI")}${_attr("data-status", file$1.status)}>${_escape(file$1.status)}${_el_resume($scope6_id, "d", $sg__input_files)}</span>${_el_resume($scope6_id, "c", $sg__input_files)}<span${_attr_class(["_gJ", input.findHit?.key === file$1.key && input.findHit.line < 1 && "_gh"])}${_attr("title", file$1.path)}><bdi>${_escape(file$1.path)}${_el_resume($scope6_id, "f", $sg__input_files)}</bdi></span>${_el_resume($scope6_id, "e", _serialize_guard($scope0_reason, 19))}`);
2105
+ }, "t0", $scope6_id))}${_attr_class(["_gh", input.findHit?.key === file$1.key && "_fX"])}${_attr("data-key", file$1.key)}${_attr("hidden", !input.shownKeys.has(file$1.key))}><summary${_attr_class("_gj")}><span${_attr_class("_go")}${_attr("data-status", file$1.status)}>${_escape(file$1.status)}${_el_resume($scope6_id, "d", $sg__input_files)}</span>${_el_resume($scope6_id, "c", $sg__input_files)}<span${_attr_class(["_gp", input.findHit?.key === file$1.key && input.findHit.line < 1 && "_fY"])}${_attr("title", file$1.path)}><bdi>${_escape(file$1.path)}${_el_resume($scope6_id, "f", $sg__input_files)}</bdi></span>${_el_resume($scope6_id, "e", _serialize_guard($scope0_reason, 19))}`);
2076
2106
  _if(() => {
2077
2107
  if (file$1.changedSince) {
2078
2108
  const $scope17_id = _scope_id();
2079
- _html(`<span${_attr_class(["_z", "_gz"])} title="Changed since your last visit"></span>`);
2109
+ _html(`<span${_attr_class(["_z", "_gf"])} title="Changed since your last visit"></span>`);
2080
2110
  $si__input_files && writeScope($scope17_id, {});
2081
2111
  return 0;
2082
2112
  }
@@ -2093,17 +2123,17 @@ var review_section_default = _template("s", (input) => {
2093
2123
  _if(() => {
2094
2124
  if (file$1.binary) {
2095
2125
  const $scope18_id = _scope_id();
2096
- _html(`<p${_attr_class(["_gK", "_gC"])}>binary file</p>`);
2126
+ _html(`<p${_attr_class(["_gq", "_gi"])}>binary file</p>`);
2097
2127
  $si__input_files__OR__input_collapsedFiles && writeScope($scope18_id, {});
2098
2128
  return 0;
2099
2129
  } else if (file$1.tooLarge) {
2100
2130
  const $scope19_id = _scope_id();
2101
- _html(`<p${_attr_class(["_gK", "_gC"])}>file too large to display</p>`);
2131
+ _html(`<p${_attr_class(["_gq", "_gi"])}>file too large to display</p>`);
2102
2132
  $si__input_files__OR__input_collapsedFiles && writeScope($scope19_id, {});
2103
2133
  return 1;
2104
2134
  } else if (file$1.old == null && file$1.new == null) {
2105
2135
  const $scope20_id = _scope_id();
2106
- _html(`<p${_attr_class(["_gK", "_gC"])}>file could not be read</p>`);
2136
+ _html(`<p${_attr_class(["_gq", "_gi"])}>file could not be read</p>`);
2107
2137
  $si__input_files__OR__input_collapsedFiles && writeScope($scope20_id, {});
2108
2138
  return 2;
2109
2139
  } else if (expanded) {
@@ -2113,40 +2143,40 @@ var review_section_default = _template("s", (input) => {
2113
2143
  _if(() => {
2114
2144
  if (!forceNear) {
2115
2145
  const $scope8_id = _scope_id();
2116
- _html(`<div${_attr_class(["_gE", "_gC"])}></div>${_el_resume($scope8_id, "a")}`);
2117
- _script($scope8_id, "s11");
2146
+ _html(`<div${_attr_class(["_gk", "_gi"])}></div>${_el_resume($scope8_id, "a")}`);
2147
+ _script($scope8_id, "t11");
2118
2148
  _subscribe($si__input && $input__closures, writeScope($scope8_id, {}));
2119
2149
  return 0;
2120
2150
  } else {
2121
2151
  const $scope9_id = _scope_id();
2122
2152
  const $childScope = _peek_scope_id();
2123
2153
  diff_file_default({
2124
- class: "_gC",
2154
+ class: "_gi",
2125
2155
  file: file$1,
2126
2156
  comments: fileComments,
2127
2157
  draft: input.draft && input.draft.key === file$1.key ? input.draft : null,
2128
2158
  sessions: input.sessions,
2129
2159
  onSelect: _resume(function(range) {
2130
2160
  input.onSelect(file$1, range);
2131
- }, "s1", $scope9_id),
2161
+ }, "t1", $scope9_id),
2132
2162
  onSaveComment: _resume(function(text) {
2133
2163
  input.onSaveComment(file$1, text);
2134
- }, "s2", $scope9_id),
2164
+ }, "t2", $scope9_id),
2135
2165
  onSendDraft: _resume(function(text, sessionId) {
2136
2166
  input.onSendDraft(file$1, text, sessionId);
2137
- }, "s3", $scope9_id),
2167
+ }, "t3", $scope9_id),
2138
2168
  onCancelDraft: _resume(function() {
2139
2169
  input.onCancelDraft();
2140
- }, "s4", $scope9_id),
2170
+ }, "t4", $scope9_id),
2141
2171
  onDeleteComment: _resume(function(id) {
2142
2172
  input.onDeleteComment(id);
2143
- }, "s5", $scope9_id),
2173
+ }, "t5", $scope9_id),
2144
2174
  onSendComment: _resume(function(id, sessionId) {
2145
2175
  input.onSendComment(id, sessionId);
2146
- }, "s6", $scope9_id),
2176
+ }, "t6", $scope9_id),
2147
2177
  onError: _resume(function(message) {
2148
2178
  input.onError(message);
2149
- }, "s7", $scope9_id)
2179
+ }, "t7", $scope9_id)
2150
2180
  });
2151
2181
  _subscribe($si__input_files__OR__input_commentsByFile && $for_content__fileComments__closures, _subscribe($si__input_files && $for_content__file_key__closures, _subscribe($si__input_files && $for_content__file__closures, _subscribe($si__input_onError && $input_onError__closures, _subscribe($si__input_onSendComment && $input_onSendComment__closures, _subscribe($si__input_onDeleteComment && $input_onDeleteComment__closures, _subscribe($si__input_onCancelDraft && $input_onCancelDraft__closures, _subscribe($si__input_onSendDraft && $input_onSendDraft__closures, _subscribe($si__input_onSaveComment && $input_onSaveComment__closures, _subscribe($si__input_onSelect && $input_onSelect__closures, _subscribe($si__input_sessions && $input_sessions__closures, _subscribe($si__input_draft && $input_draft__closures, writeScope($scope9_id, { a: _serialize_if($scope0_reason, 32) && _existing_scope($childScope) })))))))))))));
2152
2182
  return 1;
@@ -2162,7 +2192,7 @@ var review_section_default = _template("s", (input) => {
2162
2192
  }
2163
2193
  }, $scope6_id, "i", $sg__input_files__OR__input_collapsedFiles, $sg__input_files__OR__input_collapsedFiles, $sg__input_files__OR__input_commentsByFile__OR__input_collapsedFiles);
2164
2194
  _html(`</details>${_el_resume($scope6_id, "a")}`);
2165
- _script($scope6_id, "s12");
2195
+ _script($scope6_id, "t12");
2166
2196
  _subscribe($si__input_findHit_line && $input_findHit_line__closures, _subscribe($si__input_onFileToggle && $input_onFileToggle__closures, _subscribe($si__input_findHit_key && $input_findHit_key__closures, _subscribe($si__input_collapsedFiles && $input_collapsedFiles__closures, _subscribe($si__input_commentsByFile && $input_commentsByFile__closures, _subscribe($si__input_shownKeys && $input_shownKeys__closures, writeScope($scope6_id, {
2167
2197
  k: file$1,
2168
2198
  l: file$1?.key,
@@ -2256,10 +2286,10 @@ var review_section_default = _template("s", (input) => {
2256
2286
  cc: $si__input_findHit_line && $input_findHit_line__closures
2257
2287
  });
2258
2288
  });
2259
- var fileFilter = "_gV _l";
2289
+ var fileFilter = "_gY _l";
2260
2290
  //#endregion
2261
2291
  //#region src/tags/file-filter.marko
2262
- var file_filter_default = _template("l", (input) => {
2292
+ var file_filter_default = _template("m", (input) => {
2263
2293
  const $scope0_reason = _scope_reason();
2264
2294
  const $scope0_id = _scope_id();
2265
2295
  let value = input.value;
@@ -2274,7 +2304,7 @@ var file_filter_default = _template("l", (input) => {
2274
2304
  const next = pending !== null ? pending : value || "";
2275
2305
  pending = null;
2276
2306
  value = next;
2277
- }, "l1", $scope0_id);
2307
+ }, "m1", $scope0_id);
2278
2308
  const type = _resume((v) => {
2279
2309
  if (box.timer) clearTimeout(box.timer);
2280
2310
  if (!v) {
@@ -2285,11 +2315,11 @@ var file_filter_default = _template("l", (input) => {
2285
2315
  }
2286
2316
  pending = v;
2287
2317
  box.timer = setTimeout(flush, 150);
2288
- }, "l2", $scope0_id);
2289
- _html(`<div${_attr_class("_gU")}><input${_attr_input_value($scope0_id, "b", draft, _resume(function(v) {
2318
+ }, "m2", $scope0_id);
2319
+ _html(`<div${_attr_class("_gX")}><input${_attr_input_value($scope0_id, "b", draft, _resume(function(v) {
2290
2320
  type(v);
2291
- }, "l0", $scope0_id))}${_attr_class(fileFilter)} type=search placeholder="Filter files…" aria-label="Filter files">${_el_resume($scope0_id, "b")}</div>`);
2292
- _script($scope0_id, "l3");
2321
+ }, "m0", $scope0_id))}${_attr_class(fileFilter)} type=search placeholder="Filter files…" aria-label="Filter files">${_el_resume($scope0_id, "b")}</div>`);
2322
+ _script($scope0_id, "m3");
2293
2323
  writeScope($scope0_id, {
2294
2324
  e: _serialize_if($scope0_reason, 1) && input.value,
2295
2325
  f: _serialize_if($scope0_reason, 0) && input.valueChange,
@@ -2319,7 +2349,7 @@ var $content = (input) => {
2319
2349
  _for_of(dir.dirs, (child) => {
2320
2350
  const $scope1_id = _scope_id();
2321
2351
  const shut = input.collapsed.has(input.collapsedKey(child.path));
2322
- _html(`<div${_attr_class("_fE")}><button type=button${_attr_class(["_fF", { ["_fw"]: shut }])}${_attr("title", child.path)}${_attr_style(`--depth:${child.depth}`)}><span${_attr_class("_fM")}>${shut ? "▸" : "▾"}${_el_resume($scope1_id, "d", $sg__input)}</span><span${_attr_class("_fG")}>${_escape(child.label)}${_el_resume($scope1_id, "f", $sg__input_dir)}/</span></button>${_el_resume($scope1_id, "b")}`);
2352
+ _html(`<div${_attr_class("_fN")}><button type=button${_attr_class(["_fO", { ["_fF"]: shut }])}${_attr("title", child.path)}${_attr_style(`--depth:${child.depth}`)}><span${_attr_class("_fV")}>${shut ? "▸" : "▾"}${_el_resume($scope1_id, "d", $sg__input)}</span><span${_attr_class("_fP")}>${_escape(child.label)}${_el_resume($scope1_id, "f", $sg__input_dir)}/</span></button>${_el_resume($scope1_id, "b")}`);
2323
2353
  _if(() => {
2324
2354
  if (!shut) {
2325
2355
  const $scope2_id = _scope_id();
@@ -2357,7 +2387,7 @@ var $content = (input) => {
2357
2387
  }
2358
2388
  }, $scope1_id, "g", $sg__input, $sg__input, $sg__input);
2359
2389
  _html("</div>");
2360
- _script($scope1_id, "i0");
2390
+ _script($scope1_id, "j0");
2361
2391
  writeScope($scope1_id, {
2362
2392
  i: child,
2363
2393
  j: $si__input && child?.path,
@@ -2366,11 +2396,11 @@ var $content = (input) => {
2366
2396
  }, "path", $scope0_id, "a", $sg__input, $sg__input_dir, $sg__input_dir, 0, 1);
2367
2397
  _for_of(dir.files, ({ file, name }) => {
2368
2398
  const $scope3_id = _scope_id();
2369
- _html(`<a${_attr("href", input.hrefFor(file.key))}${_attr_class(["_fI", { ["_fH"]: input.collapsedFiles?.has(file.key) }])}${input.collapsedFiles?.has(file.key) ? _attr("title", `${file.path} (folded — click to open)`) : _attr("title", file.path)}${_attr_style(`--depth:${dir.depth + 1}`)}><span${_attr_class("_fN")}${_attr("data-status", file.status)}>${_escape(file.status)}${_el_resume($scope3_id, "c", $sg__input_dir)}</span>${_el_resume($scope3_id, "b", $sg__input_dir)}<span${_attr_class("_fJ")}>${_escape(name)}${_el_resume($scope3_id, "e", $sg__input_dir)}</span>`);
2399
+ _html(`<a${_attr("href", input.hrefFor(file.key))}${_attr_class(["_fR", { ["_fQ"]: input.collapsedFiles?.has(file.key) }])}${input.collapsedFiles?.has(file.key) ? _attr("title", `${file.path} (folded — click to open)`) : _attr("title", file.path)}${_attr_style(`--depth:${dir.depth + 1}`)}><span${_attr_class("_fW")}${_attr("data-status", file.status)}>${_escape(file.status)}${_el_resume($scope3_id, "c", $sg__input_dir)}</span>${_el_resume($scope3_id, "b", $sg__input_dir)}<span${_attr_class("_fS")}>${_escape(name)}${_el_resume($scope3_id, "e", $sg__input_dir)}</span>`);
2370
2400
  _if(() => {
2371
2401
  if (input.newKeys.has(file.key)) {
2372
2402
  const $scope4_id = _scope_id();
2373
- _html(`<span${_attr_class(["_z", "_fK"])} title="Changed since your last visit"></span>`);
2403
+ _html(`<span${_attr_class(["_z", "_fT"])} title="Changed since your last visit"></span>`);
2374
2404
  _serialize_if($scope0_reason, 1) && writeScope($scope4_id, {});
2375
2405
  return 0;
2376
2406
  }
@@ -2378,7 +2408,7 @@ var $content = (input) => {
2378
2408
  _if(() => {
2379
2409
  if (input.commentKeys.has(file.key)) {
2380
2410
  const $scope5_id = _scope_id();
2381
- _html(`<span${_attr_class("_fL")}>💬</span>`);
2411
+ _html(`<span${_attr_class("_fU")}>💬</span>`);
2382
2412
  _serialize_if($scope0_reason, 0) && writeScope($scope5_id, {});
2383
2413
  return 0;
2384
2414
  }
@@ -2409,10 +2439,10 @@ var $content = (input) => {
2409
2439
  x: $si__input_newKeys && $input_newKeys__closures
2410
2440
  });
2411
2441
  };
2412
- var diff_tree_dir_default = _template("i", $content);
2442
+ var diff_tree_dir_default = _template("j", $content);
2413
2443
  //#endregion
2414
2444
  //#region src/tags/diff-tree.marko
2415
- var diff_tree_default = _template("j", (input) => {
2445
+ var diff_tree_default = _template("k", (input) => {
2416
2446
  const $scope0_reason = _scope_reason(), $sg__input_sections = _serialize_guard($scope0_reason, 10), $si__input_onDirToggle = _serialize_if($scope0_reason, 12), $si__input_collapsedFiles = _serialize_if($scope0_reason, 13), $si__input_commentKeys = _serialize_if($scope0_reason, 7), $si__input_newKeys = _serialize_if($scope0_reason, 8), $si__input_workspaceId__OR__input_scope = _serialize_if($scope0_reason, 0);
2417
2447
  const $scope0_id = _scope_id();
2418
2448
  const $input_onDirToggle__closures = /* @__PURE__ */ new Set();
@@ -2433,39 +2463,39 @@ var diff_tree_default = _template("j", (input) => {
2433
2463
  view: "diff",
2434
2464
  scope: input.scope ?? null,
2435
2465
  file: key
2436
- }), "j0", $scope0_id);
2437
- _html(`<aside${_attr_class(["_fx", { ["_fw"]: input.open === false }])}><div${_attr_class("_fy")}>`);
2466
+ }), "k0", $scope0_id);
2467
+ _html(`<aside${_attr_class(["_fG", { ["_fF"]: input.open === false }])}><div${_attr_class("_fH")}>`);
2438
2468
  _set_serialize_reason(2);
2439
2469
  const $childScope = _peek_scope_id();
2440
2470
  file_filter_default({
2441
2471
  value: filter,
2442
2472
  valueChange: _resume((_new_filter) => {
2443
2473
  filter = _new_filter;
2444
- }, "j1", $scope0_id)
2474
+ }, "k1", $scope0_id)
2445
2475
  });
2446
- _html(`</div><div${_attr_class("_fz")}>`);
2476
+ _html(`</div><div${_attr_class("_fI")}>`);
2447
2477
  _if(() => {
2448
2478
  if (!input.sections.length && filter) {
2449
2479
  const $scope3_id = _scope_id();
2450
- _html(`<p${_attr_class("_fA")}>No files match.</p>`);
2480
+ _html(`<p${_attr_class("_fJ")}>No files match.</p>`);
2451
2481
  writeScope($scope3_id, {});
2452
2482
  return 0;
2453
2483
  }
2454
2484
  }, $scope0_id, "e", 1, 1, 1, 0, 1);
2455
2485
  _for_of(input.sections, (section) => {
2456
2486
  const $scope1_id = _scope_id();
2457
- _html(`<div${_attr_class("_fB")}><button type=button${_attr_class(["_fC", { ["_fw"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fM")}>${collapsedRepos.has(section.id) ? "▸" : "▾"}${_el_resume($scope1_id, "d")}</span><span${_attr_class("_fG")}>${_escape(section.label)}${_el_resume($scope1_id, "f", $sg__input_sections)}</span></button>${_el_resume($scope1_id, "b")}`);
2487
+ _html(`<div${_attr_class("_fK")}><button type=button${_attr_class(["_fL", { ["_fF"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fV")}>${collapsedRepos.has(section.id) ? "▸" : "▾"}${_el_resume($scope1_id, "d")}</span><span${_attr_class("_fP")}>${_escape(section.label)}${_el_resume($scope1_id, "f", $sg__input_sections)}</span></button>${_el_resume($scope1_id, "b")}`);
2458
2488
  _if(() => {
2459
2489
  if (!collapsedRepos.has(section.id) || openedRepos.has(section.id)) {
2460
2490
  const $scope2_id = _scope_id();
2461
2491
  const root = treeDirs(section.files);
2462
- _html(`<div${_attr_class("_fD")}${_attr("hidden", collapsedRepos.has(section.id))}>`);
2492
+ _html(`<div${_attr_class("_fM")}${_attr("hidden", collapsedRepos.has(section.id))}>`);
2463
2493
  _set_serialize_reason(1);
2464
2494
  const $childScope2 = _peek_scope_id();
2465
2495
  diff_tree_dir_default({
2466
2496
  dir: root,
2467
2497
  collapsed: collapsedDirs,
2468
- collapsedKey: _resume((path) => `${section.id}/${path}`, "j2", $scope2_id),
2498
+ collapsedKey: _resume((path) => `${section.id}/${path}`, "k2", $scope2_id),
2469
2499
  onToggleDir: _resume(function(dir) {
2470
2500
  const key = `${section.id}/${dir.path}`;
2471
2501
  const next = new Set(collapsedDirs);
@@ -2473,7 +2503,7 @@ var diff_tree_default = _template("j", (input) => {
2473
2503
  if (collapsed) next.add(key);
2474
2504
  collapsedDirs = next;
2475
2505
  input.onDirToggle?.(section.files.filter((f) => f.path.startsWith(`${dir.path}/`)).map((f) => f.key), collapsed);
2476
- }, "j3", $scope2_id),
2506
+ }, "k3", $scope2_id),
2477
2507
  hrefFor,
2478
2508
  collapsedFiles: input.collapsedFiles,
2479
2509
  commentKeys,
@@ -2488,7 +2518,7 @@ var diff_tree_default = _template("j", (input) => {
2488
2518
  }
2489
2519
  }, $scope1_id, "g", 1, 1, 1, 0, 1);
2490
2520
  _html("</div>");
2491
- _script($scope1_id, "j4");
2521
+ _script($scope1_id, "k4");
2492
2522
  writeScope($scope1_id, {
2493
2523
  j: section?.id,
2494
2524
  n: section?.files,
@@ -2531,7 +2561,7 @@ var diff_tree_default = _template("j", (input) => {
2531
2561
  });
2532
2562
  //#endregion
2533
2563
  //#region src/tags/diff-file-sheet.marko
2534
- var diff_file_sheet_default = _template("e", (input) => {
2564
+ var diff_file_sheet_default = _template("f", (input) => {
2535
2565
  const $scope0_reason = _scope_reason(), $sg__input_total__OR__input_files_length = _serialize_guard($scope0_reason, 2), $sg__input_files = _serialize_guard($scope0_reason, 12), $sg__input_newKeys__OR__input_files = _serialize_guard($scope0_reason, 1), $sg__input_commentKeys__OR__input_newKeys__OR__input_files = _serialize_guard($scope0_reason, 4), $sg__input_commentKeys__OR__input_files = _serialize_guard($scope0_reason, 0), $si__input_files = _serialize_if($scope0_reason, 12), $sg__input_files_length = _serialize_guard($scope0_reason, 13), $si__input_files_length = _serialize_if($scope0_reason, 13), $si__input_commentKeys = _serialize_if($scope0_reason, 10), $si__input_newKeys = _serialize_if($scope0_reason, 11), $si__input_workspaceId__OR__input_scope = _serialize_if($scope0_reason, 3);
2536
2566
  const $scope0_id = _scope_id();
2537
2567
  const $commentKeys__closures = /* @__PURE__ */ new Set();
@@ -2547,7 +2577,7 @@ var diff_file_sheet_default = _template("e", (input) => {
2547
2577
  view: "diff",
2548
2578
  scope: input.scope ?? null,
2549
2579
  file: key
2550
- }), "e0", $scope0_id);
2580
+ }), "f0", $scope0_id);
2551
2581
  const groups = (() => {
2552
2582
  const out = [];
2553
2583
  const byRepo = /* @__PURE__ */ new Map();
@@ -2584,39 +2614,39 @@ var diff_file_sheet_default = _template("e", (input) => {
2584
2614
  _if(() => {
2585
2615
  if (open) {
2586
2616
  const $scope1_id = _scope_id();
2587
- _html(`<div${_attr_class("_ff")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_fg")} role=dialog aria-label="Jump to file"><div${_attr_class("_fh")}><strong${_attr_class("_fe")}>Files</strong><span${_attr_class("_fi")}>${_escape(input.files.length)}${_el_resume($scope1_id, "f", $sg__input_files_length)}${_sep($sg__input_total__OR__input_files_length)}${input.files.length !== total ? ` / ${_escape(`${total}`)}` : ""}${_el_resume($scope1_id, "g", $sg__input_total__OR__input_files_length)}</span><button type=button${_attr_class([iconBtnLg, "_fd"])} title=Close aria-label=Close>`);
2617
+ _html(`<div${_attr_class("_fq")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_fr")} role=dialog aria-label="Jump to file"><div${_attr_class("_fs")}><strong${_attr_class("_fp")}>Files</strong><span${_attr_class("_ft")}>${_escape(input.files.length)}${_el_resume($scope1_id, "f", $sg__input_files_length)}${_sep($sg__input_total__OR__input_files_length)}${input.files.length !== total ? ` / ${_escape(`${total}`)}` : ""}${_el_resume($scope1_id, "g", $sg__input_total__OR__input_files_length)}</span><button type=button${_attr_class([iconBtnLg, "_fo"])} title=Close aria-label=Close>`);
2588
2618
  icon_xmark_default({ size: 16 });
2589
- _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_fq")}>`);
2619
+ _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_fB")}>`);
2590
2620
  _set_serialize_reason(2);
2591
2621
  const $childScope = _peek_scope_id();
2592
2622
  file_filter_default({
2593
2623
  value: filter,
2594
2624
  valueChange: _resume((_new_filter) => {
2595
2625
  filter = _new_filter;
2596
- }, "e1", $scope1_id)
2626
+ }, "f1", $scope1_id)
2597
2627
  });
2598
- _html(`</div><div${_attr_class("_fj")}>`);
2628
+ _html(`</div><div${_attr_class("_fu")}>`);
2599
2629
  _for_of(groups, (group) => {
2600
2630
  const $scope2_id = _scope_id();
2601
- _html(`<div${_attr_class("_fk")}><div${_attr_class("_fl")}>${_escape(group.repo)}${_el_resume($scope2_id, "c", $sg__input_files)}</div>`);
2631
+ _html(`<div${_attr_class("_fv")}><div${_attr_class("_fw")}>${_escape(group.repo)}${_el_resume($scope2_id, "c", $sg__input_files)}</div>`);
2602
2632
  _for_of(group.dirs, ({ dir, files }) => {
2603
2633
  const $scope3_id = _scope_id();
2604
- _html(`<div${_attr_class("_fm")}>`);
2634
+ _html(`<div${_attr_class("_fx")}>`);
2605
2635
  _if(() => {
2606
2636
  if (dir) {
2607
2637
  const $scope5_id = _scope_id();
2608
- _html(`<div${_attr_class("_fo")}${_attr("title", dir)}><bdi>${_escape(dir)}${_el_resume($scope5_id, "b", $sg__input_files)}/</bdi></div>${_el_resume($scope5_id, "a", $sg__input_files)}`);
2638
+ _html(`<div${_attr_class("_fz")}${_attr("title", dir)}><bdi>${_escape(dir)}${_el_resume($scope5_id, "b", $sg__input_files)}/</bdi></div>${_el_resume($scope5_id, "a", $sg__input_files)}`);
2609
2639
  $si__input_files && writeScope($scope5_id, { _: _scope_with_id($scope3_id) });
2610
2640
  return 0;
2611
2641
  }
2612
2642
  }, $scope3_id, "b", $sg__input_files, $sg__input_files, $sg__input_files, 0, 1);
2613
2643
  _for_of(files, ({ file, name }) => {
2614
2644
  const $scope4_id = _scope_id();
2615
- _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_fn", "_x"])}><span${_attr_class("_ft")}${_attr("data-status", file.status)}>${_escape(file.status)}${_el_resume($scope4_id, "c", $sg__input_files)}</span>${_el_resume($scope4_id, "b", $sg__input_files)}<span${_attr_class("_fp")}><bdi>${_escape(name)}${_el_resume($scope4_id, "e", $sg__input_files)}</bdi></span>`);
2645
+ _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_fy", "_x"])}><span${_attr_class("_fE")}${_attr("data-status", file.status)}>${_escape(file.status)}${_el_resume($scope4_id, "c", $sg__input_files)}</span>${_el_resume($scope4_id, "b", $sg__input_files)}<span${_attr_class("_fA")}><bdi>${_escape(name)}${_el_resume($scope4_id, "e", $sg__input_files)}</bdi></span>`);
2616
2646
  _if(() => {
2617
2647
  if (newKeys.has(file.key)) {
2618
2648
  const $scope6_id = _scope_id();
2619
- _html(`<span${_attr_class(["_z", "_fs"])} title="Changed since your last visit"></span>`);
2649
+ _html(`<span${_attr_class(["_z", "_fD"])} title="Changed since your last visit"></span>`);
2620
2650
  _serialize_if($scope0_reason, 1) && writeScope($scope6_id, {});
2621
2651
  return 0;
2622
2652
  }
@@ -2630,7 +2660,7 @@ var diff_file_sheet_default = _template("e", (input) => {
2630
2660
  }
2631
2661
  }, $scope4_id, "g", $sg__input_commentKeys__OR__input_files, $sg__input_commentKeys__OR__input_files, $sg__input_commentKeys__OR__input_newKeys__OR__input_files, 0, 1);
2632
2662
  _html(`</a>${_el_resume($scope4_id, "a")}`);
2633
- _script($scope4_id, "e2");
2663
+ _script($scope4_id, "f2");
2634
2664
  _subscribe($si__input_workspaceId__OR__input_scope && $hrefFor2__closures, _subscribe($si__input_newKeys && $newKeys__closures, _subscribe($si__input_commentKeys && $commentKeys__closures, writeScope($scope4_id, {
2635
2665
  k: _serialize_if($scope0_reason, 5) && file?.key,
2636
2666
  _: _scope_with_id($scope3_id)
@@ -2648,13 +2678,13 @@ var diff_file_sheet_default = _template("e", (input) => {
2648
2678
  _if(() => {
2649
2679
  if (!input.files.length) {
2650
2680
  const $scope8_id = _scope_id();
2651
- _html(`<p${_attr_class("_fr")}>No files match.</p>`);
2681
+ _html(`<p${_attr_class("_fC")}>No files match.</p>`);
2652
2682
  $si__input_files_length && writeScope($scope8_id, {});
2653
2683
  return 0;
2654
2684
  }
2655
2685
  }, $scope1_id, "n", $sg__input_files_length, $sg__input_files_length, $sg__input_files_length, 0, 1);
2656
2686
  _html("</div></div>");
2657
- _script($scope1_id, "e3");
2687
+ _script($scope1_id, "f3");
2658
2688
  writeScope($scope1_id, { k: _existing_scope($childScope) });
2659
2689
  return 0;
2660
2690
  }
@@ -2688,7 +2718,7 @@ var api;
2688
2718
  var getTermDims;
2689
2719
  var revealSearchHit;
2690
2720
  var setSearchPaint;
2691
- var diff_view_default = _template("k", (input) => {
2721
+ var diff_view_default = _template("l", (input) => {
2692
2722
  const $scope0_reason = _scope_reason(), $si__input_sessions = _serialize_if($scope0_reason, 5), $si__input_workspaceBranch = _serialize_if($scope0_reason, 6), $si__input_workspaceName = _serialize_if($scope0_reason, 7);
2693
2723
  const $scope0_id = _scope_id();
2694
2724
  const $error__closures = /* @__PURE__ */ new Set();
@@ -2723,14 +2753,14 @@ var diff_view_default = _template("k", (input) => {
2723
2753
  let fileFilter = diffFilter(input.workspaceId);
2724
2754
  const $filterChange = _resume((_new_fileFilter) => {
2725
2755
  fileFilter = _new_fileFilter;
2726
- }, "k1", $scope0_id);
2756
+ }, "l1", $scope0_id);
2727
2757
  let onlyNew = false;
2728
2758
  let scope$1 = input.scope ?? diffScope();
2729
2759
  let treeOpen = diffTreeOpen();
2730
2760
  let fileSheet = false;
2731
2761
  let findOpen = input.findOpen;
2732
2762
  let findTick = input.findTick || 0;
2733
- const findFocusRef = input.findFocusRef || { focus: _resume(function() {}, "k2") };
2763
+ const findFocusRef = input.findFocusRef || { focus: _resume(function() {}, "l2") };
2734
2764
  let findState = {
2735
2765
  query: "",
2736
2766
  hit: null,
@@ -2743,7 +2773,7 @@ var diff_view_default = _template("k", (input) => {
2743
2773
  for (const key of keys) if (collapsed) next.add(key);
2744
2774
  else next.delete(key);
2745
2775
  if (next.size !== collapsedFiles.size || [...next].some((k) => !collapsedFiles.has(k))) collapsedFiles = next;
2746
- }, "k3", $scope0_id);
2776
+ }, "l3", $scope0_id);
2747
2777
  let openedRepos = /* @__PURE__ */ new Set();
2748
2778
  let expandingRepos = /* @__PURE__ */ new Set();
2749
2779
  const nearBox = {
@@ -2784,7 +2814,7 @@ var diff_view_default = _template("k", (input) => {
2784
2814
  cb();
2785
2815
  }
2786
2816
  });
2787
- }, "k4", $scope0_id);
2817
+ }, "l4", $scope0_id);
2788
2818
  const pinToTop = _resume((el) => {
2789
2819
  const root = ((scrollEl) => scrollEl())(_el_read_error);
2790
2820
  if (!root) {
@@ -2793,7 +2823,14 @@ var diff_view_default = _template("k", (input) => {
2793
2823
  }
2794
2824
  const top = el.getBoundingClientRect().top - root.getBoundingClientRect().top + root.scrollTop;
2795
2825
  root.scrollTo({ top: Math.max(0, top - 8) });
2796
- }, "k5", $scope0_id);
2826
+ }, "l5", $scope0_id);
2827
+ const retryFrames = _resume((attempt, ms = 2500) => {
2828
+ const started = Date.now();
2829
+ const tick = () => {
2830
+ if (!attempt() && Date.now() - started < ms) requestAnimationFrame(tick);
2831
+ };
2832
+ tick();
2833
+ }, "l6");
2797
2834
  const focusPrSection = _resume((pr) => {
2798
2835
  if (!pr) return;
2799
2836
  const list = repos || [];
@@ -2806,37 +2843,26 @@ var diff_view_default = _template("k", (input) => {
2806
2843
  for (const r of list) if (!focused || r.id !== focused.id) next.add(r.id);
2807
2844
  collapsedRepos = next;
2808
2845
  expandingRepos = /* @__PURE__ */ new Set();
2809
- const started = Date.now();
2810
- const tryScroll = () => {
2811
- const root = ((scrollEl) => scrollEl())(_el_read_error);
2812
- const el = root?.querySelector(`[data-pr="${CSS.escape(pr)}"]`);
2813
- if (!root || !el) {
2814
- if (Date.now() - started < 2500) requestAnimationFrame(tryScroll);
2815
- return;
2816
- }
2817
- pinToTop(el);
2818
- };
2819
- requestAnimationFrame(tryScroll);
2820
- }, "k6", $scope0_id);
2821
- const findFile = _resume((key) => ((scrollEl) => scrollEl())(_el_read_error)?.querySelector(`details[data-key="${CSS.escape(key)}"]`) ?? null, "k7", $scope0_id);
2846
+ retryFrames(() => {
2847
+ const el = ((scrollEl) => scrollEl())(_el_read_error)?.querySelector(`[data-pr="${CSS.escape(pr)}"]`);
2848
+ if (el) pinToTop(el);
2849
+ return !!el;
2850
+ });
2851
+ }, "l7", $scope0_id);
2852
+ const findFile = _resume((key) => ((scrollEl) => scrollEl())(_el_read_error)?.querySelector(`details[data-key="${CSS.escape(key)}"]`) ?? null, "l8", $scope0_id);
2822
2853
  const openFile = _resume((key) => {
2823
2854
  const el = findFile(key);
2824
2855
  if (el) el.open = true;
2825
2856
  return el;
2826
- }, "k8", $scope0_id);
2857
+ }, "l9", $scope0_id);
2827
2858
  const jumpTo = _resume((key) => {
2828
2859
  input.onFileChange?.(key);
2829
- const started = Date.now();
2830
- const tryJump = () => {
2860
+ retryFrames(() => {
2831
2861
  const el = openFile(key);
2832
- if (el) {
2833
- pinToTop(el);
2834
- return;
2835
- }
2836
- if (Date.now() - started < 2500) requestAnimationFrame(tryJump);
2837
- };
2838
- tryJump();
2839
- }, "k9", $scope0_id);
2862
+ if (el) pinToTop(el);
2863
+ return !!el;
2864
+ });
2865
+ }, "l10", $scope0_id);
2840
2866
  const posBox = {
2841
2867
  anchor: null,
2842
2868
  raf: 0,
@@ -2858,17 +2884,17 @@ var diff_view_default = _template("k", (input) => {
2858
2884
  };
2859
2885
  }
2860
2886
  return best;
2861
- }, "k10", $scope0_id);
2887
+ }, "l11", $scope0_id);
2862
2888
  const noteScroll = _resume(() => {
2863
2889
  if (posBox.raf) return;
2864
2890
  posBox.raf = requestAnimationFrame(() => {
2865
2891
  posBox.raf = 0;
2866
2892
  if (((scrollEl) => scrollEl())(_el_read_error)?.isConnected) posBox.anchor = anchorAt();
2867
2893
  });
2868
- }, "k11", $scope0_id);
2894
+ }, "l12", $scope0_id);
2869
2895
  const savePos = _resume(() => {
2870
2896
  if (repos) setDiffPos(input.workspaceId, posBox.anchor);
2871
- }, "k12", $scope0_id);
2897
+ }, "l13", $scope0_id);
2872
2898
  const restorePos = _resume((pos) => {
2873
2899
  const run = ++posBox.run;
2874
2900
  const started = Date.now();
@@ -2898,7 +2924,7 @@ var diff_view_default = _template("k", (input) => {
2898
2924
  } else if (!pinnedAt && Date.now() - started < 2500) requestAnimationFrame(tick);
2899
2925
  };
2900
2926
  requestAnimationFrame(tick);
2901
- }, "k13", $scope0_id);
2927
+ }, "l14", $scope0_id);
2902
2928
  const headBox = {
2903
2929
  sig: "",
2904
2930
  timer: 0
@@ -2930,14 +2956,14 @@ var diff_view_default = _template("k", (input) => {
2930
2956
  } finally {
2931
2957
  if (seq === loadBox.seq) loading = false;
2932
2958
  }
2933
- }, "k14", $scope0_id);
2959
+ }, "l15", $scope0_id);
2934
2960
  const setScope = _resume((next, persist = true) => {
2935
2961
  if (next === scope$1) return;
2936
2962
  scope$1 = next;
2937
2963
  if (persist) setDiffScope(next);
2938
2964
  input.onScopeChange?.(next);
2939
2965
  load(next);
2940
- }, "k15", $scope0_id);
2966
+ }, "l16", $scope0_id);
2941
2967
  const sendGate = { busy: 0 };
2942
2968
  const loadReview = _resume(async () => {
2943
2969
  if (sendGate.busy) return;
@@ -2946,15 +2972,15 @@ var diff_view_default = _template("k", (input) => {
2946
2972
  if (sendGate.busy) return;
2947
2973
  comments = reviewData.comments || [];
2948
2974
  } catch {}
2949
- }, "k16", $scope0_id);
2950
- const reload = _resume(() => load(scope$1, true), "k17", $scope0_id);
2975
+ }, "l17", $scope0_id);
2976
+ const reload = _resume(() => load(scope$1, true), "l18", $scope0_id);
2951
2977
  const reloadSoon = _resume(() => {
2952
2978
  if (headBox.timer) clearTimeout(headBox.timer);
2953
2979
  headBox.timer = setTimeout(() => {
2954
2980
  headBox.timer = 0;
2955
2981
  reload();
2956
2982
  }, 250);
2957
- }, "k18", $scope0_id);
2983
+ }, "l19", $scope0_id);
2958
2984
  const markSeen = _resume(() => {
2959
2985
  if (!repos) return;
2960
2986
  const heads = {};
@@ -2973,14 +2999,13 @@ var diff_view_default = _template("k", (input) => {
2973
2999
  }),
2974
3000
  keepalive: true
2975
3001
  }).catch(() => {});
2976
- }, "k19", $scope0_id);
3002
+ }, "l20", $scope0_id);
2977
3003
  const repoList = repos || [];
2978
3004
  const allFiles = repoList.flatMap((r) => r.files.map((f) => ({
2979
3005
  ...f,
2980
3006
  repo: r.id,
2981
3007
  key: `${r.worktree}/${f.path}`
2982
3008
  })));
2983
- allFiles.filter((f) => f.changedSince).length;
2984
3009
  const fileFiltered = (() => {
2985
3010
  const match = makeFileFilter(fileFilter);
2986
3011
  return allFiles.filter((f) => match(f.key) && (!onlyNew || f.changedSince));
@@ -2989,8 +3014,17 @@ var diff_view_default = _template("k", (input) => {
2989
3014
  const shownFiles = findKeys ? fileFiltered.filter((f) => findKeys.has(f.key) || f.key === findState.hit?.key) : fileFiltered;
2990
3015
  const shownKeySet = new Set(shownFiles.map((f) => f.key));
2991
3016
  const newKeys = new Set(allFiles.filter((f) => f.changedSince).map((f) => f.key));
2992
- const filesByRepo = new Map(repoList.map((r) => [r.id, allFiles.filter((f) => f.repo === r.id)]));
2993
- const shownByRepo = new Map(repoList.map((r) => [r.id, shownFiles.filter((f) => f.repo === r.id)]));
3017
+ const groupByRepo = _resume((files) => {
3018
+ const map = /* @__PURE__ */ new Map();
3019
+ for (const f of files) {
3020
+ const list = map.get(f.repo);
3021
+ if (list) list.push(f);
3022
+ else map.set(f.repo, [f]);
3023
+ }
3024
+ return map;
3025
+ }, "l21");
3026
+ const filesByRepo = groupByRepo(allFiles);
3027
+ const shownByRepo = groupByRepo(shownFiles);
2994
3028
  const commentsByFile = (() => {
2995
3029
  const map = /* @__PURE__ */ new Map();
2996
3030
  for (const c of comments) {
@@ -3007,7 +3041,7 @@ var diff_view_default = _template("k", (input) => {
3007
3041
  }));
3008
3042
  const localDifferIds = new Set(repoList.filter((repo) => !!repo.pr && !!repo.localHead && (repo.localHead !== repo.head || repo.branch !== repo.pr.headRefName)).map((r) => r.id));
3009
3043
  const hasFiles = !repos || allFiles.length > 0;
3010
- const fileWorktree = _resume((repo) => repo.includes("#") ? repo.split("#")[0] : repo, "k20");
3044
+ const fileWorktree = _resume((repo) => repo.includes("#") ? repo.split("#")[0] : repo, "l22");
3011
3045
  const anchorFor = _resume((file, range) => {
3012
3046
  const section = repoList.find((r) => r.id === file.repo);
3013
3047
  const source = range.side === "deletions" ? file.old : file.new;
@@ -3015,7 +3049,7 @@ var diff_view_default = _template("k", (input) => {
3015
3049
  head: section?.head,
3016
3050
  snippet: source == null ? void 0 : quoteRange(source, range.start, range.end, range.side === "deletions" ? "deletions" : "additions")
3017
3051
  };
3018
- }, "k21", $scope0_id);
3052
+ }, "l23", $scope0_id);
3019
3053
  const saveComment = _resume(async (file, text) => {
3020
3054
  const range = draft;
3021
3055
  draft = null;
@@ -3039,16 +3073,16 @@ var diff_view_default = _template("k", (input) => {
3039
3073
  } catch (err) {
3040
3074
  error = String(err.message || err);
3041
3075
  }
3042
- }, "k22", $scope0_id);
3076
+ }, "l24", $scope0_id);
3043
3077
  const deleteRemote = _resume((ids) => ids === "all" ? fetch(`/api/workspaces/${input.workspaceId}/review`, {
3044
3078
  method: "POST",
3045
3079
  headers: { "content-type": "application/json" },
3046
3080
  body: JSON.stringify({ action: "clear" })
3047
- }) : Promise.all(ids.map((id) => fetch(`/api/workspaces/${input.workspaceId}/review/${id}`, { method: "DELETE" }))), "k23", $scope0_id);
3081
+ }) : Promise.all(ids.map((id) => fetch(`/api/workspaces/${input.workspaceId}/review/${id}`, { method: "DELETE" }))), "l25", $scope0_id);
3048
3082
  const removeComment = _resume(async (id) => {
3049
3083
  comments = comments.filter((c) => c.id !== id);
3050
3084
  await deleteRemote([id]).catch(() => {});
3051
- }, "k24", $scope0_id);
3085
+ }, "l26", $scope0_id);
3052
3086
  const dispatch = _resume(async (list, to, consume) => {
3053
3087
  if (!list.length) return true;
3054
3088
  sendGate.busy++;
@@ -3084,13 +3118,13 @@ var diff_view_default = _template("k", (input) => {
3084
3118
  } finally {
3085
3119
  sendGate.busy--;
3086
3120
  }
3087
- }, "k25", $scope0_id);
3088
- const copyMarkdown = _resume(() => dispatch(comments, { clipboard: true }, "all"), "k26", $scope0_id);
3089
- const sendTo = _resume((sessionId) => dispatch(comments, { session: sessionId }, "all"), "k27", $scope0_id);
3121
+ }, "l27", $scope0_id);
3122
+ const copyMarkdown = _resume(() => dispatch(comments, { clipboard: true }, "all"), "l28", $scope0_id);
3123
+ const sendTo = _resume((sessionId) => dispatch(comments, { session: sessionId }, "all"), "l29", $scope0_id);
3090
3124
  const sendOneComment = _resume((id, sessionId) => {
3091
3125
  const comment = comments.find((c) => c.id === id);
3092
3126
  return comment ? dispatch([comment], { session: sessionId }, [id]) : Promise.resolve(false);
3093
- }, "k28", $scope0_id);
3127
+ }, "l30", $scope0_id);
3094
3128
  const sendDraftComment = _resume((file, text, sessionId) => {
3095
3129
  const range = draft;
3096
3130
  const trimmed = text.trim();
@@ -3108,12 +3142,12 @@ var diff_view_default = _template("k", (input) => {
3108
3142
  ...anchorFor(file, range)
3109
3143
  };
3110
3144
  return dispatch([one], { session: sessionId }, []);
3111
- }, "k29", $scope0_id);
3145
+ }, "l31", $scope0_id);
3112
3146
  const openFind = _resume(() => {
3113
3147
  findOpen = true;
3114
3148
  findTick++;
3115
3149
  findFocusRef.focus();
3116
- }, "k30", $scope0_id);
3150
+ }, "l32", $scope0_id);
3117
3151
  const onFindState = _resume((next) => {
3118
3152
  findState = next;
3119
3153
  if (!next.hit) return;
@@ -3128,7 +3162,7 @@ var diff_view_default = _template("k", (input) => {
3128
3162
  setSearchPaint(next.query, hit);
3129
3163
  revealSearchHit();
3130
3164
  }, 0);
3131
- }, "k31", $scope0_id);
3165
+ }, "l33", $scope0_id);
3132
3166
  const toggleSection = _resume((id) => {
3133
3167
  if (expandingRepos.has(id)) {
3134
3168
  const busy = new Set(expandingRepos);
@@ -3160,23 +3194,23 @@ var diff_view_default = _template("k", (input) => {
3160
3194
  openedRepos = /* @__PURE__ */ new Set([...openedRepos, id]);
3161
3195
  collapsedRepos = /* @__PURE__ */ new Set([...collapsedRepos, id]);
3162
3196
  }
3163
- }, "k32", $scope0_id);
3164
- _html(`<div${_attr_class("_dr")}><div${_attr_class("_dw")}><div${_attr_class("_dx")}><div${_attr_class(["_dH", { ["_dG"]: !comments.length }])}>`);
3197
+ }, "l34", $scope0_id);
3198
+ _html(`<div${_attr_class("_ew")}><div${_attr_class("_eB")}><div${_attr_class("_eC")}><div${_attr_class(["_eM", { ["_eL"]: !comments.length }])}>`);
3165
3199
  _if(() => {
3166
3200
  if (input.onExit) {
3167
3201
  const $scope1_id = _scope_id();
3168
- _html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "_dy"])} title="Back to terminal (Esc)">`);
3202
+ _html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "_eD"])} title="Back to terminal (Esc)">`);
3169
3203
  icon_back_default({ size: 14 });
3170
3204
  _html(`</a>${_el_resume($scope1_id, "a", _serialize_guard($scope0_reason, 1))}`);
3171
3205
  _serialize_if($scope0_reason, 0) && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 1) && _scope_with_id($scope0_id) });
3172
3206
  return 0;
3173
3207
  }
3174
3208
  }, $scope0_id, "e", _serialize_guard($scope0_reason, 0), _serialize_guard($scope0_reason, 4), 1, 0, 1);
3175
- _html(`<h1${_attr_class("_dB")}>Review</h1>`);
3209
+ _html(`<h1${_attr_class("_eG")}>Review</h1>`);
3176
3210
  _if(() => {
3177
3211
  if (comments.length) {
3178
3212
  const $scope5_id = _scope_id();
3179
- _html(`<span${_attr_class("_dA")}>${_escape(comments.length)}${_el_resume($scope5_id, "b")} comment<!>${comments.length === 1 ? "" : "s"}${_el_resume($scope5_id, "c")}</span>`);
3213
+ _html(`<span${_attr_class("_eF")}>${_escape(comments.length)}${_el_resume($scope5_id, "b")} comment<!>${comments.length === 1 ? "" : "s"}${_el_resume($scope5_id, "c")}</span>`);
3180
3214
  writeScope($scope5_id, {});
3181
3215
  return 0;
3182
3216
  }
@@ -3184,7 +3218,7 @@ var diff_view_default = _template("k", (input) => {
3184
3218
  _if(() => {
3185
3219
  if (comments.length) {
3186
3220
  const $scope2_id = _scope_id();
3187
- _html(`<span${_attr_class("_dz")}>`);
3221
+ _html(`<span${_attr_class("_eE")}>`);
3188
3222
  _set_serialize_reason(_serialize_guard($scope0_reason, 5));
3189
3223
  const $childScope = _peek_scope_id();
3190
3224
  diff_send_default({
@@ -3197,23 +3231,23 @@ var diff_view_default = _template("k", (input) => {
3197
3231
  return 0;
3198
3232
  }
3199
3233
  }, $scope0_id, "h", 1, 1, 1, 0, 1);
3200
- _html(`</div>${_el_resume($scope0_id, "d")}<div${_attr_class("_dv")}>`);
3234
+ _html(`</div>${_el_resume($scope0_id, "d")}<div${_attr_class("_eA")}>`);
3201
3235
  _if(() => {
3202
3236
  if (hasFiles) {
3203
3237
  const $scope12_id = _scope_id();
3204
3238
  _html(`<button${_attr_class([
3205
3239
  treeToggle,
3206
- "_dt",
3207
- { ["_ds"]: treeOpen }
3240
+ "_ey",
3241
+ { ["_ex"]: treeOpen }
3208
3242
  ])} title=${treeOpen ? "\"Hide file tree\"" : "\"Show file tree\""}>`);
3209
3243
  icon_sidebar_default({ size: 14 });
3210
3244
  _html(`</button>${_el_resume($scope12_id, "a")}`);
3211
- _script($scope12_id, "k50");
3245
+ _script($scope12_id, "l52");
3212
3246
  writeScope($scope12_id, {});
3213
3247
  return 0;
3214
3248
  }
3215
3249
  }, $scope0_id, "j", 1, 1, 1, 0, 1);
3216
- _html(`<button${_attr_class([iconBtnRow, "_dt"])} title="Refresh diff"${_attr("disabled", loading)}>`);
3250
+ _html(`<button${_attr_class([iconBtnRow, "_ey"])} title="Refresh diff"${_attr("disabled", loading)}>`);
3217
3251
  _set_serialize_reason(1);
3218
3252
  const $childScope2 = _peek_scope_id();
3219
3253
  icon_refresh_default({
@@ -3224,19 +3258,19 @@ var diff_view_default = _template("k", (input) => {
3224
3258
  _if(() => {
3225
3259
  if (hasFiles) {
3226
3260
  const $scope13_id = _scope_id();
3227
- _html(`<button${_attr_class(["_o", "_dT"])} title="Jump to file">Files (<!>${_escape(shownFiles.length)}${_el_resume($scope13_id, "b")})</button>${_el_resume($scope13_id, "a")}`);
3228
- _script($scope13_id, "k51");
3261
+ _html(`<button${_attr_class(["_o", "_eY"])} title="Jump to file">Files (<!>${_escape(shownFiles.length)}${_el_resume($scope13_id, "b")})</button>${_el_resume($scope13_id, "a")}`);
3262
+ _script($scope13_id, "l53");
3229
3263
  writeScope($scope13_id, {});
3230
3264
  return 0;
3231
3265
  }
3232
3266
  }, $scope0_id, "m", 1, 1, 1, 0, 1);
3233
- _html(`<div${_attr_class("_dI")} role=group aria-label="Review scope"><button type=button${_attr_class(["_dK", { ["_dJ"]: scope$1 === "committed" }])} aria-pressed=${scope$1 === "committed" ? "true" : "false"} title="Committed changes only (base…tip, no working-tree edits)"${_attr("disabled", loading)}>Committed</button>${_el_resume($scope0_id, "o")}<button type=button${_attr_class(["_dK", { ["_dJ"]: scope$1 === "working" }])} aria-pressed=${scope$1 === "working" ? "true" : "false"} title="Committed changes plus uncommitted and untracked files"${_attr("disabled", loading)}>Working tree</button>${_el_resume($scope0_id, "p")}<button type=button${_attr_class(["_dK", { ["_dJ"]: scope$1 === "dirty" }])} aria-pressed=${scope$1 === "dirty" ? "true" : "false"} title="Only uncommitted and untracked files, against HEAD"${_attr("disabled", loading)}>Uncommitted</button>${_el_resume($scope0_id, "q")}</div><span${_attr_class(["_m", "_dL"])}>`);
3267
+ _html(`<div${_attr_class("_eN")} role=group aria-label="Review scope"><button type=button${_attr_class(["_eP", { ["_eO"]: scope$1 === "committed" }])} aria-pressed=${scope$1 === "committed" ? "true" : "false"} title="Committed changes only (base…tip, no working-tree edits)"${_attr("disabled", loading)}>Committed</button>${_el_resume($scope0_id, "o")}<button type=button${_attr_class(["_eP", { ["_eO"]: scope$1 === "working" }])} aria-pressed=${scope$1 === "working" ? "true" : "false"} title="Committed changes plus uncommitted and untracked files"${_attr("disabled", loading)}>Working tree</button>${_el_resume($scope0_id, "p")}<button type=button${_attr_class(["_eP", { ["_eO"]: scope$1 === "dirty" }])} aria-pressed=${scope$1 === "dirty" ? "true" : "false"} title="Only uncommitted and untracked files, against HEAD"${_attr("disabled", loading)}>Uncommitted</button>${_el_resume($scope0_id, "q")}</div><span${_attr_class(["_m", "_eQ"])}>`);
3234
3268
  _attr_select_value($scope0_id, "s", scope$1, _resume(function(v) {
3235
3269
  setScope(v);
3236
- }, "k0", $scope0_id), () => {
3237
- _html(`<select${_attr_class(["_n", "_dM"])} aria-label="Review scope"${_attr("disabled", loading)}><option${_attr_option_value("committed")}>Committed</option><option${_attr_option_value("working")}>Working tree</option><option${_attr_option_value("dirty")}>Uncommitted</option></select>`);
3270
+ }, "l0", $scope0_id), () => {
3271
+ _html(`<select${_attr_class(["_n", "_eR"])} aria-label="Review scope"${_attr("disabled", loading)}><option${_attr_option_value("committed")}>Committed</option><option${_attr_option_value("working")}>Working tree</option><option${_attr_option_value("dirty")}>Uncommitted</option></select>`);
3238
3272
  });
3239
- _html(`${_el_resume($scope0_id, "s")}</span><div${_attr_class(["_dE", { ["_dD"]: !findOpen }])}>`);
3273
+ _html(`${_el_resume($scope0_id, "s")}</span><div${_attr_class(["_eJ", { ["_eI"]: !findOpen }])}>`);
3240
3274
  _set_serialize_reason(2);
3241
3275
  const $childScope3 = _peek_scope_id();
3242
3276
  diff_find_default({
@@ -3245,11 +3279,11 @@ var diff_view_default = _template("k", (input) => {
3245
3279
  open: findOpen,
3246
3280
  openChange: _resume((_new_findOpen) => {
3247
3281
  findOpen = _new_findOpen;
3248
- }, "k33", $scope0_id),
3282
+ }, "l35", $scope0_id),
3249
3283
  focusRef: findFocusRef,
3250
3284
  stateChange: _resume(function(s) {
3251
3285
  onFindState(s);
3252
- }, "k34", $scope0_id)
3286
+ }, "l36", $scope0_id)
3253
3287
  });
3254
3288
  _html(`</div>${_el_resume($scope0_id, "t")}`);
3255
3289
  _if(() => {
@@ -3257,25 +3291,25 @@ var diff_view_default = _template("k", (input) => {
3257
3291
  const $scope14_id = _scope_id();
3258
3292
  _html(`<button${_attr_class([
3259
3293
  iconBtnRow,
3260
- "_dC",
3261
- "_dt"
3294
+ "_eH",
3295
+ "_ey"
3262
3296
  ])} title="Find in review (⌘/Ctrl+F)" aria-label="Find in review"${_attr("hidden", findOpen)}>`);
3263
3297
  icon_search_default({ size: 14 });
3264
3298
  _html(`</button>${_el_resume($scope14_id, "a")}`);
3265
- _script($scope14_id, "k52");
3299
+ _script($scope14_id, "l54");
3266
3300
  writeScope($scope14_id, {});
3267
3301
  return 0;
3268
3302
  }
3269
3303
  }, $scope0_id, "v", 1, 1, 1, 0, 1);
3270
- _html(`</div></div><div${_attr_class("_dF")} data-diff-main>`);
3304
+ _html(`</div></div><div${_attr_class("_eK")} data-diff-main>`);
3271
3305
  _if(() => {
3272
3306
  if (error) {
3273
3307
  const $scope6_id = _scope_id();
3274
3308
  toast_default({
3275
3309
  onDismiss: _resume(function() {
3276
3310
  error = null;
3277
- }, "k35", $scope6_id),
3278
- content: _content_resume("k53", () => {
3311
+ }, "l37", $scope6_id),
3312
+ content: _content_resume("l55", () => {
3279
3313
  _scope_reason();
3280
3314
  const $scope7_id = _scope_id();
3281
3315
  _html(`${_escape(error)}${_el_resume($scope7_id, "a")}`);
@@ -3290,7 +3324,7 @@ var diff_view_default = _template("k", (input) => {
3290
3324
  _if(() => {
3291
3325
  if (!repos && loading) {
3292
3326
  const $scope15_id = _scope_id();
3293
- _html(`<div${_attr_class("_dO")} aria-hidden=true><div${_attr_class(["_dP", "_dQ"])}></div><div${_attr_class(["_dP", "_dR"])}></div><div${_attr_class(["_dP", "_dS"])}></div><div${_attr_class(["_dP", "_dR"])}></div><div${_attr_class(["_dP", "_dS"])}></div></div>`);
3327
+ _html(`<div${_attr_class("_eT")} aria-hidden=true><div${_attr_class(["_eU", "_eV"])}></div><div${_attr_class(["_eU", "_eW"])}></div><div${_attr_class(["_eU", "_eX"])}></div><div${_attr_class(["_eU", "_eW"])}></div><div${_attr_class(["_eU", "_eX"])}></div></div>`);
3294
3328
  writeScope($scope15_id, {});
3295
3329
  return 0;
3296
3330
  }
@@ -3304,7 +3338,7 @@ var diff_view_default = _template("k", (input) => {
3304
3338
  kind: "warn",
3305
3339
  placement: "inline",
3306
3340
  title: `${repo.worktree}: base not found`,
3307
- content: _content_resume("k54", () => {
3341
+ content: _content_resume("l56", () => {
3308
3342
  _scope_reason();
3309
3343
  const $scope10_id = _scope_id();
3310
3344
  _html(`${_escape(repo.base)}${_el_resume($scope10_id, "a")}<!>${scope$1 !== "committed" ? ", showing uncommitted changes only" : ""}${_el_resume($scope10_id, "b")}.`);
@@ -3321,12 +3355,12 @@ var diff_view_default = _template("k", (input) => {
3321
3355
  _if(() => {
3322
3356
  if (repos && !allFiles.length) {
3323
3357
  const $scope11_id = _scope_id();
3324
- _html(`<p${_attr_class("_bv")}>${scope$1 === "dirty" ? "Nothing uncommitted." : repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base."}${_el_resume($scope11_id, "b")}</p>`);
3358
+ _html(`<p${_attr_class("_bE")}>${scope$1 === "dirty" ? "Nothing uncommitted." : repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base."}${_el_resume($scope11_id, "b")}</p>`);
3325
3359
  writeScope($scope11_id, {});
3326
3360
  return 0;
3327
3361
  } else if (repos && !shownFiles.length && !findState.hit) {
3328
3362
  const $scope8_id = _scope_id();
3329
- _html(`<p${_attr_class("_bv")}>${findState.query.trim() ? "No matches in review." : onlyNew && !fileFilter ? "Nothing changed since your last visit." : `No files match "${_escape(`${fileFilter}`)}".`}${_el_resume($scope8_id, "b")}</p>`);
3363
+ _html(`<p${_attr_class("_bE")}>${findState.query.trim() ? "No matches in review." : onlyNew && !fileFilter ? "Nothing changed since your last visit." : `No files match "${_escape(`${fileFilter}`)}".`}${_el_resume($scope8_id, "b")}</p>`);
3330
3364
  writeScope($scope8_id, {});
3331
3365
  return 1;
3332
3366
  }
@@ -3349,14 +3383,14 @@ var diff_view_default = _template("k", (input) => {
3349
3383
  opened: openedRepos.has(repo.id),
3350
3384
  onToggle: _resume(function() {
3351
3385
  toggleSection(repo.id);
3352
- }, "k36", $scope4_id),
3386
+ }, "l38", $scope4_id),
3353
3387
  workspaceBranch: input.workspaceBranch || "",
3354
3388
  workspaceName: input.workspaceName || "",
3355
3389
  localDiffers: localDifferIds.has(repo.id),
3356
3390
  onlyNew,
3357
3391
  onToggleNew: _resume(function() {
3358
3392
  onlyNew = !onlyNew;
3359
- }, "k37", $scope4_id),
3393
+ }, "l39", $scope4_id),
3360
3394
  onReload: reload,
3361
3395
  loading,
3362
3396
  findHit: findState.hit,
@@ -3367,7 +3401,7 @@ var diff_view_default = _template("k", (input) => {
3367
3401
  collapsedFiles,
3368
3402
  onFileToggle: _resume(function(key, open) {
3369
3403
  setFilesCollapsed([key], !open);
3370
- }, "k38", $scope4_id),
3404
+ }, "l40", $scope4_id),
3371
3405
  onSelect: _resume(function(file, range) {
3372
3406
  draft = {
3373
3407
  key: file.key,
@@ -3375,25 +3409,25 @@ var diff_view_default = _template("k", (input) => {
3375
3409
  start: Math.min(range.start, range.end),
3376
3410
  end: Math.max(range.start, range.end)
3377
3411
  };
3378
- }, "k39", $scope4_id),
3412
+ }, "l41", $scope4_id),
3379
3413
  onSaveComment: _resume(function(file, text) {
3380
3414
  saveComment(file, text);
3381
- }, "k40", $scope4_id),
3415
+ }, "l42", $scope4_id),
3382
3416
  onSendDraft: _resume(function(file, text, sessionId) {
3383
3417
  sendDraftComment(file, text, sessionId);
3384
- }, "k41", $scope4_id),
3418
+ }, "l43", $scope4_id),
3385
3419
  onCancelDraft: _resume(function() {
3386
3420
  draft = null;
3387
- }, "k42", $scope4_id),
3421
+ }, "l44", $scope4_id),
3388
3422
  onDeleteComment: _resume(function(id) {
3389
3423
  removeComment(id);
3390
- }, "k43", $scope4_id),
3424
+ }, "l45", $scope4_id),
3391
3425
  onSendComment: _resume(function(id, sessionId) {
3392
3426
  sendOneComment(id, sessionId);
3393
- }, "k44", $scope4_id),
3427
+ }, "l46", $scope4_id),
3394
3428
  onError: _resume(function(message) {
3395
3429
  error = message;
3396
- }, "k45", $scope4_id)
3430
+ }, "l47", $scope4_id)
3397
3431
  });
3398
3432
  _subscribe($toggleSection2__closures, _subscribe($sendDraftComment2__closures, _subscribe($sendOneComment2__closures, _subscribe($removeComment2__closures, _subscribe($saveComment2__closures, _subscribe($localDifferIds__closures, _subscribe($commentsByFile__closures, _subscribe($shownKeySet__closures, _subscribe($repoList_length__closures, _subscribe($reload2__closures, _subscribe($expandingRepos__closures, _subscribe($openedRepos__closures, _subscribe($setFilesCollapsed2__closures, _subscribe($collapsedFiles__closures, _subscribe($collapsedRepos__closures, _subscribe($findState_hit__closures, _subscribe($onlyNew__closures, _subscribe($loading__closures, _subscribe($draft__closures, _subscribe($si__input_workspaceName && $input_workspaceName__closures, _subscribe($si__input_workspaceBranch && $input_workspaceBranch__closures, _subscribe($si__input_sessions && $input_sessions__closures, writeScope($scope4_id, { a: _existing_scope($childScope5) })))))))))))))))))))))));
3399
3433
  return 0;
@@ -3415,17 +3449,17 @@ var diff_view_default = _template("k", (input) => {
3415
3449
  collapsedRepos,
3416
3450
  collapsedReposChange: _resume((_new_collapsedRepos) => {
3417
3451
  collapsedRepos = _new_collapsedRepos;
3418
- }, "k46", $scope0_id),
3452
+ }, "l48", $scope0_id),
3419
3453
  openedRepos,
3420
3454
  openedReposChange: _resume((_new_openedRepos) => {
3421
3455
  openedRepos = _new_openedRepos;
3422
- }, "k47", $scope0_id),
3456
+ }, "l49", $scope0_id),
3423
3457
  commentKeys,
3424
3458
  newKeys,
3425
3459
  collapsedFiles,
3426
3460
  onDirToggle: _resume(function(keys, collapsed) {
3427
3461
  setFilesCollapsed(keys, collapsed);
3428
- }, "k48", $scope0_id),
3462
+ }, "l50", $scope0_id),
3429
3463
  workspaceId: input.workspaceId,
3430
3464
  scope: scope$1
3431
3465
  });
@@ -3435,7 +3469,7 @@ var diff_view_default = _template("k", (input) => {
3435
3469
  open: fileSheet,
3436
3470
  openChange: _resume((_new_fileSheet) => {
3437
3471
  fileSheet = _new_fileSheet;
3438
- }, "k49", $scope0_id),
3472
+ }, "l51", $scope0_id),
3439
3473
  files: shownFiles,
3440
3474
  filter: fileFilter,
3441
3475
  filterChange: $filterChange,
@@ -3446,11 +3480,11 @@ var diff_view_default = _template("k", (input) => {
3446
3480
  scope: scope$1
3447
3481
  });
3448
3482
  _html("</div>");
3449
- _script($scope0_id, "k55");
3450
- _script($scope0_id, "k56");
3451
- _script($scope0_id, "k57");
3452
- _script($scope0_id, "k58");
3453
- _script($scope0_id, "k59");
3483
+ _script($scope0_id, "l57");
3484
+ _script($scope0_id, "l58");
3485
+ _script($scope0_id, "l59");
3486
+ _script($scope0_id, "l60");
3487
+ _script($scope0_id, "l61");
3454
3488
  writeScope($scope0_id, {
3455
3489
  a6: input.workspaceId,
3456
3490
  a7: input.scope,
@@ -3494,79 +3528,81 @@ var diff_view_default = _template("k", (input) => {
3494
3528
  bo: nearBox.root,
3495
3529
  bq: observeNear,
3496
3530
  br: pinToTop,
3497
- bt: focusPrSection,
3498
- bu: findFile,
3499
- bv: openFile,
3500
- by: jumpTo,
3501
- c0: posBox.raf,
3502
- c1: posBox.anchor,
3503
- c3: posBox.run,
3504
- c5: anchorAt,
3505
- c7: noteScroll,
3506
- c8: savePos,
3507
- c9: restorePos,
3508
- cb: headBox.sig,
3509
- cc: headBox.timer,
3510
- ce: loadBox.seq,
3511
- cg: load,
3512
- cj: setScope,
3513
- cm: sendGate.busy,
3514
- co: loadReview,
3515
- cp: reload,
3516
- cr: reloadSoon,
3517
- cs: markSeen,
3518
- cu: repoList,
3519
- cv: repoList.length,
3520
- cw: allFiles,
3521
- cy: allFiles?.length,
3522
- cz: fileFiltered,
3523
- d0: findKeys,
3531
+ bs: retryFrames,
3532
+ bu: focusPrSection,
3533
+ bv: findFile,
3534
+ bw: openFile,
3535
+ bz: jumpTo,
3536
+ c1: posBox.raf,
3537
+ c2: posBox.anchor,
3538
+ c4: posBox.run,
3539
+ c6: anchorAt,
3540
+ c8: noteScroll,
3541
+ c9: savePos,
3542
+ ca: restorePos,
3543
+ cc: headBox.sig,
3544
+ cd: headBox.timer,
3545
+ cf: loadBox.seq,
3546
+ ch: load,
3547
+ ck: setScope,
3548
+ cn: sendGate.busy,
3549
+ cp: loadReview,
3550
+ cq: reload,
3551
+ cs: reloadSoon,
3552
+ ct: markSeen,
3553
+ cv: repoList,
3554
+ cw: repoList.length,
3555
+ cx: allFiles,
3556
+ cz: allFiles?.length,
3557
+ d0: fileFiltered,
3558
+ d1: findKeys,
3524
3559
  d4: shownFiles?.length,
3525
3560
  d6: shownKeySet,
3526
- d8: filesByRepo,
3527
- db: commentsByFile,
3528
- de: localDifferIds,
3529
- df: hasFiles,
3530
- dg: fileWorktree,
3531
- dh: anchorFor,
3532
- dj: saveComment,
3533
- dk: deleteRemote,
3534
- dn: removeComment,
3535
- do: dispatch,
3536
- dr: copyMarkdown,
3537
- ds: sendTo,
3538
- dt: sendOneComment,
3539
- du: sendDraftComment,
3540
- dv: openFind,
3541
- dx: onFindState,
3542
- dy: toggleSection,
3561
+ d8: groupByRepo,
3562
+ db: filesByRepo,
3563
+ de: commentsByFile,
3564
+ dh: localDifferIds,
3565
+ di: hasFiles,
3566
+ dj: fileWorktree,
3567
+ dk: anchorFor,
3568
+ dm: saveComment,
3569
+ dn: deleteRemote,
3570
+ dq: removeComment,
3571
+ dr: dispatch,
3572
+ du: copyMarkdown,
3573
+ dv: sendTo,
3574
+ dw: sendOneComment,
3575
+ dx: sendDraftComment,
3576
+ dy: openFind,
3577
+ e0: onFindState,
3578
+ e1: toggleSection,
3543
3579
  b5: input.findOpenChange || void 0,
3544
3580
  l: _existing_scope($childScope2),
3545
3581
  u: _existing_scope($childScope3),
3546
- e5: $error__closures,
3547
- e9: $scope__closures,
3548
- e0: $si__input_sessions && $input_sessions__closures,
3549
- e1: $si__input_workspaceBranch && $input_workspaceBranch__closures,
3550
- e2: $si__input_workspaceName && $input_workspaceName__closures,
3551
- e4: $draft__closures,
3552
- e6: $loading__closures,
3553
- e8: $onlyNew__closures,
3554
- ed: $findState_hit__closures,
3555
- ee: $collapsedRepos__closures,
3556
- ef: $collapsedFiles__closures,
3557
- eg: $setFilesCollapsed2__closures,
3558
- eh: $openedRepos__closures,
3559
- ei: $expandingRepos__closures,
3560
- ek: $reload2__closures,
3561
- em: $repoList_length__closures,
3562
- eo: $shownKeySet__closures,
3563
- eq: $commentsByFile__closures,
3564
- er: $localDifferIds__closures,
3565
- et: $saveComment2__closures,
3566
- eu: $removeComment2__closures,
3567
- ex: $sendOneComment2__closures,
3568
- ey: $sendDraftComment2__closures,
3569
- ez: $toggleSection2__closures,
3582
+ e8: $error__closures,
3583
+ ec: $scope__closures,
3584
+ e3: $si__input_sessions && $input_sessions__closures,
3585
+ e4: $si__input_workspaceBranch && $input_workspaceBranch__closures,
3586
+ e5: $si__input_workspaceName && $input_workspaceName__closures,
3587
+ e7: $draft__closures,
3588
+ e9: $loading__closures,
3589
+ eb: $onlyNew__closures,
3590
+ eg: $findState_hit__closures,
3591
+ eh: $collapsedRepos__closures,
3592
+ ei: $collapsedFiles__closures,
3593
+ ej: $setFilesCollapsed2__closures,
3594
+ ek: $openedRepos__closures,
3595
+ el: $expandingRepos__closures,
3596
+ en: $reload2__closures,
3597
+ ep: $repoList_length__closures,
3598
+ er: $shownKeySet__closures,
3599
+ et: $commentsByFile__closures,
3600
+ eu: $localDifferIds__closures,
3601
+ ew: $saveComment2__closures,
3602
+ ex: $removeComment2__closures,
3603
+ f0: $sendOneComment2__closures,
3604
+ f1: $sendDraftComment2__closures,
3605
+ f2: $toggleSection2__closures,
3570
3606
  a2: _existing_scope($childScope6),
3571
3607
  a3: _existing_scope($childScope7)
3572
3608
  });