@dylanpiercey/work 0.0.57 → 0.0.58

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 (238) hide show
  1. package/bin/work.mjs +8 -13
  2. package/dist/{_DFLVEzHW.js → _BejZlkF2.js} +7 -2
  3. package/dist/_C_Ufy3TH.js +2 -0
  4. package/dist/{_w176gAgg.js → _Cb3KjoHw.js} +4 -4
  5. package/dist/{_FtnOihLp.js → _DvTZBSt5.js} +58 -58
  6. package/dist/index.mjs +181 -162
  7. package/dist/public/assets/{_DHHUcj7y.js → _2eGBqq7u.js} +1 -1
  8. package/dist/public/assets/_2eGBqq7u.js.br +0 -0
  9. package/dist/public/assets/{_DCOTsdST.js → _2enE2mXk.js} +1 -1
  10. package/dist/public/assets/_2enE2mXk.js.br +0 -0
  11. package/dist/public/assets/{_5Iu7-7Yu.js → _4nL2uQpg.js} +1 -1
  12. package/dist/public/assets/_4nL2uQpg.js.br +0 -0
  13. package/dist/public/assets/{_C0G6dH_3.js → _B1vDwe3h.js} +1 -1
  14. package/dist/public/assets/_B1vDwe3h.js.br +0 -0
  15. package/dist/public/assets/{_Cb49FSPc.js → _BDLl6zCb.js} +1 -1
  16. package/dist/public/assets/_BDLl6zCb.js.br +0 -0
  17. package/dist/public/assets/{_1fi3_epC2.js → _BEiHICL92.js} +1 -1
  18. package/dist/public/assets/_BEiHICL92.js.br +0 -0
  19. package/dist/public/assets/{_DdxTeNA9.js → _BJsj50u-.js} +1 -1
  20. package/dist/public/assets/_BJsj50u-.js.br +0 -0
  21. package/dist/public/assets/{_2eNsNaYO2.js → _BPUzMj1d2.js} +1 -1
  22. package/dist/public/assets/{_DrnyAK_d.js → _BROdi7Gp.js} +1 -1
  23. package/dist/public/assets/_BROdi7Gp.js.br +0 -0
  24. package/dist/public/assets/{_D4j2b-Sq.js → _BUbGUBWq.js} +1 -1
  25. package/dist/public/assets/_BUbGUBWq.js.br +0 -0
  26. package/dist/public/assets/{_BE7DCCdk.js → _BWEYGWEd.js} +1 -1
  27. package/dist/public/assets/_BWEYGWEd.js.br +0 -0
  28. package/dist/public/assets/{_Y34IZ-eE.js → _BWZ5PUEV.js} +1 -1
  29. package/dist/public/assets/_BWZ5PUEV.js.br +0 -0
  30. package/dist/public/assets/{_9MQkmzyB.js → _BX-7KyDA.js} +1 -1
  31. package/dist/public/assets/_BX-7KyDA.js.br +0 -0
  32. package/dist/public/assets/{_DtPDIeZK2.js → _BXMs216Y2.js} +1 -1
  33. package/dist/public/assets/_BXMs216Y2.js.br +0 -0
  34. package/dist/public/assets/{_MTTPoEES.js → _BX_wL0YE.js} +1 -1
  35. package/dist/public/assets/_BX_wL0YE.js.br +0 -0
  36. package/dist/public/assets/{_GL3cIFCF.js → _Bb3yoWYL.js} +1 -1
  37. package/dist/public/assets/_Bb3yoWYL.js.br +0 -0
  38. package/dist/public/assets/{_fnxdmnrX2.js → _BbqCJvNQ2.js} +1 -1
  39. package/dist/public/assets/_BbqCJvNQ2.js.br +0 -0
  40. package/dist/public/assets/{_9hZUx9rh2.js → _Bcfy36362.js} +1 -1
  41. package/dist/public/assets/{_BwLUD1-V.js → _BcxfZRD_.js} +1 -1
  42. package/dist/public/assets/_BcxfZRD_.js.br +0 -0
  43. package/dist/public/assets/{_CerTd-Ge.js → _BsIllTK-.js} +1 -1
  44. package/dist/public/assets/_BsIllTK-.js.br +0 -0
  45. package/dist/public/assets/{_DU8wr53F.js → _BsqNUn4o.js} +1 -1
  46. package/dist/public/assets/_BsqNUn4o.js.br +0 -0
  47. package/dist/public/assets/{_CEPbJDCZ2.js → _C16-D_Ch2.js} +1 -1
  48. package/dist/public/assets/_C16-D_Ch2.js.br +0 -0
  49. package/dist/public/assets/{_Dfp4rDzR.js → _C5UB-NsT.js} +1 -1
  50. package/dist/public/assets/{_DgPtL3nO2.js → _C7rg8vAk2.js} +1 -1
  51. package/dist/public/assets/_C7rg8vAk2.js.br +0 -0
  52. package/dist/public/assets/{_BTSelz322.js → _CABt3f9f2.js} +1 -1
  53. package/dist/public/assets/_CABt3f9f2.js.br +0 -0
  54. package/dist/public/assets/{_8SEHbP04.js → _CR2XV8hm.js} +1 -1
  55. package/dist/public/assets/_CR2XV8hm.js.br +0 -0
  56. package/dist/public/assets/{_cNK-MYFz.js → _CTObmQlY.js} +1 -1
  57. package/dist/public/assets/_CTObmQlY.js.br +0 -0
  58. package/dist/public/assets/{_BFI_GEk72.js → _CUrj0V6l2.js} +1 -1
  59. package/dist/public/assets/_CUrj0V6l2.js.br +0 -0
  60. package/dist/public/assets/{_ChH_lxP0.js → _CV_Ae5Rk.js} +1 -1
  61. package/dist/public/assets/_CV_Ae5Rk.js.br +0 -0
  62. package/dist/public/assets/{_Ch0jJRpF2.js → _CkGun6pW2.js} +1 -1
  63. package/dist/public/assets/_CkGun6pW2.js.br +0 -0
  64. package/dist/public/assets/{_PDPd6X9w.js → _CnQ1qTVp.js} +1 -1
  65. package/dist/public/assets/_CnQ1qTVp.js.br +0 -0
  66. package/dist/public/assets/{_BVgN-hoS2.js → _CoSL1kZW2.js} +1 -1
  67. package/dist/public/assets/_CoSL1kZW2.js.br +0 -0
  68. package/dist/public/assets/{_ynedISZP.js → _CogE7pQW.js} +1 -1
  69. package/dist/public/assets/_CogE7pQW.js.br +0 -0
  70. package/dist/public/assets/{_D6yFaFbX2.js → _Cs_cvN1j2.js} +1 -1
  71. package/dist/public/assets/_Cs_cvN1j2.js.br +0 -0
  72. package/dist/public/assets/{_Dmu0qP4E2.js → _Cw2Yp_cn2.js} +1 -1
  73. package/dist/public/assets/_Cw2Yp_cn2.js.br +0 -0
  74. package/dist/public/assets/{_GFh_4VnR.js → _CwmnUEmm.js} +1 -1
  75. package/dist/public/assets/_CwmnUEmm.js.br +0 -0
  76. package/dist/public/assets/{_wc0iQVbg.js → _CxKhvkgU.js} +1 -1
  77. package/dist/public/assets/_CxKhvkgU.js.br +0 -0
  78. package/dist/public/assets/{_B_XtpOB4.js → _D3ekmaa_.js} +1 -1
  79. package/dist/public/assets/_D3ekmaa_.js.br +0 -0
  80. package/dist/public/assets/{_ZYMh934D2.js → _D5QR-lwA2.js} +1 -1
  81. package/dist/public/assets/_D5QR-lwA2.js.br +0 -0
  82. package/dist/public/assets/{_B4kzyFEk2.js → _D67E_AcU2.js} +1 -1
  83. package/dist/public/assets/_D67E_AcU2.js.br +0 -0
  84. package/dist/public/assets/{_BDAJLqcL.js → _DEBVsO__.js} +1 -1
  85. package/dist/public/assets/_DEBVsO__.js.br +0 -0
  86. package/dist/public/assets/{_we6oEKqn.js → _DGChusXS.js} +1 -1
  87. package/dist/public/assets/_DGChusXS.js.br +0 -0
  88. package/dist/public/assets/{_C7Sxjw9-2.js → _DHQA_xFp2.js} +1 -1
  89. package/dist/public/assets/_DHQA_xFp2.js.br +0 -0
  90. package/dist/public/assets/{_B2LynlWb2.js → _DSCzozlR2.js} +1 -1
  91. package/dist/public/assets/_DSCzozlR2.js.br +0 -0
  92. package/dist/public/assets/{_DFb-bc2g.js → _DTQJWxJ3.js} +1 -1
  93. package/dist/public/assets/_DTQJWxJ3.js.br +0 -0
  94. package/dist/public/assets/{_zkD43Znp.js → _DW30hPqj.js} +5 -5
  95. package/dist/public/assets/_DW30hPqj.js.br +0 -0
  96. package/dist/public/assets/{_CLNzU4Fu2.js → _DYoRFUu32.js} +1 -1
  97. package/dist/public/assets/_DYoRFUu32.js.br +0 -0
  98. package/dist/public/assets/{_B2hrD7F7.js → _D_Ht0sHB.js} +1 -1
  99. package/dist/public/assets/_D_Ht0sHB.js.br +0 -0
  100. package/dist/public/assets/{_JaDTz4Zd.js → _DbAtKX6v.js} +1 -1
  101. package/dist/public/assets/_DbAtKX6v.js.br +0 -0
  102. package/dist/public/assets/{_Cyj2M_On2.js → _Dcepauhq2.js} +1 -1
  103. package/dist/public/assets/_Dcepauhq2.js.br +0 -0
  104. package/dist/public/assets/{_CV_YENib.js → _DdkVC_L3.js} +1 -1
  105. package/dist/public/assets/_DdkVC_L3.js.br +0 -0
  106. package/dist/public/assets/{_CFmJjroU.js → _De-u8h72.js} +1 -1
  107. package/dist/public/assets/_De-u8h72.js.br +0 -0
  108. package/dist/public/assets/{_CwTH8KQI.js → _DgowXRep.js} +1 -1
  109. package/dist/public/assets/_DgowXRep.js.br +0 -0
  110. package/dist/public/assets/{_eYTm2vWj.js → _Donn4ZV3.js} +1 -1
  111. package/dist/public/assets/_Donn4ZV3.js.br +0 -0
  112. package/dist/public/assets/{_T9SFwu6g.js → _DuBgsDGT.js} +1 -1
  113. package/dist/public/assets/_DuBgsDGT.js.br +0 -0
  114. package/dist/public/assets/{_1wDweXVz.js → _Dylxmxf9.js} +1 -1
  115. package/dist/public/assets/_Dylxmxf9.js.br +0 -0
  116. package/dist/public/assets/{_Cze8y5Dt.js → _DyraSGWg.js} +1 -1
  117. package/dist/public/assets/_DyraSGWg.js.br +0 -0
  118. package/dist/public/assets/{_HaM1Jlk_.js → _FcsxOYFa.js} +1 -1
  119. package/dist/public/assets/_FcsxOYFa.js.br +0 -0
  120. package/dist/public/assets/{_CQppsb6k2.js → _FrhVGlkX2.js} +1 -1
  121. package/dist/public/assets/_FrhVGlkX2.js.br +0 -0
  122. package/dist/public/assets/{_6T4AyNhc.js → _GT3_DJs7.js} +1 -1
  123. package/dist/public/assets/_GT3_DJs7.js.br +0 -0
  124. package/dist/public/assets/{__KJ088ly.js → _Gc8cRUIR.js} +1 -1
  125. package/dist/public/assets/_Gc8cRUIR.js.br +0 -0
  126. package/dist/public/assets/{_B9I0gYKr.js → _TYzcqd7s.js} +1 -1
  127. package/dist/public/assets/_TYzcqd7s.js.br +0 -0
  128. package/dist/public/assets/{_DoRfBKHD2.js → _Vhemgosw2.js} +1 -1
  129. package/dist/public/assets/_Vhemgosw2.js.br +0 -0
  130. package/dist/public/assets/{_D-cnMUsr2.js → _WO60AwgK2.js} +1 -1
  131. package/dist/public/assets/_WO60AwgK2.js.br +0 -0
  132. package/dist/public/assets/{_C5ycl8bH.js → __dsfQUPl.js} +1 -1
  133. package/dist/public/assets/__dsfQUPl.js.br +0 -0
  134. package/dist/public/assets/{_BeVJhIuF2.js → _aTBAqWUi2.js} +1 -1
  135. package/dist/public/assets/_aTBAqWUi2.js.br +0 -0
  136. package/dist/public/assets/{_DSCr8lsq.js → _eHliiA8e.js} +1 -1
  137. package/dist/public/assets/_eHliiA8e.js.br +0 -0
  138. package/dist/public/assets/{_D2U5c8OX.js → _h97mmeY5.js} +1 -1
  139. package/dist/public/assets/_h97mmeY5.js.br +0 -0
  140. package/dist/public/assets/{_Cdh1RpOT.js → _ok38vxPs.js} +1 -1
  141. package/dist/public/assets/_ok38vxPs.js.br +0 -0
  142. package/dist/public/assets/{_BnarL5fN.js → _rYS8Jg7q.js} +1 -1
  143. package/dist/public/assets/_rYS8Jg7q.js.br +0 -0
  144. package/dist/public/assets/{_CMh1B9b2.js → _rz4NzBjK.js} +1 -1
  145. package/dist/public/assets/_rz4NzBjK.js.br +0 -0
  146. package/dist/public/assets/{_Bwsljc8D.js → _sMuZrVfM.js} +1 -1
  147. package/dist/public/assets/_sMuZrVfM.js.br +3 -0
  148. package/dist/public/assets/{_jzPvuV0O.js → _uKbtpQux.js} +1 -1
  149. package/dist/public/assets/_uKbtpQux.js.br +0 -0
  150. package/dist/public/assets/{_BtfQL6MC.js → _vooPnW75.js} +1 -1
  151. package/dist/public/assets/_vooPnW75.js.br +0 -0
  152. package/dist/public/assets/{_BqVZXi4B2.js → _xriTRTEq2.js} +1 -1
  153. package/dist/public/assets/_xriTRTEq2.js.br +0 -0
  154. package/dist/public/assets/diff-view-C1EWWWXL.css +1 -0
  155. package/dist/public/assets/diff-view-C1EWWWXL.css.br +0 -0
  156. package/dist/public/assets/{index-CxFTRVMW.js → index-CMhO9RSz.js} +3 -3
  157. package/dist/public/assets/index-CMhO9RSz.js.br +0 -0
  158. package/dist/public/assets/{index-BVwzVz2z.css → index-I2jhJMJc.css} +1 -1
  159. package/dist/public/assets/index-I2jhJMJc.css.br +0 -0
  160. package/install.sh +3 -3
  161. package/package.json +1 -1
  162. package/dist/_CpT5OTA0.js +0 -2
  163. package/dist/public/assets/_1fi3_epC2.js.br +0 -0
  164. package/dist/public/assets/_1wDweXVz.js.br +0 -0
  165. package/dist/public/assets/_5Iu7-7Yu.js.br +0 -0
  166. package/dist/public/assets/_6T4AyNhc.js.br +0 -0
  167. package/dist/public/assets/_8SEHbP04.js.br +0 -0
  168. package/dist/public/assets/_9MQkmzyB.js.br +0 -0
  169. package/dist/public/assets/_B2LynlWb2.js.br +0 -0
  170. package/dist/public/assets/_B2hrD7F7.js.br +0 -0
  171. package/dist/public/assets/_B4kzyFEk2.js.br +0 -0
  172. package/dist/public/assets/_B9I0gYKr.js.br +0 -0
  173. package/dist/public/assets/_BDAJLqcL.js.br +0 -0
  174. package/dist/public/assets/_BE7DCCdk.js.br +0 -0
  175. package/dist/public/assets/_BFI_GEk72.js.br +0 -0
  176. package/dist/public/assets/_BTSelz322.js.br +0 -0
  177. package/dist/public/assets/_BVgN-hoS2.js.br +0 -0
  178. package/dist/public/assets/_B_XtpOB4.js.br +0 -0
  179. package/dist/public/assets/_BeVJhIuF2.js.br +0 -0
  180. package/dist/public/assets/_BnarL5fN.js.br +0 -0
  181. package/dist/public/assets/_BqVZXi4B2.js.br +0 -0
  182. package/dist/public/assets/_BtfQL6MC.js.br +0 -0
  183. package/dist/public/assets/_BwLUD1-V.js.br +0 -0
  184. package/dist/public/assets/_Bwsljc8D.js.br +0 -0
  185. package/dist/public/assets/_C0G6dH_3.js.br +0 -0
  186. package/dist/public/assets/_C5ycl8bH.js.br +0 -0
  187. package/dist/public/assets/_C7Sxjw9-2.js.br +0 -0
  188. package/dist/public/assets/_CEPbJDCZ2.js.br +0 -0
  189. package/dist/public/assets/_CFmJjroU.js.br +0 -0
  190. package/dist/public/assets/_CLNzU4Fu2.js.br +0 -0
  191. package/dist/public/assets/_CMh1B9b2.js.br +0 -0
  192. package/dist/public/assets/_CQppsb6k2.js.br +0 -0
  193. package/dist/public/assets/_CV_YENib.js.br +0 -0
  194. package/dist/public/assets/_Cb49FSPc.js.br +0 -0
  195. package/dist/public/assets/_Cdh1RpOT.js.br +0 -0
  196. package/dist/public/assets/_CerTd-Ge.js.br +0 -0
  197. package/dist/public/assets/_Ch0jJRpF2.js.br +0 -0
  198. package/dist/public/assets/_ChH_lxP0.js.br +0 -0
  199. package/dist/public/assets/_CwTH8KQI.js.br +0 -0
  200. package/dist/public/assets/_Cyj2M_On2.js.br +0 -0
  201. package/dist/public/assets/_Cze8y5Dt.js.br +0 -0
  202. package/dist/public/assets/_D-cnMUsr2.js.br +0 -0
  203. package/dist/public/assets/_D2U5c8OX.js.br +0 -0
  204. package/dist/public/assets/_D4j2b-Sq.js.br +0 -0
  205. package/dist/public/assets/_D6yFaFbX2.js.br +0 -0
  206. package/dist/public/assets/_DCOTsdST.js.br +0 -0
  207. package/dist/public/assets/_DFb-bc2g.js.br +0 -0
  208. package/dist/public/assets/_DHHUcj7y.js.br +0 -0
  209. package/dist/public/assets/_DSCr8lsq.js.br +0 -0
  210. package/dist/public/assets/_DU8wr53F.js.br +0 -0
  211. package/dist/public/assets/_DdxTeNA9.js.br +0 -0
  212. package/dist/public/assets/_DgPtL3nO2.js.br +0 -0
  213. package/dist/public/assets/_Dmu0qP4E2.js.br +0 -0
  214. package/dist/public/assets/_DoRfBKHD2.js.br +0 -0
  215. package/dist/public/assets/_DrnyAK_d.js.br +0 -0
  216. package/dist/public/assets/_DtPDIeZK2.js.br +0 -0
  217. package/dist/public/assets/_GFh_4VnR.js.br +0 -0
  218. package/dist/public/assets/_GL3cIFCF.js.br +0 -0
  219. package/dist/public/assets/_HaM1Jlk_.js.br +0 -0
  220. package/dist/public/assets/_JaDTz4Zd.js.br +0 -0
  221. package/dist/public/assets/_MTTPoEES.js.br +0 -0
  222. package/dist/public/assets/_PDPd6X9w.js.br +0 -0
  223. package/dist/public/assets/_T9SFwu6g.js.br +0 -0
  224. package/dist/public/assets/_Y34IZ-eE.js.br +0 -0
  225. package/dist/public/assets/_ZYMh934D2.js.br +0 -0
  226. package/dist/public/assets/__KJ088ly.js.br +0 -0
  227. package/dist/public/assets/_cNK-MYFz.js.br +0 -0
  228. package/dist/public/assets/_eYTm2vWj.js.br +0 -0
  229. package/dist/public/assets/_fnxdmnrX2.js.br +0 -0
  230. package/dist/public/assets/_jzPvuV0O.js.br +0 -0
  231. package/dist/public/assets/_wc0iQVbg.js.br +0 -0
  232. package/dist/public/assets/_we6oEKqn.js.br +0 -0
  233. package/dist/public/assets/_ynedISZP.js.br +0 -0
  234. package/dist/public/assets/_zkD43Znp.js.br +0 -0
  235. package/dist/public/assets/diff-view-BmH-xWiy.css +0 -1
  236. package/dist/public/assets/diff-view-BmH-xWiy.css.br +0 -0
  237. package/dist/public/assets/index-BVwzVz2z.css.br +0 -0
  238. package/dist/public/assets/index-CxFTRVMW.js.br +0 -0
