@dylanpiercey/work 0.0.14 → 0.0.16

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 (154) hide show
  1. package/bin/work.mjs +11 -5
  2. package/dist/index.mjs +109 -96
  3. package/dist/public/assets/{_BtX0OV9L2.js → _3nRuZR392.js} +2 -2
  4. package/dist/public/assets/{_BtX0OV9L2.js.map → _3nRuZR392.js.map} +1 -1
  5. package/dist/public/assets/{_DIqHX5oS.js → _6ccljRlA.js} +2 -2
  6. package/dist/public/assets/{_DIqHX5oS.js.map → _6ccljRlA.js.map} +1 -1
  7. package/dist/public/assets/{_DHF6f-Qb.js → _9fnkGoXr.js} +2 -2
  8. package/dist/public/assets/{_DHF6f-Qb.js.map → _9fnkGoXr.js.map} +1 -1
  9. package/dist/public/assets/{_C-2JDMwn.js → _9nBQFu4n.js} +2 -2
  10. package/dist/public/assets/{_C-2JDMwn.js.map → _9nBQFu4n.js.map} +1 -1
  11. package/dist/public/assets/{_wd5Ka9-u2.js → _AfKNcWyq2.js} +2 -2
  12. package/dist/public/assets/{_wd5Ka9-u2.js.map → _AfKNcWyq2.js.map} +1 -1
  13. package/dist/public/assets/{__Pss17dn2.js → _B3VtQ4vG2.js} +2 -2
  14. package/dist/public/assets/{__Pss17dn2.js.map → _B3VtQ4vG2.js.map} +1 -1
  15. package/dist/public/assets/{_37DiDfEe2.js → _BBGEINtC2.js} +2 -2
  16. package/dist/public/assets/{_37DiDfEe2.js.map → _BBGEINtC2.js.map} +1 -1
  17. package/dist/public/assets/{_1PYA5v6h.js → _BDipE-Va.js} +2 -2
  18. package/dist/public/assets/{_1PYA5v6h.js.map → _BDipE-Va.js.map} +1 -1
  19. package/dist/public/assets/{_BDmZKLpT.js → _BHCH9Ec5.js} +2 -2
  20. package/dist/public/assets/{_BDmZKLpT.js.map → _BHCH9Ec5.js.map} +1 -1
  21. package/dist/public/assets/{_DtifEQOQ2.js → _BJ8BJsnn2.js} +2 -2
  22. package/dist/public/assets/{_DtifEQOQ2.js.map → _BJ8BJsnn2.js.map} +1 -1
  23. package/dist/public/assets/{_DZAVCSn-2.js → _BOrVabbb2.js} +2 -2
  24. package/dist/public/assets/{_DZAVCSn-2.js.map → _BOrVabbb2.js.map} +1 -1
  25. package/dist/public/assets/{_VkiUGcZN.js → _BPPEpg5u.js} +2 -2
  26. package/dist/public/assets/{_VkiUGcZN.js.map → _BPPEpg5u.js.map} +1 -1
  27. package/dist/public/assets/{_DhTbYHFb2.js → _BQRPxKyy2.js} +2 -2
  28. package/dist/public/assets/{_DhTbYHFb2.js.map → _BQRPxKyy2.js.map} +1 -1
  29. package/dist/public/assets/{_DOlpOlzZ.js → _BaXzsYQ7.js} +2 -2
  30. package/dist/public/assets/{_DOlpOlzZ.js.map → _BaXzsYQ7.js.map} +1 -1
  31. package/dist/public/assets/{_Cv9uSMiO2.js → _Bkhl0y-82.js} +2 -2
  32. package/dist/public/assets/{_Cv9uSMiO2.js.map → _Bkhl0y-82.js.map} +1 -1
  33. package/dist/public/assets/{_BlHZ_Kf_.js → _BmjbN1NQ.js} +2 -2
  34. package/dist/public/assets/{_BlHZ_Kf_.js.map → _BmjbN1NQ.js.map} +1 -1
  35. package/dist/public/assets/{_BUYXKQWK.js → _BmnVJS7Z.js} +2 -2
  36. package/dist/public/assets/{_BUYXKQWK.js.map → _BmnVJS7Z.js.map} +1 -1
  37. package/dist/public/assets/{_DVj22Fhb.js → _Br_xAAbI.js} +2 -2
  38. package/dist/public/assets/{_DVj22Fhb.js.map → _Br_xAAbI.js.map} +1 -1
  39. package/dist/public/assets/{_Cs6eIEq5.js → _Bs4vrcgD.js} +2 -2
  40. package/dist/public/assets/{_Cs6eIEq5.js.map → _Bs4vrcgD.js.map} +1 -1
  41. package/dist/public/assets/{_BwfU4p-S.js → _BxQDyhPH.js} +2 -2
  42. package/dist/public/assets/{_BwfU4p-S.js.map → _BxQDyhPH.js.map} +1 -1
  43. package/dist/public/assets/{_BkasMCr7.js → _Byp2iSCr.js} +2 -2
  44. package/dist/public/assets/{_BkasMCr7.js.map → _Byp2iSCr.js.map} +1 -1
  45. package/dist/public/assets/{_DLfg1G6i.js → _C1Fuw_m4.js} +2 -2
  46. package/dist/public/assets/{_DLfg1G6i.js.map → _C1Fuw_m4.js.map} +1 -1
  47. package/dist/public/assets/{_ChmfpmBk.js → _C293ZJ3_.js} +2 -2
  48. package/dist/public/assets/{_ChmfpmBk.js.map → _C293ZJ3_.js.map} +1 -1
  49. package/dist/public/assets/{_yp1JBHQQ.js → _C3aa91z1.js} +2 -2
  50. package/dist/public/assets/{_yp1JBHQQ.js.map → _C3aa91z1.js.map} +1 -1
  51. package/dist/public/assets/{_CccTxCW92.js → _CAl1JnQ12.js} +2 -2
  52. package/dist/public/assets/{_CccTxCW92.js.map → _CAl1JnQ12.js.map} +1 -1
  53. package/dist/public/assets/{_K5NvnxJU.js → _CAvq7yB4.js} +2 -2
  54. package/dist/public/assets/{_K5NvnxJU.js.map → _CAvq7yB4.js.map} +1 -1
  55. package/dist/public/assets/{_D7Nr1Fkx.js → _CFHhrDoZ.js} +2 -2
  56. package/dist/public/assets/{_D7Nr1Fkx.js.map → _CFHhrDoZ.js.map} +1 -1
  57. package/dist/public/assets/{_mWkgrXwR.js → _CPnEBoQT.js} +2 -2
  58. package/dist/public/assets/{_mWkgrXwR.js.map → _CPnEBoQT.js.map} +1 -1
  59. package/dist/public/assets/{_BhcPbeCA.js → _CUx_qGnW.js} +2 -2
  60. package/dist/public/assets/{_BhcPbeCA.js.map → _CUx_qGnW.js.map} +1 -1
  61. package/dist/public/assets/{_DGEc5tY92.js → _CVRpczD42.js} +2 -2
  62. package/dist/public/assets/{_DGEc5tY92.js.map → _CVRpczD42.js.map} +1 -1
  63. package/dist/public/assets/{_DWNYhaMZ2.js → _CZu6s0qI2.js} +2 -2
  64. package/dist/public/assets/{_DWNYhaMZ2.js.map → _CZu6s0qI2.js.map} +1 -1
  65. package/dist/public/assets/{_Dr7LwIoY2.js → _Ca8LeHcE2.js} +2 -2
  66. package/dist/public/assets/{_Dr7LwIoY2.js.map → _Ca8LeHcE2.js.map} +1 -1
  67. package/dist/public/assets/{_CBAwKZ_C.js → _CahtdZHX.js} +2 -2
  68. package/dist/public/assets/{_CBAwKZ_C.js.map → _CahtdZHX.js.map} +1 -1
  69. package/dist/public/assets/{_D5PUFlIB2.js → _CfMJDyos2.js} +2 -2
  70. package/dist/public/assets/{_D5PUFlIB2.js.map → _CfMJDyos2.js.map} +1 -1
  71. package/dist/public/assets/{_NdVLMlDn.js → _CmXQ-ifq.js} +2 -2
  72. package/dist/public/assets/{_NdVLMlDn.js.map → _CmXQ-ifq.js.map} +1 -1
  73. package/dist/public/assets/{_Ddhm-dQX.js → _Co0KJXI2.js} +2 -2
  74. package/dist/public/assets/{_Ddhm-dQX.js.map → _Co0KJXI2.js.map} +1 -1
  75. package/dist/public/assets/{_CNm-Qj_22.js → _CtXvQOEm2.js} +2 -2
  76. package/dist/public/assets/{_CNm-Qj_22.js.map → _CtXvQOEm2.js.map} +1 -1
  77. package/dist/public/assets/{_CcY_fkdX.js → _CxOr2oh9.js} +2 -2
  78. package/dist/public/assets/{_CcY_fkdX.js.map → _CxOr2oh9.js.map} +1 -1
  79. package/dist/public/assets/{_Cbd9gTf8.js → _Cy_nq4qm.js} +2 -2
  80. package/dist/public/assets/{_Cbd9gTf8.js.map → _Cy_nq4qm.js.map} +1 -1
  81. package/dist/public/assets/{_DR5ZG0w3.js → _D0shduNH.js} +2 -2
  82. package/dist/public/assets/{_DR5ZG0w3.js.map → _D0shduNH.js.map} +1 -1
  83. package/dist/public/assets/{_CCYH4Ky0.js → _D6iAmCp1.js} +2 -2
  84. package/dist/public/assets/{_CCYH4Ky0.js.map → _D6iAmCp1.js.map} +1 -1
  85. package/dist/public/assets/{_D6hErX6k2.js → _D7_G1-_S2.js} +2 -2
  86. package/dist/public/assets/{_D6hErX6k2.js.map → _D7_G1-_S2.js.map} +1 -1
  87. package/dist/public/assets/{_lzPB5GF7.js → _D8S2o6UR.js} +2 -2
  88. package/dist/public/assets/{_lzPB5GF7.js.map → _D8S2o6UR.js.map} +1 -1
  89. package/dist/public/assets/{_Ci9zG2ie2.js → _DFktCcEg2.js} +2 -2
  90. package/dist/public/assets/{_Ci9zG2ie2.js.map → _DFktCcEg2.js.map} +1 -1
  91. package/dist/public/assets/{_4GBVe70g.js → _DH1mdcCc.js} +2 -2
  92. package/dist/public/assets/{_4GBVe70g.js.map → _DH1mdcCc.js.map} +1 -1
  93. package/dist/public/assets/{_DQ9zeCqC.js → _DIM-O0j2.js} +2 -2
  94. package/dist/public/assets/{_DQ9zeCqC.js.map → _DIM-O0j2.js.map} +1 -1
  95. package/dist/public/assets/{_Euo_IdCD.js → _DO_XncUf.js} +2 -2
  96. package/dist/public/assets/{_Euo_IdCD.js.map → _DO_XncUf.js.map} +1 -1
  97. package/dist/public/assets/{_DG7JD0Wq.js → _DQ5I9g1b.js} +2 -2
  98. package/dist/public/assets/{_DG7JD0Wq.js.map → _DQ5I9g1b.js.map} +1 -1
  99. package/dist/public/assets/{_LszNpqGA.js → _DUZ-XKGI.js} +2 -2
  100. package/dist/public/assets/{_LszNpqGA.js.map → _DUZ-XKGI.js.map} +1 -1
  101. package/dist/public/assets/{_DEubpY7q.js → _DY2aEcI4.js} +2 -2
  102. package/dist/public/assets/{_DEubpY7q.js.map → _DY2aEcI4.js.map} +1 -1
  103. package/dist/public/assets/{_CYGmgYex.js → _Dag3dSdS.js} +2 -2
  104. package/dist/public/assets/{_CYGmgYex.js.map → _Dag3dSdS.js.map} +1 -1
  105. package/dist/public/assets/{_Ce1AxkTQ.js → _DdrgfWYV.js} +2 -2
  106. package/dist/public/assets/{_Ce1AxkTQ.js.map → _DdrgfWYV.js.map} +1 -1
  107. package/dist/public/assets/{_BMjt74CT.js → _DgPA0Ev2.js} +2 -2
  108. package/dist/public/assets/{_BMjt74CT.js.map → _DgPA0Ev2.js.map} +1 -1
  109. package/dist/public/assets/{_ClgMqvJk.js → _DkDriM3t.js} +2 -2
  110. package/dist/public/assets/{_ClgMqvJk.js.map → _DkDriM3t.js.map} +1 -1
  111. package/dist/public/assets/{_Bh5KV4D5.js → _DketAfIL.js} +2 -2
  112. package/dist/public/assets/{_Bh5KV4D5.js.map → _DketAfIL.js.map} +1 -1
  113. package/dist/public/assets/{_BZImyte8.js → _DlLNFDyP.js} +2 -2
  114. package/dist/public/assets/{_BZImyte8.js.map → _DlLNFDyP.js.map} +1 -1
  115. package/dist/public/assets/{_Bym_871-2.js → _Dnx1dnkf2.js} +2 -2
  116. package/dist/public/assets/{_Bym_871-2.js.map → _Dnx1dnkf2.js.map} +1 -1
  117. package/dist/public/assets/{_BS5HCQXD.js → _DpeapY8S.js} +2 -2
  118. package/dist/public/assets/{_BS5HCQXD.js.map → _DpeapY8S.js.map} +1 -1
  119. package/dist/public/assets/{_BFL5ebqS2.js → _DrBFiHLc2.js} +2 -2
  120. package/dist/public/assets/{_BFL5ebqS2.js.map → _DrBFiHLc2.js.map} +1 -1
  121. package/dist/public/assets/{_YnlBl5Ip2.js → _DrDWuAXs2.js} +2 -2
  122. package/dist/public/assets/{_YnlBl5Ip2.js.map → _DrDWuAXs2.js.map} +1 -1
  123. package/dist/public/assets/{_C_HKi7R3.js → _DuBGWVtf.js} +2 -2
  124. package/dist/public/assets/{_C_HKi7R3.js.map → _DuBGWVtf.js.map} +1 -1
  125. package/dist/public/assets/{_Brp01NXq.js → _DyL5PWn8.js} +2 -2
  126. package/dist/public/assets/{_Brp01NXq.js.map → _DyL5PWn8.js.map} +1 -1
  127. package/dist/public/assets/{_DWltXATi.js → _L2UZzZq2.js} +2 -2
  128. package/dist/public/assets/{_DWltXATi.js.map → _L2UZzZq2.js.map} +1 -1
  129. package/dist/public/assets/{_DbhzZP5E2.js → _T_F_fevq2.js} +2 -2
  130. package/dist/public/assets/{_DbhzZP5E2.js.map → _T_F_fevq2.js.map} +1 -1
  131. package/dist/public/assets/{_C36kllbW2.js → _ZHyUccam2.js} +2 -2
  132. package/dist/public/assets/{_C36kllbW2.js.map → _ZHyUccam2.js.map} +1 -1
  133. package/dist/public/assets/{_BYe0JdJ12.js → __bfVGMZr2.js} +2 -2
  134. package/dist/public/assets/{_BYe0JdJ12.js.map → __bfVGMZr2.js.map} +1 -1
  135. package/dist/public/assets/{_xTZ99WxP.js → _dj62I1xq.js} +2 -2
  136. package/dist/public/assets/{_xTZ99WxP.js.map → _dj62I1xq.js.map} +1 -1
  137. package/dist/public/assets/{_CGKi9mEa.js → _lUEjIgsF.js} +2 -2
  138. package/dist/public/assets/{_CGKi9mEa.js.map → _lUEjIgsF.js.map} +1 -1
  139. package/dist/public/assets/{_BXjUVBpA.js → _nOUjWCy1.js} +2 -2
  140. package/dist/public/assets/{_BXjUVBpA.js.map → _nOUjWCy1.js.map} +1 -1
  141. package/dist/public/assets/{_d4DNovnq.js → _vM-q0sGw.js} +2 -2
  142. package/dist/public/assets/{_d4DNovnq.js.map → _vM-q0sGw.js.map} +1 -1
  143. package/dist/public/assets/{_ByVrIZCY2.js → _v_BQc7tv2.js} +2 -2
  144. package/dist/public/assets/{_ByVrIZCY2.js.map → _v_BQc7tv2.js.map} +1 -1
  145. package/dist/public/assets/{_CcuBmBFx.js → _wftSlJw0.js} +2 -2
  146. package/dist/public/assets/{_CcuBmBFx.js.map → _wftSlJw0.js.map} +1 -1
  147. package/dist/public/assets/{_BsdChN-o2.js → _wqtupmge2.js} +2 -2
  148. package/dist/public/assets/{_BsdChN-o2.js.map → _wqtupmge2.js.map} +1 -1
  149. package/dist/public/assets/{_C3JXJPv9.js → _xNLmAghY.js} +2 -2
  150. package/dist/public/assets/{_C3JXJPv9.js.map → _xNLmAghY.js.map} +1 -1
  151. package/dist/public/assets/{index-DQjYJ4v3.js → index-CLfm87a5.js} +49 -49
  152. package/dist/public/assets/index-CLfm87a5.js.map +1 -0
  153. package/package.json +1 -1
  154. package/dist/public/assets/index-DQjYJ4v3.js.map +0 -1
