@dylanpiercey/work 0.0.78 → 0.0.80

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 (251) hide show
  1. package/README.md +5 -0
  2. package/dist/{_CIRawosE.js → _D1lZyfhn.js} +86 -68
  3. package/dist/{_DmInpMdK.js → _D4GY5TqP.js} +628 -461
  4. package/dist/{_BXcFivfU.js → _DYjQjuVZ.js} +87 -4
  5. package/dist/_DjE4lBg7.js +2 -0
  6. package/dist/index.mjs +1615 -1360
  7. package/dist/public/assets/{_CB_QqJbj.js → _-_1uzCbj.js} +1 -1
  8. package/dist/public/assets/_-_1uzCbj.js.br +0 -0
  9. package/dist/public/assets/{_L1XH-kms2.js → _0X2_Mv-q2.js} +1 -1
  10. package/dist/public/assets/_0X2_Mv-q2.js.br +0 -0
  11. package/dist/public/assets/{_BXCrQpbO.js → _1Voq0Tvi.js} +1 -1
  12. package/dist/public/assets/_1Voq0Tvi.js.br +0 -0
  13. package/dist/public/assets/{_D0vyJ2yE2.js → _4BZWp0-K2.js} +1 -1
  14. package/dist/public/assets/_4BZWp0-K2.js.br +0 -0
  15. package/dist/public/assets/{_B2sPsxr6.js → _B57bXPt-.js} +1 -1
  16. package/dist/public/assets/_B57bXPt-.js.br +0 -0
  17. package/dist/public/assets/{_BI1ct0k3.js → _BIOoG2MW.js} +1 -1
  18. package/dist/public/assets/_BIOoG2MW.js.br +0 -0
  19. package/dist/public/assets/{_ClLSUByz.js → _BL3XPexu.js} +1 -1
  20. package/dist/public/assets/_BL3XPexu.js.br +0 -0
  21. package/dist/public/assets/{_D2wXmnQK2.js → _BLBbZB1M2.js} +1 -1
  22. package/dist/public/assets/_BLBbZB1M2.js.br +0 -0
  23. package/dist/public/assets/{_BeWiK2zV.js → _BOV1NV0A.js} +1 -1
  24. package/dist/public/assets/_BOV1NV0A.js.br +0 -0
  25. package/dist/public/assets/{_CdUSs9iK.js → _BOcXuwtf.js} +1 -1
  26. package/dist/public/assets/_BOcXuwtf.js.br +0 -0
  27. package/dist/public/assets/{_CEuxLe6F.js → _BSczjQFi.js} +1 -1
  28. package/dist/public/assets/_BSczjQFi.js.br +0 -0
  29. package/dist/public/assets/{_QmV76A7t.js → _BeBGpe3Y.js} +1 -1
  30. package/dist/public/assets/_BeBGpe3Y.js.br +0 -0
  31. package/dist/public/assets/{_B_EBj_B3.js → _BevHqZSj.js} +1 -1
  32. package/dist/public/assets/_BevHqZSj.js.br +0 -0
  33. package/dist/public/assets/{_Dp32T4Vh.js → _Bia5CO-O.js} +1 -1
  34. package/dist/public/assets/_Bia5CO-O.js.br +0 -0
  35. package/dist/public/assets/{_DqJB33fN2.js → _BmbCyC-C2.js} +1 -1
  36. package/dist/public/assets/_BmbCyC-C2.js.br +0 -0
  37. package/dist/public/assets/{_B7EwF5ES.js → _BukPRfhq.js} +1 -1
  38. package/dist/public/assets/_BukPRfhq.js.br +0 -0
  39. package/dist/public/assets/{_BJdkAMTU.js → _Buq4ye4t.js} +1 -1
  40. package/dist/public/assets/_Buq4ye4t.js.br +0 -0
  41. package/dist/public/assets/{_BwkztFC6.js → _C0bTVsr0.js} +1 -1
  42. package/dist/public/assets/_C0bTVsr0.js.br +0 -0
  43. package/dist/public/assets/{_BacOB_KW.js → _C0kLzTAa.js} +1 -1
  44. package/dist/public/assets/{_DLlSIOdl.js → _C4Y720OO.js} +1 -1
  45. package/dist/public/assets/_C4Y720OO.js.br +0 -0
  46. package/dist/public/assets/{_DHGvh-M_.js → _C7PSMYJs.js} +1 -1
  47. package/dist/public/assets/_C7PSMYJs.js.br +0 -0
  48. package/dist/public/assets/{_BY1EMdJe.js → _CCIN6X06.js} +1 -1
  49. package/dist/public/assets/_CCIN6X06.js.br +0 -0
  50. package/dist/public/assets/{_DgiGmj2K.js → _CFggeVG6.js} +1 -1
  51. package/dist/public/assets/_CFggeVG6.js.br +0 -0
  52. package/dist/public/assets/{_Di6EUgJm.js → _CKxp-ONU.js} +1 -1
  53. package/dist/public/assets/_CKxp-ONU.js.br +0 -0
  54. package/dist/public/assets/{_Rj3Bb6_I.js → _CLZCTIA_.js} +1 -1
  55. package/dist/public/assets/_CLZCTIA_.js.br +0 -0
  56. package/dist/public/assets/{_BPVcHu-J2.js → _CNFCY1jn2.js} +1 -1
  57. package/dist/public/assets/{_BW4jFkhN.js → _CRCEsPci.js} +1 -1
  58. package/dist/public/assets/_CRCEsPci.js.br +0 -0
  59. package/dist/public/assets/{_ZUiWhALl.js → _CRucQQmw.js} +1 -1
  60. package/dist/public/assets/_CRucQQmw.js.br +0 -0
  61. package/dist/public/assets/{_fKphobCQ2.js → _CT3sl0JO2.js} +1 -1
  62. package/dist/public/assets/_CT3sl0JO2.js.br +0 -0
  63. package/dist/public/assets/{_78u04HgF.js → _CX5GSQ-I.js} +1 -1
  64. package/dist/public/assets/_CX5GSQ-I.js.br +0 -0
  65. package/dist/public/assets/{_BjPws8fl2.js → _Cc7yyasY2.js} +1 -1
  66. package/dist/public/assets/_Cc7yyasY2.js.br +0 -0
  67. package/dist/public/assets/{_uzk-PflR.js → _CdIi88c9.js} +1 -1
  68. package/dist/public/assets/_CdIi88c9.js.br +0 -0
  69. package/dist/public/assets/{_CsL5aYpd.js → _ChicqFiW.js} +1 -1
  70. package/dist/public/assets/_ChicqFiW.js.br +0 -0
  71. package/dist/public/assets/{_B3OOfSnY.js → _Clx5s-FJ.js} +1 -1
  72. package/dist/public/assets/_Clx5s-FJ.js.br +0 -0
  73. package/dist/public/assets/{_DFpNQ9Jh2.js → _CmuJjNdE2.js} +1 -1
  74. package/dist/public/assets/{_HUSrElvd.js → _Cn3z63nF.js} +1 -1
  75. package/dist/public/assets/_Cn3z63nF.js.br +0 -0
  76. package/dist/public/assets/{_CpSNxSlG2.js → _Co9NaFmf2.js} +1 -1
  77. package/dist/public/assets/_Co9NaFmf2.js.br +0 -0
  78. package/dist/public/assets/{_Dt86fZPh.js → _CuUXgKMe.js} +1 -1
  79. package/dist/public/assets/_CuUXgKMe.js.br +0 -0
  80. package/dist/public/assets/{_CmJ7zLnv.js → _Cx9nOZgC.js} +1 -1
  81. package/dist/public/assets/_Cx9nOZgC.js.br +0 -0
  82. package/dist/public/assets/{_Cz_zsRzV.js → _CzanMhWk.js} +1 -1
  83. package/dist/public/assets/_CzanMhWk.js.br +0 -0
  84. package/dist/public/assets/{_BblaM8g32.js → _D-SK8BwL2.js} +1 -1
  85. package/dist/public/assets/_D-SK8BwL2.js.br +0 -0
  86. package/dist/public/assets/{_Dl_YajbL.js → _D1NB2_jG.js} +45 -45
  87. package/dist/public/assets/_D1NB2_jG.js.br +0 -0
  88. package/dist/public/assets/_D4nk-T8f.js +85 -0
  89. package/dist/public/assets/_D4nk-T8f.js.br +0 -0
  90. package/dist/public/assets/{_CY_ILFGT2.js → _DDHS9LUX2.js} +1 -1
  91. package/dist/public/assets/_DDHS9LUX2.js.br +0 -0
  92. package/dist/public/assets/{_Bb18WOXF2.js → _DEMbq_el2.js} +1 -1
  93. package/dist/public/assets/_DEMbq_el2.js.br +0 -0
  94. package/dist/public/assets/{_CP08H0Hc2.js → _DEsuWejQ2.js} +1 -1
  95. package/dist/public/assets/_DEsuWejQ2.js.br +0 -0
  96. package/dist/public/assets/{_DmdVV0LB.js → _DFe4lHOD.js} +1 -1
  97. package/dist/public/assets/_DFe4lHOD.js.br +0 -0
  98. package/dist/public/assets/{_CBum66PC.js → _DJ-Aqdke.js} +1 -1
  99. package/dist/public/assets/_DJ-Aqdke.js.br +0 -0
  100. package/dist/public/assets/{_bTLfsDw92.js → _DML6bFDl2.js} +1 -1
  101. package/dist/public/assets/_DML6bFDl2.js.br +0 -0
  102. package/dist/public/assets/{_BDryV2Iq2.js → _DNQ2MNaD2.js} +1 -1
  103. package/dist/public/assets/_DNQ2MNaD2.js.br +0 -0
  104. package/dist/public/assets/{_DtnacdW_.js → _DOh6efC-.js} +1 -1
  105. package/dist/public/assets/_DOh6efC-.js.br +0 -0
  106. package/dist/public/assets/{_CwtMe3VA2.js → _DS3RjflW2.js} +1 -1
  107. package/dist/public/assets/_DS3RjflW2.js.br +0 -0
  108. package/dist/public/assets/{_OCeErtSr.js → _DVwvtjCv.js} +1 -1
  109. package/dist/public/assets/_DVwvtjCv.js.br +0 -0
  110. package/dist/public/assets/{_JjCtmL8y2.js → _DbBDq2j32.js} +1 -1
  111. package/dist/public/assets/_DbBDq2j32.js.br +0 -0
  112. package/dist/public/assets/{_zOG0vHwY2.js → _DfhdqIhr2.js} +1 -1
  113. package/dist/public/assets/_DfhdqIhr2.js.br +0 -0
  114. package/dist/public/assets/{_B-rCQK6E2.js → _DgEmFUpu2.js} +1 -1
  115. package/dist/public/assets/_DgEmFUpu2.js.br +0 -0
  116. package/dist/public/assets/{_BMf7OxnD2.js → _DhBYsUk72.js} +1 -1
  117. package/dist/public/assets/_DhBYsUk72.js.br +0 -0
  118. package/dist/public/assets/{_COb-W2I-.js → _DnOz7d4b.js} +1 -1
  119. package/dist/public/assets/_DnOz7d4b.js.br +0 -0
  120. package/dist/public/assets/{_CEz9SXP-.js → _DwXf2pQ1.js} +1 -1
  121. package/dist/public/assets/_DwXf2pQ1.js.br +0 -0
  122. package/dist/public/assets/{_CAxRBZNm2.js → _HNN3arNH2.js} +1 -1
  123. package/dist/public/assets/_HNN3arNH2.js.br +0 -0
  124. package/dist/public/assets/{_tCsKb_54.js → _IcgmyRGa.js} +1 -1
  125. package/dist/public/assets/_IcgmyRGa.js.br +0 -0
  126. package/dist/public/assets/{_CyCGtR1-.js → _Je1tk1xD.js} +1 -1
  127. package/dist/public/assets/_Je1tk1xD.js.br +0 -0
  128. package/dist/public/assets/{_DcyxnO_L.js → _LohRrLVB.js} +1 -1
  129. package/dist/public/assets/_LohRrLVB.js.br +0 -0
  130. package/dist/public/assets/{_yxN-WdAM.js → _PKA1Hpie.js} +1 -1
  131. package/dist/public/assets/_PKA1Hpie.js.br +0 -0
  132. package/dist/public/assets/{_PYheEV7-.js → _ZdxrEY9r.js} +1 -1
  133. package/dist/public/assets/_ZdxrEY9r.js.br +0 -0
  134. package/dist/public/assets/{_VTTPEs8m2.js → __aTzeBpz2.js} +1 -1
  135. package/dist/public/assets/__aTzeBpz2.js.br +0 -0
  136. package/dist/public/assets/{_DpCUVJaX.js → _ax03flRa.js} +1 -1
  137. package/dist/public/assets/_ax03flRa.js.br +0 -0
  138. package/dist/public/assets/{_CSx4Xqtp.js → _fykxNNOE.js} +1 -1
  139. package/dist/public/assets/_fykxNNOE.js.br +0 -0
  140. package/dist/public/assets/{_CSMKCI00.js → _gv1nxzbM.js} +1 -1
  141. package/dist/public/assets/_gv1nxzbM.js.br +0 -0
  142. package/dist/public/assets/{_C-mtaCj52.js → _i5Fl_1GP2.js} +1 -1
  143. package/dist/public/assets/_i5Fl_1GP2.js.br +0 -0
  144. package/dist/public/assets/{_1g4fb8wp.js → _j-gweiPd.js} +1 -1
  145. package/dist/public/assets/_j-gweiPd.js.br +0 -0
  146. package/dist/public/assets/{_Ch2r3zkq.js → _piQSsSYC.js} +1 -1
  147. package/dist/public/assets/_piQSsSYC.js.br +0 -0
  148. package/dist/public/assets/{_B54sk_Fc.js → _qcjRMVcV.js} +1 -1
  149. package/dist/public/assets/_qcjRMVcV.js.br +0 -0
  150. package/dist/public/assets/{_CDgIQild.js → _rMjBCCAH.js} +1 -1
  151. package/dist/public/assets/_rMjBCCAH.js.br +0 -0
  152. package/dist/public/assets/{_9-_KI7I4.js → _uS_Hw2OQ.js} +1 -1
  153. package/dist/public/assets/_uS_Hw2OQ.js.br +0 -0
  154. package/dist/public/assets/{_-PoErT612.js → _wpv1gKlN2.js} +1 -1
  155. package/dist/public/assets/_wpv1gKlN2.js.br +0 -0
  156. package/dist/public/assets/app-page-DmG8xzGs.css +1 -0
  157. package/dist/public/assets/app-page-DmG8xzGs.css.br +0 -0
  158. package/dist/public/assets/diff-view-BIcFG_jN.css +1 -0
  159. package/dist/public/assets/diff-view-BIcFG_jN.css.br +0 -0
  160. package/dist/public/assets/new-UbjAS00i.js +1 -0
  161. package/dist/public/assets/settings-UbjAS00i.js +1 -0
  162. package/dist/public/assets/w-UbjAS00i.js +1 -0
  163. package/dist/public/assets/w._-DezkAdF7.js +1 -0
  164. package/dist/public/assets/w._-UbjAS00i.js +1 -0
  165. package/package.json +4 -4
  166. package/dist/_DvlOez7w.js +0 -2
  167. package/dist/public/assets/_-PoErT612.js.br +0 -0
  168. package/dist/public/assets/_1g4fb8wp.js.br +0 -0
  169. package/dist/public/assets/_78u04HgF.js.br +0 -0
  170. package/dist/public/assets/_9-_KI7I4.js.br +0 -0
  171. package/dist/public/assets/_B-rCQK6E2.js.br +0 -0
  172. package/dist/public/assets/_B2sPsxr6.js.br +0 -0
  173. package/dist/public/assets/_B3OOfSnY.js.br +0 -0
  174. package/dist/public/assets/_B54sk_Fc.js.br +0 -0
  175. package/dist/public/assets/_B7EwF5ES.js.br +0 -0
  176. package/dist/public/assets/_BDryV2Iq2.js.br +0 -0
  177. package/dist/public/assets/_BI1ct0k3.js.br +0 -0
  178. package/dist/public/assets/_BJdkAMTU.js.br +0 -0
  179. package/dist/public/assets/_BMf7OxnD2.js.br +0 -0
  180. package/dist/public/assets/_BW4jFkhN.js.br +0 -0
  181. package/dist/public/assets/_BXCrQpbO.js.br +0 -0
  182. package/dist/public/assets/_BY1EMdJe.js.br +0 -0
  183. package/dist/public/assets/_B_EBj_B3.js.br +0 -0
  184. package/dist/public/assets/_Bb18WOXF2.js.br +0 -0
  185. package/dist/public/assets/_BblaM8g32.js.br +0 -0
  186. package/dist/public/assets/_BeWiK2zV.js.br +0 -0
  187. package/dist/public/assets/_BjPws8fl2.js.br +0 -0
  188. package/dist/public/assets/_BwkztFC6.js.br +0 -0
  189. package/dist/public/assets/_C-mtaCj52.js.br +0 -0
  190. package/dist/public/assets/_CAxRBZNm2.js.br +0 -0
  191. package/dist/public/assets/_CB_QqJbj.js.br +0 -0
  192. package/dist/public/assets/_CBum66PC.js.br +0 -0
  193. package/dist/public/assets/_CDgIQild.js.br +0 -0
  194. package/dist/public/assets/_CEuxLe6F.js.br +0 -0
  195. package/dist/public/assets/_CEz9SXP-.js.br +0 -0
  196. package/dist/public/assets/_COb-W2I-.js.br +0 -0
  197. package/dist/public/assets/_CP08H0Hc2.js.br +0 -0
  198. package/dist/public/assets/_CSMKCI00.js.br +0 -0
  199. package/dist/public/assets/_CSx4Xqtp.js.br +0 -0
  200. package/dist/public/assets/_CY_ILFGT2.js.br +0 -0
  201. package/dist/public/assets/_CanTayMh.js +0 -85
  202. package/dist/public/assets/_CanTayMh.js.br +0 -0
  203. package/dist/public/assets/_CdUSs9iK.js.br +0 -0
  204. package/dist/public/assets/_Ch2r3zkq.js.br +0 -0
  205. package/dist/public/assets/_ClLSUByz.js.br +0 -0
  206. package/dist/public/assets/_CmJ7zLnv.js.br +0 -0
  207. package/dist/public/assets/_CpSNxSlG2.js.br +0 -0
  208. package/dist/public/assets/_CsL5aYpd.js.br +0 -0
  209. package/dist/public/assets/_CwtMe3VA2.js.br +0 -0
  210. package/dist/public/assets/_CyCGtR1-.js.br +0 -0
  211. package/dist/public/assets/_Cz_zsRzV.js.br +0 -0
  212. package/dist/public/assets/_D0vyJ2yE2.js.br +0 -0
  213. package/dist/public/assets/_D2wXmnQK2.js.br +0 -0
  214. package/dist/public/assets/_DHGvh-M_.js.br +0 -0
  215. package/dist/public/assets/_DLlSIOdl.js.br +0 -0
  216. package/dist/public/assets/_DcyxnO_L.js.br +0 -0
  217. package/dist/public/assets/_DgiGmj2K.js.br +0 -0
  218. package/dist/public/assets/_Di6EUgJm.js.br +0 -0
  219. package/dist/public/assets/_Dl_YajbL.js.br +0 -0
  220. package/dist/public/assets/_DmdVV0LB.js.br +0 -0
  221. package/dist/public/assets/_Dp32T4Vh.js.br +0 -0
  222. package/dist/public/assets/_DpCUVJaX.js.br +0 -0
  223. package/dist/public/assets/_DqJB33fN2.js.br +0 -0
  224. package/dist/public/assets/_Dt86fZPh.js.br +0 -0
  225. package/dist/public/assets/_DtnacdW_.js.br +0 -0
  226. package/dist/public/assets/_HUSrElvd.js.br +0 -0
  227. package/dist/public/assets/_JjCtmL8y2.js.br +0 -0
  228. package/dist/public/assets/_L1XH-kms2.js.br +0 -0
  229. package/dist/public/assets/_OCeErtSr.js.br +0 -0
  230. package/dist/public/assets/_PYheEV7-.js.br +0 -0
  231. package/dist/public/assets/_QmV76A7t.js.br +0 -0
  232. package/dist/public/assets/_Rj3Bb6_I.js.br +0 -0
  233. package/dist/public/assets/_VTTPEs8m2.js.br +0 -0
  234. package/dist/public/assets/_ZUiWhALl.js.br +0 -0
  235. package/dist/public/assets/_bTLfsDw92.js.br +0 -0
  236. package/dist/public/assets/_fKphobCQ2.js.br +0 -0
  237. package/dist/public/assets/_tCsKb_54.js.br +0 -0
  238. package/dist/public/assets/_uzk-PflR.js.br +0 -0
  239. package/dist/public/assets/_yxN-WdAM.js.br +0 -0
  240. package/dist/public/assets/_zOG0vHwY2.js.br +0 -0
  241. package/dist/public/assets/app-page-tW18Q0xx.css +0 -1
  242. package/dist/public/assets/app-page-tW18Q0xx.css.br +0 -0
  243. package/dist/public/assets/diff-view-DsbgM3jh.css +0 -1
  244. package/dist/public/assets/diff-view-DsbgM3jh.css.br +0 -0
  245. package/dist/public/assets/new-Bh0akN8j.js +0 -1
  246. package/dist/public/assets/settings-Bh0akN8j.js +0 -1
  247. package/dist/public/assets/w-Bh0akN8j.js +0 -1
  248. package/dist/public/assets/w._-Bh0akN8j.js +0 -1
  249. package/dist/public/assets/w._-UlPNND_9.js +0 -1
  250. package/dist/public/icon.svg +0 -4
  251. package/dist/public/manifest.webmanifest +0 -35
