@dylanpiercey/work 0.0.70 → 0.0.72

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 (246) hide show
  1. package/dist/{_DgDsZuoQ.js → _BfXE8Kjn.js} +191 -9
  2. package/dist/_DLxkSyzt.js +2 -0
  3. package/dist/{_B-dzDH9Z.js → _DXDmuFjC.js} +44 -44
  4. package/dist/{_AOPS87VY.js → _Dq5wZ9y2.js} +2 -2
  5. package/dist/index.mjs +331 -233
  6. package/dist/public/assets/{_BM3WaJrl2.js → _-G0Dx3t52.js} +1 -1
  7. package/dist/public/assets/_-G0Dx3t52.js.br +0 -0
  8. package/dist/public/assets/{_Ce5PUr__2.js → _B-xEEN4l2.js} +1 -1
  9. package/dist/public/assets/{_D1ZMPYoI2.js → _B0-ns0BU2.js} +1 -1
  10. package/dist/public/assets/_B0-ns0BU2.js.br +0 -0
  11. package/dist/public/assets/{_MFSKg2Wj.js → _B5x1OTTu.js} +1 -1
  12. package/dist/public/assets/_B5x1OTTu.js.br +0 -0
  13. package/dist/public/assets/{_DP-0321c.js → _B61wm226.js} +1 -1
  14. package/dist/public/assets/_B61wm226.js.br +0 -0
  15. package/dist/public/assets/{_vW-7Ai-v.js → _B7OMjNs8.js} +1 -1
  16. package/dist/public/assets/_B7OMjNs8.js.br +0 -0
  17. package/dist/public/assets/{_DRzPr12K.js → _B7vLPjLl.js} +1 -1
  18. package/dist/public/assets/_B7vLPjLl.js.br +0 -0
  19. package/dist/public/assets/{_ChzC-M8b.js → _B7vYPsWj.js} +1 -1
  20. package/dist/public/assets/_B7vYPsWj.js.br +0 -0
  21. package/dist/public/assets/{_B7R_FSi52.js → _BBWg58GJ2.js} +1 -1
  22. package/dist/public/assets/_BBWg58GJ2.js.br +0 -0
  23. package/dist/public/assets/{_CP9QfGt02.js → _BE8lov_p2.js} +1 -1
  24. package/dist/public/assets/_BE8lov_p2.js.br +0 -0
  25. package/dist/public/assets/{_astyk4W8.js → _BGhBZpWT.js} +1 -1
  26. package/dist/public/assets/_BGhBZpWT.js.br +0 -0
  27. package/dist/public/assets/{_sRXHGNUn.js → _BKTem58K.js} +1 -1
  28. package/dist/public/assets/_BKTem58K.js.br +0 -0
  29. package/dist/public/assets/{_B_hrJVb02.js → _BLZtgkbJ2.js} +1 -1
  30. package/dist/public/assets/_BLZtgkbJ2.js.br +0 -0
  31. package/dist/public/assets/{_Ve3NFPam2.js → _BOQrg7gU2.js} +1 -1
  32. package/dist/public/assets/_BOQrg7gU2.js.br +0 -0
  33. package/dist/public/assets/{_C178aaRj.js → _BRzgmRS2.js} +1 -1
  34. package/dist/public/assets/_BRzgmRS2.js.br +0 -0
  35. package/dist/public/assets/{_CCwzIksI.js → _BSSf-PYx.js} +1 -1
  36. package/dist/public/assets/_BSSf-PYx.js.br +0 -0
  37. package/dist/public/assets/{_2jwfRZNX2.js → _BTXq-nPh2.js} +1 -1
  38. package/dist/public/assets/_BTXq-nPh2.js.br +0 -0
  39. package/dist/public/assets/{_Cnkj8G8x.js → _BUs7NMrG.js} +1 -1
  40. package/dist/public/assets/_BUs7NMrG.js.br +0 -0
  41. package/dist/public/assets/{_CieMd70P.js → _BXzRffYj.js} +1 -1
  42. package/dist/public/assets/_BXzRffYj.js.br +0 -0
  43. package/dist/public/assets/{_DK9AWQX8.js → _B_OOMZsL.js} +1 -1
  44. package/dist/public/assets/_B_OOMZsL.js.br +0 -0
  45. package/dist/public/assets/{_DFXWJj8u.js → _BdVRHt6-.js} +1 -1
  46. package/dist/public/assets/_BdVRHt6-.js.br +0 -0
  47. package/dist/public/assets/{_CZSK2PpM2.js → _Bj5u_Vnk2.js} +1 -1
  48. package/dist/public/assets/_Bj5u_Vnk2.js.br +0 -0
  49. package/dist/public/assets/{_vJB03LvX2.js → _BkrDGdOx2.js} +1 -1
  50. package/dist/public/assets/_BkrDGdOx2.js.br +0 -0
  51. package/dist/public/assets/{_DsxkxJ9M.js → _Bohi4mUp.js} +1 -1
  52. package/dist/public/assets/_Bohi4mUp.js.br +0 -0
  53. package/dist/public/assets/{_DgW7RRes2.js → _BpJS3XpY2.js} +1 -1
  54. package/dist/public/assets/_BpJS3XpY2.js.br +0 -0
  55. package/dist/public/assets/_BqE48K5c.js +85 -0
  56. package/dist/public/assets/_BqE48K5c.js.br +0 -0
  57. package/dist/public/assets/{_BVOP1Gxw2.js → _C-uc9hBA2.js} +1 -1
  58. package/dist/public/assets/_C-uc9hBA2.js.br +0 -0
  59. package/dist/public/assets/{_CF4WUrOg2.js → _C41DPP-z2.js} +1 -1
  60. package/dist/public/assets/_C41DPP-z2.js.br +0 -0
  61. package/dist/public/assets/{_DoD7JLuh2.js → _C5VLAw4k2.js} +1 -1
  62. package/dist/public/assets/_C5VLAw4k2.js.br +0 -0
  63. package/dist/public/assets/{_D5nI5TU0.js → _C82GEkZ4.js} +1 -1
  64. package/dist/public/assets/_C82GEkZ4.js.br +0 -0
  65. package/dist/public/assets/{_BriDrk1l.js → _CH2m75uw.js} +1 -1
  66. package/dist/public/assets/_CH2m75uw.js.br +0 -0
  67. package/dist/public/assets/{_C8xwneiR.js → _CNClKCWp.js} +1 -1
  68. package/dist/public/assets/_CNClKCWp.js.br +0 -0
  69. package/dist/public/assets/{_DsU-Nm-J.js → _COZ91m9B.js} +1 -1
  70. package/dist/public/assets/_COZ91m9B.js.br +0 -0
  71. package/dist/public/assets/{_DSW7pXqz.js → _CTQouXRe.js} +1 -1
  72. package/dist/public/assets/_CTQouXRe.js.br +0 -0
  73. package/dist/public/assets/{_uCHmU2W8.js → _CV60RHGa.js} +1 -1
  74. package/dist/public/assets/_CV60RHGa.js.br +0 -0
  75. package/dist/public/assets/{_BUuMdUVD.js → _CWUF1FpI.js} +1 -1
  76. package/dist/public/assets/_CWUF1FpI.js.br +0 -0
  77. package/dist/public/assets/{_B1dK1Qzq2.js → _CYgKydU62.js} +1 -1
  78. package/dist/public/assets/_CYgKydU62.js.br +0 -0
  79. package/dist/public/assets/{_DkIPVGH_2.js → _CfjckiVM2.js} +1 -1
  80. package/dist/public/assets/_CfjckiVM2.js.br +0 -0
  81. package/dist/public/assets/{_SYogbY_o.js → _ChkNS16f.js} +1 -1
  82. package/dist/public/assets/_ChkNS16f.js.br +0 -0
  83. package/dist/public/assets/{_D70dHsK5.js → _CifL_Zbh.js} +1 -1
  84. package/dist/public/assets/_CifL_Zbh.js.br +0 -0
  85. package/dist/public/assets/{_NUfAwX-92.js → _CivjiEX92.js} +1 -1
  86. package/dist/public/assets/_CivjiEX92.js.br +0 -0
  87. package/dist/public/assets/{_DIIVUEO6.js → _Clv6arvL.js} +1 -1
  88. package/dist/public/assets/_Clv6arvL.js.br +0 -0
  89. package/dist/public/assets/{_DwMRIbNQ2.js → _CnIE6_qB2.js} +1 -1
  90. package/dist/public/assets/_CnIE6_qB2.js.br +0 -0
  91. package/dist/public/assets/{_BhaVokkI.js → _Csmr2y3G.js} +1 -1
  92. package/dist/public/assets/_Csmr2y3G.js.br +0 -0
  93. package/dist/public/assets/{_BnGCBcwF2.js → _CuFX3MHy2.js} +1 -1
  94. package/dist/public/assets/{_CN37KCcd.js → _D-SthL18.js} +1 -1
  95. package/dist/public/assets/{_DeFFMAX_.js → _D1XJzdSj.js} +1 -1
  96. package/dist/public/assets/_D1XJzdSj.js.br +0 -0
  97. package/dist/public/assets/{_Dph0mXCv.js → _D5nVZek7.js} +1 -1
  98. package/dist/public/assets/_D5nVZek7.js.br +0 -0
  99. package/dist/public/assets/{_CphuLRQC.js → _DAi07M7i.js} +1 -1
  100. package/dist/public/assets/_DAi07M7i.js.br +10 -0
  101. package/dist/public/assets/{_dfXi0jTI.js → _DFAhtXzm.js} +1 -1
  102. package/dist/public/assets/_DFAhtXzm.js.br +0 -0
  103. package/dist/public/assets/{_DJSAaBeq.js → _DHelzj06.js} +1 -1
  104. package/dist/public/assets/_DHelzj06.js.br +0 -0
  105. package/dist/public/assets/{_C09f6XJ4.js → _DPL2ZCgQ.js} +1 -1
  106. package/dist/public/assets/_DPL2ZCgQ.js.br +5 -0
  107. package/dist/public/assets/{_B41uLDvj.js → _DX2Uab-U.js} +1 -1
  108. package/dist/public/assets/_DX2Uab-U.js.br +0 -0
  109. package/dist/public/assets/{_CDrCRgYz2.js → _Dixad7y-2.js} +1 -1
  110. package/dist/public/assets/_Dixad7y-2.js.br +0 -0
  111. package/dist/public/assets/{_Dg2DUGem2.js → _DjVNZ4eK2.js} +1 -1
  112. package/dist/public/assets/_DjVNZ4eK2.js.br +0 -0
  113. package/dist/public/assets/{_IoBnaDj6.js → _DmLXUxIk.js} +1 -1
  114. package/dist/public/assets/_DmLXUxIk.js.br +0 -0
  115. package/dist/public/assets/{_De1DhN-1.js → _DpCy3kYU.js} +5 -5
  116. package/dist/public/assets/_DpCy3kYU.js.br +0 -0
  117. package/dist/public/assets/{_CZAtZHwK.js → _DpENgSEx.js} +1 -1
  118. package/dist/public/assets/_DpENgSEx.js.br +0 -0
  119. package/dist/public/assets/{_Dig0hTtr.js → _Drt_09zp.js} +1 -1
  120. package/dist/public/assets/_Drt_09zp.js.br +0 -0
  121. package/dist/public/assets/{_CxfSIWfr.js → _DshD8Ycc.js} +1 -1
  122. package/dist/public/assets/_DshD8Ycc.js.br +0 -0
  123. package/dist/public/assets/{_BpwxxOzh.js → _DvcpKhXL.js} +1 -1
  124. package/dist/public/assets/_DvcpKhXL.js.br +0 -0
  125. package/dist/public/assets/{_CcaAXEPy.js → _Dx6kLICJ.js} +1 -1
  126. package/dist/public/assets/_Dx6kLICJ.js.br +0 -0
  127. package/dist/public/assets/{_BqzmoFMM.js → _KFiFSJT8.js} +1 -1
  128. package/dist/public/assets/_KFiFSJT8.js.br +0 -0
  129. package/dist/public/assets/{_C5McqdVq.js → _LdAm0jkh.js} +1 -1
  130. package/dist/public/assets/_LdAm0jkh.js.br +0 -0
  131. package/dist/public/assets/{_DQjgTNLT2.js → _QPczAdMm2.js} +1 -1
  132. package/dist/public/assets/_QPczAdMm2.js.br +0 -0
  133. package/dist/public/assets/{_yaHB4Z8B.js → _RF9fz9Iu.js} +1 -1
  134. package/dist/public/assets/_RF9fz9Iu.js.br +0 -0
  135. package/dist/public/assets/{_BsZkEJaX.js → _UxrF5q9P.js} +1 -1
  136. package/dist/public/assets/_UxrF5q9P.js.br +0 -0
  137. package/dist/public/assets/{_CE_OuXoU.js → _Wxr28jKW.js} +1 -1
  138. package/dist/public/assets/_Wxr28jKW.js.br +0 -0
  139. package/dist/public/assets/{_eH0Yg3S22.js → _Y-mhaywp2.js} +1 -1
  140. package/dist/public/assets/_Y-mhaywp2.js.br +0 -0
  141. package/dist/public/assets/{_DBKHnCnH.js → _c9sBllWt.js} +1 -1
  142. package/dist/public/assets/_c9sBllWt.js.br +0 -0
  143. package/dist/public/assets/{_okxblAux.js → _ckRann09.js} +1 -1
  144. package/dist/public/assets/_ckRann09.js.br +0 -0
  145. package/dist/public/assets/{_DThR70Xq.js → _f4WTM4Kz.js} +1 -1
  146. package/dist/public/assets/_f4WTM4Kz.js.br +0 -0
  147. package/dist/public/assets/{_CX7KVAVC2.js → _sUX0JPgf2.js} +1 -1
  148. package/dist/public/assets/_sUX0JPgf2.js.br +0 -0
  149. package/dist/public/assets/{_4Srbdaf8.js → _snCcB5_5.js} +1 -1
  150. package/dist/public/assets/_snCcB5_5.js.br +0 -0
  151. package/dist/public/assets/{_BRtDdwZC.js → _vWJVVrmZ.js} +1 -1
  152. package/dist/public/assets/_vWJVVrmZ.js.br +0 -0
  153. package/dist/public/assets/{_DhRqr_Rq.js → _wgItEK0c.js} +1 -1
  154. package/dist/public/assets/_wgItEK0c.js.br +0 -0
  155. package/dist/public/assets/{app-page-B-QPv6NA.css → app-page-CAw2YLYv.css} +1 -1
  156. package/dist/public/assets/app-page-CAw2YLYv.css.br +0 -0
  157. package/dist/public/assets/{diff-view-DM1slFkP.css → diff-view-DCB49VYM.css} +1 -1
  158. package/dist/public/assets/diff-view-DCB49VYM.css.br +0 -0
  159. package/dist/public/assets/new-C9qRFMyu.js +1 -0
  160. package/dist/public/assets/settings-C9qRFMyu.js +1 -0
  161. package/dist/public/assets/w-C9qRFMyu.js +1 -0
  162. package/dist/public/assets/w._-C9qRFMyu.js +1 -0
  163. package/dist/public/assets/w._-phpTDxP7.js +1 -0
  164. package/package.json +1 -1
  165. package/dist/_xZfpJdQE.js +0 -2
  166. package/dist/public/assets/_2jwfRZNX2.js.br +0 -0
  167. package/dist/public/assets/_4Srbdaf8.js.br +0 -0
  168. package/dist/public/assets/_B1dK1Qzq2.js.br +0 -0
  169. package/dist/public/assets/_B41uLDvj.js.br +0 -0
  170. package/dist/public/assets/_B7R_FSi52.js.br +0 -0
  171. package/dist/public/assets/_BM3WaJrl2.js.br +0 -0
  172. package/dist/public/assets/_BRtDdwZC.js.br +0 -0
  173. package/dist/public/assets/_BUuMdUVD.js.br +0 -0
  174. package/dist/public/assets/_BVOP1Gxw2.js.br +0 -0
  175. package/dist/public/assets/_B_hrJVb02.js.br +0 -0
  176. package/dist/public/assets/_BhaVokkI.js.br +0 -0
  177. package/dist/public/assets/_BpwxxOzh.js.br +0 -0
  178. package/dist/public/assets/_BqzmoFMM.js.br +0 -0
  179. package/dist/public/assets/_BriDrk1l.js.br +0 -0
  180. package/dist/public/assets/_BsZkEJaX.js.br +0 -0
  181. package/dist/public/assets/_C09f6XJ4.js.br +0 -0
  182. package/dist/public/assets/_C178aaRj.js.br +0 -0
  183. package/dist/public/assets/_C5McqdVq.js.br +0 -0
  184. package/dist/public/assets/_C8xwneiR.js.br +0 -0
  185. package/dist/public/assets/_CCwzIksI.js.br +0 -0
  186. package/dist/public/assets/_CDrCRgYz2.js.br +0 -0
  187. package/dist/public/assets/_CE_OuXoU.js.br +0 -0
  188. package/dist/public/assets/_CF4WUrOg2.js.br +0 -0
  189. package/dist/public/assets/_CP9QfGt02.js.br +0 -0
  190. package/dist/public/assets/_CX7KVAVC2.js.br +0 -0
  191. package/dist/public/assets/_CZAtZHwK.js.br +0 -0
  192. package/dist/public/assets/_CZSK2PpM2.js.br +0 -0
  193. package/dist/public/assets/_CcaAXEPy.js.br +0 -0
  194. package/dist/public/assets/_ChzC-M8b.js.br +0 -0
  195. package/dist/public/assets/_CieMd70P.js.br +0 -0
  196. package/dist/public/assets/_CktwGNoV.js +0 -85
  197. package/dist/public/assets/_CktwGNoV.js.br +0 -0
  198. package/dist/public/assets/_Cnkj8G8x.js.br +0 -0
  199. package/dist/public/assets/_CphuLRQC.js.br +0 -0
  200. package/dist/public/assets/_CxfSIWfr.js.br +0 -0
  201. package/dist/public/assets/_D1ZMPYoI2.js.br +0 -0
  202. package/dist/public/assets/_D5nI5TU0.js.br +0 -0
  203. package/dist/public/assets/_D70dHsK5.js.br +0 -0
  204. package/dist/public/assets/_DBKHnCnH.js.br +0 -0
  205. package/dist/public/assets/_DFXWJj8u.js.br +0 -0
  206. package/dist/public/assets/_DIIVUEO6.js.br +0 -0
  207. package/dist/public/assets/_DJSAaBeq.js.br +0 -0
  208. package/dist/public/assets/_DK9AWQX8.js.br +0 -0
  209. package/dist/public/assets/_DP-0321c.js.br +0 -0
  210. package/dist/public/assets/_DQjgTNLT2.js.br +0 -0
  211. package/dist/public/assets/_DRzPr12K.js.br +0 -0
  212. package/dist/public/assets/_DSW7pXqz.js.br +0 -0
  213. package/dist/public/assets/_DThR70Xq.js.br +0 -0
  214. package/dist/public/assets/_De1DhN-1.js.br +0 -0
  215. package/dist/public/assets/_DeFFMAX_.js.br +0 -0
  216. package/dist/public/assets/_Dg2DUGem2.js.br +0 -0
  217. package/dist/public/assets/_DgW7RRes2.js.br +0 -0
  218. package/dist/public/assets/_DhRqr_Rq.js.br +0 -0
  219. package/dist/public/assets/_Dig0hTtr.js.br +0 -0
  220. package/dist/public/assets/_DkIPVGH_2.js.br +0 -0
  221. package/dist/public/assets/_DoD7JLuh2.js.br +0 -0
  222. package/dist/public/assets/_Dph0mXCv.js.br +0 -0
  223. package/dist/public/assets/_DsU-Nm-J.js.br +0 -0
  224. package/dist/public/assets/_DsxkxJ9M.js.br +0 -0
  225. package/dist/public/assets/_DwMRIbNQ2.js.br +0 -0
  226. package/dist/public/assets/_IoBnaDj6.js.br +0 -0
  227. package/dist/public/assets/_MFSKg2Wj.js.br +0 -0
  228. package/dist/public/assets/_NUfAwX-92.js.br +0 -0
  229. package/dist/public/assets/_SYogbY_o.js.br +0 -0
  230. package/dist/public/assets/_Ve3NFPam2.js.br +0 -0
  231. package/dist/public/assets/_astyk4W8.js.br +0 -0
  232. package/dist/public/assets/_dfXi0jTI.js.br +0 -0
  233. package/dist/public/assets/_eH0Yg3S22.js.br +0 -0
  234. package/dist/public/assets/_okxblAux.js.br +0 -0
  235. package/dist/public/assets/_sRXHGNUn.js.br +0 -0
  236. package/dist/public/assets/_uCHmU2W8.js.br +0 -0
  237. package/dist/public/assets/_vJB03LvX2.js.br +0 -0
  238. package/dist/public/assets/_vW-7Ai-v.js.br +0 -0
  239. package/dist/public/assets/_yaHB4Z8B.js.br +0 -0
  240. package/dist/public/assets/app-page-B-QPv6NA.css.br +0 -0
  241. package/dist/public/assets/diff-view-DM1slFkP.css.br +0 -0
  242. package/dist/public/assets/new-CxcQDhex.js +0 -1
  243. package/dist/public/assets/settings-CxcQDhex.js +0 -1
  244. package/dist/public/assets/w-CxcQDhex.js +0 -1
  245. package/dist/public/assets/w._-CuOk-xxd.js +0 -1
  246. package/dist/public/assets/w._-CxcQDhex.js +0 -1