package/bin/work.mjs CHANGED
@@ -208,16 +208,22 @@ function serviceEnv() {
208
208
  return env;
209
209
  }
210
210
 
211
- /** True when `cmd` is a work *server* (not `work setup` / `work update`). */
211
+ /** True when `cmd` is a work *server* (not `work setup` / `work update`).
212
+ * Must not match the tmux that hosts agent sessions: `tmux -L work
213
+ * start-server` used to hit `\bwork\s+start\b` because `\b` fires on the
214
+ * `t`/`-` boundary in `start-server`, so `work update` killed tmux mid-
215
+ * setup and never reached `systemctl restart`. */
212
216
  function isWorkServerCmd(cmd) {
217
+ if (/\btmux\b/.test(cmd)) return false;
213
218
  if (/\bwork(\.mjs)?\s+(setup|update|version)\b/.test(cmd)) return false;
214
219
  return (
215
- /\bwork\.mjs\s+start\b/.test(cmd) ||
216
- /\bwork\s+start\b/.test(cmd) ||
220
+ /\bwork\.mjs\s+start(?:\s|$)/.test(cmd) ||
221
+ /(?:^|[\s/])work\s+start(?:\s|$)/.test(cmd) ||
217
222
  /run-prod\.sh/.test(cmd) ||
218
- /work server is running/.test(cmd) ||
223
+ /--why=work server is running/.test(cmd) ||
224
+ /--why="work server is running"/.test(cmd) ||
219
225
  (/@dylanpiercey\/work\//.test(cmd) && !/\bnpm\b/.test(cmd)) ||
220
- /\/work\/\S*\/dist\/index\.mjs/.test(cmd)
226
+ /\/work\/(?:\S*\/)?dist\/index\.mjs/.test(cmd)
221
227
  );
222
228
  }
223
229
 
package/dist/index.mjs CHANGED
@@ -5745,31 +5745,43 @@ var diff_view_default = _template("e", (input) => {
5745
5745
  nearBox.cbs.set(el, cb);
5746
5746
  nearBox.io.observe(el);
5747
5747
  }, "e3", $scope0_id);
5748
+ const scrollToPr = _resume((pr) => {
5749
+ if (!pr) return;
5750
+ const repo = (repos || []).find((r) => r.pr && `${r.worktree}/${r.pr.number}` === pr);
5751
+ if (repo && collapsedRepos.has(repo.id)) {
5752
+ const next = new Set(collapsedRepos);
5753
+ next.delete(repo.id);
5754
+ collapsedRepos = next;
5755
+ }
5756
+ requestAnimationFrame(() => {
5757
+ (((scrollEl) => scrollEl())(_el_read_error)?.querySelector(`[data-pr="${CSS.escape(pr)}"]`))?.scrollIntoView({ block: "start" });
5758
+ });
5759
+ }, "e4", $scope0_id);
5748
5760
  const load = _resume(async (dirty = uncommitted, refresh = false) => {
5749
5761
  loading = true;
5750
5762
  error = null;
5751
5763
  try {
5752
5764
  const q = new URLSearchParams();
5753
5765
  if (dirty) q.set("uncommitted", "1");
5754
- if (input.focusPr) q.set("pr", input.focusPr);
5755
5766
  if (refresh) q.set("refresh", "1");
5756
5767
  const qs = q.size ? `?${q}` : "";
5757
5768
  const [diffData, reviewData] = await Promise.all([api$3(`/api/workspaces/${input.workspaceId}/diff${qs}`), api$3(`/api/workspaces/${input.workspaceId}/review`)]);
5758
5769
  repos = diffData;
5759
5770
  comments = reviewData.comments || [];
5760
5771
  viewed = new Set(reviewData.viewed || []);
5772
+ if (input.focusPr) setTimeout(() => scrollToPr(input.focusPr), 0);
5761
5773
  } catch (err) {
5762
5774
  error = String(err.message || err);
5763
5775
  }
5764
5776
  loading = false;
5765
- }, "e4", $scope0_id);
5777
+ }, "e5", $scope0_id);
5766
5778
  const loadReview = _resume(async () => {
5767
5779
  try {
5768
5780
  const reviewData = await api$3(`/api/workspaces/${input.workspaceId}/review`);
5769
5781
  comments = reviewData.comments || [];
5770
5782
  viewed = new Set(reviewData.viewed || []);
5771
5783
  } catch {}
5772
- }, "e5", $scope0_id);
5784
+ }, "e6", $scope0_id);
5773
5785
  const repoList = repos || [];