@@ -1,4 +1,4 @@
1
- import { B as _attr_select_value, D as iconBtnRow, Dt as writeScope, E as iconBtnLg, F as _attr_class, I as _attr_details_or_dialog_open, J as _el, K as _content_resume, L as _attr_input_value, M as tone, P as _attr, Q as _existing_scope, R as _attr_option_value, V as _attr_style, X as _el_resume, Y as _el_read_error, Z as _escape, _t as _show_end, a as diffTreeOpen, at as _if, bt as _template, ct as _resume_branch, dt as _scope_with_id, et as _for_of, f as icon_search_default, ft as _script, gt as _set_serialize_reason, ht as _serialize_if, i as diffScope, lt as _scope_id, m as icon_refresh_default, mt as _serialize_guard, n as findInput, o as setDiffScope, ot as _peek_scope_id, p as icon_back_default, pt as _sep, r as icon_sidebar_default, rt as _html, st as _resume, t as findIconBtn, u as fuzzy, ut as _scope_reason, v as toast_default, vt as _show_start, x as repoLabel, y as icon_xmark_default, yt as _subscribe } from "./_CIRawosE.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 "./_D1lZyfhn.js";
2
2
  //#region src/client/router.ts
3
3
  function urlFor(r) {
4
4
  if (r.view === "settings") return "/settings";
@@ -189,11 +189,12 @@ function indent(text) {
189
189
  }
190
190
  //#endregion
191
191
  //#region src/client/review.ts
192
- /** Build hierarchical rows from a sorted file list: a path trie with
192
+ /** Build a directory tree from a sorted file list: a path trie with
193
193
  * single-child directory chains compressed into one label (GitHub-style
194
- * "src/util" segments), each level indented by depth — labels stay short
195
- * instead of front-truncated full paths. */
196
- function treeRows(files) {
194
+ * "src/util" segments) — labels stay short instead of front-truncated
195
+ * full paths. Nested (not flat rows) so each directory can wrap its
196
+ * children: that is what lets its header stick while they scroll. */
197
+ function treeDirs(files) {
197
198
  const root = {
198
199
  dirs: /* @__PURE__ */ new Map(),
199
200
  files: []
@@ -218,36 +219,30 @@ function treeRows(files) {
218
219
  name
219
220
  });
220
221
  }
221
- const rows = [];
222
- const walk = (node, depth, prefix) => {
222
+ const build = (node, label, path, depth) => {
223
+ const dirs = [];
223
224
  for (const [dirName, child] of [...node.dirs].sort(([a], [b]) => a.localeCompare(b))) {
224
- let label = dirName;
225
+ let childLabel = dirName;
225
226
  let target = child;
226
227
  while (target.dirs.size === 1 && !target.files.length) {
227
228
  const [[next, grand]] = target.dirs;
228
- label += `/${next}`;
229
+ childLabel += `/${next}`;
229
230
  target = grand;
230
231
  }
231
- const path = prefix ? `${prefix}/${label}` : label;
232
- rows.push({
233
- kind: "dir",
234
- label,
235
- path,
236
- depth
237
- });
238
- walk(target, depth + 1, path);
232
+ const childPath = path ? `${path}/${childLabel}` : childLabel;
233
+ dirs.push(build(target, childLabel, childPath, depth + 1));
239
234
  }
240
- for (const { file, name } of node.files) rows.push({
241
- kind: "file",
242
- file,
243
- name,
244
- depth
245
- });
235
+ return {
236
+ label,
237
+ path,
238
+ depth,
239
+ dirs,
240
+ files: node.files
241
+ };
246
242
  };
247
- walk(root, 0, "");
248
- return rows;
243
+ return build(root, "", "", -1);
249
244
  }
250
- var treeToggle = "_c_ _X _g";
245
+ var treeToggle = "_dy _0 _j";
251
246
  //#endregion
252
247
  //#region src/tags/diff-send.marko
253
248
  var diff_send_default = _template("h", (input) => {
@@ -257,21 +252,21 @@ var diff_send_default = _template("h", (input) => {
257
252
  let sendTarget = null;
258
253
  const sessions = input.sessions || [];
259
254
  const sendPick = sessions.some((s) => s.id === sendTarget) ? sendTarget : sessions[0]?.id ?? null;
260
- _html(`<span${_attr_class("_eF")}><button type=button${_attr_class("_l")} title="Copy comments as markdown">Copy${_el_resume($scope0_id, "c")}</button>${_el_resume($scope0_id, "b")}`);
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")}`);
261
256
  _if(() => {
262
257
  if (sessions.length === 1) {
263
258
  const $scope1_id = _scope_id();
264
- _html(`<button type=button${_attr_class(["_l", "_m"])}${_attr("disabled", sending)}>${`Send to ${_escape(`${sessions[0].title || sessions[0].agent}`)}`}${_el_resume($scope1_id, "b")}</button>${_el_resume($scope1_id, "a")}`);
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")}`);
265
260
  _script($scope1_id, "h1");
266
261
  writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
267
262
  return 0;
268
263
  } else if (sessions.length) {
269
264
  const $scope2_id = _scope_id();
270
- _html(`<span${_attr_class("_eG")}><button type=button${_attr_class(["_m", "_eH"])}${_attr("disabled", sending)}>Send to${_el_resume($scope2_id, "c")}</button>${_el_resume($scope2_id, "b")}`);
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")}`);
271
266
  _attr_select_value($scope2_id, "d", sendTarget, _resume((_new_sendTarget) => {
272
267
  sendTarget = _new_sendTarget;
273
268
  }, "h0", $scope2_id), () => {
274
- _html(`<select${_attr_class("_eI")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
269
+ _html(`<select${_attr_class("_e0")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
275
270
  _for_of(sessions, (s) => {
276
271
  const $scope3_id = _scope_id();
277
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)}`);
@@ -1807,9 +1802,9 @@ var diff_find_default = _template("g", (input) => {
1807
1802
  el.select();
1808
1803
  }, 0);
1809
1804
  }, "g5", $scope0_id);
1810
- _html(`<div${_attr_class(["_eZ", !open && "_eY"])} aria-hidden=${open ? "false" : "true"}><input${_attr_input_value($scope0_id, "b", query || "", _resume(function(v) {
1805
+ _html(`<div${_attr_class(["_fT", !open && "_fS"])} aria-hidden=${open ? "false" : "true"}><input${_attr_input_value($scope0_id, "b", query || "", _resume(function(v) {
1811
1806
  type(v);
1812
- }, "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("_e2")}>${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"}>`);
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("_fW")}>${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"}>`);
1813
1808
  icon_xmark_default({ size: 14 });
1814
1809
  _html(`</button>${_el_resume($scope0_id, "g")}</div>${_el_resume($scope0_id, "a")}`);
1815
1810
  _script($scope0_id, "g6");
@@ -1827,21 +1822,21 @@ var diff_find_default = _template("g", (input) => {
1827
1822
  v: input.tick,
1828
1823
  w: open,
1829
1824
  y: query,
1830
- a1: hi,
1831
- a3: hits?.length,
1832
- a6: at,
1833
- a9: live.open,
1834
- ac: box.timer,
1835
- ae: box.tick,
1836
- af: box.wasOpen,
1837
- ag: emit,
1838
- aj: type,
1839
- al: next,
1840
- am: close,
1841
- an: focusInput,
1825
+ a3: hi,
1826
+ a5: hits?.length,
1827
+ a8: at,
1828
+ ab: live.open,
1829
+ ae: box.timer,
1830
+ ag: box.tick,
1831
+ ah: box.wasOpen,
1832
+ ai: emit,
1833
+ al: type,
1834
+ an: next,
1835
+ ao: close,
1836
+ ap: focusInput,
1842
1837
  x: input.openChange || void 0,
1843
1838
  z: input.queryChange || void 0,
1844
- p: input.stateChange || void 0
1839
+ a2: input.stateChange || void 0
1845
1840
  });
1846
1841
  _resume_branch($scope0_id);
1847
1842
  });
@@ -1906,14 +1901,14 @@ function shortBranch(name, wsBranch = "", wsName = "") {
1906
1901
  }
1907
1902
  return shortHeadFallback(head);
1908
1903
  }
1909
- var repoWorktree = "_f6 _u";
1910
- var repoTitle = "_gb _t";
1904
+ var repoWorktree = "_fn _x";
1905
+ var repoTitle = "_ft _w";
1911
1906
  tone.warn;
1912
1907
  var diff_file_default = _template("f", (input) => {
1913
1908
  _scope_reason();
1914
1909
  const $scope0_id = _scope_id();
1915
1910
  _el($scope0_id, "f0");
1916
- _html(`<div${_attr_class(["_gI", input.class])}></div>${_el_resume($scope0_id, "a")}`);
1911
+ _html(`<div${_attr_class(["_gU", input.class])}></div>${_el_resume($scope0_id, "a")}`);
1917
1912
  _script($scope0_id, "f1");
1918
1913
  writeScope($scope0_id, {
1919
1914
  e: input.file,
@@ -1932,8 +1927,8 @@ var diff_file_default = _template("f", (input) => {
1932
1927
  });
1933
1928
  //#endregion
1934
1929
  //#region src/tags/review-section.marko
1935
- var review_section_default = _template("r", (input) => {
1936
- const $scope0_reason = _scope_reason(), $sg__input_repo = _serialize_guard($scope0_reason, 33), $si__input_repo = _serialize_if($scope0_reason, 33), $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, 30), $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, 34), $sg__input_files__OR__input_commentsByFile = _serialize_guard($scope0_reason, 5), $sg__input_files__OR__input_commentsByFile__OR__input_collapsedFiles = _serialize_guard($scope0_reason, 17), $si__input_files__OR__input_collapsedFiles = _serialize_if($scope0_reason, 6), $si__input_files = _serialize_if($scope0_reason, 34), $si__input_files__OR__input_commentsByFile = _serialize_if($scope0_reason, 5), $si__input_findHit_key = _serialize_if($scope0_reason, 42), $sg__input_files__OR__input_collapsedFiles = _serialize_guard($scope0_reason, 6), $si__input_onFileToggle = _serialize_if($scope0_reason, 43), $sg__input_collapsible__OR__input_collapsed = _serialize_guard($scope0_reason, 9), $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, 23), $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_localDiffers = _serialize_if($scope0_reason, 22), $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, 32), $si__input_draft = _serialize_if($scope0_reason, 45), $si__input_sessions = _serialize_if($scope0_reason, 46), $si__input_onSelect = _serialize_if($scope0_reason, 47), $si__input_onSaveComment = _serialize_if($scope0_reason, 48), $si__input_onSendDraft = _serialize_if($scope0_reason, 49), $si__input_onCancelDraft = _serialize_if($scope0_reason, 50), $si__input_onDeleteComment = _serialize_if($scope0_reason, 51), $si__input_onSendComment = _serialize_if($scope0_reason, 52), $si__input_onError = _serialize_if($scope0_reason, 53), $si__input_shownKeys = _serialize_if($scope0_reason, 35), $si__input_commentsByFile = _serialize_if($scope0_reason, 40), $si__input_collapsedFiles = _serialize_if($scope0_reason, 41), $si__input_findHit_line = _serialize_if($scope0_reason, 44);
1930
+ var review_section_default = _template("s", (input) => {
1931
+ 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);
1937
1932
  const $scope0_id = _scope_id();
1938
1933
  const $input__closures = /* @__PURE__ */ new Set();
1939
1934
  const $input_draft__closures = /* @__PURE__ */ new Set();
@@ -1970,16 +1965,16 @@ var review_section_default = _template("r", (input) => {
1970
1965
  const newCount = input.files.filter((f) => f.changedSince).length;
1971
1966
  const compare$1 = reviewCompareLabel(repo.pr?.baseRefName || repo.base, repo.pr?.headRefName || repo.branch, input.workspaceBranch, input.workspaceName);
1972
1967
  const prTitle = repo.pr ? `${repo.pr.title}: ${repo.pr.headRefName} ${repo.head} vs ${repo.base} ${repo.baseSha}` : "";
1973
- _html(`<section${_attr_class("_f2")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownCount && !repo.pr && input.findHit?.repo !== repo.id)}><div${_attr_class(["_f3", { ["_f4"]: input.collapsible && input.collapsed }])}>`);
1968
+ _html(`<section${_attr_class("_fj")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownCount && !repo.pr && input.findHit?.repo !== repo.id)}><div${_attr_class(["_fk", { ["_fl"]: input.collapsible && input.collapsed }])}>`);
1974
1969
  _if(() => {
1975
1970
  if (input.collapsible) {
1976
1971
  const $scope1_id = _scope_id();
1977
- _html(`<button type=button${_attr_class("_f5")} 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([
1978
- "_go",
1979
- !input.collapsed && "_gp",
1980
- input.expanding && "_gq"
1981
- ])} aria-hidden=true>${input.collapsed ? "▸" : "▾"}${_el_resume($scope1_id, "c", _serialize_guard($scope0_reason, 38))}</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")}`);
1982
- _script($scope1_id, "r8");
1972
+ _html(`<button type=button${_attr_class("_fm")} 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
+ "_fG",
1974
+ !input.collapsed && "_fH",
1975
+ input.expanding && "_fI"
1976
+ ])} 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");
1983
1978
  writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
1984
1979
  return 0;
1985
1980
  } else {
@@ -1988,11 +1983,11 @@ var review_section_default = _template("r", (input) => {
1988
1983
  _serialize_if($scope0_reason, 1) && writeScope($scope10_id, { _: $si__input_repo && _scope_with_id($scope0_id) });
1989
1984
  return 1;
1990
1985
  }
1991
- }, $scope0_id, "c", _serialize_guard($scope0_reason, 1) || _serialize_guard($scope0_reason, 27), _serialize_guard($scope0_reason, 37), $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);
1986
+ }, $scope0_id, "c", _serialize_guard($scope0_reason, 1) || _serialize_guard($scope0_reason, 28), _serialize_guard($scope0_reason, 38), $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);
1992
1987
  _if(() => {
1993
1988
  if (repo.pr) {
1994
1989
  const $scope11_id = _scope_id();
1995
- _html(`<a${_attr_class(["_p", "_r"])}${_attr("href", `${repo.pr.url}/files`)} target=_blank rel=noopener${_attr("title", prTitle)}>#${_sep($sg__input_repo)}${_escape(repo.pr.number)}${_el_resume($scope11_id, "b", $sg__input_repo)}</a>${_el_resume($scope11_id, "a", $sg__input_repo)}<span${_attr_class(repoTitle)}>${_escape(repo.pr.title)}${_el_resume($scope11_id, "d", $sg__input_repo)}</span>`);
1990
+ _html(`<a${_attr_class(["_s", "_u"])}${_attr("href", `${repo.pr.url}/files`)} target=_blank rel=noopener${_attr("title", prTitle)}>#${_sep($sg__input_repo)}${_escape(repo.pr.number)}${_el_resume($scope11_id, "b", $sg__input_repo)}</a>${_el_resume($scope11_id, "a", $sg__input_repo)}<span${_attr_class(repoTitle)}>${_escape(repo.pr.title)}${_el_resume($scope11_id, "d", $sg__input_repo)}</span>`);
1996
1991
  $si__input_repo && writeScope($scope11_id, { _: _scope_with_id($scope0_id) });
1997
1992
  return 0;
1998
1993
  } else {
@@ -2002,14 +1997,14 @@ var review_section_default = _template("r", (input) => {
2002
1997
  return 1;
2003
1998
  }
2004
1999
  }, $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);
2005
- _html(`<span${_attr_class("_gc")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_F", "_gd"])}>${_escape(compare$1.base)}${_el_resume($scope0_id, "g", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_H", "_gf"])} aria-hidden=true>vs</span><span${_attr_class(["_F", "_ge"])}>${_escape(compare$1.head)}${_el_resume($scope0_id, "j", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2000
+ _html(`<span${_attr_class("_fu")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_I", "_fv"])}>${_escape(compare$1.base)}${_el_resume($scope0_id, "g", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_K", "_fx"])} aria-hidden=true>vs</span><span${_attr_class(["_I", "_fw"])}>${_escape(compare$1.head)}${_el_resume($scope0_id, "j", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2006
2001
  _if(() => {
2007
2002
  if (compare$1.topic) {
2008
2003
  const $scope15_id = _scope_id();
2009
2004
  _html(`<span${_attr_class([
2010
- "_F",
2005
+ "_I",
2011
2006
  tone.accent,
2012
- "_gg"
2007
+ "_fy"
2013
2008
  ])}>${_escape(compare$1.topic)}${_el_resume($scope15_id, "b", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2014
2009
  $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName && writeScope($scope15_id, { _: _scope_with_id($scope0_id) });
2015
2010
  return 0;
@@ -2020,11 +2015,11 @@ var review_section_default = _template("r", (input) => {
2020
2015
  if (repo.githubDrift) {
2021
2016
  const $scope2_id = _scope_id();
2022
2017
  _html(`<button type=button${_attr_class([
2023
- "_F",
2018
+ "_I",
2024
2019
  tone.warn,
2025
- "_gh"
2020
+ "_fz"
2026
2021
  ])}${_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")}`);
2027
- _script($scope2_id, "r9");
2022
+ _script($scope2_id, "s9");
2028
2023
  writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
2029
2024
  return 0;
2030
2025
  }
@@ -2032,7 +2027,7 @@ var review_section_default = _template("r", (input) => {
2032
2027
  _if(() => {
2033
2028
  if (repo.contained && input.files.length) {
2034
2029
  const $scope13_id = _scope_id();
2035
- _html(`<span${_attr_class(["_F", "_gh"])}${_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)}`);
2030
+ _html(`<span${_attr_class(["_I", "_fz"])}${_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)}`);
2036
2031
  _serialize_if($scope0_reason, 0) && writeScope($scope13_id, { _: $si__input_repo && _scope_with_id($scope0_id) });
2037
2032
  return 0;
2038
2033
  }
@@ -2040,16 +2035,16 @@ var review_section_default = _template("r", (input) => {
2040
2035
  _if(() => {
2041
2036
  if (input.localDiffers) {
2042
2037
  const $scope3_id = _scope_id();
2043
- _html(`<span${_attr_class(["_F", "_gh"])}${_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)}`);
2038
+ _html(`<span${_attr_class(["_I", "_fz"])}${_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)}`);
2044
2039
  $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) });
2045
2040
  return 0;
2046
2041
  }
2047
- }, $scope0_id, "n", _serialize_guard($scope0_reason, 22), _serialize_guard($scope0_reason, 39), $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);
2048
- _html(`<span${_attr_class("_f7")}><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>`);
2042
+ }, $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("_fo")}><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>`);
2049
2044
  _if(() => {
2050
2045
  if (stats.additions || stats.deletions) {
2051
2046
  const $scope14_id = _scope_id();
2052
- _html(`<span${_attr_class("_f8")}>+${_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("_f9")}>−${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.deletions)}${_el_resume($scope14_id, "d", $sg__input_files__OR__input_shownKeys)}</span>`);
2047
+ _html(`<span${_attr_class("_fp")}>+${_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("_fq")}>−${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.deletions)}${_el_resume($scope14_id, "d", $sg__input_files__OR__input_shownKeys)}</span>`);
2053
2048
  $si__input_files__OR__input_shownKeys && writeScope($scope14_id, { _: _scope_with_id($scope0_id) });
2054
2049
  return 0;
2055
2050
  }
@@ -2057,19 +2052,17 @@ var review_section_default = _template("r", (input) => {
2057
2052
  _if(() => {
2058
2053
  if (newCount || input.onlyNew) {
2059
2054
  const $scope4_id = _scope_id();
2060
- _html(`<button type=button${_attr_class(["_ga", { ["_f_"]: 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")}`);
2061
- _script($scope4_id, "r10");
2055
+ _html(`<button type=button${_attr_class(["_fs", { ["_fr"]: 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");
2062
2057
  writeScope($scope4_id, { _: _scope_with_id($scope0_id) });
2063
2058
  return 0;
2064
2059
  }
2065
2060
  }, $scope0_id, "s", $sg__input_files__OR__input_onlyNew, $sg__input_files__OR__input_onlyNew, $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);
2066
- _html(`</span></div>${_el_resume($scope0_id, "b", $sg__input_collapsible__OR__input_collapsed)}`);
2061
+ _html(`</span></div>${_el_resume($scope0_id, "b", _serialize_guard($scope0_reason, 9))}`);
2067
2062
  _if(() => {
2068
2063
  if (!input.collapsible || !input.collapsed || input.opened) {
2069
2064
  const $scope5_id = _scope_id();
2070
- const $show = !input.collapsible || !input.collapsed;
2071
- _show_start($show);
2072
- _html(`<div${_attr_class("_gj")}>`);
2065
+ _html(`<div${_attr_class("_fB")}${_attr("hidden", input.collapsible && input.collapsed)}>`);
2073
2066
  _for_of(input.files, (file$1) => {
2074
2067
  const $scope6_id = _scope_id();
2075
2068
  const $for_content__file__closures = /* @__PURE__ */ new Set();
@@ -2079,11 +2072,11 @@ var review_section_default = _template("r", (input) => {
2079
2072
  const expanded = !input.collapsedFiles.has(file$1.key);
2080
2073
  _html(`<details${_attr_details_or_dialog_open($scope6_id, "a", expanded, _resume(function(open) {
2081
2074
  input.onFileToggle(file$1.key, open);
2082
- }, "r0", $scope6_id))}${_attr_class(["_gk", input.findHit?.key === file$1.key && "_f0"])}${_attr("data-key", file$1.key)}${_attr("hidden", !input.shownKeys.has(file$1.key))}><summary${_attr_class("_gm")}><span${_attr_class("_gr")}${_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(["_gs", input.findHit?.key === file$1.key && input.findHit.line < 1 && "_f1"])}${_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, 18))}`);
2075
+ }, "s0", $scope6_id))}${_attr_class(["_fC", input.findHit?.key === file$1.key && "_fh"])}${_attr("data-key", file$1.key)}${_attr("hidden", !input.shownKeys.has(file$1.key))}><summary${_attr_class("_fE")}><span${_attr_class("_fJ")}${_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(["_fK", input.findHit?.key === file$1.key && input.findHit.line < 1 && "_fi"])}${_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))}`);
2083
2076
  _if(() => {
2084
2077
  if (file$1.changedSince) {
2085
2078
  const $scope17_id = _scope_id();
2086
- _html(`<span${_attr_class(["_w", "_gi"])} title="Changed since your last visit"></span>`);
2079
+ _html(`<span${_attr_class(["_z", "_fA"])} title="Changed since your last visit"></span>`);
2087
2080
  $si__input_files && writeScope($scope17_id, {});
2088
2081
  return 0;
2089
2082
  }
@@ -2091,7 +2084,7 @@ var review_section_default = _template("r", (input) => {
2091
2084
  _if(() => {
2092
2085
  if (fileComments.length) {
2093
2086
  const $scope16_id = _scope_id();
2094
- _html(`<span${_attr_class("_p")}>💬 ${_sep($sg__input_files__OR__input_commentsByFile)}${_escape(fileComments.length)}${_el_resume($scope16_id, "b", $sg__input_files__OR__input_commentsByFile)}</span>`);
2087
+ _html(`<span${_attr_class("_s")}>💬 ${_sep($sg__input_files__OR__input_commentsByFile)}${_escape(fileComments.length)}${_el_resume($scope16_id, "b", $sg__input_files__OR__input_commentsByFile)}</span>`);
2095
2088
  $si__input_files__OR__input_commentsByFile && writeScope($scope16_id, { _: _scope_with_id($scope6_id) });
2096
2089
  return 0;
2097
2090
  }
@@ -2100,17 +2093,17 @@ var review_section_default = _template("r", (input) => {
2100
2093
  _if(() => {
2101
2094
  if (file$1.binary) {
2102
2095
  const $scope18_id = _scope_id();
2103
- _html(`<p${_attr_class(["_gt", "_gl"])}>binary file</p>`);
2096
+ _html(`<p${_attr_class(["_fL", "_fD"])}>binary file</p>`);
2104
2097
  $si__input_files__OR__input_collapsedFiles && writeScope($scope18_id, {});
2105
2098
  return 0;
2106
2099
  } else if (file$1.tooLarge) {
2107
2100
  const $scope19_id = _scope_id();
2108
- _html(`<p${_attr_class(["_gt", "_gl"])}>file too large to display</p>`);
2101
+ _html(`<p${_attr_class(["_fL", "_fD"])}>file too large to display</p>`);
2109
2102
  $si__input_files__OR__input_collapsedFiles && writeScope($scope19_id, {});
2110
2103
  return 1;
2111
2104
  } else if (file$1.old == null && file$1.new == null) {
2112
2105
  const $scope20_id = _scope_id();
2113
- _html(`<p${_attr_class(["_gt", "_gl"])}>file could not be read</p>`);
2106
+ _html(`<p${_attr_class(["_fL", "_fD"])}>file could not be read</p>`);
2114
2107
  $si__input_files__OR__input_collapsedFiles && writeScope($scope20_id, {});
2115
2108
  return 2;
2116
2109
  } else if (expanded) {
@@ -2120,48 +2113,48 @@ var review_section_default = _template("r", (input) => {
2120
2113
  _if(() => {
2121
2114
  if (!forceNear) {
2122
2115
  const $scope8_id = _scope_id();
2123
- _html(`<div${_attr_class(["_gn", "_gl"])}></div>${_el_resume($scope8_id, "a")}`);
2124
- _script($scope8_id, "r11");
2116
+ _html(`<div${_attr_class(["_fF", "_fD"])}></div>${_el_resume($scope8_id, "a")}`);
2117
+ _script($scope8_id, "s11");
2125
2118
  _subscribe($si__input && $input__closures, writeScope($scope8_id, {}));
2126
2119
  return 0;
2127
2120
  } else {
2128
2121
  const $scope9_id = _scope_id();
2129
2122
  const $childScope = _peek_scope_id();
2130
2123
  diff_file_default({
2131
- class: "_gl",
2124
+ class: "_fD",
2132
2125
  file: file$1,
2133
2126
  comments: fileComments,
2134
2127
  draft: input.draft && input.draft.key === file$1.key ? input.draft : null,
2135
2128
  sessions: input.sessions,
2136
2129
  onSelect: _resume(function(range) {
2137
2130
  input.onSelect(file$1, range);
2138
- }, "r1", $scope9_id),
2131
+ }, "s1", $scope9_id),
2139
2132
  onSaveComment: _resume(function(text) {
2140
2133
  input.onSaveComment(file$1, text);
2141
- }, "r2", $scope9_id),
2134
+ }, "s2", $scope9_id),
2142
2135
  onSendDraft: _resume(function(text, sessionId) {
2143
2136
  input.onSendDraft(file$1, text, sessionId);
2144
- }, "r3", $scope9_id),
2137
+ }, "s3", $scope9_id),
2145
2138
  onCancelDraft: _resume(function() {
2146
2139
  input.onCancelDraft();
2147
- }, "r4", $scope9_id),
2140
+ }, "s4", $scope9_id),
2148
2141
  onDeleteComment: _resume(function(id) {
2149
2142
  input.onDeleteComment(id);
2150
- }, "r5", $scope9_id),
2143
+ }, "s5", $scope9_id),
2151
2144
  onSendComment: _resume(function(id, sessionId) {
2152
2145
  input.onSendComment(id, sessionId);
2153
- }, "r6", $scope9_id),
2146
+ }, "s6", $scope9_id),
2154
2147
  onError: _resume(function(message) {
2155
2148
  input.onError(message);
2156
- }, "r7", $scope9_id)
2149
+ }, "s7", $scope9_id)
2157
2150
  });
2158
- _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, 31) && _existing_scope($childScope) })))))))))))));
2151
+ _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) })))))))))))));
2159
2152
  return 1;
