@dylanpiercey/work 0.0.7 → 0.0.8

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 (153) hide show
  1. package/dist/index.mjs +169 -142
  2. package/dist/public/assets/{_BMbg6Q_32.js → _1sfledaC2.js} +2 -2
  3. package/dist/public/assets/{_BMbg6Q_32.js.map → _1sfledaC2.js.map} +1 -1
  4. package/dist/public/assets/{_ehtlhcCR.js → _5FPBKXmV.js} +2 -2
  5. package/dist/public/assets/{_ehtlhcCR.js.map → _5FPBKXmV.js.map} +1 -1
  6. package/dist/public/assets/{_Tqwd1-8Z2.js → _8JbqtAcO2.js} +2 -2
  7. package/dist/public/assets/{_Tqwd1-8Z2.js.map → _8JbqtAcO2.js.map} +1 -1
  8. package/dist/public/assets/{_BKNwgsJI2.js → _9T4KD6Cx2.js} +2 -2
  9. package/dist/public/assets/{_BKNwgsJI2.js.map → _9T4KD6Cx2.js.map} +1 -1
  10. package/dist/public/assets/{_YMDMk2XX2.js → _ArCUqa6q2.js} +2 -2
  11. package/dist/public/assets/{_YMDMk2XX2.js.map → _ArCUqa6q2.js.map} +1 -1
  12. package/dist/public/assets/{_DHsfzMP_.js → _B3wDsGH_.js} +2 -2
  13. package/dist/public/assets/{_DHsfzMP_.js.map → _B3wDsGH_.js.map} +1 -1
  14. package/dist/public/assets/{_BfxQEfor.js → _B6VcGcFS.js} +2 -2
  15. package/dist/public/assets/{_BfxQEfor.js.map → _B6VcGcFS.js.map} +1 -1
  16. package/dist/public/assets/{_Ch0uVmAz2.js → _B8hRUvsg2.js} +2 -2
  17. package/dist/public/assets/{_Ch0uVmAz2.js.map → _B8hRUvsg2.js.map} +1 -1
  18. package/dist/public/assets/{_Cx_br0wh2.js → _BA1Flvg32.js} +2 -2
  19. package/dist/public/assets/{_Cx_br0wh2.js.map → _BA1Flvg32.js.map} +1 -1
  20. package/dist/public/assets/{_Bx6coq7v.js → _BBbOvFnN.js} +2 -2
  21. package/dist/public/assets/{_Bx6coq7v.js.map → _BBbOvFnN.js.map} +1 -1
  22. package/dist/public/assets/{_rMU5-5Oc2.js → _BENakU6F2.js} +2 -2
  23. package/dist/public/assets/{_rMU5-5Oc2.js.map → _BENakU6F2.js.map} +1 -1
  24. package/dist/public/assets/{_b9uzSPzx.js → _BKZkyaFV.js} +2 -2
  25. package/dist/public/assets/{_b9uzSPzx.js.map → _BKZkyaFV.js.map} +1 -1
  26. package/dist/public/assets/{_BE5Ltp0D.js → _BKayEvX0.js} +2 -2
  27. package/dist/public/assets/{_BE5Ltp0D.js.map → _BKayEvX0.js.map} +1 -1
  28. package/dist/public/assets/{_DwmbSeOR2.js → _BRmBVeT02.js} +2 -2
  29. package/dist/public/assets/{_DwmbSeOR2.js.map → _BRmBVeT02.js.map} +1 -1
  30. package/dist/public/assets/{_BBbcogWL2.js → _BSK-jOsW2.js} +2 -2
  31. package/dist/public/assets/{_BBbcogWL2.js.map → _BSK-jOsW2.js.map} +1 -1
  32. package/dist/public/assets/{_D0Dk2eMz.js → _BYiCMSp_.js} +2 -2
  33. package/dist/public/assets/{_D0Dk2eMz.js.map → _BYiCMSp_.js.map} +1 -1
  34. package/dist/public/assets/{_CF3V7ZyO2.js → _BZ1vsOtU2.js} +2 -2
  35. package/dist/public/assets/{_CF3V7ZyO2.js.map → _BZ1vsOtU2.js.map} +1 -1
  36. package/dist/public/assets/{_BEY9qyEj.js → _BZj2u1P8.js} +2 -2
  37. package/dist/public/assets/{_BEY9qyEj.js.map → _BZj2u1P8.js.map} +1 -1
  38. package/dist/public/assets/{_B_U5SPso.js → _BdjtVej2.js} +2 -2
  39. package/dist/public/assets/{_B_U5SPso.js.map → _BdjtVej2.js.map} +1 -1
  40. package/dist/public/assets/{_CJlF2h3E2.js → _BfklLvTH2.js} +2 -2
  41. package/dist/public/assets/{_CJlF2h3E2.js.map → _BfklLvTH2.js.map} +1 -1
  42. package/dist/public/assets/{_Tbp9N0Pq.js → _ByVsRQi_.js} +2 -2
  43. package/dist/public/assets/{_Tbp9N0Pq.js.map → _ByVsRQi_.js.map} +1 -1
  44. package/dist/public/assets/{_UPkRAhR-.js → _BzzAJ7NO.js} +2 -2
  45. package/dist/public/assets/{_UPkRAhR-.js.map → _BzzAJ7NO.js.map} +1 -1
  46. package/dist/public/assets/{_D4uduNrb.js → _C7N-1UWP.js} +2 -2
  47. package/dist/public/assets/{_D4uduNrb.js.map → _C7N-1UWP.js.map} +1 -1
  48. package/dist/public/assets/{_B7K5PePe.js → _C7qjJec5.js} +2 -2
  49. package/dist/public/assets/{_B7K5PePe.js.map → _C7qjJec5.js.map} +1 -1
  50. package/dist/public/assets/{_fZl_Qerv.js → _CDqUkraW.js} +2 -2
  51. package/dist/public/assets/{_fZl_Qerv.js.map → _CDqUkraW.js.map} +1 -1
  52. package/dist/public/assets/{_BDxD__Ca.js → _CEhaT_yw.js} +2 -2
  53. package/dist/public/assets/{_BDxD__Ca.js.map → _CEhaT_yw.js.map} +1 -1
  54. package/dist/public/assets/{_Wq5Lwig62.js → _CGshnRGq2.js} +2 -2
  55. package/dist/public/assets/{_Wq5Lwig62.js.map → _CGshnRGq2.js.map} +1 -1
  56. package/dist/public/assets/{_B49hrT7F.js → _CHnVT46K.js} +2 -2
  57. package/dist/public/assets/{_B49hrT7F.js.map → _CHnVT46K.js.map} +1 -1
  58. package/dist/public/assets/{_DBj-L0Ww.js → _CJkEzRYS.js} +2 -2
  59. package/dist/public/assets/{_DBj-L0Ww.js.map → _CJkEzRYS.js.map} +1 -1
  60. package/dist/public/assets/{_C_K-IZx7.js → _CLKEqaNz.js} +2 -2
  61. package/dist/public/assets/{_C_K-IZx7.js.map → _CLKEqaNz.js.map} +1 -1
  62. package/dist/public/assets/{_js4WyaBT.js → _CRzez65S.js} +2 -2
  63. package/dist/public/assets/{_js4WyaBT.js.map → _CRzez65S.js.map} +1 -1
  64. package/dist/public/assets/{_Din9HEMs.js → _CVTm837N.js} +2 -2
  65. package/dist/public/assets/{_Din9HEMs.js.map → _CVTm837N.js.map} +1 -1
  66. package/dist/public/assets/{_Bhn-MKXG2.js → _CfcBd2P72.js} +2 -2
  67. package/dist/public/assets/{_Bhn-MKXG2.js.map → _CfcBd2P72.js.map} +1 -1
  68. package/dist/public/assets/{_WXstblxD2.js → _CghRvWTz2.js} +2 -2
  69. package/dist/public/assets/{_WXstblxD2.js.map → _CghRvWTz2.js.map} +1 -1
  70. package/dist/public/assets/{_BTnhYWUT.js → _CiLa9EZD.js} +2 -2
  71. package/dist/public/assets/{_BTnhYWUT.js.map → _CiLa9EZD.js.map} +1 -1
  72. package/dist/public/assets/{_WO2um4ce2.js → _ClFfFrAg2.js} +2 -2
  73. package/dist/public/assets/{_WO2um4ce2.js.map → _ClFfFrAg2.js.map} +1 -1
  74. package/dist/public/assets/{_Ck30GMoL.js → _ClP4oh7a.js} +2 -2
  75. package/dist/public/assets/{_Ck30GMoL.js.map → _ClP4oh7a.js.map} +1 -1
  76. package/dist/public/assets/{_Cpqbvj5d.js → _CraDhcnw.js} +2 -2
  77. package/dist/public/assets/{_Cpqbvj5d.js.map → _CraDhcnw.js.map} +1 -1
  78. package/dist/public/assets/{_T3Aahgg12.js → _Cu2ARJ6m2.js} +2 -2
  79. package/dist/public/assets/{_T3Aahgg12.js.map → _Cu2ARJ6m2.js.map} +1 -1
  80. package/dist/public/assets/{_DS1r4Da7.js → _Cuarrf-F.js} +2 -2
  81. package/dist/public/assets/{_DS1r4Da7.js.map → _Cuarrf-F.js.map} +1 -1
  82. package/dist/public/assets/{_BFPTVBh82.js → _CxREVo2W2.js} +2 -2
  83. package/dist/public/assets/{_BFPTVBh82.js.map → _CxREVo2W2.js.map} +1 -1
  84. package/dist/public/assets/{_BqeWVi6c.js → _DDkF3p8s.js} +2 -2
  85. package/dist/public/assets/{_BqeWVi6c.js.map → _DDkF3p8s.js.map} +1 -1
  86. package/dist/public/assets/{_BQqn5S5j.js → _DNJJM0AE.js} +2 -2
  87. package/dist/public/assets/{_BQqn5S5j.js.map → _DNJJM0AE.js.map} +1 -1
  88. package/dist/public/assets/{_Dk-i8IAv.js → _DPOTu7jR.js} +2 -2
  89. package/dist/public/assets/{_Dk-i8IAv.js.map → _DPOTu7jR.js.map} +1 -1
  90. package/dist/public/assets/{_CIUf_Jmq.js → _DWpL0T8T.js} +2 -2
  91. package/dist/public/assets/{_CIUf_Jmq.js.map → _DWpL0T8T.js.map} +1 -1
  92. package/dist/public/assets/{_B8mEgNvE.js → _DatWcE_l.js} +2 -2
  93. package/dist/public/assets/{_B8mEgNvE.js.map → _DatWcE_l.js.map} +1 -1
  94. package/dist/public/assets/{_BxWguH11.js → _DbScTuHX.js} +2 -2
  95. package/dist/public/assets/{_BxWguH11.js.map → _DbScTuHX.js.map} +1 -1
  96. package/dist/public/assets/{_DZp-Xvf0.js → _Dlqi-FuG.js} +2 -2
  97. package/dist/public/assets/{_DZp-Xvf0.js.map → _Dlqi-FuG.js.map} +1 -1
  98. package/dist/public/assets/{_D409hg3n.js → _Dmvx0mCq.js} +2 -2
  99. package/dist/public/assets/{_D409hg3n.js.map → _Dmvx0mCq.js.map} +1 -1
  100. package/dist/public/assets/{_D0PyqJyr2.js → _Doc3xk-E2.js} +2 -2
  101. package/dist/public/assets/{_D0PyqJyr2.js.map → _Doc3xk-E2.js.map} +1 -1
  102. package/dist/public/assets/{_BE8gA6TO.js → _DpCf_atU.js} +2 -2
  103. package/dist/public/assets/{_BE8gA6TO.js.map → _DpCf_atU.js.map} +1 -1
  104. package/dist/public/assets/{_dfWRmwy82.js → _DsdF3uU02.js} +2 -2
  105. package/dist/public/assets/{_dfWRmwy82.js.map → _DsdF3uU02.js.map} +1 -1
  106. package/dist/public/assets/{_DC9uMckf2.js → _Du7L3DNJ2.js} +2 -2
  107. package/dist/public/assets/{_DC9uMckf2.js.map → _Du7L3DNJ2.js.map} +1 -1
  108. package/dist/public/assets/{_JDPB-L9T2.js → _DzcnHy3e2.js} +2 -2
  109. package/dist/public/assets/{_JDPB-L9T2.js.map → _DzcnHy3e2.js.map} +1 -1
  110. package/dist/public/assets/{_CzBadWXq.js → _FkD5nJ3p.js} +2 -2
  111. package/dist/public/assets/{_CzBadWXq.js.map → _FkD5nJ3p.js.map} +1 -1
  112. package/dist/public/assets/{_CTkR0S8t.js → _KZaj47gf.js} +2 -2
  113. package/dist/public/assets/{_CTkR0S8t.js.map → _KZaj47gf.js.map} +1 -1
  114. package/dist/public/assets/{_C8Lw1Tmb.js → _MY6ncoWy.js} +2 -2
  115. package/dist/public/assets/{_C8Lw1Tmb.js.map → _MY6ncoWy.js.map} +1 -1
  116. package/dist/public/assets/{_B-_0cKbG.js → _PLe738he.js} +2 -2
  117. package/dist/public/assets/{_B-_0cKbG.js.map → _PLe738he.js.map} +1 -1
  118. package/dist/public/assets/{_Dz57V0my.js → _UIRw8u-5.js} +2 -2
  119. package/dist/public/assets/{_Dz57V0my.js.map → _UIRw8u-5.js.map} +1 -1
  120. package/dist/public/assets/{_DhqQ2yva.js → _VQFhNNlC.js} +2 -2
  121. package/dist/public/assets/{_DhqQ2yva.js.map → _VQFhNNlC.js.map} +1 -1
  122. package/dist/public/assets/{_C2TX6Jrr2.js → _VxrPs6zz2.js} +2 -2
  123. package/dist/public/assets/{_C2TX6Jrr2.js.map → _VxrPs6zz2.js.map} +1 -1
  124. package/dist/public/assets/{_CNDjHC1Q.js → _Yc_Nhrnz.js} +2 -2
  125. package/dist/public/assets/{_CNDjHC1Q.js.map → _Yc_Nhrnz.js.map} +1 -1
  126. package/dist/public/assets/{_okHqOb61.js → _ZXbjL1cp.js} +2 -2
  127. package/dist/public/assets/{_okHqOb61.js.map → _ZXbjL1cp.js.map} +1 -1
  128. package/dist/public/assets/{_BTJ_-CIz.js → _Zn6WQhNB.js} +2 -2
  129. package/dist/public/assets/{_BTJ_-CIz.js.map → _Zn6WQhNB.js.map} +1 -1
  130. package/dist/public/assets/{_DPDjFNn3.js → _d0JPWXs6.js} +2 -2
  131. package/dist/public/assets/{_DPDjFNn3.js.map → _d0JPWXs6.js.map} +1 -1
  132. package/dist/public/assets/{_CDtlFxZX.js → _kFADAUVE.js} +2 -2
  133. package/dist/public/assets/{_CDtlFxZX.js.map → _kFADAUVE.js.map} +1 -1
  134. package/dist/public/assets/{_B1F2GQHq2.js → _lFKA9njW2.js} +2 -2
  135. package/dist/public/assets/{_B1F2GQHq2.js.map → _lFKA9njW2.js.map} +1 -1
  136. package/dist/public/assets/{_CqNVh0h5.js → _ljVbYQrb.js} +2 -2
  137. package/dist/public/assets/{_CqNVh0h5.js.map → _ljVbYQrb.js.map} +1 -1
  138. package/dist/public/assets/{_DvdWf5o-.js → _lq6Mp4lM.js} +2 -2
  139. package/dist/public/assets/{_DvdWf5o-.js.map → _lq6Mp4lM.js.map} +1 -1
  140. package/dist/public/assets/{_DbP8pES9.js → _mIMmc1-4.js} +2 -2
  141. package/dist/public/assets/{_DbP8pES9.js.map → _mIMmc1-4.js.map} +1 -1
  142. package/dist/public/assets/{_BkEOzqHA2.js → _mwzbhNSE2.js} +2 -2
  143. package/dist/public/assets/{_BkEOzqHA2.js.map → _mwzbhNSE2.js.map} +1 -1
  144. package/dist/public/assets/{_B4R8SNvy.js → _mz-it25q.js} +2 -2
  145. package/dist/public/assets/{_B4R8SNvy.js.map → _mz-it25q.js.map} +1 -1
  146. package/dist/public/assets/{_BLuo0bJF.js → _tEWpbjjW.js} +2 -2
  147. package/dist/public/assets/{_BLuo0bJF.js.map → _tEWpbjjW.js.map} +1 -1
  148. package/dist/public/assets/{_CawcEo7A.js → _x39l6v9i.js} +2 -2
  149. package/dist/public/assets/{_CawcEo7A.js.map → _x39l6v9i.js.map} +1 -1
  150. package/dist/public/assets/{index-Bx9UtyrE.js → index-BnMs3duC.js} +62 -62
  151. package/dist/public/assets/index-BnMs3duC.js.map +1 -0
  152. package/package.json +1 -1
  153. package/dist/public/assets/index-Bx9UtyrE.js.map +0 -1