5774
5786
  const allFiles = repoList.flatMap((r) => r.files.map((f) => ({
5775
5787
  ...f,
@@ -5792,15 +5804,15 @@ var diff_view_default = _template("e", (input) => {
5792
5804
  return map;
5793
5805
  })();
5794
5806
  const sendPick = (input.sessions || []).some((s) => s.id === sendTarget) ? sendTarget : input.sessions?.[0]?.id ?? null;
5795
- const localDiffers = _resume((repo) => !!repo.pr && !!repo.localHead && (repo.localHead !== repo.head || repo.branch !== repo.pr.headRefName), "e6");
5807
+ const localDiffers = _resume((repo) => !!repo.pr && !!repo.localHead && (repo.localHead !== repo.head || repo.branch !== repo.pr.headRefName), "e7");
5796
5808
  const driftRepos = repoList.filter((r) => r.githubDrift && !dismissedDrift.has(r.id));
5797
5809
  const dismissDrift = _resume(() => {
5798
5810
  dismissedDrift = /* @__PURE__ */ new Set([...dismissedDrift, ...driftRepos.map((r) => r.id)]);
5799
- }, "e7", $scope0_id);
5811
+ }, "e8", $scope0_id);
5800
5812
  const reload = _resume(() => {
5801
5813
  dismissedDrift = /* @__PURE__ */ new Set();
5802
5814
  return load(uncommitted, true);
5803
- }, "e8", $scope0_id);
5815
+ }, "e9", $scope0_id);
5804
5816
  const toggleViewed = _resume((key) => {
5805
5817
  const next = new Set(viewed);
5806
5818
  const isViewed = !next.has(key);
@@ -5818,7 +5830,7 @@ var diff_view_default = _template("e", (input) => {
5818
5830
  }).catch(() => {
5819
5831
  error = "Saving viewed state failed — it may reset on reload.";
5820
5832
  });
5821
- }, "e9", $scope0_id);
5833
+ }, "e10", $scope0_id);
5822
5834
  const saveComment = _resume(async (file, text) => {
5823
5835
  const range = draft;
5824
5836
  draft = null;
@@ -5840,11 +5852,11 @@ var diff_view_default = _template("e", (input) => {
5840
5852
  } catch (err) {
5841
5853
  error = String(err.message || err);
5842
5854
  }
5843
- }, "e10", $scope0_id);
5855
+ }, "e11", $scope0_id);
5844
5856
  const removeComment = _resume(async (id) => {
5845
5857
  comments = comments.filter((c) => c.id !== id);
5846
5858
  await fetch(`/api/review-comments/${id}`, { method: "DELETE" });
5847
- }, "e11", $scope0_id);
5859
+ }, "e12", $scope0_id);
5848
5860
  const clearComments = _resume(async () => {
5849
5861
  comments = [];
5850
5862
  draft = null;
@@ -5853,7 +5865,7 @@ var diff_view_default = _template("e", (input) => {
5853
5865
  headers: { "content-type": "application/json" },
5854
5866
  body: JSON.stringify({ action: "clear" })
5855
5867
  });
5856
- }, "e12", $scope0_id);
5868
+ }, "e13", $scope0_id);
5857
5869
  const copyMarkdown = _resume(async () => {
5858
5870
  if (!await copyText(commentMarkdown(comments, repos))) {
5859
5871
  error = "Copy failed — clipboard needs HTTPS on this browser.";
@@ -5864,7 +5876,7 @@ var diff_view_default = _template("e", (input) => {
5864
5876
  copied = false;
5865
5877
  }, 1500);
5866
5878
  await clearComments();
5867
- }, "e13", $scope0_id);
5879
+ }, "e14", $scope0_id);
5868
5880
  const sendTo = _resume(async (sessionId) => {
5869
5881
  if (!sessionId) return;
5870
5882
  sending = true;
@@ -5884,22 +5896,22 @@ var diff_view_default = _template("e", (input) => {
5884
5896
  error = String(err.message || err);
5885
5897
  sending = false;
5886
5898
  }
5887
- }, "e14", $scope0_id);
5899
+ }, "e15", $scope0_id);
5888
5900
  const jumpTo = _resume((key) => {
5889
5901
  const el = ((scrollEl) => scrollEl())(_el_read_error).querySelector(`details[data-key="${CSS.escape(key)}"]`);
5890
5902
  if (el) {
5891
5903
  el.open = true;
5892
5904
  el.scrollIntoView({ block: "start" });
5893
5905
  }
5894
- }, "e15", $scope0_id);
5906
+ }, "e16", $scope0_id);
5895
5907
  const openFind = _resume(() => {
5896
5908
  findOpen = true;
5897
5909
  findTick++;
5898
- }, "e16", $scope0_id);
5910
+ }, "e17", $scope0_id);
5899
5911
  const onFindState = _resume((next) => {
5900
5912
  findState = next;
5901
5913
  if (next.hit) setTimeout(() => jumpTo(next.hit.key), 0);
5902
- }, "e17", $scope0_id);
5914
+ }, "e18", $scope0_id);
5903
5915
  _html(`<div class=diff-view><aside class=${!treeOpen ? "\"tree closed\"" : "tree"}>`);
