@dylanpiercey/work 0.0.75 → 0.0.76

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/bin/work.mjs +8 -6
  2. package/dist/{_BDyG-m5v.js → _BXcFivfU.js} +53 -4
  3. package/dist/{_YXycRDeX.js → _CqtfLw6Y.js} +2 -2
  4. package/dist/_DvlOez7w.js +2 -0
  5. package/dist/{_CqQCHF6w.js → __lXIKR5F.js} +39 -39
  6. package/dist/index.mjs +132 -132
  7. package/dist/public/assets/{_BcS2kEE62.js → _2JbF4QZ-2.js} +1 -1
  8. package/dist/public/assets/_2JbF4QZ-2.js.br +0 -0
  9. package/dist/public/assets/{_B7pgN6sB.js → _3Hkb9yUu.js} +6 -6
  10. package/dist/public/assets/_3Hkb9yUu.js.br +0 -0
  11. package/dist/public/assets/{_D8fKpFTr.js → _6AsCIctl.js} +1 -1
  12. package/dist/public/assets/_6AsCIctl.js.br +0 -0
  13. package/dist/public/assets/{_BNB9MqPV.js → _8toYrXVK.js} +1 -1
  14. package/dist/public/assets/{_DV_KGLTf.js → _B7fOkgiH.js} +1 -1
  15. package/dist/public/assets/_B7fOkgiH.js.br +0 -0
  16. package/dist/public/assets/{_Ca-X4Uss.js → _BEG2RHhd.js} +1 -1
  17. package/dist/public/assets/_BEG2RHhd.js.br +0 -0
  18. package/dist/public/assets/{_Cse5bba-2.js → _BHlaYXO_2.js} +1 -1
  19. package/dist/public/assets/_BHlaYXO_2.js.br +0 -0
  20. package/dist/public/assets/{_kIIF6GjK.js → _BNFNv1Bq.js} +1 -1
  21. package/dist/public/assets/_BNFNv1Bq.js.br +0 -0
  22. package/dist/public/assets/{_CH-BLbsi.js → _BUgACTwS.js} +1 -1
  23. package/dist/public/assets/_BUgACTwS.js.br +0 -0
  24. package/dist/public/assets/{_BnCsMw31.js → _BZ5X8ZeJ.js} +1 -1
  25. package/dist/public/assets/_BZ5X8ZeJ.js.br +0 -0
  26. package/dist/public/assets/{_fy2RYiRi2.js → _B_b1CgHC2.js} +1 -1
  27. package/dist/public/assets/_B_b1CgHC2.js.br +0 -0
  28. package/dist/public/assets/{_BBbP1FFl.js → _BdktPwDj.js} +1 -1
  29. package/dist/public/assets/_BdktPwDj.js.br +0 -0
  30. package/dist/public/assets/{_DusbTMb9.js → _BjPdBgJ8.js} +1 -1
  31. package/dist/public/assets/_BjPdBgJ8.js.br +0 -0
  32. package/dist/public/assets/{_BKMqcaU1.js → _BnWlJiz6.js} +1 -1
  33. package/dist/public/assets/_BnWlJiz6.js.br +0 -0
  34. package/dist/public/assets/{_DYKWFd9W.js → _BpBr5IdO.js} +1 -1
  35. package/dist/public/assets/_BpBr5IdO.js.br +0 -0
  36. package/dist/public/assets/{_WpIPj9ul.js → _BppyqDqk.js} +1 -1
  37. package/dist/public/assets/_BppyqDqk.js.br +0 -0
  38. package/dist/public/assets/{_D0Epgq6X.js → _Bx-6cv1l.js} +1 -1
  39. package/dist/public/assets/_Bx-6cv1l.js.br +0 -0
  40. package/dist/public/assets/{_Bf5_vl0D.js → _BxG2fPQ6.js} +1 -1
  41. package/dist/public/assets/_BxG2fPQ6.js.br +0 -0
  42. package/dist/public/assets/{_B95jJkJX2.js → _BzqUZqWL2.js} +1 -1
  43. package/dist/public/assets/_BzqUZqWL2.js.br +0 -0
  44. package/dist/public/assets/{_DJe1bt542.js → _C34E09cV2.js} +1 -1
  45. package/dist/public/assets/_C34E09cV2.js.br +0 -0
  46. package/dist/public/assets/{_CZcadzqS2.js → _C5C_uOm72.js} +1 -1
  47. package/dist/public/assets/_C5C_uOm72.js.br +0 -0
  48. package/dist/public/assets/{_Cq8YBzvj.js → _C6Oq-fpi.js} +1 -1
  49. package/dist/public/assets/_C6Oq-fpi.js.br +0 -0
  50. package/dist/public/assets/{_C4WOt80d.js → _C8iBzrpk.js} +1 -1
  51. package/dist/public/assets/_C8iBzrpk.js.br +0 -0
  52. package/dist/public/assets/{_DGi1Ayqz2.js → _C91eNTKI2.js} +1 -1
  53. package/dist/public/assets/_C91eNTKI2.js.br +0 -0
  54. package/dist/public/assets/{_C7RwVNVP.js → _CD2q1ZVm.js} +1 -1
  55. package/dist/public/assets/_CD2q1ZVm.js.br +0 -0
  56. package/dist/public/assets/{_Bsrv1-_G.js → _CEOCshbv.js} +1 -1
  57. package/dist/public/assets/_CEOCshbv.js.br +0 -0
  58. package/dist/public/assets/{_cxuw_acc2.js → _CEWSo0iP2.js} +1 -1
  59. package/dist/public/assets/_CEWSo0iP2.js.br +0 -0
  60. package/dist/public/assets/{_CQiF7kuX2.js → _CFPLV_RM2.js} +1 -1
  61. package/dist/public/assets/_CFPLV_RM2.js.br +0 -0
  62. package/dist/public/assets/{_BvHCh_-C.js → _CFj_gwWI.js} +1 -1
  63. package/dist/public/assets/_CFj_gwWI.js.br +0 -0
  64. package/dist/public/assets/{_6DqxK0RL2.js → _CSuwPDOp2.js} +1 -1
  65. package/dist/public/assets/_CSuwPDOp2.js.br +0 -0
  66. package/dist/public/assets/{_CF-nX8C92.js → _CUDXFOSz2.js} +1 -1
  67. package/dist/public/assets/_CUDXFOSz2.js.br +0 -0
  68. package/dist/public/assets/{_BI3fx4zD2.js → _CVuPSJA72.js} +1 -1
  69. package/dist/public/assets/_CVuPSJA72.js.br +0 -0
  70. package/dist/public/assets/{_75k0Kbaq.js → _CctK1uSA.js} +1 -1
  71. package/dist/public/assets/_CctK1uSA.js.br +0 -0
  72. package/dist/public/assets/{_CeFrYWgZ.js → _ClX_Oqrr.js} +1 -1
  73. package/dist/public/assets/_ClX_Oqrr.js.br +0 -0
  74. package/dist/public/assets/{_B-IxSXa3.js → _Cn6w3MhW.js} +1 -1
  75. package/dist/public/assets/_Cn6w3MhW.js.br +0 -0
  76. package/dist/public/assets/{_DpDyOVoc.js → _Cphh_yi5.js} +1 -1
  77. package/dist/public/assets/_Cphh_yi5.js.br +0 -0
  78. package/dist/public/assets/{_CaC5qD8t2.js → _CqPdZxvF2.js} +1 -1
  79. package/dist/public/assets/_CqPdZxvF2.js.br +0 -0
  80. package/dist/public/assets/{_ChfoAmXP.js → _Cs51LV8m.js} +1 -1
  81. package/dist/public/assets/_Cs51LV8m.js.br +0 -0
  82. package/dist/public/assets/{_N6d1g4YH.js → _CsXxbWcQ.js} +1 -1
  83. package/dist/public/assets/_CsXxbWcQ.js.br +0 -0
  84. package/dist/public/assets/{_B1ALlRmK.js → _CsgJmYNA.js} +1 -1
  85. package/dist/public/assets/_CsgJmYNA.js.br +0 -0
  86. package/dist/public/assets/{_rqKa19IB2.js → _Ct92IAWI2.js} +1 -1
  87. package/dist/public/assets/_Ct92IAWI2.js.br +0 -0
  88. package/dist/public/assets/{_BrX6E1Tb.js → _D0nMBSFq.js} +1 -1
  89. package/dist/public/assets/_D0nMBSFq.js.br +0 -0
  90. package/dist/public/assets/{_3WUIireA2.js → _D14ai5852.js} +1 -1
  91. package/dist/public/assets/_D14ai5852.js.br +0 -0
  92. package/dist/public/assets/{_C6LT1b1r2.js → _D1YQla-x2.js} +1 -1
  93. package/dist/public/assets/_D1YQla-x2.js.br +0 -0
  94. package/dist/public/assets/{_VX-WNzoY.js → _D367w68f.js} +1 -1
  95. package/dist/public/assets/_D367w68f.js.br +0 -0
  96. package/dist/public/assets/{_wqV1376t.js → _D7ModyMj.js} +1 -1
  97. package/dist/public/assets/_D7ModyMj.js.br +0 -0
  98. package/dist/public/assets/{_BO1EEwPd2.js → _D8uHD5Q02.js} +1 -1
  99. package/dist/public/assets/_D8uHD5Q02.js.br +0 -0
  100. package/dist/public/assets/{_rGA3MTS3.js → _D9-Z5alI.js} +3 -3
  101. package/dist/public/assets/_D9-Z5alI.js.br +0 -0
  102. package/dist/public/assets/{_RoonVdCn.js → _D9QFUawY.js} +1 -1
  103. package/dist/public/assets/_D9QFUawY.js.br +0 -0
  104. package/dist/public/assets/{_B6tzBtcS.js → _DCJtg98I.js} +1 -1
  105. package/dist/public/assets/_DCJtg98I.js.br +0 -0
  106. package/dist/public/assets/{_CjdyGTPn.js → _DJ0O5SUE.js} +1 -1
  107. package/dist/public/assets/_DJ0O5SUE.js.br +0 -0
  108. package/dist/public/assets/{_DbekG_Tj.js → _DK3cmEdX.js} +1 -1
  109. package/dist/public/assets/_DK3cmEdX.js.br +0 -0
  110. package/dist/public/assets/{_D-tRBq-K.js → _DNuUxoGY.js} +1 -1
  111. package/dist/public/assets/_DNuUxoGY.js.br +0 -0
  112. package/dist/public/assets/{_HoR3v-DJ.js → _DQ-YqDv_.js} +1 -1
  113. package/dist/public/assets/_DQ-YqDv_.js.br +0 -0
  114. package/dist/public/assets/{_BtAa7jUf.js → _DTGwibmE.js} +1 -1
  115. package/dist/public/assets/_DTGwibmE.js.br +0 -0
  116. package/dist/public/assets/{_-JEq73qF.js → _DTbRs8Rd.js} +1 -1
  117. package/dist/public/assets/_DTbRs8Rd.js.br +0 -0
  118. package/dist/public/assets/{_B7ZvDngu2.js → _Da8CpJXC2.js} +1 -1
  119. package/dist/public/assets/{_Dm419QqR.js → _DgB3U5Gu.js} +1 -1
  120. package/dist/public/assets/_DgB3U5Gu.js.br +0 -0
  121. package/dist/public/assets/{_CCywdMFZ2.js → _Dkei5s2x2.js} +1 -1
  122. package/dist/public/assets/_Dkei5s2x2.js.br +0 -0
  123. package/dist/public/assets/{_bMoV3Y5q.js → _DnvNLHgm.js} +1 -1
  124. package/dist/public/assets/_DnvNLHgm.js.br +0 -0
  125. package/dist/public/assets/{_ByOEGcgm.js → _DqKJcZgQ.js} +1 -1
  126. package/dist/public/assets/_DqKJcZgQ.js.br +0 -0
  127. package/dist/public/assets/{_Cm1kDTZA2.js → _Dv99udYl2.js} +1 -1
  128. package/dist/public/assets/_Dv99udYl2.js.br +0 -0
  129. package/dist/public/assets/{_DSaBhRNi.js → _GndjdkeR.js} +1 -1
  130. package/dist/public/assets/_GndjdkeR.js.br +0 -0
  131. package/dist/public/assets/{_f2PV5cLT2.js → _O6S_XpA12.js} +1 -1
  132. package/dist/public/assets/{_DeiKpBBt2.js → _WVX78_eQ2.js} +1 -1
  133. package/dist/public/assets/_WVX78_eQ2.js.br +0 -0
  134. package/dist/public/assets/{_dRHAjL3W2.js → _Yp8RndlS2.js} +1 -1
  135. package/dist/public/assets/_Yp8RndlS2.js.br +0 -0
  136. package/dist/public/assets/{_C9lwY9qT.js → _ZpIu30xq.js} +1 -1
  137. package/dist/public/assets/_ZpIu30xq.js.br +0 -0
  138. package/dist/public/assets/{_B4MCegxF.js → _dRNLUcmQ.js} +1 -1
  139. package/dist/public/assets/_dRNLUcmQ.js.br +0 -0
  140. package/dist/public/assets/{_CDvYB1Yl.js → _iVbNVfLo.js} +1 -1
  141. package/dist/public/assets/_iVbNVfLo.js.br +0 -0
  142. package/dist/public/assets/{_IwtRneTa.js → _jbEhGKqF.js} +1 -1
  143. package/dist/public/assets/_jbEhGKqF.js.br +0 -0
  144. package/dist/public/assets/{_Bp_amCxk.js → _lUBz-hZ6.js} +1 -1
  145. package/dist/public/assets/_lUBz-hZ6.js.br +0 -0
  146. package/dist/public/assets/{_BcvVB8I9.js → _mwsyNxHs.js} +1 -1
  147. package/dist/public/assets/_mwsyNxHs.js.br +0 -0
  148. package/dist/public/assets/{_B9xMjsQ6.js → _nG8aO-be.js} +1 -1
  149. package/dist/public/assets/_nG8aO-be.js.br +0 -0
  150. package/dist/public/assets/{_Bg0_UtaO2.js → _oHe-s5Oy2.js} +1 -1
  151. package/dist/public/assets/_oHe-s5Oy2.js.br +0 -0
  152. package/dist/public/assets/{_B53V6JYm.js → _wB8kCQ2X.js} +1 -1
  153. package/dist/public/assets/_wB8kCQ2X.js.br +0 -0
  154. package/dist/public/assets/{_qrDtDDSY.js → _xnbg6Khg.js} +1 -1
  155. package/dist/public/assets/_xnbg6Khg.js.br +0 -0
  156. package/dist/public/assets/{app-page-SCMuG0bs.css → app-page-D4vPVvwL.css} +1 -1
  157. package/dist/public/assets/app-page-D4vPVvwL.css.br +0 -0
  158. package/dist/public/assets/{diff-view-CtG8FwR0.css → diff-view-Dy6kJWU6.css} +1 -1
  159. package/dist/public/assets/diff-view-Dy6kJWU6.css.br +0 -0
  160. package/dist/public/assets/new-DZ3Y7jRu.js +1 -0
  161. package/dist/public/assets/settings-DZ3Y7jRu.js +1 -0
  162. package/dist/public/assets/w-DZ3Y7jRu.js +1 -0
  163. package/dist/public/assets/w._-B_8o0W7U.js +1 -0
  164. package/dist/public/assets/w._-DZ3Y7jRu.js +1 -0
  165. package/package.json +1 -1
  166. package/dist/_wbad_ZHd.js +0 -2
  167. package/dist/public/assets/_-JEq73qF.js.br +0 -0
  168. package/dist/public/assets/_3WUIireA2.js.br +0 -0
  169. package/dist/public/assets/_6DqxK0RL2.js.br +0 -0
  170. package/dist/public/assets/_75k0Kbaq.js.br +0 -0
  171. package/dist/public/assets/_B-IxSXa3.js.br +0 -0
  172. package/dist/public/assets/_B1ALlRmK.js.br +0 -0
  173. package/dist/public/assets/_B4MCegxF.js.br +0 -0
  174. package/dist/public/assets/_B53V6JYm.js.br +0 -0
  175. package/dist/public/assets/_B6tzBtcS.js.br +0 -0
  176. package/dist/public/assets/_B7pgN6sB.js.br +0 -0
  177. package/dist/public/assets/_B95jJkJX2.js.br +0 -0
  178. package/dist/public/assets/_B9xMjsQ6.js.br +0 -0
  179. package/dist/public/assets/_BBbP1FFl.js.br +0 -0
  180. package/dist/public/assets/_BI3fx4zD2.js.br +0 -0
  181. package/dist/public/assets/_BKMqcaU1.js.br +0 -0
  182. package/dist/public/assets/_BO1EEwPd2.js.br +0 -0
  183. package/dist/public/assets/_BcS2kEE62.js.br +0 -0
  184. package/dist/public/assets/_BcvVB8I9.js.br +0 -0
  185. package/dist/public/assets/_Bf5_vl0D.js.br +0 -0
  186. package/dist/public/assets/_Bg0_UtaO2.js.br +0 -0
  187. package/dist/public/assets/_BnCsMw31.js.br +0 -0
  188. package/dist/public/assets/_Bp_amCxk.js.br +0 -0
  189. package/dist/public/assets/_BrX6E1Tb.js.br +0 -0
  190. package/dist/public/assets/_Bsrv1-_G.js.br +0 -0
  191. package/dist/public/assets/_BtAa7jUf.js.br +0 -0
  192. package/dist/public/assets/_BvHCh_-C.js.br +0 -0
  193. package/dist/public/assets/_ByOEGcgm.js.br +0 -0
  194. package/dist/public/assets/_C4WOt80d.js.br +0 -0
  195. package/dist/public/assets/_C6LT1b1r2.js.br +0 -0
  196. package/dist/public/assets/_C7RwVNVP.js.br +0 -0
  197. package/dist/public/assets/_C9lwY9qT.js.br +0 -0
  198. package/dist/public/assets/_CCywdMFZ2.js.br +0 -0
  199. package/dist/public/assets/_CDvYB1Yl.js.br +0 -0
  200. package/dist/public/assets/_CF-nX8C92.js.br +0 -0
  201. package/dist/public/assets/_CH-BLbsi.js.br +0 -0
  202. package/dist/public/assets/_CQiF7kuX2.js.br +0 -0
  203. package/dist/public/assets/_CZcadzqS2.js.br +0 -0
  204. package/dist/public/assets/_Ca-X4Uss.js.br +0 -0
  205. package/dist/public/assets/_CaC5qD8t2.js.br +0 -0
  206. package/dist/public/assets/_CeFrYWgZ.js.br +0 -0
  207. package/dist/public/assets/_ChfoAmXP.js.br +0 -0
  208. package/dist/public/assets/_CjdyGTPn.js.br +0 -0
  209. package/dist/public/assets/_Cm1kDTZA2.js.br +0 -0
  210. package/dist/public/assets/_Cq8YBzvj.js.br +0 -0
  211. package/dist/public/assets/_Cse5bba-2.js.br +0 -0
  212. package/dist/public/assets/_D-tRBq-K.js.br +0 -0
  213. package/dist/public/assets/_D0Epgq6X.js.br +0 -0
  214. package/dist/public/assets/_D8fKpFTr.js.br +0 -0
  215. package/dist/public/assets/_DGi1Ayqz2.js.br +0 -0
  216. package/dist/public/assets/_DJe1bt542.js.br +0 -0
  217. package/dist/public/assets/_DSaBhRNi.js.br +0 -0
  218. package/dist/public/assets/_DV_KGLTf.js.br +0 -0
  219. package/dist/public/assets/_DYKWFd9W.js.br +0 -0
  220. package/dist/public/assets/_DbekG_Tj.js.br +0 -0
  221. package/dist/public/assets/_DeiKpBBt2.js.br +0 -0
  222. package/dist/public/assets/_Dm419QqR.js.br +0 -0
  223. package/dist/public/assets/_DpDyOVoc.js.br +0 -0
  224. package/dist/public/assets/_DusbTMb9.js.br +0 -0
  225. package/dist/public/assets/_HoR3v-DJ.js.br +0 -0
  226. package/dist/public/assets/_IwtRneTa.js.br +0 -0
  227. package/dist/public/assets/_N6d1g4YH.js.br +0 -0
  228. package/dist/public/assets/_RoonVdCn.js.br +0 -0
  229. package/dist/public/assets/_VX-WNzoY.js.br +0 -0
  230. package/dist/public/assets/_WpIPj9ul.js.br +0 -0
  231. package/dist/public/assets/_bMoV3Y5q.js.br +0 -0
  232. package/dist/public/assets/_cxuw_acc2.js.br +0 -0
  233. package/dist/public/assets/_dRHAjL3W2.js.br +0 -0
  234. package/dist/public/assets/_fy2RYiRi2.js.br +0 -0
  235. package/dist/public/assets/_kIIF6GjK.js.br +0 -0
  236. package/dist/public/assets/_qrDtDDSY.js.br +0 -0
  237. package/dist/public/assets/_rGA3MTS3.js.br +0 -0
  238. package/dist/public/assets/_rqKa19IB2.js.br +0 -0
  239. package/dist/public/assets/_wqV1376t.js.br +0 -0
  240. package/dist/public/assets/app-page-SCMuG0bs.css.br +0 -0
  241. package/dist/public/assets/diff-view-CtG8FwR0.css.br +0 -0
  242. package/dist/public/assets/new-BZlajbhp.js +0 -1
  243. package/dist/public/assets/settings-BZlajbhp.js +0 -1
  244. package/dist/public/assets/w-BZlajbhp.js +0 -1
  245. package/dist/public/assets/w._-BZlajbhp.js +0 -1
  246. package/dist/public/assets/w._-CS4jpfeK.js +0 -1