package/dist/index.mjs CHANGED
@@ -5584,6 +5584,7 @@ var diff_view_default = _template("d", (input) => {
5584
5584
  let treeOpen = diffTreeOpen();
5585
5585
  let collapsedDirs = /* @__PURE__ */ new Set();
5586
5586
  let collapsedRepos = /* @__PURE__ */ new Set();
5587
+ let dismissedDrift = /* @__PURE__ */ new Set();
5587
5588
  const toggleRepo = _resume((worktree) => {
5588
5589
  const next = new Set(collapsedRepos);
5589
5590
  if (!next.delete(worktree)) next.add(worktree);
@@ -5604,13 +5605,14 @@ var diff_view_default = _template("d", (input) => {
5604
5605
  nearBox.cbs.set(el, cb);
5605
5606
  nearBox.io.observe(el);
5606
5607
  }, "d4", $scope0_id);
5607
- const load = _resume(async (dirty = uncommitted) => {
5608
+ const load = _resume(async (dirty = uncommitted, refresh = false) => {
5608
5609
  loading = true;
5609
5610
  error = null;
5610
5611
  try {
5611
5612
  const q = new URLSearchParams();
5612
5613
  if (dirty) q.set("uncommitted", "1");
5613
5614
  if (input.focusPr) q.set("pr", input.focusPr);
5615
+ if (refresh) q.set("refresh", "1");
5614
5616
  const qs = q.size ? `?${q}` : "";
5615
5617
  const [diffData, reviewData] = await Promise.all([api$3(`/api/workspaces/${input.workspaceId}/diff${qs}`), api$3(`/api/workspaces/${input.workspaceId}/review`)]);
5616
5618
  repos = diffData;
@@ -5647,6 +5649,14 @@ var diff_view_default = _template("d", (input) => {
5647
5649
  })();
5648
5650
  const sendPick = (input.sessions || []).some((s) => s.id === sendTarget) ? sendTarget : input.sessions?.[0]?.id ?? null;
5649
5651
  const localDiffers = _resume((repo) => !!repo.pr && !!repo.localHead && (repo.localHead !== repo.head || repo.branch !== repo.pr.headRefName), "d7");
5652
+ const driftRepos = repoList.filter((r) => r.githubDrift && !dismissedDrift.has(r.id));
5653
+ const dismissDrift = _resume(() => {
5654
+ dismissedDrift = /* @__PURE__ */ new Set([...dismissedDrift, ...driftRepos.map((r) => r.id)]);
5655
+ }, "d8", $scope0_id);
5656
+ const reload = _resume(() => {
5657
+ dismissedDrift = /* @__PURE__ */ new Set();
5658
+ return load(uncommitted, true);
5659
+ }, "d9", $scope0_id);
5650
5660
  const toggleViewed = _resume((key) => {
5651
5661
  const next = new Set(viewed);
5652
5662
  const isViewed = !next.has(key);
@@ -5664,7 +5674,7 @@ var diff_view_default = _template("d", (input) => {
5664
5674
  }).catch(() => {
5665
5675
  error = "Saving viewed state failed — it may reset on reload.";
5666
5676
  });
5667
- }, "d8", $scope0_id);
5677
+ }, "d10", $scope0_id);
5668
5678
  const saveComment = _resume(async (file, text) => {
5669
5679
  const range = draft;
5670
5680
  draft = null;
@@ -5686,11 +5696,11 @@ var diff_view_default = _template("d", (input) => {
5686
5696
  } catch (err) {
5687
5697
  error = String(err.message || err);
5688
5698
  }
5689
- }, "d9", $scope0_id);
5699
+ }, "d11", $scope0_id);
5690
5700
  const removeComment = _resume(async (id) => {
5691
5701
  comments = comments.filter((c) => c.id !== id);
5692
5702
  await fetch(`/api/review-comments/${id}`, { method: "DELETE" });
5693
- }, "d10", $scope0_id);
5703
+ }, "d12", $scope0_id);
5694
5704
  const clearComments = _resume(async () => {
5695
5705
  comments = [];
5696
5706
  draft = null;
@@ -5699,7 +5709,7 @@ var diff_view_default = _template("d", (input) => {
5699
5709
  headers: { "content-type": "application/json" },
5700
5710
  body: JSON.stringify({ action: "clear" })
5701
5711
  });
5702
- }, "d11", $scope0_id);
5712
+ }, "d13", $scope0_id);
5703
5713
  const copyMarkdown = _resume(async () => {
5704
5714
  if (!await copyText(commentMarkdown(comments, repos))) {
5705
5715
  error = "Copy failed — clipboard needs HTTPS on this browser.";
@@ -5710,7 +5720,7 @@ var diff_view_default = _template("d", (input) => {
5710
5720
  copied = false;
5711
5721
  }, 1500);
5712
5722
  await clearComments();
5713
- }, "d12", $scope0_id);
5723
+ }, "d14", $scope0_id);
5714
5724
  const sendTo = _resume(async (sessionId) => {
5715
5725
  if (!sessionId) return;
5716
5726
  sending = true;
@@ -5730,14 +5740,14 @@ var diff_view_default = _template("d", (input) => {
5730
5740
  error = String(err.message || err);
5731
5741
  sending = false;
5732
5742
  }
5733
- }, "d13", $scope0_id);
5743
+ }, "d15", $scope0_id);
5734
5744
  const jumpTo = _resume((key) => {
5735
5745
  const el = ((scrollEl) => scrollEl())(_el_read_error).querySelector(`details[data-key="${CSS.escape(key)}"]`);
5736
5746
  if (el) {
5737
5747
  el.open = true;
5738
5748
  el.scrollIntoView({ block: "start" });
5739
5749
  }
5740
- }, "d14", $scope0_id);
5750
+ }, "d16", $scope0_id);
5741
5751
  _html(`<div class=diff-view><aside class=${!treeOpen ? "\"tree closed\"" : "tree"}>`);
