@dylanpiercey/work 0.0.66 → 0.0.67

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 (249) hide show
  1. package/bin/work.mjs +17 -1
  2. package/dist/{_CLt6aKrh.js → _B9UH2f9c.js} +20 -15
  3. package/dist/_C8-SYmgW.js +2 -0
  4. package/dist/{_prItJCwP.js → _D78MdEM0.js} +1174 -973
  5. package/dist/{_Dp9_KYvx.js → _mSrLyFdO.js} +9 -1
  6. package/dist/index.mjs +867 -658
  7. package/dist/public/assets/{_Bz51lZqR.js → _3k9q7qTZ.js} +1 -1
  8. package/dist/public/assets/_3k9q7qTZ.js.br +0 -0
  9. package/dist/public/assets/{_B05o73WT2.js → _6Uv2mA8-2.js} +1 -1
  10. package/dist/public/assets/_6Uv2mA8-2.js.br +0 -0
  11. package/dist/public/assets/{_B8G3NoPj.js → _AMWZA0be.js} +1 -1
  12. package/dist/public/assets/_AMWZA0be.js.br +0 -0
  13. package/dist/public/assets/{_DNEFW33V.js → _B1ZCEYOD.js} +1 -1
  14. package/dist/public/assets/_B1ZCEYOD.js.br +0 -0
  15. package/dist/public/assets/{_Cdheecpj.js → _B1vmwnMa.js} +1 -1
  16. package/dist/public/assets/_B1vmwnMa.js.br +0 -0
  17. package/dist/public/assets/{_kh47s6nR.js → _B5iCC67h.js} +1 -1
  18. package/dist/public/assets/_B5iCC67h.js.br +0 -0
  19. package/dist/public/assets/{_C9OXLFHE.js → _BL7XgPZ_.js} +1 -1
  20. package/dist/public/assets/_BL7XgPZ_.js.br +0 -0
  21. package/dist/public/assets/{_DYzEbPN62.js → _BSNS3UMH2.js} +1 -1
  22. package/dist/public/assets/_BSNS3UMH2.js.br +0 -0
  23. package/dist/public/assets/{_BHfYUVf92.js → _BV3Xd3ki2.js} +1 -1
  24. package/dist/public/assets/{_opBVTnU5.js → _BW1UpUrT.js} +1 -1
  25. package/dist/public/assets/_BW1UpUrT.js.br +0 -0
  26. package/dist/public/assets/{_PuhXJ75Y2.js → _BW81rf1H2.js} +1 -1
  27. package/dist/public/assets/_BW81rf1H2.js.br +0 -0
  28. package/dist/public/assets/{_CVsVJtsx2.js → _BXCZuUQA2.js} +1 -1
  29. package/dist/public/assets/_BXCZuUQA2.js.br +0 -0
  30. package/dist/public/assets/{_CaqW-zk5.js → _B_cZqSdw.js} +1 -1
  31. package/dist/public/assets/_B_cZqSdw.js.br +0 -0
  32. package/dist/public/assets/{_BrmwzOnI.js → _BaoSUC_i.js} +1 -1
  33. package/dist/public/assets/_BaoSUC_i.js.br +0 -0
  34. package/dist/public/assets/{_BskoQ_9N.js → _BkgwhUlf.js} +1 -1
  35. package/dist/public/assets/_BkgwhUlf.js.br +0 -0
  36. package/dist/public/assets/{_dh9Nkmu2.js → _Bs3zDe42.js} +1 -1
  37. package/dist/public/assets/_Bs3zDe42.js.br +0 -0
  38. package/dist/public/assets/{_DDlrIXcy.js → _BtsudbJn.js} +1 -1
  39. package/dist/public/assets/_BtsudbJn.js.br +0 -0
  40. package/dist/public/assets/{_bN6AHjz72.js → _BwQNx6NX2.js} +1 -1
  41. package/dist/public/assets/_BwQNx6NX2.js.br +0 -0
  42. package/dist/public/assets/{_D9saMO33.js → _Bx58LnKm.js} +1 -1
  43. package/dist/public/assets/_Bx58LnKm.js.br +0 -0
  44. package/dist/public/assets/{_DoPHUocN2.js → _BzP13oLI2.js} +1 -1
  45. package/dist/public/assets/_BzP13oLI2.js.br +0 -0
  46. package/dist/public/assets/{_mcTiUg5Q.js → _C13mV9Vy.js} +1 -1
  47. package/dist/public/assets/_C13mV9Vy.js.br +0 -0
  48. package/dist/public/assets/{_CuKBxxEj.js → _C7_gIQ1W.js} +1 -1
  49. package/dist/public/assets/_C7_gIQ1W.js.br +0 -0
  50. package/dist/public/assets/{_DmiiHlMw.js → _C8IzwQRq.js} +1 -1
  51. package/dist/public/assets/_C8IzwQRq.js.br +0 -0
  52. package/dist/public/assets/{_B1mF3byy.js → _C9ETD15k.js} +1 -1
  53. package/dist/public/assets/_C9ETD15k.js.br +0 -0
  54. package/dist/public/assets/{_WP2Lc15n2.js → _CBo0xAjA2.js} +1 -1
  55. package/dist/public/assets/{_D816eq_5.js → _CCbKzznD.js} +1 -1
  56. package/dist/public/assets/_CCbKzznD.js.br +0 -0
  57. package/dist/public/assets/{_DNX2C5WJ2.js → _CHxLUwRe2.js} +1 -1
  58. package/dist/public/assets/_CHxLUwRe2.js.br +0 -0
  59. package/dist/public/assets/{_B0k7NugC2.js → _CPi3B_vr2.js} +1 -1
  60. package/dist/public/assets/_CPi3B_vr2.js.br +0 -0
  61. package/dist/public/assets/{_C49UpI2x.js → _CS_y_5bW.js} +1 -1
  62. package/dist/public/assets/_CS_y_5bW.js.br +0 -0
  63. package/dist/public/assets/{_CxfdAeEw2.js → _CYMzncSB2.js} +1 -1
  64. package/dist/public/assets/_CYMzncSB2.js.br +0 -0
  65. package/dist/public/assets/{_rZXmOaG32.js → _CZyTbXSO2.js} +1 -1
  66. package/dist/public/assets/_CZyTbXSO2.js.br +0 -0
  67. package/dist/public/assets/{_DcprnWO8.js → _Cc8KMyAp.js} +1 -1
  68. package/dist/public/assets/_Cc8KMyAp.js.br +0 -0
  69. package/dist/public/assets/{_CbWbEVg6.js → _CcdwqB39.js} +1 -1
  70. package/dist/public/assets/_CcdwqB39.js.br +0 -0
  71. package/dist/public/assets/{_vRoufqCj.js → _CduHXYfC.js} +45 -45
  72. package/dist/public/assets/_CduHXYfC.js.br +0 -0
  73. package/dist/public/assets/{_B5xui1fA.js → _CgMtsYIH.js} +1 -1
  74. package/dist/public/assets/_CgMtsYIH.js.br +0 -0
  75. package/dist/public/assets/{_CHvHhxWd2.js → _CgdPOrhX2.js} +1 -1
  76. package/dist/public/assets/_CgdPOrhX2.js.br +0 -0
  77. package/dist/public/assets/{_B1EEc4qP.js → _Chsu042s.js} +1 -1
  78. package/dist/public/assets/_Chsu042s.js.br +0 -0
  79. package/dist/public/assets/{_BQx2yI4L2.js → _CjxTlEOw2.js} +1 -1
  80. package/dist/public/assets/_CjxTlEOw2.js.br +0 -0
  81. package/dist/public/assets/{_CusaLcB32.js → _ClECf4L52.js} +1 -1
  82. package/dist/public/assets/_ClECf4L52.js.br +0 -0
  83. package/dist/public/assets/{_DTKF7fNw.js → _CnQdBazT.js} +1 -1
  84. package/dist/public/assets/_CnQdBazT.js.br +0 -0
  85. package/dist/public/assets/{_ByLRpoD8.js → _CsVHdEro.js} +1 -1
  86. package/dist/public/assets/{_e-tg77rn.js → _CsdnwX6C.js} +1 -1
  87. package/dist/public/assets/_CsdnwX6C.js.br +0 -0
  88. package/dist/public/assets/{_DgRqz5gW.js → _CsuFzJmI.js} +1 -1
  89. package/dist/public/assets/_CsuFzJmI.js.br +0 -0
  90. package/dist/public/assets/{_d0SVuxND.js → _CuUYX7O6.js} +1 -1
  91. package/dist/public/assets/_CuUYX7O6.js.br +0 -0
  92. package/dist/public/assets/{_r0Ipkhml2.js → _Cvm7LApl2.js} +1 -1
  93. package/dist/public/assets/_Cvm7LApl2.js.br +0 -0
  94. package/dist/public/assets/{_CnuCerLV.js → _CzJu_xMs.js} +1 -1
  95. package/dist/public/assets/_CzJu_xMs.js.br +0 -0
  96. package/dist/public/assets/{_Bu3F-JoI.js → _D3ardbW_.js} +1 -1
  97. package/dist/public/assets/_D3ardbW_.js.br +0 -0
  98. package/dist/public/assets/{_CPFyUv8c.js → _D6UgA7_X.js} +1 -1
  99. package/dist/public/assets/_D6UgA7_X.js.br +0 -0
  100. package/dist/public/assets/{_DQUq9TzX2.js → _D6hi7ua72.js} +1 -1
  101. package/dist/public/assets/_D6hi7ua72.js.br +0 -0
  102. package/dist/public/assets/{_CPY9iUML.js → _D9eCCnFe.js} +1 -1
  103. package/dist/public/assets/_D9eCCnFe.js.br +0 -0
  104. package/dist/public/assets/{_Uj1o8NRL.js → _DHLcQgxi.js} +1 -1
  105. package/dist/public/assets/_DHLcQgxi.js.br +0 -0
  106. package/dist/public/assets/{_BzqAPgV-.js → _DLfp1TG-.js} +1 -1
  107. package/dist/public/assets/_DLfp1TG-.js.br +0 -0
  108. package/dist/public/assets/{_D7CRrNvF.js → _DRbnn8C_.js} +1 -1
  109. package/dist/public/assets/_DRbnn8C_.js.br +0 -0
  110. package/dist/public/assets/{_CXUgu159.js → _DTD1tZCR.js} +1 -1
  111. package/dist/public/assets/_DTD1tZCR.js.br +0 -0
  112. package/dist/public/assets/{_BS0vA9WC.js → _DX5zvNmD.js} +1 -1
  113. package/dist/public/assets/_DX5zvNmD.js.br +0 -0
  114. package/dist/public/assets/{_CqVqqLWQ.js → _DbEBleKv.js} +1 -1
  115. package/dist/public/assets/_DbEBleKv.js.br +0 -0
  116. package/dist/public/assets/{_CMW5tN5O2.js → _DeKPlPsD2.js} +1 -1
  117. package/dist/public/assets/_DeKPlPsD2.js.br +0 -0
  118. package/dist/public/assets/{_TGf7nf1b.js → _DfBlfnwv.js} +1 -1
  119. package/dist/public/assets/_DfBlfnwv.js.br +0 -0
  120. package/dist/public/assets/{_BsO1b3gk.js → _DiAj-Esd.js} +1 -1
  121. package/dist/public/assets/_DiAj-Esd.js.br +0 -0
  122. package/dist/public/assets/{_jR8RP1Ko2.js → _DlpIObWk2.js} +1 -1
  123. package/dist/public/assets/_DlpIObWk2.js.br +0 -0
  124. package/dist/public/assets/{_wN6_cR73.js → _Dlrc6R2N.js} +4 -4
  125. package/dist/public/assets/_Dlrc6R2N.js.br +0 -0
  126. package/dist/public/assets/{_6zkzF93t.js → _Ds1l_cNr.js} +1 -1
  127. package/dist/public/assets/_Ds1l_cNr.js.br +0 -0
  128. package/dist/public/assets/{_DuRPosDU2.js → _Dzm4iymN2.js} +1 -1
  129. package/dist/public/assets/_Dzm4iymN2.js.br +0 -0
  130. package/dist/public/assets/{_BD4oLAJs.js → _NElrm0bu.js} +1 -1
  131. package/dist/public/assets/_NElrm0bu.js.br +0 -0
  132. package/dist/public/assets/{_HzkUNjYF.js → _QqRd5Qfx.js} +1 -1
  133. package/dist/public/assets/_QqRd5Qfx.js.br +0 -0
  134. package/dist/public/assets/{_BWVJscSb.js → _VuWoXkq_.js} +1 -1
  135. package/dist/public/assets/_VuWoXkq_.js.br +0 -0
  136. package/dist/public/assets/{_DuYhjVLw.js → _W9tsjAUN.js} +1 -1
  137. package/dist/public/assets/_W9tsjAUN.js.br +0 -0
  138. package/dist/public/assets/{_w1EhXX_8.js → _g4l6Vz4T.js} +1 -1
  139. package/dist/public/assets/_g4l6Vz4T.js.br +0 -0
  140. package/dist/public/assets/{_CCthH_iX.js → _iFcqMrGB.js} +1 -1
  141. package/dist/public/assets/_iFcqMrGB.js.br +0 -0
  142. package/dist/public/assets/{_DaJqwjNP2.js → _m3dEhGTX2.js} +1 -1
  143. package/dist/public/assets/_m3dEhGTX2.js.br +0 -0
  144. package/dist/public/assets/{_CCtam4vN2.js → _pfnxgR1W2.js} +1 -1
  145. package/dist/public/assets/_pfnxgR1W2.js.br +0 -0
  146. package/dist/public/assets/{_C4-16Peb2.js → _sNxRRogh2.js} +1 -1
  147. package/dist/public/assets/_sNxRRogh2.js.br +0 -0
  148. package/dist/public/assets/{_jOq05NWI.js → _uDnfyVmG.js} +1 -1
  149. package/dist/public/assets/_uDnfyVmG.js.br +0 -0
  150. package/dist/public/assets/{_D-NX3TNd.js → _u_iVn6qP.js} +1 -1
  151. package/dist/public/assets/_u_iVn6qP.js.br +0 -0
  152. package/dist/public/assets/{_DV7j4cO7.js → _y4Ul_ohO.js} +1 -1
  153. package/dist/public/assets/_y4Ul_ohO.js.br +0 -0
  154. package/dist/public/assets/{_ILiR5QWb2.js → _ypxye8UD2.js} +1 -1
  155. package/dist/public/assets/_ypxye8UD2.js.br +0 -0
  156. package/dist/public/assets/{app-page-DASXpmZa.css → app-page-DZhaOCYJ.css} +1 -1
  157. package/dist/public/assets/app-page-DZhaOCYJ.css.br +0 -0
  158. package/dist/public/assets/diff-view-QQN-PSAx.css +1 -0
  159. package/dist/public/assets/diff-view-QQN-PSAx.css.br +0 -0
  160. package/dist/public/assets/new-Cia2P5u6.js +1 -0
  161. package/dist/public/assets/settings-Cia2P5u6.js +1 -0
  162. package/dist/public/assets/w-Cia2P5u6.js +1 -0
  163. package/dist/public/assets/w._-BwIlYQ_7.js +1 -0
  164. package/dist/public/assets/w._-Cia2P5u6.js +1 -0
  165. package/lib/review/markdown.d.mts +37 -0
  166. package/lib/review/markdown.mjs +117 -0
  167. package/package.json +1 -1
  168. package/dist/_CTJQVrRJ.js +0 -2
  169. package/dist/public/assets/_6zkzF93t.js.br +0 -0
  170. package/dist/public/assets/_B05o73WT2.js.br +0 -0
  171. package/dist/public/assets/_B0k7NugC2.js.br +0 -0
  172. package/dist/public/assets/_B1EEc4qP.js.br +0 -0
  173. package/dist/public/assets/_B1mF3byy.js.br +0 -0
  174. package/dist/public/assets/_B5xui1fA.js.br +0 -0
  175. package/dist/public/assets/_B8G3NoPj.js.br +0 -0
  176. package/dist/public/assets/_BD4oLAJs.js.br +0 -0
  177. package/dist/public/assets/_BQx2yI4L2.js.br +0 -0
  178. package/dist/public/assets/_BS0vA9WC.js.br +0 -0
  179. package/dist/public/assets/_BWVJscSb.js.br +0 -0
  180. package/dist/public/assets/_BrmwzOnI.js.br +0 -0
  181. package/dist/public/assets/_BsO1b3gk.js.br +0 -0
  182. package/dist/public/assets/_BskoQ_9N.js.br +0 -0
  183. package/dist/public/assets/_Bu3F-JoI.js.br +0 -0
  184. package/dist/public/assets/_Bz51lZqR.js.br +0 -0
  185. package/dist/public/assets/_BzqAPgV-.js.br +0 -0
  186. package/dist/public/assets/_C4-16Peb2.js.br +0 -0
  187. package/dist/public/assets/_C49UpI2x.js.br +0 -0
  188. package/dist/public/assets/_C9OXLFHE.js.br +0 -0
  189. package/dist/public/assets/_CCtam4vN2.js.br +0 -0
  190. package/dist/public/assets/_CCthH_iX.js.br +0 -0
  191. package/dist/public/assets/_CHvHhxWd2.js.br +0 -0
  192. package/dist/public/assets/_CMW5tN5O2.js.br +0 -0
  193. package/dist/public/assets/_CPFyUv8c.js.br +0 -0
  194. package/dist/public/assets/_CPY9iUML.js.br +0 -0
  195. package/dist/public/assets/_CVsVJtsx2.js.br +0 -0
  196. package/dist/public/assets/_CXUgu159.js.br +0 -0
  197. package/dist/public/assets/_CaqW-zk5.js.br +0 -0
  198. package/dist/public/assets/_CbWbEVg6.js.br +0 -0
  199. package/dist/public/assets/_Cdheecpj.js.br +0 -0
  200. package/dist/public/assets/_CnuCerLV.js.br +0 -0
  201. package/dist/public/assets/_CqVqqLWQ.js.br +0 -0
  202. package/dist/public/assets/_CuKBxxEj.js.br +0 -0
  203. package/dist/public/assets/_CusaLcB32.js.br +0 -0
  204. package/dist/public/assets/_CxfdAeEw2.js.br +0 -0
  205. package/dist/public/assets/_D-NX3TNd.js.br +0 -0
  206. package/dist/public/assets/_D7CRrNvF.js.br +0 -0
  207. package/dist/public/assets/_D816eq_5.js.br +0 -0
  208. package/dist/public/assets/_D9saMO33.js.br +0 -0
  209. package/dist/public/assets/_DDlrIXcy.js.br +0 -0
  210. package/dist/public/assets/_DNEFW33V.js.br +0 -0
  211. package/dist/public/assets/_DNX2C5WJ2.js.br +0 -0
  212. package/dist/public/assets/_DQUq9TzX2.js.br +0 -0
  213. package/dist/public/assets/_DTKF7fNw.js.br +0 -0
  214. package/dist/public/assets/_DV7j4cO7.js.br +0 -0
  215. package/dist/public/assets/_DYzEbPN62.js.br +0 -0
  216. package/dist/public/assets/_DaJqwjNP2.js.br +0 -0
  217. package/dist/public/assets/_DcprnWO8.js.br +0 -0
  218. package/dist/public/assets/_DgRqz5gW.js.br +0 -0
  219. package/dist/public/assets/_DmiiHlMw.js.br +0 -0
  220. package/dist/public/assets/_DoPHUocN2.js.br +0 -0
  221. package/dist/public/assets/_DuRPosDU2.js.br +0 -0
  222. package/dist/public/assets/_DuYhjVLw.js.br +0 -0
  223. package/dist/public/assets/_HzkUNjYF.js.br +0 -0
  224. package/dist/public/assets/_ILiR5QWb2.js.br +0 -0
  225. package/dist/public/assets/_PuhXJ75Y2.js.br +0 -0
  226. package/dist/public/assets/_TGf7nf1b.js.br +0 -0
  227. package/dist/public/assets/_Uj1o8NRL.js.br +0 -0
  228. package/dist/public/assets/_bN6AHjz72.js.br +0 -0
  229. package/dist/public/assets/_d0SVuxND.js.br +0 -0
  230. package/dist/public/assets/_dh9Nkmu2.js.br +0 -0
  231. package/dist/public/assets/_e-tg77rn.js.br +0 -0
  232. package/dist/public/assets/_jOq05NWI.js.br +0 -0
  233. package/dist/public/assets/_jR8RP1Ko2.js.br +0 -0
  234. package/dist/public/assets/_kh47s6nR.js.br +0 -0
  235. package/dist/public/assets/_mcTiUg5Q.js.br +0 -0
  236. package/dist/public/assets/_opBVTnU5.js.br +0 -0
  237. package/dist/public/assets/_r0Ipkhml2.js.br +0 -0
  238. package/dist/public/assets/_rZXmOaG32.js.br +0 -0
  239. package/dist/public/assets/_vRoufqCj.js.br +0 -0
  240. package/dist/public/assets/_w1EhXX_8.js.br +0 -0
  241. package/dist/public/assets/_wN6_cR73.js.br +0 -0
  242. package/dist/public/assets/app-page-DASXpmZa.css.br +0 -0
  243. package/dist/public/assets/diff-view-DsPD6PLr.css +0 -1
  244. package/dist/public/assets/diff-view-DsPD6PLr.css.br +0 -0
  245. package/dist/public/assets/new-DYa0KZD7.js +0 -1
  246. package/dist/public/assets/settings-DYa0KZD7.js +0 -1
  247. package/dist/public/assets/w-DYa0KZD7.js +0 -1
  248. package/dist/public/assets/w._-CN7l1nb6.js +0 -1
  249. package/dist/public/assets/w._-DYa0KZD7.js +0 -1
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "./_BMI-E3GI.js";
2
- import { $ as get, A as subscribe, B as setPref, C as setScrapedPhase, D as pushPublicKey, E as deleteSubscription, F as disabledAgents, G as setupPath, H as doctor, I as enabledAgents, J as TOOLS, K as which, L as getSetting, M as subscriberJoins, N as agentChoices, O as saveSubscription, P as allPrefs, Q as db, R as preferredAgent, S as setAgentPhase, T as summaryFromHookPayload, U as ghKnownHosts, V as setSetting, W as miseVersions, X as toolById, Y as agentById, Z as all, _ as tmuxName, a as ensureTmuxServer, at as tmux, b as clearAgentPhase, c as killWorkspaceSessions, d as newSessionArgs, et as workspacePath, g as sessionStates, h as sendToSession, i as disposeSessions, it as run, j as subscriberCount, k as publish, l as listSessions, m as renameSession, n as clearTmuxStarted, nt as gh, o as getSession, ot as config, p as panePids, q as DEFAULT_GITHUB_HOST, r as createSession, rt as git, s as killSession, t as cleanEnv, tt as TMUX_SOCKET, u as markTmuxStarted, v as tmuxWasStarted, w as setSessionViewers, x as reasonFromHookPayload, y as reportsWorking, z as setDisabledAgents } from "./_Dp9_KYvx.js";
3
- import { $ as _for_of, A as phase, B as _attr_style, C as btnLg, Ct as _var, D as iconBtnXs, E as iconBtnRow, Et as writeScope, G as _content_resume, H as _attrs_partial, I as _attr_input_value, J as _el_read_error, K as _dynamic_tag, L as _attr_option_value, M as $global, N as _attr, O as inputLg, P as _attr_class, Q as _flush_head, R as _attr_or, S as setPrimaryHost, St as _try, Tt as withPageAssets, U as _await, V as _attrs, W as _content, X as _escape, Y as _el_resume, Z as _existing_scope, _ as toast_default, _t as _show_start, at as _peek_scope_id, b as repoLabel, bt as _to_text, c as workspaceTab, ct as _scope_id, d as icon_search_default, dt as _script, et as _hoist, f as icon_back_default, ft as _sep, g as sectionCount$1, gt as _show_end, h as row, ht as _set_serialize_reason, it as _if, j as tone, k as metaTrunc, lt as _scope_reason, m as iconBtn$2, mt as _serialize_if, n as findInput, nt as _html, o as setWorkspaceTab, ot as _resume, p as icon_refresh_default, pt as _serialize_guard, r as icon_sidebar_default, rt as _id, s as sideNavOpen, st as _resume_branch, t as findIconBtn, tt as _hoist_read_error, u as rankRepos, ut as _scope_with_id, v as icon_xmark_default, vt as _subscribe, w as btnSm, wt as attrTag, x as repoWebUrl$1, xt as _trailers, y as icon_base_default, yt as _template, z as _attr_select_value } from "./_CLt6aKrh.js";
2
+ import { $ as get, A as subscribe, B as setPref, C as setScrapedPhase, D as pushPublicKey, E as deleteSubscription, F as disabledAgents, G as setupPath, H as doctor, I as enabledAgents, J as TOOLS, K as which, L as getSetting, M as subscriberJoins, N as agentChoices, O as saveSubscription, P as allPrefs, Q as db, R as preferredAgent, S as setAgentPhase, T as summaryFromHookPayload, U as ghKnownHosts, V as setSetting, W as miseVersions, X as toolById, Y as agentById, Z as all, _ as tmuxName, a as ensureTmuxServer, at as tmux, b as clearAgentPhase, c as killWorkspaceSessions, d as newSessionArgs, et as workspacePath, g as sessionStates, h as sendToSession, i as disposeSessions, it as run, j as subscriberCount, k as publish, l as listSessions, m as renameSession, n as clearTmuxStarted, nt as gh, o as getSession, ot as config, p as panePids, q as DEFAULT_GITHUB_HOST, r as createSession, rt as git, s as killSession, t as cleanEnv, tt as TMUX_SOCKET, u as markTmuxStarted, v as tmuxWasStarted, w as setSessionViewers, x as reasonFromHookPayload, y as reportsWorking, z as setDisabledAgents } from "./_mSrLyFdO.js";
3
+ import { $ as _flush_head, A as metaTrunc, B as _attr_select_value, C as setPrimaryHost, Ct as _try, D as iconBtnRow, Dt as writeScope, Et as withPageAssets, F as _attr_class, G as _content, H as _attrs, K as _content_resume, L as _attr_input_value, M as tone, N as $global, O as iconBtnXs, P as _attr, Q as _existing_scope, R as _attr_option_value, S as repoWebUrl$1, St as _trailers, T as btnSm, Tt as attrTag, U as _attrs_partial, V as _attr_style, W as _await, X as _el_resume, Y as _el_read_error, Z as _escape, _ as sectionCount$1, _t as _show_end, at as _if, b as icon_base_default, bt as _template, c as sideNavOpen, ct as _resume_branch, d as rankRepos, dt as _scope_with_id, et as _for_of, f as icon_search_default, ft as _script, g as row, gt as _set_serialize_reason, h as iconBtn$2, ht as _serialize_if, it as _id, j as phase, k as inputLg, l as workspaceTab, lt as _scope_id, m as icon_refresh_default, mt as _serialize_guard, n as findInput, nt as _hoist_read_error, ot as _peek_scope_id, p as icon_back_default, pt as _sep, q as _dynamic_tag, r as icon_sidebar_default, rt as _html, s as setWorkspaceTab, st as _resume, t as findIconBtn, tt as _hoist, ut as _scope_reason, v as toast_default, vt as _show_start, w as btnLg, wt as _var, x as repoLabel, xt as _to_text, y as icon_xmark_default, yt as _subscribe, z as _attr_or } from "./_B9UH2f9c.js";
4
4
  import fs from "node:fs";
5
5
  import { createServer } from "node:http";
6
6
  import path from "node:path";
@@ -12,7 +12,7 @@ import os from "node:os";
12
12
  import { spawn } from "node:child_process";
13
13
  import { DatabaseSync } from "node:sqlite";
14
14
  import fsp from "node:fs/promises";
15
- import crypto from "node:crypto";
15
+ import crypto, { createHash } from "node:crypto";
16
16
  import pty from "node-pty";
17
17
  //#region node_modules/.pnpm/@marko+run@0.11.9_@types+node@26.2.0_esbuild@0.27.7_marko@6.3.34/node_modules/@marko/run/dist/adapter/middleware.js
