@dylanpiercey/work 0.0.178 → 0.0.180

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 (78) hide show
  1. package/dist/index.mjs +819 -615
  2. package/dist/public/assets/_9Dw0rpRB.js +1 -0
  3. package/dist/public/assets/{_DLuGH9wP.js → _B-oTUisw.js} +66 -66
  4. package/dist/public/assets/_B-oTUisw.js.br +0 -0
  5. package/dist/public/assets/_BJMBesC8.js +1 -0
  6. package/dist/public/assets/_BaB2KTgs.js +1 -0
  7. package/dist/public/assets/_BafWVR1Z.js +1 -0
  8. package/dist/public/assets/_BdyS62ck.js +1 -0
  9. package/dist/public/assets/_CAiITnSL.js +1 -0
  10. package/dist/public/assets/{_D8fFV5Ym.js → _CWOQeVjT.js} +1 -1
  11. package/dist/public/assets/_CWOQeVjT.js.br +0 -0
  12. package/dist/public/assets/_ChYNFrbw.js +1 -0
  13. package/dist/public/assets/_CoVBMgR8.js +1 -0
  14. package/dist/public/assets/_Cwrxarqf.js +1 -0
  15. package/dist/public/assets/{_s72b-JB_.js → _D1_IgqEt.js} +5 -5
  16. package/dist/public/assets/_D1_IgqEt.js.br +0 -0
  17. package/dist/public/assets/_DLAN1x2w.js +1 -0
  18. package/dist/public/assets/_DTpscZKE.js +1 -0
  19. package/dist/public/assets/_Ddm9l-a6.js +1 -0
  20. package/dist/public/assets/_Dkh2Hw3W.js +1 -0
  21. package/dist/public/assets/_DnVYWVdu.js +1 -0
  22. package/dist/public/assets/_DxXAXTdz.js +1 -0
  23. package/dist/public/assets/_VR1nKvIB.js +1 -0
  24. package/dist/public/assets/_gKHSDI0E.js +1 -0
  25. package/dist/public/assets/_qaArnTZN.js +1 -0
  26. package/dist/public/assets/_sJ4x-tl2.js +1 -0
  27. package/dist/public/assets/_yTfgsrNO.js +1 -0
  28. package/dist/public/assets/_zFEdMvq1.js +1 -0
  29. package/dist/public/assets/{app-page-mpLi5gUf.css → app-page-ujOO9O9j.css} +1 -1
  30. package/dist/public/assets/app-page-ujOO9O9j.css.br +0 -0
  31. package/dist/public/assets/{icon-arrow-down-DSmBsYc0.css → icon-arrow-down-CnC9B8zr.css} +1 -1
  32. package/dist/public/assets/icon-arrow-down-CnC9B8zr.css.br +0 -0
  33. package/dist/public/assets/new-OkHtBkzU.js +1 -0
  34. package/dist/public/assets/review-view-BYC11tmH.css +1 -0
  35. package/dist/public/assets/review-view-BYC11tmH.css.br +0 -0
  36. package/dist/public/assets/review-view-X_RUf4F7.js +2 -0
  37. package/dist/public/assets/settings-OkHtBkzU.js +1 -0
  38. package/dist/public/assets/w-OkHtBkzU.js +1 -0
  39. package/dist/public/assets/w._-Bl7_ITGh.js +1 -0
  40. package/dist/public/assets/w._-OkHtBkzU.js +1 -0
  41. package/lib/preview/media.d.mts +10 -0
  42. package/lib/preview/media.mjs +41 -0
  43. package/lib/review/markdown.mjs +14 -6
  44. package/package.json +1 -1
  45. package/dist/public/assets/_B6o8FkwV.js +0 -1
  46. package/dist/public/assets/_BDGElzVm.js +0 -1
  47. package/dist/public/assets/_BDeylpEs.js +0 -1
  48. package/dist/public/assets/_BEEyk_EB.js +0 -1
  49. package/dist/public/assets/_BWDbM5E_.js +0 -1
  50. package/dist/public/assets/_C8jIJ1Pj.js +0 -1
  51. package/dist/public/assets/_CFdGarWX.js +0 -1
  52. package/dist/public/assets/_CFfZ3sMn.js +0 -1
  53. package/dist/public/assets/_CIfRmO5F.js +0 -1
  54. package/dist/public/assets/_CV1Q2C2m.js +0 -1
  55. package/dist/public/assets/_CZgExeYN.js +0 -1
  56. package/dist/public/assets/_D8fFV5Ym.js.br +0 -0
  57. package/dist/public/assets/_D8vUoiS4.js +0 -1
  58. package/dist/public/assets/_DFta0PoX.js +0 -1
  59. package/dist/public/assets/_DHMJGzjE.js +0 -1
  60. package/dist/public/assets/_DLuGH9wP.js.br +0 -0
  61. package/dist/public/assets/_DVNDyccF.js +0 -1
  62. package/dist/public/assets/_DxjeG8P_.js +0 -1
  63. package/dist/public/assets/_E4p2FxoI.js +0 -1
  64. package/dist/public/assets/_GnbYDeRV.js +0 -1
  65. package/dist/public/assets/_OGDCaCq3.js +0 -1
  66. package/dist/public/assets/_RIV-3qh5.js +0 -1
  67. package/dist/public/assets/_ibANXg_A.js +0 -1
  68. package/dist/public/assets/_s72b-JB_.js.br +0 -0
  69. package/dist/public/assets/app-page-mpLi5gUf.css.br +0 -0
  70. package/dist/public/assets/icon-arrow-down-DSmBsYc0.css.br +0 -0
  71. package/dist/public/assets/new-CkY2AXTw.js +0 -1
  72. package/dist/public/assets/review-view-BrfjQmXA.css +0 -1
  73. package/dist/public/assets/review-view-BrfjQmXA.css.br +0 -0
  74. package/dist/public/assets/review-view-DtiHctEJ.js +0 -2
  75. package/dist/public/assets/settings-CkY2AXTw.js +0 -1
  76. package/dist/public/assets/w-CkY2AXTw.js +0 -1
  77. package/dist/public/assets/w._-CkY2AXTw.js +0 -1
  78. package/dist/public/assets/w._-Csr1ikwd.js +0 -1
package/dist/index.mjs CHANGED
@@ -4175,7 +4175,7 @@ var Query$2 = /* @__PURE__ */ object({
4175
4175
  });
4176
4176
  //#endregion
4177
4177
  //#region __marko-run__index.js