@@ -6332,9 +6332,15 @@ var viewers = /* @__PURE__ */ new Map();
6332
6332
  function summaryFromHookPayload(payload) {
6333
6333
  if (!payload || typeof payload !== "object") return void 0;
6334
6334
  const p = payload;
6335
- const text = typeof p.last_assistant_message === "string" && p.last_assistant_message || typeof p["last-assistant-message"] === "string" && p["last-assistant-message"] || typeof p.agent_message === "string" && p.agent_message || "";
6335
+ const text = typeof p.last_assistant_message === "string" && p.last_assistant_message || typeof p["last-assistant-message"] === "string" && p["last-assistant-message"] || typeof p.lastAssistantMessage === "string" && p.lastAssistantMessage || typeof p.agent_message === "string" && p.agent_message || "";
6336
6336
  if (text) return cleanSummary(text);
6337
- if (typeof p.notification_type === "string") return NOTIFICATION_LABELS[p.notification_type];
6337
+ const kind = notificationType(p);
6338
+ if (kind) {
6339
+ const message = typeof p.message === "string" ? p.message.trim() : "";
6340
+ return message ? cleanSummary(message) : NOTIFICATION_LABELS[kind];
6341
+ }
6342
+ if (typeof p.errorDetails === "string" && p.errorDetails.trim()) return cleanSummary(p.errorDetails);
6343
+ if (typeof p.error === "string" && p.error.trim()) return cleanSummary(p.error);
6338
6344
  if (p.hook_event_name === "PermissionRequest") {
6339
6345
  const input = p.tool_input;
6340
6346
  const what = (input && typeof input.command === "string" ? input.command : "") || (typeof p.tool_name === "string" ? p.tool_name : "");
@@ -6348,6 +6354,61 @@ var NOTIFICATION_LABELS = {
6348
6354
  elicitation_dialog: "Asking a question",
6349
6355
  elicitation_url_dialog: "Needs a browser sign-in"
6350
6356
  };
6357
+ /** Notification hooks are one channel for several kinds of event. Only some
6358
+ * mean the agent is blocked on the user; Copilot also routes shell and
6359
+ * inbox chatter through it. Those the state endpoint must drop, not paint
6360
+ * red — the notification is neither "needs input" nor "done". */
6361
+ var CHATTER_NOTIFICATIONS = /* @__PURE__ */ new Set([
6362
+ "shell_completed",
6363
+ "shell_detached_completed",
6364
+ "new_inbox_message",
6365
+ "instruction_discovered",
6366
+ "factory_completed",
6367
+ "unclassified"
6368
+ ]);
6369
+ function ignoreHookPayload(payload) {
6370
+ if (!payload || typeof payload !== "object") return false;
6371
+ const p = payload;
6372
+ const kind = notificationType(p);
6373
+ if (kind && CHATTER_NOTIFICATIONS.has(kind)) return true;
6374
+ if (typeof p.subagentType === "string" && p.subagentType) return true;
6375
+ if (p.hookEventName === "stop" && typeof p.reason === "string" && p.reason !== "end_turn") return true;
6376
+ return false;
6377
+ }
6378
+ /** `notification_type` (Claude, Copilot) or `notificationType` (Grok). */
6379
+ function notificationType(p) {
6380
+ const kind = p.notification_type ?? p.notificationType;
6381
+ return typeof kind === "string" ? kind : void 0;
6382
+ }
6383
+ /** Copilot's Stop payload names its transcript but not the last message;
6384
+ * the last non-empty `assistant.message` in that JSONL is it. Reads the
6385
+ * tail only — transcripts grow for the life of a session. */
6386
+ function summaryFromTranscript(payload) {
6387
+ if (!payload || typeof payload !== "object") return void 0;
6388
+ const file = payload.transcript_path;
6389
+ if (typeof file !== "string" || !file.endsWith("events.jsonl")) return void 0;
6390
+ try {
6391
+ const fd = fs.openSync(file, "r");
6392
+ try {
6393
+ const size = fs.fstatSync(fd).size;
6394
+ const len = Math.min(size, 65536);
6395
+ const buf = Buffer.alloc(len);
6396
+ fs.readSync(fd, buf, 0, len, size - len);
6397
+ const lines = buf.toString("utf8").split("\n");
6398
+ for (let i = lines.length - 1; i >= 0; i--) {
6399
+ const line = lines[i];
6400
+ if (!line.includes("\"assistant.message\"")) continue;
6401
+ try {
6402
+ const ev = JSON.parse(line);
6403
+ const content = ev.type === "assistant.message" ? ev.data?.content : void 0;
6404
+ if (typeof content === "string" && content.trim()) return cleanSummary(content);
6405
+ } catch {}
6406
+ }
6407
+ } finally {
6408
+ fs.closeSync(fd);
6409
+ }
6410
+ } catch {}
6411
+ }
6351
6412
  /** Notifications that mean the agent is nudging about an idle session
6352
6413
  * rather than blocking on one. The hook cannot tell them apart when it
6353
6414
  * fires — it reports every notification the same way — so the kind has to
@@ -6357,8 +6418,8 @@ var NUDGE_NOTIFICATIONS = /* @__PURE__ */ new Set(["idle_prompt"]);
6357
6418
  /** The reason a hook's `waiting` actually carries, given its payload. */
6358
6419
  function reasonFromHookPayload(payload, reported) {
6359
6420
  if (reported !== "attention" || !payload || typeof payload !== "object") return reported;
6360
- const kind = payload.notification_type;
6361
- return typeof kind === "string" && NUDGE_NOTIFICATIONS.has(kind) ? "done" : reported;
6421
+ const kind = notificationType(payload);
6422
+ return kind && NUDGE_NOTIFICATIONS.has(kind) ? "done" : reported;
6362
6423
  }
6363
6424
  /** First meaningful line(s) of an agent message, markdown chrome stripped,
6364
6425
  * sized for a push notification. */
@@ -6448,7 +6509,7 @@ function publishChange(sessionId) {
6448
6509
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
6449
6510
  if (row?.workspace_id) {
6450
6511
  const workspaceId = row.workspace_id;
6451
- import("./_xZfpJdQE.js").then((m) => m.notifySessionsChanged(workspaceId));
6512
+ import("./_DLxkSyzt.js").then((m) => m.notifySessionsChanged(workspaceId));
6452
6513
  return;
6453
6514
  }
6454
6515
  publish("sessions.changed");
@@ -6459,8 +6520,12 @@ function publishChange(sessionId) {
6459
6520
  * workspace or the user's global config. Claude takes an inline settings
6460
6521
  * JSON (--settings accepts a JSON string); Codex takes lifecycle hooks via
6461
6522
  * `-c` overrides, trusted through a `hooks.state` entry in the same
6462
- * override layer (see codexHookFlags). Grok, Cursor and Copilot expose no
6463
- * file-free hook mechanism, so their sessions get working/idle from pane
6523
+ * override layer (see codexHookFlags); Copilot mounts a plugin directory
6524
+ * that lives in work's own data dir (`--plugin-dir`, see copilotPluginDir).
6525
+ * Grok has no flag at all: its hook file also lives in work's data dir, and
6526
+ * the one thing written outside it is a line naming that file in Grok's
6527
+ * hook registry `~/.grok/hooks-paths` (see grokHooksRegistered). Cursor
6528
+ * exposes no hook mechanism, so its sessions get working/idle from pane
6464
6529
  * activity (see scraper.ts) and nothing else — a stopped turn and a
6465
6530
  * question look the same. */
6466
6531
  function stateCurl(state, reason) {
@@ -6472,7 +6537,122 @@ function stateCurl(state, reason) {
6472
6537
  * costs them the state their own hook just reported. */
6473
6538
  function reportsWorking(agent) {
6474
6539
  const family = agentFamily(agent);
6475
- return family === "claude" || family === "codex";
6540
+ return family === "claude" || family === "codex" || family === "copilot" || family === "grok" && grokHooksOk;
6541
+ }
6542
+ /** Whether Grok's hook registry took work's hook file — without it Grok
6543
+ * reports nothing and the screen has to speak for it. */
6544
+ var grokHooksOk = false;
6545
+ /** Grok hook events → state. Payloads are camelCase (hookEventName,
6546
+ * notificationType, lastAssistantMessage); agent-state.ts reads both
6547
+ * spellings. Notification is matched to the two kinds that mean a prompt is
6548
+ * on screen; Stop fires on shutdown too, with a reason the endpoint uses to
6549
+ * tell a finished turn from a closed session. */
6550
+ var GROK_HOOKS = [
6551
+ ["UserPromptSubmit", "working"],
6552
+ ["PreToolUse", "working"],
6553
+ ["PostToolUse", "working"],
6554
+ [
6555
+ "Notification",
6556
+ "waiting",
6557
+ "attention",
6558
+ "permission_prompt|elicitation_dialog"
6559
+ ],
6560
+ [
6561
+ "Stop",
6562
+ "waiting",
6563
+ "done"
6564
+ ],
6565
+ [
6566
+ "StopCancelled",
6567
+ "waiting",
6568
+ "done"
6569
+ ],
6570
+ [
6571
+ "StopFailure",
6572
+ "waiting",
6573
+ "attention"
6574
+ ]
6575
+ ];
6576
+ /** Grok discovers hooks from `~/.grok/hooks-paths`: one absolute path per
6577
+ * line, the registry its own `/hooks-add` command appends to. work's hook
6578
+ * file is kept in the data dir — the commands read the port from env, so
6579
+ * the file never needs rewriting — and registered once. Returns false when
6580
+ * the registry cannot be written (hooks then simply don't report). */
6581
+ function grokHooksRegistered() {
6582
+ const file = path.join(config.dataDir, "grok-hooks.json");
6583
+ const hooks = {};
6584
+ for (const [event, state, reason, matcher] of GROK_HOOKS) hooks[event] = [{
6585
+ ...matcher ? { matcher } : {},
6586
+ hooks: [{
6587
+ type: "command",
6588
+ command: stateCurl(state, reason),
6589
+ timeout: 5
6590
+ }]
6591
+ }];
6592
+ writeIfChanged(file, JSON.stringify({ hooks }, null, 2));
6593
+ const registry = path.join(process.env.HOME || "", ".grok", "hooks-paths");
6594
+ try {
6595
+ let current = "";
6596
+ try {
6597
+ current = fs.readFileSync(registry, "utf8");
6598
+ } catch {}
6599
+ if (!current.split("\n").some((line) => line.trim() === file)) {
6600
+ fs.mkdirSync(path.dirname(registry), { recursive: true });
6601
+ fs.appendFileSync(registry, `${current && !current.endsWith("\n") ? "\n" : ""}${file}\n`);
6602
+ }
6603
+ grokHooksOk = true;
6604
+ } catch {
6605
+ grokHooksOk = false;
6606
+ }
6607
+ return grokHooksOk;
6608
+ }
6609
+ /** Copilot hook events (Claude-format names, which make it emit Claude's
6610
+ * snake_case payloads: hook_event_name, notification_type…) → state.
6611
+ * Notification rather than PermissionRequest for "needs input": the latter
6612
+ * fires before Copilot's own allow rules, the former only once a prompt is
6613
+ * actually on screen. Its Stop payload has no last message; the server
6614
+ * reads it from transcript_path (see agent-state.ts). */
6615
+ var COPILOT_HOOKS = [
6616
+ ["UserPromptSubmit", "working"],
6617
+ ["PreToolUse", "working"],
6618
+ ["PostToolUse", "working"],
6619
+ [
6620
+ "Notification",
6621
+ "waiting",
6622
+ "attention"
6623
+ ],
6624
+ [
6625
+ "Stop",
6626
+ "waiting",
6627
+ "done"
6628
+ ]
6629
+ ];
6630
+ /** Copilot has no flag or env for inline hooks; the file-free option is a
6631
+ * plugin directory passed with `--plugin-dir`, which loads without a trust
6632
+ * prompt. The plugin is two files kept under work's data dir and rewritten
6633
+ * only when their content changes (a stale hook would report to the wrong
6634
+ * port after a config change). Returns the directory. */
6635
+ function copilotPluginDir() {
6636
+ const dir = path.join(config.dataDir, "copilot-plugin");
6637
+ const hooks = {};
6638
+ for (const [event, state, reason] of COPILOT_HOOKS) hooks[event] = [{ hooks: [{
6639
+ type: "command",
6640
+ command: stateCurl(state, reason)
6641
+ }] }];
6642
+ writeIfChanged(path.join(dir, ".claude-plugin", "plugin.json"), JSON.stringify({
6643
+ name: "work-session-state",
6644
+ version: "1",
6645
+ description: "Reports this session's working / needs-input / done state to work."
6646
+ }, null, 2));
6647
+ writeIfChanged(path.join(dir, "hooks", "hooks.json"), JSON.stringify({ hooks }, null, 2));
6648
+ return dir;
6649
+ }
6650
+ function writeIfChanged(file, content) {
6651
+ try {
6652
+ if (fs.readFileSync(file, "utf8") === content) return;
6653
+ } catch {}
6654
+ fs.mkdirSync(path.dirname(file), { recursive: true });
6655
+ fs.writeFileSync(file, content);
6476
6656
  }
6477
6657
  /** Codex hook events → the state each reports. Same shape as Claude's:
6478
6658
  * a prompt or a tool call means working, Stop means the turn is done,
@@ -6554,6 +6734,8 @@ function agentLaunchFlags(agent) {
6554
6734
  } })];
6555
6735
  }
6556
6736
  if (family === "codex") return codexHookFlags();
6737
+ if (family === "copilot") return ["--plugin-dir", copilotPluginDir()];
6738
+ if (family === "grok") grokHooksRegistered();
6557
6739
  return [];
6558
6740
  }
6559
6741
  //#endregion
@@ -6903,4 +7085,4 @@ function sleep(ms) {
6903
7085
  return new Promise((resolve) => setTimeout(resolve, ms));
6904
7086
  }
6905
7087
  //#endregion
6906
- export { get as $, subscribe as A, setPref as B, setScrapedPhase as C, pushPublicKey as D, deleteSubscription as E, disabledAgents as F, setupPath as G, doctor as H, enabledAgents as I, TOOLS as J, which as K, getSetting as L, subscriberJoins as M, agentChoices as N, saveSubscription as O, allPrefs as P, db as Q, preferredAgent as R, setAgentPhase as S, summaryFromHookPayload as T, ghKnownHosts as U, setSetting as V, miseVersions as W, toolById as X, agentById as Y, all as Z, tmuxName as _, ensureTmuxServer as a, tmux as at, clearAgentPhase as b, killWorkspaceSessions as c, newSessionArgs as d, workspacePath as et, notifySessionsChanged as f, sessionStates as g, sendToSession as h, disposeSessions as i, run$1 as it, subscriberCount as j, publish as k, listSessions as l, renameSession as m, clearTmuxStarted as n, gh as nt, getSession as o, config as ot, panePids as p, DEFAULT_GITHUB_HOST as q, createSession as r, git as rt, killSession as s, cleanEnv as t, TMUX_SOCKET as tt, markTmuxStarted as u, tmuxWasStarted as v, setSessionViewers as w, reasonFromHookPayload as x, reportsWorking as y, setDisabledAgents as z };
7088
+ export { all as $, saveSubscription as A, preferredAgent as B, setAgentPhase as C, summaryFromTranscript as D, summaryFromHookPayload as E, agentChoices as F, ghKnownHosts as G, setPref as H, allPrefs as I, which as J, miseVersions as K, disabledAgents as L, subscribe as M, subscriberCount as N, deleteSubscription as O, subscriberJoins as P, toolById as Q, enabledAgents as R, reasonFromHookPayload as S, setSessionViewers as T, setSetting as U, setDisabledAgents as V, doctor as W, TOOLS as X, DEFAULT_GITHUB_HOST as Y, agentById as Z, tmuxName as _, ensureTmuxServer as a, git as at, clearAgentPhase as b, killWorkspaceSessions as c, config as ct, newSessionArgs as d, db as et, notifySessionsChanged as f, sessionStates as g, sendToSession as h, disposeSessions as i, gh as it, publish as j, pushPublicKey as k, listSessions as l, renameSession as m, clearTmuxStarted as n, workspacePath as nt, getSession as o, run$1 as ot, panePids as p, setupPath as q, createSession as r, TMUX_SOCKET as rt, killSession as s, tmux as st, cleanEnv as t, get as tt, markTmuxStarted as u, tmuxWasStarted as v, setScrapedPhase as w, ignoreHookPayload as x, reportsWorking as y, getSetting as z };
@@ -0,0 +1,2 @@
1
+ import { f as notifySessionsChanged } from "./_BfXE8Kjn.js";
2
+ export { notifySessionsChanged };
@@ -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 "./_AOPS87VY.js";
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 "./_Dq5wZ9y2.js";
2
2
  //#region src/client/router.ts
3
3
  function urlFor(r) {
4
4
  if (r.view === "settings") return "/settings";
@@ -1807,9 +1807,9 @@ var diff_find_default = _template("g", (input) => {
1807
1807
  el.select();
1808
1808
  }, 0);
1809
1809
  }, "g5", $scope0_id);
1810
- _html(`<div${_attr_class(["_e5", !open && "_e4"])} aria-hidden=${open ? "false" : "true"}><input${_attr_input_value($scope0_id, "b", query || "", _resume(function(v) {
1810
+ _html(`<div${_attr_class(["_eQ", !open && "_eP"])} aria-hidden=${open ? "false" : "true"}><input${_attr_input_value($scope0_id, "b", query || "", _resume(function(v) {
1811
1811
  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("_e8")}>${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"}>`);
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("_eT")}>${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
1813
  icon_xmark_default({ size: 14 });
1814
1814
  _html(`</button>${_el_resume($scope0_id, "g")}</div>${_el_resume($scope0_id, "a")}`);
1815
1815
  _script($scope0_id, "g6");
@@ -1906,14 +1906,14 @@ function shortBranch(name, wsBranch = "", wsName = "") {
1906
1906
  }
1907
1907
  return shortHeadFallback(head);
1908
1908
  }
1909
- var repoWorktree = "_fB _u";
1910
- var repoTitle = "_fH _t";
1909
+ var repoWorktree = "_fz _u";
1910
+ var repoTitle = "_fF _t";
1911
1911
  tone.warn;
1912
1912
  var diff_file_default = _template("f", (input) => {
1913
1913
  _scope_reason();
1914
1914
  const $scope0_id = _scope_id();
1915
1915
  _el($scope0_id, "f0");
1916
- _html(`<div${_attr_class(["_gs", input.class])}></div>${_el_resume($scope0_id, "a")}`);
1916
+ _html(`<div${_attr_class(["_gv", input.class])}></div>${_el_resume($scope0_id, "a")}`);
1917
1917
  _script($scope0_id, "f1");
1918
1918
  writeScope($scope0_id, {
1919
1919
  e: input.file,
@@ -1968,14 +1968,14 @@ var review_section_default = _template("r", (input) => {
1968
1968
  const newCount = input.files.filter((f) => f.changedSince).length;
1969
1969
  const compare$1 = reviewCompareLabel(repo.pr?.baseRefName || repo.base, repo.pr?.headRefName || repo.branch, input.workspaceBranch, input.workspaceName);
1970
1970
  const prTitle = repo.pr ? `${repo.pr.title}: ${repo.pr.headRefName} ${repo.head} vs ${repo.base} ${repo.baseSha}` : "";
1971
- _html(`<section${_attr_class("_fx")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownCount && !repo.pr && input.findHit?.repo !== repo.id)}><div${_attr_class(["_fy", { ["_fz"]: input.collapsible && input.collapsed }])}>`);
1971
+ _html(`<section${_attr_class("_fv")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownCount && !repo.pr && input.findHit?.repo !== repo.id)}><div${_attr_class(["_fw", { ["_fx"]: input.collapsible && input.collapsed }])}>`);
1972
1972
  _if(() => {
1973
1973
  if (input.collapsible) {
1974
1974
  const $scope1_id = _scope_id();
1975
- _html(`<button type=button${_attr_class("_fA")} 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([
1976
- "_fU",
1977
- !input.collapsed && "_fV",
1978
- input.expanding && "_fW"
1975
+ _html(`<button type=button${_attr_class("_fy")} 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([
1976
+ "_fS",
1977
+ !input.collapsed && "_fT",
1978
+ input.expanding && "_fU"
1979
1979
  ])} aria-hidden=true>${input.collapsed ? "▸" : "▾"}${_el_resume($scope1_id, "c", _serialize_guard($scope0_reason, 35))}</span>${_el_resume($scope1_id, "b", _serialize_guard($scope0_reason, 9))}<span${_attr_class(repoWorktree)}>${_escape(repo.worktree)}${_el_resume($scope1_id, "e", $sg__input_repo)}</span></button>${_el_resume($scope1_id, "a")}`);
1980
1980
  _script($scope1_id, "r7");
1981
1981
  writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
@@ -2000,14 +2000,14 @@ var review_section_default = _template("r", (input) => {
2000
2000
  return 1;
2001
2001
  }
2002
2002
  }, $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);
2003
- _html(`<span${_attr_class("_fI")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_F", "_fJ"])}>${_escape(compare$1.base)}${_el_resume($scope0_id, "g", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_H", "_fL"])} aria-hidden=true>vs</span><span${_attr_class(["_F", "_fK"])}>${_escape(compare$1.head)}${_el_resume($scope0_id, "j", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2003
+ _html(`<span${_attr_class("_fG")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_F", "_fH"])}>${_escape(compare$1.base)}${_el_resume($scope0_id, "g", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_H", "_fJ"])} aria-hidden=true>vs</span><span${_attr_class(["_F", "_fI"])}>${_escape(compare$1.head)}${_el_resume($scope0_id, "j", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2004
2004
  _if(() => {
2005
2005
  if (compare$1.topic) {
2006
2006
  const $scope15_id = _scope_id();
2007
2007
  _html(`<span${_attr_class([
2008
2008
  "_F",
2009
2009
  tone.accent,
2010
- "_fM"
2010
+ "_fK"
2011
2011
  ])}>${_escape(compare$1.topic)}${_el_resume($scope15_id, "b", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
2012
2012
  $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName && writeScope($scope15_id, { _: _scope_with_id($scope0_id) });
2013
2013
  return 0;
@@ -2020,7 +2020,7 @@ var review_section_default = _template("r", (input) => {
2020
2020
  _html(`<button type=button${_attr_class([
2021
2021
  "_F",
2022
2022
  tone.warn,
2023
- "_fN"
2023
+ "_fL"
2024
2024
  ])}${_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")}`);
2025
2025
  _script($scope2_id, "r8");
2026
2026
  writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
@@ -2030,7 +2030,7 @@ var review_section_default = _template("r", (input) => {
2030
2030
  _if(() => {
2031
2031
  if (repo.contained && input.files.length) {
2032
2032
  const $scope13_id = _scope_id();
2033
- _html(`<span${_attr_class(["_F", "_fN"])}${_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)}`);
2033
+ _html(`<span${_attr_class(["_F", "_fL"])}${_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)}`);
2034
2034
  _serialize_if($scope0_reason, 0) && writeScope($scope13_id, { _: $si__input_repo && _scope_with_id($scope0_id) });
2035
2035
  return 0;
2036
2036
  }
@@ -2038,16 +2038,16 @@ var review_section_default = _template("r", (input) => {
2038
2038
  _if(() => {
2039
2039
  if (input.localDiffers) {
2040
2040
  const $scope3_id = _scope_id();
2041
- _html(`<span${_attr_class(["_F", "_fN"])}${_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)}`);
2041
+ _html(`<span${_attr_class(["_F", "_fL"])}${_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)}`);
2042
2042
  $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) });
2043
2043
  return 0;
2044
2044
  }
2045
2045
  }, $scope0_id, "n", _serialize_guard($scope0_reason, 20), _serialize_guard($scope0_reason, 36), $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);
2046
- _html(`<span${_attr_class("_fC")}><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>`);
2046
+ _html(`<span${_attr_class("_fA")}><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>`);
2047
2047
  _if(() => {
2048
2048
  if (stats.additions || stats.deletions) {
2049
2049
  const $scope14_id = _scope_id();
2050
- _html(`<span${_attr_class("_fD")}>+${_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("_fE")}>−${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.deletions)}${_el_resume($scope14_id, "d", $sg__input_files__OR__input_shownKeys)}</span>`);
2050
+ _html(`<span${_attr_class("_fB")}>+${_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("_fC")}>−${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.deletions)}${_el_resume($scope14_id, "d", $sg__input_files__OR__input_shownKeys)}</span>`);
2051
2051
  $si__input_files__OR__input_shownKeys && writeScope($scope14_id, { _: _scope_with_id($scope0_id) });
2052
2052
  return 0;
2053
2053
  }
@@ -2055,7 +2055,7 @@ var review_section_default = _template("r", (input) => {
2055
2055
  _if(() => {
2056
2056
  if (newCount || input.onlyNew) {
2057
2057
  const $scope4_id = _scope_id();
2058
- _html(`<button type=button${_attr_class(["_fG", { ["_fF"]: 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")}`);
2058
+ _html(`<button type=button${_attr_class(["_fE", { ["_fD"]: 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")}`);
2059
2059
  _script($scope4_id, "r9");
2060
2060
  writeScope($scope4_id, { _: _scope_with_id($scope0_id) });
2061
2061
  return 0;
@@ -2067,7 +2067,7 @@ var review_section_default = _template("r", (input) => {
2067
2067
  const $scope5_id = _scope_id();
2068
2068
  const $show = !input.collapsible || !input.collapsed;
2069
2069
  _show_start($show);
2070
- _html(`<div${_attr_class("_fP")}>`);
2070
+ _html(`<div${_attr_class("_fN")}>`);
2071
2071
  _for_of(input.files, (file$1) => {
2072
2072
  const $scope6_id = _scope_id();
2073
2073
  const $for_content__file__closures = /* @__PURE__ */ new Set();
@@ -2075,11 +2075,11 @@ var review_section_default = _template("r", (input) => {
2075
2075
  const $for_content__fileComments__closures = /* @__PURE__ */ new Set();
2076
2076
  const fileComments = input.commentsByFile.get(file$1.key) || [];
2077
2077
  let expanded = true;
2078
- _html(`<details${_attr_details_or_dialog_open($scope6_id, "a", expanded)}${_attr_class(["_fQ", input.findHit?.key === file$1.key && "_fv"])}${_attr("data-key", file$1.key)}${_attr("hidden", !input.shownKeys.has(file$1.key))}><summary${_attr_class("_fS")}><span${_attr_class("_fX")}${_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(["_fY", input.findHit?.key === file$1.key && input.findHit.line < 1 && "_fw"])}${_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, 16))}`);
2078
+ _html(`<details${_attr_details_or_dialog_open($scope6_id, "a", expanded)}${_attr_class(["_fO", input.findHit?.key === file$1.key && "_ft"])}${_attr("data-key", file$1.key)}${_attr("hidden", !input.shownKeys.has(file$1.key))}><summary${_attr_class("_fQ")}><span${_attr_class("_fV")}${_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(["_fW", input.findHit?.key === file$1.key && input.findHit.line < 1 && "_fu"])}${_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, 16))}`);
2079
2079
  _if(() => {
2080
2080
  if (file$1.changedSince) {
2081
2081
  const $scope17_id = _scope_id();
2082
- _html(`<span${_attr_class(["_w", "_fO"])} title="Changed since your last visit"></span>`);
2082
+ _html(`<span${_attr_class(["_w", "_fM"])} title="Changed since your last visit"></span>`);
2083
2083
  $si__input_files && writeScope($scope17_id, {});
2084
2084
  return 0;
2085
2085
  }
@@ -2096,17 +2096,17 @@ var review_section_default = _template("r", (input) => {
2096
2096
  _if(() => {
2097
2097
  if (file$1.binary) {
2098
2098
  const $scope18_id = _scope_id();
2099
- _html(`<p${_attr_class(["_fZ", "_fR"])}>binary file</p>`);
2099
+ _html(`<p${_attr_class(["_fX", "_fP"])}>binary file</p>`);
2100
2100
  writeScope($scope18_id, {});
2101
2101
  return 0;
2102
2102
  } else if (file$1.tooLarge) {
2103
2103
  const $scope19_id = _scope_id();
2104
- _html(`<p${_attr_class(["_fZ", "_fR"])}>file too large to display</p>`);
2104
+ _html(`<p${_attr_class(["_fX", "_fP"])}>file too large to display</p>`);
2105
2105
  writeScope($scope19_id, {});
2106
2106
  return 1;
2107
2107
  } else if (file$1.old == null && file$1.new == null) {
2108
2108
  const $scope20_id = _scope_id();
2109
- _html(`<p${_attr_class(["_fZ", "_fR"])}>file could not be read</p>`);
2109
+ _html(`<p${_attr_class(["_fX", "_fP"])}>file could not be read</p>`);
2110
2110
  writeScope($scope20_id, {});
2111
2111
  return 2;
2112
2112
  } else {
@@ -2116,7 +2116,7 @@ var review_section_default = _template("r", (input) => {
2116
2116
  _if(() => {
2117
2117
  if (!forceNear) {
2118
2118
  const $scope8_id = _scope_id();
2119
- _html(`<div${_attr_class(["_fT", "_fR"])}></div>${_el_resume($scope8_id, "a")}`);
2119
+ _html(`<div${_attr_class(["_fR", "_fP"])}></div>${_el_resume($scope8_id, "a")}`);
2120
2120
  _script($scope8_id, "r10");
2121
2121
  _subscribe($si__input && $input__closures, writeScope($scope8_id, {}));
2122
2122
  return 0;
@@ -2124,7 +2124,7 @@ var review_section_default = _template("r", (input) => {
2124
2124
  const $scope9_id = _scope_id();
2125
2125
  const $childScope = _peek_scope_id();
2126
2126
  diff_file_default({
2127
- class: "_fR",
2127
+ class: "_fP",
2128
2128
  file: file$1,
2129
2129
  comments: fileComments,
2130
2130
  draft: input.draft && input.draft.key === file$1.key ? input.draft : null,
@@ -2255,7 +2255,7 @@ var review_section_default = _template("r", (input) => {
2255
2255
  c8: $si__input_findHit_line && $input_findHit_line__closures
2256
2256
  });
2257
2257
  });
2258
- var fileFilter = "_gr _i";
2258
+ var fileFilter = "_gu _i";
2259
2259
  //#endregion
2260
2260
  //#region src/tags/file-filter.marko
2261
2261
  var file_filter_default = _template("k", (input) => {
@@ -2285,7 +2285,7 @@ var file_filter_default = _template("k", (input) => {
2285
2285
  pending = v;
2286
2286
  box.timer = setTimeout(flush, 150);
2287
2287
  }, "k2", $scope0_id);
2288
- _html(`<div${_attr_class("_gq")}><input${_attr_input_value($scope0_id, "b", draft, _resume(function(v) {
2288
+ _html(`<div${_attr_class("_gt")}><input${_attr_input_value($scope0_id, "b", draft, _resume(function(v) {
2289
2289
  type(v);
2290
2290
  }, "k0", $scope0_id))}${_attr_class(fileFilter)} type=search placeholder="Filter files…" aria-label="Filter files">${_el_resume($scope0_id, "b")}</div>`);
2291
2291
  _script($scope0_id, "k3");
@@ -2324,7 +2324,7 @@ var diff_tree_default = _template("i", (input) => {
2324
2324
  scope: input.scope ?? null,
2325
2325
  file: key
2326
2326
  }), "i0", $scope0_id);
2327
- _html(`<aside${_attr_class(["_fh", { ["_fg"]: input.open === false }])}><div${_attr_class("_fi")}>`);
2327
+ _html(`<aside${_attr_class(["_e3", { ["_e2"]: input.open === false }])}><div${_attr_class("_e4")}>`);
2328
2328
  _set_serialize_reason(2);
2329
2329
  const $childScope = _peek_scope_id();
2330
2330
  file_filter_default({
@@ -2337,14 +2337,14 @@ var diff_tree_default = _template("i", (input) => {
2337
2337
  _if(() => {
2338
2338
  if (!input.sections.length && filter) {
2339
2339
  const $scope6_id = _scope_id();
2340
- _html(`<p${_attr_class("_fj")}>No files match.</p>`);
2340
+ _html(`<p${_attr_class("_e5")}>No files match.</p>`);
2341
2341
  writeScope($scope6_id, {});
2342
2342
  return 0;
2343
2343
  }
2344
2344
  }, $scope0_id, "d", 1, 1, 1, 0, 1);
2345
2345
  _for_of(input.sections, (section) => {
2346
2346
  const $scope1_id = _scope_id();
2347
- _html(`<div${_attr_class("_fk")}><button type=button${_attr_class(["_fl", { ["_fg"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fr")}>${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")}`);
2347
+ _html(`<div${_attr_class("_e6")}><button type=button${_attr_class(["_e7", { ["_e2"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fc")}>${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")}`);
2348
2348
  _if(() => {
2349
2349
  if (!collapsedRepos.has(section.id) || openedRepos.has(section.id)) {
2350
2350
  const $scope2_id = _scope_id();
@@ -2371,17 +2371,17 @@ var diff_tree_default = _template("i", (input) => {
2371
2371
  _if(() => {
2372
2372
  if (!hiddenByCollapse(row) && row.kind === "dir") {
2373
2373
  const $scope4_id = _scope_id();
2374
- _html(`<button type=button${_attr_class(["_fm", { ["_fg"]: collapsedDirs.has(dirKey(row.path)) }])}${_attr("title", row.path)}${_attr_style(`padding-left:${.35 + row.depth * .75}rem`)}><span${_attr_class("_fr")}>${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")}`);
2374
+ _html(`<button type=button${_attr_class(["_e8", { ["_e2"]: collapsedDirs.has(dirKey(row.path)) }])}${_attr("title", row.path)}${_attr_style(`padding-left:${.35 + row.depth * .75}rem`)}><span${_attr_class("_fc")}>${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")}`);
2375
2375
  _script($scope4_id, "i5");
2376
2376
  _subscribe($si__input_sections && $if_content__dirKey__closures, _subscribe($collapsedDirs__closures, writeScope($scope4_id, { Cab: 1 })));
2377
2377
  return 0;
2378
2378
  } else if (!hiddenByCollapse(row) && row.kind !== "dir") {
2379
2379
  const $scope5_id = _scope_id();
2380
- _html(`<a${_attr("href", hrefFor(row.file.key))}${_attr_class("_fn")}${_attr("title", row.file.path)}${_attr_style(`padding-left:${.5 + row.depth * .75}rem`)}><span${_attr_class("_fs")}${_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("_fo")}>${_escape(row.name)}${_el_resume($scope5_id, "e", $sg__input_sections)}</span>`);
2380
+ _html(`<a${_attr("href", hrefFor(row.file.key))}${_attr_class("_e9")}${_attr("title", row.file.path)}${_attr_style(`padding-left:${.5 + row.depth * .75}rem`)}><span${_attr_class("_fd")}${_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("_e_")}>${_escape(row.name)}${_el_resume($scope5_id, "e", $sg__input_sections)}</span>`);
2381
2381
  _if(() => {
2382
2382
  if (newKeys.has(row.file.key)) {
2383
2383
  const $scope7_id = _scope_id();
2384
- _html(`<span${_attr_class(["_w", "_fp"])} title="Changed since your last visit"></span>`);
2384
+ _html(`<span${_attr_class(["_w", "_fa"])} title="Changed since your last visit"></span>`);
2385
2385
  _serialize_if($scope0_reason, 1) && writeScope($scope7_id, {});
2386
2386
  return 0;
2387
2387
  }
@@ -2389,7 +2389,7 @@ var diff_tree_default = _template("i", (input) => {
2389
2389
  _if(() => {
2390
2390
  if (commentKeys.has(row.file.key)) {
2391
2391
  const $scope8_id = _scope_id();
2392
- _html(`<span${_attr_class("_fq")}>💬</span>`);
2392
+ _html(`<span${_attr_class("_fb")}>💬</span>`);
2393
2393
  _serialize_if($scope0_reason, 0) && writeScope($scope8_id, {});
2394
2394
  return 0;
2395
2395
  }
@@ -2491,9 +2491,9 @@ var diff_file_sheet_default = _template("e", (input) => {
2491
2491
  _if(() => {
2492
2492
  if (open) {
2493
2493
  const $scope1_id = _scope_id();
2494
- _html(`<div${_attr_class("_eR")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_eS")} role=dialog aria-label="Jump to file"><div${_attr_class("_eT")}><strong${_attr_class("_eQ")}>Files</strong><span${_attr_class("_eU")}>${_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, "_eP"])} title=Close aria-label=Close>`);
2494
+ _html(`<div${_attr_class("_fg")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_fh")} role=dialog aria-label="Jump to file"><div${_attr_class("_fi")}><strong${_attr_class("_ff")}>Files</strong><span${_attr_class("_fj")}>${_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, "_fe"])} title=Close aria-label=Close>`);
2495
2495
  icon_xmark_default({ size: 16 });
2496
- _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_e0")}>`);
2496
+ _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_fp")}>`);
2497
2497
  _set_serialize_reason(2);
2498
2498
  const $childScope = _peek_scope_id();
2499
2499
  file_filter_default({
@@ -2502,24 +2502,24 @@ var diff_file_sheet_default = _template("e", (input) => {
2502
2502
  filter = _new_filter;
2503
2503
  }, "e2", $scope1_id)
2504
2504
  });
2505
- _html(`</div><div${_attr_class("_eV")}>`);
2505
+ _html(`</div><div${_attr_class("_fk")}>`);
2506
2506
  _for_of(input.files, (file) => {
2507
2507
  const $scope2_id = _scope_id();
2508
2508
  const parts = splitKey(file.key);
2509
- _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_eW", "_u"])}><span${_attr_class("_e3")}${_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("_eX")}>`);
2509
+ _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_fl", "_u"])}><span${_attr_class("_fs")}${_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("_fm")}>`);
2510
2510
  _if(() => {
2511
2511
  if (parts.dir) {
2512
2512
  const $scope3_id = _scope_id();
2513
- _html(`<span${_attr_class("_eY")}><bdi>${_escape(parts.dir)}${_el_resume($scope3_id, "b", $sg__input_files)}/</bdi></span>`);
2513
+ _html(`<span${_attr_class("_fn")}><bdi>${_escape(parts.dir)}${_el_resume($scope3_id, "b", $sg__input_files)}/</bdi></span>`);
2514
2514
  $si__input_files && writeScope($scope3_id, { _: _scope_with_id($scope2_id) });
2515
2515
  return 0;
2516
2516
  }
2517
2517
  }, $scope2_id, "e", $sg__input_files, $sg__input_files, $sg__input_commentKeys__OR__input_newKeys__OR__input_files, 0, 1);
2518
- _html(`<span${_attr_class("_eZ")}><bdi>${_escape(parts.name)}${_el_resume($scope2_id, "g", $sg__input_files)}</bdi></span></span>`);
2518
+ _html(`<span${_attr_class("_fo")}><bdi>${_escape(parts.name)}${_el_resume($scope2_id, "g", $sg__input_files)}</bdi></span></span>`);
2519
2519
  _if(() => {
2520
2520
  if (newKeys.has(file.key)) {
2521
2521
  const $scope4_id = _scope_id();
2522
- _html(`<span${_attr_class(["_w", "_e2"])} title="Changed since your last visit"></span>`);
2522
+ _html(`<span${_attr_class(["_w", "_fr"])} title="Changed since your last visit"></span>`);
2523
2523
  _serialize_if($scope0_reason, 1) && writeScope($scope4_id, {});
2524
2524
  return 0;
2525
2525
  }
@@ -2543,7 +2543,7 @@ var diff_file_sheet_default = _template("e", (input) => {
2543
2543
  _if(() => {
2544
2544
  if (!input.files.length) {
2545
2545
  const $scope6_id = _scope_id();
2546
- _html(`<p${_attr_class("_e1")}>No files match.</p>`);
2546
+ _html(`<p${_attr_class("_fq")}>No files match.</p>`);
2547
2547
  $si__input_files_length && writeScope($scope6_id, {});
2548
2548
  return 0;
2549
2549
  }
@@ -2310,7 +2310,7 @@ var icon_sidebar_default = _template("U", (input) => {
2310
2310
  });
2311
2311
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
2312
2312
  });
2313
- var findInput = "_e6 _i";
2314
- var findIconBtn = "_e9 _g";
2313
+ var findInput = "_eR _i";
2314
+ var findIconBtn = "_eU _g";
2315
2315
  //#endregion
2316
2316
  export { _flush_head as $, metaTrunc as A, _attr_select_value as B, setPrimaryHost as C, _try as Ct, iconBtnRow as D, writeScope as Dt, iconBtnLg as E, withPageAssets as Et, _attr_class as F, _content as G, _attrs as H, _attr_details_or_dialog_open as I, _el as J, _content_resume as K, _attr_input_value as L, tone as M, $global as N, iconBtnXs as O, _attr as P, _existing_scope as Q, _attr_option_value as R, repoWebUrl as S, _trailers as St, btnSm as T, attrTag as Tt, _attrs_partial as U, _attr_style as V, _await as W, _el_resume as X, _el_read_error as Y, _escape as Z, sectionCount as _, _show_end as _t, diffTreeOpen as a, _if as at, icon_base_default as b, _template as bt, sideNavOpen as c, _resume_branch as ct, rankRepos as d, _scope_with_id as dt, _for_of as et, icon_search_default as f, _script as ft, row as g, _set_serialize_reason as gt, iconBtn as h, _serialize_if as ht, diffScope as i, _id as it, phase as j, inputLg as k, workspaceTab as l, _scope_id as lt, icon_refresh_default as m, _serialize_guard as mt, findInput as n, _hoist_read_error as nt, setDiffScope as o, _peek_scope_id as ot, icon_back_default as p, _sep as pt, _dynamic_tag as q, icon_sidebar_default as r, _html as rt, setWorkspaceTab as s, _resume as st, findIconBtn as t, _hoist as tt, fuzzy as u, _scope_reason as ut, toast_default as v, _show_start as vt, btnLg as w, _var as wt, repoLabel as x, _to_text as xt, icon_xmark_default as y, _subscribe as yt, _attr_or as z };