@dylanpiercey/work 0.0.82 → 0.0.84

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 (247) hide show
  1. package/dist/{_hKCo6x-v.js → _BOcMB3Se.js} +237 -201
  2. package/dist/{_CbGuzk5A.js → _DGA7IvGR.js} +2 -2
  3. package/dist/index.mjs +138 -138
  4. package/dist/public/assets/{_osI_OYpe.js → _3kMh5IhJ.js} +1 -1
  5. package/dist/public/assets/_3kMh5IhJ.js.br +0 -0
  6. package/dist/public/assets/{_BR-05adR.js → _3yN1Y5sV.js} +1 -1
  7. package/dist/public/assets/_3yN1Y5sV.js.br +0 -0
  8. package/dist/public/assets/{_CdH2klbl2.js → _B1ymgFfj2.js} +1 -1
  9. package/dist/public/assets/_B1ymgFfj2.js.br +0 -0
  10. package/dist/public/assets/{_CSixW3RB.js → _B3sLEuiV.js} +1 -1
  11. package/dist/public/assets/_B3sLEuiV.js.br +0 -0
  12. package/dist/public/assets/{_CkepOsOW.js → _B92U8Tp7.js} +1 -1
  13. package/dist/public/assets/_B92U8Tp7.js.br +0 -0
  14. package/dist/public/assets/{_DOetJUUJ2.js → _BB6pEFnc2.js} +1 -1
  15. package/dist/public/assets/_BB6pEFnc2.js.br +0 -0
  16. package/dist/public/assets/{_odilh0Si2.js → _BEq8K9u02.js} +1 -1
  17. package/dist/public/assets/_BEq8K9u02.js.br +0 -0
  18. package/dist/public/assets/{_CFFvNT1q.js → _BMJ4v2Ht.js} +1 -1
  19. package/dist/public/assets/_BMJ4v2Ht.js.br +0 -0
  20. package/dist/public/assets/{_BiD1U5_T2.js → _BMrwgW0t2.js} +1 -1
  21. package/dist/public/assets/_BMrwgW0t2.js.br +0 -0
  22. package/dist/public/assets/{_BeFwce1T.js → _BOvrqKm-.js} +1 -1
  23. package/dist/public/assets/_BOvrqKm-.js.br +0 -0
  24. package/dist/public/assets/{_Bxewhqaw.js → _BS6XCeVG.js} +1 -1
  25. package/dist/public/assets/_BS6XCeVG.js.br +0 -0
  26. package/dist/public/assets/{_CbNXWLgc2.js → _BdBy6LnA2.js} +1 -1
  27. package/dist/public/assets/_BdBy6LnA2.js.br +0 -0
  28. package/dist/public/assets/{_z9QRJCjN.js → _BdaKuAyS.js} +1 -1
  29. package/dist/public/assets/_BdaKuAyS.js.br +0 -0
  30. package/dist/public/assets/{_yDuqFLgJ2.js → _BhhKcsqX2.js} +1 -1
  31. package/dist/public/assets/_BhhKcsqX2.js.br +0 -0
  32. package/dist/public/assets/{_B_wtJBDf.js → _BiTLx2mY.js} +1 -1
  33. package/dist/public/assets/_BiTLx2mY.js.br +0 -0
  34. package/dist/public/assets/{_la5VE3W4.js → _BkmZvC5V.js} +1 -1
  35. package/dist/public/assets/_BkmZvC5V.js.br +0 -0
  36. package/dist/public/assets/{_DVPmBDiv.js → _BlLM6G-3.js} +1 -1
  37. package/dist/public/assets/_BlLM6G-3.js.br +0 -0
  38. package/dist/public/assets/{_B41OOAWE.js → _Bt5o0Oko.js} +1 -1
  39. package/dist/public/assets/_Bt5o0Oko.js.br +0 -0
  40. package/dist/public/assets/{_CrDF0eeY2.js → _BvA3FZCL2.js} +1 -1
  41. package/dist/public/assets/_BvA3FZCL2.js.br +0 -0
  42. package/dist/public/assets/{_DFO3qhdR2.js → _Bwkk6aAB2.js} +1 -1
  43. package/dist/public/assets/_Bwkk6aAB2.js.br +0 -0
  44. package/dist/public/assets/{_Bje7gfya.js → _C1SKpO2F.js} +1 -1
  45. package/dist/public/assets/_C1SKpO2F.js.br +0 -0
  46. package/dist/public/assets/{_C_P5f4EK.js → _C3iOEbHo.js} +1 -1
  47. package/dist/public/assets/_C3iOEbHo.js.br +0 -0
  48. package/dist/public/assets/{_BtwlJ5_o.js → _C3n-9E2u.js} +3 -3
  49. package/dist/public/assets/_C3n-9E2u.js.br +0 -0
  50. package/dist/public/assets/{_CkXiLyKj.js → _C5BsOZCP.js} +1 -1
  51. package/dist/public/assets/_C5BsOZCP.js.br +0 -0
  52. package/dist/public/assets/{_FPrhjJGN2.js → _C5ejgRIo2.js} +1 -1
  53. package/dist/public/assets/_C5ejgRIo2.js.br +0 -0
  54. package/dist/public/assets/{_Cc65kW932.js → _CD5Q8H_32.js} +1 -1
  55. package/dist/public/assets/{_BnbIEqHf.js → _CDMbYkZp.js} +1 -1
  56. package/dist/public/assets/_CDMbYkZp.js.br +0 -0
  57. package/dist/public/assets/{_DtgGBSSq2.js → _CH8XY8lN2.js} +1 -1
  58. package/dist/public/assets/{_Un9uXTqQ.js → _CIXAEhbw.js} +1 -1
  59. package/dist/public/assets/_CIXAEhbw.js.br +0 -0
  60. package/dist/public/assets/{_GQj_poV52.js → _CQFpufIG2.js} +1 -1
  61. package/dist/public/assets/_CQFpufIG2.js.br +0 -0
  62. package/dist/public/assets/{_BIgywKPY.js → _CSx-L5pW.js} +1 -1
  63. package/dist/public/assets/_CSx-L5pW.js.br +0 -0
  64. package/dist/public/assets/{_ilBoZ9l9.js → _CUp_5V1i.js} +1 -1
  65. package/dist/public/assets/_CUp_5V1i.js.br +0 -0
  66. package/dist/public/assets/{_uHbq-iwP.js → _CZj6esI3.js} +1 -1
  67. package/dist/public/assets/_CZj6esI3.js.br +0 -0
  68. package/dist/public/assets/{__YcMOMHo2.js → _CbR0Q18b2.js} +1 -1
  69. package/dist/public/assets/_CbR0Q18b2.js.br +0 -0
  70. package/dist/public/assets/{_CIa8PHfy.js → _Cjh4-NxA.js} +1 -1
  71. package/dist/public/assets/_Cjh4-NxA.js.br +0 -0
  72. package/dist/public/assets/{_C8yn_Acw2.js → _ClUj4A8Z2.js} +1 -1
  73. package/dist/public/assets/_ClUj4A8Z2.js.br +0 -0
  74. package/dist/public/assets/{_BLw2dqrD.js → _Csm5k9KV.js} +1 -1
  75. package/dist/public/assets/_Csm5k9KV.js.br +0 -0
  76. package/dist/public/assets/{_BQOF_Y8b2.js → _CvjWGuVM2.js} +1 -1
  77. package/dist/public/assets/_CvjWGuVM2.js.br +0 -0
  78. package/dist/public/assets/{_CEnYcVq1.js → _CwBy4cn2.js} +1 -1
  79. package/dist/public/assets/_CwBy4cn2.js.br +0 -0
  80. package/dist/public/assets/{_DwT8V2US.js → _Cwjsu6Gg.js} +1 -1
  81. package/dist/public/assets/_Cwjsu6Gg.js.br +0 -0
  82. package/dist/public/assets/{_BhCMFVhP.js → _D0gTvz1g.js} +1 -1
  83. package/dist/public/assets/_D0gTvz1g.js.br +0 -0
  84. package/dist/public/assets/{_BbzwTGW82.js → _D2Y6bDDO2.js} +1 -1
  85. package/dist/public/assets/_D2Y6bDDO2.js.br +0 -0
  86. package/dist/public/assets/{_j9oyPgbB.js → _D4duKQCj.js} +1 -1
  87. package/dist/public/assets/_D4duKQCj.js.br +0 -0
  88. package/dist/public/assets/{_CaAVXtkO2.js → _D8InHq1c2.js} +1 -1
  89. package/dist/public/assets/_D8InHq1c2.js.br +0 -0
  90. package/dist/public/assets/{_DVsvhhCG.js → _DH6Nupnh.js} +1 -1
  91. package/dist/public/assets/_DH6Nupnh.js.br +0 -0
  92. package/dist/public/assets/{_CHkkF2px.js → _DJ1uACXP.js} +1 -1
  93. package/dist/public/assets/_DJ1uACXP.js.br +0 -0
  94. package/dist/public/assets/{_Ds0rpfZI2.js → _DMRTqLA-2.js} +1 -1
  95. package/dist/public/assets/_DMRTqLA-2.js.br +0 -0
  96. package/dist/public/assets/{_D1sMicdw2.js → _DV9JOmEU2.js} +1 -1
  97. package/dist/public/assets/_DV9JOmEU2.js.br +0 -0
  98. package/dist/public/assets/{_a9F3-2zU.js → _DXfvbY_Q.js} +1 -1
  99. package/dist/public/assets/_DXfvbY_Q.js.br +0 -0
  100. package/dist/public/assets/{_BUZroJmM.js → _DXhrQRPb.js} +1 -1
  101. package/dist/public/assets/_DXhrQRPb.js.br +0 -0
  102. package/dist/public/assets/{_Cy8XPyIc.js → _DakHZxm1.js} +1 -1
  103. package/dist/public/assets/_DakHZxm1.js.br +0 -0
  104. package/dist/public/assets/{_CJEPOhMj.js → _Db0N45S4.js} +1 -1
  105. package/dist/public/assets/_Db0N45S4.js.br +0 -0
  106. package/dist/public/assets/{_B3oBmIsx.js → _DbgCLxo5.js} +1 -1
  107. package/dist/public/assets/_DbgCLxo5.js.br +0 -0
  108. package/dist/public/assets/{_CJnIf-SF.js → _DfSfBcFs.js} +1 -1
  109. package/dist/public/assets/_DfSfBcFs.js.br +0 -0
  110. package/dist/public/assets/{_BECV_Fyx.js → _DifhWd0-.js} +1 -1
  111. package/dist/public/assets/{_DOKljOTH.js → _DnIiwZSa.js} +1 -1
  112. package/dist/public/assets/_DnIiwZSa.js.br +0 -0
  113. package/dist/public/assets/{_CAPotJs-2.js → _DnW0vqlP2.js} +1 -1
  114. package/dist/public/assets/_DnW0vqlP2.js.br +0 -0
  115. package/dist/public/assets/{_nR-jfrht.js → _Dt7xdACi.js} +1 -1
  116. package/dist/public/assets/_Dt7xdACi.js.br +0 -0
  117. package/dist/public/assets/{_DwGU_M9s.js → _DtSPvS1_.js} +1 -1
  118. package/dist/public/assets/_DtSPvS1_.js.br +0 -0
  119. package/dist/public/assets/{_DI682Elr.js → _DuUhapU_.js} +1 -1
  120. package/dist/public/assets/_DuUhapU_.js.br +0 -0
  121. package/dist/public/assets/{_DJ8uQzwM.js → _DwFCzFi1.js} +1 -1
  122. package/dist/public/assets/_DwFCzFi1.js.br +0 -0
  123. package/dist/public/assets/{_Bk_G8M5C.js → _Dzwcxo-e.js} +1 -1
  124. package/dist/public/assets/_Dzwcxo-e.js.br +0 -0
  125. package/dist/public/assets/_MLaNsogz.js +1536 -0
  126. package/dist/public/assets/_MLaNsogz.js.br +0 -0
  127. package/dist/public/assets/{_DS4oOWLT2.js → _S4hEqend2.js} +1 -1
  128. package/dist/public/assets/_S4hEqend2.js.br +0 -0
  129. package/dist/public/assets/{_DorHpq9j.js → _UTtFNJ9B.js} +1 -1
  130. package/dist/public/assets/_UTtFNJ9B.js.br +0 -0
  131. package/dist/public/assets/{_Dql2UFNc.js → _XEFXK4VK.js} +1 -1
  132. package/dist/public/assets/_XEFXK4VK.js.br +0 -0
  133. package/dist/public/assets/{_BmC3EX2D.js → _Xj2rl27Z.js} +1 -1
  134. package/dist/public/assets/_Xj2rl27Z.js.br +0 -0
  135. package/dist/public/assets/{_CWA7J2mn.js → _ioGYI7CA.js} +1 -1
  136. package/dist/public/assets/_ioGYI7CA.js.br +0 -0
  137. package/dist/public/assets/{_Br4zw_mV.js → _n0XIu-yS.js} +1 -1
  138. package/dist/public/assets/_n0XIu-yS.js.br +0 -0
  139. package/dist/public/assets/{_CGMSNnL-2.js → _oEMyCm1C2.js} +1 -1
  140. package/dist/public/assets/_oEMyCm1C2.js.br +0 -0
  141. package/dist/public/assets/{_CZe9PNFm.js → _tdNHQwFq.js} +1 -1
  142. package/dist/public/assets/_tdNHQwFq.js.br +0 -0
  143. package/dist/public/assets/{_Dz665X0g.js → _uMuEpH_b.js} +1 -1
  144. package/dist/public/assets/_uMuEpH_b.js.br +0 -0
  145. package/dist/public/assets/{_Bh9yRaD72.js → _uzKsqP2S2.js} +1 -1
  146. package/dist/public/assets/_uzKsqP2S2.js.br +0 -0
  147. package/dist/public/assets/{_FYqVfoUp2.js → _y1iudyIK2.js} +1 -1
  148. package/dist/public/assets/_y1iudyIK2.js.br +0 -0
  149. package/dist/public/assets/{_Cx9GIPHc.js → _yYMx9Q8s.js} +1 -1
  150. package/dist/public/assets/_yYMx9Q8s.js.br +0 -0
  151. package/dist/public/assets/{_Lj3aaNpd.js → _zW6Zb3Bx.js} +1 -1
  152. package/dist/public/assets/_zW6Zb3Bx.js.br +0 -0
  153. package/dist/public/assets/{app-page-D8sTRvm0.css → app-page-CdVETHL-.css} +1 -1
  154. package/dist/public/assets/app-page-CdVETHL-.css.br +0 -0
  155. package/dist/public/assets/{diff-view-wmRIejo2.css → diff-view-DAwAub6l.css} +1 -1
  156. package/dist/public/assets/diff-view-DAwAub6l.css.br +0 -0
  157. package/dist/public/assets/new-mX2iXBHC.js +1 -0
  158. package/dist/public/assets/settings-mX2iXBHC.js +1 -0
  159. package/dist/public/assets/w-mX2iXBHC.js +1 -0
  160. package/dist/public/assets/w._-DelVj4P_.js +1 -0
  161. package/dist/public/assets/w._-mX2iXBHC.js +1 -0
  162. package/dist/public/assets/wasm-S0UXjx1m.js +1 -0
  163. package/dist/public/assets/wasm-S0UXjx1m.js.br +0 -0
  164. package/dist/public/assets/worker-DZo603XT.js +161 -0
  165. package/dist/public/assets/worker-DZo603XT.js.br +0 -0
  166. package/package.json +1 -1
  167. package/dist/public/assets/_B3oBmIsx.js.br +0 -0
  168. package/dist/public/assets/_B41OOAWE.js.br +0 -0
  169. package/dist/public/assets/_BIgywKPY.js.br +0 -0
  170. package/dist/public/assets/_BLw2dqrD.js.br +0 -0
  171. package/dist/public/assets/_BQOF_Y8b2.js.br +0 -0
  172. package/dist/public/assets/_BR-05adR.js.br +0 -0
  173. package/dist/public/assets/_BUZroJmM.js.br +0 -0
  174. package/dist/public/assets/_B_wtJBDf.js.br +0 -0
  175. package/dist/public/assets/_BbzwTGW82.js.br +0 -0
  176. package/dist/public/assets/_BeFwce1T.js.br +0 -0
  177. package/dist/public/assets/_Bh9yRaD72.js.br +0 -0
  178. package/dist/public/assets/_BhCMFVhP.js.br +0 -0
  179. package/dist/public/assets/_BiD1U5_T2.js.br +0 -0
  180. package/dist/public/assets/_Bje7gfya.js.br +0 -0
  181. package/dist/public/assets/_Bk_G8M5C.js.br +0 -0
  182. package/dist/public/assets/_BmC3EX2D.js.br +0 -0
  183. package/dist/public/assets/_BnbIEqHf.js.br +0 -0
  184. package/dist/public/assets/_Br4zw_mV.js.br +0 -0
  185. package/dist/public/assets/_BtwlJ5_o.js.br +0 -0
  186. package/dist/public/assets/_Bxewhqaw.js.br +0 -0
  187. package/dist/public/assets/_C8yn_Acw2.js.br +0 -0
  188. package/dist/public/assets/_CAPotJs-2.js.br +0 -0
  189. package/dist/public/assets/_CEnYcVq1.js.br +0 -0
  190. package/dist/public/assets/_CFFvNT1q.js.br +0 -0
  191. package/dist/public/assets/_CGMSNnL-2.js.br +0 -0
  192. package/dist/public/assets/_CHkkF2px.js.br +0 -0
  193. package/dist/public/assets/_CIa8PHfy.js.br +0 -0
  194. package/dist/public/assets/_CJEPOhMj.js.br +0 -0
  195. package/dist/public/assets/_CJnIf-SF.js.br +0 -0
  196. package/dist/public/assets/_CSixW3RB.js.br +0 -0
  197. package/dist/public/assets/_CWA7J2mn.js.br +0 -0
  198. package/dist/public/assets/_CZe9PNFm.js.br +0 -0
  199. package/dist/public/assets/_C_P5f4EK.js.br +0 -0
  200. package/dist/public/assets/_CaAVXtkO2.js.br +0 -0
  201. package/dist/public/assets/_CbNXWLgc2.js.br +0 -0
  202. package/dist/public/assets/_CdH2klbl2.js.br +0 -0
  203. package/dist/public/assets/_CkXiLyKj.js.br +0 -0
  204. package/dist/public/assets/_CkepOsOW.js.br +0 -0
  205. package/dist/public/assets/_CrDF0eeY2.js.br +0 -0
  206. package/dist/public/assets/_Cx9GIPHc.js.br +0 -0
  207. package/dist/public/assets/_Cy8XPyIc.js.br +0 -0
  208. package/dist/public/assets/_D1sMicdw2.js.br +0 -0
  209. package/dist/public/assets/_DFO3qhdR2.js.br +0 -0
  210. package/dist/public/assets/_DI682Elr.js.br +0 -0
  211. package/dist/public/assets/_DJ8uQzwM.js.br +0 -0
  212. package/dist/public/assets/_DOKljOTH.js.br +0 -0
  213. package/dist/public/assets/_DOetJUUJ2.js.br +0 -0
  214. package/dist/public/assets/_DPu8iLt3.js +0 -1532
  215. package/dist/public/assets/_DPu8iLt3.js.br +0 -0
  216. package/dist/public/assets/_DS4oOWLT2.js.br +0 -0
  217. package/dist/public/assets/_DVPmBDiv.js.br +0 -0
  218. package/dist/public/assets/_DVsvhhCG.js.br +0 -0
  219. package/dist/public/assets/_DorHpq9j.js.br +0 -0
  220. package/dist/public/assets/_Dql2UFNc.js.br +0 -0
  221. package/dist/public/assets/_Ds0rpfZI2.js.br +0 -0
  222. package/dist/public/assets/_DwGU_M9s.js.br +0 -0
  223. package/dist/public/assets/_DwT8V2US.js.br +0 -0
  224. package/dist/public/assets/_Dz665X0g.js.br +0 -0
  225. package/dist/public/assets/_FPrhjJGN2.js.br +0 -0
  226. package/dist/public/assets/_FYqVfoUp2.js.br +0 -0
  227. package/dist/public/assets/_GQj_poV52.js.br +0 -0
  228. package/dist/public/assets/_Lj3aaNpd.js.br +0 -0
  229. package/dist/public/assets/_Un9uXTqQ.js.br +0 -0
  230. package/dist/public/assets/__YcMOMHo2.js.br +0 -0
  231. package/dist/public/assets/_a9F3-2zU.js.br +0 -0
  232. package/dist/public/assets/_ilBoZ9l9.js.br +0 -0
  233. package/dist/public/assets/_j9oyPgbB.js.br +0 -0
  234. package/dist/public/assets/_la5VE3W4.js.br +0 -0
  235. package/dist/public/assets/_nR-jfrht.js.br +0 -0
  236. package/dist/public/assets/_odilh0Si2.js.br +0 -0
  237. package/dist/public/assets/_osI_OYpe.js.br +0 -0
  238. package/dist/public/assets/_uHbq-iwP.js.br +0 -0
  239. package/dist/public/assets/_yDuqFLgJ2.js.br +0 -0
  240. package/dist/public/assets/_z9QRJCjN.js.br +0 -0
  241. package/dist/public/assets/app-page-D8sTRvm0.css.br +0 -0
  242. package/dist/public/assets/diff-view-wmRIejo2.css.br +0 -0
  243. package/dist/public/assets/new-oVr2dYr3.js +0 -1
  244. package/dist/public/assets/settings-oVr2dYr3.js +0 -1
  245. package/dist/public/assets/w-oVr2dYr3.js +0 -1
  246. package/dist/public/assets/w._-BXx4vFQJ.js +0 -1
  247. package/dist/public/assets/w._-oVr2dYr3.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 "./_CbGuzk5A.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 "./_DGA7IvGR.js";