5904
5916
  _for_of(repoList.filter((r) => shownByRepo.get(r.id)?.length), (repo) => {
5905
5917
  const $scope5_id = _scope_id();
@@ -5909,8 +5921,8 @@ var diff_view_default = _template("e", (input) => {
5909
5921
  const $scope6_id = _scope_id();
5910
5922
  const $if_content4__dirKey__closures = /* @__PURE__ */ new Set();
5911
5923
  const repoRows = treeRows(shownByRepo.get(repo.id) || []);
5912
- const dirKey = _resume((path) => `${repo.id}/${path}`, "e18", $scope6_id);
5913
- const rowDir = _resume((row) => row.kind === "dir" ? row.path : row.file.path.includes("/") ? row.file.path.slice(0, row.file.path.lastIndexOf("/")) : "", "e19");
5924
+ const dirKey = _resume((path) => `${repo.id}/${path}`, "e19", $scope6_id);
5925
+ const rowDir = _resume((row) => row.kind === "dir" ? row.path : row.file.path.includes("/") ? row.file.path.slice(0, row.file.path.lastIndexOf("/")) : "", "e20");
5914
5926
  const hiddenByCollapse = _resume((row) => {
5915
5927
  const dir = rowDir(row);
5916
5928
  for (const collapsed of collapsedDirs) {
@@ -5920,15 +5932,15 @@ var diff_view_default = _template("e", (input) => {
5920
5932
  if (dir === path || dir.startsWith(`${path}/`)) return true;
5921
5933
  }
5922
5934
  return false;
5923
- }, "e20", $scope6_id);
5935
+ }, "e21", $scope6_id);
5924
5936
  _for_of(repoRows, (row) => {
5925
5937
  const $scope7_id = _scope_id();
5926
5938
  _if(() => {
5927
5939
  if (!hiddenByCollapse(row) && row.kind === "dir") {
5928
5940
  const $scope24_id = _scope_id();
5929
5941
  _html(`<button class=${collapsedDirs.has(dirKey(row.path)) ? "\"tree-dir dim mono closed\"" : "\"tree-dir dim mono\""}${_attr("title", row.path)}${_attr_style(`padding-left:${.35 + row.depth * .75}rem`)}><span class=tree-chev>${collapsedDirs.has(dirKey(row.path)) ? "▸" : "▾"}${_el_resume($scope24_id, "b")}</span>${_escape(row.label)}${_el_resume($scope24_id, "c")}/</button>${_el_resume($scope24_id, "a")}`);
5930
- _script($scope24_id, "e29");
5931
- _subscribe($if_content4__dirKey__closures, _subscribe($collapsedDirs__closures, writeScope($scope24_id, { Cd1: 1 })));
5942
+ _script($scope24_id, "e30");
5943
+ _subscribe($if_content4__dirKey__closures, _subscribe($collapsedDirs__closures, writeScope($scope24_id, { Cd3: 1 })));
5932
5944
  return 0;
5933
5945
  } else if (!hiddenByCollapse(row) && row.kind !== "dir") {
5934
5946
  const $scope8_id = _scope_id();
@@ -5942,7 +5954,7 @@ var diff_view_default = _template("e", (input) => {
5942
5954
  }
5943
5955
  }, $scope8_id, "e", 1, 1, 1, 0, 1);
5944
5956
  _html(`</button>${_el_resume($scope8_id, "a")}`);
5945
- _script($scope8_id, "e30");
5957
+ _script($scope8_id, "e31");
5946
5958
  _subscribe($commentsByFile__closures, _subscribe($viewed__closures, writeScope($scope8_id, {})));
5947
5959
  return 1;
5948
5960
  }
@@ -5968,7 +5980,7 @@ var diff_view_default = _template("e", (input) => {
5968
5980
  }
5969
5981
  }, $scope5_id, "d");
5970
5982
  _html("</div>");
5971
- _script($scope5_id, "e31");
5983
+ _script($scope5_id, "e32");
5972
5984
  writeScope($scope5_id, { g: repo?.id });
5973
5985
  }, "id", $scope0_id, "a", 1, 1, 1, "</aside>", 1);
5974
5986
  _html("<div class=diff-col><div class=diff-head>");
@@ -5978,7 +5990,7 @@ var diff_view_default = _template("e", (input) => {
5978
5990
  _html("<button class=icon-btn title=\"Back to terminal\">");
5979
5991
  icon_back_default({ size: 14 });
5980
5992
  _html(`</button>${_el_resume($scope1_id, "a")}`);
5981
- _script($scope1_id, "e32");
5993
+ _script($scope1_id, "e33");
5982
5994
  writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
5983
5995
  return 0;
5984
5996
  }
@@ -5992,7 +6004,7 @@ var diff_view_default = _template("e", (input) => {
5992
6004
  if ((input.sessions || []).length === 1) {
5993
6005
  const $scope3_id = _scope_id();
5994
6006
  _html(`<button class="btn primary"${_attr("disabled", sending)}>${sending ? "Sending…" : `Send to ${_escape(`${input.sessions[0].title || input.sessions[0].agent}`)}`}${_el_resume($scope3_id, "b")}</button>${_el_resume($scope3_id, "a")}`);
5995
- _script($scope3_id, "e33");
6007
+ _script($scope3_id, "e34");
5996
6008
  _subscribe($sending__closures, _subscribe($si__input_sessions_0_agent && $input_sessions_0_agent__closures, _subscribe($si__input_sessions_0_title && $input_sessions_0_title__closures, writeScope($scope3_id, { _: _scope_with_id($scope2_id) }))));
5997
6009
  return 0;
5998
6010
  } else if ((input.sessions || []).length) {
@@ -6009,15 +6021,15 @@ var diff_view_default = _template("e", (input) => {
6009
6021
  }, "id", $scope4_id, "c", $sg__input_sessions, 1, $sg__input_sessions, "</select>", 1);
6010
6022
  });
6011
6023
  _html("</span>");
6012
- _script($scope4_id, "e34");
6024
+ _script($scope4_id, "e35");
6013
6025
  _subscribe($sendTarget__closures, _subscribe($sending__closures, _subscribe($si__input_sessions && $input_sessions__closures, writeScope($scope4_id, {
6014
6026
  _: _scope_with_id($scope2_id),
6015
- Ccu: 1
6027
+ Ccw: 1
6016
6028
  }))));
6017
6029
  return 1;
6018
6030
  }
6019
6031
  }, $scope2_id, "c", $sg__input_sessions, $sg__input_sessions, $sg__input_sessions, 0, 1);
6020
- _script($scope2_id, "e35");
6032
+ _script($scope2_id, "e36");
6021
6033
  writeScope($scope2_id, {});
6022
6034
  return 0;
6023
6035
  }
@@ -6042,7 +6054,7 @@ var diff_view_default = _template("e", (input) => {
6042
6054
  value: fileFilter,
6043
6055
  onChange: _resume(function(q) {
6044
6056
  fileFilter = q;
6045
- }, "e21", $scope0_id)
6057
+ }, "e22", $scope0_id)
6046
6058
  });