5742
5752
  _for_of(repoList.filter((r) => filesByRepo.get(r.id)?.length), (repo) => {
5743
5753
  const $scope5_id = _scope_id();
@@ -5747,8 +5757,8 @@ var diff_view_default = _template("d", (input) => {
5747
5757
  const $scope6_id = _scope_id();
5748
5758
  const $if_content4__dirKey__closures = /* @__PURE__ */ new Set();
5749
5759
  const repoRows = treeRows(filesByRepo.get(repo.id) || []);
5750
- const dirKey = _resume((path) => `${repo.id}/${path}`, "d15", $scope6_id);
5751
- const rowDir = _resume((row) => row.kind === "dir" ? row.path : row.file.path.includes("/") ? row.file.path.slice(0, row.file.path.lastIndexOf("/")) : "", "d16");
5760
+ const dirKey = _resume((path) => `${repo.id}/${path}`, "d17", $scope6_id);
5761
+ const rowDir = _resume((row) => row.kind === "dir" ? row.path : row.file.path.includes("/") ? row.file.path.slice(0, row.file.path.lastIndexOf("/")) : "", "d18");
5752
5762
  const hiddenByCollapse = _resume((row) => {
5753
5763
  const dir = rowDir(row);
5754
5764
  for (const collapsed of collapsedDirs) {
@@ -5758,29 +5768,29 @@ var diff_view_default = _template("d", (input) => {
5758
5768
  if (dir === path || dir.startsWith(`${path}/`)) return true;
5759
5769
  }
5760
5770
  return false;
5761
- }, "d17", $scope6_id);
5771
+ }, "d19", $scope6_id);
5762
5772
  _for_of(repoRows, (row) => {
5763
5773
  const $scope7_id = _scope_id();
5764
5774
  _if(() => {
5765
5775
  if (!hiddenByCollapse(row) && row.kind === "dir") {
5766
- const $scope22_id = _scope_id();
5767
- _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($scope22_id, "b")}</span>${_escape(row.label)}${_el_resume($scope22_id, "c")}/</button>${_el_resume($scope22_id, "a")}`);
5768
- _script($scope22_id, "d23");
5769
- _subscribe($if_content4__dirKey__closures, _subscribe($collapsedDirs__closures, writeScope($scope22_id, { Cc7: 1 })));
5776
+ const $scope23_id = _scope_id();
5777
+ _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($scope23_id, "b")}</span>${_escape(row.label)}${_el_resume($scope23_id, "c")}/</button>${_el_resume($scope23_id, "a")}`);
5778
+ _script($scope23_id, "d25");
5779
+ _subscribe($if_content4__dirKey__closures, _subscribe($collapsedDirs__closures, writeScope($scope23_id, { Ccg: 1 })));
5770
5780
  return 0;
5771
5781
  } else if (!hiddenByCollapse(row) && row.kind !== "dir") {
5772
5782
  const $scope8_id = _scope_id();
5773
5783
  _html(`<button class=${viewed.has(row.file.key) ? "\"tree-file mono seen\"" : "\"tree-file mono\""}${_attr("title", row.file.path)}${_attr_style(`padding-left:${.5 + row.depth * .75}rem`)}><span${_attr_class(["status", row.file.status])}>${_escape(row.file.status)}${_el_resume($scope8_id, "c")}</span>${_el_resume($scope8_id, "b")}<span class=tree-file-name>${_escape(row.name)}${_el_resume($scope8_id, "d")}</span>`);
5774
5784
  _if(() => {
5775
5785
  if (commentsByFile.has(row.file.key)) {
5776
- const $scope27_id = _scope_id();
5786
+ const $scope28_id = _scope_id();
5777
5787
  _html("<span class=tree-note>💬</span>");
5778
- writeScope($scope27_id, {});
5788
+ writeScope($scope28_id, {});
5779
5789
  return 0;
5780
5790
  }
5781
5791
  }, $scope8_id, "e", 1, 1, 1, 0, 1);
5782
5792
  _html(`</button>${_el_resume($scope8_id, "a")}`);
5783
- _script($scope8_id, "d24");
5793
+ _script($scope8_id, "d26");
5784
5794
  _subscribe($commentsByFile__closures, _subscribe($viewed__closures, writeScope($scope8_id, {})));
5785
5795
  return 1;
5786
5796
  }
@@ -5806,7 +5816,7 @@ var diff_view_default = _template("d", (input) => {
5806
5816
  }
5807
5817
  }, $scope5_id, "d");
5808
5818
  _html("</div>");
5809
- _script($scope5_id, "d25");
5819
+ _script($scope5_id, "d27");
5810
5820
  writeScope($scope5_id, { g: repo?.id });
5811
5821
  }, "id", $scope0_id, "a", 1, 1, 1, "</aside>", 1);
5812
5822
  _html("<div class=diff-col><div class=diff-head>");
@@ -5816,7 +5826,7 @@ var diff_view_default = _template("d", (input) => {
5816
5826
  _html("<button class=icon-btn title=\"Back to terminal\">");
5817
5827
  icon_back_default({ size: 14 });
5818
5828
  _html(`</button>${_el_resume($scope1_id, "a")}`);
5819
- _script($scope1_id, "d26");
5829
+ _script($scope1_id, "d28");
5820
5830
  writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
5821
5831
  return 0;
5822
5832
  }
@@ -5830,7 +5840,7 @@ var diff_view_default = _template("d", (input) => {
5830
5840
  if ((input.sessions || []).length === 1) {
5831
5841
  const $scope3_id = _scope_id();
5832
5842
  _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")}`);
5833
- _script($scope3_id, "d27");
5843
+ _script($scope3_id, "d29");
5834
5844
  _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) }))));
5835
5845
  return 0;
5836
5846
  } else if ((input.sessions || []).length) {
@@ -5841,30 +5851,30 @@ var diff_view_default = _template("d", (input) => {
5841
5851
  }, "d0", $scope4_id), () => {
5842
5852
  _html(`<select aria-label="Send comments to session"${_attr("disabled", sending)}>`);
5843
5853
  _for_of(input.sessions, (s) => {
5844
- const $scope28_id = _scope_id();
5845
- _html(`<option${_attr_option_value(s.id)}>${_escape(s.title || s.agent)}${_el_resume($scope28_id, "b", $sg__input_sessions)}</option>${_el_resume($scope28_id, "a", $sg__input_sessions)}`);
5846
- $si__input_sessions && writeScope($scope28_id, {});
5854
+ const $scope29_id = _scope_id();
5855
+ _html(`<option${_attr_option_value(s.id)}>${_escape(s.title || s.agent)}${_el_resume($scope29_id, "b", $sg__input_sessions)}</option>${_el_resume($scope29_id, "a", $sg__input_sessions)}`);
5856
+ $si__input_sessions && writeScope($scope29_id, {});
5847
5857
  }, "id", $scope4_id, "c", $sg__input_sessions, 1, $sg__input_sessions, "</select>", 1);
5848
5858
  });