2160
2153
  }
2161
2154
  }, $scope7_id, "a", 1, 1, 1, 0, 1);
2162
2155
  _subscribe($si__input_findHit_key && $input_findHit_key__closures, writeScope($scope7_id, {
2163
- b: _serialize_if($scope0_reason, 7) && near,
2164
- c: forceNear,
2156
+ c: _serialize_if($scope0_reason, 7) && near,
2157
+ d: forceNear,
2165
2158
  _: _scope_with_id($scope6_id),
2166
2159
  Cca: $si__input_findHit_key && 1
2167
2160
  }));
@@ -2169,7 +2162,7 @@ var review_section_default = _template("r", (input) => {
2169
2162
  }
2170
2163
  }, $scope6_id, "i", $sg__input_files__OR__input_collapsedFiles, $sg__input_files__OR__input_collapsedFiles, $sg__input_files__OR__input_commentsByFile__OR__input_collapsedFiles);
2171
2164
  _html(`</details>${_el_resume($scope6_id, "a")}`);
2172
- _script($scope6_id, "r12");
2165
+ _script($scope6_id, "s12");
2173
2166
  _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, {
2174
2167
  k: file$1,
2175
2168
  l: file$1?.key,
@@ -2185,23 +2178,22 @@ var review_section_default = _template("r", (input) => {
2185
2178
  a4: $si__input_files && $for_content__file_key__closures,
2186
2179
  a5: $si__input_files__OR__input_commentsByFile && $for_content__fileComments__closures
2187
2180
  })))))));