18
18
  function getOrigin(req, trustProxy) {
@@ -1851,6 +1851,7 @@ async function deleteWorkspace(id) {
1851
1851
  if (!ws) throw new Error(`unknown workspace: ${id}`);
1852
1852
  const sessions = listSessions(id);
1853
1853
  db.prepare("DELETE FROM workspaces WHERE id = ?").run(id);
1854
+ db.prepare("DELETE FROM settings WHERE key = ?").run(`review.seen:${id}`);
1854
1855
  notifyWorkspacesChanged();
1855
1856
  progress$1(`Stopping sessions and processes…`);
1856
1857
  await disposeSessions(sessions);
@@ -2169,9 +2170,11 @@ ${repos.map((r) => `- \`${r.worktree}/\`: ${r.full_name} (base: \`${r.base_branc
2169
2170
  - **Ask \`work\` for facts:** the \`work\` CLI answers from the same data as
2170
2171
  the app: \`work workspace\` (this workspace: repos, base branches, open PRs,
2171
2172
  sessions, running procs/ports), \`work repos\`, \`work procs\`,
2172
- \`work workspaces\`, \`work doctor\` (installed tools / agents / GitHub
2173
- sign-in), \`work usage\` (agent plan quotas). Add \`--json\` for machine
2174
- output. Prefer these over guessing from the filesystem or calling GitHub.
2173
+ \`work review\` (review comments the user left on the diff and has not
2174
+ sent yet, as markdown), \`work workspaces\`, \`work doctor\` (installed
2175
+ tools / agents / GitHub sign-in), \`work usage\` (agent plan quotas). Add
2176
+ \`--json\` for machine output. Prefer these over guessing from the
2177
+ filesystem or calling GitHub.
2175
2178
  `;
2176
2179
  fs.writeFileSync(path.join(dir, "AGENTS.md"), content);
2177
2180
  const claudeMd = path.join(dir, "CLAUDE.md");
@@ -3052,7 +3055,7 @@ var _middleware_default = Run.ALL((ctx, next) => {
3052
3055
  var mware3 = normalizeHandler(_middleware_default$3);
3053
3056
  var mware7 = normalizeHandler(_middleware_default$2);
3054
3057
  var mware11 = normalizeHandler(_middleware_default$1);
3055
- var mware34 = normalizeHandler(_middleware_default);
3058
+ var mware33 = normalizeHandler(_middleware_default);
3056
3059
  //#endregion
3057
3060
  //#region \0marko-link-assets.mjs
3058
3061
  var base = "/";
@@ -3255,7 +3258,7 @@ var PATHS = {
3255
3258
  copilot: "M19.245 5.364c1.322 1.36 1.877 3.216 2.11 5.817.622 0 1.2.135 1.592.654l.73.964c.21.278.323.61.323.955v2.62c0 .339-.173.669-.453.868C20.239 19.602 16.157 21.5 12 21.5c-4.6 0-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654 1.593-.654l.029-.297c.25-2.446.81-4.213 2.082-5.52 2.461-2.54 5.71-2.851 7.146-2.864h.198c1.436.013 4.685.323 7.146 2.864zm-7.244 4.328c-.284 0-.613.016-.962.05-.123.447-.305.85-.57 1.108-1.05 1.023-2.316 1.18-2.994 1.18-.638 0-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882 65.882 0 00-.063 2.884l-.002.48c-.002.563-.005 1.126-.013 1.69.002.326.204.63.51.765 2.482 1.102 4.83 1.657 6.99 1.657 2.156 0 4.504-.555 6.985-1.657a.854.854 0 00.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677 0-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525 4.013c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zm5 0c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635 5.087c-1.05.102-1.935.438-2.385.906-.975 1.037-.765 3.668-.21 4.224.405.394 1.17.657 1.995.657h.09c.649-.013 1.785-.176 2.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63 1.813-.03 1.037.24 2.06.675 2.47.968.957 2.136 1.104 2.776 1.11h.044c.825 0 1.59-.263 1.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12 7.615c-.24 0-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94 2.94 0 01-.014.25c.225-.022.425-.027.612-.028h.366c.187 0 .387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29 9.29 0 00-.84-.044z",
3256
3259
  cursor: "M22.106 5.68L12.5.135a.998.998 0 00-.998 0L1.893 5.68a.84.84 0 00-.419.726v11.186c0 .3.16.577.42.727l9.607 5.547a.999.999 0 00.998 0l9.608-5.547a.84.84 0 00.42-.727V6.407a.84.84 0 00-.42-.726zm-.603 1.176L12.228 22.92c-.063.108-.228.064-.228-.061V12.34a.59.59 0 00-.295-.51l-9.11-5.26c-.107-.062-.063-.228.062-.228h18.55c.264 0 .428.286.296.514z"
3257
3260
  };
3258
- var icon_agent_default = _template("A", (input) => {
3261
+ var icon_agent_default = _template("B", (input) => {
3259
3262
  const $scope0_reason = _scope_reason(), $sg__input_agent = _serialize_guard($scope0_reason, 2), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0), $si__input_size__OR__input_class = _serialize_if($scope0_reason, 0), $si__input_size__OR__input_agent__OR__input_class = _serialize_if($scope0_reason, 1), $si__input_agent = _serialize_if($scope0_reason, 2);
3260
3263
  const $scope0_id = _scope_id();
3261
3264
  const $badge__closures = /* @__PURE__ */ new Set();
@@ -3305,7 +3308,7 @@ var icon_agent_default = _template("A", (input) => {
3305
3308
  n: $badge__closures
3306
3309
  });
3307
3310
  });
3308
- var usageNote = "_cL _P";
3311
+ var usageNote = "_cy _P";
3309
3312
  //#endregion
3310
3313
  //#region src/tags/usage-meters.marko
3311
3314
  function duration(ms) {
@@ -3325,15 +3328,15 @@ function resetLabel(iso, stale) {
3325
3328
  if (ms <= 0) return stale ? null : "now";
3326
3329
  return duration(ms);
3327
3330
  }
3328
- var usage_meters_default = _template("y", (input) => {
3331
+ var usage_meters_default = _template("z", (input) => {
3329
3332
  const $scope0_reason = _scope_reason(), $sg__input_agent__OR__input_hideName = _serialize_guard($scope0_reason, 0), $sg__input_agent = _serialize_guard($scope0_reason, 1), $si__input_agent = _serialize_if($scope0_reason, 1), $sg__input_hideName = _serialize_guard($scope0_reason, 2), $si__input_agent__OR__input_hideName = _serialize_if($scope0_reason, 0);
3330
3333
  const $scope0_id = _scope_id();
3331
3334
  const agent = input.agent;
3332
- _html(`<div${_attr_class(["_cF", { ["_cG"]: input.hideName }])}><div${_attr_class("_cH")}>`);
3335
+ _html(`<div${_attr_class(["_cs", { ["_ct"]: input.hideName }])}><div${_attr_class("_cu")}>`);
3333
3336
  _if(() => {
3334
3337
  if (!input.hideName) {
3335
3338
  const $scope1_id = _scope_id();
3336
- _html(`<strong${_attr_class("_c0")}>${_escape(agent.agent)}${_el_resume($scope1_id, "b", $sg__input_agent)}</strong>`);
3339
+ _html(`<strong${_attr_class("_cN")}>${_escape(agent.agent)}${_el_resume($scope1_id, "b", $sg__input_agent)}</strong>`);
3337
3340
  $si__input_agent__OR__input_hideName && writeScope($scope1_id, { _: $si__input_agent && _scope_with_id($scope0_id) });
3338
3341
  return 0;
3339
3342
  }
@@ -3341,7 +3344,7 @@ var usage_meters_default = _template("y", (input) => {
3341
3344
  _if(() => {
3342
3345
  if (agent.plan && agent.plan.toLowerCase() !== agent.agent.toLowerCase()) {
3343
3346
  const $scope2_id = _scope_id();
3344
- _html(`<span${_attr_class("_cI")}>${_escape(agent.plan.replace(/^default_/, "").replaceAll("_", " "))}${_el_resume($scope2_id, "b", $sg__input_agent)}</span>`);
3347
+ _html(`<span${_attr_class("_cv")}>${_escape(agent.plan.replace(/^default_/, "").replaceAll("_", " "))}${_el_resume($scope2_id, "b", $sg__input_agent)}</span>`);
3345
3348
  $si__input_agent && writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
3346
3349
  return 0;
3347
3350
  }
@@ -3349,19 +3352,19 @@ var usage_meters_default = _template("y", (input) => {
3349
3352
  _if(() => {
3350
3353
  if (agent.stale_seconds != null) {
3351
3354
  const $scope3_id = _scope_id();
3352
- _html(`<span${_attr_class("_cJ")}${_attr("title", `${agent.note || "provider unreachable"}. Last cached numbers, ${duration(agent.stale_seconds * 1e3)} old`)}>⚠ ${_sep($sg__input_agent)}${_escape(duration(agent.stale_seconds * 1e3))}${_el_resume($scope3_id, "b", $sg__input_agent)} old</span>${_el_resume($scope3_id, "a", $sg__input_agent)}`);
3355
+ _html(`<span${_attr_class("_cw")}${_attr("title", `${agent.note || "provider unreachable"}. Last cached numbers, ${duration(agent.stale_seconds * 1e3)} old`)}>⚠ ${_sep($sg__input_agent)}${_escape(duration(agent.stale_seconds * 1e3))}${_el_resume($scope3_id, "b", $sg__input_agent)} old</span>${_el_resume($scope3_id, "a", $sg__input_agent)}`);
3353
3356
  $si__input_agent && writeScope($scope3_id, { _: _scope_with_id($scope0_id) });
3354
3357
  return 0;
3355
3358
  }
3356
3359
  }, $scope0_id, "e", $sg__input_agent, $sg__input_agent, $sg__input_agent__OR__input_hideName, 0, 1);
3357
- _html(`</div><div${_attr_class(["_cK", { ["_c1"]: agent.stale_seconds != null }])}>`);
3360
+ _html(`</div><div${_attr_class(["_cx", { ["_cO"]: agent.stale_seconds != null }])}>`);
3358
3361
  _for_of(agent.windows || [], (win) => {
3359
3362
  const $scope4_id = _scope_id();
3360
3363
  const pct = pctText(win.used_percent);
3361
3364
  const label = resetLabel(win.resets_at, agent.stale_seconds != null);
3362
- const fillClass = win.used_percent >= 90 ? "_cT" : win.used_percent >= 70 ? "_cS" : win.used_percent >= 40 ? "_cR" : "_cQ";
3363
- const pctClass = win.used_percent >= 90 ? "_cY" : win.used_percent >= 70 ? "_cX" : win.used_percent >= 40 ? "_cW" : "_cV";
3364
- _html(`<div${_attr_class("_cM")}${_attr("title", `${win.window}: ${pct} used${win.resets_at ? `, resets ${new Date(win.resets_at).toLocaleString()}` : ""}`)}><span${_attr_class("_cN")}>${_escape(win.window)}${_el_resume($scope4_id, "c", $sg__input_agent)}</span><span${_attr_class("_cO")}><span${_attr_class(["_cP", fillClass])}${_attr_style(`width:${Math.min(100, Math.max(2, win.used_percent))}%`)}></span>${_el_resume($scope4_id, "e", $sg__input_agent)}</span><span${_attr_class(["_cU", pctClass])}>${_escape(pct)}${_el_resume($scope4_id, "g", $sg__input_agent)}</span>${_el_resume($scope4_id, "f", $sg__input_agent)}<span${_attr_class("_cZ")}>${label ? `↻ ${_escape(`${_to_text(label)}`)}` : ""}${_el_resume($scope4_id, "i", $sg__input_agent)}</span></div>${_el_resume($scope4_id, "a", $sg__input_agent)}`);
3365
+ const fillClass = win.used_percent >= 90 ? "_cG" : win.used_percent >= 70 ? "_cF" : win.used_percent >= 40 ? "_cE" : "_cD";
3366
+ const pctClass = win.used_percent >= 90 ? "_cL" : win.used_percent >= 70 ? "_cK" : win.used_percent >= 40 ? "_cJ" : "_cI";
3367
+ _html(`<div${_attr_class("_cz")}${_attr("title", `${win.window}: ${pct} used${win.resets_at ? `, resets ${new Date(win.resets_at).toLocaleString()}` : ""}`)}><span${_attr_class("_cA")}>${_escape(win.window)}${_el_resume($scope4_id, "c", $sg__input_agent)}</span><span${_attr_class("_cB")}><span${_attr_class(["_cC", fillClass])}${_attr_style(`width:${Math.min(100, Math.max(2, win.used_percent))}%`)}></span>${_el_resume($scope4_id, "e", $sg__input_agent)}</span><span${_attr_class(["_cH", pctClass])}>${_escape(pct)}${_el_resume($scope4_id, "g", $sg__input_agent)}</span>${_el_resume($scope4_id, "f", $sg__input_agent)}<span${_attr_class("_cM")}>${label ? `↻ ${_escape(`${_to_text(label)}`)}` : ""}${_el_resume($scope4_id, "i", $sg__input_agent)}</span></div>${_el_resume($scope4_id, "a", $sg__input_agent)}`);
3365
3368
  $si__input_agent && writeScope($scope4_id, { _: _scope_with_id($scope0_id) });
3366
3369
  }, "window", $scope0_id, "g", $sg__input_agent, $sg__input_agent, $sg__input_agent, 0, 1);
3367
3370
  _if(() => {
@@ -3382,7 +3385,7 @@ var usage_meters_default = _template("y", (input) => {
3382
3385
  });
3383
3386
  //#endregion
3384
3387
  //#region src/tags/icons/icon-plus.marko
3385
- var icon_plus_default = _template("N", (input) => {
3388
+ var icon_plus_default = _template("O", (input) => {
3386
3389
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
3387
3390
  const $scope0_id = _scope_id();
3388
3391
  _set_serialize_reason({
@@ -3420,7 +3423,7 @@ var modal_view_default = _template("m", (input) => {
3420
3423
  const { label, class: inputClass, open: _open, openChange: _openChange, dismissable: _dismissable, content, footer, closedby: _closedby, onCancel: _onCancel, onClose: _onClose, "aria-label": inputAriaLabel, "aria-labelledby": inputLabelledBy, ...htmlInput } = input;
3421
3424
  const dismissable = input.dismissable !== false;
3422
3425
  let open = input.open;
3423
- _html(`<dialog${_attr_class(["_eY", inputClass])}${_attr("aria-labelledby", inputLabelledBy)}${inputLabelledBy ? _attr("aria-label", inputAriaLabel) : _attr("aria-label", inputAriaLabel || label)} closedby=${dismissable ? "any" : "none"}${_attrs_partial({
3426
+ _html(`<dialog${_attr_class(["_eE", inputClass])}${_attr("aria-labelledby", inputLabelledBy)}${inputLabelledBy ? _attr("aria-label", inputAriaLabel) : _attr("aria-label", inputAriaLabel || label)} closedby=${dismissable ? "any" : "none"}${_attrs_partial({
3424
3427
  ...htmlInput,
3425
3428
  open: null
3426
3429
  }, {
@@ -3430,20 +3433,20 @@ var modal_view_default = _template("m", (input) => {
3430
3433
  closedby: 1,
3431
3434
  "on-cancel": 1,
3432
3435
  "on-close": 1
3433
- }, "a", $scope0_id, "dialog")}><div${_attr_class("_eZ")}>`);
3436
+ }, "a", $scope0_id, "dialog")}><div${_attr_class("_eF")}>`);
3434
3437
  _dynamic_tag($scope0_id, "c", content, {}, 0, 0, _serialize_guard($scope0_reason, 6));
3435
3438
  _html("</div>");
3436
3439
  _if(() => {
3437
3440
  if (footer) {
3438
3441
  const $scope1_id = _scope_id();
3439
- _html(`<form method=dialog${_attr_class("_e0")}>`);
3442
+ _html(`<form method=dialog${_attr_class("_eG")}>`);
3440
3443
  _dynamic_tag($scope1_id, "b", footer.content, {}, 0, 0, _serialize_guard($scope0_reason, 7));
3441
3444
  _html("</form>");
3442
3445
  $si__input_openChange__OR__input_footer && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 7) && _scope_with_id($scope0_id) });
3443
3446
  return 0;
3444
3447
  } else if (input.openChange) {
3445
3448
  const $scope2_id = _scope_id();
3446
- _html(`<form method=dialog${_attr_class("_e0")}>`);
3449
+ _html(`<form method=dialog${_attr_class("_eG")}>`);
3447
3450
  dialog_close_default({
3448
3451
  class: ["_l", "_m"],
3449
3452
  content: _content("m0", () => {
@@ -3502,7 +3505,7 @@ var prompt_dialog_default = _template("p", (input) => {
3502
3505
  const $childScope = _peek_scope_id();
3503
3506
  modal_view_default({
3504
3507
  label: input.label,
3505
- class: "_cD",
3508
+ class: "_cq",
3506
3509
  open: input.open,
3507
3510
  openChange: input.openChange,
3508
3511
  "aria-labelledby": titleId,
@@ -3525,7 +3528,7 @@ var prompt_dialog_default = _template("p", (input) => {
3525
3528
  content: _content("p6", () => {
3526
3529
  _scope_reason();
3527
3530
  const $scope2_id = _scope_id();
3528
- _html(`<h2${_attr_class("_cE")}${_attr("id", titleId)}>${_escape(input.label)}${_el_resume($scope2_id, "b", $sg__input_label)}</h2><input${_attr_input_value($scope2_id, "c", value, _resume((_new_value) => {
3531
+ _html(`<h2${_attr_class("_cr")}${_attr("id", titleId)}>${_escape(input.label)}${_el_resume($scope2_id, "b", $sg__input_label)}</h2><input${_attr_input_value($scope2_id, "c", value, _resume((_new_value) => {
3529
3532
  value = _new_value;
3530
3533
  }, "p0", $scope2_id))}${_attr("placeholder", input.placeholder)}>${_el_resume($scope2_id, "c")}`);
3531
3534
  _script($scope2_id, "p4");
@@ -3565,7 +3568,7 @@ function familyOf(usageAgent, families) {
3565
3568
  }
3566
3569
  var lastSetup = null;
3567
3570
  var lastUsage = null;
3568
- var settings_page_default = _template("r", (input) => {
3571
+ var settings_page_default = _template("s", (input) => {
3569
3572
  const $scope0_reason = _scope_reason(), $sg__input_backHref__OR__input_onExit = _serialize_guard($scope0_reason, 0), $sg__input_agents = _serialize_guard($scope0_reason, 3), $si__input_preferred = _serialize_if($scope0_reason, 1);
3570
3573
  const $scope0_id = _scope_id();
3571
3574
  const $setup_missing__closures = /* @__PURE__ */ new Set();
@@ -3599,21 +3602,21 @@ var settings_page_default = _template("r", (input) => {
3599
3602
  lastSetup = s;
3600
3603
  setPrimaryHost(s.github);
3601
3604
  input.setupChange?.(s);
3602
- }, "r3", $scope0_id);
3605
+ }, "s3", $scope0_id);
3603
3606
  const syncAgents = _resume(async () => {
3604
3607
  try {
3605
3608
  const snap = await api$6("/api/settings");
3606
3609
  input.agentsChange?.(snap.agents);
3607
3610
  if (snap.preferredAgent !== input.preferred) input.preferredChange?.(snap.preferredAgent);
3608
3611
  } catch {}
3609
- }, "r4", $scope0_id);
3612
+ }, "s4", $scope0_id);
3610
3613
  const loadSetup = _resume(async (refresh) => {
3611
3614
  try {
3612
3615
  applySetup(await api$6(`/api/setup${refresh ? "?refresh" : ""}`));
3613
3616
  } catch (err) {
3614
3617
  error = String(err.message || err);
3615
3618
  }
3616
- }, "r5", $scope0_id);
3619
+ }, "s5", $scope0_id);
3617
3620
  const loadUsage = _resume(async (refresh) => {
3618
3621
  try {
3619
3622
  usage = await api$6(`/api/usage${refresh ? "?refresh" : ""}`);
@@ -3621,23 +3624,23 @@ var settings_page_default = _template("r", (input) => {
3621
3624
  usage = { error: String(err.message || err) };
3622
3625
  }
3623
3626
  lastUsage = usage;
3624
- }, "r6", $scope0_id);
3627
+ }, "s6", $scope0_id);
3625
3628
  const refresh = _resume(async () => {
3626
3629
  refreshing = true;
3627
3630
  await loadSetup(true);
3628
3631
  refreshing = false;
3629
- }, "r7", $scope0_id);
3632
+ }, "s7", $scope0_id);
3630
3633
  const refreshUsage = _resume(async () => {
3631
3634
  usageRefreshing = true;
3632
3635
  await loadUsage(true);
3633
3636
  usageRefreshing = false;
3634
- }, "r8", $scope0_id);
3637
+ }, "s8", $scope0_id);
3635
3638
  const setActive = _resume((id, line) => {
3636
3639
  const next = new Map(active);
3637
3640
  if (line === null) next.delete(id);
3638
3641
  else next.set(id, line);
3639
3642
  active = next;
3640
- }, "r9", $scope0_id);
3643
+ }, "s9", $scope0_id);
3641
3644
  const run = _resume(async (id, action, version) => {
3642
3645
  if (active.has(id)) return;
3643
3646
  error = null;
@@ -3668,7 +3671,7 @@ var settings_page_default = _template("r", (input) => {
3668
3671
  watcher.stop();
3669
3672
  setActive(id, null);
3670
3673
  }
3671
- }, "r10", $scope0_id);
3674
+ }, "s10", $scope0_id);
3672
3675
  const changeHost = _resume(async (host, remove) => {
3673
3676
  hostBusy = true;
3674
3677
  error = null;
@@ -3687,10 +3690,10 @@ var settings_page_default = _template("r", (input) => {
3687
3690
  } finally {
3688
3691
  hostBusy = false;
3689
3692
  }
3690
- }, "r11", $scope0_id);
3693
+ }, "s11", $scope0_id);
3691
3694
  const runEach = _resume(async (ids, action) => {
3692
3695
  for (const id of ids) await run(id, action);
3693
- }, "r12", $scope0_id);
3696
+ }, "s12", $scope0_id);
3694
3697
  const setPreferred = _resume(async (agent) => {
3695
3698
  input.preferredChange?.(agent);
3696
3699
  try {
@@ -3702,7 +3705,7 @@ var settings_page_default = _template("r", (input) => {
3702
3705
  } catch (err) {
3703
3706
  error = String(err.message || err);
3704
3707
  }
3705
- }, "r13", $scope0_id);
3708
+ }, "s13", $scope0_id);
3706
3709
  const setEnabled = _resume(async (id, on) => {
3707
3710
  if (!setup) return;
3708
3711
  const off = new Set(setup.agents.flatMap((f) => f.instances.filter((i) => !i.enabled).map((i) => i.id)));
@@ -3729,7 +3732,7 @@ var settings_page_default = _template("r", (input) => {
3729
3732
  } catch (err) {
3730
3733
  error = String(err.message || err);
3731
3734
  }
3732
- }, "r14", $scope0_id);
3735
+ }, "s14", $scope0_id);
3733
3736
  const search = _resume((q) => {
3734
3737
  query = q;
3735
3738
  clearTimeout(searchTimer.id);
@@ -3749,16 +3752,16 @@ var settings_page_default = _template("r", (input) => {
3749
3752
  if (query === q) searching = false;
3750
3753
  }
3751
3754
  }, 250);
3752
- }, "r0", $scope0_id);
3753
- const outdated = _resume((t) => !!(t.installed && t.latest && t.latest !== t.version), "r15");
3755
+ }, "s0", $scope0_id);
3756
+ const outdated = _resume((t) => !!(t.installed && t.latest && t.latest !== t.version), "s15");
3754
3757
  const tools = setup?.tools || [];
3755
3758
  const missingInstallable = tools.filter((t) => t.recommended && !t.installed && t.installable);
3756
3759
  const missingCount = tools.filter((t) => t.recommended && !t.installed).length;
3757
3760
  const outdatedIds = tools.filter(outdated).map((t) => t.id);
3758
3761
  const families = setup?.agents || [];
3759
3762
  const instanceIds = new Set(families.flatMap((f) => f.instances.map((i) => i.id)));
3760
- const accountsFor = _resume((id) => (usage?.agents || []).filter((u) => u.agent === id), "r16", $scope0_id);
3761
- const strayAccountsFor = _resume((f) => (usage?.agents || []).filter((u) => !instanceIds.has(u.agent) && familyOf(u.agent, families) === f.id), "r17", $scope0_id);
3763
+ const accountsFor = _resume((id) => (usage?.agents || []).filter((u) => u.agent === id), "s16", $scope0_id);
3764
+ const strayAccountsFor = _resume((f) => (usage?.agents || []).filter((u) => !instanceIds.has(u.agent) && familyOf(u.agent, families) === f.id), "s17", $scope0_id);
3762
3765
  const otherUsage = (usage?.agents || []).filter((u) => familyOf(u.agent, families) === null);
3763
3766
  const titleId = _id();
3764
3767
  const agentsId = _id();
@@ -3776,8 +3779,8 @@ var settings_page_default = _template("r", (input) => {
3776
3779
  title: "Settings",
3777
3780
  titleId,
3778
3781
  backHref: input.backHref,
3779
- onBack: input.onExit && _resume(() => input.onExit?.(), "r18", $scope0_id),
3780
- meta: attrTag({ content: _content_resume("r23", () => {
3782
+ onBack: input.onExit && _resume(() => input.onExit?.(), "s18", $scope0_id),
3783
+ meta: attrTag({ content: _content_resume("s23", () => {
3781
3784
  _scope_reason();
3782
3785
  const $scope4_id = _scope_id();
3783
3786
  _if(() => {
@@ -3801,7 +3804,7 @@ var settings_page_default = _template("r", (input) => {
3801
3804
  _subscribe($setup2__closures, writeScope($scope4_id, { _: _scope_with_id($scope0_id) }));
3802
3805
  _resume_branch($scope4_id);
3803
3806
  }, $scope0_id) }),
3804
- actions: attrTag({ content: _content_resume("r24", () => {
3807
+ actions: attrTag({ content: _content_resume("s24", () => {
3805
3808
  _scope_reason();
3806
3809
  const $scope9_id = _scope_id();
3807
3810
  _html(`<button${_attr_class(iconBtnRow)} title="Re-check this machine" aria-label="Re-check this machine"${_attr("disabled", refreshing)}>`);
@@ -3812,7 +3815,7 @@ var settings_page_default = _template("r", (input) => {
3812
3815
  class: refreshing && "_B"
3813
3816
  });
3814
3817
  _html(`</button>${_el_resume($scope9_id, "a")}`);
3815
- _script($scope9_id, "r22");
3818
+ _script($scope9_id, "s22");
3816
3819
  _subscribe($refreshing__closures, writeScope($scope9_id, {
3817
3820
  _: _scope_with_id($scope0_id),
3818
3821
  b: _existing_scope($childScope)
@@ -3827,8 +3830,8 @@ var settings_page_default = _template("r", (input) => {
3827
3830
  placement: "inline",
3828
3831
  onDismiss: _resume(function() {
3829
3832
  error = null;
3830
- }, "r19", $scope7_id),
3831
- content: _content_resume("r25", () => {
3833
+ }, "s19", $scope7_id),
3834
+ content: _content_resume("s25", () => {
3832
3835
  _scope_reason();
3833
3836
  const $scope8_id = _scope_id();
3834
3837
  _html(`${_escape(error)}${_el_resume($scope8_id, "a")}`);
@@ -3843,7 +3846,7 @@ var settings_page_default = _template("r", (input) => {
3843
3846
  _html(`<section${_attr_class("_bp")}${_attr("aria-labelledby", agentsId)}><div${_attr_class("_bq")}><h2${_attr("id", agentsId)}${_attr_class("_bE")}>Agents</h2><div${_attr_class("_v")}></div><label${_attr_class("_b9")}><span${_attr_class("_P")}>Default</span><span${_attr_class("_j")}>`);
3844
3847
  _attr_select_value($scope0_id, "m", input.preferred, _resume(function(v) {
3845
3848
  setPreferred(v);
3846
- }, "r1", $scope0_id), () => {
3849
+ }, "s1", $scope0_id), () => {
3847
3850
  _html(`<select${_attr_class(["_k", "_b_"])} aria-label="Default agent (starts when a workspace has no session yet)" title="Starts when a workspace has no session yet">`);
3848
3851
  _for_of(input.agents.filter((a) => a !== "shell"), (id) => {
3849
3852
  const $scope44_id = _scope_id();
@@ -3900,7 +3903,7 @@ var settings_page_default = _template("r", (input) => {
3900
3903
  if (!a.installed && !active.has(a.id)) {
3901
3904
  const $scope35_id = _scope_id();
3902
3905
  _html(`<button${_attr_class(btnSm)}>Install</button>${_el_resume($scope35_id, "a")}`);
3903
- _script($scope35_id, "r26");
3906
+ _script($scope35_id, "s26");
3904
3907
  writeScope($scope35_id, {});
3905
3908
  return 0;
3906
3909
  }
@@ -3913,7 +3916,7 @@ var settings_page_default = _template("r", (input) => {
3913
3916
  "_H",
3914
3917
  { [tone.ok]: lone.enabled }
3915
3918
  ])} role=switch aria-checked=${lone.enabled ? "true" : "false"} title=${lone.enabled ? "\"Shown in session pickers. Hide it\"" : "\"Hidden from session pickers. Show it\""}>${lone.enabled ? "on" : "off"}${_el_resume($scope39_id, "b")}</button>${_el_resume($scope39_id, "a")}`);
3916
- _script($scope39_id, "r27");
3919
+ _script($scope39_id, "s27");
3917
3920
  writeScope($scope39_id, {});
3918
3921
  return 0;
3919
3922
  }
@@ -3958,7 +3961,7 @@ var settings_page_default = _template("r", (input) => {
3958
3961
  writeScope($scope48_id, { a: _existing_scope($childScope6) });
3959
3962
  }, (u) => `${u.agent}-${u.account || ""}`, $scope3_id, "j", 1, 1, 1, 0, 1);
3960
3963
  _html("</li>");
3961
- _script($scope3_id, "r28");
3964
+ _script($scope3_id, "s28");
3962
3965
  _subscribe($accountsFor2__closures, _subscribe($si__input_preferred && $input_preferred__closures, writeScope($scope3_id, {
3963
3966
  m: inst?.enabled,
3964
3967
  n: inst?.id,
@@ -4074,7 +4077,7 @@ var settings_page_default = _template("r", (input) => {
4074
4077
  if (!h.authed) {
4075
4078
  const $scope36_id = _scope_id();
4076
4079
  _html(`<button${_attr_class(btnSm)}>Sign in</button>${_el_resume($scope36_id, "a")}`);
4077
- _script($scope36_id, "r29");
4080
+ _script($scope36_id, "s29");
4078
4081
  writeScope($scope36_id, {});
4079
4082
  return 0;
4080
4083
  } else {
@@ -4083,7 +4086,7 @@ var settings_page_default = _template("r", (input) => {
4083
4086
  ["_o"]: confirmingRemove === `out:${h.host}`,
4084
4087
  ["_n"]: confirmingRemove === `out:${h.host}`
4085
4088
  }])}${confirmingRemove === `out:${h.host}` ? _attr("title", `Sign out of ${h.host}?`) : _attr("title", `Sign out of ${h.host}`)}>${confirmingRemove === `out:${h.host}` ? "Sign out?" : "Sign out"}${_el_resume($scope24_id, "b")}</button>${_el_resume($scope24_id, "a")}`);
4086
- _script($scope24_id, "r30");
4089
+ _script($scope24_id, "s30");
4087
4090
  _subscribe($for_content3__h_host__closures, _subscribe($confirmingRemove__closures, writeScope($scope24_id, {})));
4088
4091
  return 1;
4089
4092
  }
@@ -4110,7 +4113,7 @@ var settings_page_default = _template("r", (input) => {
4110
4113
  return 1;
4111
4114
  }
4112
4115
  }, $scope25_id, "a", 1, 1, 1, "</button>");
4113
- _script($scope25_id, "r31");
4116
+ _script($scope25_id, "s31");
4114
4117
  _subscribe($for_content3__h_host__closures, _subscribe($confirmingRemove__closures, writeScope($scope25_id, {
4115
4118
  Ccn: 1,
4116
4119
  Cr: 1
@@ -4150,8 +4153,8 @@ var settings_page_default = _template("r", (input) => {
4150
4153
  });
4151
4154
  _html(`<input${_attr_input_value($scope33_id, "d", hostInput, _resume((_new_hostInput) => {
4152
4155
  hostInput = _new_hostInput;
4153
- }, "r2", $scope33_id))}${_attr_class([inputLg, "_V"])} type=text placeholder="Add a GitHub Enterprise host, e.g. github.example.com" aria-label="GitHub Enterprise host" autocomplete=off spellcheck=false>${_el_resume($scope33_id, "d")}</label><button${_attr_class(btnSm)} type=submit${_attr("disabled", !hostInput.trim() || hostBusy)}>${hostBusy ? "Adding…" : "Add host"}${_el_resume($scope33_id, "f")}</button>${_el_resume($scope33_id, "e")}</form>${_el_resume($scope33_id, "a")}`);
4154
- _script($scope33_id, "r32");
4156
+ }, "s2", $scope33_id))}${_attr_class([inputLg, "_V"])} type=text placeholder="Add a GitHub Enterprise host, e.g. github.example.com" aria-label="GitHub Enterprise host" autocomplete=off spellcheck=false>${_el_resume($scope33_id, "d")}</label><button${_attr_class(btnSm)} type=submit${_attr("disabled", !hostInput.trim() || hostBusy)}>${hostBusy ? "Adding…" : "Add host"}${_el_resume($scope33_id, "f")}</button>${_el_resume($scope33_id, "e")}</form>${_el_resume($scope33_id, "a")}`);
4157
+ _script($scope33_id, "s32");
4155
4158
  writeScope($scope33_id, {});
4156
4159
  return 0;
4157
4160
  }
@@ -4178,7 +4181,7 @@ var settings_page_default = _template("r", (input) => {
4178
4181
  if (outdatedIds.length > 1) {
4179
4182
  const $scope13_id = _scope_id();
4180
4183
  _html(`<button${_attr_class(btnSm)}${_attr("disabled", active.size > 0)}>Update all</button>${_el_resume($scope13_id, "a")}`);
4181
- _script($scope13_id, "r33");
4184
+ _script($scope13_id, "s33");
4182
4185
  writeScope($scope13_id, {});
4183
4186
  return 0;
4184
4187
  }
@@ -4187,7 +4190,7 @@ var settings_page_default = _template("r", (input) => {
4187
4190
  if (missingInstallable.length > 1) {
4188
4191
  const $scope14_id = _scope_id();
4189
4192
  _html(`<button${_attr_class(btnSm)}${_attr("disabled", active.size > 0)}>Install missing</button>${_el_resume($scope14_id, "a")}`);
4190
- _script($scope14_id, "r34");
4193
+ _script($scope14_id, "s34");
4191
4194
  writeScope($scope14_id, {});
4192
4195
  return 0;
4193
4196
  }
@@ -4197,7 +4200,7 @@ var settings_page_default = _template("r", (input) => {
4197
4200
  if (setup && !setup.mise.installed) {
4198
4201
  const $scope15_id = _scope_id();
4199
4202
  _html(`<p${_attr_class("_bA")}>mise is not installed. It provides every tool below. <button${_attr_class(btnSm)}${_attr("disabled", active.has("mise"))}>${active.has("mise") ? "Installing…" : "Install mise"}${_el_resume($scope15_id, "c")}</button>${_el_resume($scope15_id, "b")}</p>`);
4200
- _script($scope15_id, "r35");
4203
+ _script($scope15_id, "s35");
4201
4204
  writeScope($scope15_id, {});
4202
4205
  return 0;
4203
4206
  }
@@ -4223,7 +4226,7 @@ var settings_page_default = _template("r", (input) => {
4223
4226
  if (t.version) {
4224
4227
  const $scope30_id = _scope_id();
4225
4228
  _html(`<button${_attr_class(["_cj", "_u"])}${_attr("title", `${t.path || t.label}. Pin a version`)}>v<!>${_escape(t.version)}${_el_resume($scope30_id, "b")}</button>${_el_resume($scope30_id, "a")}`);
4226
- _script($scope30_id, "r36");
4229
+ _script($scope30_id, "s36");
4227
4230
  _subscribe($for_content4__t_path__closures, _subscribe($for_content4__t_version__closures, _subscribe($for_content4__t_label__closures, writeScope($scope30_id, { Cu: 1 }))));
4228
4231
  return 0;
4229
4232
  } else {
@@ -4237,7 +4240,7 @@ var settings_page_default = _template("r", (input) => {
4237
4240
  if (outdated(t)) {
4238
4241
  const $scope37_id = _scope_id();
4239
4242
  _html(`<button${_attr_class([btnSm, "_ck"])}${_attr("title", `Update to v${t.latest}`)}>↑ <!>${_escape(t.latest)}${_el_resume($scope37_id, "b")}</button>${_el_resume($scope37_id, "a")}`);
4240
- _script($scope37_id, "r37");
4243
+ _script($scope37_id, "s37");
4241
4244
  _subscribe($for_content4__t_latest__closures, writeScope($scope37_id, {}));
4242
4245
  return 0;
4243
4246
  }
@@ -4272,7 +4275,7 @@ var settings_page_default = _template("r", (input) => {
4272
4275
  if (!t.installed && t.installable) {
4273
4276
  const $scope38_id = _scope_id();
4274
4277
  _html(`<button${_attr_class(btnSm)}>Install</button>${_el_resume($scope38_id, "a")}`);
4275
- _script($scope38_id, "r38");
4278
+ _script($scope38_id, "s38");
4276
4279
  writeScope($scope38_id, {});
4277
4280
  return 0;
4278
4281
  } else if (t.installed && t.version && !t.required) {
@@ -4296,7 +4299,7 @@ var settings_page_default = _template("r", (input) => {
4296
4299
  return 1;
4297
4300
  }
4298
4301
  }, $scope27_id, "a", 1, 1, 1, "</button>");
4299
- _script($scope27_id, "r39");
4302
+ _script($scope27_id, "s39");
4300
4303
  _subscribe($for_content4__t_id__closures, _subscribe($for_content4__t_label__closures, _subscribe($confirmingRemove__closures, writeScope($scope27_id, { Ccn: 2 }))));
4301
4304
  return 1;
4302
4305
  }
@@ -4365,7 +4368,7 @@ var settings_page_default = _template("r", (input) => {
4365
4368
  } else {
4366
4369
  const $scope32_id = _scope_id();
4367
4370
  _html(`<button${_attr_class(btnSm)}>Install</button>${_el_resume($scope32_id, "a")}<button${_attr_class(btnSm)} title="Install a specific version">@…</button>${_el_resume($scope32_id, "b")}`);
4368
- _script($scope32_id, "r40");
4371
+ _script($scope32_id, "s40");
4369
4372
  writeScope($scope32_id, {});
4370
4373
  return 1;
4371
4374
  }
@@ -4392,7 +4395,7 @@ var settings_page_default = _template("r", (input) => {
4392
4395
  }
4393
4396
  }, $scope18_id, "d", 1, 1, 1, 0, 1);
4394
4397
  _html("</div>");
4395
- _script($scope18_id, "r41");
4398
+ _script($scope18_id, "s41");
4396
4399
  writeScope($scope18_id, {});
4397
4400
  return 0;
4398
4401
  }
@@ -4411,19 +4414,19 @@ var settings_page_default = _template("r", (input) => {
4411
4414
  open: versionPick != null,
4412
4415
  openChange: _resume(function(o) {
4413
4416
  if (!o) versionPick = null;
4414
- }, "r20", $scope28_id),
4417
+ }, "s20", $scope28_id),
4415
4418
  onSubmit: _resume(function(v) {
4416
4419
  const pick = versionPick;
4417
4420
  versionPick = null;
4418
4421
  run(pick.id, "install", v);
4419
- }, "r21", $scope28_id)
4422
+ }, "s21", $scope28_id)
4420
4423
  });
4421
4424
  writeScope($scope28_id, { a: _existing_scope($childScope10) });
4422
4425
  return 0;
4423
4426
  }
4424
4427
  }, $scope0_id, "aa", 1, 1, 1, 0, 1);
4425
- _script($scope0_id, "r42");
4426
- _script($scope0_id, "r43");
4428
+ _script($scope0_id, "s42");
4429
+ _script($scope0_id, "s43");
4427
4430
  writeScope($scope0_id, {
4428
4431
  ae: input.setupChange,
4429
4432
  af: input.agentsChange,
@@ -4498,8 +4501,8 @@ var curBase = "_bN _Q _P";
4498
4501
  var archived = "_bR _bp";
4499
4502
  var archivedHint = "_bS _P";
4500
4503
  var archivedCard = "_bT _bu";
4501
- var resultBranch = "_cw _W _g";
4502
- var branchInput = "_cB _S _R";
4504
+ var resultBranch = "_cV _W _g";
4505
+ var branchInput = "_c0 _S _R";
4503
4506
  //#endregion
4504
4507
  //#region src/tags/repo-picker.marko
4505
4508
  var api$5;
@@ -4549,7 +4552,7 @@ var repo_picker_default = _template("q", (input) => {
4549
4552
  input.onError?.(String(err.message || err));
4550
4553
  }
4551
4554
  }, "q5", $scope0_id);
4552
- _html(`<div${_attr_class("_cq")}><label${_attr_class("_T")}>`);
4555
+ _html(`<div${_attr_class("_cP")}><label${_attr_class("_T")}>`);
4553
4556
  icon_search_default({
4554
4557
  size: 14,
4555
4558
  class: "_U"
@@ -4569,19 +4572,19 @@ var repo_picker_default = _template("q", (input) => {
4569
4572
  _if(() => {
4570
4573
  if (results.length) {
4571
4574
  const $scope2_id = _scope_id();
4572
- _html(`<ul${_attr_class("_cr")}>`);
4575
+ _html(`<ul${_attr_class("_cQ")}>`);
4573
4576
  _for_of(results, (repo, i) => {
4574
4577
  const $scope3_id = _scope_id();
4575
- _html(`<li><div${_attr_class(["_ct", { ["_cs"]: i === highlight }])}><button${_attr_class("_cu")}>`);
4578
+ _html(`<li><div${_attr_class(["_cS", { ["_cR"]: i === highlight }])}><button${_attr_class("_cT")}>`);
4576
4579
  icon_plus_default({
4577
4580
  size: 12,
4578
- class: "_cz"
4581
+ class: "_cY"
4579
4582
  });
4580
- _html(`<span${_attr_class("_cA")}>${_escape(repoLabel(repo.nameWithOwner))}${_el_resume($scope3_id, "e")}</span></button>${_el_resume($scope3_id, "b")}<button${_attr_class([resultBranch, { ["_cv"]: branchesFor === repo.nameWithOwner }])}${_attr("title", `Pick a base branch for ${repo.nameWithOwner}`)}${_attr("aria-label", `Pick a base branch for ${repo.nameWithOwner}`)}>⎇</button>${_el_resume($scope3_id, "f")}</div>${_el_resume($scope3_id, "a")}`);
4583
+ _html(`<span${_attr_class("_cZ")}>${_escape(repoLabel(repo.nameWithOwner))}${_el_resume($scope3_id, "e")}</span></button>${_el_resume($scope3_id, "b")}<button${_attr_class([resultBranch, { ["_cU"]: branchesFor === repo.nameWithOwner }])}${_attr("title", `Pick a base branch for ${repo.nameWithOwner}`)}${_attr("aria-label", `Pick a base branch for ${repo.nameWithOwner}`)}>⎇</button>${_el_resume($scope3_id, "f")}</div>${_el_resume($scope3_id, "a")}`);
4581
4584
  _if(() => {
4582
4585
  if (branchesFor === repo.nameWithOwner) {
4583
4586
  const $scope4_id = _scope_id();
4584
- _html(`<div${_attr_class("_cx")}>`);
4587
+ _html(`<div${_attr_class("_cW")}>`);
4585
4588
  _if(() => {
4586
4589
  if (!branches) {
4587
4590
  const $scope9_id = _scope_id();
@@ -4602,10 +4605,10 @@ var repo_picker_default = _template("q", (input) => {
4602
4605
  }
4603
4606
  }, $scope5_id, "a", 1, 1, 1, 0, 1);
4604
4607
  const shown = (branchFilter ? branches.filter((b) => b.toLowerCase().includes(branchFilter.toLowerCase())) : branches).slice(0, 12);
4605
- _html(`<ul${_attr_class("_cy")}>`);
4608
+ _html(`<ul${_attr_class("_cX")}>`);
4606
4609
  _for_of(shown, (branch) => {
4607
4610
  const $scope7_id = _scope_id();
4608
- _html(`<li><button${_attr_class(["_cu", "_cC"])}><span${_attr_class(["_cA", "_u"])}>${_escape(branch)}${_el_resume($scope7_id, "c")}</span></button>${_el_resume($scope7_id, "a")}</li>`);
4611
+ _html(`<li><button${_attr_class(["_cT", "_c1"])}><span${_attr_class(["_cZ", "_u"])}>${_escape(branch)}${_el_resume($scope7_id, "c")}</span></button>${_el_resume($scope7_id, "a")}</li>`);
4609
4612
  _script($scope7_id, "q7");
4610
4613
  writeScope($scope7_id, { e: branch });
4611
4614
  }, (b) => b, $scope5_id, "c", 1, 1, 1, 0, 1);
@@ -5038,9 +5041,9 @@ function activeAgent(session) {
5038
5041
  const command = session.state?.command?.trim();
5039
5042
  return command && agentFromCommand(command) || session.agent;
5040
5043
  }
5041
- var iconBtn$1 = "_c3 _g";
5042
- var navToggle = "_c8 _g";
5043
- _template("D", (input) => {
5044
+ var iconBtn$1 = "_dd _g";
5045
+ var navToggle = "_di _g";
5046
+ _template("E", (input) => {
5044
5047
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
5045
5048
  const $scope0_id = _scope_id();
5046
5049
  _set_serialize_reason({
@@ -5057,7 +5060,7 @@ _template("D", (input) => {
5057
5060
  });
5058
5061
  //#endregion
5059
5062
  //#region src/tags/icons/icon-settings.marko
5060
- var icon_settings_default = _template("Q", (input) => {
5063
+ var icon_settings_default = _template("R", (input) => {
5061
5064
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
5062
5065
  const $scope0_id = _scope_id();
5063
5066
  _set_serialize_reason({
@@ -5082,15 +5085,15 @@ var ARM_MS = 3500;
5082
5085
  function disarmLater(fn) {
5083
5086
  return setTimeout(fn, ARM_MS);
5084
5087
  }
5085
- var railBtn = "_fI _g";
5086
- var rowIcon = "_fR _W _g";
5087
- var close = "_fS _W _g _Z";
5088
+ var railBtn = "_eY _g";
5089
+ var rowIcon = "_e7 _W _g";
5090
+ var close = "_e8 _W _g _Z";
5088
5091
  //#endregion
5089
5092
  //#region src/styles/session-pop.css.ts
5090
- var sessionPop = "_fd _1";
5093
+ var sessionPop = "_eU _1";
5091
5094
  //#endregion
5092
5095
  //#region src/tags/icons/icon-diff.marko
5093
- var icon_diff_default = _template("G", (input) => {
5096
+ var icon_diff_default = _template("H", (input) => {
5094
5097
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
5095
5098
  const $scope0_id = _scope_id();
5096
5099
  _set_serialize_reason({
@@ -5107,7 +5110,7 @@ var icon_diff_default = _template("G", (input) => {
5107
5110
  });
5108
5111
  //#endregion
5109
5112
  //#region src/tags/icons/icon-manage.marko
5110
- var icon_manage_default = _template("M", (input) => {
5113
+ var icon_manage_default = _template("N", (input) => {
5111
5114
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
5112
5115
  const $scope0_id = _scope_id();
5113
5116
  _set_serialize_reason({
@@ -5124,7 +5127,7 @@ var icon_manage_default = _template("M", (input) => {
5124
5127
  });
5125
5128
  //#endregion
5126
5129
  //#region src/tags/icons/icon-edit.marko
5127
- var icon_edit_default = _template("I", (input) => {
5130
+ var icon_edit_default = _template("J", (input) => {
5128
5131
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
5129
5132
  const $scope0_id = _scope_id();
5130
5133
  _set_serialize_reason({
@@ -5139,12 +5142,12 @@ var icon_edit_default = _template("I", (input) => {
5139
5142
  });
5140
5143
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
5141
5144
  });
5142
- var prChip = "_f9 _p _f8";
5143
- var portChip = "_f_ _p _f8";
5145
+ var prChip = "_gm _p _gl";
5146
+ var portChip = "_gn _p _gl";
5144
5147
  var prState = {
5145
- open: "_gd",
5146
- merged: "_ge",
5147
- closed: "_gf"
5148
+ open: "_gr",
5149
+ merged: "_gs",
5150
+ closed: "_gt"
5148
5151
  };
5149
5152
  //#endregion
5150
5153
  //#region src/tags/side-nav-chips.marko
@@ -5157,7 +5160,7 @@ var prTitle = (repo, pr) => {
5157
5160
  return parts.join(" · ");
5158
5161
  };
5159
5162
  var isOpen = (pr) => !pr.state || pr.state === "OPEN";
5160
- var side_nav_chips_default = _template("s", (input) => {
5163
+ var side_nav_chips_default = _template("t", (input) => {
5161
5164
  const $scope0_reason = _scope_reason(), $sg__input_status_repos = _serialize_guard($scope0_reason, 4), $si__input_status_repos = _serialize_if($scope0_reason, 4), $sg__input_status_ports = _serialize_guard($scope0_reason, 5), $sg__input_status_repos__OR__input_status_ports = _serialize_guard($scope0_reason, 1), $si__input_status_repos__OR__input_status_ports = _serialize_if($scope0_reason, 1), $si__input_workspaceId = _serialize_if($scope0_reason, 3);
5162
5165
  const $scope0_id = _scope_id();
5163
5166
  const $input_workspaceId__closures = /* @__PURE__ */ new Set();
@@ -5170,7 +5173,7 @@ var side_nav_chips_default = _template("s", (input) => {
5170
5173
  armBox.timer = disarmLater(() => {
5171
5174
  armedPid = null;
5172
5175
  });
5173
- }, "s0", $scope0_id);
5176
+ }, "t0", $scope0_id);
5174
5177
  const dismissPr = _resume((fullName, number) => {
5175
5178
  fetch(`/api/workspaces/${input.workspaceId}/prs`, {
5176
5179
  method: "POST",
@@ -5180,7 +5183,7 @@ var side_nav_chips_default = _template("s", (input) => {
5180
5183
  number
5181
5184
  })
5182
5185
  }).catch(() => {});
5183
- }, "s1", $scope0_id);
5186
+ }, "t1", $scope0_id);
5184
5187
  const repos = input.status?.repos || [];
5185
5188
  const ports = input.status?.ports || [];
5186
5189
  _if(() => {
@@ -5191,8 +5194,8 @@ var side_nav_chips_default = _template("s", (input) => {
5191
5194
  if (repos.length < 2) return "";
5192
5195
  const name = repo.full_name.split("/").at(-1);
5193
5196
  return repos.some((r) => r.full_name !== repo.full_name && r.full_name.split("/").at(-1) === name) ? repoLabel(repo.full_name) : name;
5194
- }, "s2", $scope1_id);
5195
- _html(`<div${_attr_class("_f7")}>`);
5197
+ }, "t2", $scope1_id);
5198
+ _html(`<div${_attr_class("_gk")}>`);
5196
5199
  _for_of(repos, (repo) => {
5197
5200
  const $scope2_id = _scope_id();
5198
5201
  const $for_content__repo_worktree__closures = /* @__PURE__ */ new Set();
@@ -5208,11 +5211,11 @@ var side_nav_chips_default = _template("s", (input) => {
5208
5211
  [prState.merged]: pr.state === "MERGED",
5209
5212
  [prState.closed]: pr.state === "CLOSED"
5210
5213
  }
5211
- ])}${_attr("title", prTitle(repo, pr))}><a${_attr_class(["_ga", { ["_gh"]: !open }])}${_attr("href", pr.url)} target=_blank rel=noopener>${_escape(repoLabel$1(repo))}${_el_resume($scope3_id, "c", $sg__input_status_repos)}#${_sep($sg__input_status_repos)}${_escape(pr.number)}${_el_resume($scope3_id, "d", $sg__input_status_repos)}</a>${_el_resume($scope3_id, "b", $sg__input_status_repos)}`);
5214
+ ])}${_attr("title", prTitle(repo, pr))}><a${_attr_class(["_go", { ["_gv"]: !open }])}${_attr("href", pr.url)} target=_blank rel=noopener>${_escape(repoLabel$1(repo))}${_el_resume($scope3_id, "c", $sg__input_status_repos)}#${_sep($sg__input_status_repos)}${_escape(pr.number)}${_el_resume($scope3_id, "d", $sg__input_status_repos)}</a>${_el_resume($scope3_id, "b", $sg__input_status_repos)}`);
5212
5215
  _if(() => {
5213
5216
  if (open) {
5214
5217
  const $scope4_id = _scope_id();
5215
- _html(`<a${_attr_class(["_ga", "_gb"])}${_attr("href", `/w/${input.workspaceId}/review?pr=${encodeURIComponent(`${repo.worktree}/${pr.number}`)}`)}${_attr("title", `Review #${pr.number} changes`)}>`);
5218
+ _html(`<a${_attr_class(["_go", "_gp"])}${_attr("href", `/w/${input.workspaceId}/review?pr=${encodeURIComponent(`${repo.worktree}/${pr.number}`)}`)}${_attr("title", `Review #${pr.number} changes`)}>`);
5216
5219
  icon_diff_default({ size: 12 });
5217
5220
  _html(`</a>${_el_resume($scope4_id, "a", _serialize_guard($scope0_reason, 0))}`);
5218
5221
  _serialize_if($scope0_reason, 2) && _subscribe($si__input_status_repos && $for_content__repo_worktree__closures, _subscribe($si__input_workspaceId && $input_workspaceId__closures, writeScope($scope4_id, { _: _scope_with_id($scope3_id) })));
@@ -5220,13 +5223,13 @@ var side_nav_chips_default = _template("s", (input) => {
5220
5223
  } else {
5221
5224
  const $scope6_id = _scope_id();
5222
5225
  _html(`<button type=button${_attr_class([
5223
- "_ga",
5224
- "_gb",
5225
- "_gc"
5226
+ "_go",
5227
+ "_gp",
5228
+ "_gq"
5226
5229
  ])}${_attr("title", `Dismiss #${pr.number}`)}>`);
5227
5230
  icon_xmark_default({ size: 12 });
5228
5231
  _html(`</button>${_el_resume($scope6_id, "a")}`);
5229
- _script($scope6_id, "s3");
5232
+ _script($scope6_id, "t3");
5230
5233
  writeScope($scope6_id, { _: _scope_with_id($scope3_id) });
5231
5234
  return 1;
5232
5235
  }
@@ -5247,15 +5250,15 @@ var side_nav_chips_default = _template("s", (input) => {
5247
5250
  }, "full_name", $scope1_id, "b", $sg__input_status_repos, $sg__input_status_repos, $sg__input_status_repos__OR__input_status_ports);
5248
5251
  _for_of(ports, (p) => {
5249
5252
  const $scope5_id = _scope_id();
5250
- _html(`<span${_attr_class(["_p", portChip])}${_attr("title", p.cmd)}><button type=button${_attr_class(["_ga", "_gg"])}${_attr("title", `Open http://${typeof location === "undefined" ? "localhost" : location.hostname}:${p.port}`)}>:${_sep($sg__input_status_ports)}${_escape(p.port)}${_el_resume($scope5_id, "c", $sg__input_status_ports)}</button>${_el_resume($scope5_id, "b")}<button type=button${_attr_class([
5251
- "_ga",
5252
- "_gb",
5253
- "_gc",
5253
+ _html(`<span${_attr_class(["_p", portChip])}${_attr("title", p.cmd)}><button type=button${_attr_class(["_go", "_gu"])}${_attr("title", `Open http://${typeof location === "undefined" ? "localhost" : location.hostname}:${p.port}`)}>:${_sep($sg__input_status_ports)}${_escape(p.port)}${_el_resume($scope5_id, "c", $sg__input_status_ports)}</button>${_el_resume($scope5_id, "b")}<button type=button${_attr_class([
5254
+ "_go",
5255
+ "_gp",
5256
+ "_gq",
5254
5257
  { ["_n"]: armedPid === p.pid }
5255
5258
  ])}${armedPid === p.pid ? " title=Kill?" : _attr("title", `Kill ${p.cmd} (pid ${p.pid})`)}>`);
5256
5259
  icon_xmark_default({ size: 12 });
5257
5260
  _html(`</button>${_el_resume($scope5_id, "d")}</span>${_el_resume($scope5_id, "a", $sg__input_status_ports)}`);
5258
- _script($scope5_id, "s4");
5261
+ _script($scope5_id, "t4");
5259
5262
  _subscribe($armedPid__closures, writeScope($scope5_id, {
5260
5263
  h: p?.cmd,
5261
5264
  i: p?.port,
@@ -5288,7 +5291,7 @@ var side_nav_chips_default = _template("s", (input) => {
5288
5291
  });
5289
5292
  //#endregion
5290
5293
  //#region src/tags/side-nav-item.marko
5291
- var side_nav_item_default = _template("t", (input) => {
5294
+ var side_nav_item_default = _template("u", (input) => {
5292
5295
  const $scope0_reason = _scope_reason(), $si__input_workspaces__OR__input_workspaceId = _serialize_if($scope0_reason, 0), $sg__input_workspaceId__OR__input_status = _serialize_guard($scope0_reason, 1), $sg__input_sessions = _serialize_guard($scope0_reason, 22), $si__input_sessions = _serialize_if($scope0_reason, 22), $si__input_workspaceId__OR__input_status__OR__input_sessions__OR__input_page = _serialize_if($scope0_reason, 12), $sg__input_workspaceId__OR__input_status__OR__input_sessions__OR__input_page = _serialize_guard($scope0_reason, 12), $si__input_current = _serialize_if($scope0_reason, 20), $sg__input_page = _serialize_guard($scope0_reason, 24), $sg__input_workspaces__OR__input_workspaceId = _serialize_guard($scope0_reason, 0), $si__input_agents = _serialize_if($scope0_reason, 26), $sg__input_onNewSession = _serialize_guard($scope0_reason, 25), $sg__input_onNewSession__OR__input_onReview = _serialize_guard($scope0_reason, 2), $sg__input_onReview = _serialize_guard($scope0_reason, 27), $sg__input_rail = _serialize_guard($scope0_reason, 19), $si__input_rail = _serialize_if($scope0_reason, 19), $si__input_workspaceId = _serialize_if($scope0_reason, 18), $si__input_workspaces__OR__input_workspaceId__OR__input_rail = _serialize_if($scope0_reason, 3), $si__input_workspaces__OR__input_workspaceId__OR__input_rail__OR__input_current__OR__input_page = _serialize_if($scope0_reason, 13), $si__input_workspaces__OR__input_workspaceId__OR__input_rail__OR__input_page = _serialize_if($scope0_reason, 11), $si__input_index = _serialize_if($scope0_reason, 21), $si__input_onNewSession = _serialize_if($scope0_reason, 25), $si__input_onReview = _serialize_if($scope0_reason, 27), $si__input_managing = _serialize_if($scope0_reason, 28), $si__input_currentTab = _serialize_if($scope0_reason, 29), $si__input_railPop = _serialize_if($scope0_reason, 23), $si__input_page = _serialize_if($scope0_reason, 24);
5293
5296
  const $scope0_id = _scope_id();
5294
5297
  const $input_current__closures = /* @__PURE__ */ new Set();
@@ -5315,7 +5318,7 @@ var side_nav_item_default = _template("t", (input) => {
5315
5318
  armBox.timer = disarmLater(() => {
5316
5319
  armedKill = null;
5317
5320
  });
5318
- }, "t1", $scope0_id);
5321
+ }, "u1", $scope0_id);
5319
5322
  let renamingId = null;
5320
5323
  let renameValue = "";
5321
5324
  const commitRename = _resume((s) => {
@@ -5323,7 +5326,7 @@ var side_nav_item_default = _template("t", (input) => {
5323
5326
  const title = renameValue.trim();
5324
5327
  renamingId = null;
5325
5328
  if (title) input.onRenameSession?.(s, title);
5326
- }, "t2", $scope0_id);
5329
+ }, "u2", $scope0_id);
5327
5330
  const ws$1 = input.workspaces.find((w) => w.id === input.workspaceId);
5328
5331
  _if(() => {
5329
5332
  if (ws$1) {
@@ -5333,10 +5336,10 @@ var side_nav_item_default = _template("t", (input) => {
5333
5336
  _if(() => {
5334
5337
  if (input.rail) {
5335
5338
  const $scope2_id = _scope_id();
5336
- _html(`<a${_attr("href", `/w/${ws$1.id}`)}${_attr_class([railBtn, { ["_fG"]: input.current }])}${_attr("title", ws$1.name)}>${_escape((input.index ?? 0) + 1)}${_el_resume($scope2_id, "b", _serialize_guard($scope0_reason, 21))}<span${_attr_class([
5339
+ _html(`<a${_attr("href", `/w/${ws$1.id}`)}${_attr_class([railBtn, { ["_eW"]: input.current }])}${_attr("title", ws$1.name)}>${_escape((input.index ?? 0) + 1)}${_el_resume($scope2_id, "b", _serialize_guard($scope0_reason, 21))}<span${_attr_class([
5337
5340
  "_w",
5338
5341
  phase[dot],
5339
- "_fJ"
5342
+ "_eZ"
5340
5343
  ])}></span>${_el_resume($scope2_id, "c", $sg__input_workspaceId__OR__input_status)}</a>${_el_resume($scope2_id, "a", _serialize_guard($scope0_reason, 4))}`);
5341
5344
  _serialize_if($scope0_reason, 16) && _subscribe($si__input_workspaces__OR__input_workspaceId && $ws_name__closures, _subscribe($si__input_workspaces__OR__input_workspaceId && $ws_id__closures, _subscribe($si__input_index && $input_index__closures, _subscribe($si__input_current && $input_current__closures, writeScope($scope2_id, { _: _scope_with_id($scope1_id) })))));
5342
5345
  return 0;
@@ -5344,15 +5347,15 @@ var side_nav_item_default = _template("t", (input) => {
5344
5347
  const $scope3_id = _scope_id();
5345
5348
  const sessions$1 = input.sessions || [];
5346
5349
  const phaseLabel = dot === "working" ? "Working" : dot === "waiting" ? "Needs input" : dot === "idle" ? "Idle" : "Not running";
5347
- _html(`<section${_attr_class(["_fL", {
5348
- ["_fG"]: input.current,
5350
+ _html(`<section${_attr_class(["_e1", {
5351
+ ["_eW"]: input.current,
5349
5352
  ["_2"]: input.current,
5350
- ["_fM"]: input.railPop,
5351
- ["_fK"]: input.page
5352
- }])}><div${_attr_class("_fN")}><a${_attr("href", `/w/${ws$1.id}`)}${_attr_class("_fO")}><span${_attr_class([
5353
+ ["_e2"]: input.railPop,
5354
+ ["_e0"]: input.page
5355
+ }])}><div${_attr_class("_e3")}><a${_attr("href", `/w/${ws$1.id}`)}${_attr_class("_e4")}><span${_attr_class([
5353
5356
  "_w",
5354
5357
  phase[dot],
5355
- "_fZ"
5358
+ "_fe"
5356
5359
  ])}${_attr("title", phaseLabel)}></span>${_el_resume($scope3_id, "d", $sg__input_workspaceId__OR__input_status)}`);
5357
5360
  _if(() => {
5358
5361
  if (sessions$1.length === 1) {
@@ -5365,7 +5368,7 @@ var side_nav_item_default = _template("t", (input) => {
5365
5368
  icon_agent_default({
5366
5369
  agent: activeAgent(sessions$1[0]),
5367
5370
  size: 12,
5368
- class: "_fT"
5371
+ class: "_e9"
5369
5372
  });
5370
5373
  $si__input_sessions && writeScope($scope12_id, {
5371
5374
  _: _scope_with_id($scope3_id),
@@ -5375,16 +5378,16 @@ var side_nav_item_default = _template("t", (input) => {
5375
5378
  }
5376
5379
  }, $scope3_id, "e", $sg__input_sessions, $sg__input_sessions, $sg__input_workspaceId__OR__input_status__OR__input_sessions__OR__input_page);
5377
5380
  const metaText = sessions$1.length === 0 ? phaseLabel : sessions$1.length === 1 ? sessions$1[0].title || "" : `${sessions$1.length} sessions`;
5378
- _html(`<span${_attr_class("_fU")}><span${_attr_class("_fV")}>${_escape(ws$1.name)}${_el_resume($scope3_id, "h", $sg__input_workspaces__OR__input_workspaceId)}</span>`);
5381
+ _html(`<span${_attr_class("_e_")}><span${_attr_class("_fa")}>${_escape(ws$1.name)}${_el_resume($scope3_id, "h", $sg__input_workspaces__OR__input_workspaceId)}</span>`);
5379
5382
  _if(() => {
5380
5383
  if (input.page && metaText) {
5381
5384
  const $scope14_id = _scope_id();
5382
- _html(`<span${_attr_class("_fX")}>${_escape(metaText)}${_el_resume($scope14_id, "b", _serialize_guard($scope0_reason, 8))}</span>`);
5385
+ _html(`<span${_attr_class("_fc")}>${_escape(metaText)}${_el_resume($scope14_id, "b", _serialize_guard($scope0_reason, 8))}</span>`);
5383
5386
  $si__input_workspaceId__OR__input_status__OR__input_sessions__OR__input_page && writeScope($scope14_id, { _: _serialize_if($scope0_reason, 8) && _scope_with_id($scope3_id) });
5384
5387
  return 0;
5385
5388
  } else if (sessions$1.length === 1 && sessions$1[0].title) {
5386
5389
  const $scope13_id = _scope_id();
5387
- _html(`<span${_attr_class("_fW")}>${_escape(sessions$1[0].title)}${_el_resume($scope13_id, "b", $sg__input_sessions)}</span>`);
5390
+ _html(`<span${_attr_class("_fb")}>${_escape(sessions$1[0].title)}${_el_resume($scope13_id, "b", $sg__input_sessions)}</span>`);
5388
5391
  $si__input_workspaceId__OR__input_status__OR__input_sessions__OR__input_page && writeScope($scope13_id, { _: $si__input_sessions && _scope_with_id($scope3_id) });
5389
5392
  return 1;
5390
5393
  }
@@ -5397,7 +5400,7 @@ var side_nav_item_default = _template("t", (input) => {
5397
5400
  "_F",
5398
5401
  "_O",
5399
5402
  "_H",
5400
- "_fY"
5403
+ "_fd"
5401
5404
  ])}>${input.current ? "Open" : ""}${_el_resume($scope4_id, "b", _serialize_guard($scope0_reason, 20))}</span>`);
5402
5405
  $si__input_workspaces__OR__input_workspaceId__OR__input_rail__OR__input_current__OR__input_page && _subscribe($si__input_current && $input_current__closures, writeScope($scope4_id, {
5403
5406
  _: _scope_with_id($scope3_id),
@@ -5410,7 +5413,7 @@ var side_nav_item_default = _template("t", (input) => {
5410
5413
  _if(() => {
5411
5414
  if (!input.page) {
5412
5415
  const $scope5_id = _scope_id();
5413
- _html(`<div${_attr_class("_fP")}>`);
5416
+ _html(`<div${_attr_class("_e5")}>`);
5414
5417
  _if(() => {
5415
5418
  if (input.onNewSession) {
5416
5419
  const $scope6_id = _scope_id();
@@ -5424,7 +5427,7 @@ var side_nav_item_default = _template("t", (input) => {
5424
5427
  _html(`</button>${_el_resume($scope6_id, "a")}<div${_attr("id", newPopId)} popover=auto${_attr_class(sessionPop)}>`);
5425
5428
  _for_of([], (agent) => {
5426
5429
  const $scope7_id = _scope_id();
5427
- _html(`<button${_attr_class("_fe")}>`);
5430
+ _html(`<button${_attr_class("_eV")}>`);
5428
5431
  _set_serialize_reason(12);
5429
5432
  const $childScope2 = _peek_scope_id();
5430
5433
  icon_agent_default({
@@ -5432,13 +5435,13 @@ var side_nav_item_default = _template("t", (input) => {
5432
5435
  size: 14
5433
5436
  });
5434
5437
  _html(`<!>${_escape(agent)}${_el_resume($scope7_id, "c")}</button>${_el_resume($scope7_id, "a")}`);
5435
- _script($scope7_id, "t3");
5438
+ _script($scope7_id, "u3");
5436
5439
  writeScope($scope7_id, {
5437
5440
  e: agent,
5438
5441
  b: _existing_scope($childScope2)
5439
5442
  });
5440
5443
  }, (a) => a, $scope6_id, "c", 1, 1, 1, "</div>", 1);
5441
- _script($scope6_id, "t4");
5444
+ _script($scope6_id, "u4");
5442
5445
  _subscribe($si__input_agents && $input_agents__closures, writeScope($scope6_id, {
5443
5446
  e: $si__input_agents && pickerReady,
5444
5447
  _: _scope_with_id($scope5_id)
@@ -5459,7 +5462,7 @@ var side_nav_item_default = _template("t", (input) => {
5459
5462
  return 0;
5460
5463
  }
5461
5464
  }, $scope5_id, "c", $sg__input_onReview, $sg__input_onReview, $sg__input_onNewSession__OR__input_onReview, 0, 1);
5462
- _html(`<a${_attr("href", `/w/${ws$1.id}/manage`)}${_attr_class([rowIcon, { ["_fH"]: input.managing }])} title="Manage workspace"${input.managing ? " aria-current=page" : ""}>`);
5465
+ _html(`<a${_attr("href", `/w/${ws$1.id}/manage`)}${_attr_class([rowIcon, { ["_eX"]: input.managing }])} title="Manage workspace"${input.managing ? " aria-current=page" : ""}>`);
5463
5466
  icon_manage_default({ size: 12 });
5464
5467
  _html(`</a>${_el_resume($scope5_id, "d", _serialize_guard($scope0_reason, 6))}</div>`);
5465
5468
  _subscribe($si__input_workspaces__OR__input_workspaceId && $ws_id__closures, _subscribe($si__input_managing && $input_managing__closures, _subscribe($si__input_onReview && $input_onReview__closures, _subscribe($si__input_onNewSession && $input_onNewSession__closures, writeScope($scope5_id, {
@@ -5469,17 +5472,17 @@ var side_nav_item_default = _template("t", (input) => {
5469
5472
  return 0;
5470
5473
  }
5471
5474
  }, $scope3_id, "k", $sg__input_page, $sg__input_page, $sg__input_workspaceId__OR__input_status__OR__input_sessions__OR__input_page, 0, 1);
5472
- _html(`</div><div${_attr_class("_f4")}>`);
5475
+ _html(`</div><div${_attr_class("_fj")}>`);
5473
5476
  _for_of(sessions$1.length > 1 ? sessions$1 : [], (s) => {
5474
5477
  const $scope8_id = _scope_id();
5475
- _html(`<div${_attr_class(["_fQ", { ["_fG"]: s.id === input.currentTab }])}>`);
5478
+ _html(`<div${_attr_class(["_e6", { ["_eW"]: s.id === input.currentTab }])}>`);
5476
5479
  _if(() => {
5477
5480
  if (renamingId === s.id) {
5478
5481
  const $scope10_id = _scope_id();
5479
5482
  _html(`<span${_attr_class([
5480
5483
  "_w",
5481
5484
  phase[sessionPhase(s.state)],
5482
- "_f2"
5485
+ "_fh"
5483
5486
  ])}></span>${_el_resume($scope10_id, "a", $sg__input_sessions)}`);
5484
5487
  _set_serialize_reason({
5485
5488
  1: $sg__input_sessions,
@@ -5489,17 +5492,17 @@ var side_nav_item_default = _template("t", (input) => {
5489
5492
  icon_agent_default({
5490
5493
  agent: activeAgent(s),
5491
5494
  size: 13,
5492
- class: "_f6"
5495
+ class: "_fl"
5493
5496
  });
5494
5497
  _html(`<input${_attr_input_value($scope10_id, "c", renameValue, _resume((_new_renameValue) => {
5495
5498
  renameValue = _new_renameValue;
5496
- }, "t0", $scope10_id))}${_attr_class(["_R", "_f3"])} aria-label="Session name">${_el_resume($scope10_id, "c")}`);
5497
- _script($scope10_id, "t5");
5499
+ }, "u0", $scope10_id))}${_attr_class(["_R", "_fi"])} aria-label="Session name">${_el_resume($scope10_id, "c")}`);
5500
+ _script($scope10_id, "u5");
5498
5501
  _subscribe($renameValue__closures, writeScope($scope10_id, { b: $si__input_sessions && _existing_scope($childScope3) }));
5499
5502
  return 0;
5500
5503
  } else {
5501
5504
  const $scope9_id = _scope_id();
5502
- _html(`<a${_attr("href", `/w/${ws$1.id}?s=${s.id}`)}${_attr_class("_f5")}><span${_attr_class(["_w", phase[sessionPhase(s.state)]])}></span>${_el_resume($scope9_id, "b", $sg__input_sessions)}`);
5505
+ _html(`<a${_attr("href", `/w/${ws$1.id}?s=${s.id}`)}${_attr_class("_fk")}><span${_attr_class(["_w", phase[sessionPhase(s.state)]])}></span>${_el_resume($scope9_id, "b", $sg__input_sessions)}`);
5503
5506
  _set_serialize_reason({
5504
5507
  1: $sg__input_sessions,
5505
5508
  2: $sg__input_sessions
@@ -5508,14 +5511,14 @@ var side_nav_item_default = _template("t", (input) => {
5508
5511
  icon_agent_default({
5509
5512
  agent: activeAgent(s),
5510
5513
  size: 13,
5511
- class: "_f6"
5514
+ class: "_fl"
5512
5515
  });
5513
- _html(`<span${_attr_class("_f0")}>${_escape(s.title || activeAgent(s))}${_el_resume($scope9_id, "e", $sg__input_sessions)}</span></a>${_el_resume($scope9_id, "a", _serialize_guard($scope0_reason, 5))}<div${_attr_class("_f1")}><button${_attr_class(rowIcon)} title="Rename session">`);
5516
+ _html(`<span${_attr_class("_ff")}>${_escape(s.title || activeAgent(s))}${_el_resume($scope9_id, "e", $sg__input_sessions)}</span></a>${_el_resume($scope9_id, "a", _serialize_guard($scope0_reason, 5))}<div${_attr_class("_fg")}><button${_attr_class(rowIcon)} title="Rename session">`);
5514
5517
  icon_edit_default({ size: 12 });
5515
5518
  _html(`</button>${_el_resume($scope9_id, "g")}<button${_attr_class([close, { ["_n"]: armedKill === s.id }])} title=${armedKill === s.id ? "Close?" : "\"Close session\""}>`);
5516
5519
  icon_xmark_default({ size: 12 });
5517
5520
  _html(`</button>${_el_resume($scope9_id, "i")}</div>`);
5518
- _script($scope9_id, "t6");
5521
+ _script($scope9_id, "u6");
5519
5522
  _subscribe($si__input_workspaces__OR__input_workspaceId && $ws_id__closures, _subscribe($armedKill__closures, writeScope($scope9_id, {
5520
5523
  c: $si__input_sessions && _existing_scope($childScope4),
5521
5524
  Cam: $si__input_workspaces__OR__input_workspaceId && 3
@@ -5546,7 +5549,7 @@ var side_nav_item_default = _template("t", (input) => {
5546
5549
  status: st
5547
5550
  });
5548
5551
  _html(`</div></section>${_el_resume($scope3_id, "a")}`);
5549
- _script($scope3_id, "t7");
5552
+ _script($scope3_id, "u7");
5550
5553
  _subscribe($si__input_workspaces__OR__input_workspaceId && $ws_name__closures, _subscribe($si__input_workspaces__OR__input_workspaceId && $ws_id__closures, _subscribe($si__input_page && $input_page__closures, _subscribe($si__input_railPop && $input_railPop__closures, _subscribe($si__input_sessions && $input_sessions__closures, _subscribe($si__input_current && $input_current__closures, _subscribe($si__input_workspaceId && $input_workspaceId__closures, writeScope($scope3_id, {
5551
5554
  p: $si__input_workspaceId__OR__input_status__OR__input_sessions__OR__input_page && sessions$1.length,
5552
5555
  q: $si__input_sessions && sessions$1[0],
@@ -5617,7 +5620,7 @@ var side_nav_item_default = _template("t", (input) => {
5617
5620
  });
5618
5621
  //#endregion
5619
5622
  //#region src/tags/icons/icon-folder-plus.marko
5620
- var icon_folder_plus_default = _template("J", (input) => {
5623
+ var icon_folder_plus_default = _template("K", (input) => {
5621
5624
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
5622
5625
  const $scope0_id = _scope_id();
5623
5626
  _set_serialize_reason({
@@ -5634,7 +5637,7 @@ var icon_folder_plus_default = _template("J", (input) => {
5634
5637
  });
5635
5638
  //#endregion
5636
5639
  //#region src/tags/icons/icon-sidebar-collapse.marko
5637
- var icon_sidebar_collapse_default = _template("R", (input) => {
5640
+ var icon_sidebar_collapse_default = _template("S", (input) => {
5638
5641
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
5639
5642
  const $scope0_id = _scope_id();
5640
5643
  _set_serialize_reason({
@@ -5651,7 +5654,7 @@ var icon_sidebar_collapse_default = _template("R", (input) => {
5651
5654
  });
5652
5655
  //#endregion
5653
5656
  //#region src/tags/side-nav.marko
5654
- var side_nav_default = _template("u", (input) => {
5657
+ var side_nav_default = _template("v", (input) => {
5655
5658
  const $scope0_reason = _scope_reason(), $sg__input_setupReady = _serialize_guard($scope0_reason, 9), $sg__input_workspace__OR__input_allWorkspaces = _serialize_guard($scope0_reason, 0), $sg__input_workspace__OR__input_allWorkspaces__OR__input_allStatus = _serialize_guard($scope0_reason, 1), $sg__input_agents = _serialize_guard($scope0_reason, 11), $si__input_workspace = _serialize_if($scope0_reason, 2), $si__input_workspace__OR__input_allWorkspaces = _serialize_if($scope0_reason, 0), $si__input_allStatus = _serialize_if($scope0_reason, 8), $si__input_setupReady = _serialize_if($scope0_reason, 9), $si__input_onSelectWorkspace = _serialize_if($scope0_reason, 10), $si__input_agents = _serialize_if($scope0_reason, 11), $si__input_onNewSession = _serialize_if($scope0_reason, 12), $si__input_onReviewOpened = _serialize_if($scope0_reason, 13), $si__input_sessions = _serialize_if($scope0_reason, 14), $si__input_onRenameSession = _serialize_if($scope0_reason, 15), $si__input_onCloseSession = _serialize_if($scope0_reason, 16);
5656
5659
  const $scope0_id = _scope_id();
5657
5660
  const $notifyOn__closures = /* @__PURE__ */ new Set();
@@ -5675,7 +5678,7 @@ var side_nav_default = _template("u", (input) => {
5675
5678
  let canPush = false;
5676
5679
  const leaveNav = _resume(() => {
5677
5680
  if (view === "nav") view = "term";
5678
- }, "u0", $scope0_id);
5681
+ }, "v0", $scope0_id);
5679
5682
  const toggleNotify = _resume(async () => {
5680
5683
  try {
5681
5684
  if (notifyOn) {
@@ -5689,7 +5692,7 @@ var side_nav_default = _template("u", (input) => {
5689
5692
  notifyOn = false;
5690
5693
  input.onError?.(`Notifications failed: ${String(err.message || err)}`);
5691
5694
  }
5692
- }, "u1", $scope0_id);
5695
+ }, "v1", $scope0_id);
5693
5696
  const itemIds = input.allWorkspaces?.length ? input.allWorkspaces.filter((w) => w.status === "active").map((w) => w.id) : [ws.id];
5694
5697
  const workspaces = input.allWorkspaces || [ws];
5695
5698
  const allStatus = input.allStatus || {};
@@ -5697,25 +5700,25 @@ var side_nav_default = _template("u", (input) => {
5697
5700
  const isPage = view === "nav";
5698
5701
  const otherIds = itemIds.filter((id) => id !== ws.id);
5699
5702
  const listIds = isPage ? [ws.id, ...otherIds] : itemIds;
5700
- _html(`<aside${_attr_class(["_c7", {
5701
- ["_c5"]: !navOpen,
5702
- ["_c6"]: isPage
5703
+ _html(`<aside${_attr_class(["_dh", {
5704
+ ["_df"]: !navOpen,
5705
+ ["_dg"]: isPage
5703
5706
  }])}${_attr("hidden", view === "diff")}>`);
5704
5707
  _if(() => {
5705
5708
  if (isPage) {
5706
5709
  const $scope1_id = _scope_id();
5707
- _html(`<header${_attr_class("_c_")}><h1${_attr_class("_da")}>Workspaces</h1><div${_attr_class("_db")}>`);
5710
+ _html(`<header${_attr_class("_dk")}><h1${_attr_class("_dl")}>Workspaces</h1><div${_attr_class("_dm")}>`);
5708
5711
  _if(() => {}, $scope1_id, "d", 1, 1, 1, 0, 1);
5709
5712
  _html(`<a href=/settings${_attr_class([
5710
5713
  iconBtn$1,
5711
- "_dc",
5712
- { ["_c2"]: view === "settings" }
5714
+ "_dn",
5715
+ { ["_dc"]: view === "settings" }
5713
5716
  ])} title=Settings${view === "settings" ? " aria-current=page" : ""}>`);
5714
5717
  icon_settings_default({ size: 16 });
5715
5718
  _if(() => {
5716
5719
  if (input.setupReady === false) {
5717
5720
  const $scope10_id = _scope_id();
5718
- _html(`<span${_attr_class(["_w", "_c4"])} title="Machine setup incomplete"></span>`);
5721
+ _html(`<span${_attr_class(["_w", "_de"])} title="Machine setup incomplete"></span>`);
5719
5722
  $si__input_setupReady && writeScope($scope10_id, {});
5720
5723
  return 0;
5721
5724
  }
@@ -5725,13 +5728,13 @@ var side_nav_default = _template("u", (input) => {
5725
5728
  return 0;
5726
5729
  }
5727
5730
  }, $scope0_id, "b", 1, 1, 1, 0, 1);
5728
- _html(`<div${_attr_class("_df")}>`);
5731
+ _html(`<div${_attr_class("_dq")}>`);
5729
5732
  _for_of(listIds, (wsId) => {
5730
5733
  const $scope2_id = _scope_id();
5731
5734
  _if(() => {
5732
5735
  if (isPage && wsId === ws.id) {
5733
5736
  const $scope11_id = _scope_id();
5734
- _html(`<h2${_attr_class(["_bE", "_dd"])}>Current</h2>`);
5737
+ _html(`<h2${_attr_class(["_bE", "_do"])}>Current</h2>`);
5735
5738
  writeScope($scope11_id, {});
5736
5739
  return 0;
5737
5740
  }
@@ -5739,7 +5742,7 @@ var side_nav_default = _template("u", (input) => {
5739
5742
  _if(() => {
5740
5743
  if (isPage && wsId !== ws.id && wsId === otherIds[0]) {
5741
5744
  const $scope12_id = _scope_id();
5742
- _html(`<h2${_attr_class(["_bE", "_dd"])}>Other workspaces</h2>`);
5745
+ _html(`<h2${_attr_class(["_bE", "_do"])}>Other workspaces</h2>`);
5743
5746
  writeScope($scope12_id, {});
5744
5747
  return 0;
5745
5748
  }
@@ -5786,12 +5789,12 @@ var side_nav_default = _template("u", (input) => {
5786
5789
  leaveNav();
5787
5790
  input.onSelectWorkspace?.(wsId);
5788
5791
  } else if (view === "nav" || view === "manage" || view === "settings" || view === "new") view = "term";
5789
- }, "u2", $scope2_id),
5792
+ }, "v2", $scope2_id),
5790
5793
  agents: input.agents,
5791
5794
  onNewSession: _resume(function(agent) {
5792
5795
  leaveNav();
5793
5796
  input.onNewSession(wsId, agent);
5794
- }, "u3", $scope2_id),
5797
+ }, "v3", $scope2_id),
5795
5798
  onReview: _resume(function() {
5796
5799
  if (wsId === ws.id) {
5797
5800
  if (view === "diff") view = "term";
@@ -5800,7 +5803,7 @@ var side_nav_default = _template("u", (input) => {
5800
5803
  requestDiff(wsId);
5801
5804
  input.onSelectWorkspace?.(wsId);
5802
5805
  }
5803
- }, "u4", $scope2_id),
5806
+ }, "v4", $scope2_id),
5804
5807
  sessions: wsId === ws.id && input.sessions ? input.sessions : allStatus[wsId]?.sessions || [],
5805
5808
  currentTab: wsId === ws.id && view === "term" ? tab : null,
5806
5809
  onRenameSession: input.onRenameSession,
@@ -5816,14 +5819,14 @@ var side_nav_default = _template("u", (input) => {
5816
5819
  const $scope3_id = _scope_id();
5817
5820
  let railHover = null;
5818
5821
  const railHoverBox = { timer: 0 };
5819
- const railKeep = _resume(() => clearTimeout(railHoverBox.timer), "u5", $scope3_id);
5822
+ const railKeep = _resume(() => clearTimeout(railHoverBox.timer), "v5", $scope3_id);
5820
5823
  const railHide = _resume(() => {
5821
5824
  clearTimeout(railHoverBox.timer);
5822
5825
  railHoverBox.timer = setTimeout(() => {
5823
5826
  railHover = null;
5824
5827
  }, 150);
5825
- }, "u6", $scope3_id);
5826
- _html(`<div${_attr_class("_dg")}>`);
5828
+ }, "v6", $scope3_id);
5829
+ _html(`<div${_attr_class("_dr")}>`);
5827
5830
  _for_of(itemIds, (wsId, i) => {
5828
5831
  const $scope4_id = _scope_id();
5829
5832
  _html("<span>");
@@ -5860,10 +5863,10 @@ var side_nav_default = _template("u", (input) => {
5860
5863
  onSelect: _resume(function() {
5861
5864
  if (wsId !== ws.id) input.onSelectWorkspace?.(wsId);
5862
5865
  else if (view === "manage" || view === "settings" || view === "new") view = "term";
5863
- }, "u7", $scope4_id)
5866
+ }, "v7", $scope4_id)
5864
5867
  });
5865
5868
  _html(`</span>${_el_resume($scope4_id, "a")}`);
5866
- _script($scope4_id, "u12");
5869
+ _script($scope4_id, "v12");
5867
5870
  _subscribe($si__input_allStatus && $allStatus__closures, _subscribe($si__input_workspace__OR__input_allWorkspaces && $workspaces__closures, _subscribe($si__input_workspace && $ws_id__closures, writeScope($scope4_id, {
5868
5871
  d: wsId,
5869
5872
  _: _scope_with_id($scope3_id),
@@ -5874,7 +5877,7 @@ var side_nav_default = _template("u", (input) => {
5874
5877
  if (railHover) {
5875
5878
  const $scope5_id = _scope_id();
5876
5879
  const hoverId = railHover.id;
5877
- _html(`<div${_attr_class(["_1", "_dj"])}${_attr_style(`top:${railHover.top}px;left:${railHover.left}px`)}>`);
5880
+ _html(`<div${_attr_class(["_1", "_du"])}${_attr_style(`top:${railHover.top}px;left:${railHover.left}px`)}>`);
5878
5881
  _set_serialize_reason({
5879
5882
  0: 1,
5880
5883
  1: 1,
@@ -5915,12 +5918,12 @@ var side_nav_default = _template("u", (input) => {
5915
5918
  railHover = null;
5916
5919
  if (hoverId !== ws.id) input.onSelectWorkspace?.(hoverId);
5917
5920
  else if (view === "manage" || view === "settings" || view === "new") view = "term";
5918
- }, "u8", $scope5_id),
5921
+ }, "v8", $scope5_id),
5919
5922
  agents: input.agents,
5920
5923
  onNewSession: _resume(function(agent) {
5921
5924
  railHover = null;
5922
5925
  input.onNewSession(hoverId, agent);
5923
- }, "u9", $scope5_id),
5926
+ }, "v9", $scope5_id),
5924
5927
  onReview: _resume(function() {
5925
5928
  railHover = null;
5926
5929
  if (hoverId === ws.id) {
@@ -5930,14 +5933,14 @@ var side_nav_default = _template("u", (input) => {
5930
5933
  requestDiff(hoverId);
5931
5934
  input.onSelectWorkspace?.(hoverId);
5932
5935
  }
5933
- }, "u10", $scope5_id),
5936
+ }, "v10", $scope5_id),
5934
5937
  sessions: hoverId === ws.id && input.sessions ? input.sessions : allStatus[hoverId]?.sessions || [],
5935
5938
  currentTab: hoverId === ws.id && view === "term" ? tab : null,
5936
5939
  onRenameSession: input.onRenameSession,
5937
5940
  onCloseSession: input.onCloseSession
5938
5941
  });
5939
5942
  _html(`</div>${_el_resume($scope5_id, "a")}`);
5940
- _script($scope5_id, "u13");
5943
+ _script($scope5_id, "v13");
5941
5944
  _subscribe($si__input_allStatus && $allStatus__closures, _subscribe($si__input_workspace__OR__input_allWorkspaces && $workspaces__closures, _subscribe($view__closures, _subscribe($tab__closures, _subscribe($si__input_workspace && $ws_id__closures, _subscribe($si__input_onCloseSession && $input_onCloseSession__closures, _subscribe($si__input_onRenameSession && $input_onRenameSession__closures, _subscribe($si__input_sessions && $input_sessions__closures, _subscribe($si__input_onReviewOpened && $input_onReviewOpened__closures, _subscribe($si__input_onNewSession && $input_onNewSession__closures, _subscribe($si__input_agents && $input_agents__closures, _subscribe($si__input_onSelectWorkspace && $input_onSelectWorkspace__closures, writeScope($scope5_id, {
5942
5945
  c: hoverId,
5943
5946
  b: _existing_scope($childScope3),
@@ -5959,7 +5962,7 @@ var side_nav_default = _template("u", (input) => {
5959
5962
  return 0;
5960
5963
  }
5961
5964
  }, $scope0_id, "d");
5962
- _html(`<div${_attr_class("_dh")}>`);
5965
+ _html(`<div${_attr_class("_ds")}>`);
5963
5966
  _if(() => {
5964
5967
  if (isPage) {
5965
5968
  const $scope7_id = _scope_id();
@@ -5967,7 +5970,7 @@ var side_nav_default = _template("u", (input) => {
5967
5970
  "_l",
5968
5971
  "_m",
5969
5972
  btnLg,
5970
- "_de"
5973
+ "_dp"
5971
5974
  ])} title="New workspace"${view === "new" ? " aria-current=page" : ""}>`);
5972
5975
  icon_folder_plus_default({ size: 16 });
5973
5976
  _html(` New workspace</a>${_el_resume($scope7_id, "a")}`);
@@ -5989,29 +5992,29 @@ var side_nav_default = _template("u", (input) => {
5989
5992
  return 1;
5990
5993
  }
5991
5994
  }, $scope6_id, "a", 1, 1, 1, "</button>", 1);
5992
- _html(`<div${_attr_class(["_v", "_di"])}></div>`);
5995
+ _html(`<div${_attr_class(["_v", "_dt"])}></div>`);
5993
5996
  _if(() => {}, $scope6_id, "c", 1, 1, 1, 0, 1);
5994
- _html(`<a href=/settings${_attr_class([iconBtn$1, { ["_c2"]: view === "settings" }])} title=Settings${view === "settings" ? " aria-current=page" : ""}>`);
5997
+ _html(`<a href=/settings${_attr_class([iconBtn$1, { ["_dc"]: view === "settings" }])} title=Settings${view === "settings" ? " aria-current=page" : ""}>`);
5995
5998
  icon_settings_default({ size: 15 });
5996
5999
  _if(() => {
5997
6000
  if (input.setupReady === false) {
5998
6001
  const $scope15_id = _scope_id();
5999
- _html(`<span${_attr_class(["_w", "_c4"])} title="Machine setup incomplete"></span>`);
6002
+ _html(`<span${_attr_class(["_w", "_de"])} title="Machine setup incomplete"></span>`);
6000
6003
  $si__input_setupReady && writeScope($scope15_id, {});
6001
6004
  return 0;
6002
6005
  }
6003
6006
  }, $scope6_id, "f", $sg__input_setupReady, $sg__input_setupReady, 1, 0, 1);
6004
- _html(`</a>${_el_resume($scope6_id, "d")}<a href=/new${_attr_class([iconBtn$1, { ["_c2"]: view === "new" }])} title="New workspace"${view === "new" ? " aria-current=page" : ""}>`);
6007
+ _html(`</a>${_el_resume($scope6_id, "d")}<a href=/new${_attr_class([iconBtn$1, { ["_dc"]: view === "new" }])} title="New workspace"${view === "new" ? " aria-current=page" : ""}>`);
6005
6008
  icon_folder_plus_default({ size: 16 });
6006
6009
  _html(`</a>${_el_resume($scope6_id, "g")}`);
6007
- _script($scope6_id, "u15");
6010
+ _script($scope6_id, "v15");
6008
6011
  writeScope($scope6_id, {});
6009
6012
  return 1;
6010
6013
  }
6011
6014
  }, $scope0_id, "e", 1, 1, 1, "</div>");
6012
6015
  _html(`</aside>${_el_resume($scope0_id, "a")}`);
6013
- _script($scope0_id, "u16");
6014
- _script($scope0_id, "u17");
6016
+ _script($scope0_id, "v16");
6017
+ _script($scope0_id, "v17");
6015
6018
  writeScope($scope0_id, {
6016
6019
  i: _serialize_if($scope0_reason, 4) && input.tab,
6017
6020
  j: _serialize_if($scope0_reason, 3) && input.tabChange,
@@ -6063,10 +6066,10 @@ var side_nav_default = _template("u", (input) => {
6063
6066
  });
6064
6067
  var iconBtn = "_X _g";
6065
6068
  var sectionCount = "_br _F _G";
6066
- var content = "_dk _bh";
6067
- var pageMeta = "_dl _bm";
6068
- var pathMeta = "_do _u";
6069
- var dangerHint = "_du _P";
6069
+ var content = "_c2 _bh";
6070
+ var pageMeta = "_c3 _bm";
6071
+ var pathMeta = "_c6 _u";
6072
+ var dangerHint = "_db _P";
6070
6073
  //#endregion
6071
6074
  //#region src/tags/manage-workspace.marko
6072
6075
  var api$2;
@@ -6177,7 +6180,7 @@ var manage_workspace_default = _template("l", (input) => {
6177
6180
  meta: attrTag({ content: _content_resume("l11", () => {
6178
6181
  _scope_reason();
6179
6182
  const $scope8_id = _scope_id();
6180
- _html(`<span${_attr_class(pageMeta)}${_attr("title", ws.display_path || ws.path)}><span${_attr_class("_dm")}>${_escape(ws.name)}${_el_resume($scope8_id, "c")}</span>`);
6183
+ _html(`<span${_attr_class(pageMeta)}${_attr("title", ws.display_path || ws.path)}><span${_attr_class("_c4")}>${_escape(ws.name)}${_el_resume($scope8_id, "c")}</span>`);
6181
6184
  _if(() => {
6182
6185
  if (ws.status !== "active") {
6183
6186
  const $scope11_id = _scope_id();
@@ -6186,7 +6189,7 @@ var manage_workspace_default = _template("l", (input) => {
6186
6189
  return 0;
6187
6190
  }
6188
6191
  }, $scope8_id, "d", 1, 1, 1, 0, 1);
6189
- _html(`<span${_attr_class("_dn")} aria-hidden=true>·</span><span${_attr_class(pathMeta)}>${_escape(ws.display_path || ws.path)}${_el_resume($scope8_id, "g")}</span></span>${_el_resume($scope8_id, "a")}`);
6192
+ _html(`<span${_attr_class("_c5")} aria-hidden=true>·</span><span${_attr_class(pathMeta)}>${_escape(ws.display_path || ws.path)}${_el_resume($scope8_id, "g")}</span></span>${_el_resume($scope8_id, "a")}`);
6190
6193
  _subscribe($ws_status__closures, _subscribe($ws_name__closures, _subscribe($ws_path__closures, _subscribe($ws_display_path__closures, writeScope($scope8_id, { _: _scope_with_id($scope0_id) })))));
6191
6194
  _resume_branch($scope8_id);
6192
6195
  }, $scope0_id) })
@@ -6229,7 +6232,7 @@ var manage_workspace_default = _template("l", (input) => {
6229
6232
  _html(`</button>${_el_resume($scope0_id, "m")}</div><ul${_attr_class("_bs")}>`);
6230
6233
  _for_of(ws.repos, (row) => {
6231
6234
  const $scope1_id = _scope_id();
6232
- _html(`<li${_attr_class("_bu")}><div${_attr_class("_bv")}><span${_attr_class(["_bw", "_u"])}>${_escape(row.worktree)}${_el_resume($scope1_id, "d")}/</span><span${_attr_class("_bx")}><a${_attr_class(["_by", "_dq"])}${_attr("href", repoWebUrl$1(row.full_name))} target=_blank rel=noopener${_attr("title", `Open ${row.full_name} on GitHub`)}>${_escape(repoLabel(row.full_name))}${_el_resume($scope1_id, "g")}</a>${_el_resume($scope1_id, "f")}`);
6235
+ _html(`<li${_attr_class("_bu")}><div${_attr_class("_bv")}><span${_attr_class(["_bw", "_u"])}>${_escape(row.worktree)}${_el_resume($scope1_id, "d")}/</span><span${_attr_class("_bx")}><a${_attr_class(["_by", "_c8"])}${_attr("href", repoWebUrl$1(row.full_name))} target=_blank rel=noopener${_attr("title", `Open ${row.full_name} on GitHub`)}>${_escape(repoLabel(row.full_name))}${_el_resume($scope1_id, "g")}</a>${_el_resume($scope1_id, "f")}`);
6233
6236
  _if(() => {
6234
6237
  if (row.base_branch !== row.default_branch) {
6235
6238
  const $scope12_id = _scope_id();
@@ -6293,7 +6296,7 @@ var manage_workspace_default = _template("l", (input) => {
6293
6296
  return 0;
6294
6297
  }
6295
6298
  }, $scope0_id, "r", 1, 1, 1, 0, 1);
6296
- _html(`<div${_attr_class("_dp")}>`);
6299
+ _html(`<div${_attr_class("_c7")}>`);
6297
6300
  const $childScope3 = _peek_scope_id();
6298
6301
  let refreshCatalog = repo_picker_default({
6299
6302
  exclude: inWorkspace,
@@ -6323,7 +6326,7 @@ var manage_workspace_default = _template("l", (input) => {
6323
6326
  _html(`<span${_attr_class("_bx")}>`);
6324
6327
  _for_of(p.ports, (port) => {
6325
6328
  const $scope19_id = _scope_id();
6326
- _html(`<button${_attr_class(["_p", "_dr"])}${_attr("title", `Open http://${typeof location === "undefined" ? "localhost" : location.hostname}:${port}`)}>:<!>${_escape(port)}${_el_resume($scope19_id, "b")}</button>${_el_resume($scope19_id, "a")}`);
6329
+ _html(`<button${_attr_class(["_p", "_c9"])}${_attr("title", `Open http://${typeof location === "undefined" ? "localhost" : location.hostname}:${port}`)}>:<!>${_escape(port)}${_el_resume($scope19_id, "b")}</button>${_el_resume($scope19_id, "a")}`);
6327
6330
  _script($scope19_id, "l15");
6328
6331
  writeScope($scope19_id, { d: port });
6329
6332
  }, (x) => String(x), $scope18_id, "a", 1, 1, 1, "</span>", 1);
@@ -6345,7 +6348,7 @@ var manage_workspace_default = _template("l", (input) => {
6345
6348
  return 0;
6346
6349
  }
6347
6350
  }, $scope0_id, "v", 1, 1, 1, 0, 1);
6348
- _html(`<section${_attr_class(["_bp", "_ds"])}><div${_attr_class("_bq")}><h2${_attr_class("_bE")}>Workspace</h2></div><div${_attr_class("_dt")}>`);
6351
+ _html(`<section${_attr_class(["_bp", "_c_"])}><div${_attr_class("_bq")}><h2${_attr_class("_bE")}>Workspace</h2></div><div${_attr_class("_da")}>`);
6349
6352
  _if(() => {
6350
6353
  if (ws.status === "active") {
6351
6354
  const $scope4_id = _scope_id();
@@ -6412,7 +6415,7 @@ var manage_workspace_default = _template("l", (input) => {
6412
6415
  });
6413
6416
  //#endregion
6414
6417
  //#region src/tags/term-find.marko
6415
- var term_find_default = _template("v", (input) => {
6418
+ var term_find_default = _template("w", (input) => {
6416
6419
  const $scope0_reason = _scope_reason();
6417
6420
  const $scope0_id = _scope_id();
6418
6421
  let open = input.open;
@@ -6429,37 +6432,37 @@ var term_find_default = _template("v", (input) => {
6429
6432
  if (!live.open) return;
6430
6433
  const search = input.onSearch;
6431
6434
  if (search) search(live.query, dir);
6432
- }, "v1", $scope0_id);
6435
+ }, "w1", $scope0_id);
6433
6436
  const close = _resume(() => {
6434
6437
  open = false;
6435
6438
  live.open = false;
6436
6439
  const clear = input.onClear;
6437
6440
  if (clear) clear();
6438
- }, "v2", $scope0_id);
6441
+ }, "w2", $scope0_id);
6439
6442
  const focusInput = _resume(() => {
6440
6443
  const el = ((findEl) => findEl())(_el_read_error);
6441
6444
  if (!el) return;
6442
6445
  el.focus();
6443
6446
  if (document.activeElement !== el) setTimeout(() => el.focus(), 0);
6444
- }, "v3", $scope0_id);
6447
+ }, "w3", $scope0_id);
6445
6448
  const hasQuery = !!query.trim();
6446
6449
  const canStep = hasQuery && open;
6447
6450
  const keybar = input.placement === "keybar";
6448
6451
  _html(`<div${_attr_class([
6449
- "_e7",
6450
- keybar ? "_e9" : "_e8",
6451
- !open && "_fa"
6452
- ])} aria-hidden=${open ? "false" : "true"}><div${_attr_class(["_e2", keybar ? "_e_" : "_e4"])}><input${_attr_input_value($scope0_id, "c", query, _resume(function(v) {
6452
+ "_eN",
6453
+ keybar ? "_eP" : "_eO",
6454
+ !open && "_eR"
6455
+ ])} aria-hidden=${open ? "false" : "true"}><div${_attr_class(["_eI", keybar ? "_eQ" : "_eK"])}><input${_attr_input_value($scope0_id, "c", query, _resume(function(v) {
6453
6456
  if (!open) return;
6454
6457
  query = v;
6455
6458
  live.query = v;
6456
6459
  run(0);
6457
- }, "v0", $scope0_id))}${_attr_class([findInput, keybar && "_fb"])} type=search enterkeyhint=search autocomplete=off tabindex=${open ? "0" : "-1"} placeholder="Find in terminal" aria-label="Find in terminal">${_el_resume($scope0_id, "c")}<button type=button${_attr_class([findIconBtn, keybar && "_fc"])} title="Previous match"${_attr("disabled", !canStep)} tabindex=${open ? "0" : "-1"}>↑</button>${_el_resume($scope0_id, "d")}<button type=button${_attr_class([findIconBtn, keybar && "_fc"])} title="Next match"${_attr("disabled", !canStep)} tabindex=${open ? "0" : "-1"}>↓</button>${_el_resume($scope0_id, "e")}<button type=button${_attr_class([findIconBtn, keybar && "_fc"])} title="Close find" tabindex=${open ? "0" : "-1"}>`);
6460
+ }, "w0", $scope0_id))}${_attr_class([findInput, keybar && "_eS"])} type=search enterkeyhint=search autocomplete=off tabindex=${open ? "0" : "-1"} placeholder="Find in terminal" aria-label="Find in terminal">${_el_resume($scope0_id, "c")}<button type=button${_attr_class([findIconBtn, keybar && "_eT"])} title="Previous match"${_attr("disabled", !canStep)} tabindex=${open ? "0" : "-1"}>↑</button>${_el_resume($scope0_id, "d")}<button type=button${_attr_class([findIconBtn, keybar && "_eT"])} title="Next match"${_attr("disabled", !canStep)} tabindex=${open ? "0" : "-1"}>↓</button>${_el_resume($scope0_id, "e")}<button type=button${_attr_class([findIconBtn, keybar && "_eT"])} title="Close find" tabindex=${open ? "0" : "-1"}>`);
6458
6461
  icon_xmark_default({ size: 14 });
6459
6462
  _html(`</button>${_el_resume($scope0_id, "f")}</div>${_el_resume($scope0_id, "b", _serialize_guard($scope0_reason, 2))}</div>${_el_resume($scope0_id, "a")}`);
6460
- _script($scope0_id, "v4");
6461
- _script($scope0_id, "v5");
6462
- _script($scope0_id, "v6");
6463
+ _script($scope0_id, "w4");
6464
+ _script($scope0_id, "w5");
6465
+ _script($scope0_id, "w6");
6463
6466
  writeScope($scope0_id, {
6464
6467
  j: _serialize_if($scope0_reason, 1) && input.open,
6465
6468
  k: _serialize_if($scope0_reason, 0) && input.openChange,
@@ -6482,7 +6485,7 @@ var term_find_default = _template("v", (input) => {
6482
6485
  });
6483
6486
  _resume_branch($scope0_id);
6484
6487
  });
6485
- _template("U", (input) => {
6488
+ _template("V", (input) => {
6486
6489
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
6487
6490
  const $scope0_id = _scope_id();
6488
6491
  _set_serialize_reason({
@@ -6497,7 +6500,7 @@ _template("U", (input) => {
6497
6500
  });
6498
6501
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
6499
6502
  });
6500
- _template("H", (input) => {
6503
+ _template("I", (input) => {
6501
6504
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
6502
6505
  const $scope0_id = _scope_id();
6503
6506
  _set_serialize_reason({
@@ -6512,7 +6515,7 @@ _template("H", (input) => {
6512
6515
  });
6513
6516
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
6514
6517
  });
6515
- _template("L", (input) => {
6518
+ _template("M", (input) => {
6516
6519
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
6517
6520
  const $scope0_id = _scope_id();
6518
6521
  _set_serialize_reason({
@@ -6527,7 +6530,7 @@ _template("L", (input) => {
6527
6530
  });
6528
6531
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
6529
6532
  });
6530
- _template("F", (input) => {
6533
+ _template("G", (input) => {
6531
6534
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
6532
6535
  const $scope0_id = _scope_id();
6533
6536
  _set_serialize_reason({
@@ -6546,7 +6549,7 @@ _template("F", (input) => {
6546
6549
  //#region src/tags/term.marko
6547
6550
  var REPEAT_DELAY = 400;
6548
6551
  var REPEAT_EVERY = 55;
6549
- var term_default = _template("w", (input) => {
6552
+ var term_default = _template("x", (input) => {
6550
6553
  const $scope0_reason = _scope_reason();
6551
6554
  _serialize_guard($scope0_reason, 4);
6552
6555
  _serialize_guard($scope0_reason, 0);
@@ -6564,7 +6567,7 @@ var term_default = _template("w", (input) => {
6564
6567
  _serialize_guard($scope0_reason, 12);
6565
6568
  const $si__input_sessionState = _serialize_if($scope0_reason, 5), $si__input_onCloseSession = _serialize_if($scope0_reason, 6), $si__input_sessionId = _serialize_if($scope0_reason, 7), $si__input_workspaceName = _serialize_if($scope0_reason, 12);
6566
6569
  const $scope0_id = _scope_id();
6567
- _hoist($scope0_id, "w20");
6570
+ _hoist($scope0_id, "x20");
6568
6571
  const $findOpen__closures = /* @__PURE__ */ new Set();
6569
6572
  const $findTick__closures = /* @__PURE__ */ new Set();
6570
6573
  const $input_onCloseSession__closures = /* @__PURE__ */ new Set();
@@ -6586,7 +6589,7 @@ var term_default = _template("w", (input) => {
6586
6589
  let findOpen = false;
6587
6590
  const $openChange = _resume((_new_findOpen) => {
6588
6591
  findOpen = _new_findOpen;
6589
- }, "w1", $scope0_id);
6592
+ }, "x1", $scope0_id);
6590
6593
  let findTick = 0;
6591
6594
  const ioBox = { current: null };
6592
6595
  const searchBox = {
@@ -6594,7 +6597,7 @@ var term_default = _template("w", (input) => {
6594
6597
  query: "",
6595
6598
  refreshTimer: 0
6596
6599
  };
6597
- const findFocusRef = { focus: _resume(function() {}, "w2") };
6600
+ const findFocusRef = { focus: _resume(function() {}, "x2") };
6598
6601
  const scheduleFindRefresh = _resume(() => {
6599
6602
  if (!searchBox.query.trim() || !searchBox.overlay) return;
6600
6603
  if (searchBox.refreshTimer) clearTimeout(searchBox.refreshTimer);
@@ -6602,7 +6605,7 @@ var term_default = _template("w", (input) => {
6602
6605
  searchBox.refreshTimer = 0;
6603
6606
  searchBox.overlay?.refresh();
6604
6607
  }, 32);
6605
- }, "w3", $scope0_id);
6608
+ }, "x3", $scope0_id);
6606
6609
  const runFind = _resume((query, dir) => {
6607
6610
  const overlay = searchBox.overlay;
6608
6611
  if (!overlay) return;
@@ -6616,7 +6619,7 @@ var term_default = _template("w", (input) => {
6616
6619
  return;
6617
6620
  }
6618
6621
  overlay.search(query, dir);
6619
- }, "w4", $scope0_id);
6622
+ }, "x4", $scope0_id);
6620
6623
  const clearFind = _resume(() => {
6621
6624
  if (searchBox.refreshTimer) {
6622
6625
  clearTimeout(searchBox.refreshTimer);
@@ -6624,7 +6627,7 @@ var term_default = _template("w", (input) => {
6624
6627
  }
6625
6628
  searchBox.query = "";
6626
6629
  searchBox.overlay?.clear();
6627
- }, "w5", $scope0_id);
6630
+ }, "x5", $scope0_id);
6628
6631
  const openFind = _resume(() => {
6629
6632
  if (kb) {
6630
6633
  kb = false;
@@ -6634,7 +6637,7 @@ var term_default = _template("w", (input) => {
6634
6637
  findOpen = true;
6635
6638
  findTick++;
6636
6639
  findFocusRef.focus();
6637
- }, "w6", $scope0_id);
6640
+ }, "x6", $scope0_id);
6638
6641
  const toggleFind = _resume(() => {
6639
6642
  if (findOpen) {
6640
6643
  findOpen = false;
@@ -6643,7 +6646,7 @@ var term_default = _template("w", (input) => {
6643
6646
  return;
6644
6647
  }
6645
6648
  openFind();
6646
- }, "w7", $scope0_id);
6649
+ }, "x7", $scope0_id);
6647
6650
  const onTermPage = input.mode == null || input.mode === "term";
6648
6651
  const canKeys = onTermPage || input.mode === "diff";
6649
6652
  const findLit = onTermPage ? findOpen : input.mode === "diff" && !!input.reviewFindOpen;
@@ -6654,7 +6657,7 @@ var term_default = _template("w", (input) => {
6654
6657
  return;
6655
6658
  }
6656
6659
  if (input.mode === "diff") input.onToggleReviewFind?.();
6657
- }, "w8", $scope0_id);
6660
+ }, "x8", $scope0_id);
6658
6661
  const thisAgent = activeAgent({
6659
6662
  agent: input.agent || "shell",
6660
6663
  state: input.sessionState
@@ -6666,7 +6669,7 @@ var term_default = _template("w", (input) => {
6666
6669
  copyFlashBox.timer = setTimeout(() => {
6667
6670
  copiedFlash = false;
6668
6671
  }, 1200);
6669
- }, "w9", $scope0_id);
6672
+ }, "x9", $scope0_id);
6670
6673
  const holdBox = { current: null };
6671
6674
  const startHold = _resume((seq) => {
6672
6675
  ((stopHold) => stopHold())(_hoist_read_error);
@@ -6676,7 +6679,7 @@ var term_default = _template("w", (input) => {
6676
6679
  state.repeat = setInterval(() => ioBox.current?.send(seq), REPEAT_EVERY);
6677
6680
  }, REPEAT_DELAY);
6678
6681
  holdBox.current = state;
6679
- }, "w10", $scope0_id);
6682
+ }, "x10", $scope0_id);
6680
6683
  const stopHold = _resume(() => {
6681
6684
  const hold = holdBox.current;
6682
6685
  if (hold) {
@@ -6684,7 +6687,7 @@ var term_default = _template("w", (input) => {
6684
6687
  clearInterval(hold.repeat);
6685
6688
  holdBox.current = null;
6686
6689
  }
6687
- }, "w11", $scope0_id);
6690
+ }, "x11", $scope0_id);
6688
6691
  const uploadAsset = _resume(async (file) => {
6689
6692
  if (!file) return;
6690
6693
  uploading = true;
@@ -6697,7 +6700,7 @@ var term_default = _template("w", (input) => {
6697
6700
  } finally {
6698
6701
  uploading = false;
6699
6702
  }
6700
- }, "w12", $scope0_id);
6703
+ }, "x12", $scope0_id);
6701
6704
  const handlePasted = _resume(async (clipboardData) => {
6702
6705
  const files = [...clipboardData?.files || []];
6703
6706
  for (const file of files) await uploadAsset(file);
@@ -6706,7 +6709,7 @@ var term_default = _template("w", (input) => {
6706
6709
  if (text) ioBox.current?.send(text);
6707
6710
  }
6708
6711
  trapOpen = false;
6709
- }, "w13", $scope0_id);
6712
+ }, "x13", $scope0_id);
6710
6713
  const pasteClipboard = _resume(async () => {
6711
6714
  if (!navigator.clipboard?.read) {
6712
6715
  trapOpen = true;
@@ -6726,7 +6729,7 @@ var term_default = _template("w", (input) => {
6726
6729
  } catch {
6727
6730
  trapOpen = true;
6728
6731
  }
6729
- }, "w14", $scope0_id);
6732
+ }, "x14", $scope0_id);
6730
6733
  _html(`<div${_attr("hidden", !onTermPage)}${_attr_class("_dv")}><div${_attr_class("_dw")}></div>${_el_resume($scope0_id, "b")}`);
6731
6734
  _if(() => {
6732
6735
  if (findOpen) {
@@ -6741,11 +6744,11 @@ var term_default = _template("w", (input) => {
6741
6744
  focusRef: findFocusRef,
6742
6745
  onSearch: _resume(function(q, dir) {
6743
6746
  runFind(q, dir);
6744
- }, "w15", $scope12_id),
6747
+ }, "x15", $scope12_id),
6745
6748
  onClear: _resume(function() {
6746
6749
  clearFind();
6747
6750
  ioBox.current?.setFindMode(false);
6748
- }, "w16", $scope12_id)
6751
+ }, "x16", $scope12_id)
6749
6752
  });
6750
6753
  writeScope($scope12_id, { a: _existing_scope($childScope) });
6751
6754
  return 0;
@@ -6772,17 +6775,17 @@ var term_default = _template("w", (input) => {
6772
6775
  if (trapOpen) {
6773
6776
  const $scope11_id = _scope_id();
6774
6777
  _html(`<div${_attr_class("_dD")}><div${_attr_class("_dE")}><p${_attr_class("_d7")}>Long-press the field below and choose Paste</p><input placeholder="Paste here…">${_el_resume($scope11_id, "d")}<button${_attr_class("_l")}>Cancel</button>${_el_resume($scope11_id, "e")}</div>${_el_resume($scope11_id, "b")}</div>${_el_resume($scope11_id, "a")}`);
6775
- _script($scope11_id, "w24");
6776
- _script($scope11_id, "w25");
6778
+ _script($scope11_id, "x24");
6779
+ _script($scope11_id, "x25");
6777
6780
  writeScope($scope11_id, {});
6778
6781
  return 0;
6779
6782
  }
6780
6783
  }, $scope0_id, "g", 1, 1, 1, 0, 1);
6781
6784
  _html(`</div>${_el_resume($scope0_id, "a")}`);
6782
6785
  _if(() => {}, $scope0_id, "h", 1, 1, 1, 0, 1);
6783
- _script($scope0_id, "w40");
6784
- _script($scope0_id, "w41");
6785
- _script($scope0_id, "w42");
6786
+ _script($scope0_id, "x40");
6787
+ _script($scope0_id, "x41");
6788
+ _script($scope0_id, "x42");
6786
6789
  writeScope($scope0_id, {
6787
6790
  k: input.mode,
6788
6791
  l: input.reviewFindOpen,
@@ -6849,7 +6852,7 @@ var term_default = _template("w", (input) => {
6849
6852
  //#region src/tags/work-view.marko
6850
6853
  var api$1;
6851
6854
  var isTransientApiError$1;
6852
- var work_view_default = _template("z", (input) => {
6855
+ var work_view_default = _template("A", (input) => {
6853
6856
  const $scope0_reason = _scope_reason(), $sg__input_workspace = _serialize_guard($scope0_reason, 4), $sg__input_agents = _serialize_guard($scope0_reason, 10), $sg__input_allWorkspaces = _serialize_guard($scope0_reason, 9), $si__input_workspace = _serialize_if($scope0_reason, 4), $si__input_active = _serialize_if($scope0_reason, 6), $si__input_agents = _serialize_if($scope0_reason, 10), $si__input_preferred = _serialize_if($scope0_reason, 7);
6854
6857
  const $scope0_id = _scope_id();
6855
6858
  const $error__closures = /* @__PURE__ */ new Set();
@@ -6874,43 +6877,49 @@ var work_view_default = _template("z", (input) => {
6874
6877
  let DiffView = null;
6875
6878
  const loadDiffView = _resume(() => {
6876
6879
  if (DiffView) return;
6877
- import("./_prItJCwP.js").then((m) => {
6880
+ import("./_D78MdEM0.js").then((m) => {
6878
6881
  DiffView = m.default;
6879
6882
  });
6880
- }, "z4", $scope0_id);
6883
+ }, "A6", $scope0_id);
6881
6884
  let manageMounted = input.initialView === "manage";
6882
6885
  let settingsMounted = input.initialView === "settings";
6883
6886
  let newMounted = input.initialView === "new";
6884
6887
  let reviewFindOpen = false;
6885
6888
  let reviewFindTick = 0;
6886
- const reviewFindFocus = { focus: _resume(function() {}, "z0") };
6889
+ const reviewFindFocus = { focus: _resume(function() {}, "A0") };
6887
6890
  let focusPr = input.initialPr ?? "";
6888
6891
  let focusNonce = 0;
6892
+ let reviewScope = input.initialScope ?? null;
6893
+ let reviewFile = input.initialFile ?? null;
6894
+ let focusFile = input.initialFile ?? "";
6895
+ let focusFileNonce = 0;
6889
6896
  let error = null;
6890
6897
  let spawning = false;
6891
6898
  const ws = input.workspace;
6892
- const openDiff = _resume((pr) => {
6899
+ const openDiff = _resume((pr, file) => {
6893
6900
  focusPr = pr || "";
6894
6901
  if (pr) focusNonce++;
6902
+ focusFile = file || "";
6903
+ if (file) focusFileNonce++;
6895
6904
  loadDiffView();
6896
6905
  diffMounted = true;
6897
6906
  view = "diff";
6898
- }, "z5", $scope0_id);
6907
+ }, "A7", $scope0_id);
6899
6908
  const openManage = _resume(() => {
6900
6909
  manageMounted = true;
6901
6910
  view = "manage";
6902
- }, "z6", $scope0_id);
6911
+ }, "A8", $scope0_id);
6903
6912
  const openSettings = _resume(() => {
6904
6913
  settingsMounted = true;
6905
6914
  view = "settings";
6906
- }, "z7", $scope0_id);
6915
+ }, "A9", $scope0_id);
6907
6916
  const toggleNav = _resume(() => {
6908
6917
  view = view === "nav" ? "term" : "nav";
6909
- }, "z8", $scope0_id);
6918
+ }, "A10", $scope0_id);
6910
6919
  const toggleDiff = _resume(() => {
6911
6920
  if (view === "diff") view = "term";
6912
6921
  else openDiff();
6913
- }, "z9", $scope0_id);
6922
+ }, "A11", $scope0_id);
6914
6923
  const shownSessions = sessions ?? input.allStatus?.[ws.id]?.sessions ?? null;
6915
6924
  const curTab = (() => {
6916
6925
  if (tab && shownSessions?.some((s) => s.id === tab)) return tab;
@@ -6927,13 +6936,15 @@ var work_view_default = _template("z", (input) => {
6927
6936
  reviewFindOpen = true;
6928
6937
  reviewFindTick++;
6929
6938
  reviewFindFocus.focus();
6930
- }, "z10", $scope0_id);
6939
+ }, "A12", $scope0_id);
6931
6940
  const exitCreate = _resume(() => {
6932
6941
  if (view === "new") view = "term";
6933
- }, "z11", $scope0_id);
6942
+ }, "A13", $scope0_id);
6934
6943
  const applyView = _resume((v) => {
6935
- if (v.view === "diff") openDiff(v.pr);
6936
- else if (v.view === "manage") openManage();
6944
+ if (v.view === "diff") {
6945
+ if (v.scope !== void 0) reviewScope = v.scope ?? null;
6946
+ openDiff(v.pr, v.file);
6947
+ } else if (v.view === "manage") openManage();
6937
6948
  else if (v.view === "settings") openSettings();
6938
6949
  else if (v.view === "new") input.onNew?.();
6939
6950
  else {
@@ -6943,7 +6954,7 @@ var work_view_default = _template("z", (input) => {
6943
6954
  }
6944
6955
  view = "term";
6945
6956
  }
6946
- }, "z12", $scope0_id);
6957
+ }, "A14", $scope0_id);
6947
6958
  const createSession = _resume(async (agent, select) => {
6948
6959
  spawning = true;
6949
6960
  try {
@@ -6964,7 +6975,7 @@ var work_view_default = _template("z", (input) => {
6964
6975
  } finally {
6965
6976
  spawning = false;
6966
6977
  }
6967
- }, "z13", $scope0_id);
6978
+ }, "A15", $scope0_id);
6968
6979
  const loadMem = {
6969
6980
  wanted: false,
6970
6981
  run: void 0
@@ -6990,11 +7001,11 @@ var work_view_default = _template("z", (input) => {
6990
7001
  if (isTransientApiError$1(err)) return;
6991
7002
  error = String(err.message || err);
6992
7003
  }
6993
- }, "z14", $scope0_id);
7004
+ }, "A16", $scope0_id);
6994
7005
  const loadSessions = _resume((autoCreate) => {
6995
7006
  if (autoCreate) loadMem.wanted = true;
6996
7007
  return (loadMem.run ??= coalesce(loadBody))();
6997
- }, "z15", $scope0_id);
7008
+ }, "A17", $scope0_id);
6998
7009
  const closeSession = _resume(async (id) => {
6999
7010
  try {
7000
7011
  sessions = (sessions || []).filter((s) => s.id !== id);
@@ -7004,7 +7015,7 @@ var work_view_default = _template("z", (input) => {
7004
7015
  error = `Close session failed: ${String(err.message || err)}`;
7005
7016
  loadSessions(false);
7006
7017
  }
7007
- }, "z16", $scope0_id);
7018
+ }, "A18", $scope0_id);
7008
7019
  const renameSession = _resume(async (id, title) => {
7009
7020
  title = title.trim();
7010
7021
  if (!title) return;
@@ -7017,7 +7028,7 @@ var work_view_default = _template("z", (input) => {
7017
7028
  headers: { "content-type": "application/json" },
7018
7029
  body: JSON.stringify({ title })
7019
7030
  });
7020
- }, "z17", $scope0_id);
7031
+ }, "A19", $scope0_id);
7021
7032
  const newSession = _resume(async (wsId, agent) => {
7022
7033
  if (wsId === ws.id) {
7023
7034
  const session = await createSession(agent, true);
@@ -7035,7 +7046,7 @@ var work_view_default = _template("z", (input) => {
7035
7046
  } catch (err) {
7036
7047
  error = String(err.message || err);
7037
7048
  }
7038
- }, "z18", $scope0_id);
7049
+ }, "A20", $scope0_id);
7039
7050
  const onKey = _resume((e) => {
7040
7051
  const target = e.target;
7041
7052
  const typing = !!target && !target.closest(".xterm") && (target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.tagName === "SELECT" || target.isContentEditable);
@@ -7049,7 +7060,7 @@ var work_view_default = _template("z", (input) => {
7049
7060
  e.preventDefault();
7050
7061
  toggleDiff();
7051
7062
  }
7052
- }, "z19", $scope0_id);
7063
+ }, "A21", $scope0_id);
7053
7064
  _html(`<div${_attr_class(["_bW", { ["_bV"]: view === "nav" }])}><div${_attr_class("_bX")}>`);
7054
7065
  _set_serialize_reason({
7055
7066
  0: _serialize_guard($scope0_reason, 0),
@@ -7076,35 +7087,35 @@ var work_view_default = _template("z", (input) => {
7076
7087
  tab: curTab,
7077
7088
  tabChange: _resume(function(id) {
7078
7089
  tab = id;
7079
- }, "z20", $scope0_id),
7090
+ }, "A22", $scope0_id),
7080
7091
  view,
7081
7092
  viewChange: _resume((_new_view) => {
7082
7093
  view = _new_view;
7083
- }, "z21", $scope0_id),
7094
+ }, "A23", $scope0_id),
7084
7095
  allWorkspaces: input.allWorkspaces,
7085
7096
  allStatus: input.allStatus,
7086
7097
  agents: input.agents,
7087
7098
  onError: _resume(function(message) {
7088
7099
  error = message;
7089
- }, "z22", $scope0_id),
7100
+ }, "A24", $scope0_id),
7090
7101
  onSelectWorkspace: _resume(function(id) {
7091
7102
  exitCreate();
7092
7103
  input.onSelectWorkspace?.(id);
7093
- }, "z23", $scope0_id),
7104
+ }, "A25", $scope0_id),
7094
7105
  onNewSession: _resume(function(wsId, agent) {
7095
7106
  exitCreate();
7096
7107
  newSession(wsId, agent);
7097
- }, "z24", $scope0_id),
7108
+ }, "A26", $scope0_id),
7098
7109
  onCloseSession: _resume(function(id) {
7099
7110
  closeSession(id);
7100
- }, "z25", $scope0_id),
7111
+ }, "A27", $scope0_id),
7101
7112
  onRenameSession: _resume(function(s, title) {
7102
7113
  renameSession(s.id, title);
7103
- }, "z26", $scope0_id),
7114
+ }, "A28", $scope0_id),
7104
7115
  onReviewOpened: _resume(function(pr) {
7105
7116
  exitCreate();
7106
7117
  openDiff(pr);
7107
- }, "z27", $scope0_id)
7118
+ }, "A29", $scope0_id)
7108
7119
  });
7109
7120
  _html(`</div><div${_attr_class("_bY")}>`);
7110
7121
  _if(() => {
@@ -7113,8 +7124,8 @@ var work_view_default = _template("z", (input) => {
7113
7124
  toast_default({
7114
7125
  onDismiss: _resume(function() {
7115
7126
  error = null;
7116
- }, "z28", $scope8_id),
7117
- content: _content_resume("z45", () => {
7127
+ }, "A30", $scope8_id),
7128
+ content: _content_resume("A47", () => {
7118
7129
  _scope_reason();
7119
7130
  const $scope9_id = _scope_id();
7120
7131
  _html(`${_escape(error)}${_el_resume($scope9_id, "a")}`);
@@ -7139,19 +7150,28 @@ var work_view_default = _template("z", (input) => {
7139
7150
  active: input.active && view === "diff",
7140
7151
  focusPr,
7141
7152
  focusNonce,
7153
+ focusFile,
7154
+ focusFileNonce,
7155
+ scope: reviewScope,
7156
+ onScopeChange: _resume(function(s) {
7157
+ reviewScope = s === "committed" ? null : s;
7158
+ }, "A1", $scope1_id),
7159
+ onFileChange: _resume(function(f) {
7160
+ reviewFile = f;
7161
+ }, "A2", $scope1_id),
7142
7162
  findOpen: reviewFindOpen,
7143
7163
  findOpenChange: _resume((_new_reviewFindOpen) => {
7144
7164
  reviewFindOpen = _new_reviewFindOpen;
7145
- }, "z1", $scope1_id),
7165
+ }, "A3", $scope1_id),
7146
7166
  findTick: reviewFindTick,
7147
7167
  findFocusRef: reviewFindFocus,
7148
7168
  onSent: _resume(function(sessionId) {
7149
7169
  tab = sessionId;
7150
7170
  view = "term";
7151
- }, "z2", $scope1_id),
7171
+ }, "A4", $scope1_id),
7152
7172
  onExit: _resume(function() {
7153
7173
  view = "term";
7154
- }, "z3", $scope1_id)
7174
+ }, "A5", $scope1_id)
7155
7175
  });
7156
7176
  _show_end($scope1_id, "d", $show);
7157
7177
  writeScope($scope1_id, {});
@@ -7169,13 +7189,13 @@ var work_view_default = _template("z", (input) => {
7169
7189
  workspace: ws,
7170
7190
  workspaceChange: _resume(function(next) {
7171
7191
  input.onWorkspaceChange?.(next);
7172
- }, "z29", $scope2_id),
7192
+ }, "A31", $scope2_id),
7173
7193
  onExit: _resume(function() {
7174
7194
  view = "term";
7175
- }, "z30", $scope2_id),
7195
+ }, "A32", $scope2_id),
7176
7196
  onDeleted: _resume(function() {
7177
7197
  input.onWorkspaceDeleted?.(ws.id);
7178
- }, "z31", $scope2_id)
7198
+ }, "A33", $scope2_id)
7179
7199
  });
7180
7200
  _show_end($scope2_id, "d", $show2);
7181
7201
  writeScope($scope2_id, { b: _serialize_if($scope0_reason, 2) && _existing_scope($childScope2) });
@@ -7200,17 +7220,17 @@ var work_view_default = _template("z", (input) => {
7200
7220
  backHref: `/w/${ws.id}`,
7201
7221
  onExit: _resume(function() {
7202
7222
  view = "term";
7203
- }, "z32", $scope3_id),
7223
+ }, "A34", $scope3_id),
7204
7224
  setup: input.setup,
7205
7225
  setupChange: _resume(function(s) {
7206
7226
  input.onSetupChange?.(s);
7207
- }, "z33", $scope3_id),
7227
+ }, "A35", $scope3_id),
7208
7228
  preferredChange: _resume(function(agent) {
7209
7229
  input.onPreferredChange?.(agent);
7210
- }, "z34", $scope3_id),
7230
+ }, "A36", $scope3_id),
7211
7231
  agentsChange: _resume(function(agents) {
7212
7232
  input.onAgentsChange?.(agents);
7213
- }, "z35", $scope3_id)
7233
+ }, "A37", $scope3_id)
7214
7234
  });
7215
7235
  _show_end($scope3_id, "d", $show3);
7216
7236
  writeScope($scope3_id, { b: _serialize_if($scope0_reason, 3) && _existing_scope($childScope3) });
@@ -7233,15 +7253,15 @@ var work_view_default = _template("z", (input) => {
7233
7253
  backHref: `/w/${ws.id}`,
7234
7254
  onExit: _resume(function() {
7235
7255
  exitCreate();
7236
- }, "z36", $scope4_id),
7256
+ }, "A38", $scope4_id),
7237
7257
  onCreate: _resume(function(ws) {
7238
7258
  input.onCreated?.(ws);
7239
- }, "z37", $scope4_id),
7259
+ }, "A39", $scope4_id),
7240
7260
  onRestore: _resume(function(next) {
7241
7261
  input.onWorkspaceChange?.(next);
7242
7262
  input.onSelectWorkspace?.(next.id);
7243
7263
  exitCreate();
7244
- }, "z38", $scope4_id)
7264
+ }, "A40", $scope4_id)
7245
7265
  });
7246
7266
  _show_end($scope4_id, "d", $show4);
7247
7267
  writeScope($scope4_id, { b: _existing_scope($childScope4) });
@@ -7282,26 +7302,26 @@ var work_view_default = _template("z", (input) => {
7282
7302
  onNewSession: _resume(function(agent) {
7283
7303
  view = "term";
7284
7304
  newSession(ws.id, agent);
7285
- }, "z39", $scope6_id),
7305
+ }, "A41", $scope6_id),
7286
7306
  onOpenTab: _resume(function(id) {
7287
7307
  tab = id;
7288
7308
  view = "term";
7289
- }, "z40", $scope6_id),
7309
+ }, "A42", $scope6_id),
7290
7310
  onCloseSession: _resume(function(id) {
7291
7311
  closeSession(id);
7292
- }, "z41", $scope6_id),
7312
+ }, "A43", $scope6_id),
7293
7313
  onRenameSession: _resume(function(id, title) {
7294
7314
  renameSession(id, title);
7295
- }, "z42", $scope6_id),
7315
+ }, "A44", $scope6_id),
7296
7316
  active: input.active && view === "term" && s.id === curTab,
7297
7317
  mode: view,
7298
7318
  onOpenNav: _resume(function() {
7299
7319
  toggleNav();
7300
- }, "z43", $scope6_id),
7320
+ }, "A45", $scope6_id),
7301
7321
  reviewFindOpen,
7302
7322
  onToggleReviewFind: _resume(function() {
7303
7323
  toggleReviewFind();
7304
- }, "z44", $scope6_id)
7324
+ }, "A46", $scope6_id)
7305
7325
  });
7306
7326
  _html(`</div>${_el_resume($scope6_id, "a")}`);
7307
7327
  _subscribe($newSession2__closures, _subscribe($renameSession2__closures, _subscribe($closeSession2__closures, _subscribe($toggleReviewFind2__closures, _subscribe($curTab__closures, _subscribe($shownSessions__closures, _subscribe($si__input_workspace && $ws_name__closures, _subscribe($si__input_workspace && $ws_id__closures, _subscribe($reviewFindOpen__closures, _subscribe($view__closures, _subscribe($si__input_agents && $input_agents__closures, _subscribe($si__input_active && $input_active__closures, writeScope($scope6_id, {
@@ -7313,7 +7333,7 @@ var work_view_default = _template("z", (input) => {
7313
7333
  if (!shownSessions.length && view === "term") {
7314
7334
  const $scope7_id = _scope_id();
7315
7335
  _html(`<div${_attr_class("_bB")}><span>No sessions in this workspace.</span><button${_attr_class(["_l", "_m"])}${_attr("disabled", spawning)}>${spawning ? "Starting…" : `Start ${_escape(`${input.preferred || "shell"}`)}`}${_el_resume($scope7_id, "c")}</button>${_el_resume($scope7_id, "b")}</div>`);
7316
- _script($scope7_id, "z46");
7336
+ _script($scope7_id, "A48");
7317
7337
  _subscribe($spawning__closures, _subscribe($si__input_preferred && $input_preferred__closures, writeScope($scope7_id, {})));
7318
7338
  return 0;
7319
7339
  }
@@ -7328,89 +7348,93 @@ var work_view_default = _template("z", (input) => {
7328
7348
  }
7329
7349
  }, $scope0_id, "j", 1, 1, 1, "</div>");
7330
7350
  _html(`</div></div>${_el_resume($scope0_id, "a")}`);
7331
- _script($scope0_id, "z47");
7332
- _script($scope0_id, "z48");
7333
- _script($scope0_id, "z49");
7334
- _script($scope0_id, "z50");
7335
- _script($scope0_id, "z51");
7336
- _script($scope0_id, "z52");
7337
- _script($scope0_id, "z53");
7338
- _script($scope0_id, "z54");
7339
- _script($scope0_id, "z55");
7351
+ _script($scope0_id, "A49");
7352
+ _script($scope0_id, "A50");
7353
+ _script($scope0_id, "A51");
7354
+ _script($scope0_id, "A52");
7355
+ _script($scope0_id, "A53");
7356
+ _script($scope0_id, "A54");
7357
+ _script($scope0_id, "A55");
7358
+ _script($scope0_id, "A56");
7359
+ _script($scope0_id, "A57");
7340
7360
  writeScope($scope0_id, {
7341
7361
  n: input.initialView,
7342
- q: input.allStatus,
7343
- r: input.active,
7344
- s: input.creating,
7345
- t: input.onExitCreate,
7346
- u: input.onNew,
7347
- v: input.onRouteChange,
7348
- w: input.preferred,
7349
- x: input.onSelectWorkspace,
7350
- y: input.setup,
7351
- z: input.allWorkspaces,
7352
- a0: input.agents,
7353
- a1: input.onWorkspaceChange,
7354
- a2: input.onWorkspaceDeleted,
7355
- a3: input.onSetupChange,
7356
- a4: input.onPreferredChange,
7357
- a5: input.onAgentsChange,
7358
- a6: input.onCreated,
7359
- a7: sessions,
7360
- a8: tab,
7361
- a9: view,
7362
- ab: diffMounted,
7363
- ac: DiffView,
7364
- ae: loadDiffView,
7365
- aj: reviewFindOpen,
7366
- al: reviewFindTick,
7367
- am: reviewFindFocus,
7368
- ao: focusPr,
7369
- ap: focusNonce,
7370
- ar: error,
7371
- as: spawning,
7372
- at: ws,
7373
- au: ws?.id,
7374
- ay: ws?.status,
7375
- az: ws?.branch,
7376
- b0: ws?.name,
7377
- b1: openDiff,
7378
- b3: openManage,
7379
- b5: openSettings,
7380
- b8: toggleNav,
7381
- b9: toggleDiff,
7382
- ba: shownSessions,
7383
- bc: shownSessions?.length,
7384
- bd: curTab,
7385
- bg: createGate.open,
7386
- bi: toggleReviewFind,
7387
- bj: exitCreate,
7388
- bn: applyView,
7389
- bp: createSession,
7390
- bs: loadMem.wanted,
7391
- bu: loadMem.run,
7392
- bv: loadBody,
7393
- bx: loadSessions,
7394
- c0: closeSession,
7395
- c1: renameSession,
7396
- c2: newSession,
7397
- c4: onKey,
7362
+ s: input.allStatus,
7363
+ t: input.active,
7364
+ u: input.creating,
7365
+ v: input.onExitCreate,
7366
+ w: input.onNew,
7367
+ x: input.onRouteChange,
7368
+ y: input.preferred,
7369
+ z: input.onSelectWorkspace,
7370
+ a0: input.setup,
7371
+ a1: input.allWorkspaces,
7372
+ a2: input.agents,
7373
+ a3: input.onWorkspaceChange,
7374
+ a4: input.onWorkspaceDeleted,
7375
+ a5: input.onSetupChange,
7376
+ a6: input.onPreferredChange,
7377
+ a7: input.onAgentsChange,
7378
+ a8: input.onCreated,
7379
+ a9: sessions,
7380
+ aa: tab,
7381
+ ab: view,
7382
+ ad: diffMounted,
7383
+ ae: DiffView,
7384
+ ag: loadDiffView,
7385
+ al: reviewFindOpen,
7386
+ an: reviewFindTick,
7387
+ ao: reviewFindFocus,
7388
+ aq: focusPr,
7389
+ ar: focusNonce,
7390
+ as: reviewScope,
7391
+ at: reviewFile,
7392
+ au: focusFile,
7393
+ av: focusFileNonce,
7394
+ ax: error,
7395
+ ay: spawning,
7396
+ az: ws,
7397
+ b0: ws?.id,
7398
+ b4: ws?.status,
7399
+ b5: ws?.branch,
7400
+ b6: ws?.name,
7401
+ b7: openDiff,
7402
+ b9: openManage,
7403
+ bb: openSettings,
7404
+ be: toggleNav,
7405
+ bf: toggleDiff,
7406
+ bg: shownSessions,
7407
+ bi: shownSessions?.length,
7408
+ bj: curTab,
7409
+ bm: createGate.open,
7410
+ bo: toggleReviewFind,
7411
+ bp: exitCreate,
7412
+ bt: applyView,
7413
+ bv: createSession,
7414
+ by: loadMem.wanted,
7415
+ c0: loadMem.run,
7416
+ c1: loadBody,
7417
+ c3: loadSessions,
7418
+ c6: closeSession,
7419
+ c7: renameSession,
7420
+ c8: newSession,
7421
+ ca: onKey,
7398
7422
  c: _existing_scope($childScope),
7399
- cp: $error__closures,
7400
- c6: $si__input_active && $input_active__closures,
7401
- cb: $si__input_agents && $input_agents__closures,
7402
- ci: $view__closures,
7403
- ck: $reviewFindOpen__closures,
7404
- cs: $si__input_workspace && $ws_id__closures,
7405
- cu: $si__input_workspace && $ws_name__closures,
7406
- cv: $shownSessions__closures,
7407
- cx: $curTab__closures,
7408
- cy: $toggleReviewFind2__closures,
7409
- d0: $closeSession2__closures,
7410
- d1: $renameSession2__closures,
7411
- d2: $newSession2__closures,
7412
- c7: $si__input_preferred && $input_preferred__closures,
7413
- cq: $spawning__closures
7423
+ cy: $error__closures,
7424
+ cc: $si__input_active && $input_active__closures,
7425
+ ch: $si__input_agents && $input_agents__closures,
7426
+ co: $view__closures,
7427
+ cq: $reviewFindOpen__closures,
7428
+ d1: $si__input_workspace && $ws_id__closures,
7429
+ d3: $si__input_workspace && $ws_name__closures,
7430
+ d4: $shownSessions__closures,
7431
+ d6: $curTab__closures,
7432
+ d7: $toggleReviewFind2__closures,
7433
+ d9: $closeSession2__closures,
7434
+ da: $renameSession2__closures,
7435
+ db: $newSession2__closures,
7436
+ cd: $si__input_preferred && $input_preferred__closures,
7437
+ cz: $spawning__closures
7414
7438
  });
7415
7439
  _resume_branch($scope0_id);
7416
7440
  });
@@ -7427,6 +7451,8 @@ var app_shell_default = _template("c", (input) => {
7427
7451
  const $initial_view__closures = /* @__PURE__ */ new Set();
7428
7452
  const $initial_sessionId__closures = /* @__PURE__ */ new Set();
7429
7453
  const $initial_pr__closures = /* @__PURE__ */ new Set();
7454
+ const $initial_scope__closures = /* @__PURE__ */ new Set();
7455
+ const $initial_file__closures = /* @__PURE__ */ new Set();
7430
7456
  const $workspaces__closures = /* @__PURE__ */ new Set();
7431
7457
  const $status__closures = /* @__PURE__ */ new Set();
7432
7458
  const $settings__closures = /* @__PURE__ */ new Set();
@@ -7632,13 +7658,17 @@ var app_shell_default = _template("c", (input) => {
7632
7658
  initialView: ws.id === initial.workspaceId || !initial.workspaceId ? initial.view : void 0,
7633
7659
  initialTab: ws.id === initial.workspaceId ? initial.sessionId ?? null : null,
7634
7660
  initialPr: ws.id === initial.workspaceId ? initial.pr ?? null : null,
7661
+ initialScope: ws.id === initial.workspaceId ? initial.scope ?? null : null,
7662
+ initialFile: ws.id === initial.workspaceId ? initial.file ?? null : null,
7635
7663
  onRouteChange: _resume(function(r) {
7636
7664
  if (ws.id !== selectedId) return;
7637
7665
  route = {
7638
7666
  workspaceId: ws.id,
7639
7667
  view: r.view,
7640
7668
  sessionId: r.sessionId,
7641
- pr: r.pr
7669
+ pr: r.pr,
7670
+ scope: r.scope,
7671
+ file: r.file
7642
7672
  };
7643
7673
  }, "c12", $scope2_id),
7644
7674
  onPreferredChange: _resume(function(agent) {
@@ -7677,7 +7707,7 @@ var app_shell_default = _template("c", (input) => {
7677
7707
  }, "c20", $scope2_id)
7678
7708
  });
7679
7709
  _show_end($scope2_id, "d", $show);
7680
- _subscribe($openWorkspace2__closures, _subscribe($applyWorkspaces2__closures, _subscribe($setup2__closures, _subscribe($creating__closures, _subscribe($selectedId__closures, _subscribe($settings__closures, _subscribe($status__closures, _subscribe($workspaces__closures, _subscribe($si__input_initial && $initial_pr__closures, _subscribe($si__input_initial && $initial_sessionId__closures, _subscribe($si__input_initial && $initial_view__closures, _subscribe($si__input_initial && $initial_workspaceId__closures, writeScope($scope2_id, { b: _existing_scope($childScope3) })))))))))))));
7710
+ _subscribe($openWorkspace2__closures, _subscribe($applyWorkspaces2__closures, _subscribe($setup2__closures, _subscribe($creating__closures, _subscribe($selectedId__closures, _subscribe($settings__closures, _subscribe($status__closures, _subscribe($workspaces__closures, _subscribe($si__input_initial && $initial_file__closures, _subscribe($si__input_initial && $initial_scope__closures, _subscribe($si__input_initial && $initial_pr__closures, _subscribe($si__input_initial && $initial_sessionId__closures, _subscribe($si__input_initial && $initial_view__closures, _subscribe($si__input_initial && $initial_workspaceId__closures, writeScope($scope2_id, { b: _existing_scope($childScope3) })))))))))))))));
7681
7711
  return 0;
7682
7712
  }
7683
7713
  }, $scope1_id, "a");
@@ -7697,41 +7727,45 @@ var app_shell_default = _template("c", (input) => {
7697
7727
  t: initial.view,
7698
7728
  u: initial.sessionId,
7699
7729
  v: initial.pr,
7700
- w: workspaces,
7701
- x: status,
7702
- y: settings,
7703
- z: $si__input_initial && last,
7704
- a0: $si__input_initial && bootActive,
7705
- a2: $si__input_initial && bootActive?.length,
7706
- a4: selectedId,
7707
- a5: openIds,
7708
- a8: creating,
7709
- a9: route,
7710
- ab: lastUrl.route,
7711
- ad: setup,
7712
- ae: wantSetup,
7713
- af: showSetup,
7714
- ah: error,
7715
- ai: applyWorkspaces,
7716
- aj: load,
7717
- ak: patchStatusSessions,
7718
- am: statusMem.fresh,
7719
- an: statusMem.run,
7720
- ap: loadStatus,
7721
- aq: openWorkspace,
7722
- b2: $error__closures,
7723
- as: $si__input_initial && $initial_workspaceId__closures,
7724
- at: $si__input_initial && $initial_view__closures,
7725
- au: $si__input_initial && $initial_sessionId__closures,
7726
- av: $si__input_initial && $initial_pr__closures,
7727
- aw: $workspaces__closures,
7728
- ax: $status__closures,
7729
- ay: $settings__closures,
7730
- az: $selectedId__closures,
7731
- b0: $creating__closures,
7732
- b1: $setup2__closures,
7733
- b3: $applyWorkspaces2__closures,
7734
- b4: $openWorkspace2__closures
7730
+ w: initial.scope,
7731
+ x: initial.file,
7732
+ y: workspaces,
7733
+ z: status,
7734
+ a0: settings,
7735
+ a1: $si__input_initial && last,
7736
+ a2: $si__input_initial && bootActive,
7737
+ a4: $si__input_initial && bootActive?.length,
7738
+ a6: selectedId,
7739
+ a7: openIds,
7740
+ aa: creating,
7741
+ ab: route,
7742
+ ad: lastUrl.route,
7743
+ af: setup,
7744
+ ag: wantSetup,
7745
+ ah: showSetup,
7746
+ aj: error,
7747
+ ak: applyWorkspaces,
7748
+ al: load,
7749
+ am: patchStatusSessions,
7750
+ ao: statusMem.fresh,
7751
+ ap: statusMem.run,
7752
+ ar: loadStatus,
7753
+ as: openWorkspace,
7754
+ b6: $error__closures,
7755
+ au: $si__input_initial && $initial_workspaceId__closures,
7756
+ av: $si__input_initial && $initial_view__closures,
7757
+ aw: $si__input_initial && $initial_sessionId__closures,
7758
+ ax: $si__input_initial && $initial_pr__closures,
7759
+ ay: $si__input_initial && $initial_scope__closures,
7760
+ az: $si__input_initial && $initial_file__closures,
7761
+ b0: $workspaces__closures,
7762
+ b1: $status__closures,
7763
+ b2: $settings__closures,
7764
+ b3: $selectedId__closures,
7765
+ b4: $creating__closures,
7766
+ b5: $setup2__closures,
7767
+ b7: $applyWorkspaces2__closures,
7768
+ b8: $openWorkspace2__closures
7735
7769
  });
7736
7770
  _resume_branch($scope0_id);
7737
7771
  });
@@ -7831,7 +7865,7 @@ var app_page_default = _template("b", (input) => {
7831
7865
  });
7832
7866
  //#endregion
7833
7867
  //#region src/routes/_app/new/+page.marko
7834
- var _page_default$4 = _template("W", (input) => {
7868
+ var _page_default$4 = _template("X", (input) => {
7835
7869
  _scope_reason();
7836
7870
  _scope_id();
7837
7871
  app_page_default({ initial: {
@@ -7873,7 +7907,7 @@ var GET$18 = Run.GET(async (_ctx, next) => {
7873
7907
  });
7874
7908
  //#endregion
7875
7909
  //#region src/routes/_app/settings/+page.marko
7876
- var _page_default$3 = _template("X", (input) => {
7910
+ var _page_default$3 = _template("Y", (input) => {
7877
7911
  _scope_reason();
7878
7912
  _scope_id();
7879
7913
  app_page_default({ initial: {
@@ -7910,7 +7944,7 @@ function head3(context) {
7910
7944
  }
7911
7945
  //#endregion
7912
7946
  //#region src/routes/_app/w/$id/+page.marko
7913
- var _page_default$2 = _template("Y", (input) => {
7947
+ var _page_default$2 = _template("Z", (input) => {
7914
7948
  _scope_reason();
7915
7949
  _scope_id();
7916
7950
  app_page_default({ initial: {
@@ -7947,7 +7981,7 @@ function head4(context) {
7947
7981
  }
7948
7982
  //#endregion
7949
7983
  //#region src/routes/_app/w/$id/manage/+page.marko
7950
- var _page_default$1 = _template("Z", (input) => {
7984
+ var _page_default$1 = _template("$", (input) => {
7951
7985
  _scope_reason();
7952
7986
  _scope_id();
7953
7987
  app_page_default({ initial: {
@@ -7983,13 +8017,17 @@ function head5(context) {
7983
8017
  }
7984
8018
  //#endregion
7985
8019
  //#region src/routes/_app/w/$id/review/+page.marko
7986
- var _page_default = _template("$", (input) => {
8020
+ var _page_default = _template("ab", (input) => {
7987
8021
  _scope_reason();
7988
8022
  _scope_id();
8023
+ const q = $global().url.searchParams;
8024
+ const scope = q.get("scope");
7989
8025
  app_page_default({ initial: {
7990
8026
  workspaceId: $global().params.id,
7991
8027
  view: "diff",
7992
- pr: $global().url.searchParams.get("pr")
8028
+ pr: q.get("pr"),
8029
+ scope: scope === "working" || scope === "dirty" ? scope : null,
8030
+ file: q.get("file")
7993
8031
  } });
7994
8032
  });
7995
8033
  //#endregion
@@ -8158,6 +8196,21 @@ function _getStandardProps(context) {
8158
8196
  return cached;
8159
8197
  }
8160
8198
  /**
8199
+ * Disallows inherited object properties and prevents object prototype
8200
+ * pollution by disallowing certain keys.
8201
+ *
8202
+ * @param object The object to check.
8203
+ * @param key The key to check.
8204
+ *
8205
+ * @returns Whether the key is allowed.
8206
+ *
8207
+ * @internal
8208
+ */
8209
+ /* @__NO_SIDE_EFFECTS__ */
8210
+ function _isValidObjectKey(object$1, key) {
8211
+ return Object.prototype.hasOwnProperty.call(object$1, key) && key !== "__proto__" && key !== "prototype" && key !== "constructor";
8212
+ }
8213
+ /**
8161
8214
  * Joins multiple `expects` values with the given separator.
8162
8215
  *
8163
8216
  * @param values The `expects` values.
@@ -8577,6 +8630,74 @@ function picklist(options, message$1) {
8577
8630
  };
8578
8631
  }
8579
8632
  /* @__NO_SIDE_EFFECTS__ */
8633
+ function record(key, value$1, message$1) {
8634
+ return {
8635
+ kind: "schema",
8636
+ type: "record",
8637
+ reference: record,
8638
+ expects: "Object",
8639
+ async: false,
8640
+ key,
8641
+ value: value$1,
8642
+ message: message$1,
8643
+ get "~standard"() {
8644
+ return /* @__PURE__ */ _getStandardProps(this);
8645
+ },
8646
+ "~run"(dataset, config$1) {
8647
+ const input = dataset.value;
8648
+ if (input && typeof input === "object") {
8649
+ dataset.typed = true;
8650
+ dataset.value = {};
8651
+ for (const entryKey in input) if (/* @__PURE__ */ _isValidObjectKey(input, entryKey)) {
8652
+ const entryValue = input[entryKey];
8653
+ const keyDataset = this.key["~run"]({ value: entryKey }, config$1);
8654
+ if (keyDataset.issues) {
8655
+ const pathItem = {
8656
+ type: "object",
8657
+ origin: "key",
8658
+ input,
8659
+ key: entryKey,
8660
+ value: entryValue
8661
+ };
8662
+ for (const issue of keyDataset.issues) {
8663
+ issue.path = [pathItem];
8664
+ dataset.issues?.push(issue);
8665
+ }
8666
+ if (!dataset.issues) dataset.issues = keyDataset.issues;
8667
+ if (config$1.abortEarly) {
8668
+ dataset.typed = false;
8669
+ break;
8670
+ }
8671
+ }
8672
+ const valueDataset = this.value["~run"]({ value: entryValue }, config$1);
8673
+ if (valueDataset.issues) {
8674
+ const pathItem = {
8675
+ type: "object",
8676
+ origin: "value",
8677
+ input,
8678
+ key: entryKey,
8679
+ value: entryValue
8680
+ };
8681
+ for (const issue of valueDataset.issues) {
8682
+ if (issue.path) issue.path.unshift(pathItem);
8683
+ else issue.path = [pathItem];
8684
+ dataset.issues?.push(issue);
8685
+ }
8686
+ if (!dataset.issues) dataset.issues = valueDataset.issues;
8687
+ if (config$1.abortEarly) {
8688
+ dataset.typed = false;
8689
+ break;
8690
+ }
8691
+ }
8692
+ if (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;
8693
+ if (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;
8694
+ }
8695
+ } else _addIssue(this, "type", dataset, config$1);
8696
+ return dataset;
8697
+ }
8698
+ };
8699
+ }
8700
+ /* @__NO_SIDE_EFFECTS__ */
8580
8701
  function string(message$1) {
8581
8702
  return {
8582
8703
  kind: "schema",
@@ -9113,45 +9234,9 @@ function head17(context) {
9113
9234
  return stripResponseBody(get17(context));
9114
9235
  }
9115
9236
  //#endregion
9116
- //#region src/server/review.ts
9117
- function reviewState(workspaceId) {
9118
- return { comments: all("SELECT * FROM review_comments WHERE workspace_id = ? ORDER BY worktree, path, line_start", workspaceId) };
9119
- }
9120
- function addComment(workspaceId, comment) {
9121
- const { lastInsertRowid } = db.prepare(`INSERT INTO review_comments
9122
- (workspace_id, worktree, path, side, line_start, line_end, text)
9123
- VALUES (?, ?, ?, ?, ?, ?, ?)`).run(workspaceId, comment.worktree, comment.path, comment.side, comment.line_start, comment.line_end, comment.text);
9124
- publish("review.changed", { workspaceId });
9125
- return get("SELECT * FROM review_comments WHERE id = ?", lastInsertRowid);
9126
- }
9127
- function deleteComment(id) {
9128
- const row = get("SELECT workspace_id FROM review_comments WHERE id = ?", id);
9129
- db.prepare("DELETE FROM review_comments WHERE id = ?").run(id);
9130
- if (row) publish("review.changed", { workspaceId: row.workspace_id });
9131
- }
9132
- function clearComments(workspaceId) {
9133
- db.prepare("DELETE FROM review_comments WHERE workspace_id = ?").run(workspaceId);
9134
- publish("review.changed", { workspaceId });
9135
- }
9136
- //#endregion
9137
- //#region __marko-run__api.review-comments.$.js
9138
- var deleteHandler$2 = normalizeHandler(Run.DELETE({ params({ id }) {
9139
- const n = Number(id);
9140
- if (!Number.isInteger(n)) throw httpError(400, "invalid comment id");
9141
- return { id: n };
9142
- } }, (ctx) => {
9143
- deleteComment(ctx.params.id);
9144
- return Response.json({ ok: true });
9145
- }), "DELETE");
9146
- var delete18_options = mergeOptions(mware11, deleteHandler$2);
9147
- function delete18(context) {
9148
- const __deleteHandler = (data) => call(deleteHandler$2, noContent, context, data);
9149
- return call(mware11, __deleteHandler, context);
9150
- }
9151
- //#endregion
9152
9237
  //#region src/routes/api/sessions/$id/+handler.ts
9153
9238
  var Rename = /* @__PURE__ */ object({ title: /* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ trim(), /* @__PURE__ */ minLength(1), /* @__PURE__ */ maxLength(60)) });
9154
- var DELETE$1 = Run.DELETE(async (ctx) => {
9239
+ var DELETE$2 = Run.DELETE(async (ctx) => {
9155
9240
  await killSession(ctx.params.id);
9156
9241
  return Response.json({ ok: true });
9157
9242
  });
@@ -9162,14 +9247,14 @@ var patchHandler = normalizeHandler(Run.PATCH({ json: Rename }, async (ctx) => {
9162
9247
  renameSession(ctx.params.id, body.title);
9163
9248
  return Response.json({ ok: true });
9164
9249
  }), "PATCH");
9165
- var deleteHandler$1 = normalizeHandler(DELETE$1, "DELETE");
9166
- var delete19_options = mergeOptions(mware11, deleteHandler$1);
9167
- var patch19_options = mergeOptions(mware11, patchHandler);
9168
- function delete19(context) {
9169
- const __deleteHandler = (data) => call(deleteHandler$1, noContent, context, data);
9250
+ var deleteHandler$2 = normalizeHandler(DELETE$2, "DELETE");
9251
+ var delete18_options = mergeOptions(mware11, deleteHandler$2);
9252
+ var patch18_options = mergeOptions(mware11, patchHandler);
9253
+ function delete18(context) {
9254
+ const __deleteHandler = (data) => call(deleteHandler$2, noContent, context, data);
9170
9255
  return call(mware11, __deleteHandler, context);
9171
9256
  }
9172
- function patch19(context) {
9257
+ function patch18(context) {
9173
9258
  const __patchHandler = (data) => call(patchHandler, noContent, context, data);
9174
9259
  return call(mware11, __patchHandler, context);
9175
9260
  }
@@ -9190,8 +9275,8 @@ var postHandler$8 = normalizeHandler(Run.POST({ json: Send }, async (ctx) => {
9190
9275
  } : void 0);
9191
9276
  return Response.json({ ok: true });
9192
9277
  }), "POST");
9193
- var post20_options = mergeOptions(mware11, postHandler$8);
9194
- function post20(context) {
9278
+ var post19_options = mergeOptions(mware11, postHandler$8);
9279
+ function post19(context) {
9195
9280
  const __postHandler = (data) => call(postHandler$8, noContent, context, data);
9196
9281
  return call(mware11, __postHandler, context);
9197
9282
  }
@@ -9223,31 +9308,31 @@ var putHandler = normalizeHandler(Run.PUT({ json: Patch }, async (ctx) => {
9223
9308
  return Response.json(snapshot());
9224
9309
  }), "PUT");
9225
9310
  var getHandler$10 = normalizeHandler(GET$10, "GET");
9226
- var get21_options = mergeOptions(mware11, getHandler$10);
9227
- var head21_options = mergeOptions(mware11);
9228
- var put21_options = mergeOptions(mware11, putHandler);
9229
- function get21(context) {
9311
+ var get20_options = mergeOptions(mware11, getHandler$10);
9312
+ var head20_options = mergeOptions(mware11);
9313
+ var put20_options = mergeOptions(mware11, putHandler);
9314
+ function get20(context) {
9230
9315
  const __getHandler = (data) => call(getHandler$10, noContent, context, data);
9231
9316
  return call(mware11, __getHandler, context);
9232
9317
  }
9233
- function head21(context) {
9234
- return stripResponseBody(get21(context));
9318
+ function head20(context) {
9319
+ return stripResponseBody(get20(context));
9235
9320
  }
9236
- function put21(context) {
9321
+ function put20(context) {
9237
9322
  const __putHandler = (data) => call(putHandler, noContent, context, data);
9238
9323
  return call(mware11, __putHandler, context);
9239
9324
  }
9240
9325
  //#endregion
9241
9326
  //#region __marko-run__api.setup.js
9242
9327
  var getHandler$9 = normalizeHandler(Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await getSetup(ctx.search.refresh))), "GET");
9243
- var get22_options = mergeOptions(mware11, getHandler$9);
9244
- var head22_options = mergeOptions(mware11);
9245
- function get22(context) {
9328
+ var get21_options = mergeOptions(mware11, getHandler$9);
9329
+ var head21_options = mergeOptions(mware11);
9330
+ function get21(context) {
9246
9331
  const __getHandler = (data) => call(getHandler$9, noContent, context, data);
9247
9332
  return call(mware11, __getHandler, context);
9248
9333
  }
9249
- function head22(context) {
9250
- return stripResponseBody(get22(context));
9334
+ function head21(context) {
9335
+ return stripResponseBody(get21(context));
9251
9336
  }
9252
9337
  //#endregion
9253
9338
  //#region src/routes/api/setup/$id/+handler.ts
@@ -9267,34 +9352,34 @@ var postHandler$7 = normalizeHandler(Run.POST({ json: Body }, async (ctx) => {
9267
9352
  const body = await readBody(ctx);
9268
9353
  return Response.json(await runSetupAction(ctx.params.id, body.action, { version: body.version }));
9269
9354
  }), "POST");
9270
- var post23_options = mergeOptions(mware11, postHandler$7);
9271
- function post23(context) {
9355
+ var post22_options = mergeOptions(mware11, postHandler$7);
9356
+ function post22(context) {
9272
9357
  const __postHandler = (data) => call(postHandler$7, noContent, context, data);
9273
9358
  return call(mware11, __postHandler, context);
9274
9359
  }
9275
9360
  //#endregion
9276
9361
  //#region __marko-run__api.setup.search.js
9277
9362
  var getHandler$8 = normalizeHandler(Run.GET({ search: (value) => ({ q: typeof value.q === "string" ? value.q : "" }) }, async (ctx) => Response.json(await searchMise(ctx.search.q))), "GET");
9278
- var get24_options = mergeOptions(mware11, getHandler$8);
9279
- var head24_options = mergeOptions(mware11);
9280
- function get24(context) {
9363
+ var get23_options = mergeOptions(mware11, getHandler$8);
9364
+ var head23_options = mergeOptions(mware11);
9365
+ function get23(context) {
9281
9366
  const __getHandler = (data) => call(getHandler$8, noContent, context, data);
9282
9367
  return call(mware11, __getHandler, context);
9283
9368
  }
9284
- function head24(context) {
9285
- return stripResponseBody(get24(context));
9369
+ function head23(context) {
9370
+ return stripResponseBody(get23(context));
9286
9371
  }
9287
9372
  //#endregion
9288
9373
  //#region __marko-run__api.status.js
9289
9374
  var getHandler$7 = normalizeHandler(Run.GET({ search: (value) => ({ fresh: "fresh" in value }) }, async (ctx) => Response.json(await (ctx.search.fresh ? statusForAllFresh() : statusForAll()))), "GET");
9290
- var get25_options = mergeOptions(mware11, getHandler$7);
9291
- var head25_options = mergeOptions(mware11);
9292
- function get25(context) {
9375
+ var get24_options = mergeOptions(mware11, getHandler$7);
9376
+ var head24_options = mergeOptions(mware11);
9377
+ function get24(context) {
9293
9378
  const __getHandler = (data) => call(getHandler$7, noContent, context, data);
9294
9379
  return call(mware11, __getHandler, context);
9295
9380
  }
9296
- function head25(context) {
9297
- return stripResponseBody(get25(context));
9381
+ function head24(context) {
9382
+ return stripResponseBody(get24(context));
9298
9383
  }
9299
9384
  //#endregion
9300
9385
  //#region src/server/usage/shared.ts
@@ -10045,14 +10130,14 @@ var usage = async (refresh = false) => {
10045
10130
  //#endregion
10046
10131
  //#region __marko-run__api.usage.js
10047
10132
  var getHandler$6 = normalizeHandler(Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await usage(ctx.search.refresh))), "GET");
10048
- var get26_options = mergeOptions(mware11, getHandler$6);
10049
- var head26_options = mergeOptions(mware11);
10050
- function get26(context) {
10133
+ var get25_options = mergeOptions(mware11, getHandler$6);
10134
+ var head25_options = mergeOptions(mware11);
10135
+ function get25(context) {
10051
10136
  const __getHandler = (data) => call(getHandler$6, noContent, context, data);
10052
10137
  return call(mware11, __getHandler, context);
10053
10138
  }
10054
- function head26(context) {
10055
- return stripResponseBody(get26(context));
10139
+ function head25(context) {
10140
+ return stripResponseBody(get25(context));
10056
10141
  }
10057
10142
  //#endregion
10058
10143
  //#region src/routes/api/workspaces/+handler.ts
@@ -10074,17 +10159,17 @@ var postHandler$6 = normalizeHandler(Run.POST({ json: CreateWorkspace }, async (
10074
10159
  return Response.json(await withProgressOp(body.opId ?? "", () => createWorkspace(body.name, body.repos)));
10075
10160
  }), "POST");
10076
10161
  var getHandler$5 = normalizeHandler(GET$5, "GET");
10077
- var get27_options = mergeOptions(mware11, getHandler$5);
10078
- var head27_options = mergeOptions(mware11);
10079
- var post27_options = mergeOptions(mware11, postHandler$6);
10080
- function get27(context) {
10162
+ var get26_options = mergeOptions(mware11, getHandler$5);
10163
+ var head26_options = mergeOptions(mware11);
10164
+ var post26_options = mergeOptions(mware11, postHandler$6);
10165
+ function get26(context) {
10081
10166
  const __getHandler = (data) => call(getHandler$5, noContent, context, data);
10082
10167
  return call(mware11, __getHandler, context);
10083
10168
  }
10084
- function head27(context) {
10085
- return stripResponseBody(get27(context));
10169
+ function head26(context) {
10170
+ return stripResponseBody(get26(context));
10086
10171
  }
10087
- function post27(context) {
10172
+ function post26(context) {
10088
10173
  const __postHandler = (data) => call(postHandler$6, noContent, context, data);
10089
10174
  return call(mware11, __postHandler, context);
10090
10175
  }
@@ -10107,11 +10192,11 @@ var postHandler$5 = normalizeHandler(Run.POST({ json: WorkspaceAction }, async (
10107
10192
  });
10108
10193
  return Response.json({ ok: true });
10109
10194
  }), "POST");
10110
- var post28_options = mergeOptions(mware11, mware34, postHandler$5);
10111
- function post28(context) {
10195
+ var post27_options = mergeOptions(mware11, mware33, postHandler$5);
10196
+ function post27(context) {
10112
10197
  const __postHandler = (data) => call(postHandler$5, noContent, context, data);
10113
- const __mware34 = (data) => call(mware34, __postHandler, context, data);
10114
- return call(mware11, __mware34, context);
10198
+ const __mware33 = (data) => call(mware33, __postHandler, context, data);
10199
+ return call(mware11, __mware33, context);
10115
10200
  }
10116
10201
  //#endregion
10117
10202
  //#region src/routes/api/workspaces/$id/assets/+handler.ts
@@ -10130,11 +10215,49 @@ var postHandler$4 = normalizeHandler(Run.POST({ search: (value) => ({ name: type
10130
10215
  fs.writeFileSync(path.join(ws.path, relative), data);
10131
10216
  return Response.json({ path: relative });
10132
10217
  }), "POST");
10133
- var post29_options = mergeOptions(mware11, mware34, postHandler$4);
10134
- function post29(context) {
10218
+ var post28_options = mergeOptions(mware11, mware33, postHandler$4);
10219
+ function post28(context) {
10135
10220
  const __postHandler = (data) => call(postHandler$4, noContent, context, data);
10136
- const __mware34 = (data) => call(mware34, __postHandler, context, data);
10137
- return call(mware11, __mware34, context);
10221
+ const __mware33 = (data) => call(mware33, __postHandler, context, data);
10222
+ return call(mware11, __mware33, context);
10223
+ }
10224
+ //#endregion
10225
+ //#region src/server/review.ts
10226
+ function reviewState(workspaceId) {
10227
+ return { comments: all("SELECT * FROM review_comments WHERE workspace_id = ? ORDER BY worktree, path, line_start", workspaceId) };
10228
+ }
10229
+ function addComment(workspaceId, comment) {
10230
+ const { lastInsertRowid } = db.prepare(`INSERT INTO review_comments
10231
+ (workspace_id, worktree, path, side, line_start, line_end, text, head, snippet)
10232
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(workspaceId, comment.worktree, comment.path, comment.side, comment.line_start, comment.line_end, comment.text, comment.head ?? null, comment.snippet ?? null);
10233
+ publish("review.changed", { workspaceId });
10234
+ return get("SELECT * FROM review_comments WHERE id = ?", lastInsertRowid);
10235
+ }
10236
+ function deleteComment(id) {
10237
+ const row = get("SELECT workspace_id FROM review_comments WHERE id = ?", id);
10238
+ db.prepare("DELETE FROM review_comments WHERE id = ?").run(id);
10239
+ if (row) publish("review.changed", { workspaceId: row.workspace_id });
10240
+ }
10241
+ function clearComments(workspaceId) {
10242
+ db.prepare("DELETE FROM review_comments WHERE workspace_id = ?").run(workspaceId);
10243
+ publish("review.changed", { workspaceId });
10244
+ }
10245
+ var seenKey = (workspaceId) => `review.seen:${workspaceId}`;
10246
+ function reviewSeen(workspaceId) {
10247
+ const raw = getSetting(seenKey(workspaceId));
10248
+ if (!raw) return null;
10249
+ try {
10250
+ const parsed = JSON.parse(raw);
10251
+ return {
10252
+ heads: parsed.heads || {},
10253
+ dirty: parsed.dirty || {}
10254
+ };
10255
+ } catch {
10256
+ return null;
10257
+ }
10258
+ }
10259
+ function markReviewSeen(workspaceId, seen) {
10260
+ setSetting(seenKey(workspaceId), JSON.stringify(seen));
10138
10261
  }
10139
10262
  //#endregion
10140
10263
  //#region src/server/diff.ts
@@ -10232,12 +10355,13 @@ async function treeContainedIn(dir, base, head) {
10232
10355
  }
10233
10356
  /** Open PRs as GitHub's files tab (remote head vs the PR's `--base`).
10234
10357
  * Repos with no open PR fall back to the local checkout vs the derived
10235
- * base. `pr` (`worktree/number`) focuses one PR. `uncommitted` overlays
10236
- * the working tree on the PR whose head is the current branch. */
10358
+ * base. `pr` (`worktree/number`) focuses one PR. `scope` (see DiffScope)
10359
+ * overlays the working tree on the PR whose head is the current branch. */
10237
10360
  async function workspaceDiff(ws, opts = {}) {
10238
- const { baseRef, uncommitted = false, pr: focus, refresh = false } = opts;
10361
+ const { baseRef, scope = "committed", pr: focus, refresh = false } = opts;
10239
10362
  if (refresh) for (const repo of ws.repos) lastFetch.delete(repo.full_name);
10240
10363
  const foreign = otherWorkspaceBranches(ws.id);
10364
+ const seen = reviewSeen(ws.id);
10241
10365
  return (await Promise.all(ws.repos.map(async (repo) => {
10242
10366
  const dir = path.join(ws.path, repo.worktree);
10243
10367
  const branch = await git([
@@ -10247,15 +10371,44 @@ async function workspaceDiff(ws, opts = {}) {
10247
10371
  ], dir).catch(() => "HEAD");
10248
10372
  const localHead = await headOid(dir);
10249
10373
  const open = (await workspacePrs(repo.full_name, ws.branch, foreign, refresh)).filter((p) => p.state === "OPEN" && p.baseRefName && p.headRefName && (!focus || focus === `${repo.worktree}/${p.number}`));
10250
- if (open.length) return Promise.all(open.map((p) => prDiff(dir, repo, p, {
10251
- uncommitted: uncommitted && branch === p.headRefName,
10374
+ let list;
10375
+ if (open.length) list = await Promise.all(open.map((p) => prDiff(dir, repo, p, {
10376
+ scope: branch === p.headRefName ? scope : "committed",
10252
10377
  localHead,
10253
10378
  branch
10254
10379
  })));
10255
- if (focus) return [];
10256
- return [await localDiff(dir, ws, repo, branch, localHead, baseRef, uncommitted)];
10380
+ else if (focus) list = [];
10381
+ else list = [await localDiff(dir, ws, repo, branch, localHead, baseRef, scope)];
10382
+ for (const section of list) await markChangedSince(dir, section, seen);
10383
+ return list;
10257
10384
  }))).flat();
10258
10385
  }
10386
+ /** Flag files touched since the reviewer's last visit: committed changes
10387
+ * between the seen head and this head, plus working-tree files whose
10388
+ * content fingerprint moved. Nothing is flagged on the first visit. */
10389
+ async function markChangedSince(dir, section, seen) {
10390
+ if (!seen) return;
10391
+ const seenHead = seen.heads[section.worktree];
10392
+ if (!seenHead) return;
10393
+ section.seenHead = seenHead;
10394
+ const committed = /* @__PURE__ */ new Set();
10395
+ if (seenHead !== section.head) {
10396
+ const names = await git([
10397
+ "diff",
10398
+ "--name-only",
10399
+ "-z",
10400
+ "--no-renames",
10401
+ seenHead,
10402
+ section.head
10403
+ ], dir).catch(() => "");
10404
+ for (const p of names.split("\0")) if (p) committed.add(p);
10405
+ }
10406
+ for (const file of section.files) {
10407
+ const key = `${section.worktree}/${file.path}`;
10408
+ const dirtyMoved = file.hash != null && seen.dirty[key] !== file.hash;
10409
+ if (committed.has(file.path) || dirtyMoved) file.changedSince = true;
10410
+ }
10411
+ }
10259
10412
  async function prDiff(dir, repo, pr, ctx) {
10260
10413
  await freshenBaseRefs(dir, repo.full_name, [pr.baseRefName, pr.headRefName]);
10261
10414
  const headRef = `origin/${pr.headRefName}`;
@@ -10282,7 +10435,7 @@ async function prDiff(dir, repo, pr, ctx) {
10282
10435
  head
10283
10436
  ], dir).catch(() => "");
10284
10437
  const contained = await treeContainedIn(dir, baseRef, head);
10285
- const files = await collectFiles(dir, contained ? head : mergeBase || baseRef, head, ctx.uncommitted);
10438
+ const files = await collectFiles(dir, contained ? head : mergeBase || baseRef, head, ctx.scope);
10286
10439
  const githubDrift = !!pr.headRefOid && head !== pr.headRefOid;
10287
10440
  return {
10288
10441
  id: `${repo.worktree}#${pr.number}`,
@@ -10300,7 +10453,8 @@ async function prDiff(dir, repo, pr, ctx) {
10300
10453
  files
10301
10454
  };
10302
10455
  }
10303
- async function localDiff(dir, ws, repo, branch, localHead, baseRef, uncommitted) {
10456
+ async function localDiff(dir, ws, repo, branch, localHead, baseRef, scope) {
10457
+ const uncommitted = scope !== "committed";
10304
10458
  await freshenBaseRefs(dir, repo.full_name, [
10305
10459
  ws.branch,
10306
10460
  ...branch !== "HEAD" ? [branch] : [],
@@ -10322,7 +10476,7 @@ async function localDiff(dir, ws, repo, branch, localHead, baseRef, uncommitted)
10322
10476
  const contained = !missing && await treeContainedIn(dir, ref, "HEAD");
10323
10477
  const against = contained ? "HEAD" : mergeBase;
10324
10478
  const baseSha = missing ? localHead : await git(["rev-parse", ref], dir).catch(() => mergeBase);
10325
- const files = await collectFiles(dir, against, "HEAD", uncommitted);
10479
+ const files = await collectFiles(dir, against, "HEAD", scope);
10326
10480
  return {
10327
10481
  id: repo.worktree,
10328
10482
  worktree: repo.worktree,
@@ -10347,7 +10501,9 @@ function prMeta(pr) {
10347
10501
  ...pr.headRefOid && { headRefOid: pr.headRefOid }
10348
10502
  };
10349
10503
  }
10350
- async function collectFiles(dir, oldRev, newRev, uncommitted) {
10504
+ async function collectFiles(dir, oldRev, newRev, scope) {
10505
+ if (scope === "dirty") oldRev = newRev;
10506
+ const uncommitted = scope !== "committed";
10351
10507
  const nameArgs = uncommitted ? [
10352
10508
  "diff",
10353
10509
  "--name-status",
@@ -10376,7 +10532,7 @@ async function collectFiles(dir, oldRev, newRev, uncommitted) {
10376
10532
  oldRev,
10377
10533
  newRev
10378
10534
  ];
10379
- const [nameStatus, numstat, untracked] = await Promise.all([
10535
+ const [nameStatus, numstat, untracked, dirtyNames] = await Promise.all([
10380
10536
  git(nameArgs, dir).catch(() => ""),
10381
10537
  git(numArgs, dir).catch(() => ""),
10382
10538
  uncommitted ? git([
@@ -10384,8 +10540,17 @@ async function collectFiles(dir, oldRev, newRev, uncommitted) {
10384
10540
  "--others",
10385
10541
  "--exclude-standard",
10386
10542
  "-z"
10543
+ ], dir).catch(() => "") : Promise.resolve(""),
10544
+ uncommitted ? git([
10545
+ "diff",
10546
+ "--name-only",
10547
+ "-z",
10548
+ "--no-renames",
10549
+ "HEAD"
10387
10550
  ], dir).catch(() => "") : Promise.resolve("")
10388
10551
  ]);
10552
+ const dirtyPaths = new Set(dirtyNames.split("\0").filter(Boolean));
10553
+ for (const file of untracked.split("\0")) if (file) dirtyPaths.add(file);
10389
10554
  const entries = [];
10390
10555
  const parts = nameStatus.split("\0").filter(Boolean);
10391
10556
  for (let i = 0; i + 1 < parts.length; i += 2) entries.push({
@@ -10401,6 +10566,7 @@ async function collectFiles(dir, oldRev, newRev, uncommitted) {
10401
10566
  const news = uncommitted ? null : await batchContents(dir, newRev, entries.filter((e) => e.status !== "D").map((e) => e.path));
10402
10567
  const files = await Promise.all(entries.map(async (e) => {
10403
10568
  const file = news ? fromBlobs(e.path, e.status, olds.get(e.path), news.get(e.path)) : await loadWorktreeFile(dir, e.path, e.status, olds.get(e.path));
10569
+ if (!news && dirtyPaths.has(e.path)) file.hash = createHash("sha1").update(e.status).update(file.new ?? "").digest("hex").slice(0, 16);
10404
10570
  const st = stats.get(e.path);
10405
10571
  if (st) {
10406
10572
  file.additions = st.additions;
@@ -10533,40 +10699,47 @@ async function loadWorktreeFile(dir, filePath, status, old) {
10533
10699
  return result;
10534
10700
  }
10535
10701
  //#endregion
10702
+ //#region src/routes/api/workspaces/$id/diff/+handler.ts
10703
+ var SCOPES = [
10704
+ "committed",
10705
+ "working",
10706
+ "dirty"
10707
+ ];
10708
+ //#endregion
10536
10709
  //#region __marko-run__api.workspaces.$.diff.js
10537
10710
  var getHandler$4 = normalizeHandler(Run.GET({ search: (value) => ({
10538
10711
  base: typeof value.base === "string" && value.base ? value.base : void 0,
10539
- uncommitted: value.uncommitted === "1" || value.uncommitted === "true",
10712
+ scope: SCOPES.includes(value.scope) ? value.scope : value.uncommitted === "1" || value.uncommitted === "true" ? "working" : "committed",
10540
10713
  pr: typeof value.pr === "string" && value.pr ? value.pr : void 0,
10541
10714
  refresh: "refresh" in value
10542
10715
  }) }, async (ctx) => Response.json(await workspaceDiff(ctx.data.workspace, {
10543
10716
  baseRef: ctx.search.base,
10544
- uncommitted: ctx.search.uncommitted,
10717
+ scope: ctx.search.scope,
10545
10718
  pr: ctx.search.pr,
10546
10719
  refresh: ctx.search.refresh
10547
10720
  }))), "GET");
10548
- var get30_options = mergeOptions(mware11, mware34, getHandler$4);
10549
- var head30_options = mergeOptions(mware11, mware34);
10550
- function get30(context) {
10721
+ var get29_options = mergeOptions(mware11, mware33, getHandler$4);
10722
+ var head29_options = mergeOptions(mware11, mware33);
10723
+ function get29(context) {
10551
10724
  const __getHandler = (data) => call(getHandler$4, noContent, context, data);
10552
- const __mware34 = (data) => call(mware34, __getHandler, context, data);
10553
- return call(mware11, __mware34, context);
10725
+ const __mware33 = (data) => call(mware33, __getHandler, context, data);
10726
+ return call(mware11, __mware33, context);
10554
10727
  }
10555
- function head30(context) {
10556
- return stripResponseBody(get30(context));
10728
+ function head29(context) {
10729
+ return stripResponseBody(get29(context));
10557
10730
  }
10558
10731
  //#endregion
10559
10732
  //#region __marko-run__api.workspaces.$.procs.js
10560
10733
  var getHandler$3 = normalizeHandler(Run.GET(async (ctx) => Response.json(await workspaceProcs(ctx.data.workspace.path))), "GET");
10561
- var get31_options = mergeOptions(mware11, mware34, getHandler$3);
10562
- var head31_options = mergeOptions(mware11, mware34);
10563
- function get31(context) {
10734
+ var get30_options = mergeOptions(mware11, mware33, getHandler$3);
10735
+ var head30_options = mergeOptions(mware11, mware33);
10736
+ function get30(context) {
10564
10737
  const __getHandler = (data) => call(getHandler$3, noContent, context, data);
10565
- const __mware34 = (data) => call(mware34, __getHandler, context, data);
10566
- return call(mware11, __mware34, context);
10738
+ const __mware33 = (data) => call(mware33, __getHandler, context, data);
10739
+ return call(mware11, __mware33, context);
10567
10740
  }
10568
- function head31(context) {
10569
- return stripResponseBody(get31(context));
10741
+ function head30(context) {
10742
+ return stripResponseBody(get30(context));
10570
10743
  }
10571
10744
  //#endregion
10572
10745
  //#region src/routes/api/workspaces/$id/prs/+handler.ts
@@ -10613,21 +10786,21 @@ async function listPrs(ws, refresh) {
10613
10786
  //#region __marko-run__api.workspaces.$.prs.js
10614
10787
  var postHandler$3 = normalizeHandler(POST$3, "POST");
10615
10788
  var getHandler$2 = normalizeHandler(GET$2, "GET");
10616
- var get32_options = mergeOptions(mware11, mware34, getHandler$2);
10617
- var head32_options = mergeOptions(mware11, mware34);
10618
- var post32_options = mergeOptions(mware11, mware34, postHandler$3);
10619
- function get32(context) {
10789
+ var get31_options = mergeOptions(mware11, mware33, getHandler$2);
10790
+ var head31_options = mergeOptions(mware11, mware33);
10791
+ var post31_options = mergeOptions(mware11, mware33, postHandler$3);
10792
+ function get31(context) {
10620
10793
  const __getHandler = (data) => call(getHandler$2, noContent, context, data);
10621
- const __mware34 = (data) => call(mware34, __getHandler, context, data);
10622
- return call(mware11, __mware34, context);
10794
+ const __mware33 = (data) => call(mware33, __getHandler, context, data);
10795
+ return call(mware11, __mware33, context);
10623
10796
  }
10624
- function head32(context) {
10625
- return stripResponseBody(get32(context));
10797
+ function head31(context) {
10798
+ return stripResponseBody(get31(context));
10626
10799
  }
10627
- function post32(context) {
10800
+ function post31(context) {
10628
10801
  const __postHandler = (data) => call(postHandler$3, noContent, context, data);
10629
- const __mware34 = (data) => call(mware34, __postHandler, context, data);
10630
- return call(mware11, __mware34, context);
10802
+ const __mware33 = (data) => call(mware33, __postHandler, context, data);
10803
+ return call(mware11, __mware33, context);
10631
10804
  }
10632
10805
  //#endregion
10633
10806
  //#region src/routes/api/workspaces/$id/repos/+handler.ts
@@ -10641,35 +10814,45 @@ var postHandler$2 = normalizeHandler(Run.POST({ json: AddRepo }, async (ctx) =>
10641
10814
  const body = await readBody(ctx);
10642
10815
  return Response.json(await withProgressOp(ctx.params.id, () => addRepo$1(ctx.params.id, body.fullName, body.baseBranch)));
10643
10816
  }), "POST");
10644
- var post33_options = mergeOptions(mware11, mware34, postHandler$2);
10645
- function post33(context) {
10817
+ var post32_options = mergeOptions(mware11, mware33, postHandler$2);
10818
+ function post32(context) {
10646
10819
  const __postHandler = (data) => call(postHandler$2, noContent, context, data);
10647
- const __mware34 = (data) => call(mware34, __postHandler, context, data);
10648
- return call(mware11, __mware34, context);
10820
+ const __mware33 = (data) => call(mware33, __postHandler, context, data);
10821
+ return call(mware11, __mware33, context);
10649
10822
  }
10650
10823
  //#endregion
10651
10824
  //#region __marko-run__api.workspaces.$.repos.$.js
10652
- var deleteHandler = normalizeHandler(Run.DELETE(async (ctx) => {
10825
+ var deleteHandler$1 = normalizeHandler(Run.DELETE(async (ctx) => {
10653
10826
  await withProgressOp(ctx.params.id, () => removeRepo(ctx.params.id, ctx.params.worktree));
10654
10827
  return Response.json({ ok: true });
10655
10828
  }), "DELETE");
10656
- var delete34_options = mergeOptions(mware11, mware34, deleteHandler);
10657
- function delete34(context) {
10658
- const __deleteHandler = (data) => call(deleteHandler, noContent, context, data);
10659
- const __mware34 = (data) => call(mware34, __deleteHandler, context, data);
10660
- return call(mware11, __mware34, context);
10829
+ var delete33_options = mergeOptions(mware11, mware33, deleteHandler$1);
10830
+ function delete33(context) {
10831
+ const __deleteHandler = (data) => call(deleteHandler$1, noContent, context, data);
10832
+ const __mware33 = (data) => call(mware33, __deleteHandler, context, data);
10833
+ return call(mware11, __mware33, context);
10661
10834
  }
10662
10835
  //#endregion
10663
10836
  //#region src/routes/api/workspaces/$id/review/+handler.ts
10664
- var ReviewAction = /* @__PURE__ */ union([/* @__PURE__ */ object({
10665
- action: /* @__PURE__ */ literal("comment"),
10666
- worktree: /* @__PURE__ */ string(),
10667
- path: /* @__PURE__ */ string(),
10668
- side: /* @__PURE__ */ picklist(["additions", "deletions"]),
10669
- line_start: /* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ integer(), /* @__PURE__ */ minValue(1)),
10670
- line_end: /* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ integer(), /* @__PURE__ */ minValue(1)),
10671
- text: /* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ trim(), /* @__PURE__ */ minLength(1))
10672
- }), /* @__PURE__ */ object({ action: /* @__PURE__ */ literal("clear") })]);
10837
+ var ReviewAction = /* @__PURE__ */ union([
10838
+ /* @__PURE__ */ object({
10839
+ action: /* @__PURE__ */ literal("comment"),
10840
+ worktree: /* @__PURE__ */ string(),
10841
+ path: /* @__PURE__ */ string(),
10842
+ side: /* @__PURE__ */ picklist(["additions", "deletions"]),
10843
+ line_start: /* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ integer(), /* @__PURE__ */ minValue(1)),
10844
+ line_end: /* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ integer(), /* @__PURE__ */ minValue(1)),
10845
+ text: /* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ trim(), /* @__PURE__ */ minLength(1)),
10846
+ head: /* @__PURE__ */ optional(/* @__PURE__ */ string()),
10847
+ snippet: /* @__PURE__ */ optional(/* @__PURE__ */ string())
10848
+ }),
10849
+ /* @__PURE__ */ object({ action: /* @__PURE__ */ literal("clear") }),
10850
+ /* @__PURE__ */ object({
10851
+ action: /* @__PURE__ */ literal("seen"),
10852
+ heads: /* @__PURE__ */ record(/* @__PURE__ */ string(), /* @__PURE__ */ string()),
10853
+ dirty: /* @__PURE__ */ record(/* @__PURE__ */ string(), /* @__PURE__ */ string())
10854
+ })
10855
+ ]);
10673
10856
  var GET$1 = Run.GET((ctx) => {
10674
10857
  return Response.json(reviewState(ctx.params.id));
10675
10858
  });
@@ -10682,25 +10865,48 @@ var postHandler$1 = normalizeHandler(Run.POST({ json: ReviewAction }, async (ctx
10682
10865
  if (comment.line_end < comment.line_start) [comment.line_start, comment.line_end] = [comment.line_end, comment.line_start];
10683
10866
  return Response.json(addComment(ctx.params.id, comment));
10684
10867
  }
10868
+ if (body.action === "seen") {
10869
+ markReviewSeen(ctx.params.id, {
10870
+ heads: body.heads,
10871
+ dirty: body.dirty
10872
+ });
10873
+ return Response.json({ ok: true });
10874
+ }
10685
10875
  clearComments(ctx.params.id);
10686
10876
  return Response.json({ ok: true });
10687
10877
  }), "POST");
10688
10878
  var getHandler$1 = normalizeHandler(GET$1, "GET");
10689
- var get35_options = mergeOptions(mware11, mware34, getHandler$1);
10690
- var head35_options = mergeOptions(mware11, mware34);
10691
- var post35_options = mergeOptions(mware11, mware34, postHandler$1);
10692
- function get35(context) {
10879
+ var get34_options = mergeOptions(mware11, mware33, getHandler$1);
10880
+ var head34_options = mergeOptions(mware11, mware33);
10881
+ var post34_options = mergeOptions(mware11, mware33, postHandler$1);
10882
+ function get34(context) {
10693
10883
  const __getHandler = (data) => call(getHandler$1, noContent, context, data);
10694
- const __mware34 = (data) => call(mware34, __getHandler, context, data);
10695
- return call(mware11, __mware34, context);
10884
+ const __mware33 = (data) => call(mware33, __getHandler, context, data);
10885
+ return call(mware11, __mware33, context);
10696
10886
  }
10697
- function head35(context) {
10698
- return stripResponseBody(get35(context));
10887
+ function head34(context) {
10888
+ return stripResponseBody(get34(context));
10699
10889
  }
10700
- function post35(context) {
10890
+ function post34(context) {
10701
10891
  const __postHandler = (data) => call(postHandler$1, noContent, context, data);
10702
- const __mware34 = (data) => call(mware34, __postHandler, context, data);
10703
- return call(mware11, __mware34, context);
10892
+ const __mware33 = (data) => call(mware33, __postHandler, context, data);
10893
+ return call(mware11, __mware33, context);
10894
+ }
10895
+ //#endregion
10896
+ //#region __marko-run__api.workspaces.$.review.$.js
10897
+ var deleteHandler = normalizeHandler(Run.DELETE((ctx) => {
10898
+ const commentId = Number(ctx.params.commentId);
10899
+ if (!Number.isInteger(commentId)) throw httpError(400, "invalid comment id");
10900
+ const row = get("SELECT workspace_id FROM review_comments WHERE id = ?", commentId);
10901
+ if (!row || row.workspace_id !== ctx.params.id) throw httpError(404, "no such comment");
10902
+ deleteComment(commentId);
10903
+ return Response.json({ ok: true });
10904
+ }), "DELETE");
10905
+ var delete35_options = mergeOptions(mware11, mware33, deleteHandler);
10906
+ function delete35(context) {
10907
+ const __deleteHandler = (data) => call(deleteHandler, noContent, context, data);
10908
+ const __mware33 = (data) => call(mware33, __deleteHandler, context, data);
10909
+ return call(mware11, __mware33, context);
10704
10910
  }
10705
10911
  //#endregion
10706
10912
  //#region src/routes/api/workspaces/$id/sessions/+handler.ts
@@ -10719,21 +10925,21 @@ var postHandler = normalizeHandler(Run.POST({ json: CreateSession }, async (ctx)
10719
10925
  return Response.json(createSession(ctx.params.id, body.agent || preferredAgent()));
10720
10926
  }), "POST");
10721
10927
  var getHandler = normalizeHandler(GET, "GET");
10722
- var get36_options = mergeOptions(mware11, mware34, getHandler);
10723
- var head36_options = mergeOptions(mware11, mware34);
10724
- var post36_options = mergeOptions(mware11, mware34, postHandler);
10928
+ var get36_options = mergeOptions(mware11, mware33, getHandler);
10929
+ var head36_options = mergeOptions(mware11, mware33);
10930
+ var post36_options = mergeOptions(mware11, mware33, postHandler);
10725
10931
  function get36(context) {
10726
10932
  const __getHandler = (data) => call(getHandler, noContent, context, data);
10727
- const __mware34 = (data) => call(mware34, __getHandler, context, data);
10728
- return call(mware11, __mware34, context);
10933
+ const __mware33 = (data) => call(mware33, __getHandler, context, data);
10934
+ return call(mware11, __mware33, context);
10729
10935
  }
10730
10936
  function head36(context) {
10731
10937
  return stripResponseBody(get36(context));
10732
10938
  }
10733
10939
  function post36(context) {
10734
10940
  const __postHandler = (data) => call(postHandler, noContent, context, data);
10735
- const __mware34 = (data) => call(mware34, __postHandler, context, data);
10736
- return call(mware11, __mware34, context);
10941
+ const __mware33 = (data) => call(mware33, __postHandler, context, data);
10942
+ return call(mware11, __mware33, context);
10737
10943
  }
10738
10944
  //#endregion
10739
10945
  //#region __marko-run__router.js
@@ -10858,38 +11064,38 @@ function match_internal(method, pathname) {
10858
11064
  meta: {}
10859
11065
  };
10860
11066
  case "settings": return {
10861
- handler: get21,
11067
+ handler: get20,
10862
11068
  path: "/api/settings",
10863
11069
  params: {},
10864
- options: get21_options,
11070
+ options: get20_options,
10865
11071
  meta: {}
10866
11072
  };
10867
11073
  case "setup": return {
10868
- handler: get22,
11074
+ handler: get21,
10869
11075
  path: "/api/setup",
10870
11076
  params: {},
10871
- options: get22_options,
11077
+ options: get21_options,
10872
11078
  meta: {}
10873
11079
  };
10874
11080
  case "status": return {
10875
- handler: get25,
11081
+ handler: get24,
10876
11082
  path: "/api/status",
10877
11083
  params: {},
10878
- options: get25_options,
11084
+ options: get24_options,
10879
11085
  meta: {}
10880
11086
  };
10881
11087
  case "usage": return {
10882
- handler: get26,
11088
+ handler: get25,
10883
11089
  path: "/api/usage",
10884
11090
  params: {},
10885
- options: get26_options,
11091
+ options: get25_options,
10886
11092
  meta: {}
10887
11093
  };
10888
11094
  case "workspaces": return {
10889
- handler: get27,
11095
+ handler: get26,
10890
11096
  path: "/api/workspaces",
10891
11097
  params: {},
10892
- options: get27_options,
11098
+ options: get26_options,
10893
11099
  meta: {}
10894
11100
  };
10895
11101
  }
@@ -10913,10 +11119,10 @@ function match_internal(method, pathname) {
10913
11119
  const i3 = pathname.indexOf("/", 11) + 1;
10914
11120
  if (!i3 || i3 === len) {
10915
11121
  if (pathname.slice(11, i3 ? -1 : len) === "search") return {
10916
- handler: get24,
11122
+ handler: get23,
10917
11123
  path: "/api/setup/search",
10918
11124
  params: {},
10919
- options: get24_options,
11125
+ options: get23_options,
10920
11126
  meta: {}
10921
11127
  };
10922
11128
  }
@@ -10930,31 +11136,31 @@ function match_internal(method, pathname) {
10930
11136
  const i4 = pathname.indexOf("/", i3) + 1;
10931
11137
  if (!i4 || i4 === len) switch (pathname.slice(i3, i4 ? -1 : len)) {
10932
11138
  case "diff": return {
10933
- handler: get30,
11139
+ handler: get29,
10934
11140
  path: "/api/workspaces/$id/diff",
10935
11141
  params: { id: s3 },
10936
- options: get30_options,
11142
+ options: get29_options,
10937
11143
  meta: {}
10938
11144
  };
10939
11145
  case "procs": return {
10940
- handler: get31,
11146
+ handler: get30,
10941
11147
  path: "/api/workspaces/$id/procs",
10942
11148
  params: { id: s3 },
10943
- options: get31_options,
11149
+ options: get30_options,
10944
11150
  meta: {}
10945
11151
  };
10946
11152
  case "prs": return {
10947
- handler: get32,
11153
+ handler: get31,
10948
11154
  path: "/api/workspaces/$id/prs",
10949
11155
  params: { id: s3 },
10950
- options: get32_options,
11156
+ options: get31_options,
10951
11157
  meta: {}
10952
11158
  };
10953
11159
  case "review": return {
10954
- handler: get35,
11160
+ handler: get34,
10955
11161
  path: "/api/workspaces/$id/review",
10956
11162
  params: { id: s3 },
10957
- options: get35_options,
11163
+ options: get34_options,
10958
11164
  meta: {}
10959
11165
  };
10960
11166
  case "sessions": return {
@@ -11082,38 +11288,38 @@ function match_internal(method, pathname) {
11082
11288
  meta: {}
11083
11289
  };
11084
11290
  case "settings": return {
11085
- handler: head21,
11291
+ handler: head20,
11086
11292
  path: "/api/settings",
11087
11293
  params: {},
11088
- options: head21_options,
11294
+ options: head20_options,
11089
11295
  meta: {}
11090
11296
  };
11091
11297
  case "setup": return {
11092
- handler: head22,
11298
+ handler: head21,
11093
11299
  path: "/api/setup",
11094
11300
  params: {},
11095
- options: head22_options,
11301
+ options: head21_options,
11096
11302
  meta: {}
11097
11303
  };
11098
11304
  case "status": return {
11099
- handler: head25,
11305
+ handler: head24,
11100
11306
  path: "/api/status",
11101
11307
  params: {},
11102
- options: head25_options,
11308
+ options: head24_options,
11103
11309
  meta: {}
11104
11310
  };
11105
11311
  case "usage": return {
11106
- handler: head26,
11312
+ handler: head25,
11107
11313
  path: "/api/usage",
11108
11314
  params: {},
11109
- options: head26_options,
11315
+ options: head25_options,
11110
11316
  meta: {}
11111
11317
  };
11112
11318
  case "workspaces": return {
11113
- handler: head27,
11319
+ handler: head26,
11114
11320
  path: "/api/workspaces",
11115
11321
  params: {},
11116
- options: head27_options,
11322
+ options: head26_options,
11117
11323
  meta: {}
11118
11324
  };
11119
11325
  }
@@ -11137,10 +11343,10 @@ function match_internal(method, pathname) {
11137
11343
  const i3 = pathname.indexOf("/", 11) + 1;
11138
11344
  if (!i3 || i3 === len) {
11139
11345
  if (pathname.slice(11, i3 ? -1 : len) === "search") return {
11140
- handler: head24,
11346
+ handler: head23,
11141
11347
  path: "/api/setup/search",
11142
11348
  params: {},
11143
- options: head24_options,
11349
+ options: head23_options,
11144
11350
  meta: {}
11145
11351
  };
11146
11352
  }
@@ -11154,31 +11360,31 @@ function match_internal(method, pathname) {
11154
11360
  const i4 = pathname.indexOf("/", i3) + 1;
11155
11361
  if (!i4 || i4 === len) switch (pathname.slice(i3, i4 ? -1 : len)) {
11156
11362
  case "diff": return {
11157
- handler: head30,
11363
+ handler: head29,
11158
11364
  path: "/api/workspaces/$id/diff",
11159
11365
  params: { id: s3 },
11160
- options: head30_options,
11366
+ options: head29_options,
11161
11367
  meta: {}
11162
11368
  };
11163
11369
  case "procs": return {
11164
- handler: head31,
11370
+ handler: head30,
11165
11371
  path: "/api/workspaces/$id/procs",
11166
11372
  params: { id: s3 },
11167
- options: head31_options,
11373
+ options: head30_options,
11168
11374
  meta: {}
11169
11375
  };
11170
11376
  case "prs": return {
11171
- handler: head32,
11377
+ handler: head31,
11172
11378
  path: "/api/workspaces/$id/prs",
11173
11379
  params: { id: s3 },
11174
- options: head32_options,
11380
+ options: head31_options,
11175
11381
  meta: {}
11176
11382
  };
11177
11383
  case "review": return {
11178
- handler: head35,
11384
+ handler: head34,
11179
11385
  path: "/api/workspaces/$id/review",
11180
11386
  params: { id: s3 },
11181
- options: head35_options,
11387
+ options: head34_options,
11182
11388
  meta: {}
11183
11389
  };
11184
11390
  case "sessions": return {
@@ -11234,10 +11440,10 @@ function match_internal(method, pathname) {
11234
11440
  meta: {}
11235
11441
  };
11236
11442
  case "workspaces": return {
11237
- handler: post27,
11443
+ handler: post26,
11238
11444
  path: "/api/workspaces",
11239
11445
  params: {},
11240
- options: post27_options,
11446
+ options: post26_options,
11241
11447
  meta: {}
11242
11448
  };
11243
11449
  }
@@ -11265,10 +11471,10 @@ function match_internal(method, pathname) {
11265
11471
  const i4 = pathname.indexOf("/", i3) + 1;
11266
11472
  if (!i4 || i4 === len) {
11267
11473
  if (pathname.slice(i3, i4 ? -1 : len) === "send") return {
11268
- handler: post20,
11474
+ handler: post19,
11269
11475
  path: "/api/sessions/$id/send",
11270
11476
  params: { id: s3 },
11271
- options: post20_options,
11477
+ options: post19_options,
11272
11478
  meta: {}
11273
11479
  };
11274
11480
  }
@@ -11282,10 +11488,10 @@ function match_internal(method, pathname) {
11282
11488
  if (!i3 || i3 === len) {
11283
11489
  const s3 = decodeURIComponent(pathname.slice(11, i3 ? -1 : len));
11284
11490
  if (s3) return {
11285
- handler: post23,
11491
+ handler: post22,
11286
11492
  path: "/api/setup/$id",
11287
11493
  params: { id: s3 },
11288
- options: post23_options,
11494
+ options: post22_options,
11289
11495
  meta: {}
11290
11496
  };
11291
11497
  }
@@ -11296,10 +11502,10 @@ function match_internal(method, pathname) {
11296
11502
  if (!i3 || i3 === len) {
11297
11503
  const s3 = decodeURIComponent(pathname.slice(16, i3 ? -1 : len));
11298
11504
  if (s3) return {
11299
- handler: post28,
11505
+ handler: post27,
11300
11506
  path: "/api/workspaces/$id",
11301
11507
  params: { id: s3 },
11302
- options: post28_options,
11508
+ options: post27_options,
11303
11509
  meta: {}
11304
11510
  };
11305
11511
  } else {
@@ -11308,31 +11514,31 @@ function match_internal(method, pathname) {
11308
11514
  const i4 = pathname.indexOf("/", i3) + 1;
11309
11515
  if (!i4 || i4 === len) switch (pathname.slice(i3, i4 ? -1 : len)) {
11310
11516
  case "assets": return {
11311
- handler: post29,
11517
+ handler: post28,
11312
11518
  path: "/api/workspaces/$id/assets",
11313
11519
  params: { id: s3 },
11314
- options: post29_options,
11520
+ options: post28_options,
11315
11521
  meta: {}
11316
11522
  };
11317
11523
  case "prs": return {
11318
- handler: post32,
11524
+ handler: post31,
11319
11525
  path: "/api/workspaces/$id/prs",
11320
11526
  params: { id: s3 },
11321
- options: post32_options,
11527
+ options: post31_options,
11322
11528
  meta: {}
11323
11529
  };
11324
11530
  case "repos": return {
11325
- handler: post33,
11531
+ handler: post32,
11326
11532
  path: "/api/workspaces/$id/repos",
11327
11533
  params: { id: s3 },
11328
- options: post33_options,
11534
+ options: post32_options,
11329
11535
  meta: {}
11330
11536
  };
11331
11537
  case "review": return {
11332
- handler: post35,
11538
+ handler: post34,
11333
11539
  path: "/api/workspaces/$id/review",
11334
11540
  params: { id: s3 },
11335
- options: post35_options,
11541
+ options: post34_options,
11336
11542
  meta: {}
11337
11543
  };
11338
11544
  case "sessions": return {
@@ -11360,10 +11566,10 @@ function match_internal(method, pathname) {
11360
11566
  const i2 = pathname.indexOf("/", 5) + 1;
11361
11567
  if (!i2 || i2 === len) {
11362
11568
  if (pathname.slice(5, i2 ? -1 : len) === "settings") return {
11363
- handler: put21,
11569
+ handler: put20,
11364
11570
  path: "/api/settings",
11365
11571
  params: {},
11366
- options: put21_options,
11572
+ options: put20_options,
11367
11573
  meta: {}
11368
11574
  };
11369
11575
  }
@@ -11402,31 +11608,16 @@ function match_internal(method, pathname) {
11402
11608
  }
11403
11609
  }
11404
11610
  break;
11405
- case "review-comments":
11406
- {
11407
- const i3 = pathname.indexOf("/", 21) + 1;
11408
- if (!i3 || i3 === len) {
11409
- const s3 = decodeURIComponent(pathname.slice(21, i3 ? -1 : len));
11410
- if (s3) return {
11411
- handler: delete18,
11412
- path: "/api/review-comments/$id",
11413
- params: { id: s3 },
11414
- options: delete18_options,
11415
- meta: {}
11416
- };
11417
- }
11418
- }
11419
- break;
11420
11611
  case "sessions":
11421
11612
  {
11422
11613
  const i3 = pathname.indexOf("/", 14) + 1;
11423
11614
  if (!i3 || i3 === len) {
11424
11615
  const s3 = decodeURIComponent(pathname.slice(14, i3 ? -1 : len));
11425
11616
  if (s3) return {
11426
- handler: delete19,
11617
+ handler: delete18,
11427
11618
  path: "/api/sessions/$id",
11428
11619
  params: { id: s3 },
11429
- options: delete19_options,
11620
+ options: delete18_options,
11430
11621
  meta: {}
11431
11622
  };
11432
11623
  }
@@ -11438,19 +11629,37 @@ function match_internal(method, pathname) {
11438
11629
  const s3 = decodeURIComponent(pathname.slice(16, i3 - 1));
11439
11630
  if (s3) {
11440
11631
  const i4 = pathname.indexOf("/", i3) + 1;
11441
- if (i4 && i4 !== len) {
11442
- if (pathname.slice(i3, i4 - 1) === "repos") {
11632
+ if (i4 && i4 !== len) switch (pathname.slice(i3, i4 - 1)) {
11633
+ case "repos":
11634
+ {
11635
+ const i5 = pathname.indexOf("/", i4) + 1;
11636
+ if (!i5 || i5 === len) {
11637
+ const s5 = decodeURIComponent(pathname.slice(i4, i5 ? -1 : len));
11638
+ if (s5) return {
11639
+ handler: delete33,
11640
+ path: "/api/workspaces/$id/repos/$worktree",
11641
+ params: {
11642
+ id: s3,
11643
+ worktree: s5
11644
+ },
11645
+ options: delete33_options,
11646
+ meta: {}
11647
+ };
11648
+ }
11649
+ }
11650
+ break;
11651
+ case "review": {
11443
11652
  const i5 = pathname.indexOf("/", i4) + 1;
11444
11653
  if (!i5 || i5 === len) {
11445
11654
  const s5 = decodeURIComponent(pathname.slice(i4, i5 ? -1 : len));
11446
11655
  if (s5) return {
11447
- handler: delete34,
11448
- path: "/api/workspaces/$id/repos/$worktree",
11656
+ handler: delete35,
11657
+ path: "/api/workspaces/$id/review/$commentId",
11449
11658
  params: {
11450
11659
  id: s3,
11451
- worktree: s5
11660
+ commentId: s5
11452
11661
  },
11453
- options: delete34_options,
11662
+ options: delete35_options,
11454
11663
  meta: {}
11455
11664
  };
11456
11665
  }
@@ -11477,10 +11686,10 @@ function match_internal(method, pathname) {
11477
11686
  if (!i3 || i3 === len) {
11478
11687
  const s3 = decodeURIComponent(pathname.slice(14, i3 ? -1 : len));
11479
11688
  if (s3) return {
11480
- handler: patch19,
11689
+ handler: patch18,
11481
11690
  path: "/api/sessions/$id",
11482
11691
  params: { id: s3 },
11483
- options: patch19_options,
11692
+ options: patch18_options,
11484
11693
  meta: {}
11485
11694
  };
11486
11695
  }
@@ -13586,7 +13795,7 @@ var require_websocket = /* @__PURE__ */ __commonJSMin(((exports, module) => {
13586
13795
  var http$1 = __require("http");
13587
13796
  var net = __require("net");
13588
13797
  var tls = __require("tls");
13589
- var { randomBytes, createHash: createHash$1 } = __require("crypto");
13798
+ var { randomBytes, createHash: createHash$2 } = __require("crypto");
13590
13799
  var { Duplex: Duplex$2, Readable: Readable$1 } = __require("stream");
13591
13800
  var { URL: URL$1 } = __require("url");
13592
13801
  var PerMessageDeflate = require_permessage_deflate();
@@ -14258,7 +14467,7 @@ var require_websocket = /* @__PURE__ */ __commonJSMin(((exports, module) => {
14258
14467
  abortHandshake(websocket, socket, "Invalid Upgrade header");
14259
14468
  return;
14260
14469
  }
14261
- const digest = createHash$1("sha1").update(key + GUID).digest("base64");
14470
+ const digest = createHash$2("sha1").update(key + GUID).digest("base64");
14262
14471
  if (res.headers["sec-websocket-accept"] !== digest) {
14263
14472
  abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
14264
14473
  return;
@@ -14732,7 +14941,7 @@ var require_websocket_server = /* @__PURE__ */ __commonJSMin(((exports, module)
14732
14941
  var EventEmitter = __require("events");
14733
14942
  var http = __require("http");
14734
14943
  var { Duplex } = __require("stream");
14735
- var { createHash } = __require("crypto");
14944
+ var { createHash: createHash$1 } = __require("crypto");
14736
14945
  var extension = require_extension();
14737
14946
  var PerMessageDeflate = require_permessage_deflate();
14738
14947
  var subprotocol = require_subprotocol();
@@ -15002,7 +15211,7 @@ var require_websocket_server = /* @__PURE__ */ __commonJSMin(((exports, module)
15002
15211
  "HTTP/1.1 101 Switching Protocols",
15003
15212
  "Upgrade: websocket",
15004
15213
  "Connection: Upgrade",
15005
- `Sec-WebSocket-Accept: ${createHash("sha1").update(key + GUID).digest("base64")}`
15214
+ `Sec-WebSocket-Accept: ${createHash$1("sha1").update(key + GUID).digest("base64")}`
15006
15215
  ];
15007
15216
  const ws = new this.options.WebSocket(null, void 0, this.options);
15008
15217
  if (protocols.size) {
@@ -15481,4 +15690,4 @@ server.listen(port, () => {
15481
15690
  //#endregion
15482
15691
  export {};
15483
15692
 
15484
- ;var __MARKO_MANIFEST__={"T$MNY0k":{"block":[2,"stylesheet#/assets/app-page-DASXpmZa.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DASXpmZa.css\"",">"],"defer":[2,"/assets/w._-DYa0KZD7.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-DYa0KZD7.js\"","></script>",2,"modulepreload#/assets/_wN6_cR73.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_wN6_cR73.js\"",">"]},"ZLT8joi":{"block":[2,"stylesheet#/assets/app-page-DASXpmZa.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DASXpmZa.css\"",">"],"defer":[2,"/assets/new-DYa0KZD7.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/new-DYa0KZD7.js\"","></script>",2,"modulepreload#/assets/_wN6_cR73.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_wN6_cR73.js\"",">"]},"LH2lXAg":{"block":[2,"stylesheet#/assets/app-page-DASXpmZa.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DASXpmZa.css\"",">"],"defer":[2,"/assets/w-DYa0KZD7.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w-DYa0KZD7.js\"","></script>",2,"modulepreload#/assets/_wN6_cR73.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_wN6_cR73.js\"",">"]},"AA0T2xt":{"block":[2,"stylesheet#/assets/app-page-DASXpmZa.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DASXpmZa.css\"",">"],"defer":[2,"/assets/settings-DYa0KZD7.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/settings-DYa0KZD7.js\"","></script>",2,"modulepreload#/assets/_wN6_cR73.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_wN6_cR73.js\"",">"]},"ibphXY4":{"block":[2,"stylesheet#/assets/app-page-DASXpmZa.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DASXpmZa.css\"",">"],"defer":[2,"/assets/w._-CN7l1nb6.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-CN7l1nb6.js\"","></script>",2,"modulepreload#/assets/_wN6_cR73.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_wN6_cR73.js\"",">"]}};
15693
+ ;var __MARKO_MANIFEST__={"ZLT8joi":{"block":[2,"stylesheet#/assets/app-page-DZhaOCYJ.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DZhaOCYJ.css\"",">"],"defer":[2,"/assets/new-Cia2P5u6.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/new-Cia2P5u6.js\"","></script>",2,"modulepreload#/assets/_Dlrc6R2N.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_Dlrc6R2N.js\"",">"]},"LH2lXAg":{"block":[2,"stylesheet#/assets/app-page-DZhaOCYJ.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DZhaOCYJ.css\"",">"],"defer":[2,"/assets/w-Cia2P5u6.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w-Cia2P5u6.js\"","></script>",2,"modulepreload#/assets/_Dlrc6R2N.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_Dlrc6R2N.js\"",">"]},"AA0T2xt":{"block":[2,"stylesheet#/assets/app-page-DZhaOCYJ.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DZhaOCYJ.css\"",">"],"defer":[2,"/assets/settings-Cia2P5u6.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/settings-Cia2P5u6.js\"","></script>",2,"modulepreload#/assets/_Dlrc6R2N.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_Dlrc6R2N.js\"",">"]},"ibphXY4":{"block":[2,"stylesheet#/assets/app-page-DZhaOCYJ.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DZhaOCYJ.css\"",">"],"defer":[2,"/assets/w._-Cia2P5u6.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-Cia2P5u6.js\"","></script>",2,"modulepreload#/assets/_Dlrc6R2N.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_Dlrc6R2N.js\"",">"]},"T$MNY0k":{"block":[2,"stylesheet#/assets/app-page-DZhaOCYJ.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DZhaOCYJ.css\"",">"],"defer":[2,"/assets/w._-BwIlYQ_7.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-BwIlYQ_7.js\"","></script>",2,"modulepreload#/assets/_Dlrc6R2N.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_Dlrc6R2N.js\"",">"]}};