6047
6059
  _html("</div>");
6048
6060
  _if(() => {
@@ -6054,7 +6066,7 @@ var diff_view_default = _template("e", (input) => {
6054
6066
  tick: findTick,
6055
6067
  onState: _resume(function(s) {
6056
6068
  onFindState(s);
6057
- }, "e22", $scope23_id),
6069
+ }, "e23", $scope23_id),
6058
6070
  onClose: _resume(function() {
6059
6071
  findOpen = false;
6060
6072
  findState = {
@@ -6062,7 +6074,7 @@ var diff_view_default = _template("e", (input) => {
6062
6074
  hit: null,
6063
6075
  keys: []
6064
6076
  };
6065
- }, "e23", $scope23_id)
6077
+ }, "e24", $scope23_id)
6066
6078
  });
6067
6079
  writeScope($scope23_id, { a: _existing_scope($childScope2) });
6068
6080
  return 0;
@@ -6073,7 +6085,7 @@ var diff_view_default = _template("e", (input) => {
6073
6085
  if (error) {
6074
6086
  const $scope17_id = _scope_id();
6075
6087
  _html(`<p class=toast-error>${_escape(error)}${_el_resume($scope17_id, "a")} <button>×</button>${_el_resume($scope17_id, "b")}</p>`);
6076
- _script($scope17_id, "e36");
6088
+ _script($scope17_id, "e37");
6077
6089
  writeScope($scope17_id, {});
6078
6090
  return 0;
6079
6091
  }
@@ -6098,7 +6110,7 @@ var diff_view_default = _template("e", (input) => {
6098
6110
  writeScope($scope32_id, {});
6099
6111
  }, "id", $scope18_id, "a");
6100
6112
  _html(`<button class=btn${_attr("disabled", loading)}>${loading ? "Reloading…" : "Reload"}${_el_resume($scope18_id, "c")}</button>${_el_resume($scope18_id, "b")}<button title=Dismiss>×</button>${_el_resume($scope18_id, "d")}</p>`);
6101
- _script($scope18_id, "e37");
6113
+ _script($scope18_id, "e38");
6102
6114
  writeScope($scope18_id, {});
6103
6115
  return 0;
6104
6116
  }
@@ -6160,7 +6172,7 @@ var diff_view_default = _template("e", (input) => {
6160
6172
  if (repo.pr) {
6161
6173
  const $scope34_id = _scope_id();
6162
6174
  _html(`<a class="chip pr"${_attr("href", `${repo.pr.url}/files`)} target=_blank rel=noopener${_attr("title", `${repo.pr.title} — ${repo.pr.headRefName} ${repo.head} vs ${repo.base} ${repo.baseSha}`)}>#<!>${_escape(repo.pr.number)}${_el_resume($scope34_id, "b")}</a>${_el_resume($scope34_id, "a")}<span class=dim>${_escape(repo.pr.title)}${_el_resume($scope34_id, "c")}</span>`);
6163
- _script($scope34_id, "e38");
6175
+ _script($scope34_id, "e39");
6164
6176
  _subscribe($for_content3__repo_baseSha__closures, _subscribe($for_content3__repo_base__closures, _subscribe($for_content3__repo_head__closures, _subscribe($for_content3__repo_pr_headRefName__closures, _subscribe($for_content3__repo_pr_title__closures, _subscribe($for_content3__repo_pr_url__closures, _subscribe($for_content3__repo_pr_number__closures, writeScope($scope34_id, {
6165
6177
  Ca4: 2,
6166
6178
  Ca5: 2,
@@ -6184,8 +6196,8 @@ var diff_view_default = _template("e", (input) => {
6184
6196
  }
6185
6197
  }, $scope25_id, "i", 1, 1, 1, 0, 1);
6186
6198
  _html(`</button>${_el_resume($scope25_id, "a")}`);
6187
- _script($scope25_id, "e39");
6188
- _subscribe($for_content3__repo_branch__closures, _subscribe($for_content3__repo_baseSha__closures, _subscribe($for_content3__repo_base__closures, _subscribe($for_content3__repo_head__closures, _subscribe($for_content3__repo_worktree__closures, _subscribe($for_content3__repo_pr__closures, _subscribe($for_content3__repo_id__closures, _subscribe($for_content3__repo__closures, _subscribe($collapsedRepos__closures, writeScope($scope25_id, { Cd2: 1 }))))))))));
6199
+ _script($scope25_id, "e40");
6200
+ _subscribe($for_content3__repo_branch__closures, _subscribe($for_content3__repo_baseSha__closures, _subscribe($for_content3__repo_base__closures, _subscribe($for_content3__repo_head__closures, _subscribe($for_content3__repo_worktree__closures, _subscribe($for_content3__repo_pr__closures, _subscribe($for_content3__repo_id__closures, _subscribe($for_content3__repo__closures, _subscribe($collapsedRepos__closures, writeScope($scope25_id, { Cd4: 1 }))))))))));
6189
6201
  return 0;
6190
6202
  } else {
6191
6203
  const $scope28_id = _scope_id();
@@ -6275,7 +6287,7 @@ var diff_view_default = _template("e", (input) => {
6275
6287
  {
6276
6288
  const $scope26_id = _scope_id();
6277
6289
  _html(`<div class=diff-wait></div>${_el_resume($scope26_id, "a")}`);
6278
- _script($scope26_id, "e40");
6290
+ _script($scope26_id, "e41");
6279
6291
  writeScope($scope26_id, {});
6280
6292
  return 0;
6281
6293
  }
@@ -6285,7 +6297,7 @@ var diff_view_default = _template("e", (input) => {
6285
6297
  }
6286
6298
  }, $scope12_id, "i");
6287
6299
  _html(`</details>${_el_resume($scope12_id, "a")}`);
6288
- _script($scope12_id, "e41");
6300
+ _script($scope12_id, "e42");
6289
6301
  _subscribe($toggleViewed2__closures, _subscribe($commentsByFile__closures, _subscribe($shownKeySet__closures, _subscribe($viewed__closures, writeScope($scope12_id, {
6290
6302
  k: file,
6291
6303
  l: file?.key,
@@ -6299,8 +6311,8 @@ var diff_view_default = _template("e", (input) => {
6299
6311
  a0: $for_content4__file__closures,
6300
6312
  a1: $for_content4__file_key__closures,
6301
6313
  a2: $for_content4__fileComments__closures,
6302
- Cco: 1,
6303
- Cdc: 1
6314
+ Ccq: 1,
6315
+ Cde: 1
6304
6316
  })))));
6305
6317
  }, "key", $scope11_id, "a", 1, 1, 1, "</div>", 1);
6306
6318
  _subscribe($for_content3__repoFiles__closures, writeScope($scope11_id, {}));
@@ -6349,11 +6361,11 @@ var diff_view_default = _template("e", (input) => {
6349
6361
  _html(`</div>${_el_resume($scope0_id, "t")}</div>`);
6350
6362
  _if(() => {}, $scope0_id, "a2");
6351
6363
  _html("</div>");
6352
- _script($scope0_id, "e44");
6353
6364
  _script($scope0_id, "e45");
6365
+ _script($scope0_id, "e46");
6354
6366
  writeScope($scope0_id, {
6355
- a5: input.focusPr,
6356
- a6: input.workspaceId,
6367
+ a5: input.workspaceId,
6368
+ a6: input.focusPr,
6357
6369
  a7: input.active,
6358
6370
  a8: input.sessions,
6359
6371
  aa: input.onSent,
@@ -6372,65 +6384,66 @@ var diff_view_default = _template("e", (input) => {
6372
6384
  ar: sendTarget,
6373
6385
  at: fileFilter,
6374
6386
  au: uncommitted,
6375
- aw: treeOpen,
6376
- az: findTick,
6377
- b1: findState?.query,
6378
- b3: findState?.hit,
6379
- b4: findState?.hit?.key,
6380
- b5: findState?.hit?.repo,
6381
- b6: collapsedDirs,
6382
- b7: collapsedRepos,
6387
+ av: treeOpen,
6388
+ ay: findTick,
6389
+ b0: findState?.query,
6390
+ b2: findState?.hit,
6391
+ b3: findState?.hit?.key,
6392
+ b4: findState?.hit?.repo,
6393
+ b5: collapsedDirs,
6394
+ b6: collapsedRepos,
6383
6395
  b8: dismissedDrift,
6384
6396
  b9: toggleRepo,
6385
6397
  bb: nearBox.cbs,
6386
6398
  bc: nearBox.io,
6387
6399
  be: observeNear,
6388
- bf: load,
6389
- bh: loadReview,
6390
- bj: repoList,
6391
- bl: repoList.length,
6392
- bm: allFiles,
6393
- bn: allFiles?.length,
6394
- bo: fileMatch,
6395
- bq: fileFiltered,
6396
- br: findKeys,
6397
- bt: shownFiles,
6398
- bx: shownKeySet,
6399
- by: filesByRepo,
6400
- bz: shownByRepo,
6401
- c1: commentsByFile,
6402
- c2: sendPick,
6403
- c3: localDiffers,
6404
- c5: driftRepos,
6405
- c8: dismissDrift,
6406
- c9: reload,
6407
- ca: toggleViewed,
6408
- cb: saveComment,
6409
- cc: removeComment,
6410
- cd: clearComments,
6411
- cg: copyMarkdown,
6412
- ch: sendTo,
6413
- ci: jumpTo,
6414
- cj: openFind,
6415
- ck: onFindState,
6416
- d1: $collapsedDirs__closures,
6417
- co: $viewed__closures,
6418
- dc: $commentsByFile__closures,
6419
- db: $shownByRepo__closures,
6420
- cm: $si__input_sessions_0_title && $input_sessions_0_title__closures,
6421
- cn: $si__input_sessions_0_agent && $input_sessions_0_agent__closures,
6422
- cu: $sending__closures,
6423
- cl: $si__input_sessions && $input_sessions__closures,
6424
- cv: $sendTarget__closures,
6400
+ bf: scrollToPr,
6401
+ bh: load,
6402
+ bj: loadReview,
6403
+ bl: repoList,
6404
+ bn: repoList.length,
6405
+ bo: allFiles,
6406
+ bp: allFiles?.length,
6407
+ bq: fileMatch,
6408
+ bs: fileFiltered,
6409
+ bt: findKeys,
6410
+ bv: shownFiles,
6411
+ bz: shownKeySet,
6412
+ c0: filesByRepo,
6413
+ c1: shownByRepo,
6414
+ c3: commentsByFile,
6415
+ c4: sendPick,
6416
+ c5: localDiffers,
6417
+ c7: driftRepos,
6418
+ ca: dismissDrift,
6419
+ cb: reload,
6420
+ cc: toggleViewed,
6421
+ cd: saveComment,
6422
+ ce: removeComment,
6423
+ cf: clearComments,
6424
+ ci: copyMarkdown,
6425
+ cj: sendTo,
6426
+ ck: jumpTo,
6427
+ cl: openFind,
6428
+ cm: onFindState,
6429
+ d3: $collapsedDirs__closures,
6430
+ cq: $viewed__closures,
6431
+ de: $commentsByFile__closures,
6432
+ dd: $shownByRepo__closures,
6433
+ co: $si__input_sessions_0_title && $input_sessions_0_title__closures,
6434
+ cp: $si__input_sessions_0_agent && $input_sessions_0_agent__closures,
6435
+ cw: $sending__closures,
6436
+ cn: $si__input_sessions && $input_sessions__closures,
6437
+ cx: $sendTarget__closures,
6425
6438
  r: _existing_scope($childScope),
6426
- d2: $collapsedRepos__closures,
6427
- cq: $draft__closures,
6428
- dg: $saveComment2__closures,
6429
- dh: $removeComment2__closures,
6430
- d9: $shownKeySet__closures,
6431
- df: $toggleViewed2__closures,
6432
- d0: $findState_hit_repo__closures,
6433
- d5: $repoList_length__closures
6439
+ d4: $collapsedRepos__closures,
6440
+ cs: $draft__closures,
6441
+ di: $saveComment2__closures,
6442
+ dj: $removeComment2__closures,
6443
+ db: $shownKeySet__closures,
6444
+ dh: $toggleViewed2__closures,
6445
+ d2: $findState_hit_repo__closures,
6446
+ d7: $repoList_length__closures
6434
6447
  });
6435
6448
  _resume_branch($scope0_id);
6436
6449
  });
@@ -21697,4 +21710,4 @@ server.listen(port, () => {
21697
21710
  //#endregion
21698
21711
  export {};
21699
21712
 
21700
- ;var __MARKO_MANIFEST__={"esfPH6H":{"block":[2,"stylesheet#/assets/index-CExZozP4.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/index-CExZozP4.css\"",">"],"defer":[2,"/assets/index-DQjYJ4v3.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/index-DQjYJ4v3.js\"","></script>"]}};
21713
+ ;var __MARKO_MANIFEST__={"esfPH6H":{"block":[2,"stylesheet#/assets/index-CExZozP4.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/index-CExZozP4.css\"",">"],"defer":[2,"/assets/index-CLfm87a5.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/index-CLfm87a5.js\"","></script>"]}};