2188
- }, "key", $scope5_id, "b", $sg__input_files, $sg__input_files, $sg__input_files, "</div>", 1);
2189
- _show_end($scope5_id, "c", $show, $sg__input_collapsible__OR__input_collapsed, $sg__input_collapsible__OR__input_collapsed, 0, 1);
2181
+ }, "key", $scope5_id, "a", $sg__input_files, _serialize_guard($scope0_reason, 17), $sg__input_files, "</div>", 1);
2190
2182
  writeScope($scope5_id, { _: _scope_with_id($scope0_id) });
2191
2183
  return 0;
2192
2184
  }
2193
- }, $scope0_id, "t", _serialize_guard($scope0_reason, 23), _serialize_guard($scope0_reason, 19), $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);
2194
- _html(`</section>${_el_resume($scope0_id, "a", _serialize_guard($scope0_reason, 20))}`);
2185
+ }, $scope0_id, "t", _serialize_guard($scope0_reason, 24), _serialize_guard($scope0_reason, 20), $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);
2186
+ _html(`</section>${_el_resume($scope0_id, "a", _serialize_guard($scope0_reason, 21))}`);
2195
2187
  writeScope($scope0_id, {
2196
2188
  v: input,
2197
- x: _serialize_if($scope0_reason, 24) && input.files,
2189
+ x: _serialize_if($scope0_reason, 25) && input.files,
2198
2190
  y: $si__input_files__OR__input_collapsible__OR__input_collapsed__OR__input_opened && input.shownKeys,
2199
2191
  a0: $si__input_repo__OR__input_files__OR__input_shownKeys && input.files?.length,
2200
2192
  a1: _serialize_if($scope0_reason, 15) && input.workspaceBranch,
2201
2193
  a2: _serialize_if($scope0_reason, 14) && input.workspaceName,
2202
2194
  a4: $si__input_repo__OR__input_files__OR__input_shownKeys && input.findHit?.repo,
2203
- a5: _serialize_if($scope0_reason, 19) && input.collapsible,
2204
- a6: _serialize_if($scope0_reason, 28) && input.collapsed,
2195
+ a5: _serialize_if($scope0_reason, 20) && input.collapsible,
2196
+ a6: _serialize_if($scope0_reason, 29) && input.collapsed,
2205
2197
  a8: $si__input_collapsible__OR__input_collapsed && input.expanding,
2206
2198
  a9: input.onToggle,
2207
2199
  aa: $si__input_repo && input.loading,
@@ -2211,9 +2203,9 @@ var review_section_default = _template("r", (input) => {
2211
2203
  af: $si__input_collapsible__OR__input_collapsed && input.opened,
2212
2204
  ah: $si__input_files__OR__input_collapsible__OR__input_collapsed__OR__input_opened && input.commentsByFile,
2213
2205
  ai: $si__input_files__OR__input_collapsible__OR__input_collapsed__OR__input_opened && input.collapsedFiles,
2214
- aj: _serialize_if($scope0_reason, 29) && input.findHit?.key,
2206
+ aj: _serialize_if($scope0_reason, 30) && input.findHit?.key,
2215
2207
  ak: input.onFileToggle,
2216
- al: _serialize_if($scope0_reason, 26) && input.findHit?.line,
2208
+ al: _serialize_if($scope0_reason, 27) && input.findHit?.line,
2217
2209
  am: input.draft,
2218
2210
  an: input.sessions,
2219
2211
  ao: input.onSelect,
@@ -2223,22 +2215,22 @@ var review_section_default = _template("r", (input) => {
2223
2215
  as: input.onDeleteComment,
2224
2216
  at: input.onSendComment,
2225
2217
  au: input.onError,
2226
- aw: _serialize_if($scope0_reason, 20) && repo?.pr,
2218
+ aw: _serialize_if($scope0_reason, 21) && repo?.pr,
2227
2219
  ax: _serialize_if($scope0_reason, 8) && repo?.pr?.baseRefName,
2228
- ay: _serialize_if($scope0_reason, 21) && repo?.base,
2220
+ ay: _serialize_if($scope0_reason, 22) && repo?.base,
2229
2221
  az: $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_localDiffers && repo?.pr?.headRefName,
2230
- b0: _serialize_if($scope0_reason, 25) && repo?.branch,
2222
+ b0: _serialize_if($scope0_reason, 26) && repo?.branch,
2231
2223
  b2: $si__input_repo && repo?.pr?.title,
2232
2224
  b3: $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_localDiffers && repo?.head,
2233
2225
  b4: $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName && repo?.baseSha,
2234
- b5: _serialize_if($scope0_reason, 37) && repo?.worktree,
2226
+ b5: _serialize_if($scope0_reason, 38) && repo?.worktree,
2235
2227
  b6: $si__input_repo && repo?.pr?.number,
2236
2228
  b7: _serialize_if($scope0_reason, 16) && repo?.id,
2237
2229
  b8: $si__input_repo && repo?.pr?.url,
2238
2230
  b9: $si__input_repo && repo?.full_name,
2239
2231
  bb: $si__input_repo && repo?.pr?.headRefOid,
2240
- bc: _serialize_if($scope0_reason, 36) && repo?.contained,
2241
- be: _serialize_if($scope0_reason, 39) && repo?.localHead,
2232
+ bc: _serialize_if($scope0_reason, 37) && repo?.contained,
2233
+ be: _serialize_if($scope0_reason, 40) && repo?.localHead,
2242
2234
  bh: _serialize_if($scope0_reason, 12) && shownCount,
2243
2235
  bk: $si__input_collapsible__OR__input_collapsed && countLabel,
2244
2236
  bm: $si__input_files__OR__input_shownKeys && stats?.additions,
@@ -2264,10 +2256,10 @@ var review_section_default = _template("r", (input) => {
2264
2256
  cc: $si__input_findHit_line && $input_findHit_line__closures
2265
2257
  });
2266
2258
  });
2267
- var fileFilter = "_gv _i";
2259
+ var fileFilter = "_gW _l";
2268
2260
  //#endregion
2269
2261
  //#region src/tags/file-filter.marko
2270
- var file_filter_default = _template("k", (input) => {
2262
+ var file_filter_default = _template("l", (input) => {
2271
2263
  const $scope0_reason = _scope_reason();
2272
2264
  const $scope0_id = _scope_id();
2273
2265
  let value = input.value;
@@ -2282,7 +2274,7 @@ var file_filter_default = _template("k", (input) => {
2282
2274
  const next = pending !== null ? pending : value || "";
2283
2275
  pending = null;
2284
2276
  value = next;
2285
- }, "k1", $scope0_id);
2277
+ }, "l1", $scope0_id);
2286
2278
  const type = _resume((v) => {
2287
2279
  if (box.timer) clearTimeout(box.timer);
2288
2280
  if (!v) {
@@ -2293,11 +2285,11 @@ var file_filter_default = _template("k", (input) => {
2293
2285
  }
2294
2286
  pending = v;
2295
2287
  box.timer = setTimeout(flush, 150);
2296
- }, "k2", $scope0_id);
2297
- _html(`<div${_attr_class("_gu")}><input${_attr_input_value($scope0_id, "b", draft, _resume(function(v) {
2288
+ }, "l2", $scope0_id);
2289
+ _html(`<div${_attr_class("_gV")}><input${_attr_input_value($scope0_id, "b", draft, _resume(function(v) {
2298
2290
  type(v);
2299
- }, "k0", $scope0_id))}${_attr_class(fileFilter)} type=search placeholder="Filter files…" aria-label="Filter files">${_el_resume($scope0_id, "b")}</div>`);
2300
- _script($scope0_id, "k3");
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");
2301
2293
  writeScope($scope0_id, {
2302
2294
  e: _serialize_if($scope0_reason, 1) && input.value,
2303
2295
  f: _serialize_if($scope0_reason, 0) && input.valueChange,
@@ -2312,16 +2304,124 @@ var file_filter_default = _template("k", (input) => {
2312
2304
  _resume_branch($scope0_id);
2313
2305
  });
2314
2306
  //#endregion
2307
+ //#region src/tags/diff-tree-dir.marko
2308
+ var $content = (input) => {
2309
+ const $scope0_reason = _scope_reason(), $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys = _serialize_guard($scope0_reason, 3), $sg__input = _serialize_guard($scope0_reason, 4), $si__input = _serialize_if($scope0_reason, 4), $sg__input_dir = _serialize_guard($scope0_reason, 5), $sg__input_dir__OR__input_newKeys = _serialize_guard($scope0_reason, 1), $sg__input_dir__OR__input_commentKeys__OR__input_newKeys = _serialize_guard($scope0_reason, 2), $sg__input_dir__OR__input_commentKeys = _serialize_guard($scope0_reason, 0), $si__input_collapsedFiles = _serialize_if($scope0_reason, 10), $si__input_dir = _serialize_if($scope0_reason, 5), $si__input_collapsed = _serialize_if($scope0_reason, 6), $si__input_onToggleDir = _serialize_if($scope0_reason, 7), $si__input_collapsedKey = _serialize_if($scope0_reason, 8), $si__input_hrefFor = _serialize_if($scope0_reason, 9), $si__input_commentKeys = _serialize_if($scope0_reason, 11), $si__input_newKeys = _serialize_if($scope0_reason, 12);
2310
+ const $scope0_id = _scope_id();
2311
+ const $input_collapsed__closures = /* @__PURE__ */ new Set();
2312
+ const $input_onToggleDir__closures = /* @__PURE__ */ new Set();
2313
+ const $input_collapsedKey__closures = /* @__PURE__ */ new Set();
2314
+ const $input_hrefFor__closures = /* @__PURE__ */ new Set();
2315
+ const $input_collapsedFiles__closures = /* @__PURE__ */ new Set();
2316
+ const $input_commentKeys__closures = /* @__PURE__ */ new Set();
2317
+ const $input_newKeys__closures = /* @__PURE__ */ new Set();
2318
+ const dir = input.dir;
2319
+ _for_of(dir.dirs, (child) => {
2320
+ const $scope1_id = _scope_id();
2321
+ const shut = input.collapsed.has(input.collapsedKey(child.path));
2322
+ _html(`<div${_attr_class("_gc")}><button type=button${_attr_class(["_gd", { ["_f5"]: shut }])}${_attr("title", child.path)}${_attr_style(`--depth:${child.depth}`)}><span${_attr_class("_gk")}>${shut ? "▸" : "▾"}${_el_resume($scope1_id, "d", $sg__input)}</span><span${_attr_class("_ge")}>${_escape(child.label)}${_el_resume($scope1_id, "f", $sg__input_dir)}/</span></button>${_el_resume($scope1_id, "b")}`);
2323
+ _if(() => {
2324
+ if (!shut) {
2325
+ const $scope2_id = _scope_id();
2326
+ _set_serialize_reason({
2327
+ 0: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2328
+ 1: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2329
+ 2: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2330
+ 3: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2331
+ 4: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2332
+ 5: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2333
+ 6: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2334
+ 7: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2335
+ 8: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2336
+ 9: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2337
+ 10: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2338
+ 11: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys,
2339
+ 12: $sg__input_dir__OR__input_collapsed__OR__input_onToggleDir__OR__input_collapsedKey__OR__input_hrefFor__OR__input_collapsedFiles__OR__input_commentKeys__OR__input_newKeys
2340
+ });
2341
+ const $childScope = _peek_scope_id();
2342
+ $content({
2343
+ dir: child,
2344
+ collapsed: input.collapsed,
2345
+ collapsedKey: input.collapsedKey,
2346
+ onToggleDir: input.onToggleDir,
2347
+ hrefFor: input.hrefFor,
2348
+ collapsedFiles: input.collapsedFiles,
2349
+ commentKeys: input.commentKeys,
2350
+ newKeys: input.newKeys
2351
+ });
2352
+ $si__input && _subscribe($si__input_newKeys && $input_newKeys__closures, _subscribe($si__input_commentKeys && $input_commentKeys__closures, _subscribe($si__input_collapsedFiles && $input_collapsedFiles__closures, _subscribe($si__input_hrefFor && $input_hrefFor__closures, _subscribe($si__input_collapsedKey && $input_collapsedKey__closures, _subscribe($si__input_onToggleDir && $input_onToggleDir__closures, _subscribe($si__input_collapsed && $input_collapsed__closures, writeScope($scope2_id, {
2353
+ _: _scope_with_id($scope1_id),
2354
+ a: _serialize_if($scope0_reason, 3) && _existing_scope($childScope)
2355
+ }))))))));
2356
+ return 0;
2357
+ }
2358
+ }, $scope1_id, "g", $sg__input, $sg__input, $sg__input);
2359
+ _html("</div>");
2360
+ _script($scope1_id, "i0");
2361
+ writeScope($scope1_id, {
2362
+ i: child,
2363
+ j: $si__input && child?.path,
2364
+ _: _scope_with_id($scope0_id)
2365
+ });
2366
+ }, "path", $scope0_id, "a", $sg__input, $sg__input_dir, $sg__input_dir, 0, 1);
2367
+ _for_of(dir.files, ({ file, name }) => {
2368
+ const $scope3_id = _scope_id();
2369
+ _html(`<a${_attr("href", input.hrefFor(file.key))}${_attr_class(["_gg", { ["_gf"]: 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("_gl")}${_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("_gh")}>${_escape(name)}${_el_resume($scope3_id, "e", $sg__input_dir)}</span>`);
2370
+ _if(() => {
2371
+ if (input.newKeys.has(file.key)) {
2372
+ const $scope4_id = _scope_id();
2373
+ _html(`<span${_attr_class(["_z", "_gi"])} title="Changed since your last visit"></span>`);
2374
+ _serialize_if($scope0_reason, 1) && writeScope($scope4_id, {});
2375
+ return 0;
2376
+ }
2377
+ }, $scope3_id, "f", $sg__input_dir__OR__input_newKeys, $sg__input_dir__OR__input_newKeys, $sg__input_dir__OR__input_commentKeys__OR__input_newKeys, 0, 1);
2378
+ _if(() => {
2379
+ if (input.commentKeys.has(file.key)) {
2380
+ const $scope5_id = _scope_id();
2381
+ _html(`<span${_attr_class("_gj")}>💬</span>`);
2382
+ _serialize_if($scope0_reason, 0) && writeScope($scope5_id, {});
2383
+ return 0;
2384
+ }
2385
+ }, $scope3_id, "g", $sg__input_dir__OR__input_commentKeys, $sg__input_dir__OR__input_commentKeys, $sg__input_dir__OR__input_commentKeys__OR__input_newKeys, 0, 1);
2386
+ _html(`</a>${_el_resume($scope3_id, "a", $sg__input)}`);
2387
+ $si__input && writeScope($scope3_id, {
2388
+ k: file?.key,
2389
+ p: $si__input_collapsedFiles && file?.path,
2390
+ _: _scope_with_id($scope0_id)
2391
+ });
2392
+ }, (f) => f.file.key, $scope0_id, "b", $sg__input, $sg__input_dir, $sg__input_dir, 0, 1);
2393
+ writeScope($scope0_id, {
2394
+ d: $si__input_dir && input,
2395
+ f: $si__input && input.collapsed,
2396
+ g: input.onToggleDir,
2397
+ h: $si__input && input.collapsedKey,
2398
+ i: $si__input && input.hrefFor,
2399
+ j: $si__input && input.collapsedFiles,
2400
+ k: $si__input && input.commentKeys,
2401
+ l: $si__input && input.newKeys,
2402
+ p: $si__input_dir && dir?.depth,
2403
+ r: $si__input_collapsed && $input_collapsed__closures,
2404
+ s: $si__input_onToggleDir && $input_onToggleDir__closures,
2405
+ t: $si__input_collapsedKey && $input_collapsedKey__closures,
2406
+ u: $si__input_hrefFor && $input_hrefFor__closures,
2407
+ v: $si__input_collapsedFiles && $input_collapsedFiles__closures,
2408
+ w: $si__input_commentKeys && $input_commentKeys__closures,
2409
+ x: $si__input_newKeys && $input_newKeys__closures
2410
+ });
2411
+ };
2412
+ var diff_tree_dir_default = _template("i", $content);
2413
+ //#endregion
2315
2414
  //#region src/tags/diff-tree.marko
2316
- var diff_tree_default = _template("i", (input) => {
2317
- const $scope0_reason = _scope_reason(), $sg__input_sections = _serialize_guard($scope0_reason, 14), $sg__input_newKeys__OR__input_sections = _serialize_guard($scope0_reason, 1), $sg__input_commentKeys__OR__input_newKeys__OR__input_sections = _serialize_guard($scope0_reason, 3), $sg__input_commentKeys__OR__input_sections = _serialize_guard($scope0_reason, 0), $si__input_sections = _serialize_if($scope0_reason, 14), $si__input_collapsedFiles = _serialize_if($scope0_reason, 16), $si__input_commentKeys = _serialize_if($scope0_reason, 11), $si__input_newKeys = _serialize_if($scope0_reason, 12), $si__input_workspaceId__OR__input_scope = _serialize_if($scope0_reason, 2);
2415
+ var diff_tree_default = _template("j", (input) => {
2416
+ 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);
2318
2417
  const $scope0_id = _scope_id();
2319
- const $collapsedDirs__closures = /* @__PURE__ */ new Set();
2418
+ const $input_onDirToggle__closures = /* @__PURE__ */ new Set();
2320
2419
  const $input_collapsedFiles__closures = /* @__PURE__ */ new Set();
2420
+ const $collapsedRepos__closures = /* @__PURE__ */ new Set();
2421
+ const $collapsedDirs__closures = /* @__PURE__ */ new Set();
2321
2422
  const $commentKeys__closures = /* @__PURE__ */ new Set();
2322
2423
  const $newKeys__closures = /* @__PURE__ */ new Set();
2323
2424
  const $hrefFor2__closures = /* @__PURE__ */ new Set();
2324
- const $collapsedRepos__closures = /* @__PURE__ */ new Set();
2325
2425
  let collapsedRepos = input.collapsedRepos;
2326
2426
  let openedRepos = input.openedRepos;
2327
2427
  let filter = input.filter;
@@ -2333,149 +2433,106 @@ var diff_tree_default = _template("i", (input) => {
2333
2433
  view: "diff",
2334
2434
  scope: input.scope ?? null,
2335
2435
  file: key
2336
- }), "i0", $scope0_id);
2337
- _html(`<aside${_attr_class(["_fd", { ["_fc"]: input.open === false }])}><div${_attr_class("_fe")}>`);
2436
+ }), "j0", $scope0_id);
2437
+ _html(`<aside${_attr_class(["_f6", { ["_f5"]: input.open === false }])}><div${_attr_class("_f7")}>`);
2338
2438
  _set_serialize_reason(2);
2339
2439
  const $childScope = _peek_scope_id();
2340
2440
  file_filter_default({
2341
2441
  value: filter,
2342
2442
  valueChange: _resume((_new_filter) => {
2343
2443
  filter = _new_filter;
2344
- }, "i1", $scope0_id)
2444
+ }, "j1", $scope0_id)
2345
2445
  });
2346
- _html("</div>");
2446
+ _html(`</div><div${_attr_class("_f8")}>`);
2347
2447
  _if(() => {
2348
2448
  if (!input.sections.length && filter) {
2349
- const $scope6_id = _scope_id();
2350
- _html(`<p${_attr_class("_ff")}>No files match.</p>`);
2351
- writeScope($scope6_id, {});
2449
+ const $scope3_id = _scope_id();
2450
+ _html(`<p${_attr_class("_f9")}>No files match.</p>`);
2451
+ writeScope($scope3_id, {});
2352
2452
  return 0;
2353
2453
  }
2354
- }, $scope0_id, "d", 1, 1, 1, 0, 1);
2454
+ }, $scope0_id, "e", 1, 1, 1, 0, 1);
2355
2455
  _for_of(input.sections, (section) => {
2356
2456
  const $scope1_id = _scope_id();
2357
- _html(`<div${_attr_class("_fg")}><button type=button${_attr_class(["_fh", { ["_fc"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fo")}>${collapsedRepos.has(section.id) ? "▸" : "▾"}${_el_resume($scope1_id, "d")}</span>${_sep($sg__input_sections)}${_escape(section.label)}${_el_resume($scope1_id, "e", $sg__input_sections)}</button>${_el_resume($scope1_id, "b")}`);
2457
+ _html(`<div${_attr_class("_f_")}><button type=button${_attr_class(["_ga", { ["_f5"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_gk")}>${collapsedRepos.has(section.id) ? "▸" : "▾"}${_el_resume($scope1_id, "d")}</span><span${_attr_class("_ge")}>${_escape(section.label)}${_el_resume($scope1_id, "f", $sg__input_sections)}</span></button>${_el_resume($scope1_id, "b")}`);
2358
2458
  _if(() => {
2359
2459
  if (!collapsedRepos.has(section.id) || openedRepos.has(section.id)) {
2360
2460
  const $scope2_id = _scope_id();
2361
- const $if_content__dirKey__closures = /* @__PURE__ */ new Set();
2362
- const $show = !collapsedRepos.has(section.id);
2363
- _show_start($show, 1);
2364
- const repoRows = treeRows(section.files);
2365
- const dirKey = _resume((path) => `${section.id}/${path}`, "i2", $scope2_id);
2366
- const rowDir = _resume((row) => row.kind === "dir" ? row.path : row.file.path.includes("/") ? row.file.path.slice(0, row.file.path.lastIndexOf("/")) : "", "i3");
2367
- const hiddenByCollapse = _resume((row) => {
2368
- const dir = rowDir(row);
2369
- for (const collapsed of collapsedDirs) {
2370
- const slash = collapsed.indexOf("/");
2371
- const wt = collapsed.slice(0, slash);
2372
- const path = collapsed.slice(slash + 1);
2373
- if (wt !== section.id) continue;
2374
- if (row.kind === "dir" && row.path === path) continue;
2375
- if (dir === path || dir.startsWith(`${path}/`)) return true;
2376
- }
2377
- return false;
2378
- }, "i4", $scope2_id);
2379
- _for_of(repoRows, (row) => {
2380
- const $scope3_id = _scope_id();
2381
- _if(() => {
2382
- if (!hiddenByCollapse(row) && row.kind === "dir") {
2383
- const $scope4_id = _scope_id();
2384
- _html(`<button type=button${_attr_class(["_fi", { ["_fc"]: collapsedDirs.has(dirKey(row.path)) }])}${_attr("title", row.path)}${_attr_style(`padding-left:${.35 + row.depth * .75}rem`)}><span${_attr_class("_fo")}>${collapsedDirs.has(dirKey(row.path)) ? "▸" : "▾"}${_el_resume($scope4_id, "c")}</span>${_escape(row.label)}${_el_resume($scope4_id, "d", $sg__input_sections)}/</button>${_el_resume($scope4_id, "a")}`);
2385
- _script($scope4_id, "i5");
2386
- _subscribe($si__input_sections && $if_content__dirKey__closures, _subscribe($collapsedDirs__closures, writeScope($scope4_id, { Cae: 1 })));
2387
- return 0;
2388
- } else if (!hiddenByCollapse(row) && row.kind !== "dir") {
2389
- const $scope5_id = _scope_id();
2390
- _html(`<a${_attr("href", hrefFor(row.file.key))}${_attr_class(["_fk", { ["_fj"]: input.collapsedFiles?.has(row.file.key) }])}${input.collapsedFiles?.has(row.file.key) ? _attr("title", `${row.file.path} (folded — click to open)`) : _attr("title", row.file.path)}${_attr_style(`padding-left:${.5 + row.depth * .75}rem`)}><span${_attr_class("_fp")}${_attr("data-status", row.file.status)}>${_escape(row.file.status)}${_el_resume($scope5_id, "c", $sg__input_sections)}</span>${_el_resume($scope5_id, "b", $sg__input_sections)}<span${_attr_class("_fl")}>${_escape(row.name)}${_el_resume($scope5_id, "e", $sg__input_sections)}</span>`);
2391
- _if(() => {
2392
- if (newKeys.has(row.file.key)) {
2393
- const $scope7_id = _scope_id();
2394
- _html(`<span${_attr_class(["_w", "_fm"])} title="Changed since your last visit"></span>`);
2395
- _serialize_if($scope0_reason, 1) && writeScope($scope7_id, {});
2396
- return 0;
2397
- }
2398
- }, $scope5_id, "f", $sg__input_newKeys__OR__input_sections, $sg__input_newKeys__OR__input_sections, $sg__input_commentKeys__OR__input_newKeys__OR__input_sections, 0, 1);
2399
- _if(() => {
2400
- if (commentKeys.has(row.file.key)) {
2401
- const $scope8_id = _scope_id();
2402
- _html(`<span${_attr_class("_fn")}>💬</span>`);
2403
- _serialize_if($scope0_reason, 0) && writeScope($scope8_id, {});
2404
- return 0;
2405
- }
2406
- }, $scope5_id, "g", $sg__input_commentKeys__OR__input_sections, $sg__input_commentKeys__OR__input_sections, $sg__input_commentKeys__OR__input_newKeys__OR__input_sections, 0, 1);
2407
- _html(`</a>${_el_resume($scope5_id, "a", _serialize_guard($scope0_reason, 4))}`);
2408
- _subscribe($si__input_workspaceId__OR__input_scope && $hrefFor2__closures, _subscribe($si__input_newKeys && $newKeys__closures, _subscribe($si__input_commentKeys && $commentKeys__closures, _subscribe($si__input_collapsedFiles && $input_collapsedFiles__closures, writeScope($scope5_id, {})))));
2409
- return 1;
2410
- }
2411
- }, $scope3_id, "a", 1, 1, 1, 0, 1);
2412
- writeScope($scope3_id, {
2413
- c: row,
2414
- e: row?.path,
2415
- f: row?.depth,
2416
- g: row?.label,
2417
- i: row?.file?.key,
2418
- j: row?.file?.path,
2419
- k: row?.file?.status,
2420
- l: row?.name,
2421
- _: _scope_with_id($scope2_id)
2422
- });
2423
- }, (r) => r.kind === "dir" ? `d:${r.path}` : r.file.key, $scope2_id, "b", 1, $sg__input_sections, $sg__input_sections);
2424
- _show_end($scope2_id, "d", $show);
2425
- _subscribe($collapsedDirs__closures, _subscribe($collapsedRepos__closures, writeScope($scope2_id, {
2426
- f: dirKey,
2427
- g: rowDir,
2428
- i: $si__input_sections && hiddenByCollapse,
2429
- k: $si__input_sections && $if_content__dirKey__closures
2430
- })));
2461
+ const root = treeDirs(section.files);
2462
+ _html(`<div${_attr_class("_gb")}${_attr("hidden", collapsedRepos.has(section.id))}>`);
2463
+ _set_serialize_reason(1);
2464
+ const $childScope2 = _peek_scope_id();
2465
+ diff_tree_dir_default({
2466
+ dir: root,
2467
+ collapsed: collapsedDirs,
2468
+ collapsedKey: _resume((path) => `${section.id}/${path}`, "j2", $scope2_id),
2469
+ onToggleDir: _resume(function(dir) {
2470
+ const key = `${section.id}/${dir.path}`;
2471
+ const next = new Set(collapsedDirs);
2472
+ const collapsed = !next.delete(key);
2473
+ if (collapsed) next.add(key);
2474
+ collapsedDirs = next;
2475
+ input.onDirToggle?.(section.files.filter((f) => f.path.startsWith(`${dir.path}/`)).map((f) => f.key), collapsed);
2476
+ }, "j3", $scope2_id),
2477
+ hrefFor,
2478
+ collapsedFiles: input.collapsedFiles,
2479
+ commentKeys,
2480
+ newKeys
2481
+ });
2482
+ _html(`</div>${_el_resume($scope2_id, "a")}`);
2483
+ _subscribe($si__input_workspaceId__OR__input_scope && $hrefFor2__closures, _subscribe($si__input_newKeys && $newKeys__closures, _subscribe($si__input_commentKeys && $commentKeys__closures, _subscribe($collapsedDirs__closures, _subscribe($collapsedRepos__closures, _subscribe($si__input_collapsedFiles && $input_collapsedFiles__closures, _subscribe($si__input_onDirToggle && $input_onDirToggle__closures, writeScope($scope2_id, {
2484
+ d: root,
2485
+ b: _existing_scope($childScope2)
2486
+ }))))))));
2431
2487
  return 0;
2432
2488
  }
2433
- }, $scope1_id, "f");
2489
+ }, $scope1_id, "g", 1, 1, 1, 0, 1);
2434
2490
  _html("</div>");
2435
- _script($scope1_id, "i6");
2491
+ _script($scope1_id, "j4");
2436
2492
  writeScope($scope1_id, {
2437
- i: section?.id,
2438
- m: section?.files,
2493
+ j: section?.id,
2494
+ n: section?.files,
2439
2495
  _: _scope_with_id($scope0_id)
2440
2496
  });
2441
- }, "id", $scope0_id, "e", 1, $sg__input_sections, $sg__input_sections, 0, 1);
2442
- _html(`</aside>${_el_resume($scope0_id, "a", _serialize_guard($scope0_reason, 13))}`);
2497
+ }, "id", $scope0_id, "f", 1, $sg__input_sections, $sg__input_sections, 0, 1);
2498
+ _html(`</div></aside>${_el_resume($scope0_id, "a", _serialize_guard($scope0_reason, 9))}`);
2443
2499
  writeScope($scope0_id, {
2444
- h: _serialize_if($scope0_reason, 6) && input.collapsedRepos,
2445
- i: _serialize_if($scope0_reason, 5) && input.collapsedReposChange,
2446
- k: _serialize_if($scope0_reason, 8) && input.openedRepos,
2447
- l: _serialize_if($scope0_reason, 7) && input.openedReposChange,
2448
- n: _serialize_if($scope0_reason, 10) && input.filter,
2449
- o: _serialize_if($scope0_reason, 9) && input.filterChange,
2450
- s: input.workspaceId,
2451
- t: input.scope,
2452
- x: input.sections?.length,
2453
- y: input.onDirToggle,
2454
- z: input.collapsedFiles,
2455
- a0: collapsedRepos,
2456
- a2: openedRepos,
2457
- a4: _serialize_if($scope0_reason, 15) && filter,
2458
- a7: collapsedDirs,
2459
- a8: commentKeys,
2460
- a9: newKeys,
2461
- aa: hrefFor,
2462
- a1: input.collapsedReposChange || void 0,
2463
- a3: input.openedReposChange || void 0,
2464
- a5: input.filterChange || void 0,
2500
+ i: _serialize_if($scope0_reason, 2) && input.collapsedRepos,
2501
+ j: _serialize_if($scope0_reason, 1) && input.collapsedReposChange,
2502
+ l: _serialize_if($scope0_reason, 4) && input.openedRepos,
2503
+ m: _serialize_if($scope0_reason, 3) && input.openedReposChange,
2504
+ o: _serialize_if($scope0_reason, 6) && input.filter,
2505
+ p: _serialize_if($scope0_reason, 5) && input.filterChange,
2506
+ t: input.workspaceId,
2507
+ u: input.scope,
2508
+ y: input.sections?.length,
2509
+ z: input.onDirToggle,
2510
+ a0: input.collapsedFiles,
2511
+ a1: collapsedRepos,
2512
+ a3: openedRepos,
2513
+ a5: _serialize_if($scope0_reason, 11) && filter,
2514
+ a8: collapsedDirs,
2515
+ a9: commentKeys,
2516
+ aa: newKeys,
2517
+ ab: hrefFor,
2518
+ a2: input.collapsedReposChange || void 0,
2519
+ a4: input.openedReposChange || void 0,
2520
+ a6: input.filterChange || void 0,
2465
2521
  c: _existing_scope($childScope),
2466
- ae: $collapsedDirs__closures,
2467
- ab: $si__input_collapsedFiles && $input_collapsedFiles__closures,
2468
- af: $si__input_commentKeys && $commentKeys__closures,
2469
- ag: $si__input_newKeys && $newKeys__closures,
2470
- ah: $si__input_workspaceId__OR__input_scope && $hrefFor2__closures,
2471
- ac: $collapsedRepos__closures
2522
+ ac: $si__input_onDirToggle && $input_onDirToggle__closures,
2523
+ ad: $si__input_collapsedFiles && $input_collapsedFiles__closures,
2524
+ ae: $collapsedRepos__closures,
2525
+ ag: $collapsedDirs__closures,
2526
+ ah: $si__input_commentKeys && $commentKeys__closures,
2527
+ ai: $si__input_newKeys && $newKeys__closures,
2528
+ aj: $si__input_workspaceId__OR__input_scope && $hrefFor2__closures
2472
2529
  });
2473
2530
  _resume_branch($scope0_id);
2474
2531
  });
2475
2532
  //#endregion
2476
2533
  //#region src/tags/diff-file-sheet.marko
2477
2534
  var diff_file_sheet_default = _template("e", (input) => {
2478
- 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_commentKeys__OR__input_newKeys__OR__input_files = _serialize_guard($scope0_reason, 4), $sg__input_newKeys__OR__input_files = _serialize_guard($scope0_reason, 1), $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);
2535
+ 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);
2479
2536
  const $scope0_id = _scope_id();
2480
2537
  const $commentKeys__closures = /* @__PURE__ */ new Set();
2481
2538
  const $newKeys__closures = /* @__PURE__ */ new Set();
@@ -2491,78 +2548,113 @@ var diff_file_sheet_default = _template("e", (input) => {
2491
2548
  scope: input.scope ?? null,
2492
2549
  file: key
2493
2550
  }), "e0", $scope0_id);
2494
- const splitKey = _resume((key) => {
2495
- const slash = key.lastIndexOf("/");
2496
- return slash < 0 ? {
2497
- dir: "",
2498
- name: key
2499
- } : {
2500
- dir: key.slice(0, slash),
2501
- name: key.slice(slash + 1)
2502
- };
2503
- }, "e1");
2551
+ const groups = (() => {
2552
+ const out = [];
2553
+ const byRepo = /* @__PURE__ */ new Map();
2554
+ for (const file of input.files) {
2555
+ const slash = file.key.indexOf("/");
2556
+ const repo = file.key.slice(0, slash);
2557
+ const path = file.key.slice(slash + 1);
2558
+ const at = path.lastIndexOf("/");
2559
+ const dir = at < 0 ? "" : path.slice(0, at);
2560
+ const name = at < 0 ? path : path.slice(at + 1);
2561
+ let dirs = byRepo.get(repo);
2562
+ if (!dirs) {
2563
+ byRepo.set(repo, dirs = /* @__PURE__ */ new Map());
2564
+ out.push({
2565
+ repo,
2566
+ dirs: []
2567
+ });
2568
+ }
2569
+ let group = dirs.get(dir);
2570
+ if (!group) {
2571
+ dirs.set(dir, group = {
2572
+ dir,
2573
+ files: []
2574
+ });
2575
+ out[out.length - 1].dirs.push(group);
2576
+ }
2577
+ group.files.push({
2578
+ file,
2579
+ name
2580
+ });
2581
+ }
2582
+ return out;
2583
+ })();
2504
2584
  _if(() => {
2505
2585
  if (open) {
2506
2586
  const $scope1_id = _scope_id();
2507
- _html(`<div${_attr_class("_eL")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_eM")} role=dialog aria-label="Jump to file"><div${_attr_class("_eN")}><strong${_attr_class("_eK")}>Files</strong><span${_attr_class("_eO")}>${_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, "_eJ"])} title=Close aria-label=Close>`);
2587
+ _html(`<div${_attr_class("_e3")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_e4")} role=dialog aria-label="Jump to file"><div${_attr_class("_e5")}><strong${_attr_class("_e2")}>Files</strong><span${_attr_class("_e6")}>${_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, "_e1"])} title=Close aria-label=Close>`);
2508
2588
  icon_xmark_default({ size: 16 });
2509
- _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_eU")}>`);
2589
+ _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_fd")}>`);
2510
2590
  _set_serialize_reason(2);
2511
2591
  const $childScope = _peek_scope_id();
2512
2592
  file_filter_default({
2513
2593
  value: filter,
2514
2594
  valueChange: _resume((_new_filter) => {
2515
2595
  filter = _new_filter;
2516
- }, "e2", $scope1_id)
2596
+ }, "e1", $scope1_id)
2517
2597
  });
2518
- _html(`</div><div${_attr_class("_eP")}>`);
2519
- _for_of(input.files, (file) => {
2598
+ _html(`</div><div${_attr_class("_e7")}>`);
2599
+ _for_of(groups, (group) => {
2520
2600
  const $scope2_id = _scope_id();
2521
- const parts = splitKey(file.key);
2522
- _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_eQ", "_u"])}><span${_attr_class("_eX")}${_attr("data-status", file.status)}>${_escape(file.status)}${_el_resume($scope2_id, "c", $sg__input_files)}</span>${_el_resume($scope2_id, "b", $sg__input_files)}<span${_attr_class("_eR")}>`);
2523
- _if(() => {
2524
- if (parts.dir) {
2525
- const $scope3_id = _scope_id();
2526
- _html(`<span${_attr_class("_eS")}><bdi>${_escape(parts.dir)}${_el_resume($scope3_id, "b", $sg__input_files)}/</bdi></span>`);
2527
- $si__input_files && writeScope($scope3_id, { _: _scope_with_id($scope2_id) });
2528
- return 0;
2529
- }
2530
- }, $scope2_id, "e", $sg__input_files, $sg__input_files, $sg__input_commentKeys__OR__input_newKeys__OR__input_files, 0, 1);
2531
- _html(`<span${_attr_class("_eT")}><bdi>${_escape(parts.name)}${_el_resume($scope2_id, "g", $sg__input_files)}</bdi></span></span>`);
2532
- _if(() => {
2533
- if (newKeys.has(file.key)) {
2601
+ _html(`<div${_attr_class("_e8")}><div${_attr_class("_e9")}>${_escape(group.repo)}${_el_resume($scope2_id, "c", $sg__input_files)}</div>`);
2602
+ _for_of(group.dirs, ({ dir, files }) => {
2603
+ const $scope3_id = _scope_id();
2604
+ _html(`<div${_attr_class("_e_")}>`);
2605
+ _if(() => {
2606
+ if (dir) {
2607
+ const $scope5_id = _scope_id();
2608
+ _html(`<div${_attr_class("_fb")}${_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
+ $si__input_files && writeScope($scope5_id, { _: _scope_with_id($scope3_id) });
2610
+ return 0;
2611
+ }
2612
+ }, $scope3_id, "b", $sg__input_files, $sg__input_files, $sg__input_files, 0, 1);
2613
+ _for_of(files, ({ file, name }) => {
2534
2614
  const $scope4_id = _scope_id();
2535
- _html(`<span${_attr_class(["_w", "_eW"])} title="Changed since your last visit"></span>`);
2536
- _serialize_if($scope0_reason, 1) && writeScope($scope4_id, {});
2537
- return 0;
2538
- }
2539
- }, $scope2_id, "h", $sg__input_newKeys__OR__input_files, $sg__input_newKeys__OR__input_files, $sg__input_commentKeys__OR__input_newKeys__OR__input_files, 0, 1);
2540
- _if(() => {
2541
- if (commentKeys.has(file.key)) {
2542
- const $scope5_id = _scope_id();
2543
- _html("<span>💬</span>");
2544
- _serialize_if($scope0_reason, 0) && writeScope($scope5_id, {});
2545
- return 0;
2546
- }
2547
- }, $scope2_id, "i", $sg__input_commentKeys__OR__input_files, $sg__input_commentKeys__OR__input_files, $sg__input_commentKeys__OR__input_newKeys__OR__input_files, 0, 1);
2548
- _html(`</a>${_el_resume($scope2_id, "a")}`);
2549
- _script($scope2_id, "e3");
2550
- _subscribe($si__input_workspaceId__OR__input_scope && $hrefFor2__closures, _subscribe($si__input_newKeys && $newKeys__closures, _subscribe($si__input_commentKeys && $commentKeys__closures, writeScope($scope2_id, {
2551
- l: _serialize_if($scope0_reason, 5) && file?.key,
2552
- s: $si__input_files && parts?.dir,
2553
- _: _scope_with_id($scope1_id)
2554
- }))));
2555
- }, "key", $scope1_id, "m", $sg__input_files, $sg__input_files, $sg__input_files, 0, 1);
2615
+ _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_fa", "_x"])}><span${_attr_class("_fg")}${_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("_fc")}><bdi>${_escape(name)}${_el_resume($scope4_id, "e", $sg__input_files)}</bdi></span>`);
2616
+ _if(() => {
2617
+ if (newKeys.has(file.key)) {
2618
+ const $scope6_id = _scope_id();
2619
+ _html(`<span${_attr_class(["_z", "_ff"])} title="Changed since your last visit"></span>`);
2620
+ _serialize_if($scope0_reason, 1) && writeScope($scope6_id, {});
2621
+ return 0;
2622
+ }
2623
+ }, $scope4_id, "f", $sg__input_newKeys__OR__input_files, $sg__input_newKeys__OR__input_files, $sg__input_commentKeys__OR__input_newKeys__OR__input_files, 0, 1);
2624
+ _if(() => {
2625
+ if (commentKeys.has(file.key)) {
2626
+ const $scope7_id = _scope_id();
2627
+ _html("<span>💬</span>");
2628
+ _serialize_if($scope0_reason, 0) && writeScope($scope7_id, {});
2629
+ return 0;
2630
+ }
2631
+ }, $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
+ _html(`</a>${_el_resume($scope4_id, "a")}`);
2633
+ _script($scope4_id, "e2");
2634
+ _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
+ k: _serialize_if($scope0_reason, 5) && file?.key,
2636
+ _: _scope_with_id($scope3_id)
2637
+ }))));
2638
+ }, (f) => f.file.key, $scope3_id, "c", $sg__input_files, $sg__input_files, $sg__input_files, 0, 1);
2639
+ _html("</div>");
2640
+ writeScope($scope3_id, {
2641
+ f: $si__input_files && dir,
2642
+ _: _scope_with_id($scope2_id)
2643
+ });
2644
+ }, "dir", $scope2_id, "d", $sg__input_files, $sg__input_files, $sg__input_files, 0, 1);
2645
+ _html("</div>");
2646
+ writeScope($scope2_id, { _: _scope_with_id($scope1_id) });
2647
+ }, "repo", $scope1_id, "m", $sg__input_files, $sg__input_files, $sg__input_files, 0, 1);
2556
2648
  _if(() => {
2557
2649
  if (!input.files.length) {
2558
- const $scope6_id = _scope_id();
2559
- _html(`<p${_attr_class("_eV")}>No files match.</p>`);
2560
- $si__input_files_length && writeScope($scope6_id, {});
2650
+ const $scope8_id = _scope_id();
2651
+ _html(`<p${_attr_class("_fe")}>No files match.</p>`);
2652
+ $si__input_files_length && writeScope($scope8_id, {});
2561
2653
  return 0;
2562
2654
  }
2563
2655
  }, $scope1_id, "n", $sg__input_files_length, $sg__input_files_length, $sg__input_files_length, 0, 1);
2564
2656
  _html("</div></div>");
2565
- _script($scope1_id, "e4");
2657
+ _script($scope1_id, "e3");
2566
2658
  writeScope($scope1_id, { k: _existing_scope($childScope) });
2567
2659
  return 0;
2568
2660
  }
@@ -2573,7 +2665,6 @@ var diff_file_sheet_default = _template("e", (input) => {
2573
2665
  g: _serialize_if($scope0_reason, 9) && input.filter,
2574
2666
  h: _serialize_if($scope0_reason, 8) && input.filterChange,
2575
2667
  l: $si__input_files_length && input.total,
2576
- m: input.files,
2577
2668
  n: input.files?.length,
2578
2669
  p: input.workspaceId,
2579
2670
  q: input.scope,
@@ -2582,12 +2673,12 @@ var diff_file_sheet_default = _template("e", (input) => {
2582
2673
  x: newKeys,
2583
2674
  y: total,
2584
2675
  z: hrefFor,
2585
- a0: splitKey,
2676
+ a0: groups,
2586
2677
  t: input.openChange || void 0,
2587
2678
  v: input.filterChange || void 0,
2588
- a4: $si__input_commentKeys && $commentKeys__closures,
2589
- a5: $si__input_newKeys && $newKeys__closures,
2590
- a7: $si__input_workspaceId__OR__input_scope && $hrefFor2__closures
2679
+ a3: $si__input_commentKeys && $commentKeys__closures,
2680
+ a4: $si__input_newKeys && $newKeys__closures,
2681
+ a6: $si__input_workspaceId__OR__input_scope && $hrefFor2__closures
2591
2682
  });
2592
2683
  _resume_branch($scope0_id);
2593
2684
  });
@@ -2597,7 +2688,7 @@ var api;
2597
2688
  var getTermDims;
2598
2689
  var revealSearchHit;
2599
2690
  var setSearchPaint;
2600
- var diff_view_default = _template("j", (input) => {
2691
+ var diff_view_default = _template("k", (input) => {
2601
2692
  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);
2602
2693
  const $scope0_id = _scope_id();
2603
2694
  const $error__closures = /* @__PURE__ */ new Set();
@@ -2629,17 +2720,17 @@ var diff_view_default = _template("j", (input) => {
2629
2720
  let draft = null;
2630
2721
  let error = null;
2631
2722
  let loading = false;
2632
- let fileFilter = "";
2723
+ let fileFilter = diffFilter(input.workspaceId);
2633
2724
  const $filterChange = _resume((_new_fileFilter) => {
2634
2725
  fileFilter = _new_fileFilter;
2635
- }, "j1", $scope0_id);
2726
+ }, "k1", $scope0_id);
2636
2727
  let onlyNew = false;
2637
2728
  let scope$1 = input.scope ?? diffScope();
2638
2729
  let treeOpen = diffTreeOpen();
2639
2730
  let fileSheet = false;
2640
2731
  let findOpen = input.findOpen;
2641
2732
  let findTick = input.findTick || 0;
2642
- const findFocusRef = input.findFocusRef || { focus: _resume(function() {}, "j2") };
2733
+ const findFocusRef = input.findFocusRef || { focus: _resume(function() {}, "k2") };
2643
2734
  let findState = {
2644
2735
  query: "",
2645
2736
  hit: null,
@@ -2652,7 +2743,7 @@ var diff_view_default = _template("j", (input) => {
2652
2743
  for (const key of keys) if (collapsed) next.add(key);
2653
2744
  else next.delete(key);
2654
2745
  if (next.size !== collapsedFiles.size || [...next].some((k) => !collapsedFiles.has(k))) collapsedFiles = next;
2655
- }, "j3", $scope0_id);
2746
+ }, "k3", $scope0_id);
2656
2747
  let openedRepos = /* @__PURE__ */ new Set();
2657
2748
  let expandingRepos = /* @__PURE__ */ new Set();
2658
2749
  const nearBox = {
@@ -2693,7 +2784,7 @@ var diff_view_default = _template("j", (input) => {
2693
2784
  cb();
2694
2785
  }
2695
2786
  });
2696
- }, "j4", $scope0_id);
2787
+ }, "k4", $scope0_id);
2697
2788
  const pinToTop = _resume((el) => {
2698
2789
  const root = ((scrollEl) => scrollEl())(_el_read_error);
2699
2790
  if (!root) {
@@ -2702,7 +2793,7 @@ var diff_view_default = _template("j", (input) => {
2702
2793
  }
2703
2794
  const top = el.getBoundingClientRect().top - root.getBoundingClientRect().top + root.scrollTop;
2704
2795
  root.scrollTo({ top: Math.max(0, top - 8) });
2705
- }, "j5", $scope0_id);
2796
+ }, "k5", $scope0_id);
2706
2797
  const focusPrSection = _resume((pr) => {
2707
2798
  if (!pr) return;
2708
2799
  const list = repos || [];
@@ -2726,12 +2817,13 @@ var diff_view_default = _template("j", (input) => {
2726
2817
  pinToTop(el);
2727
2818
  };
2728
2819
  requestAnimationFrame(tryScroll);
2729
- }, "j6", $scope0_id);
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);
2730
2822
  const openFile = _resume((key) => {
2731
- const el = ((scrollEl) => scrollEl())(_el_read_error)?.querySelector(`details[data-key="${CSS.escape(key)}"]`);
2823
+ const el = findFile(key);
2732
2824
  if (el) el.open = true;
2733
2825
  return el;
2734
- }, "j7", $scope0_id);
2826
+ }, "k8", $scope0_id);
2735
2827
  const jumpTo = _resume((key) => {
2736
2828
  input.onFileChange?.(key);
2737
2829
  const started = Date.now();
@@ -2744,7 +2836,69 @@ var diff_view_default = _template("j", (input) => {
2744
2836
  if (Date.now() - started < 2500) requestAnimationFrame(tryJump);
2745
2837
  };
2746
2838
  tryJump();
2747
- }, "j8", $scope0_id);
2839
+ }, "k9", $scope0_id);
2840
+ const posBox = {
2841
+ anchor: null,
2842
+ raf: 0,
2843
+ run: 0
2844
+ };
2845
+ const anchorAt = _resume(() => {
2846
+ const root = ((scrollEl) => scrollEl())(_el_read_error);
2847
+ if (!root || !root.scrollTop) return null;
2848
+ const rootTop = root.getBoundingClientRect().top;
2849
+ let best = null;
2850
+ for (const el of root.querySelectorAll("details[data-key]")) {
2851
+ if (el.hidden) continue;
2852
+ const top = el.getBoundingClientRect().top;
2853
+ if (top > rootTop + 1) break;
2854
+ best = {
2855
+ scope: scope$1,
2856
+ key: el.dataset.key,
2857
+ off: Math.round(rootTop - top)
2858
+ };
2859
+ }
2860
+ return best;
2861
+ }, "k10", $scope0_id);
2862
+ const noteScroll = _resume(() => {
2863
+ if (posBox.raf) return;
2864
+ posBox.raf = requestAnimationFrame(() => {
2865
+ posBox.raf = 0;
2866
+ if (((scrollEl) => scrollEl())(_el_read_error)?.isConnected) posBox.anchor = anchorAt();
2867
+ });
2868
+ }, "k11", $scope0_id);
2869
+ const savePos = _resume(() => {
2870
+ if (repos) setDiffPos(input.workspaceId, posBox.anchor);
2871
+ }, "k12", $scope0_id);
2872
+ const restorePos = _resume((pos) => {
2873
+ const run = ++posBox.run;
2874
+ const started = Date.now();
2875
+ let pinnedAt = 0;
2876
+ const cancel = () => {
2877
+ if (posBox.run === run) posBox.run++;
2878
+ };
2879
+ const tick = () => {
2880
+ if (posBox.run !== run) return;
2881
+ const root = ((scrollEl) => scrollEl())(_el_read_error);
2882
+ const el = findFile(pos.key);
2883
+ if (root && el) {
2884
+ const drift = el.getBoundingClientRect().top - root.getBoundingClientRect().top + pos.off;
2885
+ if (Math.abs(drift) > 1) root.scrollTop += drift;
2886
+ if (!pinnedAt) {
2887
+ pinnedAt = Date.now();
2888
+ for (const type of [
2889
+ "wheel",
2890
+ "touchstart",
2891
+ "keydown"
2892
+ ]) root.addEventListener(type, cancel, {
2893
+ once: true,
2894
+ passive: true
2895
+ });
2896
+ }
2897
+ if (Date.now() - pinnedAt < 1500) requestAnimationFrame(tick);
2898
+ } else if (!pinnedAt && Date.now() - started < 2500) requestAnimationFrame(tick);
2899
+ };
2900
+ requestAnimationFrame(tick);
2901
+ }, "k13", $scope0_id);
2748
2902
  const headBox = {
2749
2903
  sig: "",
2750
2904
  timer: 0
@@ -2766,20 +2920,24 @@ var diff_view_default = _template("j", (input) => {
2766
2920
  headBox.sig = prHeadSigFromDiff(diffData);
2767
2921
  if (input.focusPr) focusPrSection(input.focusPr);
2768
2922
  else if (input.focusFile) jumpTo(input.focusFile);
2923
+ else if (!refresh && loadBox.seq === 1) {
2924
+ const pos = diffPos(input.workspaceId);
2925
+ if (pos && pos.scope === which) restorePos(pos);
2926
+ }
2769
2927
  } catch (err) {
2770
2928
  if (seq !== loadBox.seq) return;
2771
2929
  error = String(err.message || err);
2772
2930
  } finally {
2773
2931
  if (seq === loadBox.seq) loading = false;
2774
2932
  }
2775
- }, "j9", $scope0_id);
2933
+ }, "k14", $scope0_id);
2776
2934
  const setScope = _resume((next, persist = true) => {
2777
2935
  if (next === scope$1) return;
2778
2936
  scope$1 = next;
2779
2937
  if (persist) setDiffScope(next);
2780
2938
  input.onScopeChange?.(next);
2781
2939
  load(next);
2782
- }, "j10", $scope0_id);
2940
+ }, "k15", $scope0_id);
2783
2941
  const sendGate = { busy: 0 };
2784
2942
  const loadReview = _resume(async () => {
2785
2943
  if (sendGate.busy) return;
@@ -2788,15 +2946,15 @@ var diff_view_default = _template("j", (input) => {
2788
2946
  if (sendGate.busy) return;
2789
2947
  comments = reviewData.comments || [];
2790
2948
  } catch {}
2791
- }, "j11", $scope0_id);
2792
- const reload = _resume(() => load(scope$1, true), "j12", $scope0_id);
2949
+ }, "k16", $scope0_id);
2950
+ const reload = _resume(() => load(scope$1, true), "k17", $scope0_id);
2793
2951
  const reloadSoon = _resume(() => {
2794
2952
  if (headBox.timer) clearTimeout(headBox.timer);
2795
2953
  headBox.timer = setTimeout(() => {
2796
2954
  headBox.timer = 0;
2797
2955
  reload();
2798
2956
  }, 250);
2799
- }, "j13", $scope0_id);
2957
+ }, "k18", $scope0_id);
2800
2958
  const markSeen = _resume(() => {
2801
2959
  if (!repos) return;
2802
2960
  const heads = {};
@@ -2815,7 +2973,7 @@ var diff_view_default = _template("j", (input) => {
2815
2973
  }),
2816
2974
  keepalive: true
2817
2975
  }).catch(() => {});