package/bin/work.mjs CHANGED
@@ -444,13 +444,15 @@ function installedServiceEnv() {
444
444
  return installed;
445
445
  }
446
446
 
447
- /** Network env worth carrying from the installing shell into the service. */
448
- const PROXY_ENV = [
449
- "HTTP_PROXY", "HTTPS_PROXY", "NO_PROXY", "http_proxy", "https_proxy", "no_proxy",
450
- "NODE_EXTRA_CA_CERTS", "SSL_CERT_FILE", "SSL_CERT_DIR",
451
- ];
452
-
453
447
  function serviceEnv() {
448
+ // Network env worth carrying from the installing shell into the service.
449
+ // (Declared here, not at module level: the command dispatch above runs
450
+ // before later top-level consts initialise — functions hoist, consts do
451
+ // not.)
452
+ const PROXY_ENV = [
453
+ "HTTP_PROXY", "HTTPS_PROXY", "NO_PROXY", "http_proxy", "https_proxy", "no_proxy",
454
+ "NODE_EXTRA_CA_CERTS", "SSL_CERT_FILE", "SSL_CERT_DIR",
455
+ ];
454
456
  const env = { PATH: servicePath() };
455
457
  const installed = installedServiceEnv();
456
458
  for (const key of ["WORK_APP_PORT", "WORK_ROOT", "WORK_DATA_DIR", "WORK_ALLOWED_HOSTS"]) {
@@ -4,7 +4,7 @@ import { t as require_safe_buffer } from "./_BmSjjJ2E.js";
4
4
  import fs from "node:fs";
5
5
  import path from "node:path";
6
6
  import os from "node:os";
7
- import { execFile } from "node:child_process";
7
+ import { execFile, execFileSync } from "node:child_process";
8
8
  import { promisify } from "node:util";
9
9
  import { DatabaseSync } from "node:sqlite";
10
10
  import { createHash } from "node:crypto";
@@ -6420,7 +6420,7 @@ function publishChange(sessionId) {
6420
6420
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
6421
6421
  if (row?.workspace_id) {
6422
6422
  const workspaceId = row.workspace_id;
6423
- import("./_wbad_ZHd.js").then((m) => m.notifySessionsChanged(workspaceId));
6423
+ import("./_DvlOez7w.js").then((m) => m.notifySessionsChanged(workspaceId));
6424
6424
  return;
6425
6425
  }
6426
6426
  publish("sessions.changed");
@@ -6671,7 +6671,10 @@ async function fetchJson(url, init = {}) {
6671
6671
  });
6672
6672
  } catch (err) {
6673
6673
  const name = err?.name;
6674
- throw new FetchFailed(name === "TimeoutError" || name === "AbortError" ? "timed out" : "network unreachable");
6674
+ if (name === "TimeoutError" || name === "AbortError") throw new FetchFailed("timed out");
6675
+ const cause = err?.cause;
6676
+ const code = typeof cause?.code === "string" ? cause.code : "";
6677
+ throw new FetchFailed(code ? `network unreachable (${code})` : "network unreachable");
6675
6678
  }
6676
6679
  if (!res.ok) throw new FetchFailed(httpReason(res.status));
6677
6680
  try {
@@ -6769,6 +6772,7 @@ function blankRow(agent, source = "missing") {
6769
6772
  function markStale(row, key, tokenExpired, reason) {
6770
6773
  if (!/^(stale|claude\.json|missing)/.test(row.source)) return row;
6771
6774
  let why = reason ?? (tokenExpired ? "auth expired" : void 0);
6775
+ if (!why && row.source === "missing" && row.note) return row;
6772
6776
  if (!why) why = "couldn't reach provider";
6773
6777
  if (why.startsWith("rate limited") && tokenExpired === false) why = "rate limited — retry shortly";
6774
6778
  else if (/^(auth expired|rate limited)/.test(why)) {
@@ -6821,7 +6825,44 @@ function numberedDirs() {
6821
6825
  return [];
6822
6826
  }
6823
6827
  }
6824
- var credentials = (account) => readJson(path.join(account.dir, ".credentials.json"));
6828
+ /** OAuth credentials: `.credentials.json` in the config dir on Linux; on
6829
+ * macOS Claude Code keeps them in the login keychain instead (service
6830
+ * "Claude Code-credentials"), which `security` reads back as the same JSON.
6831
+ * The keychain read is cached per process tick of the usage refresh — it
6832
+ * forks a process — and only tried for the primary account. */
6833
+ var credentials = (account) => {
6834
+ const file = readJson(path.join(account.dir, ".credentials.json"));
6835
+ if (file || process.platform !== "darwin" || account.suffix) return file;
6836
+ return keychainCredentials();
6837
+ };
6838
+ var keychain = null;
6839
+ function keychainCredentials() {
6840
+ if (keychain && Date.now() - keychain.at < 3e4) return keychain.value;
6841
+ let value = null;
6842
+ try {
6843
+ const raw = execFileSync("security", [
6844
+ "find-generic-password",
6845
+ "-s",
6846
+ "Claude Code-credentials",
6847
+ "-w"
6848
+ ], {
6849
+ encoding: "utf8",
6850
+ stdio: [
6851
+ "ignore",
6852
+ "pipe",
6853
+ "ignore"
6854
+ ],
6855
+ timeout: 3e3
6856
+ });
6857
+ const parsed = JSON.parse(raw.trim());
6858
+ value = parsed && typeof parsed === "object" ? parsed : null;
6859
+ } catch {}
6860
+ keychain = {
6861
+ at: Date.now(),
6862
+ value
6863
+ };
6864
+ return value;
6865
+ }
6825
6866
  /** Why an account has no live data — an expired token is the common case
6826
6867
  * and only that account's own CLI can refresh it. */
6827
6868
  function credentialNote(account) {
@@ -6907,6 +6948,14 @@ async function claudeRow(account) {
6907
6948
  plan: "API key",
6908
6949
  note: API_KEY_NOTE
6909
6950
  };
6951
+ if (!str(obj(credentials(account)?.claudeAiOauth).accessToken)) {
6952
+ const fallback = claudeJsonFallback(account);
6953
+ const row = parseRow$4(account, fallback, fallback ? "claude.json" : "missing");
6954
+ return {
6955
+ ...row,
6956
+ note: row.note ?? credentialNote(account)
6957
+ };
6958
+ }
6910
6959
  const loaded = await loadPayload(`claude${account.suffix}`, () => fetchUsage$3(account));
6911
6960
  const fallback = loaded.payload ? null : claudeJsonFallback(account);
6912
6961
  return markStale(parseRow$4(account, loaded.payload ?? fallback, fallback ? "claude.json" : loaded.source), account.label, tokenExpired(account), loaded.reason);
@@ -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 = "_fj _i";
2314
- var findIconBtn = "_fm _g";
2313
+ var findInput = "_eN _i";
2314
+ var findIconBtn = "_eQ _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 };
@@ -0,0 +1,2 @@
1
+ import { f as notifySessionsChanged } from "./_BXcFivfU.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 "./_YXycRDeX.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 "./_CqtfLw6Y.js";
2
2
  //#region src/client/router.ts
3
3
  function urlFor(r) {
4
4
  if (r.view === "settings") return "/settings";
@@ -247,7 +247,7 @@ function treeRows(files) {
247
247
  walk(root, 0, "");
248
248
  return rows;
249
249
  }
250
- var treeToggle = "_dB _X _g";
250
+ var treeToggle = "_ec _X _g";
251
251
  //#endregion
252
252
  //#region src/tags/diff-send.marko
253
253
  var diff_send_default = _template("h", (input) => {
@@ -257,7 +257,7 @@ var diff_send_default = _template("h", (input) => {
257
257
  let sendTarget = null;
258
258
  const sessions = input.sessions || [];
259
259
  const sendPick = sessions.some((s) => s.id === sendTarget) ? sendTarget : sessions[0]?.id ?? null;
260
- _html(`<span${_attr_class("_e0")}><button type=button${_attr_class("_l")} title="Copy comments as markdown">Copy${_el_resume($scope0_id, "c")}</button>${_el_resume($scope0_id, "b")}`);
260
+ _html(`<span${_attr_class("_ft")}><button type=button${_attr_class("_l")} title="Copy comments as markdown">Copy${_el_resume($scope0_id, "c")}</button>${_el_resume($scope0_id, "b")}`);
261
261
  _if(() => {
262
262
  if (sessions.length === 1) {
263
263
  const $scope1_id = _scope_id();
@@ -267,11 +267,11 @@ var diff_send_default = _template("h", (input) => {
267
267
  return 0;
268
268
  } else if (sessions.length) {
269
269
  const $scope2_id = _scope_id();
270
- _html(`<span${_attr_class("_e1")}><button type=button${_attr_class(["_m", "_e2"])}${_attr("disabled", sending)}>Send to${_el_resume($scope2_id, "c")}</button>${_el_resume($scope2_id, "b")}`);
270
+ _html(`<span${_attr_class("_fu")}><button type=button${_attr_class(["_m", "_fv"])}${_attr("disabled", sending)}>Send to${_el_resume($scope2_id, "c")}</button>${_el_resume($scope2_id, "b")}`);
271
271
  _attr_select_value($scope2_id, "d", sendTarget, _resume((_new_sendTarget) => {
272
272
  sendTarget = _new_sendTarget;
273
273
  }, "h0", $scope2_id), () => {
274
- _html(`<select${_attr_class("_e3")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
274
+ _html(`<select${_attr_class("_fw")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
275
275
  _for_of(sessions, (s) => {
276
276
  const $scope3_id = _scope_id();
277
277
  _html(`<option${_attr_option_value(s.id)}>${_escape(s.title || s.agent)}${_el_resume($scope3_id, "b", $sg__input_sessions)}</option>${_el_resume($scope3_id, "a", $sg__input_sessions)}`);
@@ -1807,9 +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(["_fi", !open && "_fh"])} aria-hidden=${open ? "false" : "true"}><input${_attr_input_value($scope0_id, "b", query || "", _resume(function(v) {
1810
+ _html(`<div${_attr_class(["_eM", !open && "_eL"])} 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("_fl")}>${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("_eP")}>${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");
@@ -2334,7 +2334,7 @@ var diff_tree_default = _template("i", (input) => {
2334
2334
  scope: input.scope ?? null,
2335
2335
  file: key
2336
2336
  }), "i0", $scope0_id);
2337
- _html(`<aside${_attr_class(["_e5", { ["_e4"]: input.open === false }])}><div${_attr_class("_e6")}>`);
2337
+ _html(`<aside${_attr_class(["_fN", { ["_fM"]: input.open === false }])}><div${_attr_class("_fO")}>`);
2338
2338
  _set_serialize_reason(2);
2339
2339
  const $childScope = _peek_scope_id();
2340
2340
  file_filter_default({
@@ -2347,14 +2347,14 @@ var diff_tree_default = _template("i", (input) => {
2347
2347
  _if(() => {
2348
2348
  if (!input.sections.length && filter) {
2349
2349
  const $scope6_id = _scope_id();
2350
- _html(`<p${_attr_class("_e7")}>No files match.</p>`);
2350
+ _html(`<p${_attr_class("_fP")}>No files match.</p>`);
2351
2351
  writeScope($scope6_id, {});
2352
2352
  return 0;
2353
2353
  }
2354
2354
  }, $scope0_id, "d", 1, 1, 1, 0, 1);
2355
2355
  _for_of(input.sections, (section) => {
2356
2356
  const $scope1_id = _scope_id();
2357
- _html(`<div${_attr_class("_e8")}><button type=button${_attr_class(["_e9", { ["_e4"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_ff")}>${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")}`);
2357
+ _html(`<div${_attr_class("_fQ")}><button type=button${_attr_class(["_fR", { ["_fM"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fY")}>${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")}`);
2358
2358
  _if(() => {
2359
2359
  if (!collapsedRepos.has(section.id) || openedRepos.has(section.id)) {
2360
2360
  const $scope2_id = _scope_id();
@@ -2381,17 +2381,17 @@ var diff_tree_default = _template("i", (input) => {
2381
2381
  _if(() => {
2382
2382
  if (!hiddenByCollapse(row) && row.kind === "dir") {
2383
2383
  const $scope4_id = _scope_id();
2384
- _html(`<button type=button${_attr_class(["_e_", { ["_e4"]: collapsedDirs.has(dirKey(row.path)) }])}${_attr("title", row.path)}${_attr_style(`padding-left:${.35 + row.depth * .75}rem`)}><span${_attr_class("_ff")}>${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")}`);
2384
+ _html(`<button type=button${_attr_class(["_fS", { ["_fM"]: collapsedDirs.has(dirKey(row.path)) }])}${_attr("title", row.path)}${_attr_style(`padding-left:${.35 + row.depth * .75}rem`)}><span${_attr_class("_fY")}>${collapsedDirs.has(dirKey(row.path)) ? "▸" : "▾"}${_el_resume($scope4_id, "c")}</span>${_escape(row.label)}${_el_resume($scope4_id, "d", $sg__input_sections)}/</button>${_el_resume($scope4_id, "a")}`);
2385
2385
  _script($scope4_id, "i5");
2386
2386
  _subscribe($si__input_sections && $if_content__dirKey__closures, _subscribe($collapsedDirs__closures, writeScope($scope4_id, { Cae: 1 })));
2387
2387
  return 0;
2388
2388
  } else if (!hiddenByCollapse(row) && row.kind !== "dir") {
2389
2389
  const $scope5_id = _scope_id();
2390
- _html(`<a${_attr("href", hrefFor(row.file.key))}${_attr_class(["_fb", { ["_fa"]: input.collapsedFiles?.has(row.file.key) }])}${input.collapsedFiles?.has(row.file.key) ? _attr("title", `${row.file.path} (folded — click to open)`) : _attr("title", row.file.path)}${_attr_style(`padding-left:${.5 + row.depth * .75}rem`)}><span${_attr_class("_fg")}${_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("_fc")}>${_escape(row.name)}${_el_resume($scope5_id, "e", $sg__input_sections)}</span>`);
2390
+ _html(`<a${_attr("href", hrefFor(row.file.key))}${_attr_class(["_fU", { ["_fT"]: input.collapsedFiles?.has(row.file.key) }])}${input.collapsedFiles?.has(row.file.key) ? _attr("title", `${row.file.path} (folded — click to open)`) : _attr("title", row.file.path)}${_attr_style(`padding-left:${.5 + row.depth * .75}rem`)}><span${_attr_class("_fZ")}${_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("_fV")}>${_escape(row.name)}${_el_resume($scope5_id, "e", $sg__input_sections)}</span>`);
2391
2391
  _if(() => {
2392
2392
  if (newKeys.has(row.file.key)) {
2393
2393
  const $scope7_id = _scope_id();
2394
- _html(`<span${_attr_class(["_w", "_fd"])} title="Changed since your last visit"></span>`);
2394
+ _html(`<span${_attr_class(["_w", "_fW"])} title="Changed since your last visit"></span>`);
2395
2395
  _serialize_if($scope0_reason, 1) && writeScope($scope7_id, {});
2396
2396
  return 0;
2397
2397
  }
@@ -2399,7 +2399,7 @@ var diff_tree_default = _template("i", (input) => {
2399
2399
  _if(() => {
2400
2400
  if (commentKeys.has(row.file.key)) {
2401
2401
  const $scope8_id = _scope_id();
2402
- _html(`<span${_attr_class("_fe")}>💬</span>`);
2402
+ _html(`<span${_attr_class("_fX")}>💬</span>`);
2403
2403
  _serialize_if($scope0_reason, 0) && writeScope($scope8_id, {});
2404
2404
  return 0;
2405
2405
  }
@@ -2504,9 +2504,9 @@ var diff_file_sheet_default = _template("e", (input) => {
2504
2504
  _if(() => {
2505
2505
  if (open) {
2506
2506
  const $scope1_id = _scope_id();
2507
- _html(`<div${_attr_class("_eN")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_eO")} role=dialog aria-label="Jump to file"><div${_attr_class("_eP")}><strong${_attr_class("_eM")}>Files</strong><span${_attr_class("_eQ")}>${_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, "_eL"])} title=Close aria-label=Close>`);
2507
+ _html(`<div${_attr_class("_fz")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_fA")} role=dialog aria-label="Jump to file"><div${_attr_class("_fB")}><strong${_attr_class("_fy")}>Files</strong><span${_attr_class("_fC")}>${_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, "_fx"])} title=Close aria-label=Close>`);
2508
2508
  icon_xmark_default({ size: 16 });
2509
- _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_eW")}>`);
2509
+ _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_fI")}>`);
2510
2510
  _set_serialize_reason(2);
2511
2511
  const $childScope = _peek_scope_id();
2512
2512
  file_filter_default({
@@ -2515,24 +2515,24 @@ var diff_file_sheet_default = _template("e", (input) => {
2515
2515
  filter = _new_filter;
2516
2516
  }, "e2", $scope1_id)
2517
2517
  });
2518
- _html(`</div><div${_attr_class("_eR")}>`);
2518
+ _html(`</div><div${_attr_class("_fD")}>`);
2519
2519
  _for_of(input.files, (file) => {
2520
2520
  const $scope2_id = _scope_id();
2521
2521
  const parts = splitKey(file.key);
2522
- _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_eS", "_u"])}><span${_attr_class("_eZ")}${_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("_eT")}>`);
2522
+ _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_fE", "_u"])}><span${_attr_class("_fL")}${_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("_fF")}>`);
2523
2523
  _if(() => {
2524
2524
  if (parts.dir) {
2525
2525
  const $scope3_id = _scope_id();
2526
- _html(`<span${_attr_class("_eU")}><bdi>${_escape(parts.dir)}${_el_resume($scope3_id, "b", $sg__input_files)}/</bdi></span>`);
2526
+ _html(`<span${_attr_class("_fG")}><bdi>${_escape(parts.dir)}${_el_resume($scope3_id, "b", $sg__input_files)}/</bdi></span>`);
2527
2527
  $si__input_files && writeScope($scope3_id, { _: _scope_with_id($scope2_id) });
2528
2528
  return 0;
2529
2529
  }
2530
2530
  }, $scope2_id, "e", $sg__input_files, $sg__input_files, $sg__input_commentKeys__OR__input_newKeys__OR__input_files, 0, 1);
2531
- _html(`<span${_attr_class("_eV")}><bdi>${_escape(parts.name)}${_el_resume($scope2_id, "g", $sg__input_files)}</bdi></span></span>`);
2531
+ _html(`<span${_attr_class("_fH")}><bdi>${_escape(parts.name)}${_el_resume($scope2_id, "g", $sg__input_files)}</bdi></span></span>`);
2532
2532
  _if(() => {
2533
2533
  if (newKeys.has(file.key)) {
2534
2534
  const $scope4_id = _scope_id();
2535
- _html(`<span${_attr_class(["_w", "_eY"])} title="Changed since your last visit"></span>`);
2535
+ _html(`<span${_attr_class(["_w", "_fK"])} title="Changed since your last visit"></span>`);
2536
2536
  _serialize_if($scope0_reason, 1) && writeScope($scope4_id, {});
2537
2537
  return 0;
2538
2538
  }
@@ -2556,7 +2556,7 @@ var diff_file_sheet_default = _template("e", (input) => {
2556
2556
  _if(() => {
2557
2557
  if (!input.files.length) {
2558
2558
  const $scope6_id = _scope_id();
2559
- _html(`<p${_attr_class("_eX")}>No files match.</p>`);
2559
+ _html(`<p${_attr_class("_fJ")}>No files match.</p>`);
2560
2560
  $si__input_files_length && writeScope($scope6_id, {});
2561
2561
  return 0;
2562
2562
  }
@@ -3003,22 +3003,22 @@ var diff_view_default = _template("j", (input) => {
3003
3003
  collapsedRepos = /* @__PURE__ */ new Set([...collapsedRepos, id]);
3004
3004
  }
3005
3005
  }, "j27", $scope0_id);
3006
- _html(`<div${_attr_class("_dy")}><div${_attr_class("_dD")}><div${_attr_class("_dE")}><div${_attr_class(["_dO", { ["_dN"]: !comments.length }])}>`);
3006
+ _html(`<div${_attr_class("_d_")}><div${_attr_class("_ee")}><div${_attr_class("_ef")}><div${_attr_class(["_ep", { ["_eo"]: !comments.length }])}>`);
3007
3007
  _if(() => {
3008
3008
  if (input.onExit) {
3009
3009
  const $scope1_id = _scope_id();
3010
- _html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "_dF"])} title="Back to terminal (Esc)">`);
3010
+ _html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "_eg"])} title="Back to terminal (Esc)">`);
3011
3011
  icon_back_default({ size: 14 });
3012
3012
  _html(`</a>${_el_resume($scope1_id, "a", _serialize_guard($scope0_reason, 3))}`);
3013
3013
  _serialize_if($scope0_reason, 0) && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 3) && _scope_with_id($scope0_id) });
3014
3014
  return 0;
3015
3015
  }
3016
3016
  }, $scope0_id, "e", _serialize_guard($scope0_reason, 0), _serialize_guard($scope0_reason, 4), 1, 0, 1);
3017
- _html(`<h1${_attr_class("_dI")}>Review</h1>`);
3017
+ _html(`<h1${_attr_class("_ej")}>Review</h1>`);
3018
3018
  _if(() => {
3019
3019
  if (comments.length) {
3020
3020
  const $scope5_id = _scope_id();
3021
- _html(`<span${_attr_class("_dH")}>${_escape(comments.length)}${_el_resume($scope5_id, "b")} comment<!>${comments.length === 1 ? "" : "s"}${_el_resume($scope5_id, "c")}</span>`);
3021
+ _html(`<span${_attr_class("_ei")}>${_escape(comments.length)}${_el_resume($scope5_id, "b")} comment<!>${comments.length === 1 ? "" : "s"}${_el_resume($scope5_id, "c")}</span>`);
3022
3022
  writeScope($scope5_id, {});
3023
3023
  return 0;
3024
3024
  }
@@ -3026,7 +3026,7 @@ var diff_view_default = _template("j", (input) => {
3026
3026
  _if(() => {
3027
3027
  if (comments.length) {
3028
3028
  const $scope2_id = _scope_id();
3029
- _html(`<span${_attr_class("_dG")}>`);
3029
+ _html(`<span${_attr_class("_eh")}>`);
3030
3030
  _set_serialize_reason(_serialize_guard($scope0_reason, 5));
3031
3031
  const $childScope = _peek_scope_id();
3032
3032
  diff_send_default({
@@ -3039,14 +3039,14 @@ var diff_view_default = _template("j", (input) => {
3039
3039
  return 0;
3040
3040
  }
3041
3041
  }, $scope0_id, "h", 1, 1, 1, 0, 1);
3042
- _html(`</div>${_el_resume($scope0_id, "d")}<div${_attr_class("_dC")}>`);
3042
+ _html(`</div>${_el_resume($scope0_id, "d")}<div${_attr_class("_ed")}>`);
3043
3043
  _if(() => {
3044
3044
  if (hasFiles) {
3045
3045
  const $scope12_id = _scope_id();
3046
3046
  _html(`<button${_attr_class([
3047
3047
  treeToggle,
3048
- "_dA",
3049
- { ["_dz"]: treeOpen }
3048
+ "_eb",
3049
+ { ["_ea"]: treeOpen }
3050
3050
  ])} title=${treeOpen ? "\"Hide file tree\"" : "\"Show file tree\""}>`);
3051
3051
  icon_sidebar_default({ size: 14 });
3052
3052
  _html(`</button>${_el_resume($scope12_id, "a")}`);
@@ -3055,7 +3055,7 @@ var diff_view_default = _template("j", (input) => {
3055
3055
  return 0;
3056
3056
  }
3057
3057
  }, $scope0_id, "j", 1, 1, 1, 0, 1);
3058
- _html(`<button${_attr_class([iconBtnRow, "_dA"])} title="Refresh diff"${_attr("disabled", loading)}>`);
3058
+ _html(`<button${_attr_class([iconBtnRow, "_eb"])} title="Refresh diff"${_attr("disabled", loading)}>`);
3059
3059
  _set_serialize_reason(1);
3060
3060
  const $childScope2 = _peek_scope_id();
3061
3061
  icon_refresh_default({
@@ -3066,19 +3066,19 @@ var diff_view_default = _template("j", (input) => {
3066
3066
  _if(() => {
3067
3067
  if (hasFiles) {
3068
3068
  const $scope13_id = _scope_id();
3069
- _html(`<button${_attr_class(["_l", "_d0"])} title="Jump to file">Files (<!>${_escape(shownFiles.length)}${_el_resume($scope13_id, "b")})</button>${_el_resume($scope13_id, "a")}`);
3069
+ _html(`<button${_attr_class(["_l", "_eB"])} title="Jump to file">Files (<!>${_escape(shownFiles.length)}${_el_resume($scope13_id, "b")})</button>${_el_resume($scope13_id, "a")}`);
3070
3070
  _script($scope13_id, "j46");
3071
3071
  writeScope($scope13_id, {});
3072
3072
  return 0;
3073
3073
  }
3074
3074
  }, $scope0_id, "m", 1, 1, 1, 0, 1);
3075
- _html(`<div${_attr_class("_dP")} role=group aria-label="Review scope"><button type=button${_attr_class(["_dR", { ["_dQ"]: scope$1 === "committed" }])} aria-pressed=${scope$1 === "committed" ? "true" : "false"} title="Committed changes only (base…tip, no working-tree edits)"${_attr("disabled", loading)}>Committed</button>${_el_resume($scope0_id, "o")}<button type=button${_attr_class(["_dR", { ["_dQ"]: scope$1 === "working" }])} aria-pressed=${scope$1 === "working" ? "true" : "false"} title="Committed changes plus uncommitted and untracked files"${_attr("disabled", loading)}>Working tree</button>${_el_resume($scope0_id, "p")}<button type=button${_attr_class(["_dR", { ["_dQ"]: scope$1 === "dirty" }])} aria-pressed=${scope$1 === "dirty" ? "true" : "false"} title="Only uncommitted and untracked files, against HEAD"${_attr("disabled", loading)}>Uncommitted</button>${_el_resume($scope0_id, "q")}</div><span${_attr_class(["_j", "_dS"])}>`);
3075
+ _html(`<div${_attr_class("_eq")} role=group aria-label="Review scope"><button type=button${_attr_class(["_es", { ["_er"]: scope$1 === "committed" }])} aria-pressed=${scope$1 === "committed" ? "true" : "false"} title="Committed changes only (base…tip, no working-tree edits)"${_attr("disabled", loading)}>Committed</button>${_el_resume($scope0_id, "o")}<button type=button${_attr_class(["_es", { ["_er"]: scope$1 === "working" }])} aria-pressed=${scope$1 === "working" ? "true" : "false"} title="Committed changes plus uncommitted and untracked files"${_attr("disabled", loading)}>Working tree</button>${_el_resume($scope0_id, "p")}<button type=button${_attr_class(["_es", { ["_er"]: scope$1 === "dirty" }])} aria-pressed=${scope$1 === "dirty" ? "true" : "false"} title="Only uncommitted and untracked files, against HEAD"${_attr("disabled", loading)}>Uncommitted</button>${_el_resume($scope0_id, "q")}</div><span${_attr_class(["_j", "_et"])}>`);
3076
3076
  _attr_select_value($scope0_id, "s", scope$1, _resume(function(v) {
3077
3077
  setScope(v);
3078
3078
  }, "j0", $scope0_id), () => {
3079
- _html(`<select${_attr_class(["_k", "_dT"])} aria-label="Review scope"${_attr("disabled", loading)}><option${_attr_option_value("committed")}>Committed</option><option${_attr_option_value("working")}>Working tree</option><option${_attr_option_value("dirty")}>Uncommitted</option></select>`);
3079
+ _html(`<select${_attr_class(["_k", "_eu"])} aria-label="Review scope"${_attr("disabled", loading)}><option${_attr_option_value("committed")}>Committed</option><option${_attr_option_value("working")}>Working tree</option><option${_attr_option_value("dirty")}>Uncommitted</option></select>`);
3080
3080
  });
3081
- _html(`${_el_resume($scope0_id, "s")}</span><div${_attr_class(["_dL", { ["_dK"]: !findOpen }])}>`);
3081
+ _html(`${_el_resume($scope0_id, "s")}</span><div${_attr_class(["_em", { ["_el"]: !findOpen }])}>`);
3082
3082
  _set_serialize_reason(2);
3083
3083
  const $childScope3 = _peek_scope_id();
3084
3084
  diff_find_default({
@@ -3099,8 +3099,8 @@ var diff_view_default = _template("j", (input) => {
3099
3099
  const $scope14_id = _scope_id();
3100
3100
  _html(`<button${_attr_class([
3101
3101
  iconBtnRow,
3102
- "_dJ",
3103
- "_dA"
3102
+ "_ek",
3103
+ "_eb"
3104
3104
  ])} title="Find in review (⌘/Ctrl+F)" aria-label="Find in review"${_attr("hidden", findOpen)}>`);
3105
3105
  icon_search_default({ size: 14 });
3106
3106
  _html(`</button>${_el_resume($scope14_id, "a")}`);
@@ -3109,7 +3109,7 @@ var diff_view_default = _template("j", (input) => {
3109
3109
  return 0;
3110
3110
  }
3111
3111
  }, $scope0_id, "v", 1, 1, 1, 0, 1);
3112
- _html(`</div></div><div${_attr_class("_dM")} data-diff-main>`);
3112
+ _html(`</div></div><div${_attr_class("_en")} data-diff-main>`);
3113
3113
  _if(() => {
3114
3114
  if (error) {
3115
3115
  const $scope6_id = _scope_id();
@@ -3132,7 +3132,7 @@ var diff_view_default = _template("j", (input) => {
3132
3132
  _if(() => {
3133
3133
  if (!repos && loading) {
3134
3134
  const $scope15_id = _scope_id();
3135
- _html(`<div${_attr_class("_dV")} aria-hidden=true><div${_attr_class(["_dW", "_dX"])}></div><div${_attr_class(["_dW", "_dY"])}></div><div${_attr_class(["_dW", "_dZ"])}></div><div${_attr_class(["_dW", "_dY"])}></div><div${_attr_class(["_dW", "_dZ"])}></div></div>`);
3135
+ _html(`<div${_attr_class("_ew")} aria-hidden=true><div${_attr_class(["_ex", "_ey"])}></div><div${_attr_class(["_ex", "_ez"])}></div><div${_attr_class(["_ex", "_eA"])}></div><div${_attr_class(["_ex", "_ez"])}></div><div${_attr_class(["_ex", "_eA"])}></div></div>`);
3136
3136
  writeScope($scope15_id, {});
3137
3137
  return 0;
3138
3138
  }