4178
- var getHandler$27 = normalizeHandler(Run.GET({ search: Query$2 }, async (ctx) => {
4178
+ var getHandler$28 = normalizeHandler(Run.GET({ search: Query$2 }, async (ctx) => {
4179
4179
  const active = listWorkspaces().filter((ws) => ws.status === "active");
4180
4180
  const { ws: linked, session } = checked(ctx.search, "query");
4181
4181
  if (linked && active.some((ws) => ws.id === linked)) return ctx.redirect(`/w/${encodeURIComponent(linked)}${session ? `?s=${encodeURIComponent(session)}` : ""}`, 302);
@@ -4189,10 +4189,10 @@ var getHandler$27 = normalizeHandler(Run.GET({ search: Query$2 }, async (ctx) =>
4189
4189
  }
4190
4190
  return ctx.redirect("/new", 302);
4191
4191
  }), "GET");
4192
- var get1_options = normalizeOptions("GET", getHandler$27);
4192
+ var get1_options = normalizeOptions("GET", getHandler$28);
4193
4193
  var head1_options = {};
4194
4194
  function get1(context) {
4195
- return call(getHandler$27, noContent, context);
4195
+ return call(getHandler$28, noContent, context);
4196
4196
  }
4197
4197
  function head1(context) {
4198
4198
  return stripResponseBody(get1(context));
@@ -6999,14 +6999,14 @@ var openable = (ws) => ws.status === "active" && !ws.pending;
6999
6999
  */
7000
7000
  var numbered = (all) => all.filter(openable).sort((a, b) => a.name.localeCompare(b.name));
7001
7001
  var toastKind = {
7002
- error: "_bj",
7003
- warn: "_bk",
7004
- info: "_bl"
7002
+ error: "_bl",
7003
+ warn: "_bm",
7004
+ info: "_bn"
7005
7005
  };
7006
7006
  var toastTitle = {
7007
- error: "_bm",
7008
- warn: "_bn",
7009
- info: "_bo"
7007
+ error: "_bo",
7008
+ warn: "_bp",
7009
+ info: "_bq"
7010
7010
  };
7011
7011
  //#endregion
7012
7012
  //#region src/styles/tokens.css.ts
@@ -7052,18 +7052,18 @@ var toast_default = _template("J", (input) => {
7052
7052
  const kind = inputKind || "error";
7053
7053
  const placement = inputPlacement || "float";
7054
7054
  const placementClass = {
7055
- float: "_bh",
7056
- inline: "_bi"
7055
+ float: "_bj",
7056
+ inline: "_bk"
7057
7057
  }[placement];
7058
7058
  _html(`<div${_attr_class([
7059
- "_bg",
7059
+ "_bi",
7060
7060
  toastKind[kind],
7061
7061
  placementClass,
7062
7062
  inputClass
7063
7063
  ])} role=${kind === "error" ? "alert" : "status"}${_attrs_partial(htmlInput, {
7064
7064
  class: 1,
7065
7065
  role: 1
7066
- }, "a", $scope0_id, "div")}><div${_attr_class("_bp")}>`);
7066
+ }, "a", $scope0_id, "div")}><div${_attr_class("_br")}>`);
7067
7067
  _if(() => {
7068
7068
  if (title) {
7069
7069
  const $scope1_id = _scope_id();
@@ -7075,7 +7075,7 @@ var toast_default = _template("J", (input) => {
7075
7075
  _if(() => {
7076
7076
  if (content) {
7077
7077
  const $scope2_id = _scope_id();
7078
- _html(`<div${_attr_class("_bq")}>`);
7078
+ _html(`<div${_attr_class("_bs")}>`);
7079
7079
  _dynamic_tag($scope2_id, "b", content, {}, 0, 0, $sg__input_content);
7080
7080
  _html("</div>");
7081
7081
  $si__input_content && writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
@@ -7086,7 +7086,7 @@ var toast_default = _template("J", (input) => {
7086
7086
  _if(() => {
7087
7087
  if (action || onDismiss) {
7088
7088
  const $scope3_id = _scope_id();
7089
- _html(`<div${_attr_class(["_br", action && "_bs"])}>`);
7089
+ _html(`<div${_attr_class(["_bt", action && "_bu"])}>`);
7090
7090
  _if(() => {
7091
7091
  if (action) {
7092
7092
  const $scope4_id = _scope_id();
@@ -7098,7 +7098,7 @@ var toast_default = _template("J", (input) => {
7098
7098
  _if(() => {
7099
7099
  if (onDismiss) {
7100
7100
  const $scope5_id = _scope_id();
7101
- _html(`<button${_attr_class([iconBtnRow, "_bt"])} type=button title=Dismiss aria-label=Dismiss>`);
7101
+ _html(`<button${_attr_class([iconBtnRow, "_bv"])} type=button title=Dismiss aria-label=Dismiss>`);
7102
7102
  icon_xmark_default({ size: 14 });
7103
7103
  _html(`</button>${_el_resume($scope5_id, "a")}`);
7104
7104
  _script($scope5_id, "J0");
@@ -7322,15 +7322,15 @@ var agentRow = "_c_ _cL";
7322
7322
  var toolGrid = "_dh _cV";
7323
7323
  var toolRow = "_di _cW";
7324
7324
  var themeSeg = "_dF _bd";
7325
- var checkList = "_ea _cg";
7326
- var list$2 = "_cX _ci _cK _cV";
7325
+ var checkList = "_ea _ca";
7326
+ var list$2 = "_cX _cc _cK _cV";
7327
7327
  var flatCardRow = "_cY _cW";
7328
7328
  var chip$1 = "_c7 _X _W";
7329
- var pop$1 = "_cG _9";
7330
- var spinner = "_cJ _1 _G";
7331
- var busy = "_cv _cu";
7332
- var pop = "_cx _9";
7333
- var sectionCount$1 = "_cf _N _O";
7329
+ var pop$1 = "_cz _9";
7330
+ var spinner = "_cC _1 _G";
7331
+ var busy = "_cG _cF";
7332
+ var pop = "_cI _9";
7333
+ var sectionCount$1 = "_b_ _N _O";
7334
7334
  //#endregion
7335
7335
  //#region src/tags/icons/icon-refresh.marko
7336
7336
  var icon_refresh_default = _template("pb", (input) => {
@@ -7374,14 +7374,14 @@ var page_head_default = _template("t", (input) => {
7374
7374
  _if(() => {
7375
7375
  if (input.backHref) {
7376
7376
  const $scope1_id = _scope_id();
7377
- _html(`<a${_attr("href", input.backHref)}${_attr_class([iconBtnRow, "_eZ"])}${_attr_or("title", input.backTitle, " title=\"Back (Esc)\"")}${_attr_or("aria-label", input.backTitle, " aria-label=Back")}>`);
7377
+ _html(`<a${_attr("href", input.backHref)}${_attr_class([iconBtnRow, "_eP"])}${_attr_or("title", input.backTitle, " title=\"Back (Esc)\"")}${_attr_or("aria-label", input.backTitle, " aria-label=Back")}>`);
7378
7378
  icon_back_default({ size: 14 });
7379
7379
  _html(`</a>${_el_resume($scope1_id, "a", _serialize_guard($scope0_reason, 0))}`);
7380
7380
  _serialize_if($scope0_reason, 2) && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 0) && _scope_with_id($scope0_id) });
7381
7381
  return 0;
7382
7382
  } else if (input.onBack) {
7383
7383
  const $scope2_id = _scope_id();
7384
- _html(`<button${_attr_class([iconBtnRow, "_eZ"])}${_attr_or("title", input.backTitle, " title=\"Back (Esc)\"")}${_attr_or("aria-label", input.backTitle, " aria-label=Back")}>`);
7384
+ _html(`<button${_attr_class([iconBtnRow, "_eP"])}${_attr_or("title", input.backTitle, " title=\"Back (Esc)\"")}${_attr_or("aria-label", input.backTitle, " aria-label=Back")}>`);
7385
7385
  icon_back_default({ size: 14 });
7386
7386
  _html(`</button>${_el_resume($scope2_id, "a")}`);
7387
7387
  _script($scope2_id, "t0");
@@ -7472,7 +7472,7 @@ var icon_agent_default = _template("P", (input) => {
7472
7472
  n: $badge__closures
7473
7473
  });
7474
7474
  });
7475
- var usageNote = "_g6 _W";
7475
+ var usageNote = "_fE _W";
7476
7476
  //#endregion
7477
7477
  //#region src/tags/icons/icon-warning.marko
7478
7478
  var icon_warning_default = _template("xb", (input) => {
@@ -7502,11 +7502,11 @@ var usage_meters_default = _template("L", (input) => {
7502
7502
  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);
7503
7503
  const $scope0_id = _scope_id();
7504
7504
  const agent = input.agent;
7505
- _html(`<div${_attr_class(["_g0", { ["_g1"]: input.hideName }])}><div${_attr_class("_g2")}>`);
7505
+ _html(`<div${_attr_class(["_fy", { ["_fz"]: input.hideName }])}><div${_attr_class("_fA")}>`);
7506
7506
  _if(() => {
7507
7507
  if (!input.hideName) {
7508
7508
  const $scope1_id = _scope_id();
7509
- _html(`<strong${_attr_class("_hk")}>${_text_resume($scope1_id, "b", agent.agent, $sg__input_agent)}</strong>`);
7509
+ _html(`<strong${_attr_class("_fT")}>${_text_resume($scope1_id, "b", agent.agent, $sg__input_agent)}</strong>`);
7510
7510
  $si__input_agent__OR__input_hideName && writeScope($scope1_id, { _: $si__input_agent && _scope_with_id($scope0_id) });
7511
7511
  return 0;
7512
7512
  }
@@ -7514,7 +7514,7 @@ var usage_meters_default = _template("L", (input) => {
7514
7514
  _if(() => {
7515
7515
  if (agent.plan && agent.plan.toLowerCase() !== agent.agent.toLowerCase()) {
7516
7516
  const $scope2_id = _scope_id();
7517
- _html(`<span${_attr_class("_g3")}>${_text_resume($scope2_id, "b", agent.plan.replace(/^default_/, "").replaceAll("_", " "), $sg__input_agent)}</span>`);
7517
+ _html(`<span${_attr_class("_fB")}>${_text_resume($scope2_id, "b", agent.plan.replace(/^default_/, "").replaceAll("_", " "), $sg__input_agent)}</span>`);
7518
7518
  $si__input_agent && writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
7519
7519
  return 0;
7520
7520
  }
@@ -7522,21 +7522,21 @@ var usage_meters_default = _template("L", (input) => {
7522
7522
  _if(() => {
7523
7523
  if (agent.stale_seconds != null) {
7524
7524
  const $scope3_id = _scope_id();
7525
- _html(`<span${_attr_class("_g4")}${_attr("title", `${agent.note || "provider unreachable"}. Last cached numbers, ${duration(agent.stale_seconds * 1e3)} old`)}>`);
7525
+ _html(`<span${_attr_class("_fC")}${_attr("title", `${agent.note || "provider unreachable"}. Last cached numbers, ${duration(agent.stale_seconds * 1e3)} old`)}>`);
7526
7526
  icon_warning_default({ size: 12 });
7527
7527
  _html(` ${_text_resume($scope3_id, "c", duration(agent.stale_seconds * 1e3), $sg__input_agent * 2)} old</span>${_el_resume($scope3_id, "a", $sg__input_agent)}`);
7528
7528
  $si__input_agent && writeScope($scope3_id, { _: _scope_with_id($scope0_id) });
7529
7529
  return 0;
7530
7530
  }
7531
7531
  }, $scope0_id, "e", $sg__input_agent, $sg__input_agent, $sg__input_agent__OR__input_hideName, 0, 1);
7532
- _html(`</div><div${_attr_class(["_g5", { ["_hl"]: agent.stale_seconds != null }])}>`);
7532
+ _html(`</div><div${_attr_class(["_fD", { ["_fU"]: agent.stale_seconds != null }])}>`);
7533
7533
  _for_of(agent.windows || [], (win) => {
7534
7534
  const $scope4_id = _scope_id();
7535
7535
  const pct = pctText(win.used_percent);
7536
7536
  const label = resetLabel(win.resets_at, agent.stale_seconds != null);
7537
- const fillClass = win.used_percent >= 90 ? "_hd" : win.used_percent >= 70 ? "_hc" : win.used_percent >= 40 ? "_hb" : "_ha";
7538
- const pctClass = win.used_percent >= 90 ? "_hi" : win.used_percent >= 70 ? "_hh" : win.used_percent >= 40 ? "_hg" : "_hf";
7539
- _html(`<div${_attr_class("_g7")}${_attr("title", `${win.window}: ${pct} used${win.resets_at ? `, resets ${new Date(win.resets_at).toLocaleString()}` : ""}`)}><span${_attr_class("_g8")}>${_text_resume($scope4_id, "c", win.window, $sg__input_agent)}</span><span${_attr_class("_g9")}><span${_attr_class(["_g_", 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(["_he", pctClass])}>${_text_resume($scope4_id, "g", pct, $sg__input_agent)}</span>${_el_resume($scope4_id, "f", $sg__input_agent)}<span${_attr_class("_hj")}>`);
7537
+ const fillClass = win.used_percent >= 90 ? "_fM" : win.used_percent >= 70 ? "_fL" : win.used_percent >= 40 ? "_fK" : "_fJ";
7538
+ const pctClass = win.used_percent >= 90 ? "_fR" : win.used_percent >= 70 ? "_fQ" : win.used_percent >= 40 ? "_fP" : "_fO";
7539
+ _html(`<div${_attr_class("_fF")}${_attr("title", `${win.window}: ${pct} used${win.resets_at ? `, resets ${new Date(win.resets_at).toLocaleString()}` : ""}`)}><span${_attr_class("_fG")}>${_text_resume($scope4_id, "c", win.window, $sg__input_agent)}</span><span${_attr_class("_fH")}><span${_attr_class(["_fI", 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(["_fN", pctClass])}>${_text_resume($scope4_id, "g", pct, $sg__input_agent)}</span>${_el_resume($scope4_id, "f", $sg__input_agent)}<span${_attr_class("_fS")}>`);
7540
7540
  _if(() => {
7541
7541
  if (label) {
7542
7542
  const $scope6_id = _scope_id();
@@ -7635,10 +7635,10 @@ var add_field_default = _template("b", (input$3) => {
7635
7635
  }
7636
7636
  }, $scope0_id, "a", 1, 1, 1, 0, 1);
7637
7637
  _html(`<form${_attr_class([
7638
- "_cz",
7638
+ "_cs",
7639
7639
  input$3.class,
7640
- { ["_cA"]: !open }
7641
- ])}><label${_attr_class(["_0", "_cC"])}>`);
7640
+ { ["_ct"]: !open }
7641
+ ])}><label${_attr_class(["_0", "_cv"])}>`);
7642
7642
  _if(() => {
7643
7643
  if (input$3.searching) {
7644
7644
  const $scope5_id = _scope_id();
@@ -7665,7 +7665,7 @@ var add_field_default = _template("b", (input$3) => {
7665
7665
  }, "b0", $scope0_id))}${_attr_class([
7666
7666
  "_Y",
7667
7667
  "_2",
7668
- "_cD"
7668
+ "_cw"
7669
7669
  ])} type=text${_attr("placeholder", input$3.placeholder)}${_attr("aria-label", input$3.ariaLabel)} autocomplete=off spellcheck=false>${_el_resume($scope0_id, "e")}</label>`);
7670
7670
  _if(() => {
7671
7671
  if (input$3.submitLabel) {
@@ -7673,19 +7673,19 @@ var add_field_default = _template("b", (input$3) => {
7673
7673
  _html(`<button${_attr_class([
7674
7674
  btnSm,
7675
7675
  "_r",
7676
- "_cE"
7676
+ "_cx"
7677
7677
  ])} type=submit${_attr("hidden", !open)}${_attr("disabled", !value.trim() || input$3.busy)}>${_text_resume($scope3_id, "b", input$3.busy ? "Adding…" : input$3.submitLabel, _serialize_guard($scope0_reason, 1))}</button>${_el_resume($scope3_id, "a")}`);
7678
7678
  writeScope($scope3_id, { _: _scope_with_id($scope0_id) });
7679
7679
  return 0;
7680
7680
  }
7681
7681
  }, $scope0_id, "f", 1, _serialize_guard($scope0_reason, 7), 1, 0, 1);
7682
- _html(`<button${_attr_class([iconBtnRow, "_cF"])} type=button${_attr("hidden", !open)} title=Close aria-label=Close${_attr("disabled", input$3.busy)}>`);
7682
+ _html(`<button${_attr_class([iconBtnRow, "_cy"])} type=button${_attr("hidden", !open)} title=Close aria-label=Close${_attr("disabled", input$3.busy)}>`);
7683
7683
  icon_xmark_default({ size: 14 });
7684
7684
  _html(`</button>${_el_resume($scope0_id, "g")}`);
7685
7685
  _if(() => {
7686
7686
  if (input$3.content) {
7687
7687
  const $scope4_id = _scope_id();
7688
- _html(`<ul${_attr_class([pop$1, "_cH"])}${_attr("hidden", !open || !value.trim())}>`);
7688
+ _html(`<ul${_attr_class([pop$1, "_cA"])}${_attr("hidden", !open || !value.trim())}>`);
7689
7689
  _dynamic_tag($scope4_id, "b", input$3.content, {}, 0, 0, $sg__input_content);
7690
7690
  _html(`</ul>${_el_resume($scope4_id, "a")}`);
7691
7691
  writeScope($scope4_id, { _: _scope_with_id($scope0_id) });
@@ -7812,14 +7812,14 @@ var sso_auth_default = _template("G", (input) => {
7812
7812
  localCode = null;
7813
7813
  }
7814
7814
  }, "G0", $scope0_id);
7815
- _html(`<div${_attr_class(["_hs", input.class])}>`);
7815
+ _html(`<div${_attr_class(["_fV", input.class])}>`);
7816
7816
  _for_of(input.items, (s) => {
7817
7817
  const $scope1_id = _scope_id();
7818
- _html(`<div${_attr_class("_ht")}><span${_attr_class("_hv")}><span${_attr_class("_hw")}>${_text_resume($scope1_id, "d", s.org, $sg__input_items)}</span><span${_attr_class(["_hx", "_hy"])} title="Repos and PRs in this org stay hidden until the GitHub CLI is authorized for it.">SSO not authorized</span></span>`);
7818
+ _html(`<div${_attr_class("_fW")}><span${_attr_class("_fY")}><span${_attr_class("_fZ")}>${_text_resume($scope1_id, "d", s.org, $sg__input_items)}</span><span${_attr_class(["_f0", "_f1"])} title="Repos and PRs in this org stay hidden until the GitHub CLI is authorized for it.">SSO not authorized</span></span>`);
7819
7819
  _if(() => {
7820
7820
  if (!busy) {
7821
7821
  const $scope2_id = _scope_id();
7822
- _html(`<button type=button${_attr_class([btnSm, "_r"])} title="Re-authorize GitHub CLI (same device flow as Sign in)">Authorize</button>${_el_resume($scope2_id, "a")}<button type=button${_attr_class([btnSm, "_hz"])}${_attr("title", `Ignore ${s.org} — stop asking about it`)}>Ignore</button>${_el_resume($scope2_id, "b")}`);
7822
+ _html(`<button type=button${_attr_class([btnSm, "_r"])} title="Re-authorize GitHub CLI (same device flow as Sign in)">Authorize</button>${_el_resume($scope2_id, "a")}<button type=button${_attr_class([btnSm, "_f2"])}${_attr("title", `Ignore ${s.org} — stop asking about it`)}>Ignore</button>${_el_resume($scope2_id, "b")}`);
7823
7823
  _script($scope2_id, "G1");
7824
7824
  writeScope($scope2_id, {});
7825
7825
  return 0;
@@ -7834,13 +7834,13 @@ var sso_auth_default = _template("G", (input) => {
7834
7834
  _if(() => {
7835
7835
  if (localBusy && localCode) {
7836
7836
  const $scope4_id = _scope_id();
7837
- _html(`<div${_attr_class(["_ht", "_hA"])}><span${_attr_class("_G")}></span> Enter code <strong${_attr_class("_hB")}>${_text_resume($scope4_id, "d", localCode)}</strong> at <a${_attr("href", `https://${host}/login/device`)}${_attr_class("_hC")}>${_text_resume($scope4_id, "f", host, _serialize_guard($scope0_reason, 3))}/login/device</a>${_el_resume($scope4_id, "e")}</div>`);
7837
+ _html(`<div${_attr_class(["_fW", "_f3"])}><span${_attr_class("_G")}></span> Enter code <strong${_attr_class("_f4")}>${_text_resume($scope4_id, "d", localCode)}</strong> at <a${_attr("href", `https://${host}/login/device`)}${_attr_class("_f5")}>${_text_resume($scope4_id, "f", host, _serialize_guard($scope0_reason, 3))}/login/device</a>${_el_resume($scope4_id, "e")}</div>`);
7838
7838
  _script($scope4_id, "G2");
7839
7839
  writeScope($scope4_id, {});
7840
7840
  return 0;
7841
7841
  } else if (localBusy) {
7842
7842
  const $scope6_id = _scope_id();
7843
- _html(`<div${_attr_class(["_ht", "_hA"])}><span${_attr_class("_G")}></span>Starting GitHub re-authorization…</div>`);
7843
+ _html(`<div${_attr_class(["_fW", "_f3"])}><span${_attr_class("_G")}></span>Starting GitHub re-authorization…</div>`);
7844
7844
  writeScope($scope6_id, {});
7845
7845
  return 1;
7846
7846
  }
@@ -7848,14 +7848,14 @@ var sso_auth_default = _template("G", (input) => {
7848
7848
  _if(() => {
7849
7849
  if (localError) {
7850
7850
  const $scope5_id = _scope_id();
7851
- _html(`<p${_attr_class(["_ht", "_hD"])}>${_text_resume($scope5_id, "b", localError)}</p>`);
7851
+ _html(`<p${_attr_class(["_fW", "_f6"])}>${_text_resume($scope5_id, "b", localError)}</p>`);
7852
7852
  writeScope($scope5_id, {});
7853
7853
  return 0;
7854
7854
  }
7855
7855
  }, $scope0_id, "d", 1, 1, 1, 0, 1);
7856
7856
  _for_of(skipped, (s) => {
7857
7857
  const $scope3_id = _scope_id();
7858
- _html(`<div${_attr_class(["_ht", "_hu"])}><span${_attr_class("_hv")}><span${_attr_class("_hw")}>${_text_resume($scope3_id, "d", s.org, $sg__input_skipped)}</span><span${_attr_class("_hx")}>Ignored</span></span><button type=button${_attr_class([btnSm, "_hz"])}${_attr("title", `Ask about ${s.org} again`)}>Undo</button>${_el_resume($scope3_id, "f")}</div>`);
7858
+ _html(`<div${_attr_class(["_fW", "_fX"])}><span${_attr_class("_fY")}><span${_attr_class("_fZ")}>${_text_resume($scope3_id, "d", s.org, $sg__input_skipped)}</span><span${_attr_class("_f0")}>Ignored</span></span><button type=button${_attr_class([btnSm, "_f2"])}${_attr("title", `Ask about ${s.org} again`)}>Undo</button>${_el_resume($scope3_id, "f")}</div>`);
7859
7859
  _script($scope3_id, "G3");
7860
7860
  writeScope($scope3_id, {
7861
7861
  i: s?.org,
@@ -7906,7 +7906,7 @@ var skill_chip_default = _template("F", (input) => {
7906
7906
  const $input_tags__closures = /* @__PURE__ */ new Set();
7907
7907
  const $input_actions__closures = /* @__PURE__ */ new Set();
7908
7908
  const $input_trailing__closures = /* @__PURE__ */ new Set();
7909
- _html(`<li${_attr_class("_ct")}>`);
7909
+ _html(`<li${_attr_class("_cE")}>`);
7910
7910
  _if(() => {
7911
7911
  if (input.busy != null) {
7912
7912
  const $scope1_id = _scope_id();
@@ -7916,20 +7916,20 @@ var skill_chip_default = _template("F", (input) => {
7916
7916
  } else {
7917
7917
  const $scope2_id = _scope_id();
7918
7918
  const popId = _id();
7919
- _html(`<button${_attr_class("_cu")}${_attr("popovertarget", popId)}${_attr("title", `About ${input.name}`)}>${_text_resume($scope2_id, "b", input.name, $sg__input_name)}`);
7919
+ _html(`<button${_attr_class("_cF")}${_attr("popovertarget", popId)}${_attr("title", `About ${input.name}`)}>${_text_resume($scope2_id, "b", input.name, $sg__input_name)}`);
7920
7920
  _if(() => {
7921
7921
  if (input.hint) {
7922
7922
  const $scope3_id = _scope_id();
7923
- _html(`<span${_attr_class("_cw")}>${_text_resume($scope3_id, "b", input.hint, $sg__input_hint)}</span>`);
7923
+ _html(`<span${_attr_class("_cH")}>${_text_resume($scope3_id, "b", input.hint, $sg__input_hint)}</span>`);
7924
7924
  $si__input_busy__OR__input_hint && _subscribe($si__input_hint && $input_hint__closures, writeScope($scope3_id, { _: _scope_with_id($scope2_id) }));
7925
7925
  return 0;
7926
7926
  }
7927
7927
  }, $scope2_id, "c", $sg__input_hint, $sg__input_hint, $sg__input_hint__OR__input_description__OR__input_sourceUrl__OR__input_source__OR__input_noteLocal__OR__input_tags__OR__input_actions__OR__input_trailing, 0, 1);
7928
- _html(`</button>${_el_resume($scope2_id, "a")}<div${_attr("id", popId)} popover=auto${_attr_class(pop)}><span${_attr_class(["_ck", "_y"])}>${_text_resume($scope2_id, "f", input.name, $sg__input_name)}</span>`);
7928
+ _html(`</button>${_el_resume($scope2_id, "a")}<div${_attr("id", popId)} popover=auto${_attr_class(pop)}><span${_attr_class(["_ce", "_y"])}>${_text_resume($scope2_id, "f", input.name, $sg__input_name)}</span>`);
7929
7929
  _if(() => {
7930
7930
  if (input.description) {
7931
7931
  const $scope4_id = _scope_id();
7932
- _html(`<span${_attr_class("_cm")}${_attr("title", input.description)}>${_text_resume($scope4_id, "b", input.description, $sg__input_description)}</span>${_el_resume($scope4_id, "a", $sg__input_description)}`);
7932
+ _html(`<span${_attr_class("_cg")}${_attr("title", input.description)}>${_text_resume($scope4_id, "b", input.description, $sg__input_description)}</span>${_el_resume($scope4_id, "a", $sg__input_description)}`);
7933
7933
  $si__input_busy__OR__input_description && _subscribe($si__input_description && $input_description__closures, writeScope($scope4_id, { _: _scope_with_id($scope2_id) }));
7934
7934
  return 0;
7935
7935
  }
@@ -7937,12 +7937,12 @@ var skill_chip_default = _template("F", (input) => {
7937
7937
  _if(() => {
7938
7938
  if (input.sourceUrl) {
7939
7939
  const $scope5_id = _scope_id();
7940
- _html(`<a${_attr_class(["_cm", "_K"])}${_attr("href", input.sourceUrl)} target=_blank rel=noopener${_attr("title", `Open ${input.source} on GitHub`)}>${_text_resume($scope5_id, "b", input.source, $sg__input_source)}</a>${_el_resume($scope5_id, "a", _serialize_guard($scope0_reason, 6))}`);
7940
+ _html(`<a${_attr_class(["_cg", "_K"])}${_attr("href", input.sourceUrl)} target=_blank rel=noopener${_attr("title", `Open ${input.source} on GitHub`)}>${_text_resume($scope5_id, "b", input.source, $sg__input_source)}</a>${_el_resume($scope5_id, "a", _serialize_guard($scope0_reason, 6))}`);
7941
7941
  $si__input_busy__OR__input_sourceUrl__OR__input_source__OR__input_noteLocal && _subscribe($si__input_source && $input_source__closures, _subscribe($si__input_sourceUrl && $input_sourceUrl__closures, writeScope($scope5_id, { _: _scope_with_id($scope2_id) })));
7942
7942
  return 0;
7943
7943
  } else if (input.source) {
7944
7944
  const $scope6_id = _scope_id();
7945
- _html(`<span${_attr_class("_cm")}>${_text_resume($scope6_id, "b", input.source, $sg__input_source)}</span>`);
7945
+ _html(`<span${_attr_class("_cg")}>${_text_resume($scope6_id, "b", input.source, $sg__input_source)}</span>`);
7946
7946
  $si__input_busy__OR__input_sourceUrl__OR__input_source__OR__input_noteLocal && _subscribe($si__input_source && $input_source__closures, writeScope($scope6_id, {
7947
7947
  _: _scope_with_id($scope2_id),
7948
7948
  Cs: $si__input_source && 1
@@ -7950,7 +7950,7 @@ var skill_chip_default = _template("F", (input) => {
7950
7950
  return 1;
7951
7951
  } else if (input.noteLocal) {
7952
7952
  const $scope10_id = _scope_id();
7953
- _html(`<span${_attr_class(["_cm", "_x"])} title="Not installed from a source, so it cannot be updated">local only</span>`);
7953
+ _html(`<span${_attr_class(["_cg", "_x"])} title="Not installed from a source, so it cannot be updated">local only</span>`);
7954
7954
  _serialize_if($scope0_reason, 8) && writeScope($scope10_id, {});
7955
7955
  return 2;
7956
7956
  }
@@ -7958,7 +7958,7 @@ var skill_chip_default = _template("F", (input) => {
7958
7958
  _if(() => {
7959
7959
  if (input.tags) {
7960
7960
  const $scope7_id = _scope_id();
7961
- _html(`<span${_attr_class("_cl")}>`);
7961
+ _html(`<span${_attr_class("_cf")}>`);
7962
7962
  _dynamic_tag($scope7_id, "b", input.tags, {}, 0, 0, $sg__input_tags);
7963
7963
  _html("</span>");
7964
7964
  $si__input_busy__OR__input_tags && _subscribe($si__input_tags && $input_tags__closures, writeScope($scope7_id, { _: _scope_with_id($scope2_id) }));
@@ -7968,7 +7968,7 @@ var skill_chip_default = _template("F", (input) => {
7968
7968
  _if(() => {
7969
7969
  if (input.actions) {
7970
7970
  const $scope8_id = _scope_id();
7971
- _html(`<div${_attr_class("_cy")}>`);
7971
+ _html(`<div${_attr_class("_cJ")}>`);
7972
7972
  _dynamic_tag($scope8_id, "b", input.actions, {}, 0, 0, $sg__input_actions);
7973
7973
  _html("</div>");
7974
7974
  $si__input_busy__OR__input_actions && _subscribe($si__input_actions && $input_actions__closures, writeScope($scope8_id, { _: _scope_with_id($scope2_id) }));
@@ -8079,7 +8079,7 @@ var icon_moon_default = _template("nb", (input) => {
8079
8079
  });
8080
8080
  //#endregion
8081
8081
  //#region src/tags/prompt-dialog.css.ts
8082
- var promptDlg = "_hr _hn";
8082
+ var promptDlg = "_fm _fi";
8083
8083
  //#endregion
8084
8084
  //#region src/tags/dialog-close.marko
8085
8085
  var dialog_close_default = _template("h", (input) => {
@@ -8103,7 +8103,7 @@ var modal_view_default = _template("q", (input) => {
8103
8103
  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;
8104
8104
  const dismissable = input.dismissable !== false;
8105
8105
  let open = input.open;
8106
- _html(`<dialog${_attr_class(["_hm", inputClass])}${_attr("aria-labelledby", inputLabelledBy)}${inputLabelledBy ? _attr("aria-label", inputAriaLabel) : _attr("aria-label", inputAriaLabel || label)} closedby=${dismissable ? "any" : "none"}${_attrs_partial({
8106
+ _html(`<dialog${_attr_class(["_fh", inputClass])}${_attr("aria-labelledby", inputLabelledBy)}${inputLabelledBy ? _attr("aria-label", inputAriaLabel) : _attr("aria-label", inputAriaLabel || label)} closedby=${dismissable ? "any" : "none"}${_attrs_partial({
8107
8107
  ...htmlInput,
8108
8108
  open: null
8109
8109
  }, {
@@ -8113,20 +8113,20 @@ var modal_view_default = _template("q", (input) => {
8113
8113
  closedby: 1,
8114
8114
  "on-cancel": 1,
8115
8115
  "on-close": 1
8116
- }, "a", $scope0_id, "dialog")}><div${_attr_class("_hp")}>`);
8116
+ }, "a", $scope0_id, "dialog")}><div${_attr_class("_fk")}>`);
8117
8117
  _dynamic_tag($scope0_id, "c", content, {}, 0, 0, _serialize_guard($scope0_reason, 6));
8118
8118
  _html("</div>");
8119
8119
  _if(() => {
8120
8120
  if (footer) {
8121
8121
  const $scope1_id = _scope_id();
8122
- _html(`<form method=dialog${_attr_class("_hq")}>`);
8122
+ _html(`<form method=dialog${_attr_class("_fl")}>`);
8123
8123
  _dynamic_tag($scope1_id, "b", footer.content, {}, 0, 0, _serialize_guard($scope0_reason, 7));
8124
8124
  _html("</form>");
8125
8125
  $si__input_openChange__OR__input_footer && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 7) && _scope_with_id($scope0_id) });
8126
8126
  return 0;
8127
8127
  } else if (input.openChange) {
8128
8128
  const $scope2_id = _scope_id();
8129
- _html(`<form method=dialog${_attr_class("_hq")}>`);
8129
+ _html(`<form method=dialog${_attr_class("_fl")}>`);
8130
8130
  dialog_close_default({
8131
8131
  class: ["_q", "_r"],
8132
8132
  content: _content("q0", () => {
@@ -8210,7 +8210,7 @@ var prompt_dialog_default = _template("u", (input) => {
8210
8210
  content: _content("u7", () => {
8211
8211
  _scope_reason();
8212
8212
  const $scope2_id = _scope_id();
8213
- _html(`<h2${_attr_class("_ho")}${_attr("id", titleId)}>${_text_resume($scope2_id, "b", input.label, $sg__input_label)}</h2><input${_attr_input_value($scope2_id, "c", value, _resume((_new_value) => {
8213
+ _html(`<h2${_attr_class("_fj")}${_attr("id", titleId)}>${_text_resume($scope2_id, "b", input.label, $sg__input_label)}</h2><input${_attr_input_value($scope2_id, "c", value, _resume((_new_value) => {
8214
8214
  value = _new_value;
8215
8215
  }, "u0", $scope2_id))}${_attr("placeholder", input.placeholder)}>${_el_resume($scope2_id, "c")}`);
8216
8216
  _script($scope2_id, "u5");
@@ -8868,7 +8868,7 @@ var settings_page_default = _template("B", (input) => {
8868
8868
  _: _scope_with_id($scope0_id)
8869
8869
  });
8870
8870
  }, $scope0_id) };
8871
- _html(`<section${_attr_class("_cd")}${_attr("aria-labelledby", agentsId)}><div${_attr_class("_ce")}><h2${_attr("id", agentsId)}${_attr_class("_cr")}>Agents</h2><div${_attr_class("_z")}></div><label${_attr_class("_da")}><span${_attr_class("_W")}>Default</span><span${_attr_class("_o")}>`);
8871
+ _html(`<section${_attr_class("_b8")}${_attr("aria-labelledby", agentsId)}><div${_attr_class("_b9")}><h2${_attr("id", agentsId)}${_attr_class("_cl")}>Agents</h2><div${_attr_class("_z")}></div><label${_attr_class("_da")}><span${_attr_class("_W")}>Default</span><span${_attr_class("_o")}>`);
8872
8872
  _attr_select_value($scope0_id, "p", input.preferred, _resume(function(v) {
8873
8873
  setPreferred(v);
8874
8874
  }, "B0", $scope0_id), () => {
@@ -8894,7 +8894,7 @@ var settings_page_default = _template("B", (input) => {
8894
8894
  agent: a.id,
8895
8895
  size: 18
8896
8896
  });
8897
- _html(`<div${_attr_class("_cj")}><span${_attr_class("_cl")}><span${_attr_class("_ck")}>${_text_resume($scope1_id, "g", a.label)}</span>`);
8897
+ _html(`<div${_attr_class("_cd")}><span${_attr_class("_cf")}><span${_attr_class("_ce")}>${_text_resume($scope1_id, "g", a.label)}</span>`);
8898
8898
  _if(() => {
8899
8899
  if (lone && input.preferred === lone.id) {
8900
8900
  const $scope85_id = _scope_id();
@@ -8912,7 +8912,7 @@ var settings_page_default = _template("B", (input) => {
8912
8912
  return 0;
8913
8913
  } else if (!a.installed) {
8914
8914
  const $scope86_id = _scope_id();
8915
- _html(`<span${_attr_class("_cm")}>Not installed</span>`);
8915
+ _html(`<span${_attr_class("_cg")}>Not installed</span>`);
8916
8916
  writeScope($scope86_id, {});
8917
8917
  return 1;
8918
8918
  }
@@ -9030,17 +9030,17 @@ var settings_page_default = _template("B", (input) => {
9030
9030
  _if(() => {
9031
9031
  if (!usage && families.length) {
9032
9032
  const $scope90_id = _scope_id();
9033
- _html(`<p${_attr_class("_co")}><span${_attr_class("_G")}></span> Loading usage…</p>`);
9033
+ _html(`<p${_attr_class("_ci")}><span${_attr_class("_G")}></span> Loading usage…</p>`);
9034
9034
  writeScope($scope90_id, {});
9035
9035
  return 0;
9036
9036
  } else if (usage?.error) {
9037
9037
  const $scope9_id = _scope_id();
9038
- _html(`<p${_attr_class("_co")}>${_text_resume($scope9_id, "b", usage.error)}</p>`);
9038
+ _html(`<p${_attr_class("_ci")}>${_text_resume($scope9_id, "b", usage.error)}</p>`);
9039
9039
  writeScope($scope9_id, {});
9040
9040
  return 1;
9041
9041
  }
9042
9042
  }, $scope0_id, "t", 1, 1, 1, 0, 1);
9043
- _html(`</section></div><div${_attr_class("_eh")}><section${_attr_class("_cd")}${_attr("aria-labelledby", githubId)}><div${_attr_class("_ce")}><h2${_attr("id", githubId)}${_attr_class("_cr")}>GitHub</h2>`);
9043
+ _html(`</section></div><div${_attr_class("_eh")}><section${_attr_class("_b8")}${_attr("aria-labelledby", githubId)}><div${_attr_class("_b9")}><h2${_attr("id", githubId)}${_attr_class("_cl")}>GitHub</h2>`);
9044
9044
  _if(() => {
9045
9045
  if (setup) {
9046
9046
  const $scope41_id = _scope_id();
@@ -9077,7 +9077,7 @@ var settings_page_default = _template("B", (input) => {
9077
9077
  return 0;
9078
9078
  }
9079
9079
  }, $scope0_id, "y");
9080
- _html(`</div><div${_attr_class(["_ci", "_cK"])}>`);
9080
+ _html(`</div><div${_attr_class(["_cc", "_cK"])}>`);
9081
9081
  _for_of(setup?.github || [], (h) => {
9082
9082
  const $scope7_id = _scope_id();
9083
9083
  const $for_content3__h_host__closures = /* @__PURE__ */ new Set();
@@ -9089,7 +9089,7 @@ var settings_page_default = _template("B", (input) => {
9089
9089
  size: 18,
9090
9090
  class: "_dr"
9091
9091
  });
9092
- _html(`<div${_attr_class("_cj")}><span${_attr_class("_cl")}><span${_attr_class("_ck")}>${_text_resume($scope7_id, "g", h.host)}</span>`);
9092
+ _html(`<div${_attr_class("_cd")}><span${_attr_class("_cf")}><span${_attr_class("_ce")}>${_text_resume($scope7_id, "g", h.host)}</span>`);
9093
9093
  _if(() => {
9094
9094
  if (h.isEnterprise) {
9095
9095
  const $scope94_id = _scope_id();
@@ -9102,12 +9102,12 @@ var settings_page_default = _template("B", (input) => {
9102
9102
  _if(() => {
9103
9103
  if (busy) {
9104
9104
  const $scope14_id = _scope_id();
9105
- _html(`<span${_attr_class(["_cm", "_ds"])}><span${_attr_class("_G")}></span>${_text_resume($scope14_id, "c", authCodes.has(h.host) ? "Waiting for the browser…" : active.get(h.host) || "Starting…")}</span>`);
9105
+ _html(`<span${_attr_class(["_cg", "_ds"])}><span${_attr_class("_G")}></span>${_text_resume($scope14_id, "c", authCodes.has(h.host) ? "Waiting for the browser…" : active.get(h.host) || "Starting…")}</span>`);
9106
9106
  _subscribe($authCodes__closures, _subscribe($active__closures, writeScope($scope14_id, { Ch1: 1 })));
9107
9107
  return 0;
9108
9108
  } else if (h.authed) {
9109
9109
  const $scope92_id = _scope_id();
9110
- _html(`<span${_attr_class(["_cm", "_ds"])}>`);
9110
+ _html(`<span${_attr_class(["_cg", "_ds"])}>`);
9111
9111
  icon_check_default({
9112
9112
  size: 12,
9113
9113
  class: "_dt"
@@ -9118,7 +9118,7 @@ var settings_page_default = _template("B", (input) => {
9118
9118
  } else if (h.error) {
9119
9119
  const $scope93_id = _scope_id();
9120
9120
  _html(`<span${_attr_class([
9121
- "_cm",
9121
+ "_cg",
9122
9122
  "_ds",
9123
9123
  "_du"
9124
9124
  ])}>`);
@@ -9128,7 +9128,7 @@ var settings_page_default = _template("B", (input) => {
9128
9128
  return 2;
9129
9129
  } else {
9130
9130
  const $scope95_id = _scope_id();
9131
- _html(`<span${_attr_class(["_cm", "_ds"])}>Not signed in</span>`);
9131
+ _html(`<span${_attr_class(["_cg", "_ds"])}>Not signed in</span>`);
9132
9132
  writeScope($scope95_id, {});
9133
9133
  return 3;
9134
9134
  }
@@ -9171,7 +9171,7 @@ var settings_page_default = _template("B", (input) => {
9171
9171
  const $childScope12 = _peek_scope_id();
9172
9172
  arm_button_default({
9173
9173
  class: [
9174
- "_cn",
9174
+ "_ch",
9175
9175
  "_7",
9176
9176
  "_8"
9177
9177
  ],
@@ -9248,12 +9248,12 @@ var settings_page_default = _template("B", (input) => {
9248
9248
  _if(() => {
9249
9249
  if (setup && !setup.github.length) {
9250
9250
  const $scope98_id = _scope_id();
9251
- _html(`<p${_attr_class("_co")}>Install the GitHub CLI below to sign in.</p>`);
9251
+ _html(`<p${_attr_class("_ci")}>Install the GitHub CLI below to sign in.</p>`);
9252
9252
  writeScope($scope98_id, {});
9253
9253
  return 0;
9254
9254
  }
9255
9255
  }, $scope0_id, "a0", 1, 1, 1, 0, 1);
9256
- _html(`</section><section${_attr_class("_cd")}${_attr("aria-labelledby", machineId)}><div${_attr_class("_ce")}><h2${_attr("id", machineId)}${_attr_class("_cr")}>Machine</h2></div><div${_attr_class(["_ci", "_cK"])}><div${_attr_class(["_cL", "_cM"])}><div${_attr_class(["_cN", { ["_cO"]: skillsOpen }])}><button${_attr_class("_cP")} aria-expanded=true>`);
9256
+ _html(`</section><section${_attr_class("_b8")}${_attr("aria-labelledby", machineId)}><div${_attr_class("_b9")}><h2${_attr("id", machineId)}${_attr_class("_cl")}>Machine</h2></div><div${_attr_class(["_cc", "_cK"])}><div${_attr_class(["_cL", "_cM"])}><div${_attr_class(["_cN", { ["_cO"]: skillsOpen }])}><button${_attr_class("_cP")} aria-expanded=true>`);
9257
9257
  _set_serialize_reason(1);
9258
9258
  const $childScope14 = _peek_scope_id();
9259
9259
  icon_chevron_right_default({
@@ -9292,7 +9292,7 @@ var settings_page_default = _template("B", (input) => {
9292
9292
  _if(() => {
9293
9293
  if (skillSearching && !skillHits?.length && !looksLikeSource(skillQuery)) {
9294
9294
  const $scope99_id = _scope_id();
9295
- _html(`<li${_attr_class("_cI")}>Searching skills.sh…</li>`);
9295
+ _html(`<li${_attr_class("_cB")}>Searching skills.sh…</li>`);
9296
9296
  writeScope($scope99_id, {});
9297
9297
  return 0;
9298
9298
  }
@@ -9300,7 +9300,7 @@ var settings_page_default = _template("B", (input) => {
9300
9300
  _if(() => {
9301
9301
  if (looksLikeSource(skillQuery)) {
9302
9302
  const $scope17_id = _scope_id();
9303
- _html(`<li${_attr_class(toolRow)}><div${_attr_class("_cj")}><span${_attr_class(["_dk", "_y"])}>${_text_resume($scope17_id, "d", skillQuery.trim())}</span>`);
9303
+ _html(`<li${_attr_class(toolRow)}><div${_attr_class("_cd")}><span${_attr_class(["_dk", "_y"])}>${_text_resume($scope17_id, "d", skillQuery.trim())}</span>`);
9304
9304
  _if(() => {
9305
9305
  if (active.has(skillQuery.trim())) {
9306
9306
  const $scope18_id = _scope_id();
@@ -9312,7 +9312,7 @@ var settings_page_default = _template("B", (input) => {
9312
9312
  return 0;
9313
9313
  } else {
9314
9314
  const $scope100_id = _scope_id();
9315
- _html(`<span${_attr_class("_cm")}>Add straight from this source</span>`);
9315
+ _html(`<span${_attr_class("_cg")}>Add straight from this source</span>`);
9316
9316
  writeScope($scope100_id, {});
9317
9317
  return 1;
9318
9318
  }
@@ -9338,7 +9338,7 @@ var settings_page_default = _template("B", (input) => {
9338
9338
  _for_of(skillHits || [], (h) => {
9339
9339
  const $scope19_id = _scope_id();
9340
9340
  const $for_content4__h_installs__closures = /* @__PURE__ */ new Set();
9341
- _html(`<li${_attr_class(toolRow)}><div${_attr_class("_cj")}><span${_attr_class(["_dk", "_y"])}>${_text_resume($scope19_id, "d", h.name)}</span>`);
9341
+ _html(`<li${_attr_class(toolRow)}><div${_attr_class("_cd")}><span${_attr_class(["_dk", "_y"])}>${_text_resume($scope19_id, "d", h.name)}</span>`);
9342
9342
  _if(() => {
9343
9343
  if (active.has(h.skillId)) {
9344
9344
  const $scope20_id = _scope_id();
@@ -9347,7 +9347,7 @@ var settings_page_default = _template("B", (input) => {
9347
9347
  return 0;
9348
9348
  } else {
9349
9349
  const $scope101_id = _scope_id();
9350
- _html(`<span${_attr_class("_cm")}${_attr("title", h.source)}>${_text_resume($scope101_id, "b", h.source)}</span>${_el_resume($scope101_id, "a")}`);
9350
+ _html(`<span${_attr_class("_cg")}${_attr("title", h.source)}>${_text_resume($scope101_id, "b", h.source)}</span>${_el_resume($scope101_id, "a")}`);
9351
9351
  writeScope($scope101_id, {});
9352
9352
  return 1;
9353
9353
  }
@@ -9395,7 +9395,7 @@ var settings_page_default = _template("B", (input) => {
9395
9395
  _if(() => {
9396
9396
  if (skillHits && !skillHits.length && !skillSearching && !looksLikeSource(skillQuery)) {
9397
9397
  const $scope52_id = _scope_id();
9398
- _html(`<li${_attr_class("_cI")}>No skills match "${_text_resume($scope52_id, "b", skillQuery, 2)}".</li>`);
9398
+ _html(`<li${_attr_class("_cB")}>No skills match "${_text_resume($scope52_id, "b", skillQuery, 2)}".</li>`);
9399
9399
  _subscribe($skillQuery__closures, writeScope($scope52_id, { Chs: 3 }));
9400
9400
  return 0;
9401
9401
  }
@@ -9416,18 +9416,18 @@ var settings_page_default = _template("B", (input) => {
9416
9416
  _if(() => {
9417
9417
  if (skills && !skills.agents.length) {
9418
9418
  const $scope104_id = _scope_id();
9419
- _html(`<p${_attr_class("_co")}>No agent CLIs are installed, so a skill would have nowhere to go. Install one from Agents above.</p>`);
9419
+ _html(`<p${_attr_class("_ci")}>No agent CLIs are installed, so a skill would have nowhere to go. Install one from Agents above.</p>`);
9420
9420
  writeScope($scope104_id, {});
9421
9421
  return 0;
9422
9422
  } else if (skills && !skills.available) {
9423
9423
  const $scope22_id = _scope_id();
9424
- _html(`<p${_attr_class("_co")}>The skills CLI is not installed, so skills can be listed but not added or removed. <button${_attr_class(btnSm)}${_attr("disabled", active.has("skills"))}>${_text_resume($scope22_id, "c", active.has("skills") ? "Installing…" : "Install it")}</button>${_el_resume($scope22_id, "b")}</p>`);
9424
+ _html(`<p${_attr_class("_ci")}>The skills CLI is not installed, so skills can be listed but not added or removed. <button${_attr_class(btnSm)}${_attr("disabled", active.has("skills"))}>${_text_resume($scope22_id, "c", active.has("skills") ? "Installing…" : "Install it")}</button>${_el_resume($scope22_id, "b")}</p>`);
9425
9425
  _script($scope22_id, "B66");
9426
9426
  _subscribe($active__closures, writeScope($scope22_id, { Ch1: 6 }));
9427
9427
  return 1;
9428
9428
  }
9429
9429
  }, $scope21_id, "b", 1, 1, 1, 0, 1);
9430
- _html(`<ul${_attr_class("_cs")}>`);
9430
+ _html(`<ul${_attr_class("_cD")}>`);
9431
9431
  _for_of(skills?.global || [], (s) => {
9432
9432
  const $scope23_id = _scope_id();
9433
9433
  const $for_content5__s_agents__closures = /* @__PURE__ */ new Set();
@@ -9505,7 +9505,7 @@ var settings_page_default = _template("B", (input) => {
9505
9505
  _if(() => {
9506
9506
  if (skills && !skills.global.length && skills.available && skills.agents.length) {
9507
9507
  const $scope108_id = _scope_id();
9508
- _html(`<p${_attr_class("_co")}>No skills installed. Search below, or paste an owner/repo.</p>`);
9508
+ _html(`<p${_attr_class("_ci")}>No skills installed. Search below, or paste an owner/repo.</p>`);
9509
9509
  writeScope($scope108_id, {});
9510
9510
  return 0;
9511
9511
  }
@@ -9575,7 +9575,7 @@ var settings_page_default = _template("B", (input) => {
9575
9575
  _if(() => {
9576
9576
  if (searching && !hits?.length) {
9577
9577
  const $scope109_id = _scope_id();
9578
- _html(`<li${_attr_class("_cI")}>Searching the mise registry…</li>`);
9578
+ _html(`<li${_attr_class("_cB")}>Searching the mise registry…</li>`);
9579
9579
  writeScope($scope109_id, {});
9580
9580
  return 0;
9581
9581
  }
@@ -9583,14 +9583,14 @@ var settings_page_default = _template("B", (input) => {
9583
9583
  _if(() => {
9584
9584
  if (hits && !hits.length && !searching) {
9585
9585
  const $scope42_id = _scope_id();
9586
- _html(`<li${_attr_class("_cI")}>No tools match "${_text_resume($scope42_id, "b", query, 2)}".</li>`);
9586
+ _html(`<li${_attr_class("_cB")}>No tools match "${_text_resume($scope42_id, "b", query, 2)}".</li>`);
9587
9587
  _subscribe($query__closures, writeScope($scope42_id, {}));
9588
9588
  return 0;
9589
9589
  }
9590
9590
  }, $scope28_id, "b", 1, 1, 1, 0, 1);
9591
9591
  _for_of(hits || [], (h) => {
9592
9592
  const $scope29_id = _scope_id();
9593
- _html(`<li${_attr_class(toolRow)}><div${_attr_class("_cj")}><span${_attr_class(["_dk", "_y"])}>${_text_resume($scope29_id, "d", h.name)}</span>`);
9593
+ _html(`<li${_attr_class(toolRow)}><div${_attr_class("_cd")}><span${_attr_class(["_dk", "_y"])}>${_text_resume($scope29_id, "d", h.name)}</span>`);
9594
9594
  _if(() => {
9595
9595
  if (active.has(h.name)) {
9596
9596
  const $scope30_id = _scope_id();
@@ -9599,7 +9599,7 @@ var settings_page_default = _template("B", (input) => {
9599
9599
  return 0;
9600
9600
  } else if (h.description) {
9601
9601
  const $scope110_id = _scope_id();
9602
- _html(`<span${_attr_class("_cm")}${_attr("title", h.description)}>${_text_resume($scope110_id, "b", h.description)}</span>${_el_resume($scope110_id, "a")}`);
9602
+ _html(`<span${_attr_class("_cg")}${_attr("title", h.description)}>${_text_resume($scope110_id, "b", h.description)}</span>${_el_resume($scope110_id, "a")}`);
9603
9603
  writeScope($scope110_id, {});
9604
9604
  return 1;
9605
9605
  }
@@ -9650,7 +9650,7 @@ var settings_page_default = _template("B", (input) => {
9650
9650
  _if(() => {
9651
9651
  if (setup && !setup.mise.installed) {
9652
9652
  const $scope31_id = _scope_id();
9653
- _html(`<p${_attr_class("_co")}>mise is not installed. It provides every tool below. <button${_attr_class(btnSm)}${_attr("disabled", active.has("mise"))}>${_text_resume($scope31_id, "c", active.has("mise") ? "Installing…" : "Install mise")}</button>${_el_resume($scope31_id, "b")}</p>`);
9653
+ _html(`<p${_attr_class("_ci")}>mise is not installed. It provides every tool below. <button${_attr_class(btnSm)}${_attr("disabled", active.has("mise"))}>${_text_resume($scope31_id, "c", active.has("mise") ? "Installing…" : "Install mise")}</button>${_el_resume($scope31_id, "b")}</p>`);
9654
9654
  _script($scope31_id, "B76");
9655
9655
  _subscribe($active__closures, writeScope($scope31_id, { Ch1: 10 }));
9656
9656
  return 0;
@@ -9877,7 +9877,7 @@ var settings_page_default = _template("B", (input) => {
9877
9877
  label: "Dark"
9878
9878
  }
9879
9879
  ];
9880
- _html(`</div></div></section><section${_attr_class("_cd")}${_attr("aria-labelledby", appearanceId)}><div${_attr_class("_ce")}><h2${_attr("id", appearanceId)}${_attr_class("_cr")}>Appearance</h2></div><div${_attr_class(["_ci", "_dB"])}><div${_attr_class("_dN")}><img${_attr_class("_dO")}${_attr("src", `/api/instance/icon${accent ? `?v=${accent.slice(1)}` : ""}`)} alt aria-hidden=true>${_el_resume($scope0_id, "au", $sg__input_instance_accent)}<span${_attr_class("_dP")}><span${_attr_class("_dQ")}>${_text_resume($scope0_id, "ax", input.instance.name || "work", _serialize_guard($scope0_reason, 7))}</span><span${_attr_class("_dR")}>Sidebar, tab title, home-screen icon and notifications</span></span></div><label${_attr_class("_dC")}><span${_attr_class("_dD")}>Name</span><input${_attr_input_value($scope0_id, "b1", input.instance.name, _resume(function(v) {
9880
+ _html(`</div></div></section><section${_attr_class("_b8")}${_attr("aria-labelledby", appearanceId)}><div${_attr_class("_b9")}><h2${_attr("id", appearanceId)}${_attr_class("_cl")}>Appearance</h2></div><div${_attr_class(["_cc", "_dB"])}><div${_attr_class("_dN")}><img${_attr_class("_dO")}${_attr("src", `/api/instance/icon${accent ? `?v=${accent.slice(1)}` : ""}`)} alt aria-hidden=true>${_el_resume($scope0_id, "au", $sg__input_instance_accent)}<span${_attr_class("_dP")}><span${_attr_class("_dQ")}>${_text_resume($scope0_id, "ax", input.instance.name || "work", _serialize_guard($scope0_reason, 7))}</span><span${_attr_class("_dR")}>Sidebar, tab title, home-screen icon and notifications</span></span></div><label${_attr_class("_dC")}><span${_attr_class("_dD")}>Name</span><input${_attr_input_value($scope0_id, "b1", input.instance.name, _resume(function(v) {
9881
9881
  setInstance({ name: v });
9882
9882
  }, "B1", $scope0_id))}${_attr_class(["_Y", "_dE"])} type=text placeholder=work maxlength=32 autocomplete=off spellcheck=false>${_el_resume($scope0_id, "b1")}</label><div${_attr_class("_dC")}><span${_attr_class("_dD")}>Theme</span><span${_attr_class("_dG")}><span${_attr_class(themeSeg)} role=radiogroup aria-label="Color theme">`);
9883
9883
  _for_of(themeOpts, (opt) => {
@@ -9975,7 +9975,7 @@ var settings_page_default = _template("B", (input) => {
9975
9975
  return 1;
9976
9976
  }
9977
9977
  }, $scope0_id, "bf", $sg__input_instance_accent, $sg__input_instance_accent, 1, 0, 1);
9978
- _html(`</label>${_el_resume($scope0_id, "bd", $sg__input_instance_accent)}</span></div></div></section><section${_attr_class("_cd")}${_attr("aria-labelledby", backupId)}><div${_attr_class("_ce")}><h2${_attr("id", backupId)}${_attr_class("_cr")}>Backup</h2></div><div${_attr_class(["_ci", "_cK"])}><div${_attr_class("_cL")}><div${_attr_class("_d0")}><div${_attr_class("_cj")}>`);
9978
+ _html(`</label>${_el_resume($scope0_id, "bd", $sg__input_instance_accent)}</span></div></div></section><section${_attr_class("_b8")}${_attr("aria-labelledby", backupId)}><div${_attr_class("_b9")}><h2${_attr("id", backupId)}${_attr_class("_cl")}>Backup</h2></div><div${_attr_class(["_cc", "_cK"])}><div${_attr_class("_cL")}><div${_attr_class("_d0")}><div${_attr_class("_cd")}>`);
9979
9979
  _if(() => {
9980
9980
  if (backupBusy === "preflight") {
9981
9981
  const $scope66_id = _scope_id();
@@ -9984,7 +9984,7 @@ var settings_page_default = _template("B", (input) => {
9984
9984
  return 0;
9985
9985
  } else {
9986
9986
  const $scope130_id = _scope_id();
9987
- _html(`<span${_attr_class("_cm")}>Save workspaces, settings, skills and tool pins to a file. Code stays on GitHub.</span>`);
9987
+ _html(`<span${_attr_class("_cg")}>Save workspaces, settings, skills and tool pins to a file. Code stays on GitHub.</span>`);
9988
9988
  writeScope($scope130_id, {});
9989
9989
  return 1;
9990
9990
  }
@@ -10023,7 +10023,7 @@ var settings_page_default = _template("B", (input) => {
10023
10023
  _for_of(preflight.workspaces, (w) => {
10024
10024
  const $scope132_id = _scope_id();
10025
10025
  const $for_content17__w_name__closures = /* @__PURE__ */ new Set();
10026
- _html(`<li${_attr_class("_d5")}><span${_attr_class("_ck")}>${_text_resume($scope132_id, "c", w.name)}</span><ul${_attr_class("_d4")}>`);
10026
+ _html(`<li${_attr_class("_d5")}><span${_attr_class("_ce")}>${_text_resume($scope132_id, "c", w.name)}</span><ul${_attr_class("_d4")}>`);
10027
10027
  _for_of(w.repos, (r) => {
10028
10028
  const $scope133_id = _scope_id();
10029
10029
  const $for_content18__r_more__closures = /* @__PURE__ */ new Set();
@@ -10100,7 +10100,7 @@ var settings_page_default = _template("B", (input) => {
10100
10100
  return 0;
10101
10101
  }
10102
10102
  }, $scope0_id, "bo", 1, 1, 1, 0, 1);
10103
- _html(`</div><div${_attr_class("_cL")}><div${_attr_class("_d0")}><div${_attr_class("_cj")}>`);
10103
+ _html(`</div><div${_attr_class("_cL")}><div${_attr_class("_d0")}><div${_attr_class("_cd")}>`);
10104
10104
  _if(() => {
10105
10105
  if (backupBusy === "restore") {
10106
10106
  const $scope67_id = _scope_id();
@@ -10109,12 +10109,12 @@ var settings_page_default = _template("B", (input) => {
10109
10109
  return 0;
10110
10110
  } else if (restoreDone) {
10111
10111
  const $scope75_id = _scope_id();
10112
- _html(`<span${_attr_class("_cm")}>${_text_resume($scope75_id, "b", restoreDone)}</span>`);
10112
+ _html(`<span${_attr_class("_cg")}>${_text_resume($scope75_id, "b", restoreDone)}</span>`);
10113
10113
  writeScope($scope75_id, {});
10114
10114
  return 1;
10115
10115
  } else {
10116
10116
  const $scope141_id = _scope_id();
10117
- _html(`<span${_attr_class("_cm")}>Load a backup file. Repos clone in the background.</span>`);
10117
+ _html(`<span${_attr_class("_cg")}>Load a backup file. Repos clone in the background.</span>`);
10118
10118
  writeScope($scope141_id, {});
10119
10119
  return 2;
10120
10120
  }
@@ -10140,7 +10140,7 @@ var settings_page_default = _template("B", (input) => {
10140
10140
  _html(`<ul${_attr_class(checkList)}>`);
10141
10141
  _for_of(preview.workspaces, (w) => {
10142
10142
  const $scope72_id = _scope_id();
10143
- _html(`<li><label${_attr_class(["_eb", { ["_ed"]: w.exists || !!w.unknownHost }])}><input${_attr_input_checked($scope72_id, "b", restoreWs.has(w.id))}${_attr_class("_ec")} type=checkbox${_attr("disabled", w.exists || !!w.unknownHost)}>${_el_resume($scope72_id, "b")}<span${_attr_class("_cj")}><span${_attr_class("_cl")}><span${_attr_class("_ck")}>${_text_resume($scope72_id, "f", w.name)}</span>`);
10143
+ _html(`<li><label${_attr_class(["_eb", { ["_ed"]: w.exists || !!w.unknownHost }])}><input${_attr_input_checked($scope72_id, "b", restoreWs.has(w.id))}${_attr_class("_ec")} type=checkbox${_attr("disabled", w.exists || !!w.unknownHost)}>${_el_resume($scope72_id, "b")}<span${_attr_class("_cd")}><span${_attr_class("_cf")}><span${_attr_class("_ce")}>${_text_resume($scope72_id, "f", w.name)}</span>`);
10144
10144
  _if(() => {
10145
10145
  if (w.status === "archived") {
10146
10146
  const $scope145_id = _scope_id();
@@ -10162,7 +10162,7 @@ var settings_page_default = _template("B", (input) => {
10162
10162
  return 1;
10163
10163
  }
10164
10164
  }, $scope72_id, "h", 1, 1, 1, 0, 1);
10165
- _html(`</span><span${_attr_class("_cm")}>${_text_resume($scope72_id, "j", w.repos.join(", ") || "no repos")}</span></span></label>${_el_resume($scope72_id, "a")}</li>`);
10165
+ _html(`</span><span${_attr_class("_cg")}>${_text_resume($scope72_id, "j", w.repos.join(", ") || "no repos")}</span></span></label>${_el_resume($scope72_id, "a")}</li>`);
10166
10166
  _script($scope72_id, "B88");
10167
10167
  _subscribe($restoreWs__closures, writeScope($scope72_id, {
10168
10168
  n: w?.unknownHost,
@@ -10173,7 +10173,7 @@ var settings_page_default = _template("B", (input) => {
10173
10173
  return 0;
10174
10174
  } else {
10175
10175
  const $scope143_id = _scope_id();
10176
- _html(`<p${_attr_class("_co")}>No workspaces in this file.</p>`);
10176
+ _html(`<p${_attr_class("_ci")}>No workspaces in this file.</p>`);
10177
10177
  writeScope($scope143_id, {});
10178
10178
  return 1;
10179
10179
  }
@@ -10213,7 +10213,7 @@ var settings_page_default = _template("B", (input) => {
10213
10213
  _if(() => {
10214
10214
  if (p.total) {
10215
10215
  const $scope74_id = _scope_id();
10216
- _html(`<li><label${_attr_class(["_eb", { ["_ed"]: !p.missing.length && p.key !== "settings" }])}><input${_attr_input_checked($scope74_id, "b", restoreParts[p.key])}${_attr_class("_ec")} type=checkbox${_attr("disabled", !p.missing.length && p.key !== "settings")}>${_el_resume($scope74_id, "b")}<span${_attr_class("_cj")}><span${_attr_class("_ck")}>${_text_resume($scope74_id, "e", p.label)}</span><span${_attr_class("_cm")}>`);
10216
+ _html(`<li><label${_attr_class(["_eb", { ["_ed"]: !p.missing.length && p.key !== "settings" }])}><input${_attr_input_checked($scope74_id, "b", restoreParts[p.key])}${_attr_class("_ec")} type=checkbox${_attr("disabled", !p.missing.length && p.key !== "settings")}>${_el_resume($scope74_id, "b")}<span${_attr_class("_cd")}><span${_attr_class("_ce")}>${_text_resume($scope74_id, "e", p.label)}</span><span${_attr_class("_cg")}>`);
10217
10217
  _if(() => {
10218
10218
  if (p.key === "settings") {
10219
10219
  const $scope142_id = _scope_id();
@@ -10497,13 +10497,13 @@ function vapidKey(base64) {
10497
10497
  const raw = atob(padded.replace(/-/g, "+").replace(/_/g, "/"));
10498
10498
  return Uint8Array.from(raw, (c) => c.charCodeAt(0));
10499
10499
  }
10500
- var iconBtn = "_bO _l";
10501
- var settingsDot = "_bP _bb";
10502
- var navToggle = "_bT _l";
10500
+ var iconBtn = "_bQ _l";
10501
+ var settingsDot = "_bR _bb";
10502
+ var navToggle = "_bV _l";
10503
10503
  //#endregion
10504
10504
  //#region src/styles/session-pop.css.ts
10505
- var sessionPop = "_b5 _9";
10506
- var sessionPopBtn = "_b6 _I";
10505
+ var sessionPop = "_bN _9";
10506
+ var sessionPopBtn = "_bO _I";
10507
10507
  _template("X", (input) => {
10508
10508
  const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
10509
10509
  const $scope0_id = _scope_id();
@@ -10557,14 +10557,14 @@ function activeAgent(session) {
10557
10557
  const command = session.state?.command?.trim();
10558
10558
  return command && agentFromCommand(command) || session.agent;
10559
10559
  }
10560
- var heroTag = "_fe _N _Q";
10561
- var rowState = "_fq _N";
10562
- var prChip$1 = "_ia _u _h_";
10563
- var portChip = "_ib _u _h_";
10560
+ var heroTag = "_e4 _N _Q";
10561
+ var rowState = "_ff _N";
10562
+ var prChip$1 = "_iz _u _iy";
10563
+ var portChip = "_iA _u _iy";
10564
10564
  var prState = {
10565
- open: "_if",
10566
- merged: "_ig",
10567
- closed: "_ih"
10565
+ open: "_iE",
10566
+ merged: "_iF",
10567
+ closed: "_iG"
10568
10568
  };
10569
10569
  //#endregion
10570
10570
  //#region src/tags/icons/icon-diff.marko
@@ -10645,7 +10645,7 @@ var side_nav_chips_default = _template("C", (input) => {
10645
10645
  const name = repo.full_name.split("/").at(-1);
10646
10646
  return repos.some((r) => r.full_name !== repo.full_name && r.full_name.split("/").at(-1) === name) ? repoLabel$1(repo.full_name) : name;
10647
10647
  }, "C3", $scope1_id);
10648
- _html(`<div${_attr_class("_h9")}>`);
10648
+ _html(`<div${_attr_class("_ix")}>`);
10649
10649
  _for_of(repos, (repo) => {
10650
10650
  const $scope2_id = _scope_id();
10651
10651
  const $for_content__repo_worktree__closures = /* @__PURE__ */ new Set();
@@ -10661,11 +10661,11 @@ var side_nav_chips_default = _template("C", (input) => {
10661
10661
  [prState.merged]: pr$1.state === "MERGED",
10662
10662
  [prState.closed]: pr$1.state === "CLOSED"
10663
10663
  }
10664
- ])}${_attr("title", prTitle(repo, pr$1))}><a${_attr_class(["_ic", { ["_ik"]: !open }])}${_attr("href", pr$1.url)} target=_blank rel=noopener>${_text_resume($scope3_id, "c", repoLabel(repo))}#${_text_resume($scope3_id, "d", pr$1.number, 2)}</a>${_el_resume($scope3_id, "b")}`);
10664
+ ])}${_attr("title", prTitle(repo, pr$1))}><a${_attr_class(["_iB", { ["_iJ"]: !open }])}${_attr("href", pr$1.url)} target=_blank rel=noopener>${_text_resume($scope3_id, "c", repoLabel(repo))}#${_text_resume($scope3_id, "d", pr$1.number, 2)}</a>${_el_resume($scope3_id, "b")}`);
10665
10665
  _if(() => {
10666
10666
  if (open) {
10667
10667
  const $scope4_id = _scope_id();
10668
- _html(`<a${_attr_class(["_ic", "_id"])}${_attr("href", `/w/${input.workspaceId}/review?pr=${encodeURIComponent(`${repo.worktree}/${pr$1.number}`)}`)}${_attr("title", `Review #${pr$1.number} changes`)}>`);
10668
+ _html(`<a${_attr_class(["_iB", "_iC"])}${_attr("href", `/w/${input.workspaceId}/review?pr=${encodeURIComponent(`${repo.worktree}/${pr$1.number}`)}`)}${_attr("title", `Review #${pr$1.number} changes`)}>`);
10669
10669
  icon_diff_default({ size: 12 });
10670
10670
  _html(`</a>${_el_resume($scope4_id, "a")}`);
10671
10671
  _subscribe($for_content__repo_worktree__closures, _subscribe($si__input_workspaceId && $input_workspaceId__closures, writeScope($scope4_id, {})));
@@ -10673,9 +10673,9 @@ var side_nav_chips_default = _template("C", (input) => {
10673
10673
  } else {
10674
10674
  const $scope5_id = _scope_id();
10675
10675
  _html(`<button type=button${_attr_class([
10676
- "_ic",
10677
- "_id",
10678
- "_ie"
10676
+ "_iB",
10677
+ "_iC",
10678
+ "_iD"
10679
10679
  ])}${_attr("title", `Dismiss #${pr$1.number}`)}>`);
10680
10680
  icon_xmark_default({ size: 12 });
10681
10681
  _html(`</button>${_el_resume($scope5_id, "a")}`);
@@ -10703,12 +10703,12 @@ var side_nav_chips_default = _template("C", (input) => {
10703
10703
  _if(() => {
10704
10704
  if (dead.has(p.port)) {
10705
10705
  const $scope7_id = _scope_id();
10706
- _html(`<span${_attr_class(["_ic", "_ii"])}${_attr("title", dead.get(p.port))} aria-disabled=true>:${_text_resume($scope7_id, "b", p.port, 2)}</span>${_el_resume($scope7_id, "a")}`);
10706
+ _html(`<span${_attr_class(["_iB", "_iH"])}${_attr("title", dead.get(p.port))} aria-disabled=true>:${_text_resume($scope7_id, "b", p.port, 2)}</span>${_el_resume($scope7_id, "a")}`);
10707
10707
  _subscribe($dead__closures, writeScope($scope7_id, { Cy: 1 }));
10708
10708
  return 0;
10709
10709
  } else {
10710
10710
  const $scope8_id = _scope_id();
10711
- _html(`<button type=button${_attr_class(["_ic", "_ij"])}${_attr("title", `Open port ${p.port}`)}>:${_text_resume($scope8_id, "b", p.port, 2)}</button>${_el_resume($scope8_id, "a")}`);
10711
+ _html(`<button type=button${_attr_class(["_iB", "_iI"])}${_attr("title", `Open port ${p.port}`)}>:${_text_resume($scope8_id, "b", p.port, 2)}</button>${_el_resume($scope8_id, "a")}`);
10712
10712
  _script($scope8_id, "C6");
10713
10713
  writeScope($scope8_id, {});
10714
10714
  return 1;
@@ -10717,9 +10717,9 @@ var side_nav_chips_default = _template("C", (input) => {
10717
10717
  const $childScope = _peek_scope_id();
10718
10718
  arm_button_default({
10719
10719
  class: [
10720
- "_ic",
10721
- "_id",
10722
- "_ie"
10720
+ "_iB",
10721
+ "_iC",
10722
+ "_iD"
10723
10723
  ],
10724
10724
  title: `Kill ${p.cmd} (pid ${p.pid})`,
10725
10725
  armedTitle: "Kill?",
@@ -10766,12 +10766,12 @@ var side_nav_chips_default = _template("C", (input) => {
10766
10766
  });
10767
10767
  _resume_branch($scope0_id);
10768
10768
  });
10769
- var railBtn = "_fL _l";
10770
- var wsBtn = "_fP _I";
10771
- var rowIcon = "_fS _3 _l";
10772
- var close = "_fT _6 _l _7";
10773
- var sessRename$1 = "_fZ _J";
10774
- var sessBtn$1 = "_f1 _I";
10769
+ var railBtn = "_gp _l";
10770
+ var wsBtn = "_gt _I";
10771
+ var rowIcon = "_gw _3 _l";
10772
+ var close = "_gx _6 _l _7";
10773
+ var sessRename$1 = "_gD _J";
10774
+ var sessBtn$1 = "_gF _I";
10775
10775
  //#endregion
10776
10776
  //#region src/tags/icons/icon-manage.marko
10777
10777
  var icon_manage_default = _template("lb", (input) => {
@@ -10886,7 +10886,7 @@ var side_nav_item_default = _template("D", (input) => {
10886
10886
  _if(() => {
10887
10887
  if (input.rail) {
10888
10888
  const $scope2_id = _scope_id();
10889
- _html(`<a${_attr("href", `/w/${ws$1.id}`)}${_attr_class([railBtn, { ["_fI"]: input.current }])}${ws$1.pending ? _attr("title", `${ws$1.name} — restoring`) : _attr("title", ws$1.name)}>${_text_resume($scope2_id, "b", input.index === void 0 ? "·" : input.index + 1, _serialize_guard($scope0_reason, 18))}<span${_attr_class([
10889
+ _html(`<a${_attr("href", `/w/${ws$1.id}`)}${_attr_class([railBtn, { ["_gm"]: input.current }])}${ws$1.pending ? _attr("title", `${ws$1.name} — restoring`) : _attr("title", ws$1.name)}>${_text_resume($scope2_id, "b", input.index === void 0 ? "·" : input.index + 1, _serialize_guard($scope0_reason, 18))}<span${_attr_class([
10890
10890
  "_A",
10891
10891
  phase[dot$1],
10892
10892
  "_bb"
@@ -10896,31 +10896,31 @@ var side_nav_item_default = _template("D", (input) => {
10896
10896
  } else if (ws$1.pending) {
10897
10897
  const $scope3_id = _scope_id();
10898
10898
  _html(`<section${_attr_class([
10899
- "_fN",
10900
- "_f3",
10901
- { ["_fM"]: input.page }
10902
- ])} aria-busy=${ws$1.pending_error ? "false" : "true"}><div${_attr_class("_fO")}><div${_attr_class(wsBtn)}>`);
10899
+ "_gr",
10900
+ "_gH",
10901
+ { ["_gq"]: input.page }
10902
+ ])} aria-busy=${ws$1.pending_error ? "false" : "true"}><div${_attr_class("_gs")}><div${_attr_class(wsBtn)}>`);
10903
10903
  _if(() => {
10904
10904
  if (ws$1.pending_error) {
10905
10905
  const $scope11_id = _scope_id();
10906
10906
  icon_warning_default({
10907
10907
  size: 12,
10908
- class: "_f5"
10908
+ class: "_gJ"
10909
10909
  });
10910
10910
  $si__input_workspace && writeScope($scope11_id, {});
10911
10911
  return 0;
10912
10912
  } else {
10913
10913
  const $scope12_id = _scope_id();
10914
- _html(`<span${_attr_class(["_G", "_f4"])}></span>`);
10914
+ _html(`<span${_attr_class(["_G", "_gI"])}></span>`);
10915
10915
  $si__input_workspace && writeScope($scope12_id, {});
10916
10916
  return 1;
10917
10917
  }
10918
10918
  }, $scope3_id, "d", $sg__input_workspace, $sg__input_workspace, 1, 0, 1);
10919
- _html(`<span${_attr_class("_fV")}><span${_attr_class("_fW")}>${_text_resume($scope3_id, "g", ws$1.name, $sg__input_workspace)}</span><span${_attr_class("_f7")}${_attr("title", ws$1.pending_error || restoreLine)}>${_text_resume($scope3_id, "i", ws$1.pending_error ? `Restore failed: ${ws$1.pending_error}` : restoreLine || "Restoring…")}</span>${_el_resume($scope3_id, "h")}</span></div></div>`);
10919
+ _html(`<span${_attr_class("_gz")}><span${_attr_class("_gA")}>${_text_resume($scope3_id, "g", ws$1.name, $sg__input_workspace)}</span><span${_attr_class("_gL")}${_attr("title", ws$1.pending_error || restoreLine)}>${_text_resume($scope3_id, "i", ws$1.pending_error ? `Restore failed: ${ws$1.pending_error}` : restoreLine || "Restoring…")}</span>${_el_resume($scope3_id, "h")}</span></div></div>`);
10920
10920
  _if(() => {
10921
10921
  if (ws$1.pending_error && !retrying) {
10922
10922
  const $scope10_id = _scope_id();
10923
- _html(`<div${_attr_class("_f6")}><button type=button${_attr_class(["_q", btnSm])} title="Run the restore again">Retry</button>${_el_resume($scope10_id, "b")}`);
10923
+ _html(`<div${_attr_class("_gK")}><button type=button${_attr_class(["_q", btnSm])} title="Run the restore again">Retry</button>${_el_resume($scope10_id, "b")}`);
10924
10924
  arm_button_default({
10925
10925
  class: ["_q", btnSm],
10926
10926
  title: "Delete workspace",
@@ -10951,11 +10951,11 @@ var side_nav_item_default = _template("D", (input) => {
10951
10951
  const $scope4_id = _scope_id();
10952
10952
  const sessions$1 = input.sessions || [];
10953
10953
  const phaseLabel = dot$1 === "working" ? "Working" : dot$1 === "waiting" ? "Needs input" : dot$1 === "idle" ? "Idle" : "Not running";
10954
- _html(`<section${_attr_class(["_fN", {
10955
- ["_fI"]: input.current,
10954
+ _html(`<section${_attr_class(["_gr", {
10955
+ ["_gm"]: input.current,
10956
10956
  ["_bc"]: input.current,
10957
- ["_fK"]: input.menuOpen
10958
- }])}><div${_attr_class("_fO")}><a${_attr("href", `/w/${ws$1.id}`)}${_attr_class(wsBtn)}><span${_attr_class(["_A", phase[dot$1]])}${_attr("title", phaseLabel)}></span>${_el_resume($scope4_id, "d", $sg__input_status)}`);
10957
+ ["_go"]: input.menuOpen
10958
+ }])}><div${_attr_class("_gs")}><a${_attr("href", `/w/${ws$1.id}`)}${_attr_class(wsBtn)}><span${_attr_class(["_A", phase[dot$1]])}${_attr("title", phaseLabel)}></span>${_el_resume($scope4_id, "d", $sg__input_status)}`);
10959
10959
  _if(() => {
10960
10960
  if (sessions$1.length === 1) {
10961
10961
  const $scope14_id = _scope_id();
@@ -10967,7 +10967,7 @@ var side_nav_item_default = _template("D", (input) => {
10967
10967
  icon_agent_default({
10968
10968
  agent: activeAgent(sessions$1[0]),
10969
10969
  size: 12,
10970
- class: "_fU"
10970
+ class: "_gy"
10971
10971
  });
10972
10972
  $si__input_sessions && writeScope($scope14_id, {
10973
10973
  _: _scope_with_id($scope4_id),
@@ -10976,7 +10976,7 @@ var side_nav_item_default = _template("D", (input) => {
10976
10976
  return 0;
10977
10977
  }
10978
10978
  }, $scope4_id, "e", $sg__input_sessions, $sg__input_sessions, $sg__input_sessions__OR__input_onNewSession__OR__input_onReview);
10979
- _html(`<span${_attr_class("_fV")}><span${_attr_class("_fW")}>${_text_resume($scope4_id, "h", ws$1.name, $sg__input_workspace)}</span></span> </a>${_el_resume($scope4_id, "c", $sg__input_workspace)}<div${_attr_class("_fQ")}>`);
10979
+ _html(`<span${_attr_class("_gz")}><span${_attr_class("_gA")}>${_text_resume($scope4_id, "h", ws$1.name, $sg__input_workspace)}</span></span> </a>${_el_resume($scope4_id, "c", $sg__input_workspace)}<div${_attr_class("_gu")}>`);
10980
10980
  _if(() => {
10981
10981
  if (input.onNewSession) {
10982
10982
  const $scope5_id = _scope_id();
@@ -11004,19 +11004,19 @@ var side_nav_item_default = _template("D", (input) => {
11004
11004
  return 0;
11005
11005
  }
11006
11006
  }, $scope4_id, "k", $sg__input_onReview, $sg__input_onReview, $sg__input_sessions__OR__input_onNewSession__OR__input_onReview, 0, 1);
11007
- _html(`<a${input.managing ? _attr("href", `/w/${ws$1.id}`) : _attr("href", `/w/${ws$1.id}/manage`)}${_attr_class([rowIcon, { ["_fJ"]: input.managing }])} title=${input.managing ? "\"Back to terminal\"" : "\"Manage workspace\""}${input.managing ? " aria-current=page" : ""}>`);
11007
+ _html(`<a${input.managing ? _attr("href", `/w/${ws$1.id}`) : _attr("href", `/w/${ws$1.id}/manage`)}${_attr_class([rowIcon, { ["_gn"]: input.managing }])} title=${input.managing ? "\"Back to terminal\"" : "\"Manage workspace\""}${input.managing ? " aria-current=page" : ""}>`);
11008
11008
  icon_manage_default({ size: 12 });
11009
- _html(`</a>${_el_resume($scope4_id, "l", _serialize_guard($scope0_reason, 4))}</div></div><div${_attr_class("_f0")}>`);
11009
+ _html(`</a>${_el_resume($scope4_id, "l", _serialize_guard($scope0_reason, 4))}</div></div><div${_attr_class("_gE")}>`);
11010
11010
  _for_of(sessions$1.length > 1 ? sessions$1 : [], (s) => {
11011
11011
  const $scope6_id = _scope_id();
11012
- _html(`<div${_attr_class(["_fR", { ["_fI"]: s.id === input.currentTab }])}>`);
11012
+ _html(`<div${_attr_class(["_gv", { ["_gm"]: s.id === input.currentTab }])}>`);
11013
11013
  _if(() => {
11014
11014
  if (renamingId === s.id) {
11015
11015
  const $scope7_id = _scope_id();
11016
11016
  _html(`<span${_attr_class([
11017
11017
  "_A",
11018
11018
  phase[sessionPhase(s.state)],
11019
- "_fY"
11019
+ "_gC"
11020
11020
  ])}></span>${_el_resume($scope7_id, "a", $sg__input_sessions)}`);
11021
11021
  _set_serialize_reason({
11022
11022
  1: $sg__input_sessions,
@@ -11026,7 +11026,7 @@ var side_nav_item_default = _template("D", (input) => {
11026
11026
  icon_agent_default({
11027
11027
  agent: activeAgent(s),
11028
11028
  size: 12,
11029
- class: "_f2"
11029
+ class: "_gG"
11030
11030
  });
11031
11031
  const $childScope3 = _peek_scope_id();
11032
11032
  rename_input_default({
@@ -11057,9 +11057,9 @@ var side_nav_item_default = _template("D", (input) => {
11057
11057
  icon_agent_default({
11058
11058
  agent: activeAgent(s),
11059
11059
  size: 12,
11060
- class: "_f2"
11060
+ class: "_gG"
11061
11061
  });
11062
- _html(`<span${_attr_class("_fX")}>${_text_resume($scope8_id, "e", s.title || activeAgent(s), $sg__input_sessions)}</span></a>${_el_resume($scope8_id, "a", _serialize_guard($scope0_reason, 3))}<button${_attr_class(rowIcon)} title="Rename session">`);
11062
+ _html(`<span${_attr_class("_gB")}>${_text_resume($scope8_id, "e", s.title || activeAgent(s), $sg__input_sessions)}</span></a>${_el_resume($scope8_id, "a", _serialize_guard($scope0_reason, 3))}<button${_attr_class(rowIcon)} title="Rename session">`);
11063
11063
  icon_edit_default({ size: 12 });
11064
11064
  _html(`</button>${_el_resume($scope8_id, "f")}`);
11065
11065
  arm_button_default({
@@ -11182,11 +11182,11 @@ var workspace_switcher_default = _template("O", (input) => {
11182
11182
  const sessions = input.sessions || st?.sessions || [];
11183
11183
  const manySessions = sessions.length > 1;
11184
11184
  const heroMeta$1 = sessions.length === 0 ? "No sessions" : manySessions ? `${sessions.length} sessions` : "";
11185
- _html(`<div${_attr_class("_fa")}>`);
11185
+ _html(`<div${_attr_class("_e0")}>`);
11186
11186
  _if(() => {
11187
11187
  if (ws) {
11188
11188
  const $scope1_id = _scope_id();
11189
- _html(`<section${_attr_class("_fb")} aria-current=page><a${_attr("href", `/w/${ws.id}`)}${_attr_class("_fc")} data-open><span${_attr_class(["_A", phase[phase$1]])}></span>${_el_resume($scope1_id, "c", _serialize_guard($scope0_reason, 0))}`);
11189
+ _html(`<section${_attr_class("_e1")} aria-current=page><a${_attr("href", `/w/${ws.id}`)}${_attr_class("_e2")} data-open><span${_attr_class(["_A", phase[phase$1]])}></span>${_el_resume($scope1_id, "c", _serialize_guard($scope0_reason, 0))}`);
11190
11190
  _if(() => {
11191
11191
  if (sessions.length === 1) {
11192
11192
  const $scope8_id = _scope_id();
@@ -11198,7 +11198,7 @@ var workspace_switcher_default = _template("O", (input) => {
11198
11198
  icon_agent_default({
11199
11199
  agent: activeAgent(sessions[0]),
11200
11200
  size: 16,
11201
- class: "_fg"
11201
+ class: "_e6"
11202
11202
  });
11203
11203
  $si__input_workspace__OR__input_allStatus__OR__input_sessions && _subscribe($sessions___closures, writeScope($scope8_id, {
11204
11204
  _: _scope_with_id($scope1_id),
@@ -11207,14 +11207,14 @@ var workspace_switcher_default = _template("O", (input) => {
11207
11207
  return 0;
11208
11208
  }
11209
11209
  }, $scope1_id, "d", $sg__input_workspace__OR__input_allStatus__OR__input_sessions, $sg__input_workspace__OR__input_allStatus__OR__input_sessions, $sg__input_workspace__OR__input_allStatus__OR__input_sessions);
11210
- _html(`<span${_attr_class("_fd")}>${_text_resume($scope1_id, "f", ws.name, $sg__input_workspace)}</span><span${_attr_class(heroTag)}>open</span><span${_attr_class("_ff")}>${_text_resume($scope1_id, "i", heroMeta$1, $sg__input_workspace__OR__input_allStatus__OR__input_sessions)}</span></a>${_el_resume($scope1_id, "b", $sg__input_workspace)}`);
11210
+ _html(`<span${_attr_class("_e3")}>${_text_resume($scope1_id, "f", ws.name, $sg__input_workspace)}</span><span${_attr_class(heroTag)}>open</span><span${_attr_class("_e5")}>${_text_resume($scope1_id, "i", heroMeta$1, $sg__input_workspace__OR__input_allStatus__OR__input_sessions)}</span></a>${_el_resume($scope1_id, "b", $sg__input_workspace)}`);
11211
11211
  _if(() => {
11212
11212
  if (manySessions) {
11213
11213
  const $scope2_id = _scope_id();
11214
- _html(`<div${_attr_class("_fh")}>`);
11214
+ _html(`<div${_attr_class("_e7")}>`);
11215
11215
  _for_of(sessions, (s) => {
11216
11216
  const $scope3_id = _scope_id();
11217
- _html(`<a${_attr("href", `/w/${ws.id}?s=${s.id}`)}${_attr_class(["_fj", { ["_fi"]: s.id === input.tab }])}><span${_attr_class(["_A", phase[sessionPhase(s.state)]])}></span>${_el_resume($scope3_id, "b", $sg__input_workspace__OR__input_allStatus__OR__input_sessions)}`);
11217
+ _html(`<a${_attr("href", `/w/${ws.id}?s=${s.id}`)}${_attr_class(["_e9", { ["_e8"]: s.id === input.tab }])}><span${_attr_class(["_A", phase[sessionPhase(s.state)]])}></span>${_el_resume($scope3_id, "b", $sg__input_workspace__OR__input_allStatus__OR__input_sessions)}`);
11218
11218
  _set_serialize_reason({
11219
11219
  1: $sg__input_workspace__OR__input_allStatus__OR__input_sessions,
11220
11220
  2: $sg__input_workspace__OR__input_allStatus__OR__input_sessions
@@ -11224,7 +11224,7 @@ var workspace_switcher_default = _template("O", (input) => {
11224
11224
  agent: activeAgent(s),
11225
11225
  size: 14
11226
11226
  });
11227
- _html(`<span${_attr_class("_fk")}>${_text_resume($scope3_id, "e", s.title || activeAgent(s), $sg__input_workspace__OR__input_allStatus__OR__input_sessions)}</span></a>${_el_resume($scope3_id, "a", _serialize_guard($scope0_reason, 7))}`);
11227
+ _html(`<span${_attr_class("_e_")}>${_text_resume($scope3_id, "e", s.title || activeAgent(s), $sg__input_workspace__OR__input_allStatus__OR__input_sessions)}</span></a>${_el_resume($scope3_id, "a", _serialize_guard($scope0_reason, 7))}`);
11228
11228
  $si__input_workspace__OR__input_allStatus__OR__input_sessions__OR__input_tab && _subscribe($si__input_workspace && $ws_id__closures, _subscribe($si__input_tab && $input_tab__closures, writeScope($scope3_id, {
11229
11229
  h: $si__input_tab && s?.id,
11230
11230
  _: _scope_with_id($scope2_id),
@@ -11253,7 +11253,7 @@ var workspace_switcher_default = _template("O", (input) => {
11253
11253
  _if(() => {
11254
11254
  if (input.ids.length) {
11255
11255
  const $scope4_id = _scope_id();
11256
- _html(`<div${_attr_class("_fl")}>`);
11256
+ _html(`<div${_attr_class("_fa")}>`);
11257
11257
  _for_of(input.ids, (id) => {
11258
11258
  const $scope5_id = _scope_id();
11259
11259
  const w = input.byId.get(id);
@@ -11297,7 +11297,7 @@ var workspace_switcher_default = _template("O", (input) => {
11297
11297
  const rp = phaseOf(rs);
11298
11298
  const rowSessions = rs?.sessions || [];
11299
11299
  const many = rowSessions.length > 1;
11300
- _html(`<div${_attr_class("_fm")}><a${_attr("href", `/w/${id}`)}${_attr_class("_fn")}><span${_attr_class(["_A", phase[rp]])}></span>${_el_resume($scope7_id, "c", $sg__input_allStatus__OR__input_ids)}`);
11300
+ _html(`<div${_attr_class("_fb")}><a${_attr("href", `/w/${id}`)}${_attr_class("_fc")}><span${_attr_class(["_A", phase[rp]])}></span>${_el_resume($scope7_id, "c", $sg__input_allStatus__OR__input_ids)}`);
11301
11301
  _if(() => {
11302
11302
  if (rowSessions.length === 1) {
11303
11303
  const $scope9_id = _scope_id();
@@ -11309,7 +11309,7 @@ var workspace_switcher_default = _template("O", (input) => {
11309
11309
  icon_agent_default({
11310
11310
  agent: activeAgent(rowSessions[0]),
11311
11311
  size: 16,
11312
- class: "_fp"
11312
+ class: "_fe"
11313
11313
  });
11314
11314
  $si__input_allStatus__OR__input_ids && writeScope($scope9_id, {
11315
11315
  _: _scope_with_id($scope7_id),
@@ -11318,7 +11318,7 @@ var workspace_switcher_default = _template("O", (input) => {
11318
11318
  return 0;
11319
11319
  }
11320
11320
  }, $scope7_id, "d", $sg__input_allStatus__OR__input_ids, $sg__input_allStatus__OR__input_ids, $sg__input_allStatus__OR__input_ids);
11321
- _html(`<span${_attr_class("_fo")}>${_text_resume($scope7_id, "f", w.name, $sg__input_ids__OR__input_byId)}</span>`);
11321
+ _html(`<span${_attr_class("_fd")}>${_text_resume($scope7_id, "f", w.name, $sg__input_ids__OR__input_byId)}</span>`);
11322
11322
  _if(() => {
11323
11323
  if (many) {
11324
11324
  const $scope10_id = _scope_id();
@@ -11329,7 +11329,7 @@ var workspace_switcher_default = _template("O", (input) => {
11329
11329
  }, $scope7_id, "g", $sg__input_allStatus__OR__input_ids, $sg__input_allStatus__OR__input_ids, $sg__input_allStatus__OR__input_ids, 0, 1);
11330
11330
  icon_chevron_right_default({
11331
11331
  size: 14,
11332
- class: "_fr"
11332
+ class: "_fg"
11333
11333
  });
11334
11334
  _html(`</a>${_el_resume($scope7_id, "b", $sg__input_ids)}`);
11335
11335
  _set_serialize_reason($sg__input_ids);
@@ -11449,13 +11449,13 @@ var usage_bars_default = _template("K", (input) => {
11449
11449
  if (windows.length) {
11450
11450
  const $scope1_id = _scope_id();
11451
11451
  _html(`<span${_attr_class([
11452
- "_hE",
11452
+ "_hL",
11453
11453
  input.class,
11454
- { ["_hF"]: agent.stale_seconds != null }
11454
+ { ["_hM"]: agent.stale_seconds != null }
11455
11455
  ])} role=img${_attr("aria-label", `Plan usage: ${summary}`)}${agent.stale_seconds != null ? _attr("title", `${summary} — ${agent.note || "provider unreachable"}; last cached numbers`) : _attr("title", summary)}>`);
11456
11456
  _for_of(windows, (win) => {
11457
11457
  const $scope2_id = _scope_id();
11458
- _html(`<span${_attr_class(["_hG", win.used_percent >= 90 ? "_hK" : win.used_percent >= 70 ? "_hJ" : win.used_percent >= 40 ? "_hI" : "_hH"])}${_attr_style(`--pct:${Math.max(2, Math.min(100, win.used_percent))}%`)}></span>${_el_resume($scope2_id, "a", $sg__input_agent)}`);
11458
+ _html(`<span${_attr_class(["_hN", win.used_percent >= 90 ? "_hR" : win.used_percent >= 70 ? "_hQ" : win.used_percent >= 40 ? "_hP" : "_hO"])}${_attr_style(`--pct:${Math.max(2, Math.min(100, win.used_percent))}%`)}></span>${_el_resume($scope2_id, "a", $sg__input_agent)}`);
11459
11459
  $si__input_agent && writeScope($scope2_id, {});
11460
11460
  }, "window", $scope1_id, "a", $sg__input_agent, $sg__input_agent__OR__input_class, $sg__input_agent, "</span>", 1);
11461
11461
  $si__input_agent__OR__input_class && writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
@@ -11487,7 +11487,7 @@ var nav_usage_default = _template("r", (input) => {
11487
11487
  const plan = openSess ? usageFor$1(openSess.agent, usage) : null;
11488
11488
  const all = usage?.agents || [];
11489
11489
  const peak = Math.max(0, ...(plan?.windows || []).map((w) => w.used_percent));
11490
- const ringTone = _resume((pct) => pct >= 90 ? "_eK" : pct >= 70 ? "_eJ" : pct >= 40 ? "_eI" : "_eH", "r0");
11490
+ const ringTone = _resume((pct) => pct >= 90 ? "_eZ" : pct >= 70 ? "_eY" : pct >= 40 ? "_eX" : "_eW", "r0");
11491
11491
  let card$2 = null;
11492
11492
  const showCard = _resume((el) => {
11493
11493
  const r = el.getBoundingClientRect();
@@ -11499,18 +11499,18 @@ var nav_usage_default = _template("r", (input) => {
11499
11499
  _if(() => {
11500
11500
  if (plan) {
11501
11501
  const $scope1_id = _scope_id();
11502
- _html(`<span${_attr_class("_eB")} tabindex=0>`);
11502
+ _html(`<span${_attr_class("_eQ")} tabindex=0>`);
11503
11503
  _set_serialize_reason(1);
11504
11504
  const $childScope = _peek_scope_id();
11505
11505
  usage_bars_default({
11506
- class: "_eD",
11506
+ class: "_eS",
11507
11507
  agent: plan
11508
11508
  });
11509
- _html(`<svg${_attr_class(["_eE", ringTone(peak)])} viewBox="0 0 16 16" width=16 height=16 aria-hidden=true><circle${_attr_class("_eF")} cx=8 cy=8 r=6.5></circle><circle${_attr_class("_eG")} cx=8 cy=8 r=6.5${_attr_style(`stroke-dasharray:${Math.max(2, Math.min(100, peak)) / 100 * 40.84} 40.84`)}></circle>${_el_resume($scope1_id, "e")}</svg>${_el_resume($scope1_id, "c")}</span>${_el_resume($scope1_id, "a")}`);
11509
+ _html(`<svg${_attr_class(["_eT", ringTone(peak)])} viewBox="0 0 16 16" width=16 height=16 aria-hidden=true><circle${_attr_class("_eU")} cx=8 cy=8 r=6.5></circle><circle${_attr_class("_eV")} cx=8 cy=8 r=6.5${_attr_style(`stroke-dasharray:${Math.max(2, Math.min(100, peak)) / 100 * 40.84} 40.84`)}></circle>${_el_resume($scope1_id, "e")}</svg>${_el_resume($scope1_id, "c")}</span>${_el_resume($scope1_id, "a")}`);
11510
11510
  _if(() => {
11511
11511
  if (card$2) {
11512
11512
  const $scope2_id = _scope_id();
11513
- _html(`<div${_attr_class(["_9", "_eC"])}${_attr_style(`left:${card$2.left}px;bottom:${card$2.bottom}px`)} role=tooltip>`);
11513
+ _html(`<div${_attr_class(["_9", "_eR"])}${_attr_style(`left:${card$2.left}px;bottom:${card$2.bottom}px`)} role=tooltip>`);
11514
11514
  _for_of(all, (a) => {
11515
11515
  const $scope3_id = _scope_id();
11516
11516
  _set_serialize_reason(6);
@@ -11607,14 +11607,14 @@ var side_nav_default = _template("E", (input) => {
11607
11607
  const backHref = ws ? `/w/${ws.id}` : "/new";
11608
11608
  const iconSrc = `/api/instance/icon${input.instanceAccent ? `?v=${input.instanceAccent.slice(1)}` : ""}`;
11609
11609
  const pageIds = orderedIds.filter((id) => id !== ws?.id);
11610
- _html(`<aside${_attr_class(["_bS", {
11611
- ["_bQ"]: !navOpen,
11612
- ["_bR"]: isPage
11610
+ _html(`<aside${_attr_class(["_bU", {
11611
+ ["_bS"]: !navOpen,
11612
+ ["_bT"]: isPage
11613
11613
  }])}${_attr("hidden", view === "diff")}>`);
11614
11614
  _if(() => {
11615
11615
  if (isPage) {
11616
11616
  const $scope1_id = _scope_id();
11617
- _html(`<div${_attr_class("_bV")}>`);
11617
+ _html(`<div${_attr_class("_bX")}>`);
11618
11618
  _set_serialize_reason({
11619
11619
  3: $sg__input_instanceName,
11620
11620
  6: $sg__input_instanceName
@@ -11623,7 +11623,7 @@ var side_nav_default = _template("E", (input) => {
11623
11623
  if (input.instanceName) $meta = attrTag({ content: _content_resume("E8", () => {
11624
11624
  _scope_reason();
11625
11625
  const $scope2_id = _scope_id();
11626
- _html(`<span${_attr_class("_bW")} title="This work server (Settings → Appearance)"><img${_attr_class("_bZ")}${_attr("src", iconSrc)} alt aria-hidden=true>${_el_resume($scope2_id, "b", $sg__input_instanceAccent)}${_text_resume($scope2_id, "c", input.instanceName, $sg__input_instanceName)}</span>`);
11626
+ _html(`<span${_attr_class("_bY")} title="This work server (Settings → Appearance)"><img${_attr_class("_b1")}${_attr("src", iconSrc)} alt aria-hidden=true>${_el_resume($scope2_id, "b", $sg__input_instanceAccent)}${_text_resume($scope2_id, "c", input.instanceName, $sg__input_instanceName)}</span>`);
11627
11627
  _subscribe($si__input_instanceAccent && $iconSrc__closures, _subscribe($si__input_instanceName && $input_instanceName__closures, writeScope($scope2_id, { _: _scope_with_id($scope1_id) })));
11628
11628
  _resume_branch($scope2_id);
11629
11629
  }, $scope1_id) });
@@ -11638,7 +11638,7 @@ var side_nav_default = _template("E", (input) => {
11638
11638
  _html(`<a${view === "settings" ? _attr("href", backHref) : " href=/settings"}${_attr_class([
11639
11639
  iconBtnRow,
11640
11640
  iconBtn,
11641
- { ["_bN"]: view === "settings" }
11641
+ { ["_bP"]: view === "settings" }
11642
11642
  ])} title=${view === "settings" ? "\"Back to workspace\"" : "Settings"}${view === "settings" ? " aria-current=page" : ""}>`);
11643
11643
  icon_settings_default({ size: 16 });
11644
11644
  _if(() => {
@@ -11662,7 +11662,7 @@ var side_nav_default = _template("E", (input) => {
11662
11662
  _if(() => {
11663
11663
  if (!isPage && input.instanceName) {
11664
11664
  const $scope4_id = _scope_id();
11665
- _html(`<div${_attr_class("_bY")} title="This work server (Settings → Appearance)"><img${_attr_class("_bZ")}${_attr("src", iconSrc)} alt aria-hidden=true>${_el_resume($scope4_id, "b", $sg__input_instanceAccent)}<span${_attr_class("_b0")}>${_text_resume($scope4_id, "d", input.instanceName, $sg__input_instanceName)}</span></div>`);
11665
+ _html(`<div${_attr_class("_b0")} title="This work server (Settings → Appearance)"><img${_attr_class("_b1")}${_attr("src", iconSrc)} alt aria-hidden=true>${_el_resume($scope4_id, "b", $sg__input_instanceAccent)}<span${_attr_class("_b2")}>${_text_resume($scope4_id, "d", input.instanceName, $sg__input_instanceName)}</span></div>`);
11666
11666
  writeScope($scope4_id, {});
11667
11667
  return 0;
11668
11668
  }
@@ -11730,7 +11730,7 @@ var side_nav_default = _template("E", (input) => {
11730
11730
  b: _serialize_if($scope0_reason, 21) && _existing_scope($childScope3)
11731
11731
  });
11732
11732
  }, (a) => a, $scope6_id, "a", $sg__input_agents, 1, $sg__input_workspace__OR__input_allWorkspaces__OR__input_agents, "</div>", 1);
11733
- _html(`<div${_attr_class("_b1")}>`);
11733
+ _html(`<div${_attr_class("_b3")}>`);
11734
11734
  _for_of(orderedIds, (wsId) => {
11735
11735
  const $scope8_id = _scope_id();
11736
11736
  _set_serialize_reason({
@@ -11807,7 +11807,7 @@ var side_nav_default = _template("E", (input) => {
11807
11807
  _if(() => {
11808
11808
  if (!navOpen) {
11809
11809
  const $scope9_id = _scope_id();
11810
- _html(`<div${_attr_class("_b2")}>`);
11810
+ _html(`<div${_attr_class("_b4")}>`);
11811
11811
  _for_of(orderedIds, (wsId, i) => {
11812
11812
  const $scope10_id = _scope_id();
11813
11813
  _set_serialize_reason({
@@ -11855,14 +11855,14 @@ var side_nav_default = _template("E", (input) => {
11855
11855
  return 0;
11856
11856
  }
11857
11857
  }, $scope0_id, "e", 1, 1, 1, 0, 1);
11858
- _html(`<div${_attr_class("_b3")}>`);
11858
+ _html(`<div${_attr_class("_b5")}>`);
11859
11859
  _if(() => {
11860
11860
  if (isPage) {
11861
11861
  const $scope12_id = _scope_id();
11862
11862
  _html(`<a${view === "new" ? _attr("href", backHref) : " href=/new"}${_attr_class([
11863
11863
  "_q",
11864
11864
  btnLg,
11865
- "_bX"
11865
+ "_bZ"
11866
11866
  ])} title=${view === "new" ? "\"Back to workspace\"" : "\"New workspace\""}${view === "new" ? " aria-current=page" : ""}>`);
11867
11867
  icon_folder_plus_default({ size: 16 });
11868
11868
  _html(` New workspace</a>${_el_resume($scope12_id, "a")}`);
@@ -11894,9 +11894,9 @@ var side_nav_default = _template("E", (input) => {
11894
11894
  sessions: input.sessions,
11895
11895
  tab: view === "term" ? tab : null
11896
11896
  });
11897
- _html(`<div${_attr_class(["_z", "_b4"])}></div>`);
11897
+ _html(`<div${_attr_class(["_z", "_b6"])}></div>`);
11898
11898
  _if(() => {}, $scope11_id, "d", 1, 1, 1, 0, 1);
11899
- _html(`<a${view === "settings" ? _attr("href", backHref) : " href=/settings"}${_attr_class([iconBtn, { ["_bN"]: view === "settings" }])} title=${view === "settings" ? "\"Back to workspace\"" : "Settings"}${view === "settings" ? " aria-current=page" : ""}>`);
11899
+ _html(`<a${view === "settings" ? _attr("href", backHref) : " href=/settings"}${_attr_class([iconBtn, { ["_bP"]: view === "settings" }])} title=${view === "settings" ? "\"Back to workspace\"" : "Settings"}${view === "settings" ? " aria-current=page" : ""}>`);
11900
11900
  icon_settings_default({});
11901
11901
  _if(() => {
11902
11902
  if (input.setupReady === false) {
@@ -11906,7 +11906,7 @@ var side_nav_default = _template("E", (input) => {
11906
11906
  return 0;
11907
11907
  }
11908
11908
  }, $scope11_id, "g", $sg__input_setupReady, $sg__input_setupReady, 1, 0, 1);
11909
- _html(`</a>${_el_resume($scope11_id, "e")}<a${view === "new" ? _attr("href", backHref) : " href=/new"}${_attr_class([iconBtn, { ["_bN"]: view === "new" }])} title=${view === "new" ? "\"Back to workspace\"" : "\"New workspace\""}${view === "new" ? " aria-current=page" : ""}>`);
11909
+ _html(`</a>${_el_resume($scope11_id, "e")}<a${view === "new" ? _attr("href", backHref) : " href=/new"}${_attr_class([iconBtn, { ["_bP"]: view === "new" }])} title=${view === "new" ? "\"Back to workspace\"" : "\"New workspace\""}${view === "new" ? " aria-current=page" : ""}>`);
11910
11910
  icon_folder_plus_default({ size: 16 });
11911
11911
  _html(`</a>${_el_resume($scope11_id, "h")}`);
11912
11912
  _script($scope11_id, "E13");
@@ -12869,6 +12869,38 @@ function termMatcher(term) {
12869
12869
  }
12870
12870
  }
12871
12871
  //#endregion
12872
+ //#region lib/preview/media.mjs
12873
+ /** @typedef {"image" | "pdf"} PreviewKind */
12874
+ /** @typedef {{ kind: PreviewKind, type: string }} Preview */
12875
+ /** @type {Record<string, string>} */
12876
+ var TYPES = {
12877
+ apng: "image/apng",
12878
+ avif: "image/avif",
12879
+ bmp: "image/bmp",
12880
+ gif: "image/gif",
12881
+ ico: "image/x-icon",
12882
+ jpeg: "image/jpeg",
12883
+ jpg: "image/jpeg",
12884
+ png: "image/png",
12885
+ svg: "image/svg+xml",
12886
+ webp: "image/webp",
12887
+ pdf: "application/pdf"
12888
+ };
12889
+ /**
12890
+ * How to show a path, or null when nothing can.
12891
+ * @param {string} filePath
12892
+ * @returns {Preview | null}
12893
+ */
12894
+ function previewFor(filePath) {
12895
+ const dot = filePath.lastIndexOf(".");
12896
+ const type = TYPES[dot < 0 ? "" : filePath.slice(dot + 1).toLowerCase()];
12897
+ if (!type) return null;
12898
+ return {
12899
+ kind: type === "application/pdf" ? "pdf" : "image",
12900
+ type
12901
+ };
12902
+ }
12903
+ //#endregion
12872
12904
  //#region lib/review/markdown.mjs
12873
12905
  /**
12874
12906
  * @typedef {{ worktree: string, path: string, side: "additions"|"deletions",
@@ -12895,10 +12927,9 @@ function commentMarkdown(comments, repos) {
12895
12927
  chunks.push(repoHeader(worktree, repo, list));
12896
12928
  for (const c of list) {
12897
12929
  n++;
12898
- const side = c.side === "deletions" ? "Old" : "New";
12899
- const range = c.line_start === c.line_end ? `line ${c.line_start}` : `lines ${c.line_start}-${c.line_end}`;
12930
+ const where = c.line_end === 0 ? "whole file" : rowsOf(c);
12900
12931
  chunks.push("");
12901
- chunks.push(`${n}. **${c.path}** (${side} ${range})`);
12932
+ chunks.push(`${n}. **${c.path}** (${where})`);
12902
12933
  const snippet = c.snippet;
12903
12934
  if (snippet != null) {
12904
12935
  const fence = markdownFence(snippet);
@@ -12911,6 +12942,12 @@ function commentMarkdown(comments, repos) {
12911
12942
  }
12912
12943
  return chunks.join("\n");
12913
12944
  }
12945
+ /** Which rows a comment is against, as the reviewer saw them.
12946
+ * @param {Comment} c */
12947
+ function rowsOf(c) {
12948
+ const side = c.side === "deletions" ? "Old" : "New";
12949
+ return c.line_start === c.line_end ? `${side} line ${c.line_start}` : `${side} lines ${c.line_start}-${c.line_end}`;
12950
+ }
12914
12951
  /** @param {string} worktree @param {Repo | undefined} repo @param {Comment[]} list */
12915
12952
  function repoHeader(worktree, repo, list) {
12916
12953
  if (repo?.head) {
@@ -12999,8 +13036,8 @@ function shortBranch(name, wsBranch = "", wsName = "") {
12999
13036
  }
13000
13037
  return shortHeadFallback(head);
13001
13038
  }
13002
- var treeToggle = "_go _4 _l";
13003
- var pageTitle = "_gu _ej";
13039
+ var treeToggle = "_g3 _4 _l";
13040
+ var pageTitle = "_g9 _ej";
13004
13041
  //#endregion
13005
13042
  //#region src/tags/icons/icon-comment.marko
13006
13043
  var icon_comment_default = _template("bb", (input) => {
@@ -13061,12 +13098,12 @@ var diff_send_default = _template("k", (input) => {
13061
13098
  }
13062
13099
  })();
13063
13100
  }, "k1", $scope0_id);
13064
- _html(`<div${_attr_class("_il")} role=group${_attr("aria-label", label)}><span${_attr_class("_im")}${_attr("title", label)}>`);
13101
+ _html(`<div${_attr_class("_iK")} role=group${_attr("aria-label", label)}><span${_attr_class("_iL")}${_attr("title", label)}>`);
13065
13102
  icon_comment_default({
13066
13103
  size: 18,
13067
- class: "_in"
13104
+ class: "_iM"
13068
13105
  });
13069
- _html(`<span${_attr_class("_io")} aria-hidden=true>${_text_resume($scope0_id, "e", input.count > 99 ? "99+" : input.count, $sg__input_count)}</span></span>${_el_resume($scope0_id, "b", $sg__input_count)}<button type=button${_attr_class("_ip")} title="Copy comments as markdown" aria-label="Copy comments as markdown">`);
13106
+ _html(`<span${_attr_class("_iN")} aria-hidden=true>${_text_resume($scope0_id, "e", input.count > 99 ? "99+" : input.count, $sg__input_count)}</span></span>${_el_resume($scope0_id, "b", $sg__input_count)}<button type=button${_attr_class("_iO")} title="Copy comments as markdown" aria-label="Copy comments as markdown">`);
13070
13107
  _if(() => {
13071
13108
  {
13072
13109
  const $scope6_id = _scope_id();
@@ -13078,11 +13115,11 @@ var diff_send_default = _template("k", (input) => {
13078
13115
  _if(() => {
13079
13116
  if (target) {
13080
13117
  const $scope1_id = _scope_id();
13081
- _html(`<button type=button${_attr_class(["_ip", "_iq"])}${_attr("disabled", sending)}${_attr("title", `Send comments to ${target.title || target.agent}`)}>`);
13118
+ _html(`<button type=button${_attr_class(["_iO", "_iP"])}${_attr("disabled", sending)}${_attr("title", `Send comments to ${target.title || target.agent}`)}>`);
13082
13119
  _if(() => {
13083
13120
  if (sessions.length > 1) {
13084
13121
  const $scope2_id = _scope_id();
13085
- _html(`<span${_attr_class(["_it", "_is"])}>${_text_resume($scope2_id, "b", sending ? "Sending…" : `Send to ${target.title || target.agent}`)}</span><span${_attr_class("_ir")}>${_text_resume($scope2_id, "d", sending ? "Sending…" : "Send")}</span>`);
13122
+ _html(`<span${_attr_class(["_iS", "_iR"])}>${_text_resume($scope2_id, "b", sending ? "Sending…" : `Send to ${target.title || target.agent}`)}</span><span${_attr_class("_iQ")}>${_text_resume($scope2_id, "d", sending ? "Sending…" : "Send")}</span>`);
13086
13123
  _subscribe($target_agent__closures, _subscribe($target_title__closures, _subscribe($sending__closures, writeScope($scope2_id, { _: _scope_with_id($scope1_id) }))));
13087
13124
  return 0;
13088
13125
  } else {
@@ -13098,15 +13135,15 @@ var diff_send_default = _template("k", (input) => {
13098
13135
  _if(() => {
13099
13136
  if (sessions.length > 1) {
13100
13137
  const $scope4_id = _scope_id();
13101
- _html(`<span${_attr_class("_iu")}><button type=button${_attr_class([
13102
- "_ip",
13103
- "_iq",
13104
- "_iv"
13138
+ _html(`<span${_attr_class("_iT")}><button type=button${_attr_class([
13139
+ "_iO",
13140
+ "_iP",
13141
+ "_iU"
13105
13142
  ])} aria-label="Choose session to send to"${_attr("disabled", sending)}></button>${_el_resume($scope4_id, "b")}`);
13106
13143
  _attr_select_value($scope4_id, "c", target.id, _resume(function(v) {
13107
13144
  sendTarget = v;
13108
13145
  }, "k0", $scope4_id), () => {
13109
- _html(`<select${_attr_class("_iw")} aria-label="Send comments to session" tabindex=-1${_attr("disabled", sending)}>`);
13146
+ _html(`<select${_attr_class("_iV")} aria-label="Send comments to session" tabindex=-1${_attr("disabled", sending)}>`);
13110
13147
  _for_of(sessions, (s) => {
13111
13148
  const $scope7_id = _scope_id();
13112
13149
  _html(`<option${_attr_option_value(s.id)}>${_text_resume($scope7_id, "b", s.title || s.agent, $sg__input_sessions)}</option>${_el_resume($scope7_id, "a", $sg__input_sessions)}`);
@@ -13183,8 +13220,8 @@ var icon_branch_default = _template("Y", (input) => {
13183
13220
  });
13184
13221
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
13185
13222
  });
13186
- var findInput = "_eq _n";
13187
- var findIconBtn = "_et _l";
13223
+ var findInput = "_eE _n";
13224
+ var findIconBtn = "_eH _l";
13188
13225
  //#endregion
13189
13226
  //#region src/tags/icons/icon-arrow-down.marko
13190
13227
  var icon_arrow_down_default = _template("R", (input) => {
@@ -13276,18 +13313,18 @@ var diff_find_default = _template("j", (input) => {
13276
13313
  }, 0);
13277
13314
  }, "j0", $scope0_id);
13278
13315
  _html(`<div${_attr_class([
13279
- "_eo",
13280
- input.keybar && "_ex",
13281
- !open && "_en"
13282
- ])} aria-hidden=${open ? "false" : "true"}><span${_attr_class("_ep")} aria-hidden=true>`);
13316
+ "_eC",
13317
+ input.keybar && "_eL",
13318
+ !open && "_eB"
13319
+ ])} aria-hidden=${open ? "false" : "true"}><span${_attr_class("_eD")} aria-hidden=true>`);
13283
13320
  icon_search_default({ size: 13 });
13284
13321
  _html(`</span><input${_attr_input_value($scope0_id, "d", query || "", _resume(function(v) {
13285
13322
  type(v);
13286
- }, "j1", $scope0_id))}${_attr_class([findInput, input.keybar && "_ez"])} type=search enterkeyhint=search autocomplete=off tabindex=${open ? "0" : "-1"} placeholder="Find in review" aria-label="Find in review">${_el_resume($scope0_id, "d")}<span${_attr_class("_es")}>${_text_resume($scope0_id, "f", open && (query || "").trim() ? hits.length ? `${at + 1}/${hits.length}` : "0/0" : "")}</span><button type=button${_attr_class([findIconBtn, input.keybar && "_eA"])} title="Previous match"${_attr("disabled", !hits.length || !open)} tabindex=${open ? "0" : "-1"}>`);
13323
+ }, "j1", $scope0_id))}${_attr_class([findInput, input.keybar && "_eN"])} type=search enterkeyhint=search autocomplete=off tabindex=${open ? "0" : "-1"} placeholder="Find in review" aria-label="Find in review">${_el_resume($scope0_id, "d")}<span${_attr_class("_eG")}>${_text_resume($scope0_id, "f", open && (query || "").trim() ? hits.length ? `${at + 1}/${hits.length}` : "0/0" : "")}</span><button type=button${_attr_class([findIconBtn, input.keybar && "_eO"])} title="Previous match"${_attr("disabled", !hits.length || !open)} tabindex=${open ? "0" : "-1"}>`);
13287
13324
  icon_arrow_up_default({ size: 14 });
13288
- _html(`</button>${_el_resume($scope0_id, "g")}<button type=button${_attr_class([findIconBtn, input.keybar && "_eA"])} title="Next match"${_attr("disabled", !hits.length || !open)} tabindex=${open ? "0" : "-1"}>`);
13325
+ _html(`</button>${_el_resume($scope0_id, "g")}<button type=button${_attr_class([findIconBtn, input.keybar && "_eO"])} title="Next match"${_attr("disabled", !hits.length || !open)} tabindex=${open ? "0" : "-1"}>`);
13289
13326
  icon_arrow_down_default({ size: 14 });
13290
- _html(`</button>${_el_resume($scope0_id, "i")}<button type=button${_attr_class([findIconBtn, input.keybar && "_eA"])} title="Close find"${_attr("hidden", input.pinned)} tabindex=${open ? "0" : "-1"}>`);
13327
+ _html(`</button>${_el_resume($scope0_id, "i")}<button type=button${_attr_class([findIconBtn, input.keybar && "_eO"])} title="Close find"${_attr("hidden", input.pinned)} tabindex=${open ? "0" : "-1"}>`);
13291
13328
  icon_xmark_default({ size: 14 });
13292
13329
  _html(`</button>${_el_resume($scope0_id, "k")}</div>${_el_resume($scope0_id, "a")}`);
13293
13330
  const $return = focusInput;
@@ -13326,8 +13363,8 @@ var diff_find_default = _template("j", (input) => {
13326
13363
  _resume_branch($scope0_id);
13327
13364
  return $return;
13328
13365
  });
13329
- var worktree = "_jz _y";
13330
- var repoTitle = "_jK _x";
13366
+ var worktree = "_jG _y";
13367
+ var repoTitle = "_jR _x";
13331
13368
  //#endregion
13332
13369
  //#region src/tags/review-head.marko
13333
13370
  var review_head_default = _template("x", (input) => {
@@ -13339,7 +13376,7 @@ var review_head_default = _template("x", (input) => {
13339
13376
  const baseRef = (repo.pr?.baseRefName || repo.base).replace(/^origin\//, "");
13340
13377
  const headRef = (repo.pr?.headRefName || repo.branch).replace(/^origin\//, "");
13341
13378
  const unusual = !!compare$1.topic || !!input.workspaceBranch && headRef !== input.workspaceBranch || !!repo.default_branch && baseRef !== repo.default_branch;
13342
- _html(`<div${_attr_class("_jE")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}>`);
13379
+ _html(`<div${_attr_class("_jL")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}>`);
13343
13380
  _if(() => {
13344
13381
  if (repo.pr) {
13345
13382
  const $scope6_id = _scope_id();
@@ -13348,7 +13385,7 @@ var review_head_default = _template("x", (input) => {
13348
13385
  return 0;
13349
13386
  } else {
13350
13387
  const $scope7_id = _scope_id();
13351
- _html(`<span${_attr_class([repoTitle, "_jL"])}>${_text_resume($scope7_id, "b", repoLabel$1(repo.full_name), $sg__input_repo)}</span>`);
13388
+ _html(`<span${_attr_class([repoTitle, "_jS"])}>${_text_resume($scope7_id, "b", repoLabel$1(repo.full_name), $sg__input_repo)}</span>`);
13352
13389
  $si__input_repo && writeScope($scope7_id, { _: _scope_with_id($scope0_id) });
13353
13390
  return 1;
13354
13391
  }
@@ -13356,14 +13393,14 @@ var review_head_default = _template("x", (input) => {
13356
13393
  _if(() => {
13357
13394
  if (unusual) {
13358
13395
  const $scope8_id = _scope_id();
13359
- _html(`<span${_attr_class("_jM")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_N", "_jN"])}>${_text_resume($scope8_id, "c", compare$1.base, $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_P", "_jP"])} aria-hidden=true>vs</span><span${_attr_class(["_N", "_jO"])}>${_text_resume($scope8_id, "f", compare$1.head, $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
13396
+ _html(`<span${_attr_class("_jT")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_N", "_jU"])}>${_text_resume($scope8_id, "c", compare$1.base, $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_P", "_jW"])} aria-hidden=true>vs</span><span${_attr_class(["_N", "_jV"])}>${_text_resume($scope8_id, "f", compare$1.head, $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
13360
13397
  _if(() => {
13361
13398
  if (compare$1.topic) {
13362
13399
  const $scope11_id = _scope_id();
13363
13400
  _html(`<span${_attr_class([
13364
13401
  "_N",
13365
13402
  tone.accent,
13366
- "_jQ"
13403
+ "_jX"
13367
13404
  ])}>${_text_resume($scope11_id, "b", compare$1.topic, $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
13368
13405
  $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName && _subscribe($compare_topic__closures, writeScope($scope11_id, { _: _scope_with_id($scope8_id) }));
13369
13406
  return 0;
@@ -13377,7 +13414,7 @@ var review_head_default = _template("x", (input) => {
13377
13414
  _if(() => {
13378
13415
  if (repo.rev) {
13379
13416
  const $scope9_id = _scope_id();
13380
- _html(`<span${_attr_class(["_N", "_jR"])} title="One commit against its parent">commit ${_text_resume($scope9_id, "b", shortSha(repo.rev, 7), $sg__input_repo * 2)}</span>`);
13417
+ _html(`<span${_attr_class(["_N", "_jY"])} title="One commit against its parent">commit ${_text_resume($scope9_id, "b", shortSha(repo.rev, 7), $sg__input_repo * 2)}</span>`);
13381
13418
  $si__input_repo && writeScope($scope9_id, { _: _scope_with_id($scope0_id) });
13382
13419
  return 0;
13383
13420
  }
@@ -13388,7 +13425,7 @@ var review_head_default = _template("x", (input) => {
13388
13425
  _html(`<button type=button${_attr_class([
13389
13426
  "_N",
13390
13427
  tone.warn,
13391
- "_jR"
13428
+ "_jY"
13392
13429
  ])}${_attr("title", `origin/${repo.pr.headRefName} ${repo.head} · GitHub ${repo.pr.headRefOid}. Reload to re-ask GitHub`)}${_attr("disabled", input.loading)}>behind GitHub ${_text_resume($scope1_id, "b", shortSha(repo.head, 7), $sg__input_repo * 2)} → ${_text_resume($scope1_id, "c", shortSha(repo.pr.headRefOid, 7), $sg__input_repo * 2)}</button>${_el_resume($scope1_id, "a")}`);
13393
13430
  _script($scope1_id, "x0");
13394
13431
  writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
@@ -13398,7 +13435,7 @@ var review_head_default = _template("x", (input) => {
13398
13435
  _if(() => {
13399
13436
  if (repo.contained && input.fileCount) {
13400
13437
  const $scope10_id = _scope_id();
13401
- _html(`<span${_attr_class(["_N", "_jR"])}${_attr("title", `${repo.pr ? `#${repo.pr.number}` : repo.branch} is already in ${repo.base}; showing the working tree only`)}>already in ${_text_resume($scope10_id, "b", repo.base, $sg__input_repo * 2)}</span>${_el_resume($scope10_id, "a", $sg__input_repo)}`);
13438
+ _html(`<span${_attr_class(["_N", "_jY"])}${_attr("title", `${repo.pr ? `#${repo.pr.number}` : repo.branch} is already in ${repo.base}; showing the working tree only`)}>already in ${_text_resume($scope10_id, "b", repo.base, $sg__input_repo * 2)}</span>${_el_resume($scope10_id, "a", $sg__input_repo)}`);
13402
13439
  $si__input_repo__OR__input_fileCount && writeScope($scope10_id, { _: $si__input_repo && _scope_with_id($scope0_id) });
13403
13440
  return 0;
13404
13441
  }
@@ -13406,16 +13443,16 @@ var review_head_default = _template("x", (input) => {
13406
13443
  _if(() => {
13407
13444
  if (input.localDiffers) {
13408
13445
  const $scope2_id = _scope_id();
13409
- _html(`<span${_attr_class(["_N", "_jR"])}${_attr("title", `This view is ${shortSha(repo.head)} (${repo.pr.headRefName}); checked out is ${shortSha(repo.localHead)} (${repo.branch})`)}>local ${_text_resume($scope2_id, "b", shortBranch(repo.branch, input.workspaceBranch, input.workspaceName), $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName * 2)}${_text_resume($scope2_id, "c", shortSha(repo.localHead, 7), $sg__input_repo * 2)}</span>${_el_resume($scope2_id, "a", $sg__input_repo)}`);
13446
+ _html(`<span${_attr_class(["_N", "_jY"])}${_attr("title", `This view is ${shortSha(repo.head)} (${repo.pr.headRefName}); checked out is ${shortSha(repo.localHead)} (${repo.branch})`)}>local ${_text_resume($scope2_id, "b", shortBranch(repo.branch, input.workspaceBranch, input.workspaceName), $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName * 2)}${_text_resume($scope2_id, "c", shortSha(repo.localHead, 7), $sg__input_repo * 2)}</span>${_el_resume($scope2_id, "a", $sg__input_repo)}`);
13410
13447
  $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_localDiffers && writeScope($scope2_id, { _: $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName && _scope_with_id($scope0_id) });
13411
13448
  return 0;
13412
13449
  }
13413
13450
  }, $scope0_id, "g", _serialize_guard($scope0_reason, 8), _serialize_guard($scope0_reason, 13), $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_fileCount__OR__input_localDiffers__OR__input_additions__OR__input_deletions__OR__input_hiddenCount__OR__input_newCount__OR__input_onlyNew, 0, 1);
13414
- _html(`<span${_attr_class("_jF")}><span>${_text_resume($scope0_id, "i", input.fileCount, $sg__input_fileCount)} file${_text_resume($scope0_id, "j", input.fileCount === 1 ? "" : "s", $sg__input_fileCount * 2)}</span>`);
13451
+ _html(`<span${_attr_class("_jM")}><span>${_text_resume($scope0_id, "i", input.fileCount, $sg__input_fileCount)} file${_text_resume($scope0_id, "j", input.fileCount === 1 ? "" : "s", $sg__input_fileCount * 2)}</span>`);
13415
13452
  _if(() => {
13416
13453
  if (input.additions || input.deletions) {
13417
13454
  const $scope3_id = _scope_id();
13418
- _html(`<span${_attr_class("_jG")}>+${_text_resume($scope3_id, "b", input.additions, _serialize_guard($scope0_reason, 14) * 2)}</span><span${_attr_class("_jH")}>−${_text_resume($scope3_id, "d", input.deletions, _serialize_guard($scope0_reason, 15) * 2)}</span>`);
13455
+ _html(`<span${_attr_class("_jN")}>+${_text_resume($scope3_id, "b", input.additions, _serialize_guard($scope0_reason, 14) * 2)}</span><span${_attr_class("_jO")}>−${_text_resume($scope3_id, "d", input.deletions, _serialize_guard($scope0_reason, 15) * 2)}</span>`);
13419
13456
  $si__input_additions__OR__input_deletions && writeScope($scope3_id, { _: _scope_with_id($scope0_id) });
13420
13457
  return 0;
13421
13458
  }
@@ -13423,7 +13460,7 @@ var review_head_default = _template("x", (input) => {
13423
13460
  _if(() => {
13424
13461
  if (input.hiddenCount) {
13425
13462
  const $scope4_id = _scope_id();
13426
- _html(`<button type=button${_attr_class("_jJ")} title="Filtered out of the list — show every file">${_text_resume($scope4_id, "b", input.hiddenCount, $sg__input_hiddenCount)} hidden</button>${_el_resume($scope4_id, "a")}`);
13463
+ _html(`<button type=button${_attr_class("_jQ")} title="Filtered out of the list — show every file">${_text_resume($scope4_id, "b", input.hiddenCount, $sg__input_hiddenCount)} hidden</button>${_el_resume($scope4_id, "a")}`);
13427
13464
  _script($scope4_id, "x1");
13428
13465
  writeScope($scope4_id, { _: _scope_with_id($scope0_id) });
13429
13466
  return 0;
@@ -13432,7 +13469,7 @@ var review_head_default = _template("x", (input) => {
13432
13469
  _if(() => {
13433
13470
  if (input.newCount || input.onlyNew) {
13434
13471
  const $scope5_id = _scope_id();
13435
- _html(`<button type=button${_attr_class(["_jJ", { ["_jI"]: input.onlyNew }])} aria-pressed=${input.onlyNew ? "true" : "false"} title=${input.onlyNew ? "\"Show every file\"" : "\"Show only files changed since your last visit\""}>${_text_resume($scope5_id, "b", input.newCount, _serialize_guard($scope0_reason, 17))} new</button>${_el_resume($scope5_id, "a")}`);
13472
+ _html(`<button type=button${_attr_class(["_jQ", { ["_jP"]: input.onlyNew }])} aria-pressed=${input.onlyNew ? "true" : "false"} title=${input.onlyNew ? "\"Show every file\"" : "\"Show only files changed since your last visit\""}>${_text_resume($scope5_id, "b", input.newCount, _serialize_guard($scope0_reason, 17))} new</button>${_el_resume($scope5_id, "a")}`);
13436
13473
  _script($scope5_id, "x2");
13437
13474
  writeScope($scope5_id, { _: _scope_with_id($scope0_id) });
13438
13475
  return 0;
@@ -13521,30 +13558,30 @@ var review_repos_default = _template("y", (input) => {
13521
13558
  _if(() => {
13522
13559
  if (input.tabs.length) {
13523
13560
  const $scope1_id = _scope_id();
13524
- _html(`<div${_attr_class(["_jo", { ["_jn"]: many }])}>`);
13561
+ _html(`<div${_attr_class(["_jv", { ["_ju"]: many }])}>`);
13525
13562
  _if(() => {
13526
13563
  if (many) {
13527
13564
  const $scope2_id = _scope_id();
13528
- _html(`<div${_attr_class(["_jr", {
13529
- ["_jq"]: edges.end,
13530
- ["_jp"]: edges.start
13565
+ _html(`<div${_attr_class(["_jy", {
13566
+ ["_jx"]: edges.end,
13567
+ ["_jw"]: edges.start
13531
13568
  }])} role=tablist>`);
13532
13569
  _for_of(input.tabs, (tab$1) => {
13533
13570
  const $scope3_id = _scope_id();
13534
13571
  const repo = tab$1.repo;
13535
13572
  const isOn = current?.repo.id === repo.id;
13536
13573
  const isFolded = input.folded.has(repo.id);
13537
- _html(`<div${_attr_class(["_ju", {
13538
- ["_js"]: isOn,
13539
- ["_jt"]: isFolded
13540
- }])} role=tab aria-selected=${isOn ? "true" : "false"}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}><button type=button${_attr_class("_jx")} title=${isFolded ? "\"Show this section's files\"" : "\"Hide this section's files\""} aria-expanded=${isFolded ? "false" : "true"}><span${_attr_class("_jy")}>▾</span></button>${_el_resume($scope3_id, "b")}<button type=button${_attr_class("_jw")} title="Scroll to this section"><span${_attr_class(worktree)}>${_text_resume($scope3_id, "f", repo.worktree, $sg__input_tabs)}</span>`);
13574
+ _html(`<div${_attr_class(["_jB", {
13575
+ ["_jz"]: isOn,
13576
+ ["_jA"]: isFolded
13577
+ }])} role=tab aria-selected=${isOn ? "true" : "false"}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}><button type=button${_attr_class("_jE")} title=${isFolded ? "\"Show this section's files\"" : "\"Hide this section's files\""} aria-expanded=${isFolded ? "false" : "true"}><span${_attr_class("_jF")}>▾</span></button>${_el_resume($scope3_id, "b")}<button type=button${_attr_class("_jD")} title="Scroll to this section"><span${_attr_class(worktree)}>${_text_resume($scope3_id, "f", repo.worktree, $sg__input_tabs)}</span>`);
13541
13578
  _if(() => {
13542
13579
  if (repo.pr) {
13543
13580
  const $scope5_id = _scope_id();
13544
13581
  _html(`<span${_attr_class([
13545
13582
  "_u",
13546
13583
  "_v",
13547
- "_jA"
13584
+ "_jH"
13548
13585
  ])}>#${_text_resume($scope5_id, "b", repo.pr.number, $sg__input_tabs * 2)}</span>`);
13549
13586
  $si__input_tabs && writeScope($scope5_id, { _: _scope_with_id($scope3_id) });
13550
13587
  return 0;
@@ -13570,11 +13607,11 @@ var review_repos_default = _template("y", (input) => {
13570
13607
  if (current) {
13571
13608
  const $scope4_id = _scope_id();
13572
13609
  const one = current.repo;
13573
- _html(`<div${_attr_class("_jB")}>`);
13610
+ _html(`<div${_attr_class("_jI")}>`);
13574
13611
  _if(() => {
13575
13612
  if (!many) {
13576
13613
  const $scope6_id = _scope_id();
13577
- _html(`<span${_attr_class([worktree, "_jv"])}>${_text_resume($scope6_id, "b", one.worktree, $sg__input_tabs__OR__input_active)}</span>`);
13614
+ _html(`<span${_attr_class([worktree, "_jC"])}>${_text_resume($scope6_id, "b", one.worktree, $sg__input_tabs__OR__input_active)}</span>`);
13578
13615
  $si__input_tabs__OR__input_active && writeScope($scope6_id, { _: _scope_with_id($scope4_id) });
13579
13616
  return 0;
13580
13617
  }
@@ -13683,7 +13720,7 @@ var review_repos_default = _template("y", (input) => {
13683
13720
  });
13684
13721
  _resume_branch($scope0_id);
13685
13722
  });
13686
- var fileFilter = "_jD _n";
13723
+ var fileFilter = "_jK _n";
13687
13724
  //#endregion
13688
13725
  //#region src/tags/file-filter.marko
13689
13726
  var file_filter_default = _template("l", (input) => {
@@ -13713,7 +13750,7 @@ var file_filter_default = _template("l", (input) => {
13713
13750
  pending = v;
13714
13751
  box.timer = setTimeout(flush, 150);
13715
13752
  }, "l2", $scope0_id);
13716
- _html(`<div${_attr_class("_jC")}><input${_attr_input_value($scope0_id, "b", draft, _resume(function(v) {
13753
+ _html(`<div${_attr_class("_jJ")}><input${_attr_input_value($scope0_id, "b", draft, _resume(function(v) {
13717
13754
  type(v);
13718
13755
  }, "l0", $scope0_id))}${_attr_class(fileFilter)} type=search placeholder="Filter files…" aria-label="Filter files">${_el_resume($scope0_id, "b")}</div>`);
13719
13756
  _script($scope0_id, "l3");
@@ -13759,7 +13796,7 @@ var review_tree_default = _template("z", (input) => {
13759
13796
  dragging$1 = false;
13760
13797
  if (width != null) setDiffTreeWidth(width);
13761
13798
  }, "z2", $scope0_id);
13762
- _html(`<div${_attr_class(["_iB", { ["_iA"]: input.open === false }])}${width != null ? _attr_style(`--tree-w:${width}px`) : ""}><div${_attr_class(["_iO", { ["_iN"]: dragging$1 }])} title="Drag to resize"></div>${_el_resume($scope0_id, "b")}<div${_attr_class("_iC")}>`);
13799
+ _html(`<div${_attr_class(["_i0", { ["_iZ"]: input.open === false }])}${width != null ? _attr_style(`--tree-w:${width}px`) : ""}><div${_attr_class(["_jc", { ["_jb"]: dragging$1 }])} title="Drag to resize"></div>${_el_resume($scope0_id, "b")}<div${_attr_class("_i1")}>`);
13763
13800
  _set_serialize_reason(2);
13764
13801
  const $childScope = _peek_scope_id();
13765
13802
  file_filter_default({
@@ -13768,22 +13805,22 @@ var review_tree_default = _template("z", (input) => {
13768
13805
  filter$1 = _new_filter;
13769
13806
  }, "z3", $scope0_id)
13770
13807
  });
13771
- _html(`</div><div${_attr_class("_iD")}>`);
13808
+ _html(`</div><div${_attr_class("_i2")}>`);
13772
13809
  _for_of(input.sections, (section$2) => {
13773
13810
  const $scope1_id = _scope_id();
13774
- _html(`<div${_attr_class(["_iF", { ["_iE"]: input.sections.length === 1 }])}${_attr("data-section", section$2.id)}>`);
13811
+ _html(`<div${_attr_class(["_i4", { ["_i3"]: input.sections.length === 1 }])}${_attr("data-section", section$2.id)}>`);
13775
13812
  _if(() => {
13776
13813
  if (input.sections.length > 1) {
13777
13814
  const $scope2_id = _scope_id();
13778
- _html(`<button type=button${_attr_class("_iG")}${_attr("title", section$2.label)} aria-expanded=${closed$4.has(section$2.id) ? "false" : "true"}><span${_attr_class(["_iH", { ["_iI"]: !closed$4.has(section$2.id) }])} aria-hidden=true>`);
13815
+ _html(`<button type=button${_attr_class("_i5")}${_attr("title", section$2.label)} aria-expanded=${closed$4.has(section$2.id) ? "false" : "true"}><span${_attr_class(["_i6", { ["_i7"]: !closed$4.has(section$2.id) }])} aria-hidden=true>`);
13779
13816
  icon_chevron_right_default({ size: 12 });
13780
- _html(`</span>${_el_resume($scope2_id, "b")}<span${_attr_class("_iJ")}>${_text_resume($scope2_id, "e", section$2.label, $sg__input_sections)}</span><span${_attr_class("_iK")}>${_text_resume($scope2_id, "g", section$2.files.length, $sg__input_sections)}</span></button>${_el_resume($scope2_id, "a")}`);
13817
+ _html(`</span>${_el_resume($scope2_id, "b")}<span${_attr_class("_i8")}>${_text_resume($scope2_id, "e", section$2.label, $sg__input_sections)}</span><span${_attr_class("_i9")}>${_text_resume($scope2_id, "g", section$2.files.length, $sg__input_sections)}</span></button>${_el_resume($scope2_id, "a")}`);
13781
13818
  _script($scope2_id, "z4");
13782
13819
  _subscribe($closed__closures, writeScope($scope2_id, { _: _scope_with_id($scope1_id) }));
13783
13820
  return 0;
13784
13821
  }
13785
13822
  }, $scope1_id, "b", $sg__input_sections, $sg__input_sections_length, $sg__input_sections_length, 0, 1);
13786
- _html(`<div${_attr_class(["_iM", { ["_iL"]: input.sections.length === 1 }])}${_attr("data-tree", section$2.id)}${_attr("hidden", closed$4.has(section$2.id))}></div>${_el_resume($scope1_id, "c")}</div>${_el_resume($scope1_id, "a", $sg__input_sections)}`);
13823
+ _html(`<div${_attr_class(["_ja", { ["_i_"]: input.sections.length === 1 }])}${_attr("data-tree", section$2.id)}${_attr("hidden", closed$4.has(section$2.id))}></div>${_el_resume($scope1_id, "c")}</div>${_el_resume($scope1_id, "a", $sg__input_sections)}`);
13787
13824
  writeScope($scope1_id, {
13788
13825
  f: section$2?.id,
13789
13826
  h: $si__input_sections_length && section$2?.label,
@@ -13802,20 +13839,19 @@ var review_tree_default = _template("z", (input) => {
13802
13839
  n: input.commentCounts,
13803
13840
  o: input.newKeys,
13804
13841
  p: input.onSelect,
13805
- q: filter$1,
13806
13842
  t: closed$4,
13807
13843
  u: width,
13808
13844
  x: dragBox.id,
13809
13845
  z: startDrag,
13810
13846
  a0: moveDrag,
13811
13847
  a1: endDrag,
13812
- r: input.filterChange || void 0,
13848
+ s: input.filterChange || void 0,
13813
13849
  d: _existing_scope($childScope),
13814
13850
  a3: $closed__closures
13815
13851
  });
13816
13852
  _resume_branch($scope0_id);
13817
13853
  });
13818
- var sheetDir = "_jh _ba";
13854
+ var sheetDir = "_jo _ba";
13819
13855
  //#endregion
13820
13856
  //#region src/tags/diff-file-sheet.marko
13821
13857
  var diff_file_sheet_default = _template("i", (input) => {
@@ -13839,9 +13875,8 @@ var diff_file_sheet_default = _template("i", (input) => {
13839
13875
  const out = [];
13840
13876
  const byRepo = /* @__PURE__ */ new Map();
13841
13877
  for (const file of input.files) {
13842
- const slash = file.key.indexOf("/");
13843
- const repo = file.key.slice(0, slash);
13844
- const path = file.key.slice(slash + 1);
13878
+ const repo = file.key.slice(0, file.key.indexOf("/")).replace("#", " #");
13879
+ const path = file.label.slice(file.label.indexOf("/") + 1);
13845
13880
  const at = path.lastIndexOf("/");
13846
13881
  const dir = at < 0 ? "" : path.slice(0, at);
13847
13882
  const name = at < 0 ? path : path.slice(at + 1);
@@ -13871,9 +13906,9 @@ var diff_file_sheet_default = _template("i", (input) => {
13871
13906
  _if(() => {
13872
13907
  if (open) {
13873
13908
  const $scope1_id = _scope_id();
13874
- _html(`<div${_attr_class("_i9")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_i_")} role=dialog aria-label="Jump to file"><div${_attr_class("_ja")}><strong${_attr_class("_i8")}>Files</strong><span${_attr_class("_jb")}>${_text_resume($scope1_id, "f", input.files.length, $sg__input_files_length)}${_text_resume($scope1_id, "g", input.files.length !== total ? ` / ${total}` : "", _serialize_guard($scope0_reason, 2) * 2)}</span><button type=button${_attr_class([iconBtnLg, "_i7"])} title=Close aria-label=Close>`);
13909
+ _html(`<div${_attr_class("_jf")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_jg")} role=dialog aria-label="Jump to file"><div${_attr_class("_jh")}><strong${_attr_class("_je")}>Files</strong><span${_attr_class("_ji")}>${_text_resume($scope1_id, "f", input.files.length, $sg__input_files_length)}${_text_resume($scope1_id, "g", input.files.length !== total ? ` / ${total}` : "", _serialize_guard($scope0_reason, 2) * 2)}</span><button type=button${_attr_class([iconBtnLg, "_jd"])} title=Close aria-label=Close>`);
13875
13910
  icon_xmark_default({ size: 16 });
13876
- _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_jj")}>`);
13911
+ _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_jq")}>`);
13877
13912
  _set_serialize_reason(2);
13878
13913
  const $childScope = _peek_scope_id();
13879
13914
  file_filter_default({
@@ -13882,13 +13917,13 @@ var diff_file_sheet_default = _template("i", (input) => {
13882
13917
  filter = _new_filter;
13883
13918
  }, "i1", $scope1_id)
13884
13919
  });
13885
- _html(`</div><div${_attr_class("_jc")}>`);
13920
+ _html(`</div><div${_attr_class("_jj")}>`);
13886
13921
  _for_of(groups, (group) => {
13887
13922
  const $scope2_id = _scope_id();
13888
- _html(`<div${_attr_class("_jd")}><div${_attr_class("_je")}>${_text_resume($scope2_id, "c", group.repo, $sg__input_files)}</div>`);
13923
+ _html(`<div${_attr_class("_jk")}><div${_attr_class("_jl")}>${_text_resume($scope2_id, "c", group.repo, $sg__input_files)}</div>`);
13889
13924
  _for_of(group.dirs, ({ dir, files }) => {
13890
13925
  const $scope3_id = _scope_id();
13891
- _html(`<div${_attr_class("_jf")}>`);
13926
+ _html(`<div${_attr_class("_jm")}>`);
13892
13927
  _if(() => {
13893
13928
  if (dir) {
13894
13929
  const $scope5_id = _scope_id();
@@ -13899,11 +13934,11 @@ var diff_file_sheet_default = _template("i", (input) => {
13899
13934
  }, $scope3_id, "b", $sg__input_files, $sg__input_files, $sg__input_files, 0, 1);
13900
13935
  _for_of(files, ({ file, name }) => {
13901
13936
  const $scope4_id = _scope_id();
13902
- _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_jg", "_y"])}><span${_attr_class("__")}${_attr("data-status", file.status)}>${_text_resume($scope4_id, "c", file.status, $sg__input_files)}</span>${_el_resume($scope4_id, "b", $sg__input_files)}<span${_attr_class("_ji")}><bdi>${_text_resume($scope4_id, "e", name, $sg__input_files)}</bdi></span>`);
13937
+ _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_jn", "_y"])}><span${_attr_class("__")}${_attr("data-status", file.status)}>${_text_resume($scope4_id, "c", file.status, $sg__input_files)}</span>${_el_resume($scope4_id, "b", $sg__input_files)}<span${_attr_class("_jp")}><bdi>${_text_resume($scope4_id, "e", name, $sg__input_files)}</bdi></span>`);
13903
13938
  _if(() => {
13904
13939
  if (newKeys.has(file.key)) {
13905
13940
  const $scope6_id = _scope_id();
13906
- _html(`<span${_attr_class(["_A", "_jl"])} title="Changed since your last visit"></span>`);
13941
+ _html(`<span${_attr_class(["_A", "_js"])} title="Changed since your last visit"></span>`);
13907
13942
  _serialize_if($scope0_reason, 1) && writeScope($scope6_id, {});
13908
13943
  return 0;
13909
13944
  }
@@ -13913,7 +13948,7 @@ var diff_file_sheet_default = _template("i", (input) => {
13913
13948
  const $scope7_id = _scope_id();
13914
13949
  icon_comment_default({
13915
13950
  size: 12,
13916
- class: "_jm"
13951
+ class: "_jt"
13917
13952
  });
13918
13953
  _serialize_if($scope0_reason, 0) && writeScope($scope7_id, {});
13919
13954
  return 0;
@@ -13938,7 +13973,7 @@ var diff_file_sheet_default = _template("i", (input) => {
13938
13973
  _if(() => {
13939
13974
  if (!input.files.length) {
13940
13975
  const $scope8_id = _scope_id();
13941
- _html(`<p${_attr_class("_jk")}>No files match.</p>`);
13976
+ _html(`<p${_attr_class("_jr")}>No files match.</p>`);
13942
13977
  $si__input_files_length && writeScope($scope8_id, {});
13943
13978
  return 0;
13944
13979
  }
@@ -14033,10 +14068,9 @@ var review_view_default = _template("A", (input) => {
14033
14068
  }, "A6", $scope0_id);
14034
14069
  const jumpTo = _resume((key) => {
14035
14070
  const owner = key.slice(0, key.indexOf("/"));
14036
- const foldedId = [...foldedRepos].find((id) => (repos || []).find((r) => r.id === id)?.worktree === owner);
14037
- if (foldedId) {
14071
+ if (foldedRepos.has(owner)) {
14038
14072
  const next = new Set(foldedRepos);
14039
- next.delete(foldedId);
14073
+ next.delete(owner);
14040
14074
  foldedRepos = next;
14041
14075
  }
14042
14076
  restoreBox.pos = null;
@@ -14049,7 +14083,7 @@ var review_view_default = _template("A", (input) => {
14049
14083
  const first = section?.files[0];
14050
14084
  if (section && first) {
14051
14085
  restoreBox.pos = null;
14052
- viewBox.scrollToItem(`${section.worktree}/${first.path}`);
14086
+ viewBox.scrollToItem(`${section.id}/${first.path}`);
14053
14087
  }
14054
14088
  }, "A8", $scope0_id);
14055
14089
  const load = _resume(async (which = scope, refresh = false) => {
@@ -14148,11 +14182,12 @@ var review_view_default = _template("A", (input) => {
14148
14182
  const allFiles = shownRepos.flatMap((r) => r.files.map((f) => ({
14149
14183
  ...f,
14150
14184
  repo: r.id,
14151
- key: `${r.worktree}/${f.path}`
14185
+ key: `${r.id}/${f.path}`,
14186
+ label: `${r.worktree}/${f.path}`
14152
14187
  })));
14153
14188
  const fileFiltered = (() => {
14154
14189
  const match = makeFileFilter(fileFilter);
14155
- return allFiles.filter((f) => match(f.key) && (!onlyNew || f.changedSince));
14190
+ return allFiles.filter((f) => match(f.label) && (!onlyNew || f.changedSince));
14156
14191
  })();
14157
14192
  const findKeys = findState.query.trim() ? new Set(findState.keys) : null;
14158
14193
  const listFiles = findKeys ? fileFiltered.filter((f) => findKeys.has(f.key) || f.key === findState.hit?.key) : fileFiltered;
@@ -14166,8 +14201,11 @@ var review_view_default = _template("A", (input) => {
14166
14201
  }
14167
14202
  return map;
14168
14203
  })();
14169
- const commentKeys = new Set(commentsByFile.keys());
14170
- const commentCounts = new Map([...commentsByFile].map(([key, list]) => [key, list.length]));
14204
+ const commentCounts = new Map(allFiles.flatMap((f) => {
14205
+ const n = commentsByFile.get(f.label)?.length;
14206
+ return n ? [[f.key, n]] : [];
14207
+ }));
14208
+ const commentKeys = new Set(commentCounts.keys());
14171
14209
  const findFiles = fileFiltered.map((f) => ({
14172
14210
  ...f,
14173
14211
  fileDiff: fileDiffFor(f, f.key)
@@ -14196,12 +14234,15 @@ var review_view_default = _template("A", (input) => {
14196
14234
  working: "Working tree",
14197
14235
  dirty: "Uncommitted"
14198
14236
  }[scope];
14199
- const treeSections = shownRepos.map((r) => ({
14200
- id: r.id,
14201
- label: r.worktree,
14202
- worktree: r.worktree,
14203
- files: shownFiles.filter((f) => f.repo === r.id)
14204
- })).filter((s) => s.files.length);
14237
+ const treeSections = (() => {
14238
+ const perWorktree = /* @__PURE__ */ new Map();
14239
+ for (const r of shownRepos) perWorktree.set(r.worktree, (perWorktree.get(r.worktree) || 0) + 1);
14240
+ return shownRepos.map((r) => ({
14241
+ id: r.id,
14242
+ label: r.pr && (perWorktree.get(r.worktree) || 0) > 1 ? `${r.worktree} #${r.pr.number}` : r.worktree,
14243
+ files: shownFiles.filter((f) => f.repo === r.id)
14244
+ })).filter((s) => s.files.length);
14245
+ })();
14205
14246
  const statsFor = _resume((repo) => {
14206
14247
  let additions = 0;
14207
14248
  let deletions = 0;
@@ -14268,7 +14309,7 @@ var review_view_default = _template("A", (input) => {
14268
14309
  ...anchorFor(file, range)
14269
14310
  })
14270
14311
  });
14271
- comments = comments.concat(comment);
14312
+ comments = comments.some((c) => c.id === comment.id) ? comments : comments.concat(comment);
14272
14313
  } catch (err) {
14273
14314
  error = String(err.message || err);
14274
14315
  }
@@ -14379,11 +14420,11 @@ var review_view_default = _template("A", (input) => {
14379
14420
  else viewBox.scrollToLine(hit.key, hit.line, hit.side);
14380
14421
  }, 0);
14381
14422
  };
14382
- _html(`<div${_attr_class("_gl")}><div${_attr_class("_gq")}><div${_attr_class("_gZ")}><div${_attr_class("_gr")}><div${_attr_class("_gy")}>`);
14423
+ _html(`<div${_attr_class("_g0")}><div${_attr_class("_g5")}><div${_attr_class("_hE")}><div${_attr_class("_g6")}><div${_attr_class("_hc")}>`);
14383
14424
  _if(() => {
14384
14425
  if (input.onExit) {
14385
14426
  const $scope1_id = _scope_id();
14386
- _html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "_gs"])} title="Back to terminal (⌘/Ctrl+Shift+D)">`);
14427
+ _html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "_g7"])} title="Back to terminal (⌘/Ctrl+Shift+D)">`);
14387
14428
  icon_back_default({ size: 14 });
14388
14429
  _html(`</a>${_el_resume($scope1_id, "a", _serialize_guard($scope0_reason, 2))}`);
14389
14430
  _serialize_if($scope0_reason, 0) && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 2) && _scope_with_id($scope0_id) });
@@ -14394,7 +14435,7 @@ var review_view_default = _template("A", (input) => {
14394
14435
  _if(() => {
14395
14436
  if (comments.length) {
14396
14437
  const $scope2_id = _scope_id();
14397
- _html(`<span${_attr_class("_gt")}>`);
14438
+ _html(`<span${_attr_class("_g8")}>`);
14398
14439
  _set_serialize_reason({
14399
14440
  0: _serialize_guard($scope0_reason, 10),
14400
14441
  1: 1
@@ -14411,14 +14452,14 @@ var review_view_default = _template("A", (input) => {
14411
14452
  return 0;
14412
14453
  }
14413
14454
  }, $scope0_id, "h", 1, 1, 1, 0, 1);
14414
- _html(`</div><div${_attr_class(["_gp", "_gY"])}>`);
14455
+ _html(`</div><div${_attr_class(["_g4", "_hD"])}>`);
14415
14456
  _if(() => {
14416
14457
  if (hasFiles) {
14417
14458
  const $scope9_id = _scope_id();
14418
14459
  _html(`<button${_attr_class([
14419
14460
  treeToggle,
14420
- "_gn",
14421
- { ["_gm"]: treeOpen }
14461
+ "_g2",
14462
+ { ["_g1"]: treeOpen }
14422
14463
  ])} title=${treeOpen ? "\"Hide file tree\"" : "\"Show file tree\""}>`);
14423
14464
  icon_sidebar_default({ size: 14 });
14424
14465
  _html(`</button>${_el_resume($scope9_id, "a")}`);
@@ -14427,7 +14468,7 @@ var review_view_default = _template("A", (input) => {
14427
14468
  return 0;
14428
14469
  }
14429
14470
  }, $scope0_id, "j", 1, 1, 1, 0, 1);
14430
- _html(`<button${_attr_class([iconBtnRow, "_gn"])} title="Refresh diff"${_attr("disabled", loading)}>`);
14471
+ _html(`<button${_attr_class([iconBtnRow, "_g2"])} title="Refresh diff"${_attr("disabled", loading)}>`);
14431
14472
  _set_serialize_reason(1);
14432
14473
  const $childScope2 = _peek_scope_id();
14433
14474
  icon_refresh_default({
@@ -14440,30 +14481,30 @@ var review_view_default = _template("A", (input) => {
14440
14481
  const $scope10_id = _scope_id();
14441
14482
  _html(`<button${_attr_class([
14442
14483
  iconBtnRow,
14443
- "_gn",
14444
- "_gK"
14445
- ])}${_attr("title", `Jump to file (${shownFiles.length})`)}${_attr("aria-label", `Jump to file (${shownFiles.length} files)`)}><span${_attr_class("_gL")} aria-hidden=true>`);
14484
+ "_g2",
14485
+ "_ho"
14486
+ ])}${_attr("title", `Jump to file (${shownFiles.length})`)}${_attr("aria-label", `Jump to file (${shownFiles.length} files)`)}><span${_attr_class("_hp")} aria-hidden=true>`);
14446
14487
  icon_folder_default({
14447
14488
  size: 20,
14448
- class: "_gM"
14489
+ class: "_hq"
14449
14490
  });
14450
- _html(`<span${_attr_class("_gN")}>${_text_resume($scope10_id, "e", shownFiles.length > 99 ? "99+" : shownFiles.length)}</span></span></button>${_el_resume($scope10_id, "a")}`);
14491
+ _html(`<span${_attr_class("_hr")}>${_text_resume($scope10_id, "e", shownFiles.length > 99 ? "99+" : shownFiles.length)}</span></span></button>${_el_resume($scope10_id, "a")}`);
14451
14492
  _script($scope10_id, "A41");
14452
14493
  writeScope($scope10_id, {});
14453
14494
  return 0;
14454
14495
  }
14455
14496
  }, $scope0_id, "m", 1, 1, 1, 0, 1);
14456
- _html(`<span${_attr_class("_gz")}><button${_attr_class([
14497
+ _html(`<span${_attr_class("_hd")}><button${_attr_class([
14457
14498
  iconBtnRow,
14458
- "_gn",
14459
- { ["_gm"]: !!rev }
14499
+ "_g2",
14500
+ { ["_g1"]: !!rev }
14460
14501
  ])}${_attr("title", `${compareLabel}\n${compareTitle}`)} aria-label=Compare${_attr("disabled", loading)}>`);
14461
14502
  icon_branch_default({ size: 14 });
14462
14503
  _html(`</button>${_el_resume($scope0_id, "o")}`);
14463
14504
  _attr_select_value($scope0_id, "q", rev ? `rev:${rev}` : scope, _resume(function(v) {
14464
14505
  pickCompare(v);
14465
14506
  }, "A0", $scope0_id), () => {
14466
- _html(`<select${_attr_class("_gA")} aria-label=Compare tabindex=-1${_attr("disabled", loading)}><option${_attr_option_value("committed")}>Committed</option><option${_attr_option_value("working")}>Working tree</option><option${_attr_option_value("dirty")}>Uncommitted</option>`);
14507
+ _html(`<select${_attr_class("_he")} aria-label=Compare tabindex=-1${_attr("disabled", loading)}><option${_attr_option_value("committed")}>Committed</option><option${_attr_option_value("working")}>Working tree</option><option${_attr_option_value("dirty")}>Uncommitted</option>`);
14467
14508
  _if(() => {
14468
14509
  if (commitOptions.length) {
14469
14510
  const $scope12_id = _scope_id();
@@ -14479,7 +14520,7 @@ var review_view_default = _template("A", (input) => {
14479
14520
  }, $scope0_id, "r", 1, 1, 1, 0, 1);
14480
14521
  _html("</select>");
14481
14522
  });
14482
- _html(`${_el_resume($scope0_id, "q")}</span> <div${_attr_class(["_gx", { ["_gw"]: !findOpen }])}>`);
14523
+ _html(`${_el_resume($scope0_id, "q")}</span> <div${_attr_class(["_hb", { ["_ha"]: !findOpen }])}>`);
14483
14524
  _set_serialize_reason(2);
14484
14525
  const $childScope3 = _peek_scope_id();
14485
14526
  let findFocus = diff_find_default({
@@ -14502,8 +14543,8 @@ var review_view_default = _template("A", (input) => {
14502
14543
  const $scope11_id = _scope_id();
14503
14544
  _html(`<button${_attr_class([
14504
14545
  iconBtnRow,
14505
- "_gv",
14506
- "_gn"
14546
+ "_g_",
14547
+ "_g2"
14507
14548
  ])} title="Find in review (⌘/Ctrl+F)" aria-label="Find in review"${_attr("hidden", findOpen)}>`);
14508
14549
  icon_search_default({ size: 14 });
14509
14550
  _html(`</button>${_el_resume($scope11_id, "a")}`);
@@ -14516,7 +14557,7 @@ var review_view_default = _template("A", (input) => {
14516
14557
  _if(() => {
14517
14558
  if (!repos && loading) {
14518
14559
  const $scope14_id = _scope_id();
14519
- _html(`<div${_attr_class("_gH")} aria-hidden=true><div${_attr_class(["_gD", "_gI"])}></div><div${_attr_class(["_gD", "_gJ"])}></div></div>`);
14560
+ _html(`<div${_attr_class("_hl")} aria-hidden=true><div${_attr_class(["_hh", "_hm"])}></div><div${_attr_class(["_hh", "_hn"])}></div></div>`);
14520
14561
  writeScope($scope14_id, {});
14521
14562
  return 0;
14522
14563
  }
@@ -14589,7 +14630,7 @@ var review_view_default = _template("A", (input) => {
14589
14630
  onReload: reload,
14590
14631
  loading
14591
14632
  });
14592
- _html(`</div><div${_attr_class("_gO")}>`);
14633
+ _html(`</div><div${_attr_class("_hs")}>`);
14593
14634
  _if(() => {
14594
14635
  if (error) {
14595
14636
  const $scope3_id = _scope_id();
@@ -14634,10 +14675,10 @@ var review_view_default = _template("A", (input) => {
14634
14675
  _if(() => {
14635
14676
  if (!repos && loading) {
14636
14677
  const $scope15_id = _scope_id();
14637
- _html(`<div${_attr_class("_gC")} aria-hidden=true>`);
14678
+ _html(`<div${_attr_class("_hg")} aria-hidden=true>`);
14638
14679
  forTo(2, 0, 1, () => {
14639
14680
  _scope_id();
14640
- _html(`<div${_attr_class("_gE")}><div${_attr_class(["_gD", "_gF"])}></div><div${_attr_class(["_gD", "_gG"])}></div></div>`);
14681
+ _html(`<div${_attr_class("_hi")}><div${_attr_class(["_hh", "_hj"])}></div><div${_attr_class(["_hh", "_hk"])}></div></div>`);
14641
14682
  });
14642
14683
  _html("</div>");
14643
14684
  writeScope($scope15_id, {});
@@ -14647,17 +14688,17 @@ var review_view_default = _template("A", (input) => {
14647
14688
  _if(() => {
14648
14689
  if (repos && !allFiles.length) {
14649
14690
  const $scope8_id = _scope_id();
14650
- _html(`<p${_attr_class("_cp")}>${_text_resume($scope8_id, "b", rev ? "This commit is not in any of these repos." : repoList.some((r) => r.unborn) ? "No commits yet." : scope === "dirty" ? "Nothing uncommitted." : repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base.")}</p>`);
14691
+ _html(`<p${_attr_class("_cj")}>${_text_resume($scope8_id, "b", rev ? "This commit is not in any of these repos." : repoList.some((r) => r.unborn) ? "No commits yet." : scope === "dirty" ? "Nothing uncommitted." : repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base.")}</p>`);
14651
14692
  writeScope($scope8_id, {});
14652
14693
  return 0;
14653
14694
  } else if (repos && !listFiles.length && !findState.hit) {
14654
14695
  const $scope5_id = _scope_id();
14655
- _html(`<p${_attr_class("_cp")}>${_text_resume($scope5_id, "b", findState.query.trim() ? "No matches in review." : onlyNew && !fileFilter ? "Nothing changed since your last visit." : `No files match "${fileFilter}".`)}</p>`);
14696
+ _html(`<p${_attr_class("_cj")}>${_text_resume($scope5_id, "b", findState.query.trim() ? "No matches in review." : onlyNew && !fileFilter ? "Nothing changed since your last visit." : `No files match "${fileFilter}".`)}</p>`);
14656
14697
  writeScope($scope5_id, {});
14657
14698
  return 1;
14658
14699
  }
14659
14700
  }, $scope0_id, "a2", 1, 1, 1, 0, 1);
14660
- _html(`</div></div><div${_attr_class("_gP")} data-diff-main></div>${_el_resume($scope0_id, "a3")}</div>`);
14701
+ _html(`</div></div><div${_attr_class("_ht")} data-diff-main></div>${_el_resume($scope0_id, "a3")}</div>`);
14661
14702
  _set_serialize_reason(26);
14662
14703
  const $childScope6 = _peek_scope_id();
14663
14704
  review_tree_default({
@@ -14789,36 +14830,36 @@ var review_view_default = _template("A", (input) => {
14789
14830
  d2: shownFiles,
14790
14831
  d4: shownFiles?.length,
14791
14832
  d6: commentsByFile,
14792
- dd: commitOptions,
14793
- dg: compareLabel,
14794
- dk: _serialize_if($scope0_reason, 1) && repoTabs,
14795
- dm: compareTitle,
14796
- do: fileWorktree,
14797
- dp: anchorFor,
14798
- dq: filesByKey,
14799
- dr: fileByKey,
14800
- dt: saveComment,
14801
- du: deleteRemote,
14802
- dw: removeComment,
14803
- dx: editComment,
14804
- dz: sendGate.busy,
14805
- e1: dispatch,
14806
- e4: copyMarkdown,
14807
- e5: sendTo,
14808
- e6: sendOneComment,
14809
- e7: sendDraftComment,
14810
- e8: openFind,
14811
- eb: findFocus,
14812
- ed: dockBox.home,
14813
- ee: dockBox.raf,
14814
- eg: dockFind,
14833
+ de: commitOptions,
14834
+ dh: compareLabel,
14835
+ dl: _serialize_if($scope0_reason, 1) && repoTabs,
14836
+ dn: compareTitle,
14837
+ dp: fileWorktree,
14838
+ dq: anchorFor,
14839
+ dr: filesByKey,
14840
+ ds: fileByKey,
14841
+ du: saveComment,
14842
+ dv: deleteRemote,
14843
+ dx: removeComment,
14844
+ dy: editComment,
14845
+ e0: sendGate.busy,
14846
+ e2: dispatch,
14847
+ e5: copyMarkdown,
14848
+ e6: sendTo,
14849
+ e7: sendOneComment,
14850
+ e8: sendDraftComment,
14851
+ e9: openFind,
14852
+ ec: findFocus,
14853
+ ee: dockBox.home,
14854
+ ef: dockBox.raf,
14855
+ eh: dockFind,
14815
14856
  bc: input.findOpenChange || void 0,
14816
14857
  bg: input.findTickChange || void 0,
14817
14858
  l: _existing_scope($childScope2),
14818
14859
  t: _existing_scope($childScope3),
14819
14860
  x: _existing_scope($childScope4),
14820
- el: $error__closures,
14821
- eo: $scope__closures,
14861
+ em: $error__closures,
14862
+ ep: $scope__closures,
14822
14863
  a4: _existing_scope($childScope6),
14823
14864
  a5: _existing_scope($childScope7)
14824
14865
  });
@@ -14937,10 +14978,10 @@ function parseInvite(text) {
14937
14978
  }
14938
14979
  //#endregion
14939
14980
  //#region src/tags/manage-workspace.css.ts
14940
- var procCmd = "_f8 _c2";
14941
- var skillRow = "_f_ _c0";
14942
- var skillName = "_gb _f8 _c2";
14943
- var skillDesc = "_ge _c3";
14981
+ var procCmd = "_gM _c2";
14982
+ var skillRow = "_gO _c0";
14983
+ var skillName = "_gQ _gM _c2";
14984
+ var skillDesc = "_gT _c3";
14944
14985
  //#endregion
14945
14986
  //#region src/tags/icons/icon-archive.marko
14946
14987
  var icon_archive_default = _template("Q", (input) => {
@@ -14975,10 +15016,10 @@ var icon_trash_default = _template("wb", (input) => {
14975
15016
  });
14976
15017
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
14977
15018
  });
14978
- var resultRow = "_hV _I";
14979
- var resultBranch = "_hW _c7 _X _W _3 _l";
14980
- var urlAction = "_hX _c7 _X _W _c8";
14981
- var addedRow = "_h8 _c0";
15019
+ var resultRow = "_hW _I";
15020
+ var resultBranch = "_hX _c7 _X _W _3 _l";
15021
+ var urlAction = "_hY _c7 _X _W _c8";
15022
+ var addedRow = "_h9 _c0";
14982
15023
  //#endregion
14983
15024
  //#region src/tags/branch-pick.marko
14984
15025
  var branch_pick_default = _template("f", (input) => {
@@ -14991,11 +15032,11 @@ var branch_pick_default = _template("f", (input) => {
14991
15032
  let branchFilter = "";
14992
15033
  let reloadTick = 0;
14993
15034
  let refreshing = false;
14994
- _html(`<div${_attr_class("_hY")}>`);
15035
+ _html(`<div${_attr_class("_hZ")}>`);
14995
15036
  _if(() => {
14996
15037
  {
14997
15038
  const $scope4_id = _scope_id();
14998
- _html(`<p${_attr_class("_co")}><span${_attr_class("_G")}></span> Loading branches…</p>`);
15039
+ _html(`<p${_attr_class("_ci")}><span${_attr_class("_G")}></span> Loading branches…</p>`);
14999
15040
  writeScope($scope4_id, {});
15000
15041
  return 0;
15001
15042
  }
@@ -15098,10 +15139,10 @@ var repo_picker_default = _template("w", (input$2) => {
15098
15139
  }, $scope0_id) };
15099
15140
  const addedList = sheet ? input$2.added || [] : [];
15100
15141
  const hasBody = !!(pasted || results.length || filter && (!catalog || !pasted) || ssoPending.length || sheet && !!input$2.added);
15101
- _html(`<div${_attr_class(["_cz", {
15102
- ["_cA"]: !input$2.open,
15103
- ["_cB"]: input$2.pinned
15104
- }])}><label${_attr_class(["_0", "_cC"])}>`);
15142
+ _html(`<div${_attr_class(["_cs", {
15143
+ ["_ct"]: !input$2.open,
15144
+ ["_cu"]: input$2.pinned
15145
+ }])}><label${_attr_class(["_0", "_cv"])}>`);
15105
15146
  icon_search_default({
15106
15147
  size: 14,
15107
15148
  class: "_1"
@@ -15113,14 +15154,14 @@ var repo_picker_default = _template("w", (input$2) => {
15113
15154
  }, "w0", $scope0_id))}${_attr_class([
15114
15155
  "_Y",
15115
15156
  "_2",
15116
- "_cD"
15117
- ])} placeholder="Add a repo…" aria-label="Add a repo"${_attr("disabled", input$2.disabled)}>${_el_resume($scope0_id, "d")}</label><button${_attr_class([iconBtnRow, "_cF"])} type=button title="Close search" aria-label="Close search"${_attr("hidden", !input$2.open)}>`);
15157
+ "_cw"
15158
+ ])} placeholder="Add a repo…" aria-label="Add a repo"${_attr("disabled", input$2.disabled)}>${_el_resume($scope0_id, "d")}</label><button${_attr_class([iconBtnRow, "_cy"])} type=button title="Close search" aria-label="Close search"${_attr("hidden", !input$2.open)}>`);
15118
15159
  icon_xmark_default({ size: 14 });
15119
15160
  _html(`</button>${_el_resume($scope0_id, "e")}<div${_attr_class(pop$1)}${_attr("hidden", !hasBody || !input$2.open && !input$2.pinned)}>`);
15120
15161
  _if(() => {
15121
15162
  if (ssoPending.length) {
15122
15163
  const $scope11_id = _scope_id();
15123
- _html(`<div${_attr_class("_hR")}>`);
15164
+ _html(`<div${_attr_class("_hS")}>`);
15124
15165
  ssoBlock.content({});
15125
15166
  _html("</div>");
15126
15167
  writeScope($scope11_id, {});
@@ -15130,12 +15171,12 @@ var repo_picker_default = _template("w", (input$2) => {
15130
15171
  _if(() => {
15131
15172
  if (pasted) {
15132
15173
  const $scope1_id = _scope_id();
15133
- _html(`<ul${_attr_class("_hS")}><li><div${_attr_class(["_hU", "_hT"])}><button${_attr_class(resultRow)}${pasteWillFork ? _attr("title", `Fork ${pasted} to your account and add the fork`) : _attr("title", `Add ${pasted} as-is (pushes go to that repo)`)}>`);
15174
+ _html(`<ul${_attr_class("_hT")}><li><div${_attr_class(["_hV", "_hU"])}><button${_attr_class(resultRow)}${pasteWillFork ? _attr("title", `Fork ${pasted} to your account and add the fork`) : _attr("title", `Add ${pasted} as-is (pushes go to that repo)`)}>`);
15134
15175
  icon_plus_default({
15135
15176
  size: 12,
15136
- class: "_h0"
15177
+ class: "_h1"
15137
15178
  });
15138
- _html(`<span${_attr_class("_h1")}>${_text_resume($scope1_id, "f", repoLabel$1(pasted))}</span></button>${_el_resume($scope1_id, "c")}`);
15179
+ _html(`<span${_attr_class("_h2")}>${_text_resume($scope1_id, "f", repoLabel$1(pasted))}</span></button>${_el_resume($scope1_id, "c")}`);
15139
15180
  _if(() => {
15140
15181
  if (pastedForkable) {
15141
15182
  const $scope10_id = _scope_id();
@@ -15186,7 +15227,7 @@ var repo_picker_default = _template("w", (input$2) => {
15186
15227
  return 0;
15187
15228
  } else if (filter && !catalog) {
15188
15229
  const $scope12_id = _scope_id();
15189
- _html(`<p${_attr_class("_co")}>Loading repos…</p>`);
15230
+ _html(`<p${_attr_class("_ci")}>Loading repos…</p>`);
15190
15231
  writeScope($scope12_id, {});
15191
15232
  return 1;
15192
15233
  }
@@ -15194,15 +15235,15 @@ var repo_picker_default = _template("w", (input$2) => {
15194
15235
  _if(() => {
15195
15236
  if (results.length) {
15196
15237
  const $scope3_id = _scope_id();
15197
- _html(`<ul${_attr_class("_hS")}>`);
15238
+ _html(`<ul${_attr_class("_hT")}>`);
15198
15239
  _for_of(results, (repo, i) => {
15199
15240
  const $scope4_id = _scope_id();
15200
- _html(`<li><div${_attr_class(["_hU", { ["_hT"]: i === highlight }])}><button${_attr_class(resultRow)}>`);
15241
+ _html(`<li><div${_attr_class(["_hV", { ["_hU"]: i === highlight }])}><button${_attr_class(resultRow)}>`);
15201
15242
  icon_plus_default({
15202
15243
  size: 12,
15203
- class: "_h0"
15244
+ class: "_h1"
15204
15245
  });
15205
- _html(`<span${_attr_class("_h1")}>${_text_resume($scope4_id, "e", repoLabel$1(repo.nameWithOwner))}</span></button>${_el_resume($scope4_id, "b")}<button${_attr_class([resultBranch, { ["_c6"]: branchesFor === repo.nameWithOwner }])}${_attr("title", `Pick a base branch for ${repo.nameWithOwner}`)}${_attr("aria-label", `Pick a base branch for ${repo.nameWithOwner}`)}>`);
15246
+ _html(`<span${_attr_class("_h2")}>${_text_resume($scope4_id, "e", repoLabel$1(repo.nameWithOwner))}</span></button>${_el_resume($scope4_id, "b")}<button${_attr_class([resultBranch, { ["_c6"]: branchesFor === repo.nameWithOwner }])}${_attr("title", `Pick a base branch for ${repo.nameWithOwner}`)}${_attr("aria-label", `Pick a base branch for ${repo.nameWithOwner}`)}>`);
15206
15247
  icon_branch_default({ size: 12 });
15207
15248
  _html(`</button>${_el_resume($scope4_id, "f")}</div>${_el_resume($scope4_id, "a")}`);
15208
15249
  _if(() => {
@@ -15237,7 +15278,7 @@ var repo_picker_default = _template("w", (input$2) => {
15237
15278
  return 0;
15238
15279
  } else if (filter && catalog && !pasted) {
15239
15280
  const $scope8_id = _scope_id();
15240
- _html(`<p${_attr_class("_co")}>No repos match "${_text_resume($scope8_id, "b", filter, 2)}". Paste a clone URL to add any repo.</p>`);
15281
+ _html(`<p${_attr_class("_ci")}>No repos match "${_text_resume($scope8_id, "b", filter, 2)}". Paste a clone URL to add any repo.</p>`);
15241
15282
  writeScope($scope8_id, {});
15242
15283
  return 1;
15243
15284
  }
@@ -15245,7 +15286,7 @@ var repo_picker_default = _template("w", (input$2) => {
15245
15286
  _if(() => {
15246
15287
  if (sheet && input$2.added) {
15247
15288
  const $scope6_id = _scope_id();
15248
- _html(`<div${_attr_class("_h6")}><p${_attr_class("_h7")}>Repos <span${_attr_class(sectionCount$1)}>${_text_resume($scope6_id, "d", addedList.length, $sg__input_added)}</span></p><ul${_attr_class(list$2)}>`);
15289
+ _html(`<div${_attr_class("_h7")}><p${_attr_class("_h8")}>Repos <span${_attr_class(sectionCount$1)}>${_text_resume($scope6_id, "d", addedList.length, $sg__input_added)}</span></p><ul${_attr_class(list$2)}>`);
15249
15290
  _for_of(addedList, (repo) => {
15250
15291
  const $scope15_id = _scope_id();
15251
15292
  _html(`<li${_attr_class([addedRow, { ["_c5"]: repo.pending }])}>`);
@@ -15259,13 +15300,13 @@ var repo_picker_default = _template("w", (input$2) => {
15259
15300
  const $scope18_id = _scope_id();
15260
15301
  icon_check_default({
15261
15302
  size: 12,
15262
- class: "_h0"
15303
+ class: "_h1"
15263
15304
  });
15264
15305
  $si__input_added && writeScope($scope18_id, {});
15265
15306
  return 1;
15266
15307
  }
15267
15308
  }, $scope15_id, "b", $sg__input_added, $sg__input_added, $sg__input_added, 0, 1);
15268
- _html(`<span${_attr_class("_h1")}>${_text_resume($scope15_id, "d", repoLabel$1(repo.name), $sg__input_added)}</span>`);
15309
+ _html(`<span${_attr_class("_h2")}>${_text_resume($scope15_id, "d", repoLabel$1(repo.name), $sg__input_added)}</span>`);
15269
15310
  _if(() => {
15270
15311
  if (repo.baseBranch) {
15271
15312
  const $scope16_id = _scope_id();
@@ -15628,7 +15669,7 @@ var manage_workspace_default = _template("p", (input) => {
15628
15669
  _resume_branch($scope6_id);
15629
15670
  }, $scope0_id) })
15630
15671
  });
15631
- _html(`<div${_attr_class("_eh")}><section${_attr_class("_cd")}><div${_attr_class("_ce")}><h2${_attr_class("_cr")}>Details</h2></div><div${_attr_class(list$2)}><div${_attr_class(flatCardRow)}><span${_attr_class("_gi")}>Name</span><span${_attr_class(["_gj", "_gk"])}>${_text_resume($scope0_id, "m", ws.name)}</span>`);
15672
+ _html(`<div${_attr_class("_eh")}><section${_attr_class("_b8")}><div${_attr_class("_b9")}><h2${_attr_class("_cl")}>Details</h2></div><div${_attr_class(list$2)}><div${_attr_class(flatCardRow)}><span${_attr_class("_gX")}>Name</span><span${_attr_class(["_gY", "_gZ"])}>${_text_resume($scope0_id, "m", ws.name)}</span>`);
15632
15673
  _if(() => {
15633
15674
  if (ws.status !== "active") {
15634
15675
  const $scope23_id = _scope_id();
@@ -15637,8 +15678,8 @@ var manage_workspace_default = _template("p", (input) => {
15637
15678
  return 0;
15638
15679
  }
15639
15680
  }, $scope0_id, "n", 1, 1, 1, 0, 1);
15640
- _html(`</div><div${_attr_class(flatCardRow)}><span${_attr_class("_gi")}>Path</span><span${_attr_class([
15641
- "_gj",
15681
+ _html(`</div><div${_attr_class(flatCardRow)}><span${_attr_class("_gX")}>Path</span><span${_attr_class([
15682
+ "_gY",
15642
15683
  "_y",
15643
15684
  "_ba"
15644
15685
  ])}${_attr("title", ws.display_path || ws.path)}><bdi>${_text_resume($scope0_id, "r", ws.display_path || ws.path)}</bdi></span>${_el_resume($scope0_id, "q")}<button type=button${_attr_class(iconBtnXs)} title=${copiedFact === "path" ? "Copied" : "\"Copy path\""} aria-label="Copy path">`);
@@ -15655,7 +15696,7 @@ var manage_workspace_default = _template("p", (input) => {
15655
15696
  return 1;
15656
15697
  }
15657
15698
  }, $scope0_id, "s", 1, 1, 1, "</button>", 1);
15658
- _html(`</div><div${_attr_class(flatCardRow)}><span${_attr_class("_gi")}>Branch</span><span${_attr_class(["_gj", "_y"])}${_attr("title", ws.branch)}>${_text_resume($scope0_id, "w", ws.branch)}</span>${_el_resume($scope0_id, "v")}<button type=button${_attr_class(iconBtnXs)} title=${copiedFact === "branch" ? "Copied" : "\"Copy branch\""} aria-label="Copy branch">`);
15699
+ _html(`</div><div${_attr_class(flatCardRow)}><span${_attr_class("_gX")}>Branch</span><span${_attr_class(["_gY", "_y"])}${_attr("title", ws.branch)}>${_text_resume($scope0_id, "w", ws.branch)}</span>${_el_resume($scope0_id, "v")}<button type=button${_attr_class(iconBtnXs)} title=${copiedFact === "branch" ? "Copied" : "\"Copy branch\""} aria-label="Copy branch">`);
15659
15700
  _if(() => {
15660
15701
  if (copiedFact === "branch") {
15661
15702
  const $scope26_id = _scope_id();
@@ -15693,12 +15734,12 @@ var manage_workspace_default = _template("p", (input) => {
15693
15734
  _if(() => {
15694
15735
  if (pendingAction && actionStep) {
15695
15736
  const $scope10_id = _scope_id();
15696
- _html(`<p${_attr_class("_cc")}><span${_attr_class("_G")}></span>${_text_resume($scope10_id, "c", actionStep)}</p>`);
15737
+ _html(`<p${_attr_class("_b7")}><span${_attr_class("_G")}></span>${_text_resume($scope10_id, "c", actionStep)}</p>`);
15697
15738
  writeScope($scope10_id, {});
15698
15739
  return 0;
15699
15740
  }
15700
15741
  }, $scope0_id, "z", 1, 1, 1, 0, 1);
15701
- _html(`<section${_attr_class("_cd")}><div${_attr_class("_ce")}><h2${_attr_class("_cr")}>Repos</h2><span${_attr_class(sectionCount$1)}>${_text_resume($scope0_id, "a4", ws.repos.length)}</span><div${_attr_class("_z")}></div><button${_attr_class([iconBtnRow, "_gh"])} title="Add repo" aria-label="Add repo"${_attr("hidden", addingRepo)}>`);
15742
+ _html(`<section${_attr_class("_b8")}><div${_attr_class("_b9")}><h2${_attr_class("_cl")}>Repos</h2><span${_attr_class(sectionCount$1)}>${_text_resume($scope0_id, "a4", ws.repos.length)}</span><div${_attr_class("_z")}></div><button${_attr_class([iconBtnRow, "_gW"])} title="Add repo" aria-label="Add repo"${_attr("hidden", addingRepo)}>`);
15702
15743
  icon_plus_default({ size: 16 });
15703
15744
  _html(`</button>${_el_resume($scope0_id, "a6")}`);
15704
15745
  _set_serialize_reason(34);
@@ -15761,7 +15802,7 @@ var manage_workspace_default = _template("p", (input) => {
15761
15802
  const $childScope5 = _peek_scope_id();
15762
15803
  arm_button_default({
15763
15804
  class: [
15764
- "_cn",
15805
+ "_ch",
15765
15806
  "_7",
15766
15807
  "_8"
15767
15808
  ],
@@ -15794,14 +15835,14 @@ var manage_workspace_default = _template("p", (input) => {
15794
15835
  _html(`<li${_attr_class([
15795
15836
  "_c0",
15796
15837
  "_c1",
15797
- "_ch"
15798
- ])}><span${_attr_class("_G")}></span><span${_attr_class("_cm")}>Adding ${_text_resume($scope31_id, "d", name, 2)}…</span></li>`);
15838
+ "_cb"
15839
+ ])}><span${_attr_class("_G")}></span><span${_attr_class("_cg")}>Adding ${_text_resume($scope31_id, "d", name, 2)}…</span></li>`);
15799
15840
  writeScope($scope31_id, {});
15800
15841
  }, (n) => n, $scope0_id, "ae", 1, 1, 1, 0, 1);
15801
15842
  _if(() => {
15802
15843
  if (!ws.repos.length && !busy.size) {
15803
15844
  const $scope32_id = _scope_id();
15804
- _html(`<li${_attr_class(["_c0", "_c1"])}><span${_attr_class("_cm")}>No repos yet. Add one to start.</span></li>`);
15845
+ _html(`<li${_attr_class(["_c0", "_c1"])}><span${_attr_class("_cg")}>No repos yet. Add one to start.</span></li>`);
15805
15846
  writeScope($scope32_id, {});
15806
15847
  return 0;
15807
15848
  }
@@ -15811,7 +15852,7 @@ var manage_workspace_default = _template("p", (input) => {
15811
15852
  _if(() => {
15812
15853
  if (running.length) {
15813
15854
  const $scope15_id = _scope_id();
15814
- _html(`<section${_attr_class("_cd")}><div${_attr_class("_ce")}><h2${_attr_class("_cr")}>Running</h2><span${_attr_class(sectionCount$1)}>${_text_resume($scope15_id, "e", running.length)}</span></div><ul${_attr_class(list$2)}>`);
15855
+ _html(`<section${_attr_class("_b8")}><div${_attr_class("_b9")}><h2${_attr_class("_cl")}>Running</h2><span${_attr_class(sectionCount$1)}>${_text_resume($scope15_id, "e", running.length)}</span></div><ul${_attr_class(list$2)}>`);
15815
15856
  _for_of(running, (p) => {
15816
15857
  const $scope16_id = _scope_id();
15817
15858
  _html(`<li${_attr_class("_c0")}${_attr("title", `${p.cmd} ${p.args}`.trim())}><span${_attr_class(["_y", procCmd])}>${_text_resume($scope16_id, "c", p.cmd)}</span><span${_attr_class(["_y", "_c3"])}>${_text_resume($scope16_id, "e", p.args)}</span><span${_attr_class("_c4")}>`);
@@ -15821,10 +15862,10 @@ var manage_workspace_default = _template("p", (input) => {
15821
15862
  _script($scope33_id, "p28");
15822
15863
  writeScope($scope33_id, { d: port });
15823
15864
  }, (x) => String(x), $scope16_id, "g", 1, 1, 1, 0, 1);
15824
- _html(`<span${_attr_class(["_y", "_f9"])}>${_text_resume($scope16_id, "i", p.pid)}</span><button${_attr_class([
15825
- "_cn",
15865
+ _html(`<span${_attr_class(["_y", "_gN"])}>${_text_resume($scope16_id, "i", p.pid)}</span><button${_attr_class([
15866
+ "_ch",
15826
15867
  "_7",
15827
- "_gg"
15868
+ "_gV"
15828
15869
  ])} type=button${_attr("title", `Kill process ${p.pid}`)}${_attr("aria-label", `Kill process ${p.pid}`)}>`);
15829
15870
  icon_xmark_default({ size: 14 });
15830
15871
  _html(`</button>${_el_resume($scope16_id, "j")}</span></li>${_el_resume($scope16_id, "a")}`);
@@ -15849,18 +15890,18 @@ var manage_workspace_default = _template("p", (input) => {
15849
15890
  _if(() => {
15850
15891
  if (allSkills.length) {
15851
15892
  const $scope2_id = _scope_id();
15852
- _html(`<section${_attr_class("_cd")}><div${_attr_class("_ce")}><h2${_attr_class("_cr")}>Skills</h2><span${_attr_class(sectionCount$1)}>${_text_resume($scope2_id, "e", wsSkills.length)}/${_text_resume($scope2_id, "f", allSkills.length, 2)}</span></div><ul${_attr_class([list$2, "_cZ"])}>`);
15893
+ _html(`<section${_attr_class("_b8")}><div${_attr_class("_b9")}><h2${_attr_class("_cl")}>Skills</h2><span${_attr_class(sectionCount$1)}>${_text_resume($scope2_id, "e", wsSkills.length)}/${_text_resume($scope2_id, "f", allSkills.length, 2)}</span></div><ul${_attr_class([list$2, "_cZ"])}>`);
15853
15894
  _for_of(allSkills, ({ s, linked }) => {
15854
15895
  const $scope3_id = _scope_id();
15855
15896
  const isBusy = skillBusy.has(s.id);
15856
- _html(`<li${_attr_class([skillRow, { ["_ga"]: !linked }])}><span${_attr_class("_gc")}><span${_attr_class(["_y", skillName])}>${_text_resume($scope3_id, "d", s.name)}</span>`);
15897
+ _html(`<li${_attr_class([skillRow, { ["_gP"]: !linked }])}><span${_attr_class("_gR")}><span${_attr_class(["_y", skillName])}>${_text_resume($scope3_id, "d", s.name)}</span>`);
15857
15898
  _if(() => {
15858
15899
  if (s.worktree && !s.broken) {
15859
15900
  const $scope34_id = _scope_id();
15860
15901
  _html(`<span${_attr_class([
15861
15902
  "_N",
15862
15903
  "_y",
15863
- "_gd"
15904
+ "_gS"
15864
15905
  ])}${linked ? _attr("title", `Linked from ${s.worktree}/ in this workspace`) : _attr("title", `Ships in ${s.worktree}/ — not linked into this workspace yet`)}>${_text_resume($scope34_id, "b", s.worktree)}/</span>${_el_resume($scope34_id, "a")}`);
15865
15906
  writeScope($scope34_id, {});
15866
15907
  return 0;
@@ -15914,10 +15955,10 @@ var manage_workspace_default = _template("p", (input) => {
15914
15955
  const $childScope6 = _peek_scope_id();
15915
15956
  arm_button_default({
15916
15957
  class: [
15917
- "_cn",
15958
+ "_ch",
15918
15959
  "_7",
15919
15960
  "_8",
15920
- "_gf"
15961
+ "_gU"
15921
15962
  ],
15922
15963
  disabled: isBusy,
15923
15964
  busy: isBusy,
@@ -16027,10 +16068,10 @@ var manage_workspace_default = _template("p", (input) => {
16027
16068
  });
16028
16069
  _resume_branch($scope0_id);
16029
16070
  });
16030
- var curRow = "_fz _c0";
16031
- var archived = "_fE _cd";
16032
- var archivedHint = "_fF _W";
16033
- var archivedRow = "_fG _cY _cW";
16071
+ var curRow = "_gd _c0";
16072
+ var archived = "_gi _b8";
16073
+ var archivedHint = "_gj _W";
16074
+ var archivedRow = "_gk _cY _cW";
16034
16075
  //#endregion
16035
16076
  //#region src/tags/icons/icon-group.marko
16036
16077
  var icon_group_default = _template("jb", (input) => {
@@ -16050,8 +16091,8 @@ var icon_group_default = _template("jb", (input) => {
16050
16091
  });
16051
16092
  //#endregion
16052
16093
  //#region src/tags/join-dialog.css.ts
16053
- var dlg = "_iP _hn";
16054
- var hint = "_iQ _W";
16094
+ var dlg = "_il _fi";
16095
+ var hint = "_im _W";
16055
16096
  //#endregion
16056
16097
  //#region src/tags/join-dialog.marko
16057
16098
  var api$3;
@@ -16180,26 +16221,26 @@ var join_dialog_default = _template("m", (input) => {
16180
16221
  content: _content("m12", () => {
16181
16222
  _scope_reason();
16182
16223
  const $scope1_id = _scope_id();
16183
- _html(`<h2${_attr_class("_ho")}${_attr("id", titleId)}>Join a workspace</h2><p${_attr_class(hint)}>Paste an invite: the same repos, on your own lane of their branch.</p><textarea${_attr_class([
16224
+ _html(`<h2${_attr_class("_fj")}${_attr("id", titleId)}>Join a workspace</h2><p${_attr_class(hint)}>Paste an invite: the same repos, on your own lane of their branch.</p><textarea${_attr_class([
16184
16225
  "_Y",
16185
16226
  "_y",
16186
- "_iS"
16227
+ "_io"
16187
16228
  ])} placeholder="{ &#34;name&#34;: …, &#34;branch&#34;: …, &#34;repos&#34;: [&#34;owner/name&#34;, …] }" aria-label="Workspace invite" rows=6 autocomplete=off spellcheck=false${_attr("disabled", busy)} autofocus>${_attr_textarea_value($scope1_id, "c", invite, setInvite)}</textarea>${_el_resume($scope1_id, "c")}`);
16188
16229
  _if(() => {
16189
16230
  if (parsed.error) {
16190
16231
  const $scope8_id = _scope_id();
16191
- _html(`<p${_attr_class([hint, "_iR"])}>${_text_resume($scope8_id, "b", parsed.error)}</p>`);
16232
+ _html(`<p${_attr_class([hint, "_in"])}>${_text_resume($scope8_id, "b", parsed.error)}</p>`);
16192
16233
  _subscribe($parsed_error__closures, writeScope($scope8_id, { Cag: 1 }));
16193
16234
  return 0;
16194
16235
  } else if (parsed.ok) {
16195
16236
  const $scope3_id = _scope_id();
16196
- _html(`<ul${_attr_class("_iT")}>`);
16237
+ _html(`<ul${_attr_class("_ip")}>`);
16197
16238
  _for_of(parsed.ok.repos, (fullName) => {
16198
16239
  const $scope9_id = _scope_id();
16199
- _html(`<li${_attr_class("_iU")}><span${_attr_class("_iV")}>${_text_resume($scope9_id, "c", repoLabel$1(fullName))}</span></li>`);
16240
+ _html(`<li${_attr_class("_iq")}><span${_attr_class("_ir")}>${_text_resume($scope9_id, "c", repoLabel$1(fullName))}</span></li>`);
16200
16241
  writeScope($scope9_id, {});
16201
16242
  }, (r) => r, $scope3_id, "a", 1, 1, 1, "</ul>", 1);
16202
- _html(`<p${_attr_class(hint)}>Your own lane of <span${_attr_class("_y")}>${_text_resume($scope3_id, "d", parsed.ok.branch)}</span> in each; PRs target theirs.</p><label${_attr_class("_iW")}><span${_attr_class("_cr")}>Name</span><input${_attr_input_value($scope3_id, "g", name, _resume((_new_name) => {
16243
+ _html(`<p${_attr_class(hint)}>Your own lane of <span${_attr_class("_y")}>${_text_resume($scope3_id, "d", parsed.ok.branch)}</span> in each; PRs target theirs.</p><label${_attr_class("_is")}><span${_attr_class("_cl")}>Name</span><input${_attr_input_value($scope3_id, "g", name, _resume((_new_name) => {
16203
16244
  name = _new_name;
16204
16245
  }, "m1", $scope3_id))}${_attr_class("_Y")}${_attr("placeholder", parsed.ok.name)}${_attr("disabled", busy)}>${_el_resume($scope3_id, "g")}</label>`);
16205
16246
  _script($scope3_id, "m8");
@@ -16236,10 +16277,10 @@ var join_dialog_default = _template("m", (input) => {
16236
16277
  _if(() => {
16237
16278
  if (busy && steps$2.length) {
16238
16279
  const $scope6_id = _scope_id();
16239
- _html(`<ul${_attr_class("_iX")}>`);
16280
+ _html(`<ul${_attr_class("_it")}>`);
16240
16281
  _for_of(steps$2, (step$2, i) => {
16241
16282
  const $scope7_id = _scope_id();
16242
- _html(`<li${_attr_class(["_iZ", { ["_iY"]: i === steps$2.length - 1 }])}>`);
16283
+ _html(`<li${_attr_class(["_iv", { ["_iu"]: i === steps$2.length - 1 }])}>`);
16243
16284
  _if(() => {
16244
16285
  if (i === steps$2.length - 1) {
16245
16286
  const $scope10_id = _scope_id();
@@ -16248,7 +16289,7 @@ var join_dialog_default = _template("m", (input) => {
16248
16289
  return 0;
16249
16290
  } else {
16250
16291
  const $scope11_id = _scope_id();
16251
- _html(`<span${_attr_class("_i0")}>`);
16292
+ _html(`<span${_attr_class("_iw")}>`);
16252
16293
  icon_check_default({ size: 14 });
16253
16294
  _html("</span>");
16254
16295
  writeScope($scope11_id, {});
@@ -16451,9 +16492,9 @@ var new_workspace_default = _template("s", (input) => {
16451
16492
  return 0;
16452
16493
  }
16453
16494
  }, $scope0_id, "f", 1, 1, 1, 0, 1);
16454
- _html(`<label${_attr_class("_fu")}><span${_attr_class("_cr")}>Name</span><input${_attr_input_value($scope0_id, "i", name, _resume((_new_name) => {
16495
+ _html(`<label${_attr_class("_f9")}><span${_attr_class("_cl")}>Name</span><input${_attr_input_value($scope0_id, "i", name, _resume((_new_name) => {
16455
16496
  name = _new_name;
16456
- }, "s0", $scope0_id))}${_attr_class(inputLg)} placeholder=my-feature${_attr("disabled", busy)} autofocus>${_el_resume($scope0_id, "i")}</label><section${_attr_class("_cd")}><div${_attr_class("_fx")}><h2${_attr_class("_cr")}>Repos</h2><span${_attr_class(sectionCount$1)}>${_text_resume($scope0_id, "n", selected.length)}</span><div${_attr_class("_z")}></div><button type=button${_attr_class([iconBtnRow, "_fw"])} title="Add repo" aria-label="Add repo"${_attr("hidden", addingRepo)}${_attr("disabled", busy)}>`);
16497
+ }, "s0", $scope0_id))}${_attr_class(inputLg)} placeholder=my-feature${_attr("disabled", busy)} autofocus>${_el_resume($scope0_id, "i")}</label><section${_attr_class("_b8")}><div${_attr_class("_gb")}><h2${_attr_class("_cl")}>Repos</h2><span${_attr_class(sectionCount$1)}>${_text_resume($scope0_id, "n", selected.length)}</span><div${_attr_class("_z")}></div><button type=button${_attr_class([iconBtnRow, "_ga"])} title="Add repo" aria-label="Add repo"${_attr("hidden", addingRepo)}${_attr("disabled", busy)}>`);
16457
16498
  icon_plus_default({ size: 16 });
16458
16499
  _html(`</button>${_el_resume($scope0_id, "p")}`);
16459
16500
  _set_serialize_reason(34);
@@ -16491,7 +16532,7 @@ var new_workspace_default = _template("s", (input) => {
16491
16532
  _html(`</button>${_el_resume($scope0_id, "t")}</div><ul${_attr_class(list$2)}>`);
16492
16533
  _for_of(selected, (repo) => {
16493
16534
  const $scope3_id = _scope_id();
16494
- _html(`<li${_attr_class("_fy")}><div${_attr_class(curRow)}><span${_attr_class("_c2")}>${_text_resume($scope3_id, "d", repoLabel$1(repo.fullName))}</span><span${_attr_class("_c4")}>`);
16535
+ _html(`<li${_attr_class("_gc")}><div${_attr_class(curRow)}><span${_attr_class("_c2")}>${_text_resume($scope3_id, "d", repoLabel$1(repo.fullName))}</span><span${_attr_class("_c4")}>`);
16495
16536
  _if(() => {
16496
16537
  if (repo.fork !== void 0) {
16497
16538
  const $scope4_id = _scope_id();
@@ -16531,7 +16572,7 @@ var new_workspace_default = _template("s", (input) => {
16531
16572
  _if(() => {
16532
16573
  if (branchesFor === repo.fullName) {
16533
16574
  const $scope9_id = _scope_id();
16534
- _html(`<div${_attr_class("_fA")}>`);
16575
+ _html(`<div${_attr_class("_ge")}>`);
16535
16576
  const $childScope4 = _peek_scope_id();
16536
16577
  branch_pick_default({
16537
16578
  repo: repo.fullName,
@@ -16569,10 +16610,10 @@ var new_workspace_default = _template("s", (input) => {
16569
16610
  _if(() => {
16570
16611
  if (busy && steps.length) {
16571
16612
  const $scope10_id = _scope_id();
16572
- _html(`<ul${_attr_class("_fB")}>`);
16613
+ _html(`<ul${_attr_class("_gf")}>`);
16573
16614
  _for_of(steps, (step, i) => {
16574
16615
  const $scope11_id = _scope_id();
16575
- _html(`<li${_attr_class(["_fH", { ["_fC"]: i === steps.length - 1 }])}>`);
16616
+ _html(`<li${_attr_class(["_gl", { ["_gg"]: i === steps.length - 1 }])}>`);
16576
16617
  _if(() => {
16577
16618
  if (i === steps.length - 1) {
16578
16619
  const $scope15_id = _scope_id();
@@ -16581,7 +16622,7 @@ var new_workspace_default = _template("s", (input) => {
16581
16622
  return 0;
16582
16623
  } else {
16583
16624
  const $scope16_id = _scope_id();
16584
- _html(`<span${_attr_class("_fD")}>`);
16625
+ _html(`<span${_attr_class("_gh")}>`);
16585
16626
  icon_check_default({ size: 14 });
16586
16627
  _html("</span>");
16587
16628
  writeScope($scope16_id, {});
@@ -16595,18 +16636,18 @@ var new_workspace_default = _template("s", (input) => {
16595
16636
  return 0;
16596
16637
  }
16597
16638
  }, $scope0_id, "y", 1, 1, 1, 0, 1);
16598
- _html(`<div${_attr_class("_fs")}><button type=button${_attr_class([
16639
+ _html(`<div${_attr_class("_f7")}><button type=button${_attr_class([
16599
16640
  btnLg,
16600
16641
  "_r",
16601
- "_ft"
16642
+ "_f8"
16602
16643
  ])}${_attr("disabled", busy || !!restoring || !name.trim())}>${_text_resume($scope0_id, "a1", busy ? "Creating…" : "Create workspace")}</button>${_el_resume($scope0_id, "a0")}</div></div><div${_attr_class("_eh")}>`);
16603
16644
  _if(() => {
16604
16645
  if (archived$1.length) {
16605
16646
  const $scope5_id = _scope_id();
16606
- _html(`<section${_attr_class(archived)}><div${_attr_class("_fx")}><h2${_attr_class("_cr")}>Archived</h2><span${_attr_class(sectionCount$1)}>${_text_resume($scope5_id, "e", archived$1.length, $sg__input_workspaces)}</span></div><p${_attr_class(archivedHint)}>Restore an archived workspace instead of creating a new one.</p><ul${_attr_class(list$2)}>`);
16647
+ _html(`<section${_attr_class(archived)}><div${_attr_class("_gb")}><h2${_attr_class("_cl")}>Archived</h2><span${_attr_class(sectionCount$1)}>${_text_resume($scope5_id, "e", archived$1.length, $sg__input_workspaces)}</span></div><p${_attr_class(archivedHint)}>Restore an archived workspace instead of creating a new one.</p><ul${_attr_class(list$2)}>`);
16607
16648
  _for_of(archived$1, (ws) => {
16608
16649
  const $scope6_id = _scope_id();
16609
- _html(`<li${_attr_class(archivedRow)}><div${_attr_class("_cj")}><span${_attr_class("_ck")}>${_text_resume($scope6_id, "d", ws.name, $sg__input_workspaces)}</span><span${_attr_class([metaTrunc, "_y"])}${_attr("title", ws.display_path || ws.path)}>${_text_resume($scope6_id, "f", ws.display_path || ws.path, $sg__input_workspaces)}</span>${_el_resume($scope6_id, "e", $sg__input_workspaces)}</div><button type=button${_attr_class(btnSm)}${_attr("disabled", busy || !!restoring)}>`);
16650
+ _html(`<li${_attr_class(archivedRow)}><div${_attr_class("_cd")}><span${_attr_class("_ce")}>${_text_resume($scope6_id, "d", ws.name, $sg__input_workspaces)}</span><span${_attr_class([metaTrunc, "_y"])}${_attr("title", ws.display_path || ws.path)}>${_text_resume($scope6_id, "f", ws.display_path || ws.path, $sg__input_workspaces)}</span>${_el_resume($scope6_id, "e", $sg__input_workspaces)}</div><button type=button${_attr_class(btnSm)}${_attr("disabled", busy || !!restoring)}>`);
16610
16651
  _if(() => {
16611
16652
  if (restoring === ws.id) {
16612
16653
  const $scope17_id = _scope_id();
@@ -16723,19 +16764,19 @@ var term_find_default = _template("H", (input) => {
16723
16764
  const canStep = hasQuery && open;
16724
16765
  const keybar = input.placement === "keybar";
16725
16766
  _html(`<div${_attr_class([
16726
- "_eu",
16727
- keybar ? "_ew" : "_ev",
16728
- !open && "_ey"
16729
- ])} aria-hidden=${open ? "false" : "true"}><div${_attr_class(["_eo", keybar ? "_ex" : "_er"])}><input${_attr_input_value($scope0_id, "c", query, _resume(function(v) {
16767
+ "_eI",
16768
+ keybar ? "_eK" : "_eJ",
16769
+ !open && "_eM"
16770
+ ])} aria-hidden=${open ? "false" : "true"}><div${_attr_class(["_eC", keybar ? "_eL" : "_eF"])}><input${_attr_input_value($scope0_id, "c", query, _resume(function(v) {
16730
16771
  if (!open) return;
16731
16772
  query = v;
16732
16773
  live.query = v;
16733
16774
  run(0);
16734
- }, "H1", $scope0_id))}${_attr_class([findInput, keybar && "_ez"])} 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 && "_eA"])} title="Previous match"${_attr("disabled", !canStep)} tabindex=${open ? "0" : "-1"}>`);
16775
+ }, "H1", $scope0_id))}${_attr_class([findInput, keybar && "_eN"])} 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 && "_eO"])} title="Previous match"${_attr("disabled", !canStep)} tabindex=${open ? "0" : "-1"}>`);
16735
16776
  icon_arrow_up_default({ size: 14 });
16736
- _html(`</button>${_el_resume($scope0_id, "d")}<button type=button${_attr_class([findIconBtn, keybar && "_eA"])} title="Next match"${_attr("disabled", !canStep)} tabindex=${open ? "0" : "-1"}>`);
16777
+ _html(`</button>${_el_resume($scope0_id, "d")}<button type=button${_attr_class([findIconBtn, keybar && "_eO"])} title="Next match"${_attr("disabled", !canStep)} tabindex=${open ? "0" : "-1"}>`);
16737
16778
  icon_arrow_down_default({ size: 14 });
16738
- _html(`</button>${_el_resume($scope0_id, "f")}<button type=button${_attr_class([findIconBtn, keybar && "_eA"])} title="Close find" tabindex=${open ? "0" : "-1"}>`);
16779
+ _html(`</button>${_el_resume($scope0_id, "f")}<button type=button${_attr_class([findIconBtn, keybar && "_eO"])} title="Close find" tabindex=${open ? "0" : "-1"}>`);
16739
16780
  icon_xmark_default({ size: 14 });
16740
16781
  _html(`</button>${_el_resume($scope0_id, "h")}</div>${_el_resume($scope0_id, "b", _serialize_guard($scope0_reason, 2))}</div>${_el_resume($scope0_id, "a")}`);
16741
16782
  const $return = focusInput;
@@ -16886,7 +16927,7 @@ var term_default = _template("I", (input) => {
16886
16927
  }
16887
16928
  }, "I9", $scope0_id);
16888
16929
  input.keys;
16889
- _html(`<div${_attr("hidden", !onTermPage)}${_attr_class("_e0")}><div${_attr_class("_e1")}></div>${_el_resume($scope0_id, "b")}`);
16930
+ _html(`<div${_attr("hidden", !onTermPage)}${_attr_class("_fn")}><div${_attr_class("_fo")}></div>${_el_resume($scope0_id, "b")}`);
16890
16931
  _if(() => {
16891
16932
  if (findOpen) {
16892
16933
  const $scope4_id = _scope_id();
@@ -16913,7 +16954,7 @@ var term_default = _template("I", (input) => {
16913
16954
  _if(() => {
16914
16955
  if (uploading) {
16915
16956
  const $scope5_id = _scope_id();
16916
- _html(`<div${_attr_class("_e7")}>uploading…</div>`);
16957
+ _html(`<div${_attr_class("_fu")}>uploading…</div>`);
16917
16958
  writeScope($scope5_id, {});
16918
16959
  return 0;
16919
16960
  }
@@ -16921,7 +16962,7 @@ var term_default = _template("I", (input) => {
16921
16962
  _if(() => {
16922
16963
  if (copiedFlash) {
16923
16964
  const $scope6_id = _scope_id();
16924
- _html(`<div${_attr_class("_e6")}>Copied</div>`);
16965
+ _html(`<div${_attr_class("_ft")}>Copied</div>`);
16925
16966
  writeScope($scope6_id, {});
16926
16967
  return 0;
16927
16968
  }
@@ -16930,7 +16971,7 @@ var term_default = _template("I", (input) => {
16930
16971
  _if(() => {
16931
16972
  if (trapOpen) {
16932
16973
  const $scope3_id = _scope_id();
16933
- _html(`<div${_attr_class("_e8")}><div${_attr_class("_e9")}><p${_attr_class("_e_")}>Long-press the field below and choose Paste</p><input placeholder="Paste here…">${_el_resume($scope3_id, "d")}<button${_attr_class("_q")}>Cancel</button>${_el_resume($scope3_id, "e")}</div>${_el_resume($scope3_id, "b")}</div>${_el_resume($scope3_id, "a")}`);
16974
+ _html(`<div${_attr_class("_fv")}><div${_attr_class("_fw")}><p${_attr_class("_fx")}>Long-press the field below and choose Paste</p><input placeholder="Paste here…">${_el_resume($scope3_id, "d")}<button${_attr_class("_q")}>Cancel</button>${_el_resume($scope3_id, "e")}</div>${_el_resume($scope3_id, "b")}</div>${_el_resume($scope3_id, "a")}`);
16934
16975
  _script($scope3_id, "I16");
16935
16976
  _script($scope3_id, "I17");
16936
16977
  writeScope($scope3_id, {});
@@ -17192,7 +17233,7 @@ var work_view_default = _template("N", (input) => {
17192
17233
  toggleDiff();
17193
17234
  }
17194
17235
  }, "N14", $scope0_id);
17195
- _html(`<div${_attr_class(["_b8", { ["_b7"]: !input.active }])}><div${_attr_class("_b9")}>`);
17236
+ _html(`<div${_attr_class(["_cn", { ["_cm"]: !input.active }])}><div${_attr_class("_co")}>`);
17196
17237
  _if(() => {
17197
17238
  if (error) {
17198
17239
  const $scope8_id = _scope_id();
@@ -17215,7 +17256,7 @@ var work_view_default = _template("N", (input) => {
17215
17256
  _if(() => {
17216
17257
  if (diffMounted && ws) {
17217
17258
  const $scope1_id = _scope_id();
17218
- _html(`<div${_attr_class("_b_")}${_attr_or("data-live", view === "diff", "")}${_attr("inert", view !== "diff")}>`);
17259
+ _html(`<div${_attr_class("_cp")}${_attr_or("data-live", view === "diff", "")}${_attr("inert", view !== "diff")}>`);
17219
17260
  _set_serialize_reason({
17220
17261
  0: $sg__input_workspace,
17221
17262
  1: $sg__input_workspace,
@@ -17277,7 +17318,7 @@ var work_view_default = _template("N", (input) => {
17277
17318
  _if(() => {
17278
17319
  if (manageMounted && ws) {
17279
17320
  const $scope2_id = _scope_id();
17280
- _html(`<div${_attr_class("_b_")}${_attr_or("data-live", view === "manage", "")}${_attr("inert", view !== "manage")}>`);
17321
+ _html(`<div${_attr_class("_cp")}${_attr_or("data-live", view === "manage", "")}${_attr("inert", view !== "manage")}>`);
17281
17322
  _set_serialize_reason({
17282
17323
  0: $sg__input_workspace,
17283
17324
  1: _serialize_guard($scope0_reason, 9)
@@ -17303,7 +17344,7 @@ var work_view_default = _template("N", (input) => {
17303
17344
  _if(() => {
17304
17345
  if (settingsMounted) {
17305
17346
  const $scope3_id = _scope_id();
17306
- _html(`<div${_attr_class("_b_")}${_attr_or("data-live", view === "settings", "")}${_attr("inert", view !== "settings")}>`);
17347
+ _html(`<div${_attr_class("_cp")}${_attr_or("data-live", view === "settings", "")}${_attr("inert", view !== "settings")}>`);
17307
17348
  _set_serialize_reason({
17308
17349
  0: _serialize_guard($scope0_reason, 0),
17309
17350
  1: $sg__input_workspace,
@@ -17345,7 +17386,7 @@ var work_view_default = _template("N", (input) => {
17345
17386
  _if(() => {
17346
17387
  if (newMounted) {
17347
17388
  const $scope4_id = _scope_id();
17348
- _html(`<div${_attr_class("_b_")}${_attr_or("data-live", view === "new", "")}${_attr("inert", view !== "new")}>`);
17389
+ _html(`<div${_attr_class("_cp")}${_attr_or("data-live", view === "new", "")}${_attr("inert", view !== "new")}>`);
17349
17390
  _set_serialize_reason({
17350
17391
  0: 1,
17351
17392
  1: _serialize_guard($scope0_reason, 13),
@@ -17370,13 +17411,13 @@ var work_view_default = _template("N", (input) => {
17370
17411
  return 0;
17371
17412
  }
17372
17413
  }, $scope0_id, "g", 1, 1, 1, 0, 1);
17373
- _html(`<div${_attr_class("_ca")}${_attr("inert", view !== "term")}>`);
17414
+ _html(`<div${_attr_class("_cq")}${_attr("inert", view !== "term")}>`);
17374
17415
  _if(() => {
17375
17416
  if (ws && shownSessions) {
17376
17417
  const $scope5_id = _scope_id();
17377
17418
  _for_of(input.active ? shownSessions : shownSessions.filter((x) => x.id === curTab), (s) => {
17378
17419
  const $scope6_id = _scope_id();
17379
- _html(`<div${_attr_class("_cb")}${_attr_or("data-live", s.id === curTab, "")}${_attr("inert", s.id !== curTab)}>`);
17420
+ _html(`<div${_attr_class("_cr")}${_attr_or("data-live", s.id === curTab, "")}${_attr("inert", s.id !== curTab)}>`);
17380
17421
  _set_serialize_reason(2);
17381
17422
  const $childScope5 = _peek_scope_id();
17382
17423
  term_default({
@@ -17402,7 +17443,7 @@ var work_view_default = _template("N", (input) => {
17402
17443
  _if(() => {
17403
17444
  if (!shownSessions.length && view === "term") {
17404
17445
  const $scope7_id = _scope_id();
17405
- _html(`<div${_attr_class("_cp")}><span>No sessions in this workspace.</span><button${_attr_class(["_q", "_r"])}${_attr("disabled", spawning)}>${_text_resume($scope7_id, "c", spawning ? "Starting…" : `Start ${input.preferred || "shell"}`)}</button>${_el_resume($scope7_id, "b")}</div>`);
17446
+ _html(`<div${_attr_class("_cj")}><span>No sessions in this workspace.</span><button${_attr_class(["_q", "_r"])}${_attr("disabled", spawning)}>${_text_resume($scope7_id, "c", spawning ? "Starting…" : `Start ${input.preferred || "shell"}`)}</button>${_el_resume($scope7_id, "b")}</div>`);
17406
17447
  _script($scope7_id, "N39");
17407
17448
  _subscribe($spawning__closures, _subscribe($si__input_preferred && $input_preferred__closures, writeScope($scope7_id, {})));
17408
17449
  return 0;
@@ -17412,7 +17453,7 @@ var work_view_default = _template("N", (input) => {
17412
17453
  return 0;
17413
17454
  } else if (ws) {
17414
17455
  const $scope10_id = _scope_id();
17415
- _html(`<p${_attr_class("_cp")}>Loading sessions…</p>`);
17456
+ _html(`<p${_attr_class("_cj")}>Loading sessions…</p>`);
17416
17457
  writeScope($scope10_id, {});
17417
17458
  return 1;
17418
17459
  }
@@ -17531,8 +17572,8 @@ _template("yb", (input) => {
17531
17572
  });
17532
17573
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
17533
17574
  });
17534
- var sessOpen = "_eP _I";
17535
- var sessRename = "_eT _J";
17575
+ var sessOpen = "_er _I";
17576
+ var sessRename = "_ev _J";
17536
17577
  //#endregion
17537
17578
  //#region src/tags/usage-pcts.marko
17538
17579
  var usage_pcts_default = _template("M", (input) => {
@@ -17544,22 +17585,22 @@ var usage_pcts_default = _template("M", (input) => {
17544
17585
  if (windows.length) {
17545
17586
  const $scope1_id = _scope_id();
17546
17587
  _html(`<span${_attr_class([
17547
- "_hL",
17588
+ "_hF",
17548
17589
  input.class,
17549
- { ["_hM"]: agent.stale_seconds != null }
17590
+ { ["_hG"]: agent.stale_seconds != null }
17550
17591
  ])}${agent.stale_seconds != null ? _attr("title", `${agent.note || "provider unreachable"}; last cached numbers`) : " title=\"Plan usage\""}>`);
17551
17592
  _for_of(windows, (win$1, i) => {
17552
17593
  const $scope2_id = _scope_id();
17553
- _html(`<span${_attr_class("_hN")}>`);
17594
+ _html(`<span${_attr_class("_hH")}>`);
17554
17595
  _if(() => {
17555
17596
  if (i) {
17556
17597
  const $scope3_id = _scope_id();
17557
- _html(`<span${_attr_class("_hQ")} aria-hidden=true>·</span>`);
17598
+ _html(`<span${_attr_class("_hK")} aria-hidden=true>·</span>`);
17558
17599
  $si__input_agent && writeScope($scope3_id, {});
17559
17600
  return 0;
17560
17601
  }
17561
17602
  }, $scope2_id, "b", $sg__input_agent, $sg__input_agent, $sg__input_agent, 0, 1);
17562
- _html(`<span${_attr_class("_hO")}>${_text_resume($scope2_id, "d", win$1.window, $sg__input_agent)}</span><span${_attr_class(["_hP", win$1.used_percent >= 90 ? "_hi" : win$1.used_percent >= 70 ? "_hh" : win$1.used_percent >= 40 ? "_hg" : "_hf"])}>${_text_resume($scope2_id, "f", pctText(win$1.used_percent), $sg__input_agent)}</span>${_el_resume($scope2_id, "e", $sg__input_agent)}</span>`);
17603
+ _html(`<span${_attr_class("_hI")}>${_text_resume($scope2_id, "d", win$1.window, $sg__input_agent)}</span><span${_attr_class(["_hJ", win$1.used_percent >= 90 ? "_fR" : win$1.used_percent >= 70 ? "_fQ" : win$1.used_percent >= 40 ? "_fP" : "_fO"])}>${_text_resume($scope2_id, "f", pctText(win$1.used_percent), $sg__input_agent)}</span>${_el_resume($scope2_id, "e", $sg__input_agent)}</span>`);
17563
17604
  $si__input_agent && writeScope($scope2_id, {});
17564
17605
  }, "window", $scope1_id, "a", $sg__input_agent, $sg__input_agent__OR__input_class, $sg__input_agent, "</span>", 1);
17565
17606
  $si__input_agent__OR__input_class && writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
@@ -17601,7 +17642,7 @@ _template("n", (input) => {
17601
17642
  align: "center",
17602
17643
  gap: 8
17603
17644
  }), "n2", $scope0_id);
17604
- _html(`<button${_attr_class([kbtn, "_eL"])} title=${input.onTermPage ? "Sessions" : "\"Back to session\""}${input.onTermPage ? _attr("popovertarget", popId) : ""}>`);
17645
+ _html(`<button${_attr_class([kbtn, "_en"])} title=${input.onTermPage ? "Sessions" : "\"Back to session\""}${input.onTermPage ? _attr("popovertarget", popId) : ""}>`);
17605
17646
  _set_serialize_reason({
17606
17647
  1: $sg__input_sessions__OR__input_sessionId,
17607
17648
  2: $sg__input_sessions__OR__input_sessionId
@@ -17615,11 +17656,11 @@ _template("n", (input) => {
17615
17656
  "_A",
17616
17657
  "_bb",
17617
17658
  phase[sessionPhase(current$2?.state)]
17618
- ])}></span>${_el_resume($scope0_id, "c", $sg__input_sessions__OR__input_sessionId)}</button>${_el_resume($scope0_id, "a")}<div${_attr("id", popId)} popover=auto${_attr_class(["_9", "_eM"])}>`);
17659
+ ])}></span>${_el_resume($scope0_id, "c", $sg__input_sessions__OR__input_sessionId)}</button>${_el_resume($scope0_id, "a")}<div${_attr("id", popId)} popover=auto${_attr_class(["_9", "_eo"])}>`);
17619
17660
  _for_of(input.sessions, (s) => {
17620
17661
  const $scope1_id = _scope_id();
17621
17662
  const $for_content__s_agent__closures = /* @__PURE__ */ new Set();
17622
- _html(`<div${_attr_class(["_eO", { ["_eN"]: s.id === input.sessionId }])}>`);
17663
+ _html(`<div${_attr_class(["_eq", { ["_ep"]: s.id === input.sessionId }])}>`);
17623
17664
  _if(() => {
17624
17665
  if (renamingId === s.id) {
17625
17666
  const $scope5_id = _scope_id();
@@ -17651,7 +17692,7 @@ _template("n", (input) => {
17651
17692
  agent: activeAgent(s),
17652
17693
  size: 14
17653
17694
  });
17654
- _html(`<span${_attr_class("_eQ")}><span${_attr_class("_eS")}>${_text_resume($scope2_id, "f", s.title || activeAgent(s), $sg__input_sessions)}</span>`);
17695
+ _html(`<span${_attr_class("_es")}><span${_attr_class("_eu")}>${_text_resume($scope2_id, "f", s.title || activeAgent(s), $sg__input_sessions)}</span>`);
17655
17696
  _if(() => {
17656
17697
  if (s.id === input.sessionId) {
17657
17698
  const $scope7_id = _scope_id();
@@ -17663,7 +17704,7 @@ _template("n", (input) => {
17663
17704
  const $childScope4 = _peek_scope_id();
17664
17705
  usage_pcts_default({
17665
17706
  agent: plan,
17666
- class: "_eR"
17707
+ class: "_et"
17667
17708
  });
17668
17709
  writeScope($scope8_id, { a: _existing_scope($childScope4) });
17669
17710
  return 0;
@@ -17680,7 +17721,7 @@ _template("n", (input) => {
17680
17721
  _if(() => {
17681
17722
  if (input.onRenameSession) {
17682
17723
  const $scope6_id = _scope_id();
17683
- _html(`<button${_attr_class(["_eU", "_eV"])} title="Rename session">`);
17724
+ _html(`<button${_attr_class(["_ew", "_ex"])} title="Rename session">`);
17684
17725
  icon_edit_default({ size: 12 });
17685
17726
  _html(`</button>${_el_resume($scope6_id, "a")}`);
17686
17727
  _script($scope6_id, "n5");
@@ -17692,7 +17733,7 @@ _template("n", (input) => {
17692
17733
  if (input.onCloseSession) {
17693
17734
  const $scope3_id = _scope_id();
17694
17735
  arm_button_default({
17695
- class: ["_eU", "_7"],
17736
+ class: ["_ew", "_7"],
17696
17737
  title: "Close session",
17697
17738
  armedTitle: "Close?",
17698
17739
  onFire: _resume(function() {
@@ -17724,7 +17765,7 @@ _template("n", (input) => {
17724
17765
  m: $si__input_sessions && $for_content__s_agent__closures
17725
17766
  });
17726
17767
  }, "id", $scope0_id, "e", 1, $sg__input_sessions, $sg__input_sessions__OR__input_agents, 0, 1);
17727
- _html(`<div${_attr_class("_eW")}><span${_attr_class("_eX")}>New session</span><div${_attr_class("_eY")}>`);
17768
+ _html(`<div${_attr_class("_ey")}><span${_attr_class("_ez")}>New session</span><div${_attr_class("_eA")}>`);
17728
17769
  _for_of(["shell", ...input.agents], (agent) => {
17729
17770
  const $scope4_id = _scope_id();
17730
17771
  _html(`<button${_attr_class(iconBtnRow)}${_attr("title", `New ${agent} session`)}>`);
@@ -18520,7 +18561,7 @@ function head2(context) {
18520
18561
  //#region src/routes/_app/settings/+handler.ts
18521
18562
  /** Settings is about the doctor snapshot, so this page waits for it and
18522
18563
  * server-renders every section (the shell never streams, see CLAUDE.md). */
18523
- var GET$26 = Run.GET(async (_ctx, next) => {
18564
+ var GET$27 = Run.GET(async (_ctx, next) => {
18524
18565
  return next({ setup: await getSetup().catch(() => null) });
18525
18566
  });
18526
18567
  //#endregion
@@ -18545,12 +18586,12 @@ var settings_server_entry_default = withPageAssets(_template("AA0T2xt", (input)
18545
18586
  }, 1), flush$1, "AA0T2xt");
18546
18587
  //#endregion
18547
18588
  //#region __marko-run__settings.js
18548
- var getHandler$26 = normalizeHandler(GET$26, "GET");
18549
- var get3_options = normalizeOptions("GET", mware3, getHandler$26);
18589
+ var getHandler$27 = normalizeHandler(GET$27, "GET");
18590
+ var get3_options = normalizeOptions("GET", mware3, getHandler$27);
18550
18591
  var head3_options = normalizeOptions("HEAD", mware3);
18551
18592
  function get3(context) {
18552
18593
  const __page = (data) => render$1(context, settings_server_entry_default, {}, data);
18553
- const __getHandler = (data) => call(getHandler$26, __page, context, data);
18594
+ const __getHandler = (data) => call(getHandler$27, __page, context, data);
18554
18595
  return call(mware3, __getHandler, context);
18555
18596
  }
18556
18597
  function head3(context) {
@@ -19539,7 +19580,7 @@ async function restore(m, sel) {
19539
19580
  }
19540
19581
  //#endregion
19541
19582
  //#region __marko-run__api.backup.export.js
19542
- var getHandler$25 = normalizeHandler(Run.GET(() => {
19583
+ var getHandler$26 = normalizeHandler(Run.GET(() => {
19543
19584
  const body = JSON.stringify(encodeManifest(buildManifest()), null, 1) + "\n";
19544
19585
  return new Response(body, { headers: {
19545
19586
  "content-type": "application/json; charset=utf-8",
@@ -19547,10 +19588,10 @@ var getHandler$25 = normalizeHandler(Run.GET(() => {
19547
19588
  "cache-control": "no-store"
19548
19589
  } });
19549
19590
  }), "GET");
19550
- var get8_options = normalizeOptions("GET", mware11, getHandler$25);
19591
+ var get8_options = normalizeOptions("GET", mware11, getHandler$26);
19551
19592
  var head8_options = normalizeOptions("HEAD", mware11);
19552
19593
  function get8(context) {
19553
- const __getHandler = (data) => call(getHandler$25, noContent, context, data);
19594
+ const __getHandler = (data) => call(getHandler$26, noContent, context, data);
19554
19595
  return call(mware11, __getHandler, context);
19555
19596
  }
19556
19597
  function head8(context) {
@@ -19688,13 +19729,13 @@ ensureAllPushHooks();
19688
19729
  resumePendingWorkspaces();
19689
19730
  //#endregion
19690
19731
  //#region __marko-run__api.boot.js
19691
- var getHandler$24 = normalizeHandler(Run.GET(() => {
19732
+ var getHandler$25 = normalizeHandler(Run.GET(() => {
19692
19733
  return Response.json({ boot: BOOT_ID }, { headers: { "cache-control": "no-store" } });
19693
19734
  }), "GET");
19694
- var get12_options = normalizeOptions("GET", mware11, getHandler$24);
19735
+ var get12_options = normalizeOptions("GET", mware11, getHandler$25);
19695
19736
  var head12_options = normalizeOptions("HEAD", mware11);
19696
19737
  function get12(context) {
19697
- const __getHandler = (data) => call(getHandler$24, noContent, context, data);
19738
+ const __getHandler = (data) => call(getHandler$25, noContent, context, data);
19698
19739
  return call(mware11, __getHandler, context);
19699
19740
  }
19700
19741
  function head12(context) {
@@ -19702,11 +19743,11 @@ function head12(context) {
19702
19743
  }
19703
19744
  //#endregion
19704
19745
  //#region __marko-run__api.events.js
19705
- var getHandler$23 = normalizeHandler(Run.GET(() => Response.json({ error: "events bus is websocket — connect with ws(s)://host/api/events" }, { status: 410 })), "GET");
19706
- var get13_options = normalizeOptions("GET", mware11, getHandler$23);
19746
+ var getHandler$24 = normalizeHandler(Run.GET(() => Response.json({ error: "events bus is websocket — connect with ws(s)://host/api/events" }, { status: 410 })), "GET");
19747
+ var get13_options = normalizeOptions("GET", mware11, getHandler$24);
19707
19748
  var head13_options = normalizeOptions("HEAD", mware11);
19708
19749
  function get13(context) {
19709
- const __getHandler = (data) => call(getHandler$23, noContent, context, data);
19750
+ const __getHandler = (data) => call(getHandler$24, noContent, context, data);
19710
19751
  return call(mware11, __getHandler, context);
19711
19752
  }
19712
19753
  function head13(context) {
@@ -19737,14 +19778,14 @@ function post14(context) {
19737
19778
  }
19738
19779
  //#endregion
19739
19780
  //#region __marko-run__api.instance.icon.js
19740
- var getHandler$22 = normalizeHandler(Run.GET({ search: (value) => ({ v: typeof value.v === "string" ? value.v : "" }) }, (ctx) => new Response(iconSvg(ctx.search.v && normalizeAccent(`#${ctx.search.v}`) || getInstance().accent), { headers: {
19781
+ var getHandler$23 = normalizeHandler(Run.GET({ search: (value) => ({ v: typeof value.v === "string" ? value.v : "" }) }, (ctx) => new Response(iconSvg(ctx.search.v && normalizeAccent(`#${ctx.search.v}`) || getInstance().accent), { headers: {
19741
19782
  "content-type": "image/svg+xml",
19742
19783
  "cache-control": "public, max-age=3600"
19743
19784
  } })), "GET");
19744
- var get15_options = normalizeOptions("GET", mware11, getHandler$22);
19785
+ var get15_options = normalizeOptions("GET", mware11, getHandler$23);
19745
19786
  var head15_options = normalizeOptions("HEAD", mware11);
19746
19787
  function get15(context) {
19747
- const __getHandler = (data) => call(getHandler$22, noContent, context, data);
19788
+ const __getHandler = (data) => call(getHandler$23, noContent, context, data);
19748
19789
  return call(mware11, __getHandler, context);
19749
19790
  }
19750
19791
  function head15(context) {
@@ -19953,14 +19994,14 @@ function iconPng(art, accent) {
19953
19994
  }
19954
19995
  //#endregion
19955
19996
  //#region __marko-run__api.instance.icon-png.js
19956
- var getHandler$21 = normalizeHandler(Run.GET({ search: (value) => ({ art: typeof value.art === "string" && isIconArt(value.art) ? value.art : "512" }) }, (ctx) => new Response(iconPng(ctx.search.art, getInstance().accent), { headers: {
19997
+ var getHandler$22 = normalizeHandler(Run.GET({ search: (value) => ({ art: typeof value.art === "string" && isIconArt(value.art) ? value.art : "512" }) }, (ctx) => new Response(iconPng(ctx.search.art, getInstance().accent), { headers: {
19957
19998
  "content-type": "image/png",
19958
19999
  "cache-control": "public, max-age=3600"
19959
20000
  } })), "GET");
19960
- var get16_options = normalizeOptions("GET", mware11, getHandler$21);
20001
+ var get16_options = normalizeOptions("GET", mware11, getHandler$22);
19961
20002
  var head16_options = normalizeOptions("HEAD", mware11);
19962
20003
  function get16(context) {
19963
- const __getHandler = (data) => call(getHandler$21, noContent, context, data);
20004
+ const __getHandler = (data) => call(getHandler$22, noContent, context, data);
19964
20005
  return call(mware11, __getHandler, context);
19965
20006
  }
19966
20007
  function head16(context) {
@@ -19968,14 +20009,14 @@ function head16(context) {
19968
20009
  }
19969
20010
  //#endregion
19970
20011
  //#region __marko-run__api.instance.manifest.js
19971
- var getHandler$20 = normalizeHandler(Run.GET(() => Response.json(manifest(getInstance()), { headers: {
20012
+ var getHandler$21 = normalizeHandler(Run.GET(() => Response.json(manifest(getInstance()), { headers: {
19972
20013
  "content-type": "application/manifest+json; charset=UTF-8",
19973
20014
  "cache-control": "no-cache"
19974
20015
  } })), "GET");
19975
- var get17_options = normalizeOptions("GET", mware11, getHandler$20);
20016
+ var get17_options = normalizeOptions("GET", mware11, getHandler$21);
19976
20017
  var head17_options = normalizeOptions("HEAD", mware11);
19977
20018
  function get17(context) {
19978
- const __getHandler = (data) => call(getHandler$20, noContent, context, data);
20019
+ const __getHandler = (data) => call(getHandler$21, noContent, context, data);
19979
20020
  return call(mware11, __getHandler, context);
19980
20021
  }
19981
20022
  function head17(context) {
@@ -19989,7 +20030,7 @@ var Pref = /* @__PURE__ */ object({
19989
20030
  });
19990
20031
  /** Per-workspace UI prefs — the workspace id is the suffix after the last `:`. */
19991
20032
  var OWNED = /^(?:tab|diff-filter|diff-pos):(.+)$/;
19992
- var GET$19 = Run.GET(() => Response.json(allPrefs()));
20033
+ var GET$20 = Run.GET(() => Response.json(allPrefs()));
19993
20034
  //#endregion
19994
20035
  //#region __marko-run__api.prefs.js
19995
20036
  var postHandler$14 = normalizeHandler(Run.POST({ json: Pref }, async (ctx) => {
@@ -19999,12 +20040,12 @@ var postHandler$14 = normalizeHandler(Run.POST({ json: Pref }, async (ctx) => {
19999
20040
  setPref(body.key, body.value);
20000
20041
  return Response.json({ ok: true });
20001
20042
  }), "POST");
20002
- var getHandler$19 = normalizeHandler(GET$19, "GET");
20003
- var get18_options = normalizeOptions("GET", mware11, getHandler$19);
20043
+ var getHandler$20 = normalizeHandler(GET$20, "GET");
20044
+ var get18_options = normalizeOptions("GET", mware11, getHandler$20);
20004
20045
  var head18_options = normalizeOptions("HEAD", mware11);
20005
20046
  var post18_options = normalizeOptions("POST", mware11, postHandler$14);
20006
20047
  function get18(context) {
20007
- const __getHandler = (data) => call(getHandler$19, noContent, context, data);
20048
+ const __getHandler = (data) => call(getHandler$20, noContent, context, data);
20008
20049
  return call(mware11, __getHandler, context);
20009
20050
  }
20010
20051
  function head18(context) {
@@ -20032,14 +20073,14 @@ function delete19(context) {
20032
20073
  }
20033
20074
  //#endregion
20034
20075
  //#region __marko-run__api.progress.js
20035
- var getHandler$18 = normalizeHandler(Run.GET({ search: (value) => ({
20076
+ var getHandler$19 = normalizeHandler(Run.GET({ search: (value) => ({
20036
20077
  since: typeof value.since === "string" ? Number(value.since) : void 0,
20037
20078
  op: typeof value.op === "string" && value.op ? value.op : void 0
20038
20079
  }) }, (ctx) => Response.json(progressSince(ctx.search.since, ctx.search.op))), "GET");
20039
- var get20_options = normalizeOptions("GET", mware11, getHandler$18);
20080
+ var get20_options = normalizeOptions("GET", mware11, getHandler$19);
20040
20081
  var head20_options = normalizeOptions("HEAD", mware11);
20041
20082
  function get20(context) {
20042
- const __getHandler = (data) => call(getHandler$18, noContent, context, data);
20083
+ const __getHandler = (data) => call(getHandler$19, noContent, context, data);
20043
20084
  return call(mware11, __getHandler, context);
20044
20085
  }
20045
20086
  function head20(context) {
@@ -20047,7 +20088,7 @@ function head20(context) {
20047
20088
  }
20048
20089
  //#endregion
20049
20090
  //#region src/routes/api/push/+handler.ts
20050
- var GET$17 = Run.GET(() => Response.json({ publicKey: pushPublicKey() }));
20091
+ var GET$18 = Run.GET(() => Response.json({ publicKey: pushPublicKey() }));
20051
20092
  var Subscription = /* @__PURE__ */ object({
20052
20093
  endpoint: /* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ url()),
20053
20094
  keys: /* @__PURE__ */ object({
@@ -20066,13 +20107,13 @@ var deleteHandler$3 = normalizeHandler(Run.DELETE({ search: (value) => ({ endpoi
20066
20107
  return Response.json({ ok: true });
20067
20108
  }), "DELETE");
20068
20109
  var postHandler$13 = normalizeHandler(POST$13, "POST");
20069
- var getHandler$17 = normalizeHandler(GET$17, "GET");
20070
- var get21_options = normalizeOptions("GET", mware11, getHandler$17);
20110
+ var getHandler$18 = normalizeHandler(GET$18, "GET");
20111
+ var get21_options = normalizeOptions("GET", mware11, getHandler$18);
20071
20112
  var head21_options = normalizeOptions("HEAD", mware11);
20072
20113
  var post21_options = normalizeOptions("POST", mware11, postHandler$13);
20073
20114
  var delete21_options = normalizeOptions("DELETE", mware11, deleteHandler$3);
20074
20115
  function get21(context) {
20075
- const __getHandler = (data) => call(getHandler$17, noContent, context, data);
20116
+ const __getHandler = (data) => call(getHandler$18, noContent, context, data);
20076
20117
  return call(mware11, __getHandler, context);
20077
20118
  }
20078
20119
  function head21(context) {
@@ -20117,11 +20158,11 @@ function post22(context) {
20117
20158
  }
20118
20159
  //#endregion
20119
20160
  //#region __marko-run__api.repos.js
20120
- var getHandler$16 = normalizeHandler(Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await repoCatalog(ctx.search.refresh))), "GET");
20121
- var get23_options = normalizeOptions("GET", mware11, getHandler$16);
20161
+ var getHandler$17 = normalizeHandler(Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await repoCatalog(ctx.search.refresh))), "GET");
20162
+ var get23_options = normalizeOptions("GET", mware11, getHandler$17);
20122
20163
  var head23_options = normalizeOptions("HEAD", mware11);
20123
20164
  function get23(context) {
20124
- const __getHandler = (data) => call(getHandler$16, noContent, context, data);
20165
+ const __getHandler = (data) => call(getHandler$17, noContent, context, data);
20125
20166
  return call(mware11, __getHandler, context);
20126
20167
  }
20127
20168
  function head23(context) {
@@ -20129,7 +20170,7 @@ function head23(context) {
20129
20170
  }
20130
20171
  //#endregion
20131
20172
  //#region __marko-run__api.repos.branches.js
20132
- var getHandler$15 = normalizeHandler(Run.GET({ search: (value) => {
20173
+ var getHandler$16 = normalizeHandler(Run.GET({ search: (value) => {
20133
20174
  const repo = typeof value.repo === "string" ? value.repo : "";
20134
20175
  if (!/^(?:[\w.-]+\/)?[\w.-]+\/[\w.-]+$/.test(repo)) throw httpError(400, "invalid repo");
20135
20176
  return {
@@ -20148,10 +20189,10 @@ var getHandler$15 = normalizeHandler(Run.GET({ search: (value) => {
20148
20189
  defaultBranch: looked || fromCatalog || null
20149
20190
  });
20150
20191
  }), "GET");
20151
- var get24_options = normalizeOptions("GET", mware11, getHandler$15);
20192
+ var get24_options = normalizeOptions("GET", mware11, getHandler$16);
20152
20193
  var head24_options = normalizeOptions("HEAD", mware11);
20153
20194
  function get24(context) {
20154
- const __getHandler = (data) => call(getHandler$15, noContent, context, data);
20195
+ const __getHandler = (data) => call(getHandler$16, noContent, context, data);
20155
20196
  return call(mware11, __getHandler, context);
20156
20197
  }
20157
20198
  function head24(context) {
@@ -20228,7 +20269,7 @@ function snapshot$1() {
20228
20269
  instance: getInstance()
20229
20270
  };
20230
20271
  }
20231
- var GET$14 = Run.GET(() => Response.json(snapshot$1()));
20272
+ var GET$15 = Run.GET(() => Response.json(snapshot$1()));
20232
20273
  //#endregion
20233
20274
  //#region __marko-run__api.settings.js
20234
20275
  var putHandler = normalizeHandler(Run.PUT({ json: Patch }, async (ctx) => {
@@ -20245,12 +20286,12 @@ var putHandler = normalizeHandler(Run.PUT({ json: Patch }, async (ctx) => {
20245
20286
  }
20246
20287
  return Response.json(snapshot$1());
20247
20288
  }), "PUT");
20248
- var getHandler$14 = normalizeHandler(GET$14, "GET");
20249
- var get27_options = normalizeOptions("GET", mware11, getHandler$14);
20289
+ var getHandler$15 = normalizeHandler(GET$15, "GET");
20290
+ var get27_options = normalizeOptions("GET", mware11, getHandler$15);
20250
20291
  var head27_options = normalizeOptions("HEAD", mware11);
20251
20292
  var put27_options = normalizeOptions("PUT", mware11, putHandler);
20252
20293
  function get27(context) {
20253
- const __getHandler = (data) => call(getHandler$14, noContent, context, data);
20294
+ const __getHandler = (data) => call(getHandler$15, noContent, context, data);
20254
20295
  return call(mware11, __getHandler, context);
20255
20296
  }
20256
20297
  function head27(context) {
@@ -20262,11 +20303,11 @@ function put27(context) {
20262
20303
  }
20263
20304
  //#endregion
20264
20305
  //#region __marko-run__api.setup.js
20265
- var getHandler$13 = normalizeHandler(Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await getSetup(ctx.search.refresh))), "GET");
20266
- var get28_options = normalizeOptions("GET", mware11, getHandler$13);
20306
+ var getHandler$14 = normalizeHandler(Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await getSetup(ctx.search.refresh))), "GET");
20307
+ var get28_options = normalizeOptions("GET", mware11, getHandler$14);
20267
20308
  var head28_options = normalizeOptions("HEAD", mware11);
20268
20309
  function get28(context) {
20269
- const __getHandler = (data) => call(getHandler$13, noContent, context, data);
20310
+ const __getHandler = (data) => call(getHandler$14, noContent, context, data);
20270
20311
  return call(mware11, __getHandler, context);
20271
20312
  }
20272
20313
  function head28(context) {
@@ -20298,11 +20339,11 @@ function post29(context) {
20298
20339
  }
20299
20340
  //#endregion
20300
20341
  //#region __marko-run__api.setup.search.js
20301
- var getHandler$12 = normalizeHandler(Run.GET({ search: (value) => ({ q: typeof value.q === "string" ? value.q : "" }) }, async (ctx) => Response.json(await searchMise(ctx.search.q))), "GET");
20302
- var get30_options = normalizeOptions("GET", mware11, getHandler$12);
20342
+ var getHandler$13 = normalizeHandler(Run.GET({ search: (value) => ({ q: typeof value.q === "string" ? value.q : "" }) }, async (ctx) => Response.json(await searchMise(ctx.search.q))), "GET");
20343
+ var get30_options = normalizeOptions("GET", mware11, getHandler$13);
20303
20344
  var head30_options = normalizeOptions("HEAD", mware11);
20304
20345
  function get30(context) {
20305
- const __getHandler = (data) => call(getHandler$12, noContent, context, data);
20346
+ const __getHandler = (data) => call(getHandler$13, noContent, context, data);
20306
20347
  return call(mware11, __getHandler, context);
20307
20348
  }
20308
20349
  function head30(context) {
@@ -20421,16 +20462,16 @@ function hasSystemdRun() {
20421
20462
  //#region src/routes/api/setup/self/+handler.ts
20422
20463
  /** work's own version, the newest published one, and the self-update
20423
20464
  * trigger (POST). `?refresh` re-asks the registry. */
20424
- var GET$11 = Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await selfInfo(ctx.search.refresh)));
20465
+ var GET$12 = Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await selfInfo(ctx.search.refresh)));
20425
20466
  //#endregion
20426
20467
  //#region __marko-run__api.setup.self.js
20427
20468
  var postHandler$9 = normalizeHandler(Run.POST(async () => Response.json(startSelfUpdate())), "POST");
20428
- var getHandler$11 = normalizeHandler(GET$11, "GET");
20429
- var get31_options = normalizeOptions("GET", mware11, getHandler$11);
20469
+ var getHandler$12 = normalizeHandler(GET$12, "GET");
20470
+ var get31_options = normalizeOptions("GET", mware11, getHandler$12);
20430
20471
  var head31_options = normalizeOptions("HEAD", mware11);
20431
20472
  var post31_options = normalizeOptions("POST", mware11, postHandler$9);
20432
20473
  function get31(context) {
20433
- const __getHandler = (data) => call(getHandler$11, noContent, context, data);
20474
+ const __getHandler = (data) => call(getHandler$12, noContent, context, data);
20434
20475
  return call(mware11, __getHandler, context);
20435
20476
  }
20436
20477
  function head31(context) {
@@ -20443,7 +20484,7 @@ function post31(context) {
20443
20484
  //#endregion
20444
20485
  //#region src/routes/api/skills/+handler.ts
20445
20486
  /** System-wide skills: what every agent CLI on this machine can see. */
20446
- var GET$10 = Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await skillsSnapshot(void 0, [], ctx.search.refresh)));
20487
+ var GET$11 = Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await skillsSnapshot(void 0, [], ctx.search.refresh)));
20447
20488
  var Body$1 = /* @__PURE__ */ object({
20448
20489
  action: /* @__PURE__ */ picklist([
20449
20490
  "add",
@@ -20471,12 +20512,12 @@ var postHandler$8 = normalizeHandler(Run.POST({ json: Body$1 }, async (ctx) => {
20471
20512
  });
20472
20513
  return Response.json(await skillsSnapshot(void 0, [], true));
20473
20514
  }), "POST");
20474
- var getHandler$10 = normalizeHandler(GET$10, "GET");
20475
- var get32_options = normalizeOptions("GET", mware11, getHandler$10);
20515
+ var getHandler$11 = normalizeHandler(GET$11, "GET");
20516
+ var get32_options = normalizeOptions("GET", mware11, getHandler$11);
20476
20517
  var head32_options = normalizeOptions("HEAD", mware11);
20477
20518
  var post32_options = normalizeOptions("POST", mware11, postHandler$8);
20478
20519
  function get32(context) {
20479
- const __getHandler = (data) => call(getHandler$10, noContent, context, data);
20520
+ const __getHandler = (data) => call(getHandler$11, noContent, context, data);
20480
20521
  return call(mware11, __getHandler, context);
20481
20522
  }
20482
20523
  function head32(context) {
@@ -20488,11 +20529,11 @@ function post32(context) {
20488
20529
  }
20489
20530
  //#endregion
20490
20531
  //#region __marko-run__api.skills.search.js
20491
- var getHandler$9 = normalizeHandler(Run.GET({ search: (value) => ({ q: typeof value.q === "string" ? value.q : "" }) }, async (ctx) => Response.json(await searchRegistry(ctx.search.q))), "GET");
20492
- var get33_options = normalizeOptions("GET", mware11, getHandler$9);
20532
+ var getHandler$10 = normalizeHandler(Run.GET({ search: (value) => ({ q: typeof value.q === "string" ? value.q : "" }) }, async (ctx) => Response.json(await searchRegistry(ctx.search.q))), "GET");
20533
+ var get33_options = normalizeOptions("GET", mware11, getHandler$10);
20493
20534
  var head33_options = normalizeOptions("HEAD", mware11);
20494
20535
  function get33(context) {
20495
- const __getHandler = (data) => call(getHandler$9, noContent, context, data);
20536
+ const __getHandler = (data) => call(getHandler$10, noContent, context, data);
20496
20537
  return call(mware11, __getHandler, context);
20497
20538
  }
20498
20539
  function head33(context) {
@@ -20500,11 +20541,11 @@ function head33(context) {
20500
20541
  }
20501
20542
  //#endregion
20502
20543
  //#region __marko-run__api.status.js
20503
- var getHandler$8 = normalizeHandler(Run.GET({ search: (value) => ({ fresh: "fresh" in value }) }, async (ctx) => Response.json(await (ctx.search.fresh ? statusForAllFresh() : statusForAll()))), "GET");
20504
- var get34_options = normalizeOptions("GET", mware11, getHandler$8);
20544
+ var getHandler$9 = normalizeHandler(Run.GET({ search: (value) => ({ fresh: "fresh" in value }) }, async (ctx) => Response.json(await (ctx.search.fresh ? statusForAllFresh() : statusForAll()))), "GET");
20545
+ var get34_options = normalizeOptions("GET", mware11, getHandler$9);
20505
20546
  var head34_options = normalizeOptions("HEAD", mware11);
20506
20547
  function get34(context) {
20507
- const __getHandler = (data) => call(getHandler$8, noContent, context, data);
20548
+ const __getHandler = (data) => call(getHandler$9, noContent, context, data);
20508
20549
  return call(mware11, __getHandler, context);
20509
20550
  }
20510
20551
  function head34(context) {
@@ -20512,11 +20553,11 @@ function head34(context) {
20512
20553
  }
20513
20554
  //#endregion
20514
20555
  //#region __marko-run__api.usage.js
20515
- var getHandler$7 = normalizeHandler(Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await usage(ctx.search.refresh))), "GET");
20516
- var get35_options = normalizeOptions("GET", mware11, getHandler$7);
20556
+ var getHandler$8 = normalizeHandler(Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await usage(ctx.search.refresh))), "GET");
20557
+ var get35_options = normalizeOptions("GET", mware11, getHandler$8);
20517
20558
  var head35_options = normalizeOptions("HEAD", mware11);
20518
20559
  function get35(context) {
20519
- const __getHandler = (data) => call(getHandler$7, noContent, context, data);
20560
+ const __getHandler = (data) => call(getHandler$8, noContent, context, data);
20520
20561
  return call(mware11, __getHandler, context);
20521
20562
  }
20522
20563
  function head35(context) {
@@ -20534,7 +20575,7 @@ var CreateWorkspace = /* @__PURE__ */ object({
20534
20575
  opId: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ maxLength(40))),
20535
20576
  join: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ trim(), /* @__PURE__ */ maxLength(200)))
20536
20577
  });
20537
- var GET$6 = Run.GET(() => {
20578
+ var GET$7 = Run.GET(() => {
20538
20579
  return Response.json(listWorkspaces());
20539
20580
  });
20540
20581
  //#endregion
@@ -20553,12 +20594,12 @@ var postHandler$7 = normalizeHandler(Run.POST({ json: CreateWorkspace }, async (
20553
20594
  throw err;
20554
20595
  }
20555
20596
  }), "POST");
20556
- var getHandler$6 = normalizeHandler(GET$6, "GET");
20557
- var get36_options = normalizeOptions("GET", mware11, getHandler$6);
20597
+ var getHandler$7 = normalizeHandler(GET$7, "GET");
20598
+ var get36_options = normalizeOptions("GET", mware11, getHandler$7);
20558
20599
  var head36_options = normalizeOptions("HEAD", mware11);
20559
20600
  var post36_options = normalizeOptions("POST", mware11, postHandler$7);
20560
20601
  function get36(context) {
20561
- const __getHandler = (data) => call(getHandler$6, noContent, context, data);
20602
+ const __getHandler = (data) => call(getHandler$7, noContent, context, data);
20562
20603
  return call(mware11, __getHandler, context);
20563
20604
  }
20564
20605
  function head36(context) {
@@ -20669,6 +20710,10 @@ function markReviewSeen(workspaceId, seen) {
20669
20710
  //#endregion
20670
20711
  //#region src/server/diff.ts
20671
20712
  var MAX_FILE_BYTES = 5e5;
20713
+ /** A preview ships the whole file, so its ceiling is not MAX_FILE_BYTES
20714
+ * (that is a patch's worth of text): a screenshot committed to a repo is
20715
+ * routinely over a megabyte. */
20716
+ var MAX_PREVIEW_BYTES = 8388608;
20672
20717
  /** Working-tree reads in flight per section: a stat+read per changed file
20673
20718
  * is cheap, but a few hundred at once on a network volume is not. */
20674
20719
  var FILE_READ_CONCURRENCY = 32;
@@ -21184,12 +21229,27 @@ async function collectPatches(dir, revs, entries, stats, untrackedPaths, dirtyPa
21184
21229
  file.additions = file.patch.split("\n").filter((l) => l[0] === "+" && !l.startsWith("+++")).length;
21185
21230
  file.deletions = 0;
21186
21231
  }
21187
- if (dirtyPaths.has(e.path)) file.hash = createHash("sha1").update(e.status).update(file.patch ?? "").digest("hex").slice(0, 16);
21232
+ if (dirtyPaths.has(e.path)) {
21233
+ const stamp = file.binary ? await worktreeStamp(dir, e.path) : "";
21234
+ file.hash = createHash("sha1").update(e.status).update(file.patch ?? "").update(stamp).digest("hex").slice(0, 16);
21235
+ }
21188
21236
  return file;
21189
21237
  });
21190
21238
  files.sort((a, b) => a.path.localeCompare(b.path));
21191
21239
  return files;
21192
21240
  }
21241
+ /** Size and mtime of a working-tree file: enough to tell a binary edit
21242
+ * from the same bytes, without reading a megabyte to hash it. Empty when
21243
+ * the file is gone (a delete, which its status already says). */
21244
+ async function worktreeStamp(dir, filePath) {
21245
+ if (!insideWorktree(dir, filePath)) return "";
21246
+ try {
21247
+ const st = await fs$1.stat(path.resolve(dir, filePath));
21248
+ return `${st.size}:${st.mtimeMs}`;
21249
+ } catch {
21250
+ return "";
21251
+ }
21252
+ }
21193
21253
  /** Per-file chunks of a multi-file `git diff`, keyed by the new path
21194
21254
  * (`b/<path>` in the header; the old path for a deletion). */
21195
21255
  function splitPatch(full) {
@@ -21289,15 +21349,19 @@ async function batchContents(dir, rev, paths) {
21289
21349
  });
21290
21350
  return result;
21291
21351
  }
21352
+ /** git-reported paths are normally relative and inside the tree, but
21353
+ * crafted repo content must not read outside it. */
21354
+ function insideWorktree(dir, filePath) {
21355
+ const root = path.resolve(dir);
21356
+ const full = path.resolve(dir, filePath);
21357
+ return full === root || full.startsWith(root + path.sep);
21358
+ }
21292
21359
  /** The checkout's copy of a file, or null when it is missing, over
21293
- * MAX_FILE_BYTES, or binary. Path-contained: git-reported paths are
21294
- * normally relative and inside the tree, but crafted repo content must
21295
- * not read outside it. */
21360
+ * MAX_FILE_BYTES, or binary. */
21296
21361
  async function readWorktreeFile(dir, filePath) {
21297
21362
  try {
21298
- const root = path.resolve(dir);
21363
+ if (!insideWorktree(dir, filePath)) throw new Error(`path escapes worktree: ${filePath}`);
21299
21364
  const full = path.resolve(dir, filePath);
21300
- if (full !== root && !full.startsWith(root + path.sep)) throw new Error(`path escapes worktree: ${filePath}`);
21301
21365
  if ((await fs$1.stat(full)).size > MAX_FILE_BYTES) return null;
21302
21366
  const text = await fs$1.readFile(full, "utf8");
21303
21367
  return text.includes("\0") ? null : text;
@@ -21305,6 +21369,42 @@ async function readWorktreeFile(dir, filePath) {
21305
21369
  return null;
21306
21370
  }
21307
21371
  }
21372
+ /** Raw bytes of one side of a file, for the review's inline preview of a
21373
+ * binary it can show: a blob at `rev`, or the checkout when `rev` is
21374
+ * `worktree`. Null for a side that does not exist, is unreadable, or is
21375
+ * over MAX_PREVIEW_BYTES — the card falls back to a link either way, so
21376
+ * the reasons do not need telling apart. */
21377
+ async function readBlobAt(dir, rev, filePath) {
21378
+ if (!insideWorktree(dir, filePath)) return null;
21379
+ if (rev === "worktree") try {
21380
+ const full = path.resolve(dir, filePath);
21381
+ if ((await fs$1.stat(full)).size > MAX_PREVIEW_BYTES) return null;
21382
+ return await fs$1.readFile(full);
21383
+ } catch {
21384
+ return null;
21385
+ }
21386
+ return new Promise((resolve) => {
21387
+ const proc = spawn("git", [
21388
+ "cat-file",
21389
+ "blob",
21390
+ `${rev}:${filePath}`
21391
+ ], { cwd: dir });
21392
+ const chunks = [];
21393
+ let size = 0;
21394
+ let over = false;
21395
+ proc.stdout.on("data", (chunk) => {
21396
+ size += chunk.length;
21397
+ if (size > MAX_PREVIEW_BYTES) {
21398
+ over = true;
21399
+ proc.kill();
21400
+ return;
21401
+ }
21402
+ chunks.push(chunk);
21403
+ });
21404
+ proc.on("error", () => resolve(null));
21405
+ proc.on("close", (code) => resolve(over || code !== 0 ? null : Buffer.concat(chunks)));
21406
+ });
21407
+ }
21308
21408
  //#endregion
21309
21409
  //#region src/routes/api/workspaces/$id/diff/+handler.ts
21310
21410
  var SCOPES = [
@@ -21314,7 +21414,7 @@ var SCOPES = [
21314
21414
  ];
21315
21415
  //#endregion
21316
21416
  //#region __marko-run__api.workspaces.$.diff.js
21317
- var getHandler$5 = normalizeHandler(Run.GET({ search: (value) => ({
21417
+ var getHandler$6 = normalizeHandler(Run.GET({ search: (value) => ({
21318
21418
  base: typeof value.base === "string" && value.base ? value.base : void 0,
21319
21419
  scope: SCOPES.includes(value.scope) ? value.scope : value.uncommitted === "1" || value.uncommitted === "true" ? "working" : "committed",
21320
21420
  pr: typeof value.pr === "string" && value.pr ? value.pr : void 0,
@@ -21330,10 +21430,10 @@ var getHandler$5 = normalizeHandler(Run.GET({ search: (value) => ({
21330
21430
  }),
21331
21431
  ...reviewState(ctx.data.workspace.id)
21332
21432
  })), "GET");
21333
- var get39_options = normalizeOptions("GET", mware11, mware43, getHandler$5);
21433
+ var get39_options = normalizeOptions("GET", mware11, mware43, getHandler$6);
21334
21434
  var head39_options = normalizeOptions("HEAD", mware11, mware43);
21335
21435
  function get39(context) {
21336
- const __getHandler = (data) => call(getHandler$5, noContent, context, data);
21436
+ const __getHandler = (data) => call(getHandler$6, noContent, context, data);
21337
21437
  const __mware43 = (data) => call(mware43, __getHandler, context, data);
21338
21438
  return call(mware11, __mware43, context);
21339
21439
  }
@@ -21341,6 +21441,43 @@ function head39(context) {
21341
21441
  return stripResponseBody(get39(context));
21342
21442
  }
21343
21443
  //#endregion
21444
+ //#region src/routes/api/workspaces/$id/diff/blob/+handler.ts
21445
+ var SHA$1 = /^[0-9a-f]{7,64}$/i;
21446
+ //#endregion
21447
+ //#region __marko-run__api.workspaces.$.diff.blob.js
21448
+ var getHandler$5 = normalizeHandler(Run.GET({ search: (value) => ({
21449
+ worktree: typeof value.worktree === "string" ? value.worktree : "",
21450
+ path: typeof value.path === "string" ? value.path : "",
21451
+ rev: typeof value.rev === "string" ? value.rev : ""
21452
+ }) }, async (ctx) => {
21453
+ const ws = ctx.data.workspace;
21454
+ const { worktree, path: filePath, rev } = ctx.search;
21455
+ const repo = ws.repos.find((r) => r.worktree === worktree);
21456
+ const preview = previewFor(filePath);
21457
+ if (!repo || !filePath || !rev || !preview) throw httpError(400, "bad request");
21458
+ if (rev !== "worktree" && !SHA$1.test(rev)) throw httpError(400, "bad rev");
21459
+ const bytes = await readBlobAt(path.join(ws.path, repo.worktree), rev, filePath);
21460
+ if (!bytes) throw httpError(404, "not found");
21461
+ const body = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);
21462
+ return new Response(body, { headers: {
21463
+ "content-type": preview.type,
21464
+ "content-length": String(bytes.length),
21465
+ "x-content-type-options": "nosniff",
21466
+ "cache-control": rev === "worktree" ? "no-store" : "private, max-age=31536000, immutable",
21467
+ ...preview.kind === "image" && { "content-security-policy": "default-src 'none'; style-src 'unsafe-inline'; sandbox" }
21468
+ } });
21469
+ }), "GET");
21470
+ var get40_options = normalizeOptions("GET", mware11, mware43, getHandler$5);
21471
+ var head40_options = normalizeOptions("HEAD", mware11, mware43);
21472
+ function get40(context) {
21473
+ const __getHandler = (data) => call(getHandler$5, noContent, context, data);
21474
+ const __mware43 = (data) => call(mware43, __getHandler, context, data);
21475
+ return call(mware11, __mware43, context);
21476
+ }
21477
+ function head40(context) {
21478
+ return stripResponseBody(get40(context));
21479
+ }
21480
+ //#endregion
21344
21481
  //#region src/routes/api/workspaces/$id/diff/contents/+handler.ts
21345
21482
  var SHA = /^[0-9a-f]{7,64}$/i;
21346
21483
  /** One side of a file at a section's `oldRev`/`newRev` — what the patch
@@ -21358,28 +21495,28 @@ var getHandler$4 = normalizeHandler(Run.GET({ search: (value) => ({
21358
21495
  path: typeof value.path === "string" ? value.path : "",
21359
21496
  rev: typeof value.rev === "string" ? value.rev : ""
21360
21497
  }) }, async (ctx) => Response.json({ contents: await contentsAt(ctx.data.workspace, ctx.search) })), "GET");
21361
- var get40_options = normalizeOptions("GET", mware11, mware43, getHandler$4);
21362
- var head40_options = normalizeOptions("HEAD", mware11, mware43);
21363
- function get40(context) {
21498
+ var get41_options = normalizeOptions("GET", mware11, mware43, getHandler$4);
21499
+ var head41_options = normalizeOptions("HEAD", mware11, mware43);
21500
+ function get41(context) {
21364
21501
  const __getHandler = (data) => call(getHandler$4, noContent, context, data);
21365
21502
  const __mware43 = (data) => call(mware43, __getHandler, context, data);
21366
21503
  return call(mware11, __mware43, context);
21367
21504
  }
21368
- function head40(context) {
21369
- return stripResponseBody(get40(context));
21505
+ function head41(context) {
21506
+ return stripResponseBody(get41(context));
21370
21507
  }
21371
21508
  //#endregion
21372
21509
  //#region __marko-run__api.workspaces.$.procs.js
21373
21510
  var getHandler$3 = normalizeHandler(Run.GET(async (ctx) => Response.json(await workspaceProcs(ctx.data.workspace.path))), "GET");
21374
- var get41_options = normalizeOptions("GET", mware11, mware43, getHandler$3);
21375
- var head41_options = normalizeOptions("HEAD", mware11, mware43);
21376
- function get41(context) {
21511
+ var get42_options = normalizeOptions("GET", mware11, mware43, getHandler$3);
21512
+ var head42_options = normalizeOptions("HEAD", mware11, mware43);
21513
+ function get42(context) {
21377
21514
  const __getHandler = (data) => call(getHandler$3, noContent, context, data);
21378
21515
  const __mware43 = (data) => call(mware43, __getHandler, context, data);
21379
21516
  return call(mware11, __mware43, context);
21380
21517
  }
21381
- function head41(context) {
21382
- return stripResponseBody(get41(context));
21518
+ function head42(context) {
21519
+ return stripResponseBody(get42(context));
21383
21520
  }
21384
21521
  //#endregion
21385
21522
  //#region src/routes/api/workspaces/$id/prs/+handler.ts
@@ -21416,8 +21553,8 @@ async function pruneDismissedLane(ws, fullName, number) {
21416
21553
  //#endregion
21417
21554
  //#region __marko-run__api.workspaces.$.prs.js
21418
21555
  var postHandler$4 = normalizeHandler(POST$4, "POST");
21419
- var post42_options = normalizeOptions("POST", mware11, mware43, postHandler$4);
21420
- function post42(context) {
21556
+ var post43_options = normalizeOptions("POST", mware11, mware43, postHandler$4);
21557
+ function post43(context) {
21421
21558
  const __postHandler = (data) => call(postHandler$4, noContent, context, data);
21422
21559
  const __mware43 = (data) => call(mware43, __postHandler, context, data);
21423
21560
  return call(mware11, __mware43, context);
@@ -21435,8 +21572,8 @@ var postHandler$3 = normalizeHandler(Run.POST({ json: AddRepo }, async (ctx) =>
21435
21572
  const body = await readBody(ctx);
21436
21573
  return Response.json(await withProgressOp(ctx.params.id, () => addRepo(ctx.params.id, body.fullName, body.baseBranch, body.fork)));
21437
21574
  }), "POST");
21438
- var post43_options = normalizeOptions("POST", mware11, mware43, postHandler$3);
21439
- function post43(context) {
21575
+ var post44_options = normalizeOptions("POST", mware11, mware43, postHandler$3);
21576
+ function post44(context) {
21440
21577
  const __postHandler = (data) => call(postHandler$3, noContent, context, data);
21441
21578
  const __mware43 = (data) => call(mware43, __postHandler, context, data);
21442
21579
  return call(mware11, __mware43, context);
@@ -21447,8 +21584,8 @@ var deleteHandler$1 = normalizeHandler(Run.DELETE(async (ctx) => {
21447
21584
  await withProgressOp(ctx.params.id, () => removeRepo(ctx.params.id, ctx.params.worktree));
21448
21585
  return Response.json({ ok: true });
21449
21586
  }), "DELETE");
21450
- var delete44_options = normalizeOptions("DELETE", mware11, mware43, deleteHandler$1);
21451
- function delete44(context) {
21587
+ var delete45_options = normalizeOptions("DELETE", mware11, mware43, deleteHandler$1);
21588
+ function delete45(context) {
21452
21589
  const __deleteHandler = (data) => call(deleteHandler$1, noContent, context, data);
21453
21590
  const __mware43 = (data) => call(mware43, __deleteHandler, context, data);
21454
21591
  return call(mware11, __mware43, context);
@@ -21461,8 +21598,8 @@ var ReviewAction = /* @__PURE__ */ union([
21461
21598
  worktree: /* @__PURE__ */ string(),
21462
21599
  path: /* @__PURE__ */ string(),
21463
21600
  side: /* @__PURE__ */ picklist(["additions", "deletions"]),
21464
- line_start: /* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ integer(), /* @__PURE__ */ minValue(1)),
21465
- line_end: /* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ integer(), /* @__PURE__ */ minValue(1)),
21601
+ line_start: /* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ integer(), /* @__PURE__ */ minValue(0)),
21602
+ line_end: /* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ integer(), /* @__PURE__ */ minValue(0)),
21466
21603
  text: /* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ trim(), /* @__PURE__ */ minLength(1)),
21467
21604
  head: /* @__PURE__ */ optional(/* @__PURE__ */ string()),
21468
21605
  snippet: /* @__PURE__ */ optional(/* @__PURE__ */ string())
@@ -21497,18 +21634,18 @@ var postHandler$2 = normalizeHandler(Run.POST({ json: ReviewAction }, async (ctx
21497
21634
  return Response.json({ ok: true });
21498
21635
  }), "POST");
21499
21636
  var getHandler$2 = normalizeHandler(GET$2, "GET");
21500
- var get45_options = normalizeOptions("GET", mware11, mware43, getHandler$2);
21501
- var head45_options = normalizeOptions("HEAD", mware11, mware43);
21502
- var post45_options = normalizeOptions("POST", mware11, mware43, postHandler$2);
21503
- function get45(context) {
21637
+ var get46_options = normalizeOptions("GET", mware11, mware43, getHandler$2);
21638
+ var head46_options = normalizeOptions("HEAD", mware11, mware43);
21639
+ var post46_options = normalizeOptions("POST", mware11, mware43, postHandler$2);
21640
+ function get46(context) {
21504
21641
  const __getHandler = (data) => call(getHandler$2, noContent, context, data);
21505
21642
  const __mware43 = (data) => call(mware43, __getHandler, context, data);
21506
21643
  return call(mware11, __mware43, context);
21507
21644
  }
21508
- function head45(context) {
21509
- return stripResponseBody(get45(context));
21645
+ function head46(context) {
21646
+ return stripResponseBody(get46(context));
21510
21647
  }
21511
- function post45(context) {
21648
+ function post46(context) {
21512
21649
  const __postHandler = (data) => call(postHandler$2, noContent, context, data);
21513
21650
  const __mware43 = (data) => call(mware43, __postHandler, context, data);
21514
21651
  return call(mware11, __mware43, context);
@@ -21543,14 +21680,14 @@ var deleteHandler = normalizeHandler(Run.DELETE({ params: ({ id, commentId }) =>
21543
21680
  return Response.json({ ok: true });
21544
21681
  }), "DELETE");
21545
21682
  var patchHandler = normalizeHandler(PATCH, "PATCH");
21546
- var delete46_options = normalizeOptions("DELETE", mware11, mware43, deleteHandler);
21547
- var patch46_options = normalizeOptions("PATCH", mware11, mware43, patchHandler);
21548
- function delete46(context) {
21683
+ var delete47_options = normalizeOptions("DELETE", mware11, mware43, deleteHandler);
21684
+ var patch47_options = normalizeOptions("PATCH", mware11, mware43, patchHandler);
21685
+ function delete47(context) {
21549
21686
  const __deleteHandler = (data) => call(deleteHandler, noContent, context, data);
21550
21687
  const __mware43 = (data) => call(mware43, __deleteHandler, context, data);
21551
21688
  return call(mware11, __mware43, context);
21552
21689
  }
21553
- function patch46(context) {
21690
+ function patch47(context) {
21554
21691
  const __patchHandler = (data) => call(patchHandler, noContent, context, data);
21555
21692
  const __mware43 = (data) => call(mware43, __patchHandler, context, data);
21556
21693
  return call(mware11, __mware43, context);
@@ -21572,18 +21709,18 @@ var postHandler$1 = normalizeHandler(Run.POST({ json: CreateSession }, async (ct
21572
21709
  return Response.json(createSession(ctx.params.id, body.agent || preferredAgent()));
21573
21710
  }), "POST");
21574
21711
  var getHandler$1 = normalizeHandler(GET$1, "GET");
21575
- var get47_options = normalizeOptions("GET", mware11, mware43, getHandler$1);
21576
- var head47_options = normalizeOptions("HEAD", mware11, mware43);
21577
- var post47_options = normalizeOptions("POST", mware11, mware43, postHandler$1);
21578
- function get47(context) {
21712
+ var get48_options = normalizeOptions("GET", mware11, mware43, getHandler$1);
21713
+ var head48_options = normalizeOptions("HEAD", mware11, mware43);
21714
+ var post48_options = normalizeOptions("POST", mware11, mware43, postHandler$1);
21715
+ function get48(context) {
21579
21716
  const __getHandler = (data) => call(getHandler$1, noContent, context, data);
21580
21717
  const __mware43 = (data) => call(mware43, __getHandler, context, data);
21581
21718
  return call(mware11, __mware43, context);
21582
21719
  }
21583
- function head47(context) {
21584
- return stripResponseBody(get47(context));
21720
+ function head48(context) {
21721
+ return stripResponseBody(get48(context));
21585
21722
  }
21586
- function post47(context) {
21723
+ function post48(context) {
21587
21724
  const __postHandler = (data) => call(postHandler$1, noContent, context, data);
21588
21725
  const __mware43 = (data) => call(mware43, __postHandler, context, data);
21589
21726
  return call(mware11, __mware43, context);
@@ -21634,18 +21771,18 @@ var postHandler = normalizeHandler(Run.POST({ json: Body }, async (ctx) => {
21634
21771
  return Response.json(await snapshot(ws, true));
21635
21772
  }), "POST");
21636
21773
  var getHandler = normalizeHandler(GET, "GET");
21637
- var get48_options = normalizeOptions("GET", mware11, mware43, getHandler);
21638
- var head48_options = normalizeOptions("HEAD", mware11, mware43);
21639
- var post48_options = normalizeOptions("POST", mware11, mware43, postHandler);
21640
- function get48(context) {
21774
+ var get49_options = normalizeOptions("GET", mware11, mware43, getHandler);
21775
+ var head49_options = normalizeOptions("HEAD", mware11, mware43);
21776
+ var post49_options = normalizeOptions("POST", mware11, mware43, postHandler);
21777
+ function get49(context) {
21641
21778
  const __getHandler = (data) => call(getHandler, noContent, context, data);
21642
21779
  const __mware43 = (data) => call(mware43, __getHandler, context, data);
21643
21780
  return call(mware11, __mware43, context);
21644
21781
  }
21645
- function head48(context) {
21646
- return stripResponseBody(get48(context));
21782
+ function head49(context) {
21783
+ return stripResponseBody(get49(context));
21647
21784
  }
21648
- function post48(context) {
21785
+ function post49(context) {
21649
21786
  const __postHandler = (data) => call(postHandler, noContent, context, data);
21650
21787
  const __mware43 = (data) => call(mware43, __postHandler, context, data);
21651
21788
  return call(mware11, __mware43, context);
@@ -21922,44 +22059,51 @@ function match_internal(method, pathname) {
21922
22059
  meta: {}
21923
22060
  };
21924
22061
  case "procs": return {
21925
- handler: get41,
22062
+ handler: get42,
21926
22063
  path: "/api/workspaces/$id/procs",
21927
22064
  params: { id: s3 },
21928
- options: get41_options,
22065
+ options: get42_options,
21929
22066
  meta: {}
21930
22067
  };
21931
22068
  case "review": return {
21932
- handler: get45,
22069
+ handler: get46,
21933
22070
  path: "/api/workspaces/$id/review",
21934
22071
  params: { id: s3 },
21935
- options: get45_options,
22072
+ options: get46_options,
21936
22073
  meta: {}
21937
22074
  };
21938
22075
  case "sessions": return {
21939
- handler: get47,
22076
+ handler: get48,
21940
22077
  path: "/api/workspaces/$id/sessions",
21941
22078
  params: { id: s3 },
21942
- options: get47_options,
22079
+ options: get48_options,
21943
22080
  meta: {}
21944
22081
  };
21945
22082
  case "skills": return {
21946
- handler: get48,
22083
+ handler: get49,
21947
22084
  path: "/api/workspaces/$id/skills",
21948
22085
  params: { id: s3 },
21949
- options: get48_options,
22086
+ options: get49_options,
21950
22087
  meta: {}
21951
22088
  };
21952
22089
  }
21953
22090
  else if (pathname.slice(i3, i4 - 1) === "diff") {
21954
22091
  const i5 = pathname.indexOf("/", i4) + 1;
21955
- if (!i5 || i5 === len) {
21956
- if (pathname.slice(i4, i5 ? -1 : len) === "contents") return {
22092
+ if (!i5 || i5 === len) switch (pathname.slice(i4, i5 ? -1 : len)) {
22093
+ case "blob": return {
21957
22094
  handler: get40,
21958
- path: "/api/workspaces/$id/diff/contents",
22095
+ path: "/api/workspaces/$id/diff/blob",
21959
22096
  params: { id: s3 },
21960
22097
  options: get40_options,
21961
22098
  meta: {}
21962
22099
  };
22100
+ case "contents": return {
22101
+ handler: get41,
22102
+ path: "/api/workspaces/$id/diff/contents",
22103
+ params: { id: s3 },
22104
+ options: get41_options,
22105
+ meta: {}
22106
+ };
21963
22107
  }
21964
22108
  }
21965
22109
  }
@@ -22228,44 +22372,51 @@ function match_internal(method, pathname) {
22228
22372
  meta: {}
22229
22373
  };
22230
22374
  case "procs": return {
22231
- handler: head41,
22375
+ handler: head42,
22232
22376
  path: "/api/workspaces/$id/procs",
22233
22377
  params: { id: s3 },
22234
- options: head41_options,
22378
+ options: head42_options,
22235
22379
  meta: {}
22236
22380
  };
22237
22381
  case "review": return {
22238
- handler: head45,
22382
+ handler: head46,
22239
22383
  path: "/api/workspaces/$id/review",
22240
22384
  params: { id: s3 },
22241
- options: head45_options,
22385
+ options: head46_options,
22242
22386
  meta: {}
22243
22387
  };
22244
22388
  case "sessions": return {
22245
- handler: head47,
22389
+ handler: head48,
22246
22390
  path: "/api/workspaces/$id/sessions",
22247
22391
  params: { id: s3 },
22248
- options: head47_options,
22392
+ options: head48_options,
22249
22393
  meta: {}
22250
22394
  };
22251
22395
  case "skills": return {
22252
- handler: head48,
22396
+ handler: head49,
22253
22397
  path: "/api/workspaces/$id/skills",
22254
22398
  params: { id: s3 },
22255
- options: head48_options,
22399
+ options: head49_options,
22256
22400
  meta: {}
22257
22401
  };
22258
22402
  }
22259
22403
  else if (pathname.slice(i3, i4 - 1) === "diff") {
22260
22404
  const i5 = pathname.indexOf("/", i4) + 1;
22261
- if (!i5 || i5 === len) {
22262
- if (pathname.slice(i4, i5 ? -1 : len) === "contents") return {
22405
+ if (!i5 || i5 === len) switch (pathname.slice(i4, i5 ? -1 : len)) {
22406
+ case "blob": return {
22263
22407
  handler: head40,
22264
- path: "/api/workspaces/$id/diff/contents",
22408
+ path: "/api/workspaces/$id/diff/blob",
22265
22409
  params: { id: s3 },
22266
22410
  options: head40_options,
22267
22411
  meta: {}
22268
22412
  };
22413
+ case "contents": return {
22414
+ handler: head41,
22415
+ path: "/api/workspaces/$id/diff/contents",
22416
+ params: { id: s3 },
22417
+ options: head41_options,
22418
+ meta: {}
22419
+ };
22269
22420
  }
22270
22421
  }
22271
22422
  }
@@ -22436,38 +22587,38 @@ function match_internal(method, pathname) {
22436
22587
  meta: {}
22437
22588
  };
22438
22589
  case "prs": return {
22439
- handler: post42,
22590
+ handler: post43,
22440
22591
  path: "/api/workspaces/$id/prs",
22441
22592
  params: { id: s3 },
22442
- options: post42_options,
22593
+ options: post43_options,
22443
22594
  meta: {}
22444
22595
  };
22445
22596
  case "repos": return {
22446
- handler: post43,
22597
+ handler: post44,
22447
22598
  path: "/api/workspaces/$id/repos",
22448
22599
  params: { id: s3 },
22449
- options: post43_options,
22600
+ options: post44_options,
22450
22601
  meta: {}
22451
22602
  };
22452
22603
  case "review": return {
22453
- handler: post45,
22604
+ handler: post46,
22454
22605
  path: "/api/workspaces/$id/review",
22455
22606
  params: { id: s3 },
22456
- options: post45_options,
22607
+ options: post46_options,
22457
22608
  meta: {}
22458
22609
  };
22459
22610
  case "sessions": return {
22460
- handler: post47,
22611
+ handler: post48,
22461
22612
  path: "/api/workspaces/$id/sessions",
22462
22613
  params: { id: s3 },
22463
- options: post47_options,
22614
+ options: post48_options,
22464
22615
  meta: {}
22465
22616
  };
22466
22617
  case "skills": return {
22467
- handler: post48,
22618
+ handler: post49,
22468
22619
  path: "/api/workspaces/$id/skills",
22469
22620
  params: { id: s3 },
22470
- options: post48_options,
22621
+ options: post49_options,
22471
22622
  meta: {}
22472
22623
  };
22473
22624
  }
@@ -22558,13 +22709,13 @@ function match_internal(method, pathname) {
22558
22709
  if (!i5 || i5 === len) {
22559
22710
  const s5 = decodeURIComponent(pathname.slice(i4, i5 ? -1 : len));
22560
22711
  if (s5) return {
22561
- handler: delete44,
22712
+ handler: delete45,
22562
22713
  path: "/api/workspaces/$id/repos/$worktree",
22563
22714
  params: {
22564
22715
  id: s3,
22565
22716
  worktree: s5
22566
22717
  },
22567
- options: delete44_options,
22718
+ options: delete45_options,
22568
22719
  meta: {}
22569
22720
  };
22570
22721
  }
@@ -22575,13 +22726,13 @@ function match_internal(method, pathname) {
22575
22726
  if (!i5 || i5 === len) {
22576
22727
  const s5 = decodeURIComponent(pathname.slice(i4, i5 ? -1 : len));
22577
22728
  if (s5) return {
22578
- handler: delete46,
22729
+ handler: delete47,
22579
22730
  path: "/api/workspaces/$id/review/$commentId",
22580
22731
  params: {
22581
22732
  id: s3,
22582
22733
  commentId: s5
22583
22734
  },
22584
- options: delete46_options,
22735
+ options: delete47_options,
22585
22736
  meta: {}
22586
22737
  };
22587
22738
  }
@@ -22630,13 +22781,13 @@ function match_internal(method, pathname) {
22630
22781
  if (!i5 || i5 === len) {
22631
22782
  const s5 = decodeURIComponent(pathname.slice(i4, i5 ? -1 : len));
22632
22783
  if (s5) return {
22633
- handler: patch46,
22784
+ handler: patch47,
22634
22785
  path: "/api/workspaces/$id/review/$commentId",
22635
22786
  params: {
22636
22787
  id: s3,
22637
22788
  commentId: s5
22638
22789
  },
22639
- options: patch46_options,
22790
+ options: patch47_options,
22640
22791
  meta: {}
22641
22792
  };
22642
22793
  }
@@ -26374,21 +26525,47 @@ var import_websocket_server = /* @__PURE__ */ __toESM(require_websocket_server()
26374
26525
  * same question through tmux passthrough to choose between a real image and
26375
26526
  * chafa's ASCII art. Answering without the 4 is how a pane that can show
26376
26527
  * pictures ends up saying "failed to spawn chafa". The claim is true: the
26377
- * browser terminal decodes sixel (@xterm/addon-image in term.marko). */
26528
+ * browser terminal decodes sixel (@xterm/addon-image in term.marko).
26529
+ *
26530
+ * The two XTWINOPS size queries are tmux's, sent on every attach: it needs
26531
+ * the client's cell size before it will paint a stored image, and the pty's
26532
+ * winsize never carries one (node-pty leaves the pixel fields at zero). The
26533
+ * server knows the grid from the handshake and the pixels from what the
26534
+ * client reports, so it answers both without the query ever leaving the
26535
+ * machine — see the note on `push` for why that matters.
26536
+ */
26378
26537
  var queries = [
26379
- ["\x1B[>0c", "\x1B[>0;276;0c"],
26380
- ["\x1B[>c", "\x1B[>0;276;0c"],
26381
- ["\x1B[0c", "\x1B[?1;2;4c"],
26382
- ["\x1B[c", "\x1B[?1;2;4c"]
26538
+ ["\x1B[>0c", () => "\x1B[>0;276;0c"],
26539
+ ["\x1B[>c", () => "\x1B[>0;276;0c"],
26540
+ ["\x1B[0c", () => "\x1B[?1;2;4c"],
26541
+ ["\x1B[c", () => "\x1B[?1;2;4c"],
26542
+ ["\x1B[18t", (s) => `\x1b[8;${s.rows};${s.cols}t`],
26543
+ ["\x1B[14t", (s) => s.pixels ? `\x1b[4;${s.pixels[1]};${s.pixels[0]}t` : null]
26383
26544
  ];
26384
26545
  /**
26385
- * Answer terminal identity probes beside the PTY instead of making them
26386
- * cross the browser websocket. A short-lived TUI can otherwise exit before
26387
- * xterm's answer returns, leaving the answer as editable text at the shell
26388
- * prompt. The carry handles an escape sequence split between PTY reads.
26546
+ * Answer terminal identity and size probes beside the PTY instead of making
26547
+ * them cross the browser websocket. A short-lived TUI can otherwise exit
26548
+ * before xterm's answer returns, leaving the answer as editable text at the
26549
+ * shell prompt. The carry handles an escape sequence split between PTY
26550
+ * reads.
26551
+ *
26552
+ * For the size probes the round trip is worse than late — it is unbalanced.
26553
+ * tmux absorbs a size reply only while it still has a query outstanding;
26554
+ * one reply more than it asked for is passed straight through to the pane
26555
+ * as if typed, which is how `8;42;49t4;714;392t` ends up in an agent's
26556
+ * input box. A reply can outlive its query: the client queues anything it
26557
+ * produces while the socket is closed (a pane suspends when nobody is
26558
+ * looking at it) and flushes that on the next connect — into a new tmux
26559
+ * client that has already had its own queries answered. Answering here,
26560
+ * in the same tick the query arrives, means one query is one reply and a
26561
+ * reply can never cross a socket.
26389
26562
  */
26390
26563
  var TerminalReplies = class {
26564
+ size;
26391
26565
  carry = "";
26566
+ constructor(size) {
26567
+ this.size = size;
26568
+ }
26392
26569
  get pending() {
26393
26570
  return !!this.carry;
26394
26571
  }
@@ -26408,7 +26585,9 @@ var TerminalReplies = class {
26408
26585
  const rest = input.slice(esc);
26409
26586
  const match = queries.find(([query]) => rest.startsWith(query));
26410
26587
  if (match) {
26411
- replies.push(match[1]);
26588
+ const reply = match[1](this.size());
26589
+ if (reply == null) output += match[0];
26590
+ else replies.push(reply);
26412
26591
  offset = esc + match[0].length;
26413
26592
  continue;
26414
26593
  }
@@ -26474,10 +26653,12 @@ var PING_MS$1 = 15e3;
26474
26653
  * 5–20× on the wire. Few sockets live at once, so per-socket zlib state is
26475
26654
  * not the concern ws's docs raise for large fleets. */
26476
26655
  var DEFLATE_THRESHOLD = 512;
26477
- /** The terminal's answer to tmux's CSI 14t — window size in pixels, which
26478
- * divided by the grid is the cell size tmux needs before it will paint an
26479
- * image. Recognised on the way through rather than parsed: all this marks
26480
- * is the moment tmux stopped guessing. */
26656
+ /** The answer to tmux's CSI 14t — window size in pixels, which divided by
26657
+ * the grid is the cell size tmux needs before it will paint an image.
26658
+ * Normally this server's own (terminal-replies.ts); matched rather than
26659
+ * parsed, because all it marks is the moment tmux stopped guessing. Still
26660
+ * matched on client input too: a browser from an older build answers the
26661
+ * query itself. */
26481
26662
  var WINDOW_PIXELS_REPLY = /\x1b\[4;\d+;\d+t/;
26482
26663
  /** Long enough for the reply above to reach tmux's client and reach the
26483
26664
  * server as a new cell size, short enough to stay inside the repaint the
@@ -26555,6 +26736,8 @@ async function handleTermConnection(ws, req) {
26555
26736
  const rows = Number(url.searchParams.get("rows")) || 24;
26556
26737
  const connectedVisible = url.searchParams.get("visible") !== "0";
26557
26738
  const respawn = url.searchParams.get("respawn") === "1";
26739
+ let dims = [cols, rows];
26740
+ let pixels = pixelPair(Number(url.searchParams.get("pw")), Number(url.searchParams.get("ph")));
26558
26741
  let proc;
26559
26742
  let ping;
26560
26743
  let flushTimer;
@@ -26643,7 +26826,11 @@ async function handleTermConnection(ws, req) {
26643
26826
  }
26644
26827
  };
26645
26828
  let exited = false;
26646
- const terminalReplies = new TerminalReplies();
26829
+ const terminalReplies = new TerminalReplies(() => ({
26830
+ cols: dims[0],
26831
+ rows: dims[1],
26832
+ pixels
26833
+ }));
26647
26834
  let replyCarryTimer;
26648
26835
  const queueOutput = (data) => {
26649
26836
  if (!data) return;
@@ -26655,7 +26842,10 @@ async function handleTermConnection(ws, req) {
26655
26842
  clearTimeout(replyCarryTimer);
26656
26843
  replyCarryTimer = void 0;
26657
26844
  const handled = terminalReplies.push(data);
26658
- for (const reply of handled.replies) if (!exited) ptyProc.write(reply);
26845
+ for (const reply of handled.replies) {
26846
+ if (!exited) ptyProc.write(reply);
26847
+ if (WINDOW_PIXELS_REPLY.test(reply)) redrawWithCellSize();
26848
+ }
26659
26849
  queueOutput(handled.output);
26660
26850
  if (terminalReplies.pending) replyCarryTimer = setTimeout(() => {
26661
26851
  replyCarryTimer = void 0;
@@ -26682,7 +26872,6 @@ async function handleTermConnection(ws, req) {
26682
26872
  });
26683
26873
  visible = connectedVisible;
26684
26874
  if (visible) trackViewer(session.id, 1);
26685
- let dims = [cols, rows];
26686
26875
  const forceWindowSize = () => {
26687
26876
  if (!visible) return;
26688
26877
  lastForced.set(session.id, `${dims[0]}x${dims[1]}`);
@@ -26724,6 +26913,8 @@ async function handleTermConnection(ws, req) {
26724
26913
  if (WINDOW_PIXELS_REPLY.test(input)) redrawWithCellSize();
26725
26914
  } else {
26726
26915
  const text = data.toString();
26916
+ const px = parsePixels(text);
26917
+ if (px) pixels = px;
26727
26918
  const resize = parseResize(text);
26728
26919
  if (resize) {
26729
26920
  const moved = dims[0] !== resize[0] || dims[1] !== resize[1];
@@ -26785,6 +26976,19 @@ function parseResize(text) {
26785
26976
  if (Array.isArray(resize) && Number.isInteger(resize[0]) && Number.isInteger(resize[1]) && resize[0] > 0 && resize[1] > 0) return [resize[0], resize[1]];
26786
26977
  } catch {}
26787
26978
  }
26979
+ /** The text area in CSS pixels, as `{ px: [w, h] }` on a resize frame or
26980
+ * `pw`/`ph` on the handshake. What tmux's `CSI 14t` asks for, and the one
26981
+ * part of the answer the server cannot work out for itself. */
26982
+ function pixelPair(w, h) {
26983
+ return Number.isFinite(w) && Number.isFinite(h) && w > 0 && h > 0 ? [Math.round(w), Math.round(h)] : null;
26984
+ }
26985
+ function parsePixels(text) {
26986
+ try {
26987
+ const px = JSON.parse(text)?.px;
26988
+ if (Array.isArray(px)) return pixelPair(px[0], px[1]);
26989
+ } catch {}
26990
+ return null;
26991
+ }
26788
26992
  //#endregion
26789
26993
  //#region src/server/events-ws.ts
26790
26994
  /** App-level heartbeat — keeps NAT/VPN mappings warm and lets the client
@@ -26931,4 +27135,4 @@ server.listen(port, () => {
26931
27135
  //#endregion
26932
27136
  export {};
26933
27137
 
26934
- ;var __MARKO_MANIFEST__={"AA0T2xt":{"block":[2,"stylesheet#/assets/icon-arrow-down-DSmBsYc0.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-DSmBsYc0.css\"",">",2,"stylesheet#/assets/app-page-mpLi5gUf.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-mpLi5gUf.css\"",">"],"defer":[2,"/assets/settings-CkY2AXTw.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/settings-CkY2AXTw.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_D8fFV5Ym.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_D8fFV5Ym.js\"",">",2,"modulepreload#/assets/_s72b-JB_.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_s72b-JB_.js\"",">"]},"ZLT8joi":{"block":[2,"stylesheet#/assets/icon-arrow-down-DSmBsYc0.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-DSmBsYc0.css\"",">",2,"stylesheet#/assets/app-page-mpLi5gUf.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-mpLi5gUf.css\"",">"],"defer":[2,"/assets/new-CkY2AXTw.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/new-CkY2AXTw.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_D8fFV5Ym.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_D8fFV5Ym.js\"",">",2,"modulepreload#/assets/_s72b-JB_.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_s72b-JB_.js\"",">"]},"ibphXY4":{"block":[2,"stylesheet#/assets/icon-arrow-down-DSmBsYc0.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-DSmBsYc0.css\"",">",2,"stylesheet#/assets/app-page-mpLi5gUf.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-mpLi5gUf.css\"",">"],"defer":[2,"/assets/w._-CkY2AXTw.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-CkY2AXTw.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_D8fFV5Ym.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_D8fFV5Ym.js\"",">",2,"modulepreload#/assets/_s72b-JB_.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_s72b-JB_.js\"",">"]},"T$MNY0k":{"block":[2,"stylesheet#/assets/icon-arrow-down-DSmBsYc0.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-DSmBsYc0.css\"",">",2,"stylesheet#/assets/app-page-mpLi5gUf.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-mpLi5gUf.css\"",">"],"defer":[2,"/assets/w._-Csr1ikwd.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-Csr1ikwd.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_D8fFV5Ym.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_D8fFV5Ym.js\"",">",2,"modulepreload#/assets/_s72b-JB_.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_s72b-JB_.js\"",">"]},"LH2lXAg":{"block":[2,"stylesheet#/assets/icon-arrow-down-DSmBsYc0.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-DSmBsYc0.css\"",">",2,"stylesheet#/assets/app-page-mpLi5gUf.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-mpLi5gUf.css\"",">"],"defer":[2,"/assets/w-CkY2AXTw.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w-CkY2AXTw.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_D8fFV5Ym.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_D8fFV5Ym.js\"",">",2,"modulepreload#/assets/_s72b-JB_.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_s72b-JB_.js\"",">"]},"_A":{"block":[2,"stylesheet#/assets/review-view-BrfjQmXA.css",6,"<link",0," rel=\"stylesheet\" href=\"",1,"assets/review-view-BrfjQmXA.css\"",">",2,"stylesheet#/assets/icon-arrow-down-DSmBsYc0.css",6,"<link",0," rel=\"stylesheet\" href=\"",1,"assets/icon-arrow-down-DSmBsYc0.css\"",">"],"defer":[2,"/assets/review-view-DtiHctEJ.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/review-view-DtiHctEJ.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">"]}};
27138
+ ;var __MARKO_MANIFEST__={"ibphXY4":{"block":[2,"stylesheet#/assets/icon-arrow-down-CnC9B8zr.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-CnC9B8zr.css\"",">",2,"stylesheet#/assets/app-page-ujOO9O9j.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-ujOO9O9j.css\"",">"],"defer":[2,"/assets/w._-OkHtBkzU.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-OkHtBkzU.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_CWOQeVjT.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_CWOQeVjT.js\"",">",2,"modulepreload#/assets/_D1_IgqEt.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_D1_IgqEt.js\"",">"]},"ZLT8joi":{"block":[2,"stylesheet#/assets/icon-arrow-down-CnC9B8zr.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-CnC9B8zr.css\"",">",2,"stylesheet#/assets/app-page-ujOO9O9j.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-ujOO9O9j.css\"",">"],"defer":[2,"/assets/new-OkHtBkzU.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/new-OkHtBkzU.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_CWOQeVjT.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_CWOQeVjT.js\"",">",2,"modulepreload#/assets/_D1_IgqEt.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_D1_IgqEt.js\"",">"]},"T$MNY0k":{"block":[2,"stylesheet#/assets/icon-arrow-down-CnC9B8zr.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-CnC9B8zr.css\"",">",2,"stylesheet#/assets/app-page-ujOO9O9j.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-ujOO9O9j.css\"",">"],"defer":[2,"/assets/w._-Bl7_ITGh.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-Bl7_ITGh.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_CWOQeVjT.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_CWOQeVjT.js\"",">",2,"modulepreload#/assets/_D1_IgqEt.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_D1_IgqEt.js\"",">"]},"AA0T2xt":{"block":[2,"stylesheet#/assets/icon-arrow-down-CnC9B8zr.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-CnC9B8zr.css\"",">",2,"stylesheet#/assets/app-page-ujOO9O9j.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-ujOO9O9j.css\"",">"],"defer":[2,"/assets/settings-OkHtBkzU.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/settings-OkHtBkzU.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_CWOQeVjT.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_CWOQeVjT.js\"",">",2,"modulepreload#/assets/_D1_IgqEt.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_D1_IgqEt.js\"",">"]},"LH2lXAg":{"block":[2,"stylesheet#/assets/icon-arrow-down-CnC9B8zr.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-CnC9B8zr.css\"",">",2,"stylesheet#/assets/app-page-ujOO9O9j.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-ujOO9O9j.css\"",">"],"defer":[2,"/assets/w-OkHtBkzU.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w-OkHtBkzU.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_CWOQeVjT.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_CWOQeVjT.js\"",">",2,"modulepreload#/assets/_D1_IgqEt.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_D1_IgqEt.js\"",">"]},"_A":{"block":[2,"stylesheet#/assets/review-view-BYC11tmH.css",6,"<link",0," rel=\"stylesheet\" href=\"",1,"assets/review-view-BYC11tmH.css\"",">",2,"stylesheet#/assets/icon-arrow-down-CnC9B8zr.css",6,"<link",0," rel=\"stylesheet\" href=\"",1,"assets/icon-arrow-down-CnC9B8zr.css\"",">"],"defer":[2,"/assets/review-view-X_RUf4F7.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/review-view-X_RUf4F7.js\"","></script>",2,"modulepreload#/assets/_4WrdbxBF.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_4WrdbxBF.js\"",">"]}};