2818
- }, "j14", $scope0_id);
2976
+ }, "k19", $scope0_id);
2819
2977
  const repoList = repos || [];
2820
2978
  const allFiles = repoList.flatMap((r) => r.files.map((f) => ({
2821
2979
  ...f,
@@ -2849,7 +3007,7 @@ var diff_view_default = _template("j", (input) => {
2849
3007
  }));
2850
3008
  const localDifferIds = new Set(repoList.filter((repo) => !!repo.pr && !!repo.localHead && (repo.localHead !== repo.head || repo.branch !== repo.pr.headRefName)).map((r) => r.id));
2851
3009
  const hasFiles = !repos || allFiles.length > 0;
2852
- const fileWorktree = _resume((repo) => repo.includes("#") ? repo.split("#")[0] : repo, "j15");
3010
+ const fileWorktree = _resume((repo) => repo.includes("#") ? repo.split("#")[0] : repo, "k20");
2853
3011
  const anchorFor = _resume((file, range) => {
2854
3012
  const section = repoList.find((r) => r.id === file.repo);
2855
3013
  const source = range.side === "deletions" ? file.old : file.new;
@@ -2857,7 +3015,7 @@ var diff_view_default = _template("j", (input) => {
2857
3015
  head: section?.head,
2858
3016
  snippet: source == null ? void 0 : quoteRange(source, range.start, range.end, range.side === "deletions" ? "deletions" : "additions")
2859
3017
  };
2860
- }, "j16", $scope0_id);
3018
+ }, "k21", $scope0_id);
2861
3019
  const saveComment = _resume(async (file, text) => {
2862
3020
  const range = draft;
2863
3021
  draft = null;
@@ -2881,16 +3039,16 @@ var diff_view_default = _template("j", (input) => {
2881
3039
  } catch (err) {
2882
3040
  error = String(err.message || err);
2883
3041
  }
2884
- }, "j17", $scope0_id);
3042
+ }, "k22", $scope0_id);
2885
3043
  const deleteRemote = _resume((ids) => ids === "all" ? fetch(`/api/workspaces/${input.workspaceId}/review`, {
2886
3044
  method: "POST",
2887
3045
  headers: { "content-type": "application/json" },
2888
3046
  body: JSON.stringify({ action: "clear" })
2889
- }) : Promise.all(ids.map((id) => fetch(`/api/workspaces/${input.workspaceId}/review/${id}`, { method: "DELETE" }))), "j18", $scope0_id);
3047
+ }) : Promise.all(ids.map((id) => fetch(`/api/workspaces/${input.workspaceId}/review/${id}`, { method: "DELETE" }))), "k23", $scope0_id);
2890
3048
  const removeComment = _resume(async (id) => {
2891
3049
  comments = comments.filter((c) => c.id !== id);
2892
3050
  await deleteRemote([id]).catch(() => {});
2893
- }, "j19", $scope0_id);
3051
+ }, "k24", $scope0_id);
2894
3052
  const dispatch = _resume(async (list, to, consume) => {
2895
3053
  if (!list.length) return true;
2896
3054
  sendGate.busy++;
@@ -2926,13 +3084,13 @@ var diff_view_default = _template("j", (input) => {
2926
3084
  } finally {
2927
3085
  sendGate.busy--;
2928
3086
  }
2929
- }, "j20", $scope0_id);
2930
- const copyMarkdown = _resume(() => dispatch(comments, { clipboard: true }, "all"), "j21", $scope0_id);
2931
- const sendTo = _resume((sessionId) => dispatch(comments, { session: sessionId }, "all"), "j22", $scope0_id);
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);
2932
3090
  const sendOneComment = _resume((id, sessionId) => {
2933
3091
  const comment = comments.find((c) => c.id === id);
2934
3092
  return comment ? dispatch([comment], { session: sessionId }, [id]) : Promise.resolve(false);
2935
- }, "j23", $scope0_id);
3093
+ }, "k28", $scope0_id);
2936
3094
  const sendDraftComment = _resume((file, text, sessionId) => {
2937
3095
  const range = draft;
2938
3096
  const trimmed = text.trim();
@@ -2950,12 +3108,12 @@ var diff_view_default = _template("j", (input) => {
2950
3108
  ...anchorFor(file, range)
2951
3109
  };
2952
3110
  return dispatch([one], { session: sessionId }, []);
2953
- }, "j24", $scope0_id);
3111
+ }, "k29", $scope0_id);
2954
3112
  const openFind = _resume(() => {
2955
3113
  findOpen = true;
2956
3114
  findTick++;
2957
3115
  findFocusRef.focus();
2958
- }, "j25", $scope0_id);
3116
+ }, "k30", $scope0_id);
2959
3117
  const onFindState = _resume((next) => {
2960
3118
  findState = next;
2961
3119
  if (!next.hit) return;
@@ -2970,7 +3128,7 @@ var diff_view_default = _template("j", (input) => {
2970
3128
  setSearchPaint(next.query, hit);
2971
3129
  revealSearchHit();
2972
3130
  }, 0);
2973
- }, "j26", $scope0_id);
3131
+ }, "k31", $scope0_id);
2974
3132
  const toggleSection = _resume((id) => {
2975
3133
  if (expandingRepos.has(id)) {
2976
3134
  const busy = new Set(expandingRepos);
@@ -3002,23 +3160,23 @@ var diff_view_default = _template("j", (input) => {
3002
3160
  openedRepos = /* @__PURE__ */ new Set([...openedRepos, id]);
3003
3161
  collapsedRepos = /* @__PURE__ */ new Set([...collapsedRepos, id]);
3004
3162
  }
3005
- }, "j27", $scope0_id);
3006
- _html(`<div${_attr_class("_c7")}><div${_attr_class("_db")}><div${_attr_class("_dc")}><div${_attr_class(["_dm", { ["_dl"]: !comments.length }])}>`);
3163
+ }, "k32", $scope0_id);
3164
+ _html(`<div${_attr_class("_dv")}><div${_attr_class("_dA")}><div${_attr_class("_dB")}><div${_attr_class(["_dL", { ["_dK"]: !comments.length }])}>`);
3007
3165
  _if(() => {
3008
3166
  if (input.onExit) {
3009
3167
  const $scope1_id = _scope_id();
3010
- _html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "_dd"])} title="Back to terminal (Esc)">`);
3168
+ _html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "_dC"])} title="Back to terminal (Esc)">`);
3011
3169
  icon_back_default({ size: 14 });