2
2
  //#region src/client/router.ts
3
3
  function urlFor(r) {
4
4
  if (r.view === "settings") return "/settings";
@@ -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];
@@ -1754,21 +1783,22 @@ var diff_find_default = _template("h", (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);
1794
+ setSearchPaint$1(q, hit, hitKeys(list) ?? void 0);
1766
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;
@@ -1901,8 +1931,8 @@ function shortBranch(name, wsBranch = "", wsName = "") {
1901
1931
  }
1902
1932
  return shortHeadFallback(head);
1903
1933
  }
1904
- var repoWorktree = "_f3 _x";
1905
- var repoTitle = "_f9 _w";
1934
+ var repoWorktree = "_gx _x";
1935
+ var repoTitle = "_gD _w";
1906
1936
  tone.warn;
1907
1937
  var diff_file_default = _template("g", (input) => {
1908
1938
  _scope_reason();
@@ -1965,14 +1995,14 @@ var review_section_default = _template("t", (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("_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 }])}>`);
1998
+ _html(`<section${_attr_class("_gt")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownCount && !repo.pr && input.findHit?.repo !== repo.id)}><div${_attr_class(["_gu", { ["_gv"]: 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("_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([
1973
- "_gl",
1974
- !input.collapsed && "_gm",
1975
- input.expanding && "_gn"
2002
+ _html(`<button type=button${_attr_class("_gw")} 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
+ "_gQ",
2004
+ !input.collapsed && "_gR",
2005
+ input.expanding && "_gS"
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
2007
  _script($scope1_id, "t8");
1978
2008
  writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
@@ -1997,14 +2027,14 @@ var review_section_default = _template("t", (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("_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>`);
2030
+ _html(`<span${_attr_class("_gE")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_I", "_gF"])}>${_escape(compare$1.base)}${_el_resume($scope0_id, "g", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_K", "_gH"])} aria-hidden=true>vs</span><span${_attr_class(["_I", "_gG"])}>${_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
- "_gd"
2037
+ "_gI"
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,7 +2047,7 @@ var review_section_default = _template("t", (input) => {
2017
2047
  _html(`<button type=button${_attr_class([
2018
2048
  "_I",
2019
2049
  tone.warn,
2020
- "_ge"
2050
+ "_gJ"
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
2052
  _script($scope2_id, "t9");
2023
2053
  writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
@@ -2027,7 +2057,7 @@ var review_section_default = _template("t", (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", "_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)}`);
2060
+ _html(`<span${_attr_class(["_I", "_gJ"])}${_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("t", (input) => {
2035
2065
  _if(() => {
2036
2066
  if (input.localDiffers) {
2037
2067
  const $scope3_id = _scope_id();
2038
- _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)}`);
2068
+ _html(`<span${_attr_class(["_I", "_gJ"])}${_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("_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>`);
2073
+ _html(`<span${_attr_class("_gy")}><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("_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>`);
2077
+ _html(`<span${_attr_class("_gz")}>+${_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("_gA")}>−${_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,7 +2082,7 @@ var review_section_default = _template("t", (input) => {
2052
2082
  _if(() => {
2053
2083
  if (newCount || input.onlyNew) {
2054
2084
  const $scope4_id = _scope_id();
2055
- _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")}`);
2085
+ _html(`<button type=button${_attr_class(["_gC", { ["_gB"]: 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
2086
  _script($scope4_id, "t10");
2057
2087
  writeScope($scope4_id, { _: _scope_with_id($scope0_id) });
2058
2088
  return 0;
@@ -2062,7 +2092,7 @@ var review_section_default = _template("t", (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("_gg")}${_attr("hidden", input.collapsible && input.collapsed)}>`);
2095
+ _html(`<div${_attr_class("_gL")}${_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("t", (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
- }, "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))}`);
2105
+ }, "t0", $scope6_id))}${_attr_class(["_gM", input.findHit?.key === file$1.key && "_gr"])}${_attr("data-key", file$1.key)}${_attr("hidden", !input.shownKeys.has(file$1.key))}><summary${_attr_class("_gO")}><span${_attr_class("_gT")}${_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(["_gU", input.findHit?.key === file$1.key && input.findHit.line < 1 && "_gs"])}${_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", "_gf"])} title="Changed since your last visit"></span>`);
2109
+ _html(`<span${_attr_class(["_z", "_gK"])} 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("t", (input) => {
2093
2123
  _if(() => {
2094
2124
  if (file$1.binary) {
2095
2125
  const $scope18_id = _scope_id();
2096
- _html(`<p${_attr_class(["_gq", "_gi"])}>binary file</p>`);
2126
+ _html(`<p${_attr_class(["_gV", "_gN"])}>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(["_gq", "_gi"])}>file too large to display</p>`);
2131
+ _html(`<p${_attr_class(["_gV", "_gN"])}>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(["_gq", "_gi"])}>file could not be read</p>`);
2136
+ _html(`<p${_attr_class(["_gV", "_gN"])}>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,7 +2143,7 @@ var review_section_default = _template("t", (input) => {
2113
2143
  _if(() => {
2114
2144
  if (!forceNear) {
2115
2145
  const $scope8_id = _scope_id();
2116
- _html(`<div${_attr_class(["_gk", "_gi"])}></div>${_el_resume($scope8_id, "a")}`);
2146
+ _html(`<div${_attr_class(["_gP", "_gN"])}></div>${_el_resume($scope8_id, "a")}`);
2117
2147
  _script($scope8_id, "t11");
2118
2148
  _subscribe($si__input && $input__closures, writeScope($scope8_id, {}));
2119
2149
  return 0;
@@ -2121,7 +2151,7 @@ var review_section_default = _template("t", (input) => {
2121
2151
  const $scope9_id = _scope_id();
2122
2152
  const $childScope = _peek_scope_id();
2123
2153
  diff_file_default({
2124
- class: "_gi",
2154
+ class: "_gN",
2125
2155
  file: file$1,
2126
2156
  comments: fileComments,
2127
2157
  draft: input.draft && input.draft.key === file$1.key ? input.draft : null,
@@ -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("_fw")}><button type=button${_attr_class(["_fx", { ["_fo"]: shut }])}${_attr("title", child.path)}${_attr_style(`--depth:${child.depth}`)}><span${_attr_class("_fE")}>${shut ? "▸" : "▾"}${_el_resume($scope1_id, "d", $sg__input)}</span><span${_attr_class("_fy")}>${_escape(child.label)}${_el_resume($scope1_id, "f", $sg__input_dir)}/</span></button>${_el_resume($scope1_id, "b")}`);
2352
+ _html(`<div${_attr_class("_fP")}><button type=button${_attr_class(["_fQ", { ["_fH"]: shut }])}${_attr("title", child.path)}${_attr_style(`--depth:${child.depth}`)}><span${_attr_class("_fX")}>${shut ? "▸" : "▾"}${_el_resume($scope1_id, "d", $sg__input)}</span><span${_attr_class("_fR")}>${_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();
@@ -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(["_fA", { ["_fz"]: 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("_fF")}${_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("_fB")}>${_escape(name)}${_el_resume($scope3_id, "e", $sg__input_dir)}</span>`);
2399
+ _html(`<a${_attr("href", input.hrefFor(file.key))}${_attr_class(["_fT", { ["_fS"]: 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("_fY")}${_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("_fU")}>${_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", "_fC"])} title="Changed since your last visit"></span>`);
2403
+ _html(`<span${_attr_class(["_z", "_fV"])} 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("_fD")}>💬</span>`);
2411
+ _html(`<span${_attr_class("_fW")}>💬</span>`);
2382
2412
  _serialize_if($scope0_reason, 0) && writeScope($scope5_id, {});
2383
2413
  return 0;
2384
2414
  }
@@ -2434,7 +2464,7 @@ var diff_tree_default = _template("k", (input) => {
2434
2464
  scope: input.scope ?? null,
2435
2465
  file: key
2436
2466
  }), "k0", $scope0_id);
2437
- _html(`<aside${_attr_class(["_fp", { ["_fo"]: input.open === false }])}><div${_attr_class("_fq")}>`);
2467
+ _html(`<aside${_attr_class(["_fI", { ["_fH"]: input.open === false }])}><div${_attr_class("_fJ")}>`);
2438
2468
  _set_serialize_reason(2);
2439
2469
  const $childScope = _peek_scope_id();
2440
2470
  file_filter_default({
@@ -2443,23 +2473,23 @@ var diff_tree_default = _template("k", (input) => {
2443
2473
  filter = _new_filter;
2444
2474
  }, "k1", $scope0_id)
2445
2475
  });
2446
- _html(`</div><div${_attr_class("_fr")}>`);
2476
+ _html(`</div><div${_attr_class("_fK")}>`);
2447
2477
  _if(() => {
2448
2478
  if (!input.sections.length && filter) {
2449
2479
  const $scope3_id = _scope_id();
2450
- _html(`<p${_attr_class("_fs")}>No files match.</p>`);
2480
+ _html(`<p${_attr_class("_fL")}>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("_ft")}><button type=button${_attr_class(["_fu", { ["_fo"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fE")}>${collapsedRepos.has(section.id) ? "▸" : "▾"}${_el_resume($scope1_id, "d")}</span><span${_attr_class("_fy")}>${_escape(section.label)}${_el_resume($scope1_id, "f", $sg__input_sections)}</span></button>${_el_resume($scope1_id, "b")}`);
2487
+ _html(`<div${_attr_class("_fM")}><button type=button${_attr_class(["_fN", { ["_fH"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fX")}>${collapsedRepos.has(section.id) ? "▸" : "▾"}${_el_resume($scope1_id, "d")}</span><span${_attr_class("_fR")}>${_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("_fv")}${_attr("hidden", collapsedRepos.has(section.id))}>`);
2492
+ _html(`<div${_attr_class("_fO")}${_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({
@@ -2584,9 +2614,9 @@ var diff_file_sheet_default = _template("f", (input) => {
2584
2614
  _if(() => {
2585
2615
  if (open) {
2586
2616
  const $scope1_id = _scope_id();
2587
- _html(`<div${_attr_class("_fI")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_fJ")} role=dialog aria-label="Jump to file"><div${_attr_class("_fK")}><strong${_attr_class("_fH")}>Files</strong><span${_attr_class("_fL")}>${_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, "_fG"])} 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("_fT")}>`);
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({
@@ -2595,28 +2625,28 @@ var diff_file_sheet_default = _template("f", (input) => {
2595
2625
  filter = _new_filter;
2596
2626
  }, "f1", $scope1_id)
2597
2627
  });
2598
- _html(`</div><div${_attr_class("_fM")}>`);
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("_fN")}><div${_attr_class("_fO")}>${_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("_fP")}>`);
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("_fR")}${_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(["_fQ", "_x"])}><span${_attr_class("_fW")}${_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("_fS")}><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", "_fV"])} 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
  }
@@ -2648,7 +2678,7 @@ var diff_file_sheet_default = _template("f", (input) => {
2648
2678
  _if(() => {
2649
2679
  if (!input.files.length) {
2650
2680
  const $scope8_id = _scope_id();
2651
- _html(`<p${_attr_class("_fU")}>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
  }
@@ -2794,6 +2824,13 @@ var diff_view_default = _template("l", (input) => {
2794
2824
  const top = el.getBoundingClientRect().top - root.getBoundingClientRect().top + root.scrollTop;
2795
2825
  root.scrollTo({ top: Math.max(0, top - 8) });
2796
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("l", (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
- }, "l6", $scope0_id);
2821
- const findFile = _resume((key) => ((scrollEl) => scrollEl())(_el_read_error)?.querySelector(`details[data-key="${CSS.escape(key)}"]`) ?? null, "l7", $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
- }, "l8", $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
- }, "l9", $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("l", (input) => {
2858
2884
  };
2859
2885
  }
2860
2886
  return best;
2861
- }, "l10", $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
- }, "l11", $scope0_id);
2894
+ }, "l12", $scope0_id);
2869
2895
  const savePos = _resume(() => {
2870
2896
  if (repos) setDiffPos(input.workspaceId, posBox.anchor);
2871
- }, "l12", $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("l", (input) => {
2898
2924
  } else if (!pinnedAt && Date.now() - started < 2500) requestAnimationFrame(tick);
2899
2925
  };
2900
2926
  requestAnimationFrame(tick);
2901
- }, "l13", $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("l", (input) => {
2930
2956
  } finally {
2931
2957
  if (seq === loadBox.seq) loading = false;
2932
2958
  }
2933
- }, "l14", $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
- }, "l15", $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("l", (input) => {
2946
2972
  if (sendGate.busy) return;
2947
2973
  comments = reviewData.comments || [];
2948
2974
  } catch {}
2949
- }, "l16", $scope0_id);
2950
- const reload = _resume(() => load(scope$1, true), "l17", $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
- }, "l18", $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("l", (input) => {
2973
2999
  }),
2974
3000
  keepalive: true
2975
3001
  }).catch(() => {});
2976
- }, "l19", $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("l", (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("l", (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, "l20");
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("l", (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
- }, "l21", $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("l", (input) => {
3039
3073
  } catch (err) {
3040
3074
  error = String(err.message || err);
3041
3075
  }
3042
- }, "l22", $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" }))), "l23", $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
- }, "l24", $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("l", (input) => {
3084
3118
  } finally {
3085
3119
  sendGate.busy--;
3086
3120
  }
3087
- }, "l25", $scope0_id);
3088
- const copyMarkdown = _resume(() => dispatch(comments, { clipboard: true }, "all"), "l26", $scope0_id);
3089
- const sendTo = _resume((sessionId) => dispatch(comments, { session: sessionId }, "all"), "l27", $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
- }, "l28", $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("l", (input) => {
3108
3142
  ...anchorFor(file, range)
3109
3143
  };
3110
3144
  return dispatch([one], { session: sessionId }, []);
3111
- }, "l29", $scope0_id);
3145
+ }, "l31", $scope0_id);
3112
3146
  const openFind = _resume(() => {
3113
3147
  findOpen = true;
3114
3148
  findTick++;
3115
3149
  findFocusRef.focus();
3116
- }, "l30", $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("l", (input) => {
3128
3162
  setSearchPaint(next.query, hit);
3129
3163
  revealSearchHit();
3130
3164
  }, 0);
3131
- }, "l31", $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,7 +3194,7 @@ var diff_view_default = _template("l", (input) => {
3160
3194
  openedRepos = /* @__PURE__ */ new Set([...openedRepos, id]);
3161
3195
  collapsedRepos = /* @__PURE__ */ new Set([...collapsedRepos, id]);
3162
3196
  }
3163
- }, "l32", $scope0_id);
3197
+ }, "l34", $scope0_id);
3164
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) {
@@ -3208,7 +3242,7 @@ var diff_view_default = _template("l", (input) => {
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, "l50");
3245
+ _script($scope12_id, "l52");
3212
3246
  writeScope($scope12_id, {});
3213
3247
  return 0;
3214
3248
  }
@@ -3225,7 +3259,7 @@ var diff_view_default = _template("l", (input) => {
3225
3259
  if (hasFiles) {
3226
3260
  const $scope13_id = _scope_id();
3227
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")}`);
3228
- _script($scope13_id, "l51");
3262
+ _script($scope13_id, "l53");
3229
3263
  writeScope($scope13_id, {});
3230
3264
  return 0;
3231
3265
  }
@@ -3245,11 +3279,11 @@ var diff_view_default = _template("l", (input) => {
3245
3279
  open: findOpen,
3246
3280
  openChange: _resume((_new_findOpen) => {
3247
3281
  findOpen = _new_findOpen;
3248
- }, "l33", $scope0_id),
3282
+ }, "l35", $scope0_id),
3249
3283
  focusRef: findFocusRef,
3250
3284
  stateChange: _resume(function(s) {
3251
3285
  onFindState(s);
3252
- }, "l34", $scope0_id)
3286
+ }, "l36", $scope0_id)
3253
3287
  });
3254
3288
  _html(`</div>${_el_resume($scope0_id, "t")}`);
3255
3289
  _if(() => {
@@ -3262,7 +3296,7 @@ var diff_view_default = _template("l", (input) => {
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, "l52");
3299
+ _script($scope14_id, "l54");
3266
3300
  writeScope($scope14_id, {});
3267
3301
  return 0;
3268
3302
  }
@@ -3274,8 +3308,8 @@ var diff_view_default = _template("l", (input) => {
3274
3308
  toast_default({
3275
3309
  onDismiss: _resume(function() {
3276
3310
  error = null;
3277
- }, "l35", $scope6_id),
3278
- content: _content_resume("l53", () => {
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")}`);
@@ -3304,7 +3338,7 @@ var diff_view_default = _template("l", (input) => {
3304
3338
  kind: "warn",
3305
3339
  placement: "inline",
3306
3340
  title: `${repo.worktree}: base not found`,
3307
- content: _content_resume("l54", () => {
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("l", (input) => {
3321
3355
  _if(() => {
3322
3356
  if (repos && !allFiles.length) {
3323
3357
  const $scope11_id = _scope_id();
3324
- _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>`);
3358
+ _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>`);
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("_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>`);
3363
+ _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>`);
3330
3364
  writeScope($scope8_id, {});
3331
3365
  return 1;
3332
3366
  }
@@ -3349,14 +3383,14 @@ var diff_view_default = _template("l", (input) => {
3349
3383
  opened: openedRepos.has(repo.id),
3350
3384
  onToggle: _resume(function() {
3351
3385
  toggleSection(repo.id);
3352
- }, "l36", $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
- }, "l37", $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("l", (input) => {
3367
3401
  collapsedFiles,
3368
3402
  onFileToggle: _resume(function(key, open) {
3369
3403
  setFilesCollapsed([key], !open);
3370
- }, "l38", $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("l", (input) => {
3375
3409
  start: Math.min(range.start, range.end),
3376
3410
  end: Math.max(range.start, range.end)
3377
3411
  };
3378
- }, "l39", $scope4_id),
3412
+ }, "l41", $scope4_id),
3379
3413
  onSaveComment: _resume(function(file, text) {
3380
3414
  saveComment(file, text);
3381
- }, "l40", $scope4_id),
3415
+ }, "l42", $scope4_id),
3382
3416
  onSendDraft: _resume(function(file, text, sessionId) {
3383
3417
  sendDraftComment(file, text, sessionId);
3384
- }, "l41", $scope4_id),
3418
+ }, "l43", $scope4_id),
3385
3419
  onCancelDraft: _resume(function() {
3386
3420
  draft = null;
3387
- }, "l42", $scope4_id),
3421
+ }, "l44", $scope4_id),
3388
3422
  onDeleteComment: _resume(function(id) {
3389
3423
  removeComment(id);
3390
- }, "l43", $scope4_id),
3424
+ }, "l45", $scope4_id),
3391
3425
  onSendComment: _resume(function(id, sessionId) {
3392
3426
  sendOneComment(id, sessionId);
3393
- }, "l44", $scope4_id),
3427
+ }, "l46", $scope4_id),
3394
3428
  onError: _resume(function(message) {
3395
3429
  error = message;
3396
- }, "l45", $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("l", (input) => {
3415
3449
  collapsedRepos,
3416
3450
  collapsedReposChange: _resume((_new_collapsedRepos) => {
3417
3451
  collapsedRepos = _new_collapsedRepos;
3418
- }, "l46", $scope0_id),
3452
+ }, "l48", $scope0_id),
3419
3453
  openedRepos,
3420
3454
  openedReposChange: _resume((_new_openedRepos) => {
3421
3455
  openedRepos = _new_openedRepos;
3422
- }, "l47", $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
- }, "l48", $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("l", (input) => {
3435
3469
  open: fileSheet,
3436
3470
  openChange: _resume((_new_fileSheet) => {
3437
3471
  fileSheet = _new_fileSheet;
3438
- }, "l49", $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("l", (input) => {
3446
3480
  scope: scope$1
3447
3481
  });
3448
3482
  _html("</div>");
3449
- _script($scope0_id, "l55");
3450
- _script($scope0_id, "l56");
3451
3483
  _script($scope0_id, "l57");
3452
3484
  _script($scope0_id, "l58");
3453
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("l", (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
  });