package/bin/work.mjs CHANGED
@@ -23,7 +23,7 @@ import { fileURLToPath } from "node:url";
23
23
  import { createRequire } from "node:module";
24
24
  import readline from "node:readline/promises";
25
25
  import { doctor, formatDoctor } from "../lib/setup/doctor.mjs";
26
- import { authGithub, installAgent, installTool } from "../lib/setup/install.mjs";
26
+ import { installAgent, installTool } from "../lib/setup/install.mjs";
27
27
 
28
28
  const pkgRoot = path.dirname(path.dirname(fileURLToPath(import.meta.url)));
29
29
  const pkg = JSON.parse(fs.readFileSync(path.join(pkgRoot, "package.json"), "utf8"));
@@ -336,8 +336,8 @@ async function doctorCmd() {
336
336
 
337
337
  /**
338
338
  * Bring the machine to "ready": required tools, then optional ones (each
339
- * non-fatal), then gh sign-in, then agent CLIs. `--yes` never prompts —
340
- * sign-in and agents are deferred with a hint. Re-runs are idempotent
339
+ * non-fatal), then agent CLIs. `--yes` never prompts — agents are deferred
340
+ * with a hint. GitHub sign-in happens in the app, never here. Re-runs are idempotent
341
341
  * because everything is keyed off what doctor() found missing.
342
342
  */
343
343
  async function fix(d, { agents = "prompt" } = {}) {
@@ -354,16 +354,11 @@ async function fix(d, { agents = "prompt" } = {}) {
354
354
  warn(`${tool.label} install failed (non-fatal)`);
355
355
  }
356
356
  }
357
- const authed = d.github.some((h) => h.authed);
358
- if (!authed && have("gh")) {
359
- if (process.env.GH_TOKEN || process.env.GITHUB_TOKEN) {
360
- log("gh will use GH_TOKEN from the environment");
361
- } else if (yes) {
362
- warn("gh is not authenticated — run `gh auth login` later");
363
- } else {
364
- log("signing in to GitHub (PRs/clones) — open https://github.com/login/device in any browser and enter the code below; no browser is launched here");
365
- await authGithub("github.com", { interactive: true }).catch((err) => warn(err.message));
366
- }
357
+ // GitHub sign-in is a UI job (Settings GitHub runs gh's device flow and
358
+ // wires git credentials); here we only say so. GH_TOKEN still works headless.
359
+ if (!d.github.some((h) => h.authed)) {
360
+ if (process.env.GH_TOKEN || process.env.GITHUB_TOKEN) log("gh will use GH_TOKEN from the environment");
361
+ else warn("GitHub is not signed in — open the app and use Settings → GitHub → Sign in");
367
362
  }
368
363
  const missingAgents = d.agents.filter((a) => !a.installed);
369
364
  if (missingAgents.length && agents !== "skip") {
@@ -45,7 +45,12 @@ async function run$1(cmd, args, cwd, env) {
45
45
  });
46
46
  return stdout.trim();
47
47
  }
48
- var git = (args, cwd) => run$1("git", args, cwd);
48
+ /** Never let git wait on a terminal it doesn't have — a missing credential
49
+ * fails with a message instead of hanging the clone forever. */
50
+ var git = (args, cwd) => run$1("git", args, cwd, {
51
+ ...process.env,
52
+ GIT_TERMINAL_PROMPT: "0"
53
+ });
49
54
  /** `gh` against one GitHub host — `GH_HOST` picks the stored credential. */
50
55
  var gh = (args, host) => run$1("gh", args, void 0, host ? {
51
56
  ...process.env,
@@ -6429,7 +6434,7 @@ function publishChange(sessionId) {
6429
6434
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
6430
6435
  if (row?.workspace_id) {
6431
6436
  const workspaceId = row.workspace_id;
6432
- import("./_CpT5OTA0.js").then((m) => m.notifySessionsChanged(workspaceId));
6437
+ import("./_C_Ufy3TH.js").then((m) => m.notifySessionsChanged(workspaceId));
6433
6438
  return;
6434
6439
  }
6435
6440
  publish("sessions.changed");
@@ -0,0 +1,2 @@
1
+ import { f as notifySessionsChanged } from "./_BejZlkF2.js";
2
+ export { notifySessionsChanged };
@@ -2098,8 +2098,8 @@ var toast_default = _template("x", (input) => {
2098
2098
  });
2099
2099
  _resume_branch($scope0_id);
2100
2100
  });
2101
- var sectionCount = "_be _C _D";
2102
- var row = "_bp _bh";
2101
+ var sectionCount = "_bn _C _D";
2102
+ var row = "_by _bq";
2103
2103
  var iconBtn = "_R _d";
2104
2104
  //#endregion
2105
2105
  //#region src/tags/icons/icon-base.marko
@@ -2246,8 +2246,8 @@ var icon_sidebar_default = _template("S", (input) => {
2246
2246
  });
2247
2247
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
2248
2248
  });