3012
- _html(`</a>${_el_resume($scope1_id, "a", _serialize_guard($scope0_reason, 3))}`);
3013
- _serialize_if($scope0_reason, 0) && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 3) && _scope_with_id($scope0_id) });
3170
+ _html(`</a>${_el_resume($scope1_id, "a", _serialize_guard($scope0_reason, 1))}`);
3171
+ _serialize_if($scope0_reason, 0) && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 1) && _scope_with_id($scope0_id) });
3014
3172
  return 0;
3015
3173
  }
3016
3174
  }, $scope0_id, "e", _serialize_guard($scope0_reason, 0), _serialize_guard($scope0_reason, 4), 1, 0, 1);
3017
- _html(`<h1${_attr_class("_dg")}>Review</h1>`);
3175
+ _html(`<h1${_attr_class("_dF")}>Review</h1>`);
3018
3176
  _if(() => {
3019
3177
  if (comments.length) {
3020
3178
  const $scope5_id = _scope_id();
3021
- _html(`<span${_attr_class("_df")}>${_escape(comments.length)}${_el_resume($scope5_id, "b")} comment<!>${comments.length === 1 ? "" : "s"}${_el_resume($scope5_id, "c")}</span>`);
3179
+ _html(`<span${_attr_class("_dE")}>${_escape(comments.length)}${_el_resume($scope5_id, "b")} comment<!>${comments.length === 1 ? "" : "s"}${_el_resume($scope5_id, "c")}</span>`);
3022
3180
  writeScope($scope5_id, {});
3023
3181
  return 0;
3024
3182
  }
@@ -3026,7 +3184,7 @@ var diff_view_default = _template("j", (input) => {
3026
3184
  _if(() => {
3027
3185
  if (comments.length) {
3028
3186
  const $scope2_id = _scope_id();
3029
- _html(`<span${_attr_class("_de")}>`);
3187
+ _html(`<span${_attr_class("_dD")}>`);
3030
3188
  _set_serialize_reason(_serialize_guard($scope0_reason, 5));
3031
3189
  const $childScope = _peek_scope_id();
3032
3190
  diff_send_default({
@@ -3039,46 +3197,46 @@ var diff_view_default = _template("j", (input) => {
3039
3197
  return 0;
3040
3198
  }
3041
3199
  }, $scope0_id, "h", 1, 1, 1, 0, 1);
3042
- _html(`</div>${_el_resume($scope0_id, "d")}<div${_attr_class("_da")}>`);
3200
+ _html(`</div>${_el_resume($scope0_id, "d")}<div${_attr_class("_dz")}>`);
3043
3201
  _if(() => {
3044
3202
  if (hasFiles) {
3045
3203
  const $scope12_id = _scope_id();
3046
3204
  _html(`<button${_attr_class([
3047
3205
  treeToggle,
3048
- "_c9",
3049
- { ["_c8"]: treeOpen }
3206
+ "_dx",
3207
+ { ["_dw"]: treeOpen }
3050
3208
  ])} title=${treeOpen ? "\"Hide file tree\"" : "\"Show file tree\""}>`);
3051
3209
  icon_sidebar_default({ size: 14 });
3052
3210
  _html(`</button>${_el_resume($scope12_id, "a")}`);
3053
- _script($scope12_id, "j45");
3211
+ _script($scope12_id, "k50");
3054
3212
  writeScope($scope12_id, {});
3055
3213
  return 0;
3056
3214
  }
3057
3215
  }, $scope0_id, "j", 1, 1, 1, 0, 1);
3058
- _html(`<button${_attr_class([iconBtnRow, "_c9"])} title="Refresh diff"${_attr("disabled", loading)}>`);
3216
+ _html(`<button${_attr_class([iconBtnRow, "_dx"])} title="Refresh diff"${_attr("disabled", loading)}>`);
3059
3217
  _set_serialize_reason(1);
3060
3218
  const $childScope2 = _peek_scope_id();
3061
3219
  icon_refresh_default({
3062
3220
  size: 14,
3063
- class: loading && "_B"
3221
+ class: loading && "_E"
3064
3222
  });
3065
3223
  _html(`</button>${_el_resume($scope0_id, "k")}`);
3066
3224
  _if(() => {
3067
3225
  if (hasFiles) {
3068
3226
  const $scope13_id = _scope_id();
3069
- _html(`<button${_attr_class(["_l", "_dy"])} title="Jump to file">Files (<!>${_escape(shownFiles.length)}${_el_resume($scope13_id, "b")})</button>${_el_resume($scope13_id, "a")}`);
3070
- _script($scope13_id, "j46");
3227
+ _html(`<button${_attr_class(["_o", "_dX"])} title="Jump to file">Files (<!>${_escape(shownFiles.length)}${_el_resume($scope13_id, "b")})</button>${_el_resume($scope13_id, "a")}`);
3228
+ _script($scope13_id, "k51");
3071
3229
  writeScope($scope13_id, {});
3072
3230
  return 0;
3073
3231
  }
3074
3232
  }, $scope0_id, "m", 1, 1, 1, 0, 1);
3075
- _html(`<div${_attr_class("_dn")} role=group aria-label="Review scope"><button type=button${_attr_class(["_dp", { ["_do"]: 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(["_dp", { ["_do"]: 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(["_dp", { ["_do"]: 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(["_j", "_dq"])}>`);
3233
+ _html(`<div${_attr_class("_dM")} role=group aria-label="Review scope"><button type=button${_attr_class(["_dO", { ["_dN"]: 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(["_dO", { ["_dN"]: 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(["_dO", { ["_dN"]: 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", "_dP"])}>`);
3076
3234
  _attr_select_value($scope0_id, "s", scope$1, _resume(function(v) {
3077
3235
  setScope(v);
3078
- }, "j0", $scope0_id), () => {
3079
- _html(`<select${_attr_class(["_k", "_dr"])} 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>`);
3236
+ }, "k0", $scope0_id), () => {
3237
+ _html(`<select${_attr_class(["_n", "_dQ"])} 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>`);
3080
3238
  });
3081
- _html(`${_el_resume($scope0_id, "s")}</span><div${_attr_class(["_dj", { ["_di"]: !findOpen }])}>`);
3239
+ _html(`${_el_resume($scope0_id, "s")}</span><div${_attr_class(["_dI", { ["_dH"]: !findOpen }])}>`);
3082
3240
  _set_serialize_reason(2);
3083
3241
  const $childScope3 = _peek_scope_id();
3084
3242
  diff_find_default({
@@ -3087,11 +3245,11 @@ var diff_view_default = _template("j", (input) => {
3087
3245
  open: findOpen,
3088
3246
  openChange: _resume((_new_findOpen) => {
3089
3247
  findOpen = _new_findOpen;
3090
- }, "j28", $scope0_id),
3248
+ }, "k33", $scope0_id),
3091
3249
  focusRef: findFocusRef,
3092
3250
  stateChange: _resume(function(s) {
3093
3251
  onFindState(s);
3094
- }, "j29", $scope0_id)
3252
+ }, "k34", $scope0_id)
3095
3253
  });
3096
3254
  _html(`</div>${_el_resume($scope0_id, "t")}`);
3097
3255
  _if(() => {
@@ -3099,25 +3257,25 @@ var diff_view_default = _template("j", (input) => {
3099
3257
  const $scope14_id = _scope_id();
3100
3258
  _html(`<button${_attr_class([
3101
3259
  iconBtnRow,
3102
- "_dh",
3103
- "_c9"
3260
+ "_dG",
3261
+ "_dx"
3104
3262
  ])} title="Find in review (⌘/Ctrl+F)" aria-label="Find in review"${_attr("hidden", findOpen)}>`);
3105
3263
  icon_search_default({ size: 14 });
3106
3264
  _html(`</button>${_el_resume($scope14_id, "a")}`);
3107
- _script($scope14_id, "j47");
3265
+ _script($scope14_id, "k52");
3108
3266
  writeScope($scope14_id, {});
3109
3267
  return 0;
3110
3268
  }
3111
3269
  }, $scope0_id, "v", 1, 1, 1, 0, 1);
3112
- _html(`</div></div><div${_attr_class("_dk")} data-diff-main>`);
3270
+ _html(`</div></div><div${_attr_class("_dJ")} data-diff-main>`);
3113
3271
  _if(() => {
3114
3272
  if (error) {
3115
3273
  const $scope6_id = _scope_id();
3116
3274
  toast_default({
3117
3275
  onDismiss: _resume(function() {
3118
3276
  error = null;
3119
- }, "j30", $scope6_id),
3120
- content: _content_resume("j48", () => {
3277
+ }, "k35", $scope6_id),
3278
+ content: _content_resume("k53", () => {
3121
3279
  _scope_reason();
3122
3280
  const $scope7_id = _scope_id();
3123
3281
  _html(`${_escape(error)}${_el_resume($scope7_id, "a")}`);
@@ -3132,7 +3290,7 @@ var diff_view_default = _template("j", (input) => {
3132
3290
  _if(() => {
3133
3291
  if (!repos && loading) {
3134
3292
  const $scope15_id = _scope_id();
3135
- _html(`<div${_attr_class("_dt")} aria-hidden=true><div${_attr_class(["_du", "_dv"])}></div><div${_attr_class(["_du", "_dw"])}></div><div${_attr_class(["_du", "_dx"])}></div><div${_attr_class(["_du", "_dw"])}></div><div${_attr_class(["_du", "_dx"])}></div></div>`);
3293
+ _html(`<div${_attr_class("_dS")} aria-hidden=true><div${_attr_class(["_dT", "_dU"])}></div><div${_attr_class(["_dT", "_dV"])}></div><div${_attr_class(["_dT", "_dW"])}></div><div${_attr_class(["_dT", "_dV"])}></div><div${_attr_class(["_dT", "_dW"])}></div></div>`);
3136
3294
  writeScope($scope15_id, {});
3137
3295
  return 0;
3138
3296
  }
@@ -3146,7 +3304,7 @@ var diff_view_default = _template("j", (input) => {
3146
3304
  kind: "warn",
3147
3305
  placement: "inline",
3148
3306
  title: `${repo.worktree}: base not found`,
3149
- content: _content_resume("j49", () => {
3307
+ content: _content_resume("k54", () => {
3150
3308
  _scope_reason();
3151
3309
  const $scope10_id = _scope_id();
3152
3310
  _html(`${_escape(repo.base)}${_el_resume($scope10_id, "a")}<!>${scope$1 !== "committed" ? ", showing uncommitted changes only" : ""}${_el_resume($scope10_id, "b")}.`);
@@ -3163,12 +3321,12 @@ var diff_view_default = _template("j", (input) => {
3163
3321
  _if(() => {
3164
3322
  if (repos && !allFiles.length) {
3165
3323
  const $scope11_id = _scope_id();
3166
- _html(`<p${_attr_class("_bB")}>${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>`);
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>`);
3167
3325
  writeScope($scope11_id, {});
3168
3326
  return 0;
3169
3327
  } else if (repos && !shownFiles.length && !findState.hit) {
3170
3328
  const $scope8_id = _scope_id();
3171
- _html(`<p${_attr_class("_bB")}>${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>`);
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>`);
3172
3330
  writeScope($scope8_id, {});
3173
3331
  return 1;
3174
3332
  }
@@ -3191,14 +3349,14 @@ var diff_view_default = _template("j", (input) => {
3191
3349
  opened: openedRepos.has(repo.id),
3192
3350
  onToggle: _resume(function() {
3193
3351
  toggleSection(repo.id);
3194
- }, "j31", $scope4_id),
3352
+ }, "k36", $scope4_id),
3195
3353
  workspaceBranch: input.workspaceBranch || "",
3196
3354
  workspaceName: input.workspaceName || "",
3197
3355
  localDiffers: localDifferIds.has(repo.id),
3198
3356
  onlyNew,
3199
3357
  onToggleNew: _resume(function() {
3200
3358
  onlyNew = !onlyNew;
3201
- }, "j32", $scope4_id),
3359
+ }, "k37", $scope4_id),
3202
3360
  onReload: reload,
3203
3361
  loading,
3204
3362
  findHit: findState.hit,
@@ -3209,7 +3367,7 @@ var diff_view_default = _template("j", (input) => {
3209
3367
  collapsedFiles,
3210
3368
  onFileToggle: _resume(function(key, open) {
3211
3369
  setFilesCollapsed([key], !open);
3212
- }, "j33", $scope4_id),
3370
+ }, "k38", $scope4_id),
3213
3371
  onSelect: _resume(function(file, range) {
3214
3372
  draft = {
3215
3373
  key: file.key,
@@ -3217,25 +3375,25 @@ var diff_view_default = _template("j", (input) => {
3217
3375
  start: Math.min(range.start, range.end),
3218
3376
  end: Math.max(range.start, range.end)
3219
3377
  };
3220
- }, "j34", $scope4_id),
3378
+ }, "k39", $scope4_id),
3221
3379
  onSaveComment: _resume(function(file, text) {
3222
3380
  saveComment(file, text);
3223
- }, "j35", $scope4_id),
3381
+ }, "k40", $scope4_id),
3224
3382
  onSendDraft: _resume(function(file, text, sessionId) {
3225
3383
  sendDraftComment(file, text, sessionId);
3226
- }, "j36", $scope4_id),
3384
+ }, "k41", $scope4_id),
3227
3385
  onCancelDraft: _resume(function() {
3228
3386
  draft = null;
3229
- }, "j37", $scope4_id),
3387
+ }, "k42", $scope4_id),
3230
3388
  onDeleteComment: _resume(function(id) {
3231
3389
  removeComment(id);
3232
- }, "j38", $scope4_id),
3390
+ }, "k43", $scope4_id),
3233
3391
  onSendComment: _resume(function(id, sessionId) {
3234
3392
  sendOneComment(id, sessionId);
3235
- }, "j39", $scope4_id),
3393
+ }, "k44", $scope4_id),
3236
3394
  onError: _resume(function(message) {
3237
3395
  error = message;
3238
- }, "j40", $scope4_id)
3396
+ }, "k45", $scope4_id)
3239
3397
  });
3240
3398
  _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) })))))))))))))))))))))));