5849
5859
  _html("</span>");
5850
- _script($scope4_id, "d28");
5860
+ _script($scope4_id, "d30");
5851
5861
  _subscribe($sendTarget__closures, _subscribe($sending__closures, _subscribe($si__input_sessions && $input_sessions__closures, writeScope($scope4_id, {
5852
5862
  _: _scope_with_id($scope2_id),
5853
- Cc3: 1
5863
+ Ccc: 1
5854
5864
  }))));
5855
5865
  return 1;
5856
5866
  }
5857
5867
  }, $scope2_id, "c", $sg__input_sessions, $sg__input_sessions, $sg__input_sessions, 0, 1);
5858
- _script($scope2_id, "d29");
5868
+ _script($scope2_id, "d31");
5859
5869
  writeScope($scope2_id, {});
5860
5870
  return 0;
5861
5871
  }
5862
5872
  }, $scope0_id, "g", 1, 1, 1, "</span>");
5863
5873
  _if(() => {
5864
5874
  if (loading) {
5865
- const $scope29_id = _scope_id();
5875
+ const $scope30_id = _scope_id();
5866
5876
  _html("<span class=\"refresh-chip dim\"><span class=spin></span>Refreshing…</span>");
5867
- writeScope($scope29_id, {});
5877
+ writeScope($scope30_id, {});
5868
5878
  return 0;
5869
5879
  }
5870
5880
  }, $scope0_id, "h", 1, 1, 1, 0, 1);