2249
- var findInput = "_fa _f";
2250
- var findIconBtn = "_fd _d";
2249
+ var findInput = "_eY _f";
2250
+ var findIconBtn = "_e1 _d";
2251
2251
  //#endregion
2252
2252
  //#region src/tags/icons/icon-search.marko
2253
2253
  var icon_search_default = _template("P", (input) => {
@@ -1,4 +1,4 @@
1
- import { A as _attr_class, D as tone, F as _attr_select_value, G as _el_resume, I as _attr_style, K as _escape, M as _attr_input_value, N as _attr_option_value, Q as _html, S as iconBtnRow, St as writeScope, U as _el, V as _content_resume, W as _el_read_error, Y as _for_of, a as diffTreeOpen, at as _scope_reason, bt as attrTag, ct as _sep, dt as _set_serialize_reason, et as _if, f as icon_back_default, ft as _show_end, ht as _template, i as icon_sidebar_default, it as _scope_id, j as _attr_details_or_dialog_open, k as _attr, lt as _serialize_guard, mt as _subscribe, n as findIconBtn, nt as _resume, o as diffUncommitted, ot as _scope_with_id, p as icon_refresh_default, pt as _show_start, q as _existing_scope, r as findInput, rt as _resume_branch, st as _script, t as icon_search_default, tt as _peek_scope_id, u as fuzzy, ut as _serialize_if, v as toast_default, x as iconBtnLg } from "./_w176gAgg.js";
1
+ import { A as _attr_class, D as tone, F as _attr_select_value, G as _el_resume, I as _attr_style, K as _escape, M as _attr_input_value, N as _attr_option_value, Q as _html, S as iconBtnRow, St as writeScope, U as _el, V as _content_resume, W as _el_read_error, Y as _for_of, a as diffTreeOpen, at as _scope_reason, bt as attrTag, ct as _sep, dt as _set_serialize_reason, et as _if, f as icon_back_default, ft as _show_end, ht as _template, i as icon_sidebar_default, it as _scope_id, j as _attr_details_or_dialog_open, k as _attr, lt as _serialize_guard, mt as _subscribe, n as findIconBtn, nt as _resume, o as diffUncommitted, ot as _scope_with_id, p as icon_refresh_default, pt as _show_start, q as _existing_scope, r as findInput, rt as _resume_branch, st as _script, t as icon_search_default, tt as _peek_scope_id, u as fuzzy, ut as _serialize_if, v as toast_default, x as iconBtnLg } from "./_Cb3KjoHw.js";
2
2
  //#region src/client/clipboard.ts
3
3
  /** Copy text to the clipboard. `navigator.clipboard` needs a secure
4
4
  * context — absent over plain-http LAN origins — so fall back to a hidden
@@ -260,10 +260,10 @@ function treeRows(files) {
260
260
  walk(root, 0, "");
261
261
  return rows;
262
262
  }
263
- var treeToggle = "_d6 _R _d";
264
- var repoWorktree = "_ey _r";
265
- var repoTitle = "_eA _q";
266
- var fileFilter = "_eX _f";
263
+ var treeToggle = "_dH _R _d";
264
+ var repoWorktree = "_d_ _r";
265
+ var repoTitle = "_eb _q";
266
+ var fileFilter = "_eU _f";
267
267
  //#endregion
268
268
  //#region src/tags/file-filter.marko
269
269
  var file_filter_default = _template("j", (input) => {
@@ -293,7 +293,7 @@ var file_filter_default = _template("j", (input) => {
293
293
  pending = v;
294
294
  box.timer = setTimeout(flush, 150);
295
295
  }, "j2", $scope0_id);
296
- _html(`<div${_attr_class("_eW")}><input${_attr_input_value($scope0_id, "b", draft, _resume(function(v) {
296
+ _html(`<div${_attr_class("_eT")}><input${_attr_input_value($scope0_id, "b", draft, _resume(function(v) {
297
297
  type(v);
298
298
  }, "j0", $scope0_id))}${_attr_class(fileFilter)} type=search placeholder="Filter files…" aria-label="Filter files">${_el_resume($scope0_id, "b")}</div>`);
299
299
  _script($scope0_id, "j3");
@@ -319,7 +319,7 @@ var diff_send_default = _template("g", (input) => {
319
319
  let sendTarget = null;
320
320
  const sessions = input.sessions || [];
321
321
  const sendPick = sessions.some((s) => s.id === sendTarget) ? sendTarget : sessions[0]?.id ?? null;
322
- _html(`<span${_attr_class("_fl")}><button type=button${_attr_class("_i")} title="Copy comments as markdown">Copy${_el_resume($scope0_id, "c")}</button>${_el_resume($scope0_id, "b")}`);
322
+ _html(`<span${_attr_class("_fi")}><button type=button${_attr_class("_i")} title="Copy comments as markdown">Copy${_el_resume($scope0_id, "c")}</button>${_el_resume($scope0_id, "b")}`);
323
323
  _if(() => {
324
324
  if (sessions.length === 1) {
325
325
  const $scope1_id = _scope_id();
@@ -329,11 +329,11 @@ var diff_send_default = _template("g", (input) => {
329
329
  return 0;
330
330
  } else if (sessions.length) {
331
331
  const $scope2_id = _scope_id();
332
- _html(`<span${_attr_class("_fm")}><button type=button${_attr_class(["_j", "_fn"])}${_attr("disabled", sending)}>Send to${_el_resume($scope2_id, "c")}</button>${_el_resume($scope2_id, "b")}`);
332
+ _html(`<span${_attr_class("_fj")}><button type=button${_attr_class(["_j", "_fk"])}${_attr("disabled", sending)}>Send to${_el_resume($scope2_id, "c")}</button>${_el_resume($scope2_id, "b")}`);
333
333
  _attr_select_value($scope2_id, "d", sendTarget, _resume((_new_sendTarget) => {
334
334
  sendTarget = _new_sendTarget;
335
335
  }, "g0", $scope2_id), () => {
336
- _html(`<select${_attr_class("_fo")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
336
+ _html(`<select${_attr_class("_fl")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
337
337
  _for_of(sessions, (s) => {
338
338
  const $scope3_id = _scope_id();
339
339
  _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)}`);
@@ -1869,9 +1869,9 @@ var diff_find_default = _template("f", (input) => {
1869
1869
  el.select();
1870
1870
  }, 0);
1871
1871
  }, "f5", $scope0_id);
1872
- _html(`<div${_attr_class(["_e_", !open && "_e9"])} aria-hidden=${open ? "false" : "true"}><input${_attr_input_value($scope0_id, "b", query || "", _resume(function(v) {
1872
+ _html(`<div${_attr_class(["_eX", !open && "_eW"])} aria-hidden=${open ? "false" : "true"}><input${_attr_input_value($scope0_id, "b", query || "", _resume(function(v) {
1873
1873
  type(v);
1874
- }, "f0", $scope0_id))}${_attr_class(findInput)} type=search enterkeyhint=search autocomplete=off tabindex=${open ? "0" : "-1"} placeholder="Find in diffs" aria-label="Find in diffs">${_el_resume($scope0_id, "b")}<span${_attr_class("_fc")}>${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"}>×</button>${_el_resume($scope0_id, "g")}</div>${_el_resume($scope0_id, "a")}`);
1874
+ }, "f0", $scope0_id))}${_attr_class(findInput)} type=search enterkeyhint=search autocomplete=off tabindex=${open ? "0" : "-1"} placeholder="Find in diffs" aria-label="Find in diffs">${_el_resume($scope0_id, "b")}<span${_attr_class("_e0")}>${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"}>×</button>${_el_resume($scope0_id, "g")}</div>${_el_resume($scope0_id, "a")}`);
1875
1875
  _script($scope0_id, "f6");
1876
1876
  _script($scope0_id, "f7");
1877
1877
  _script($scope0_id, "f8");
@@ -1910,7 +1910,7 @@ var diff_file_default = _template("e", (input) => {
1910
1910
  _scope_reason();
1911
1911
  const $scope0_id = _scope_id();
1912
1912
  _el($scope0_id, "e0");
1913
- _html(`<div${_attr_class(["_eY", input.class])}></div>${_el_resume($scope0_id, "a")}`);
1913
+ _html(`<div${_attr_class(["_eV", input.class])}></div>${_el_resume($scope0_id, "a")}`);
1914
1914
  _script($scope0_id, "e1");
1915
1915
  writeScope($scope0_id, {
1916
1916
  e: input.file,
@@ -1939,10 +1939,10 @@ var diff_tree_default = _template("h", (input) => {
1939
1939
  let openedRepos = input.openedRepos;
1940
1940
  let collapsedDirs = /* @__PURE__ */ new Set();
1941
1941
  const commentKeys = input.commentKeys || /* @__PURE__ */ new Set();
1942
- _html(`<aside${_attr_class(["_fq", { ["_fp"]: input.open === false }])}>`);
1942
+ _html(`<aside${_attr_class(["_fn", { ["_fm"]: input.open === false }])}>`);
1943
1943
  _for_of(input.sections, (section) => {
1944
1944
  const $scope1_id = _scope_id();
1945
- _html(`<div${_attr_class("_fr")}><button type=button${_attr_class(["_fs", { ["_fp"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fx")}>${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")}`);
1945
+ _html(`<div${_attr_class("_fo")}><button type=button${_attr_class(["_fp", { ["_fm"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fu")}>${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")}`);
1946
1946
  _if(() => {
1947
1947
  if (!collapsedRepos.has(section.id) || openedRepos.has(section.id)) {
1948
1948
  const $scope2_id = _scope_id();
@@ -1969,17 +1969,17 @@ var diff_tree_default = _template("h", (input) => {
1969
1969
  _if(() => {
1970
1970
  if (!hiddenByCollapse(row) && row.kind === "dir") {
1971
1971
  const $scope5_id = _scope_id();
1972
- _html(`<button type=button${_attr_class(["_ft", { ["_fp"]: collapsedDirs.has(dirKey(row.path)) }])}${_attr("title", row.path)}${_attr_style(`padding-left:${.35 + row.depth * .75}rem`)}><span${_attr_class("_fx")}>${collapsedDirs.has(dirKey(row.path)) ? "▸" : "▾"}${_el_resume($scope5_id, "c")}</span>${_escape(row.label)}${_el_resume($scope5_id, "d", $sg__input_sections)}/</button>${_el_resume($scope5_id, "a")}`);
1972
+ _html(`<button type=button${_attr_class(["_fq", { ["_fm"]: collapsedDirs.has(dirKey(row.path)) }])}${_attr("title", row.path)}${_attr_style(`padding-left:${.35 + row.depth * .75}rem`)}><span${_attr_class("_fu")}>${collapsedDirs.has(dirKey(row.path)) ? "▸" : "▾"}${_el_resume($scope5_id, "c")}</span>${_escape(row.label)}${_el_resume($scope5_id, "d", $sg__input_sections)}/</button>${_el_resume($scope5_id, "a")}`);
1973
1973
  _script($scope5_id, "h3");
1974
1974
  _subscribe($si__input_sections && $if_content__dirKey__closures, _subscribe($collapsedDirs__closures, writeScope($scope5_id, { Cv: 1 })));
1975
1975
  return 0;
1976
1976
  } else if (!hiddenByCollapse(row) && row.kind !== "dir") {
1977
1977
  const $scope4_id = _scope_id();
1978
- _html(`<button type=button${_attr_class("_fu")}${_attr("title", row.file.path)}${_attr_style(`padding-left:${.5 + row.depth * .75}rem`)}><span${_attr_class("_fy")}${_attr("data-status", row.file.status)}>${_escape(row.file.status)}${_el_resume($scope4_id, "c", $sg__input_sections)}</span>${_el_resume($scope4_id, "b", $sg__input_sections)}<span${_attr_class("_fv")}>${_escape(row.name)}${_el_resume($scope4_id, "e", $sg__input_sections)}</span>`);
1978
+ _html(`<button type=button${_attr_class("_fr")}${_attr("title", row.file.path)}${_attr_style(`padding-left:${.5 + row.depth * .75}rem`)}><span${_attr_class("_fv")}${_attr("data-status", row.file.status)}>${_escape(row.file.status)}${_el_resume($scope4_id, "c", $sg__input_sections)}</span>${_el_resume($scope4_id, "b", $sg__input_sections)}<span${_attr_class("_fs")}>${_escape(row.name)}${_el_resume($scope4_id, "e", $sg__input_sections)}</span>`);
1979
1979
  _if(() => {
1980
1980
  if (commentKeys.has(row.file.key)) {
1981
1981
  const $scope6_id = _scope_id();
1982
- _html(`<span${_attr_class("_fw")}>💬</span>`);
1982
+ _html(`<span${_attr_class("_ft")}>💬</span>`);
1983
1983
  _serialize_if($scope0_reason, 0) && writeScope($scope6_id, {});
1984
1984
  return 0;
1985
1985
  }
@@ -2050,10 +2050,10 @@ var diff_file_sheet_default = _template("d", (input) => {
2050
2050
  _if(() => {
2051
2051
  if (open) {
2052
2052
  const $scope1_id = _scope_id();
2053
- _html(`<div${_attr_class("_e1")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_e2")} role=dialog aria-label="Jump to file"><div${_attr_class("_e3")}><strong${_attr_class("_e0")}>Files</strong><span${_attr_class("_e4")}>${_escape(input.files.length)}${_el_resume($scope1_id, "f", _serialize_guard($scope0_reason, 6))}${_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, "_eZ"])} title=Close aria-label=Close>×</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_e5")}>`);
2053
+ _html(`<div${_attr_class("_fa")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_fb")} role=dialog aria-label="Jump to file"><div${_attr_class("_fc")}><strong${_attr_class("_e_")}>Files</strong><span${_attr_class("_fd")}>${_escape(input.files.length)}${_el_resume($scope1_id, "f", _serialize_guard($scope0_reason, 6))}${_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, "_e9"])} title=Close aria-label=Close>×</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_fe")}>`);
2054
2054
  _for_of(input.files, (file) => {
2055
2055
  const $scope2_id = _scope_id();
2056
- _html(`<button type=button${_attr_class(["_e6", "_r"])}><span${_attr_class("_e8")}${_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("_e7")}${_attr("title", file.key)}><bdi>${_escape(file.key)}${_el_resume($scope2_id, "e", $sg__input_files)}</bdi></span>${_el_resume($scope2_id, "d", $sg__input_files)}`);
2056
+ _html(`<button type=button${_attr_class(["_ff", "_r"])}><span${_attr_class("_fh")}${_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("_fg")}${_attr("title", file.key)}><bdi>${_escape(file.key)}${_el_resume($scope2_id, "e", $sg__input_files)}</bdi></span>${_el_resume($scope2_id, "d", $sg__input_files)}`);
2057
2057
  _if(() => {
2058
2058
  if (commentKeys.has(file.key)) {
2059
2059
  const $scope3_id = _scope_id();
@@ -2447,11 +2447,11 @@ var diff_view_default = _template("i", (input) => {
2447
2447
  revealSearchHit();
2448
2448
  }, 0);
2449
2449
  }, "i20", $scope0_id);
2450
- _html(`<div${_attr_class("_d3")}><div${_attr_class("_d8")}><div${_attr_class(["_d9", { ["_ea"]: comments.length > 0 }])}><div${_attr_class("_ek")}>`);
2450
+ _html(`<div${_attr_class("_dE")}><div${_attr_class("_dJ")}><div${_attr_class(["_dK", { ["_dM"]: comments.length > 0 }])}><div${_attr_class("_dW")}>`);
2451
2451
  _if(() => {
2452
2452
  if (input.onExit) {
2453
2453
  const $scope1_id = _scope_id();
2454
- _html(`<button${_attr_class([iconBtnRow, "_d_"])} title="Back to terminal (Esc)">`);
2454
+ _html(`<button${_attr_class([iconBtnRow, "_dL"])} title="Back to terminal (Esc)">`);
2455
2455
  icon_back_default({ size: 14 });
2456
2456
  _html(`</button>${_el_resume($scope1_id, "a")}`);
2457
2457
  _script($scope1_id, "i36");
@@ -2459,7 +2459,7 @@ var diff_view_default = _template("i", (input) => {
2459
2459
  return 0;
2460
2460
  }
2461
2461
  }, $scope0_id, "e", $sg__input_onExit, $sg__input_onExit, 1, 0, 1);
2462
- _html(`<h1${_attr_class("_ec")}>Review</h1><div${_attr_class("_el")}>`);
2462
+ _html(`<h1${_attr_class("_dO")}>Review</h1><div${_attr_class("_dX")}>`);
2463
2463
  _set_serialize_reason(2);
2464
2464
  const $childScope = _peek_scope_id();
2465
2465
  file_filter_default({
@@ -2468,16 +2468,16 @@ var diff_view_default = _template("i", (input) => {
2468
2468
  fileFilter = _new_fileFilter;
2469
2469
  }, "i21", $scope0_id)
2470
2470
  });
2471
- _html(`</div><div${_attr_class("_eb")}><span${_attr_class("_em")}>`);
2471
+ _html(`</div><div${_attr_class("_dN")}><span${_attr_class("_dY")}>`);
2472
2472
  _if(() => {
2473
2473
  if (lineStats.additions || lineStats.deletions) {
2474
2474
  const $scope27_id = _scope_id();
2475
- _html(`<span${_attr_class("_en")}>+<!>${_escape(lineStats.additions)}${_el_resume($scope27_id, "b")}</span><span${_attr_class("_eo")}>−<!>${_escape(lineStats.deletions)}${_el_resume($scope27_id, "d")}</span>`);
2475
+ _html(`<span${_attr_class("_dZ")}>+<!>${_escape(lineStats.additions)}${_el_resume($scope27_id, "b")}</span><span${_attr_class("_d0")}>−<!>${_escape(lineStats.deletions)}${_el_resume($scope27_id, "d")}</span>`);
2476
2476
  writeScope($scope27_id, {});
2477
2477
  return 0;
2478
2478
  } else {
2479
2479
  const $scope29_id = _scope_id();
2480
- _html(`<span${_attr_class("_ep")}>0</span>`);
2480
+ _html(`<span${_attr_class("_d1")}>0</span>`);
2481
2481
  writeScope($scope29_id, {});
2482
2482
  return 1;
2483
2483
  }
@@ -2485,7 +2485,7 @@ var diff_view_default = _template("i", (input) => {
2485
2485
  _if(() => {
2486
2486
  if (comments.length) {
2487
2487
  const $scope13_id = _scope_id();
2488
- _html(`<span${_attr_class("_eq")}>·</span>${_escape(comments.length)}${_el_resume($scope13_id, "b")} comment<!>${comments.length === 1 ? "" : "s"}${_el_resume($scope13_id, "c")}`);
2488
+ _html(`<span${_attr_class("_d2")}>·</span>${_escape(comments.length)}${_el_resume($scope13_id, "b")} comment<!>${comments.length === 1 ? "" : "s"}${_el_resume($scope13_id, "c")}`);
2489
2489
  writeScope($scope13_id, {});
2490
2490
  return 0;
2491
2491
  }
@@ -2505,23 +2505,23 @@ var diff_view_default = _template("i", (input) => {
2505
2505
  return 0;
2506
2506
  }
2507
2507
  }, $scope0_id, "m", 1, 1, 1, 0, 1);
2508
- _html(`</div><div${_attr_class("_d7")}><button${_attr_class([
2508
+ _html(`</div><div${_attr_class("_dI")}><button${_attr_class([
2509
2509
  treeToggle,
2510
- "_d5",
2511
- { ["_d4"]: treeOpen }
2510
+ "_dG",
2511
+ { ["_dF"]: treeOpen }
2512
2512
  ])} title=${treeOpen ? "\"Hide file tree\"" : "\"Show file tree\""}>`);
2513
2513
  icon_sidebar_default({ size: 14 });
2514
- _html(`</button>${_el_resume($scope0_id, "o")}<button${_attr_class([iconBtnRow, "_d5"])} title="Refresh diff"${_attr("disabled", loading)}>`);
2514
+ _html(`</button>${_el_resume($scope0_id, "o")}<button${_attr_class([iconBtnRow, "_dG"])} title="Refresh diff"${_attr("disabled", loading)}>`);
2515
2515
  _set_serialize_reason(1);
2516
2516
  const $childScope3 = _peek_scope_id();
2517
2517
  icon_refresh_default({
2518
2518
  size: 14,
2519
2519
  class: loading && "_y"
2520
2520
  });
2521
- _html(`</button>${_el_resume($scope0_id, "q")}<button${_attr_class(["_i", "_eR"])} title="Jump to file">Files (<!>${_escape(shownFiles.length)}${_el_resume($scope0_id, "t")})</button>${_el_resume($scope0_id, "s")}<div${_attr_class("_er")} role=group aria-label="Review scope"><button type=button${_attr_class(["_et", { ["_es"]: !uncommitted }])} aria-pressed=${!uncommitted ? "true" : "false"} title="Committed changes only — base…tip, no working-tree edits"${_attr("disabled", loading)}>Committed</button>${_el_resume($scope0_id, "v")}<button type=button${_attr_class(["_et", { ["_es"]: uncommitted }])} aria-pressed=${uncommitted ? "true" : "false"} title="Include uncommitted and untracked files in the working tree"${_attr("disabled", loading)}>Working tree</button>${_el_resume($scope0_id, "w")}</div><button type=button${_attr_class(["_eu", {
2522
- ["_es"]: uncommitted,
2521
+ _html(`</button>${_el_resume($scope0_id, "q")}<button${_attr_class(["_i", "_es"])} title="Jump to file">Files (<!>${_escape(shownFiles.length)}${_el_resume($scope0_id, "t")})</button>${_el_resume($scope0_id, "s")}<div${_attr_class("_d3")} role=group aria-label="Review scope"><button type=button${_attr_class(["_d5", { ["_d4"]: !uncommitted }])} aria-pressed=${!uncommitted ? "true" : "false"} title="Committed changes only — base…tip, no working-tree edits"${_attr("disabled", loading)}>Committed</button>${_el_resume($scope0_id, "v")}<button type=button${_attr_class(["_d5", { ["_d4"]: uncommitted }])} aria-pressed=${uncommitted ? "true" : "false"} title="Include uncommitted and untracked files in the working tree"${_attr("disabled", loading)}>Working tree</button>${_el_resume($scope0_id, "w")}</div><button type=button${_attr_class(["_d6", {
2522
+ ["_d4"]: uncommitted,
2523
2523
  ["_V"]: uncommitted
2524
- }])} aria-pressed=${uncommitted ? "true" : "false"} title=${uncommitted ? "\"Working tree (incl. uncommitted) — tap for committed only\"" : "\"Committed only — tap to include the working tree\""}${_attr("disabled", loading)}>${uncommitted ? "Working tree" : "Committed"}${_el_resume($scope0_id, "y")}</button>${_el_resume($scope0_id, "x")}<div${_attr_class(["_ef", { ["_ee"]: !findOpen }])}>`);
2524
+ }])} aria-pressed=${uncommitted ? "true" : "false"} title=${uncommitted ? "\"Working tree (incl. uncommitted) — tap for committed only\"" : "\"Committed only — tap to include the working tree\""}${_attr("disabled", loading)}>${uncommitted ? "Working tree" : "Committed"}${_el_resume($scope0_id, "y")}</button>${_el_resume($scope0_id, "x")}<div${_attr_class(["_dR", { ["_dQ"]: !findOpen }])}>`);
2525
2525
  _set_serialize_reason(2);
2526
2526
  const $childScope4 = _peek_scope_id();
2527
2527
  diff_find_default({
@@ -2538,11 +2538,11 @@ var diff_view_default = _template("i", (input) => {
2538
2538
  });
2539
2539
  _html(`</div>${_el_resume($scope0_id, "z")}<button${_attr_class([
2540
2540
  iconBtnRow,
2541
- "_ed",
2542
- "_d5"
2541
+ "_dP",
2542
+ "_dG"
2543
2543
  ])} title="Find in the review (⌘/Ctrl+F)" aria-label="Find in the review"${_attr("hidden", findOpen)}>`);
2544
2544
  icon_search_default({ size: 14 });
2545
- _html(`</button>${_el_resume($scope0_id, "a1")}</div></div>${_el_resume($scope0_id, "c")}<div${_attr_class("_ei")} data-diff-main>`);
2545
+ _html(`</button>${_el_resume($scope0_id, "a1")}</div></div>${_el_resume($scope0_id, "c")}<div${_attr_class("_dU")} data-diff-main>`);
2546
2546
  _if(() => {
2547
2547
  if (error) {
2548
2548
  const $scope14_id = _scope_id();
@@ -2565,7 +2565,7 @@ var diff_view_default = _template("i", (input) => {
2565
2565
  _if(() => {
2566
2566
  if (!repos && loading) {
2567
2567
  const $scope30_id = _scope_id();
2568
- _html(`<p${_attr_class("_bo")}>Loading diff…</p>`);
2568
+ _html(`<p${_attr_class("_bx")}>Loading diff…</p>`);
2569
2569
  writeScope($scope30_id, {});
2570
2570
  return 0;
2571
2571
  }
@@ -2648,7 +2648,7 @@ var diff_view_default = _template("i", (input) => {
2648
2648
  _html(`${i > 0 ? " · " : ""}${_el_resume($scope31_id, "a")}<!>${_escape(repo.worktree)}${_el_resume($scope31_id, "b")} #<!>${_escape(repo.pr.number)}${_el_resume($scope31_id, "c")}`);
2649
2649
  writeScope($scope31_id, {});
2650
2650
  }, "id", $scope28_id, "b");
2651
- _html(` — this view has a newer tip than the PR page.</span><span${_attr_class(["_r", "_ej"])}>`);
2651
+ _html(` — this view has a newer tip than the PR page.</span><span${_attr_class(["_r", "_dV"])}>`);
2652
2652
  _for_of(driftRepos, (repo, i) => {
2653
2653
  const $scope32_id = _scope_id();
2654
2654
  _html(`<span${_attr("title", `origin/${repo.pr.headRefName} ${repo.head} · GitHub ${repo.pr.headRefOid}`)}>${i > 0 ? " · " : ""}${_el_resume($scope32_id, "b")}<!>${_escape(shortSha(repo.head))}${_el_resume($scope32_id, "c")} → <!>${_escape(shortSha(repo.pr.headRefOid))}${_el_resume($scope32_id, "d")}</span>${_el_resume($scope32_id, "a")}`);
@@ -2700,12 +2700,12 @@ var diff_view_default = _template("i", (input) => {
2700
2700
  _if(() => {
2701
2701
  if (repos && !allFiles.length) {
2702
2702
  const $scope26_id = _scope_id();
2703
- _html(`<p${_attr_class("_bo")}>${repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base."}${_el_resume($scope26_id, "b")}</p>`);
2703
+ _html(`<p${_attr_class("_bx")}>${repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base."}${_el_resume($scope26_id, "b")}</p>`);
2704
2704
  writeScope($scope26_id, {});
2705
2705
  return 0;
2706
2706
  } else if (repos && !shownFiles.length && !findState.hit) {
2707
2707
  const $scope18_id = _scope_id();
2708
- _html(`<p${_attr_class("_bo")}>${findState.query.trim() ? "No matches in diffs." : `No files match "${_escape(`${fileFilter}`)}".`}${_el_resume($scope18_id, "b")}</p>`);
2708
+ _html(`<p${_attr_class("_bx")}>${findState.query.trim() ? "No matches in diffs." : `No files match "${_escape(`${fileFilter}`)}".`}${_el_resume($scope18_id, "b")}</p>`);
2709
2709
  writeScope($scope18_id, {});
2710
2710
  return 1;
2711
2711
  }
@@ -2734,16 +2734,16 @@ var diff_view_default = _template("i", (input) => {
2734
2734
  _if(() => {
2735
2735
  if (repoFiles.length || repo.pr) {
2736
2736
  const $scope4_id = _scope_id();
2737
- _html(`<section${_attr_class("_ev")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownInRepo.length && !repo.pr && findState.hit?.repo !== repo.id)}>`);
2737
+ _html(`<section${_attr_class("_d7")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownInRepo.length && !repo.pr && findState.hit?.repo !== repo.id)}>`);
2738
2738
  _if(() => {
2739
2739
  if (repoList.length > 1) {
2740
2740
  const $scope5_id = _scope_id();
2741
2741
  const repoCollapsed = collapsedRepos.has(repo.id);
2742
2742
  const repoExpanding = expandingRepos.has(repo.id);
2743
- _html(`<button type=button${_attr_class(["_ew", repoCollapsed && "_ex"])} aria-expanded=${!repoCollapsed ? "true" : "false"} aria-busy=${repoExpanding ? "true" : "false"}${repoCollapsed ? _attr("title", `Show ${shownInRepo.length || repoFiles.length} files`) : " title=\"Hide files\""}><span${_attr_class([
2744
- "_eM",
2745
- !repoCollapsed && "_eN",
2746
- repoExpanding && "_eO"
2743
+ _html(`<button type=button${_attr_class(["_d8", repoCollapsed && "_d9"])} aria-expanded=${!repoCollapsed ? "true" : "false"} aria-busy=${repoExpanding ? "true" : "false"}${repoCollapsed ? _attr("title", `Show ${shownInRepo.length || repoFiles.length} files`) : " title=\"Hide files\""}><span${_attr_class([
2744
+ "_en",
2745
+ !repoCollapsed && "_eo",
2746
+ repoExpanding && "_ep"
2747
2747
  ])} aria-hidden=true>${repoCollapsed ? "▸" : "▾"}${_el_resume($scope5_id, "c")}</span>${_el_resume($scope5_id, "b")}<span${_attr_class(repoWorktree)}>${_escape(repo.worktree)}${_el_resume($scope5_id, "e")}</span>`);
2748
2748
  _if(() => {
2749
2749
  if (repo.pr) {
@@ -2765,14 +2765,14 @@ var diff_view_default = _template("i", (input) => {
2765
2765
  }
2766
2766
  }, $scope5_id, "f");
2767
2767
  const compare$1 = reviewCompareLabel(repo.pr?.baseRefName || repo.base, repo.pr?.headRefName || repo.branch, input.workspaceBranch || "", input.workspaceName || "");
2768
- _html(`<span${_attr_class("_eC")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_C", "_eD"])}>${_escape(compare$1.base)}${_el_resume($scope5_id, "i")}</span><span${_attr_class(["_E", "_eF"])} aria-hidden=true>vs</span><span${_attr_class(["_C", "_eE"])}>${_escape(compare$1.head)}${_el_resume($scope5_id, "l")}</span>`);
2768
+ _html(`<span${_attr_class("_ed")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_C", "_ee"])}>${_escape(compare$1.base)}${_el_resume($scope5_id, "i")}</span><span${_attr_class(["_E", "_eg"])} aria-hidden=true>vs</span><span${_attr_class(["_C", "_ef"])}>${_escape(compare$1.head)}${_el_resume($scope5_id, "l")}</span>`);
2769
2769
  _if(() => {
2770
2770
  if (compare$1.topic) {
2771
2771
  const $scope36_id = _scope_id();
2772
2772
  _html(`<span${_attr_class([
2773
2773
  "_C",
2774
2774
  tone.accent,
2775
- "_eG"
2775
+ "_eh"
2776
2776
  ])}>${_escape(compare$1.topic)}${_el_resume($scope36_id, "b")}</span>`);
2777
2777
  writeScope($scope36_id, {});
2778
2778
  return 0;
@@ -2791,7 +2791,7 @@ var diff_view_default = _template("i", (input) => {
2791
2791
  return 0;
2792
2792
  }
2793
2793
  }, $scope5_id, "n", 1, 1, 1, 0, 1);
2794
- _html(`<span${_attr_class("_ez")}>${_escape(shownInRepo.length || repoFiles.length)}${_el_resume($scope5_id, "p")} file<!>${(shownInRepo.length || repoFiles.length) === 1 ? "" : "s"}${_el_resume($scope5_id, "q")}</span></button>${_el_resume($scope5_id, "a")}`);
2794
+ _html(`<span${_attr_class("_ea")}>${_escape(shownInRepo.length || repoFiles.length)}${_el_resume($scope5_id, "p")} file<!>${(shownInRepo.length || repoFiles.length) === 1 ? "" : "s"}${_el_resume($scope5_id, "q")}</span></button>${_el_resume($scope5_id, "a")}`);
2795
2795
  _script($scope5_id, "i45");
2796
2796
  _subscribe($for_content__shownInRepo_length__closures, _subscribe($for_content__repoFiles_length__closures, _subscribe($for_content__repo_branch__closures, _subscribe($for_content__repo_pr_baseRefName__closures, _subscribe($for_content__repo_baseSha__closures, _subscribe($for_content__repo_base__closures, _subscribe($for_content__repo_head__closures, _subscribe($for_content__repo_pr_headRefName__closures, _subscribe($for_content__repo_worktree__closures, _subscribe($for_content__repo_pr__closures, _subscribe($for_content__repo_id__closures, _subscribe($localDifferIds__closures, _subscribe($expandingRepos__closures, _subscribe($collapsedRepos__closures, _subscribe($si__input_workspaceName && $input_workspaceName__closures, _subscribe($si__input_workspaceBranch && $input_workspaceBranch__closures, writeScope($scope5_id, {
2797
2797
  r: repoCollapsed,
@@ -2802,7 +2802,7 @@ var diff_view_default = _template("i", (input) => {
2802
2802
  return 0;
2803
2803
  } else {
2804
2804
  const $scope7_id = _scope_id();
2805
- _html(`<p${_attr_class("_eB")}>`);
2805
+ _html(`<p${_attr_class("_ec")}>`);
2806
2806
  _if(() => {
2807
2807
  if (repo.pr) {
2808
2808
  const $scope35_id = _scope_id();
@@ -2820,14 +2820,14 @@ var diff_view_default = _template("i", (input) => {
2820
2820
  }
2821
2821
  }, $scope7_id, "b");
2822
2822
  const compare$2 = reviewCompareLabel(repo.pr?.baseRefName || repo.base, repo.pr?.headRefName || repo.branch, input.workspaceBranch || "", input.workspaceName || "");
2823
- _html(`<span${_attr_class("_eC")}${_attr("title", `${compare$2.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_C", "_eD"])}>${_escape(compare$2.base)}${_el_resume($scope7_id, "e")}</span><span${_attr_class(["_E", "_eF"])} aria-hidden=true>vs</span><span${_attr_class(["_C", "_eE"])}>${_escape(compare$2.head)}${_el_resume($scope7_id, "h")}</span>`);
2823
+ _html(`<span${_attr_class("_ed")}${_attr("title", `${compare$2.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_C", "_ee"])}>${_escape(compare$2.base)}${_el_resume($scope7_id, "e")}</span><span${_attr_class(["_E", "_eg"])} aria-hidden=true>vs</span><span${_attr_class(["_C", "_ef"])}>${_escape(compare$2.head)}${_el_resume($scope7_id, "h")}</span>`);
2824
2824
  _if(() => {
2825
2825
  if (compare$2.topic) {
2826
2826
  const $scope37_id = _scope_id();
2827
2827
  _html(`<span${_attr_class([
2828
2828
  "_C",
2829
2829
  tone.accent,
2830
- "_eG"
2830
+ "_eh"
2831
2831
  ])}>${_escape(compare$2.topic)}${_el_resume($scope37_id, "b")}</span>`);
2832
2832
  writeScope($scope37_id, {});
2833
2833
  return 0;
@@ -2870,7 +2870,7 @@ var diff_view_default = _template("i", (input) => {
2870
2870
  const $scope9_id = _scope_id();
2871
2871
  const $show = repoList.length === 1 || !collapsedRepos.has(repo.id);
2872
2872
  _show_start($show);
2873
- _html(`<div${_attr_class("_eH")}>`);
2873
+ _html(`<div${_attr_class("_ei")}>`);
2874
2874
  _for_of(repoFiles, (file$1) => {
2875
2875
  const $scope10_id = _scope_id();
2876
2876
  const $for_content2__file__closures = /* @__PURE__ */ new Set();
@@ -2878,7 +2878,7 @@ var diff_view_default = _template("i", (input) => {
2878
2878
  const $for_content2__fileComments__closures = /* @__PURE__ */ new Set();
2879
2879
  const fileComments = commentsByFile.get(file$1.key) || [];
2880
2880
  let expanded = true;
2881
- _html(`<details${_attr_details_or_dialog_open($scope10_id, "a", expanded)}${_attr_class(["_eI", findState.hit?.key === file$1.key && "_eg"])}${_attr("data-key", file$1.key)}${_attr("hidden", !shownKeySet.has(file$1.key))}><summary${_attr_class("_eK")}><span${_attr_class("_eP")}${_attr("data-status", file$1.status)}>${_escape(file$1.status)}${_el_resume($scope10_id, "d")}</span>${_el_resume($scope10_id, "c")}<span${_attr_class(["_eQ", findState.hit?.key === file$1.key && findState.hit.line < 1 && "_eh"])}${_attr("title", file$1.path)}><bdi>${_escape(file$1.path)}${_el_resume($scope10_id, "f")}</bdi></span>${_el_resume($scope10_id, "e")}`);
2881
+ _html(`<details${_attr_details_or_dialog_open($scope10_id, "a", expanded)}${_attr_class(["_ej", findState.hit?.key === file$1.key && "_dS"])}${_attr("data-key", file$1.key)}${_attr("hidden", !shownKeySet.has(file$1.key))}><summary${_attr_class("_el")}><span${_attr_class("_eq")}${_attr("data-status", file$1.status)}>${_escape(file$1.status)}${_el_resume($scope10_id, "d")}</span>${_el_resume($scope10_id, "c")}<span${_attr_class(["_er", findState.hit?.key === file$1.key && findState.hit.line < 1 && "_dT"])}${_attr("title", file$1.path)}><bdi>${_escape(file$1.path)}${_el_resume($scope10_id, "f")}</bdi></span>${_el_resume($scope10_id, "e")}`);
2882
2882
  _if(() => {
2883
2883
  if (fileComments.length) {
2884
2884
  const $scope38_id = _scope_id();
@@ -2891,17 +2891,17 @@ var diff_view_default = _template("i", (input) => {
2891
2891
  _if(() => {
2892
2892
  if (file$1.binary) {
2893
2893
  const $scope39_id = _scope_id();
2894
- _html(`<p${_attr_class(["_eS", "_eJ"])}>binary file</p>`);
2894
+ _html(`<p${_attr_class(["_et", "_ek"])}>binary file</p>`);
2895
2895
  writeScope($scope39_id, {});
2896
2896
  return 0;
2897
2897
  } else if (file$1.tooLarge) {
2898
2898
  const $scope40_id = _scope_id();
2899
- _html(`<p${_attr_class(["_eS", "_eJ"])}>file too large to display</p>`);
2899
+ _html(`<p${_attr_class(["_et", "_ek"])}>file too large to display</p>`);
2900
2900
  writeScope($scope40_id, {});
2901
2901
  return 1;
2902
2902
  } else if (file$1.old == null && file$1.new == null) {
2903
2903
  const $scope41_id = _scope_id();
2904
- _html(`<p${_attr_class(["_eS", "_eJ"])}>file could not be read</p>`);
2904
+ _html(`<p${_attr_class(["_et", "_ek"])}>file could not be read</p>`);
2905
2905
  writeScope($scope41_id, {});
2906
2906
  return 2;
2907
2907
  } else {
@@ -2911,7 +2911,7 @@ var diff_view_default = _template("i", (input) => {
2911
2911
  _if(() => {
2912
2912
  if (!forceNear) {
2913
2913
  const $scope25_id = _scope_id();
2914
- _html(`<div${_attr_class(["_eL", "_eJ"])}></div>${_el_resume($scope25_id, "a")}`);
2914
+ _html(`<div${_attr_class(["_em", "_ek"])}></div>${_el_resume($scope25_id, "a")}`);
2915
2915
  _script($scope25_id, "i46");
2916
2916
  writeScope($scope25_id, {});
2917
2917
  return 0;
@@ -2919,7 +2919,7 @@ var diff_view_default = _template("i", (input) => {
2919
2919
  const $scope12_id = _scope_id();
2920
2920
  const $childScope9 = _peek_scope_id();
2921
2921
  diff_file_default({
2922
- class: "_eJ",
2922
+ class: "_ek",
2923
2923
  file: file$1,
2924
2924
  comments: fileComments,
2925
2925
  draft: draft && draft.key === file$1.key ? draft : null,