3241
3399
  return 0;
@@ -3247,7 +3405,7 @@ var diff_view_default = _template("j", (input) => {
3247
3405
  });
3248
3406
  }, "id", $scope0_id, "a1");
3249
3407
  _html(`</div>${_el_resume($scope0_id, "w")}</div>`);
3250
- _set_serialize_reason(259454);
3408
+ _set_serialize_reason(32598);
3251
3409
  const $childScope6 = _peek_scope_id();
3252
3410
  diff_tree_default({
3253
3411
  open: treeOpen,
@@ -3257,17 +3415,17 @@ var diff_view_default = _template("j", (input) => {
3257
3415
  collapsedRepos,
3258
3416
  collapsedReposChange: _resume((_new_collapsedRepos) => {
3259
3417
  collapsedRepos = _new_collapsedRepos;
3260
- }, "j41", $scope0_id),
3418
+ }, "k46", $scope0_id),
3261
3419
  openedRepos,
3262
3420
  openedReposChange: _resume((_new_openedRepos) => {
3263
3421
  openedRepos = _new_openedRepos;
3264
- }, "j42", $scope0_id),
3422
+ }, "k47", $scope0_id),
3265
3423
  commentKeys,
3266
3424
  newKeys,
3267
3425
  collapsedFiles,
3268
3426
  onDirToggle: _resume(function(keys, collapsed) {
3269
3427
  setFilesCollapsed(keys, collapsed);
3270
- }, "j43", $scope0_id),
3428
+ }, "k48", $scope0_id),
3271
3429
  workspaceId: input.workspaceId,