@@ -5879,49 +5889,59 @@ var diff_view_default = _template("d", (input) => {
5879
5889
  if (error) {
5880
5890
  const $scope17_id = _scope_id();
5881
5891
  _html(`<p class=toast-error>${_escape(error)}${_el_resume($scope17_id, "a")} <button>×</button>${_el_resume($scope17_id, "b")}</p>`);
5882
- _script($scope17_id, "d30");
5892
+ _script($scope17_id, "d32");
5883
5893
  writeScope($scope17_id, {});
5884
5894
  return 0;
5885
5895
  }
5886
5896
  }, $scope0_id, "r", 1, 1, 1, 0, 1);
5887
5897
  _for_of(repoList.filter((r) => r.baseMissing), (repo) => {
5888
- const $scope19_id = _scope_id();
5889
- _html(`<p class=toast-error>${_escape(repo.worktree)}${_el_resume($scope19_id, "a")}: base <!>${_escape(repo.base)}${_el_resume($scope19_id, "b")} not found<!>${uncommitted ? " — showing uncommitted changes only" : ""}${_el_resume($scope19_id, "c")}.</p>`);
5890
- writeScope($scope19_id, {});
5891
- }, "id", $scope0_id, "s", 1, 1, 1, 0, 1);
5892
- _for_of(repoList.filter((r) => r.contained && r.files.length), (repo) => {
5893
5898
  const $scope20_id = _scope_id();
5894
- _html(`<p class=dim>${_escape(repo.worktree)}${_el_resume($scope20_id, "a")}<!>${repo.pr ? ` #${_escape(`${repo.pr.number}`)}` : ""}${_el_resume($scope20_id, "b")}: already in <!>${_escape(repo.base)}${_el_resume($scope20_id, "c")}<!>${uncommitted ? " — showing uncommitted changes only" : ""}${_el_resume($scope20_id, "d")}.</p>`);
5899
+ _html(`<p class=toast-error>${_escape(repo.worktree)}${_el_resume($scope20_id, "a")}: base <!>${_escape(repo.base)}${_el_resume($scope20_id, "b")} not found<!>${uncommitted ? " — showing uncommitted changes only" : ""}${_el_resume($scope20_id, "c")}.</p>`);
5895
5900
  writeScope($scope20_id, {});
5896
- }, "id", $scope0_id, "t", 1, 1, 1, 0, 1);
5897
- _for_of(repoList.filter((r) => r.githubDrift), (repo) => {
5898
- const $scope30_id = _scope_id();
5899
- _html(`<p class=toast-error>${_escape(repo.worktree)}${_el_resume($scope30_id, "a")} #<!>${_escape(repo.pr.number)}${_el_resume($scope30_id, "b")}: origin/<!>${_escape(repo.pr.headRefName)}${_el_resume($scope30_id, "c")} is <!>${_escape(shortSha(repo.head))}${_el_resume($scope30_id, "d")}, GitHub last saw <!>${_escape(shortSha(repo.pr.headRefOid))}${_el_resume($scope30_id, "e")}.</p>`);
5900
- writeScope($scope30_id, {});
5901
- }, "id", $scope0_id, "u", 1, 1, 1, 0, 1);
5902
- _for_of(repoList.filter(localDiffers), (repo) => {
5901
+ }, "id", $scope0_id, "s", 1, 1, 1, 0, 1);
5902
+ _for_of(repoList.filter((r) => r.contained && r.files.length), (repo) => {
5903
5903
  const $scope21_id = _scope_id();
5904
- _html(`<p class=dim>${_escape(repo.worktree)}${_el_resume($scope21_id, "a")} #<!>${_escape(repo.pr.number)}${_el_resume($scope21_id, "b")}: this view is <!>${_escape(shortSha(repo.head))}${_el_resume($scope21_id, "c")} (<!>${_escape(repo.pr.headRefName)}${_el_resume($scope21_id, "d")}). Local is <!>${_escape(shortSha(repo.localHead))}${_el_resume($scope21_id, "e")} (<!>${_escape(repo.branch)}${_el_resume($scope21_id, "f")}<!>${uncommitted ? ", plus uncommitted" : ""}${_el_resume($scope21_id, "g")}).</p>`);
5904
+ _html(`<p class=dim>${_escape(repo.worktree)}${_el_resume($scope21_id, "a")}<!>${repo.pr ? ` #${_escape(`${repo.pr.number}`)}` : ""}${_el_resume($scope21_id, "b")}: already in <!>${_escape(repo.base)}${_el_resume($scope21_id, "c")}<!>${uncommitted ? " showing uncommitted changes only" : ""}${_el_resume($scope21_id, "d")}.</p>`);
5905
5905
  writeScope($scope21_id, {});
5906
+ }, "id", $scope0_id, "t", 1, 1, 1, 0, 1);
5907
+ _if(() => {
5908
+ if (driftRepos.length) {
5909
+ const $scope18_id = _scope_id();
5910
+ _html("<p class=toast-error>");
5911
+ _for_of(driftRepos, (repo) => {
5912
+ const $scope31_id = _scope_id();
5913
+ _html(`${_escape(repo.worktree)}${_el_resume($scope31_id, "a")} #<!>${_escape(repo.pr.number)}${_el_resume($scope31_id, "b")}: origin/<!>${_escape(repo.pr.headRefName)}${_el_resume($scope31_id, "c")} is <!>${_escape(shortSha(repo.head))}${_el_resume($scope31_id, "d")}, GitHub last saw <!>${_escape(shortSha(repo.pr.headRefOid))}${_el_resume($scope31_id, "e")}.`);
5914
+ writeScope($scope31_id, {});
5915
+ }, "id", $scope18_id, "a");
5916
+ _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>`);
5917
+ _script($scope18_id, "d33");
5918
+ writeScope($scope18_id, {});
5919
+ return 0;
5920
+ }
5921
+ }, $scope0_id, "u", 1, 1, 1, 0, 1);
5922
+ _for_of(repoList.filter(localDiffers), (repo) => {
5923
+ const $scope22_id = _scope_id();
5924
+ _html(`<p class=dim>${_escape(repo.worktree)}${_el_resume($scope22_id, "a")} #<!>${_escape(repo.pr.number)}${_el_resume($scope22_id, "b")}: this view is <!>${_escape(shortSha(repo.head))}${_el_resume($scope22_id, "c")} (<!>${_escape(repo.pr.headRefName)}${_el_resume($scope22_id, "d")}). Local is <!>${_escape(shortSha(repo.localHead))}${_el_resume($scope22_id, "e")} (<!>${_escape(repo.branch)}${_el_resume($scope22_id, "f")}<!>${uncommitted ? ", plus uncommitted" : ""}${_el_resume($scope22_id, "g")}).</p>`);
5925
+ writeScope($scope22_id, {});
5906
5926
  }, "id", $scope0_id, "v", 1, 1, 1, 0, 1);
5907
5927
  _if(() => {
5908
5928
  if (!repos && loading) {
5909
- const $scope31_id = _scope_id();
5929
+ const $scope32_id = _scope_id();
5910
5930
  _html("<div class=diff-skel><p class=dim><span class=spin></span>Loading diff…</p><div class=skel-row></div><div class=skel-row></div><div class=skel-row></div></div>");
5911
- writeScope($scope31_id, {});
5931
+ writeScope($scope32_id, {});
5912
5932
  return 0;
5913
5933
  }
5914
5934
  }, $scope0_id, "w", 1, 1, 1, 0, 1);
5915
5935
  _if(() => {
5916
5936
  if (repos && !allFiles.length) {
5917
- const $scope25_id = _scope_id();
5918
- _html(`<p class="dim center-pad">${repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base."}${_el_resume($scope25_id, "a")}</p>`);
5919
- writeScope($scope25_id, {});
5937
+ const $scope26_id = _scope_id();
5938
+ _html(`<p class="dim center-pad">${repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base."}${_el_resume($scope26_id, "a")}</p>`);
5939
+ writeScope($scope26_id, {});
5920
5940
  return 0;
5921
5941
  } else if (repos && !shownFiles.length) {
5922
- const $scope18_id = _scope_id();
5923
- _html(`<p class="dim center-pad">No files match "<!>${_escape(fileFilter)}${_el_resume($scope18_id, "a")}".</p>`);
5924
- writeScope($scope18_id, {});
5942
+ const $scope19_id = _scope_id();
5943
+ _html(`<p class="dim center-pad">No files match "<!>${_escape(fileFilter)}${_el_resume($scope19_id, "a")}".</p>`);
5944
+ writeScope($scope19_id, {});
5925
5945
  return 1;
5926
5946
  }
5927
5947
  }, $scope0_id, "x", 1, 1, 1, 0, 1);
@@ -5949,47 +5969,47 @@ var diff_view_default = _template("d", (input) => {
5949
5969
  _html(`<section class=repo-section${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}>`);
5950
5970
  _if(() => {
5951
5971
  if (repoList.length > 1) {
5952
- const $scope23_id = _scope_id();
5953
- _html(`<button class=${collapsedRepos.has(repo.id) ? "\"repo-sep closed\"" : "repo-sep"}><span class=tree-chev>${collapsedRepos.has(repo.id) ? "▸" : "▾"}${_el_resume($scope23_id, "b")}</span><span class=mono>${_escape(repo.worktree)}${_el_resume($scope23_id, "c")}</span>`);
5972
+ const $scope24_id = _scope_id();
5973
+ _html(`<button class=${collapsedRepos.has(repo.id) ? "\"repo-sep closed\"" : "repo-sep"}><span class=tree-chev>${collapsedRepos.has(repo.id) ? "▸" : "▾"}${_el_resume($scope24_id, "b")}</span><span class=mono>${_escape(repo.worktree)}${_el_resume($scope24_id, "c")}</span>`);
5954
5974
  _if(() => {
5955
5975
  if (repo.pr) {
5956
- const $scope32_id = _scope_id();
5957
- _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($scope32_id, "b")}</a>${_el_resume($scope32_id, "a")}<span class=dim>${_escape(repo.pr.title)}${_el_resume($scope32_id, "c")}</span>`);
5958
- _script($scope32_id, "d31");
5959
- _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($scope32_id, {
5976
+ const $scope33_id = _scope_id();
5977
+ _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($scope33_id, "b")}</a>${_el_resume($scope33_id, "a")}<span class=dim>${_escape(repo.pr.title)}${_el_resume($scope33_id, "c")}</span>`);
5978
+ _script($scope33_id, "d34");
5979
+ _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($scope33_id, {
5960
5980
  Ca1: 2,
5961
5981
  Ca2: 2,
5962
5982
  Ca3: 2
5963
5983
  }))))))));
5964
5984
  return 0;
5965
5985
  } else {
5966
- const $scope33_id = _scope_id();
5967
- _html(`<span class=dim>${_escape(repo.full_name)}${_el_resume($scope33_id, "a")}</span>`);
5968
- _subscribe($for_content3__repo_full_name__closures, writeScope($scope33_id, {}));
5986
+ const $scope34_id = _scope_id();
5987
+ _html(`<span class=dim>${_escape(repo.full_name)}${_el_resume($scope34_id, "a")}</span>`);
5988
+ _subscribe($for_content3__repo_full_name__closures, writeScope($scope34_id, {}));
5969
5989
  return 1;
5970
5990
  }
5971
- }, $scope23_id, "d");
5972
- _html(`<span class="chip lane"${_attr("title", `${repo.pr ? "PR head" : "checked out"} ${repo.pr ? repo.pr.headRefName : repo.branch} ${repo.head}`)}>on <!>${repo.pr ? _escape(repo.pr.headRefName) : _escape(repo.branch)}${_el_resume($scope23_id, "f")}</span>${_el_resume($scope23_id, "e")}<span class=chip${_attr("title", `${repo.base} ${repo.baseSha}`)}>vs <!>${_escape(repo.base)}${_el_resume($scope23_id, "h")}</span>${_el_resume($scope23_id, "g")}`);
5991
+ }, $scope24_id, "d");
5992
+ _html(`<span class="chip lane"${_attr("title", `${repo.pr ? "PR head" : "checked out"} ${repo.pr ? repo.pr.headRefName : repo.branch} ${repo.head}`)}>on <!>${repo.pr ? _escape(repo.pr.headRefName) : _escape(repo.branch)}${_el_resume($scope24_id, "f")}</span>${_el_resume($scope24_id, "e")}<span class=chip${_attr("title", `${repo.base} ${repo.baseSha}`)}>vs <!>${_escape(repo.base)}${_el_resume($scope24_id, "h")}</span>${_el_resume($scope24_id, "g")}`);
5973
5993
  _if(() => {
5974
5994
  if (localDiffers(repo)) {
5975
- const $scope34_id = _scope_id();
5976
- _html(`<span class=chip${_attr("title", `checked out ${repo.branch} ${repo.localHead}`)}>local <!>${_escape(repo.branch)}${_el_resume($scope34_id, "b")}</span>${_el_resume($scope34_id, "a")}`);
5977
- _subscribe($for_content3__repo_localHead__closures, _subscribe($for_content3__repo_branch__closures, writeScope($scope34_id, { Ca5: 2 })));
5995
+ const $scope35_id = _scope_id();
5996
+ _html(`<span class=chip${_attr("title", `checked out ${repo.branch} ${repo.localHead}`)}>local <!>${_escape(repo.branch)}${_el_resume($scope35_id, "b")}</span>${_el_resume($scope35_id, "a")}`);
5997
+ _subscribe($for_content3__repo_localHead__closures, _subscribe($for_content3__repo_branch__closures, writeScope($scope35_id, { Ca5: 2 })));
5978
5998
  return 0;
5979
5999
  }
5980
- }, $scope23_id, "i", 1, 1, 1, 0, 1);
5981
- _html(`</button>${_el_resume($scope23_id, "a")}`);
5982
- _script($scope23_id, "d32");
5983
- _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($scope23_id, { Cc8: 1 }))))))))));
6000
+ }, $scope24_id, "i", 1, 1, 1, 0, 1);
6001
+ _html(`</button>${_el_resume($scope24_id, "a")}`);
6002
+ _script($scope24_id, "d35");
6003
+ _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($scope24_id, { Cch: 1 }))))))))));
5984
6004
  return 0;