3272
3430
  scope: scope$1
3273
3431
  });
@@ -3277,7 +3435,7 @@ var diff_view_default = _template("j", (input) => {
3277
3435
  open: fileSheet,
3278
3436
  openChange: _resume((_new_fileSheet) => {
3279
3437
  fileSheet = _new_fileSheet;
3280
- }, "j44", $scope0_id),
3438
+ }, "k49", $scope0_id),
3281
3439
  files: shownFiles,
3282
3440
  filter: fileFilter,
3283
3441
  filterChange: $filterChange,
@@ -3288,17 +3446,18 @@ var diff_view_default = _template("j", (input) => {
3288
3446
  scope: scope$1
3289
3447
  });
3290
3448
  _html("</div>");
3291
- _script($scope0_id, "j50");
3292
- _script($scope0_id, "j51");
3293
- _script($scope0_id, "j52");
3294
- _script($scope0_id, "j53");
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");
3295
3454
  writeScope($scope0_id, {
3296
- a6: input.scope,
3297
- a7: _serialize_if($scope0_reason, 2) && input.findOpen,
3298
- a8: _serialize_if($scope0_reason, 1) && input.findOpenChange,
3299
- aa: input.findTick,
3300
- ac: input.onFileChange,
3301
- ad: input.workspaceId,
3455
+ a6: input.workspaceId,
3456
+ a7: input.scope,
3457
+ a8: _serialize_if($scope0_reason, 3) && input.findOpen,
3458
+ a9: _serialize_if($scope0_reason, 2) && input.findOpenChange,
3459
+ ab: input.findTick,
3460
+ ad: input.onFileChange,
3302
3461
  ae: input.focusPr,
3303
3462
  af: input.focusFile,
3304
3463
  ag: input.onScopeChange,
@@ -3316,90 +3475,98 @@ var diff_view_default = _template("j", (input) => {
3316
3475
  au: error,
3317
3476
  av: loading,
3318
3477
  ax: fileFilter,
3319
- az: onlyNew,
3320
- b0: scope$1,
3321
- b1: treeOpen,
3322
- b3: findOpen,
3323
- b5: findTick,
3324
- b7: findFocusRef,
3325
- ba: findState?.query,
3326
- bc: findState?.hit,
3327
- bd: findState?.hit?.key,
3328
- be: collapsedRepos,
3329
- bf: collapsedFiles,
3330
- bg: setFilesCollapsed,
3331
- bh: openedRepos,
3332
- bi: expandingRepos,
3333
- bl: nearBox.cbs,
3334
- bm: nearBox.io,
3335
- bn: nearBox.root,
3336
- bp: observeNear,
3337
- bq: pinToTop,
3338
- bs: focusPrSection,
3339
- bt: openFile,
3340
- bw: jumpTo,
3341
- by: headBox.sig,
3342
- bz: headBox.timer,
3343
- c1: loadBox.seq,
3344
- c3: load,
3345
- c6: setScope,
3346
- c9: sendGate.busy,
3347
- cb: loadReview,
3348
- cc: reload,
3349
- ce: reloadSoon,
3350
- cf: markSeen,
3351
- ch: repoList,
3352
- ci: repoList.length,
3353
- cj: allFiles,
3354
- cl: allFiles?.length,
3355
- cm: fileFiltered,
3356
- cn: findKeys,
3357
- cr: shownFiles?.length,
3358
- ct: shownKeySet,
3359
- cv: filesByRepo,
3360
- cy: commentsByFile,
3361
- d1: localDifferIds,
3362
- d2: hasFiles,
3363
- d3: fileWorktree,
3364
- d4: anchorFor,
3365
- d6: saveComment,
3366
- d7: deleteRemote,
3367
- da: removeComment,
3368
- db: dispatch,
3369
- de: copyMarkdown,
3370
- df: sendTo,
3371
- dg: sendOneComment,
3372
- dh: sendDraftComment,
3373
- di: openFind,
3374
- dk: onFindState,
3375
- dl: toggleSection,
3376
- b4: input.findOpenChange || void 0,
3478
+ b0: onlyNew,
3479
+ b1: scope$1,
3480
+ b2: treeOpen,
3481
+ b4: findOpen,
3482
+ b6: findTick,
3483
+ b8: findFocusRef,
3484
+ bb: findState?.query,
3485
+ bd: findState?.hit,
3486
+ be: findState?.hit?.key,
3487
+ bf: collapsedRepos,
3488
+ bg: collapsedFiles,
3489
+ bh: setFilesCollapsed,
3490
+ bi: openedRepos,
3491
+ bj: expandingRepos,
3492
+ bm: nearBox.cbs,
3493
+ bn: nearBox.io,
3494
+ bo: nearBox.root,
3495
+ bq: observeNear,
3496
+ 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,
3524
+ d4: shownFiles?.length,
3525
+ 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,
3543
+ b5: input.findOpenChange || void 0,
3377
3544
  l: _existing_scope($childScope2),
3378
3545
  u: _existing_scope($childScope3),
3379
- ds: $error__closures,
3380
- dw: $scope__closures,
3381
- dn: $si__input_sessions && $input_sessions__closures,
3382
- do: $si__input_workspaceBranch && $input_workspaceBranch__closures,
3383
- dp: $si__input_workspaceName && $input_workspaceName__closures,
3384
- dr: $draft__closures,
3385
- dt: $loading__closures,
3386
- dv: $onlyNew__closures,
3387
- e0: $findState_hit__closures,
3388
- e1: $collapsedRepos__closures,
3389
- e2: $collapsedFiles__closures,
3390
- e3: $setFilesCollapsed2__closures,
3391
- e4: $openedRepos__closures,
3392
- e5: $expandingRepos__closures,
3393
- e7: $reload2__closures,
3394
- e9: $repoList_length__closures,
3395
- eb: $shownKeySet__closures,
3396
- ed: $commentsByFile__closures,
3397
- ee: $localDifferIds__closures,
3398
- eg: $saveComment2__closures,
3399
- eh: $removeComment2__closures,
3400
- ek: $sendOneComment2__closures,
3401
- el: $sendDraftComment2__closures,
3402
- em: $toggleSection2__closures,
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,
3403
3570
  a2: _existing_scope($childScope6),
3404
3571
  a3: _existing_scope($childScope7)
3405
3572
  });