5985
6005
  } else {
5986
- const $scope26_id = _scope_id();
6006
+ const $scope27_id = _scope_id();
5987
6007
  _html("<p class=repo-meta>");
5988
6008
  _if(() => {
5989
6009
  if (repo.pr) {
5990
- const $scope35_id = _scope_id();
5991
- _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($scope35_id, "b")}</a>${_el_resume($scope35_id, "a")}<span class=dim>${_escape(repo.pr.title)}${_el_resume($scope35_id, "c")}</span>`);
5992
- _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($scope35_id, {
6010
+ const $scope36_id = _scope_id();
6011
+ _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($scope36_id, "b")}</a>${_el_resume($scope36_id, "a")}<span class=dim>${_escape(repo.pr.title)}${_el_resume($scope36_id, "c")}</span>`);
6012
+ _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($scope36_id, {
5993
6013
  Cx: 1,
5994
6014
  Cy: 1,
5995
6015
  Cz: 1,
@@ -6000,21 +6020,21 @@ var diff_view_default = _template("d", (input) => {
6000
6020
  }))))))));
6001
6021
  return 0;
6002
6022
  }
6003
- }, $scope26_id, "a");
6004
- _html(`<span class="chip lane"${_attr("title", `${repo.pr ? "PR head" : "checked out"} ${repo.pr ? repo.pr.headRefName : repo.branch} ${repo.head}`)}>on <!>${repo.pr ? _escape(repo.pr.headRefName) : _escape(repo.branch)}${_el_resume($scope26_id, "c")}</span>${_el_resume($scope26_id, "b")}<span class=chip${_attr("title", `${repo.base} ${repo.baseSha}`)}>vs <!>${_escape(repo.base)}${_el_resume($scope26_id, "e")}</span>${_el_resume($scope26_id, "d")}`);
6023
+ }, $scope27_id, "a");
6024
+ _html(`<span class="chip lane"${_attr("title", `${repo.pr ? "PR head" : "checked out"} ${repo.pr ? repo.pr.headRefName : repo.branch} ${repo.head}`)}>on <!>${repo.pr ? _escape(repo.pr.headRefName) : _escape(repo.branch)}${_el_resume($scope27_id, "c")}</span>${_el_resume($scope27_id, "b")}<span class=chip${_attr("title", `${repo.base} ${repo.baseSha}`)}>vs <!>${_escape(repo.base)}${_el_resume($scope27_id, "e")}</span>${_el_resume($scope27_id, "d")}`);
6005
6025
  _if(() => {
6006
6026
  if (localDiffers(repo)) {
6007
- const $scope36_id = _scope_id();
6008
- _html(`<span class=chip${_attr("title", `checked out ${repo.branch} ${repo.localHead}`)}>local <!>${_escape(repo.branch)}${_el_resume($scope36_id, "b")}</span>${_el_resume($scope36_id, "a")}`);
6009
- _subscribe($for_content3__repo_localHead__closures, _subscribe($for_content3__repo_branch__closures, writeScope($scope36_id, {
6027
+ const $scope37_id = _scope_id();
6028
+ _html(`<span class=chip${_attr("title", `checked out ${repo.branch} ${repo.localHead}`)}>local <!>${_escape(repo.branch)}${_el_resume($scope37_id, "b")}</span>${_el_resume($scope37_id, "a")}`);
6029
+ _subscribe($for_content3__repo_localHead__closures, _subscribe($for_content3__repo_branch__closures, writeScope($scope37_id, {
6010
6030
  Ca5: 3,
6011
6031
  Ca6: 1
6012
6032
  })));
6013
6033
  return 0;
6014
6034
  }
6015
- }, $scope26_id, "f", 1, 1, 1, 0, 1);
6035
+ }, $scope27_id, "f", 1, 1, 1, 0, 1);
6016
6036
  _html("</p>");
6017
- _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_pr__closures, _subscribe($for_content3__repo__closures, writeScope($scope26_id, {
6037
+ _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_pr__closures, _subscribe($for_content3__repo__closures, writeScope($scope27_id, {
6018
6038
  Ct: 1,
6019
6039
  Cv: 1,
6020
6040
  Ca1: 1,
@@ -6039,9 +6059,9 @@ var diff_view_default = _template("d", (input) => {
6039
6059
  _html(`<details${_attr_details_or_dialog_open($scope12_id, "a", expanded)} class=file${_attr("data-key", file.key)}><summary><span${_attr_class(["status", file.status])}>${_escape(file.status)}${_el_resume($scope12_id, "c")}</span>${_el_resume($scope12_id, "b")}<span class=path${_attr("title", file.path)}><bdi>${_escape(file.path)}${_el_resume($scope12_id, "e")}</bdi></span>${_el_resume($scope12_id, "d")}`);
6040
6060
  _if(() => {
6041
6061
  if (fileComments.length) {
6042
- const $scope37_id = _scope_id();
6043
- _html(`<span class=chip>💬 <!>${_escape(fileComments.length)}${_el_resume($scope37_id, "a")}</span>`);
6044
- writeScope($scope37_id, {});
6062
+ const $scope38_id = _scope_id();
6063
+ _html(`<span class=chip>💬 <!>${_escape(fileComments.length)}${_el_resume($scope38_id, "a")}</span>`);
6064
+ writeScope($scope38_id, {});
6045
6065
  return 0;
6046
6066
  }
6047
6067
  }, $scope12_id, "f", 1, 1, 1, 0, 1);
@@ -6050,28 +6070,28 @@ var diff_view_default = _template("d", (input) => {
6050
6070
  }, "d2", $scope12_id))} type=checkbox>${_el_resume($scope12_id, "h")}<span class=dim>viewed</span></label>${_el_resume($scope12_id, "g")}</summary>`);
6051
6071
  _if(() => {
6052
6072
  if (file.binary) {
6053
- const $scope38_id = _scope_id();
6073
+ const $scope39_id = _scope_id();
6054
6074
  _html("<p class=\"dim diff-pad\">binary file</p>");
6055
- writeScope($scope38_id, {});
6075
+ writeScope($scope39_id, {});
6056
6076
  return 0;
6057
6077
  } else if (file.tooLarge) {
6058
- const $scope39_id = _scope_id();
6078
+ const $scope40_id = _scope_id();
6059
6079
  _html("<p class=\"dim diff-pad\">file too large to display</p>");
6060
- writeScope($scope39_id, {});
6080
+ writeScope($scope40_id, {});
6061
6081
  return 1;
6062
6082
  } else if (file.old == null && file.new == null) {
6063
- const $scope40_id = _scope_id();
6083
+ const $scope41_id = _scope_id();
6064
6084
  _html("<p class=\"dim diff-pad\">file could not be read</p>");
6065
- writeScope($scope40_id, {});
6085
+ writeScope($scope41_id, {});
6066
6086
  return 2;
6067
6087
  } else if (expanded) {
6068
6088
  const $scope15_id = _scope_id();
6069
6089
  _if(() => {
6070
6090
  {
6071
- const $scope24_id = _scope_id();
6072
- _html(`<div class=diff-wait></div>${_el_resume($scope24_id, "a")}`);
6073
- _script($scope24_id, "d33");
6074
- writeScope($scope24_id, {});
6091
+ const $scope25_id = _scope_id();
6092
+ _html(`<div class=diff-wait></div>${_el_resume($scope25_id, "a")}`);
6093
+ _script($scope25_id, "d36");
6094
+ writeScope($scope25_id, {});
6075
6095
  return 0;
6076
6096
  }
6077
6097
  }, $scope15_id, "a", 1, 1, 1, 0, 1);
@@ -6080,7 +6100,7 @@ var diff_view_default = _template("d", (input) => {
6080
6100
  }
6081
6101
  }, $scope12_id, "i");
6082
6102
  _html(`</details>${_el_resume($scope12_id, "a")}`);
6083
- _script($scope12_id, "d34");
6103
+ _script($scope12_id, "d37");
6084
6104
  _subscribe($toggleViewed2__closures, _subscribe($commentsByFile__closures, _subscribe($viewed__closures, writeScope($scope12_id, {
6085
6105
  k: file,
6086
6106
  l: file?.key,
@@ -6094,8 +6114,8 @@ var diff_view_default = _template("d", (input) => {
6094
6114
  z: $for_content4__file__closures,
6095
6115
  a0: $for_content4__file_key__closures,
6096
6116
  a1: $for_content4__fileComments__closures,
6097
- Cby: 1,
6098
- Ccf: 1
6117
+ Cc6: 1,
6118
+ Cco: 1
6099
6119
  }))));
6100
6120
  }, "key", $scope11_id, "a", 1, 1, 1, "</div>", 1);
6101
6121
  _subscribe($for_content3__repoFiles__closures, writeScope($scope11_id, {}));
@@ -6143,8 +6163,8 @@ var diff_view_default = _template("d", (input) => {
6143
6163
  _html(`</div>${_el_resume($scope0_id, "q")}</div>`);
6144
6164
  _if(() => {}, $scope0_id, "z");
6145
6165
  _html("</div>");
6146
- _script($scope0_id, "d37");
6147
- _script($scope0_id, "d38");
6166
+ _script($scope0_id, "d40");
6167
+ _script($scope0_id, "d41");
6148
6168
  writeScope($scope0_id, {
6149
6169
  a2: input.focusPr,
6150
6170
  a3: input.workspaceId,
@@ -6169,44 +6189,48 @@ var diff_view_default = _template("d", (input) => {
6169
6189
  at: treeOpen,
6170
6190
  av: collapsedDirs,
6171
6191
  aw: collapsedRepos,
6172
- ax: toggleRepo,
6173
- az: nearBox.cbs,
6174
- b0: nearBox.io,
6175
- b2: observeNear,
6176
- b3: load,
6177
- b4: loadReview,
6178
- b6: repoList,
6179
- b7: repoList.length,
6180
- b8: allFiles,
6181
- b9: allFiles?.length,
6182
- ba: fileMatch,
6183
- bc: shownFiles,
6184
- bg: filesByRepo,
6185
- bi: commentsByFile,
6186
- bj: sendPick,
6187
- bk: localDiffers,
6188
- bm: toggleViewed,
6189
- bn: saveComment,
6190
- bo: removeComment,
6191
- bp: clearComments,
6192
- bs: copyMarkdown,
6193
- bt: sendTo,
6194
- bu: jumpTo,
6195
- c7: $collapsedDirs__closures,
6196
- by: $viewed__closures,
6197
- cf: $commentsByFile__closures,
6198
- ce: $filesByRepo__closures,
6199
- bw: $si__input_sessions_0_title && $input_sessions_0_title__closures,
6200
- bx: $si__input_sessions_0_agent && $input_sessions_0_agent__closures,
6201
- c3: $sending__closures,
6202
- bv: $si__input_sessions && $input_sessions__closures,
6203
- c4: $sendTarget__closures,
6204
- c8: $collapsedRepos__closures,
6205
- c0: $draft__closures,
6206
- ci: $saveComment2__closures,
6207
- cj: $removeComment2__closures,
6208
- ch: $toggleViewed2__closures,
6209
- cb: $repoList_length__closures
6192
+ ax: dismissedDrift,
6193
+ ay: toggleRepo,
6194
+ b0: nearBox.cbs,
6195
+ b1: nearBox.io,
6196
+ b3: observeNear,
6197
+ b4: load,
6198
+ b6: loadReview,
6199
+ b8: repoList,
6200
+ ba: repoList.length,
6201
+ bb: allFiles,
6202
+ bc: allFiles?.length,
6203
+ bd: fileMatch,
6204
+ bf: shownFiles,
6205
+ bj: filesByRepo,
6206
+ bl: commentsByFile,
6207
+ bm: sendPick,
6208
+ bn: localDiffers,
6209
+ bp: driftRepos,
6210
+ bs: dismissDrift,
6211
+ bt: reload,
6212
+ bu: toggleViewed,
6213
+ bv: saveComment,
6214
+ bw: removeComment,
6215
+ bx: clearComments,
6216
+ c0: copyMarkdown,
6217
+ c1: sendTo,
6218
+ c2: jumpTo,
6219
+ cg: $collapsedDirs__closures,
6220
+ c6: $viewed__closures,
6221
+ co: $commentsByFile__closures,
6222
+ cn: $filesByRepo__closures,
6223
+ c4: $si__input_sessions_0_title && $input_sessions_0_title__closures,
6224
+ c5: $si__input_sessions_0_agent && $input_sessions_0_agent__closures,
6225
+ cc: $sending__closures,
6226
+ c3: $si__input_sessions && $input_sessions__closures,
6227
+ cd: $sendTarget__closures,
6228
+ ch: $collapsedRepos__closures,
6229
+ c8: $draft__closures,
6230
+ cs: $saveComment2__closures,
6231
+ ct: $removeComment2__closures,
6232
+ cr: $toggleViewed2__closures,
6233
+ ck: $repoList_length__closures
6210
6234
  });
6211
6235
  _resume_branch($scope0_id);
6212
6236
  });
@@ -16622,7 +16646,8 @@ async function treeContainedIn(dir, base, head) {
16622
16646
  * base. `pr` (`worktree/number`) focuses one PR. `uncommitted` overlays
16623
16647
  * the working tree on the PR whose head is the current branch. */
16624
16648
  async function workspaceDiff(ws, opts = {}) {
16625
- const { baseRef, uncommitted = false, pr: focus } = opts;
16649
+ const { baseRef, uncommitted = false, pr: focus, refresh = false } = opts;
16650
+ if (refresh) for (const repo of ws.repos) lastFetch.delete(repo.full_name);
16626
16651
  const foreign = otherWorkspaceBranches(ws.id);
16627
16652
  return (await Promise.all(ws.repos.map(async (repo) => {
16628
16653
  const dir = path.join(ws.path, repo.worktree);
@@ -16632,7 +16657,7 @@ async function workspaceDiff(ws, opts = {}) {
16632
16657
  "HEAD"
16633
16658
  ], dir).catch(() => "HEAD");
16634
16659
  const localHead = await git(["rev-parse", "HEAD"], dir).catch(() => "");
16635
- const open = (await workspacePrs(repo.full_name, ws.branch, foreign)).filter((p) => p.state === "OPEN" && p.baseRefName && p.headRefName && (!focus || focus === `${repo.worktree}/${p.number}`));
16660
+ 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}`));
16636
16661
  if (open.length) return Promise.all(open.map((p) => prDiff(dir, repo, p, {
16637
16662
  uncommitted: uncommitted && branch === p.headRefName,
16638
16663
  localHead,
@@ -16868,11 +16893,13 @@ async function loadWorktreeFile(dir, filePath, status, old) {
16868
16893
  var getHandler$4 = normalizeHandler(Run.GET({ search: (value) => ({
16869
16894
  base: typeof value.base === "string" && value.base ? value.base : void 0,
16870
16895
  uncommitted: value.uncommitted === "1" || value.uncommitted === "true",
16871
- pr: typeof value.pr === "string" && value.pr ? value.pr : void 0
16896
+ pr: typeof value.pr === "string" && value.pr ? value.pr : void 0,
16897
+ refresh: "refresh" in value
16872
16898
  }) }, async (ctx) => Response.json(await workspaceDiff(ctx.data.workspace, {
16873
16899
  baseRef: ctx.search.base,
16874
16900
  uncommitted: ctx.search.uncommitted,
16875
- pr: ctx.search.pr
16901
+ pr: ctx.search.pr,
16902
+ refresh: ctx.search.refresh
16876
16903
  }))), "GET");
16877
16904
  var get21_options = mergeOptions(mware3, mware22, getHandler$4);
16878
16905
  var head21_options = mergeOptions(mware3, mware22);
@@ -21470,4 +21497,4 @@ server.listen(port, () => {
21470
21497
  //#endregion
21471
21498
  export {};
21472
21499
 
21473
- ;var __MARKO_MANIFEST__={"esfPH6H":{"block":[2,"stylesheet#/assets/index-C_YqjXeW.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/index-C_YqjXeW.css\"",">"],"defer":[2,"/assets/index-Bx9UtyrE.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/index-Bx9UtyrE.js\"","></script>"]}};
21500
+ ;var __MARKO_MANIFEST__={"esfPH6H":{"block":[2,"stylesheet#/assets/index-C_YqjXeW.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/index-C_YqjXeW.css\"",">"],"defer":[2,"/assets/index-BnMs3duC.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/index-BnMs3duC.js\"","></script>"]}};