@dylanpiercey/work 0.0.157 → 0.0.159

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 (72) hide show
  1. package/dist/index.mjs +466 -1934
  2. package/dist/public/assets/_BEMlWJ3i.js +1 -0
  3. package/dist/public/assets/_BF3jdOKL.js +1 -0
  4. package/dist/public/assets/_BN2MNMec.js +1 -0
  5. package/dist/public/assets/_BX85X6vL.js +1 -0
  6. package/dist/public/assets/_BgTyVBoz.js +1 -0
  7. package/dist/public/assets/_BtPnCFTI.js +1 -0
  8. package/dist/public/assets/_C62EU_76.js +1 -0
  9. package/dist/public/assets/_C9t1K6t0.js +1 -0
  10. package/dist/public/assets/_CV1AUMfT.js +1 -0
  11. package/dist/public/assets/_DONc62ot.js +1 -0
  12. package/dist/public/assets/_DQxAgIZ5.js +1 -0
  13. package/dist/public/assets/_DRrf0ps3.js +1 -0
  14. package/dist/public/assets/_DUwNzfo2.js +1 -0
  15. package/dist/public/assets/_DgrVjbbj.js +83 -0
  16. package/dist/public/assets/_DgrVjbbj.js.br +0 -0
  17. package/dist/public/assets/_DliuBq2F.js +1 -0
  18. package/dist/public/assets/_DrrcCvtP.js +1 -0
  19. package/dist/public/assets/_DrrcCvtP.js.br +0 -0
  20. package/dist/public/assets/_Dt9shJET.js +1 -0
  21. package/dist/public/assets/{_dHGVn24e.js → _DzlXAMSp.js} +45 -45
  22. package/dist/public/assets/_DzlXAMSp.js.br +0 -0
  23. package/dist/public/assets/_KbIm5gXb.js +1 -0
  24. package/dist/public/assets/_kP4m5eyY.js +1 -0
  25. package/dist/public/assets/_kRAx7xJD.js +1 -0
  26. package/dist/public/assets/_wGg-Flxh.js +1 -0
  27. package/dist/public/assets/{app-page-D2BI9pqy.css → app-page-DkJHV2Hb.css} +1 -1
  28. package/dist/public/assets/app-page-DkJHV2Hb.css.br +0 -0
  29. package/dist/public/assets/diff-view-B7Akkn43.js +2 -0
  30. package/dist/public/assets/{diff-view-CDR_rQOe.css → diff-view-D_kTcxOl.css} +1 -1
  31. package/dist/public/assets/diff-view-D_kTcxOl.css.br +0 -0
  32. package/dist/public/assets/{icon-arrow-down-xhBqf52S.css → icon-arrow-down-ptjlirxL.css} +1 -1
  33. package/dist/public/assets/icon-arrow-down-ptjlirxL.css.br +0 -0
  34. package/dist/public/assets/new-CjRAL7y8.js +1 -0
  35. package/dist/public/assets/settings-CjRAL7y8.js +1 -0
  36. package/dist/public/assets/w-CjRAL7y8.js +1 -0
  37. package/dist/public/assets/w._-CjRAL7y8.js +1 -0
  38. package/dist/public/assets/w._-DvPeuuNc.js +1 -0
  39. package/package.json +1 -1
  40. package/dist/public/assets/_2vYIuIib.js +0 -1
  41. package/dist/public/assets/_BB0LITVp.js +0 -1
  42. package/dist/public/assets/_BIJpL70W.js +0 -1
  43. package/dist/public/assets/_BQi9QWKd.js +0 -1
  44. package/dist/public/assets/_BcEuKTJx.js +0 -1
  45. package/dist/public/assets/_Bsl8llqw.js +0 -1
  46. package/dist/public/assets/_BxQ_-xPH.js +0 -1
  47. package/dist/public/assets/_C-2aR8XG.js +0 -1
  48. package/dist/public/assets/_C3ym7hxu.js +0 -1
  49. package/dist/public/assets/_CUAQigw_.js +0 -83
  50. package/dist/public/assets/_CUAQigw_.js.br +0 -0
  51. package/dist/public/assets/_Cf-9k3zD.js +0 -1
  52. package/dist/public/assets/_Cjgj-pBB.js +0 -1
  53. package/dist/public/assets/_Cjgj-pBB.js.br +0 -0
  54. package/dist/public/assets/_D66zCDkb.js +0 -1
  55. package/dist/public/assets/_DOiEoSai.js +0 -1
  56. package/dist/public/assets/_DfpiGKYM.js +0 -1
  57. package/dist/public/assets/_Jqsd_7oO.js +0 -1
  58. package/dist/public/assets/_SbAHZSQh.js +0 -1
  59. package/dist/public/assets/_YoOFMyGk.js +0 -1
  60. package/dist/public/assets/_dHGVn24e.js.br +0 -0
  61. package/dist/public/assets/_eF6YdkxU.js +0 -1
  62. package/dist/public/assets/_qEbnUCeE.js +0 -1
  63. package/dist/public/assets/_r5iIfsdp.js +0 -1
  64. package/dist/public/assets/app-page-D2BI9pqy.css.br +0 -0
  65. package/dist/public/assets/diff-view-CDR_rQOe.css.br +0 -0
  66. package/dist/public/assets/diff-view-CyDQspSd.js +0 -2
  67. package/dist/public/assets/icon-arrow-down-xhBqf52S.css.br +0 -0
  68. package/dist/public/assets/new-xKLJRIst.js +0 -1
  69. package/dist/public/assets/settings-xKLJRIst.js +0 -1
  70. package/dist/public/assets/w-xKLJRIst.js +0 -1
  71. package/dist/public/assets/w._-CaFh5fWn.js +0 -1
  72. package/dist/public/assets/w._-xKLJRIst.js +0 -1
package/dist/index.mjs CHANGED
@@ -6697,13 +6697,13 @@ var _layout_default = _template("a", (input) => {
6697
6697
  * A lost events socket alone does not count — polling keeps the app live,
6698
6698
  * so the "Reconnecting…" pill stays quiet for bus-only blips. */
6699
6699
  var reachable = true;
6700
- var listeners = /* @__PURE__ */ new Set();
6700
+ var listeners$1 = /* @__PURE__ */ new Set();
6701
6701
  /** Notify only on change: the pill's grace-period timer restarts on every
6702
6702
  * `false` it hears, which would keep it permanently armed. */
6703
6703
  function setReachable(next) {
6704
6704
  if (reachable === next) return;
6705
6705
  reachable = next;
6706
- for (const fn of listeners) fn(next);
6706
+ for (const fn of listeners$1) fn(next);
6707
6707
  }
6708
6708
  //#endregion
6709
6709
  //#region src/client/session.ts
@@ -6941,6 +6941,21 @@ function repoLabel(fullName) {
6941
6941
  if (parts.length >= 3 && parts[0].includes(".") && parts[0] === primaryHost) return parts.slice(1).join("/");
6942
6942
  return fullName;
6943
6943
  }
6944
+ //#endregion
6945
+ //#region src/client/workspace-order.ts
6946
+ /** Can a workspace digit open it? A pending (restoring) row is in the list
6947
+ * but has nothing to mount yet, so it is skipped rather than given a number
6948
+ * it cannot use. */
6949
+ var openable = (ws) => ws.status === "active" && !ws.pending;
6950
+ /**
6951
+ * The workspaces ⌘/Ctrl+1–9 number, in the order the sidebar draws them.
6952
+ *
6953
+ * The nav sorts by name (see `side-nav`'s `sortedIds`) while the API hands
6954
+ * the shell its list newest-first, so indexing the raw array made the 3 key
6955
+ * open a different workspace than the row wearing the 3 badge. One list,
6956
+ * read by both the badge and the shortcut.
6957
+ */
6958
+ var numbered = (all) => all.filter(openable).sort((a, b) => a.name.localeCompare(b.name));
6944
6959
  var toastKind = {
6945
6960
  error: "_bm",
6946
6961
  warn: "_bn",
@@ -7170,6 +7185,7 @@ function setTheme(mode) {
7170
7185
  //#region src/client/theme.ts
7171
7186
  var LIGHT_CHROME = "#fafafa";
7172
7187
  var DARK_CHROME = "#131316";
7188
+ var listeners = /* @__PURE__ */ new Set();
7173
7189
  /** Force light/dark, or clear to follow the OS. The layout declares
7174
7190
  * `:root[data-theme=…] { color-scheme: … }`; native `light-dark()` and the
7175
7191
  * bundler's polyfill both key off that. */
@@ -7179,6 +7195,7 @@ function applyTheme(mode) {
7179
7195
  if (mode === "system") root.removeAttribute("data-theme");
7180
7196
  else root.setAttribute("data-theme", mode);
7181
7197
  syncThemeColorMetas(mode, root.style.getPropertyValue("--accent").trim() || "");
7198
+ for (const listener of listeners) listener(mode);
7182
7199
  }
7183
7200
  /** Rebuild theme-color metas for the current force (or both media queries
7184
7201
  * when following the system). Accent, when set, still paints the chrome. */
@@ -7252,19 +7269,19 @@ function applyInstance(inst) {
7252
7269
  if (icon) icon.href = `/api/instance/icon${inst.accent ? `?v=${inst.accent.slice(1)}` : ""}`;
7253
7270
  syncThemeColorMetas(theme(), inst.accent || "");
7254
7271
  }
7255
- var agentList = "_ed _cd _d1 _eb";
7272
+ var agentList = "_ed _ck _d1 _eb";
7256
7273
  var agentRow = "_fA _d2";
7257
7274
  var toolGrid = "_fI _eb";
7258
7275
  var toolRow = "_fJ _ec";
7259
7276
  var themeSeg = "_f7 _be";
7260
- var checkList = "_gC _cb";
7261
- var list$2 = "_ed _cd _d1 _eb";
7277
+ var checkList = "_gC _ci";
7278
+ var list$2 = "_ed _ck _d1 _eb";
7262
7279
  var flatCardRow = "_ee _ec";
7263
7280
  var pop$1 = "_fu __";
7264
7281
  var spinner = "_fx _2 _G";
7265
7282
  var busy = "_fk _fj";
7266
7283
  var pop = "_fm __";
7267
- var sectionCount = "_ca _N _O";
7284
+ var sectionCount = "_ch _N _O";
7268
7285
  var iconBtn$1 = "_5 _l";
7269
7286
  //#endregion
7270
7287
  //#region src/tags/icons/icon-refresh.marko
@@ -7407,7 +7424,7 @@ var icon_agent_default = _template("L", (input) => {
7407
7424
  n: $badge__closures
7408
7425
  });
7409
7426
  });
7410
- var usageNote = "_gT _X";
7427
+ var usageNote = "_hc _X";
7411
7428
  //#endregion
7412
7429
  //#region src/tags/icons/icon-warning.marko
7413
7430
  var icon_warning_default = _template("sb", (input) => {
@@ -7437,11 +7454,11 @@ var usage_meters_default = _template("H", (input) => {
7437
7454
  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);
7438
7455
  const $scope0_id = _scope_id();
7439
7456
  const agent = input.agent;
7440
- _html(`<div${_attr_class(["_gN", { ["_gO"]: input.hideName }])}><div${_attr_class("_gP")}>`);
7457
+ _html(`<div${_attr_class(["_g7", { ["_g8"]: input.hideName }])}><div${_attr_class("_g9")}>`);
7441
7458
  _if(() => {
7442
7459
  if (!input.hideName) {
7443
7460
  const $scope1_id = _scope_id();
7444
- _html(`<strong${_attr_class("_g8")}>${_text_resume($scope1_id, "b", agent.agent, $sg__input_agent)}</strong>`);
7461
+ _html(`<strong${_attr_class("_hr")}>${_text_resume($scope1_id, "b", agent.agent, $sg__input_agent)}</strong>`);
7445
7462
  $si__input_agent__OR__input_hideName && writeScope($scope1_id, { _: $si__input_agent && _scope_with_id($scope0_id) });
7446
7463
  return 0;
7447
7464
  }
@@ -7449,7 +7466,7 @@ var usage_meters_default = _template("H", (input) => {
7449
7466
  _if(() => {
7450
7467
  if (agent.plan && agent.plan.toLowerCase() !== agent.agent.toLowerCase()) {
7451
7468
  const $scope2_id = _scope_id();
7452
- _html(`<span${_attr_class("_gQ")}>${_text_resume($scope2_id, "b", agent.plan.replace(/^default_/, "").replaceAll("_", " "), $sg__input_agent)}</span>`);
7469
+ _html(`<span${_attr_class("_g_")}>${_text_resume($scope2_id, "b", agent.plan.replace(/^default_/, "").replaceAll("_", " "), $sg__input_agent)}</span>`);
7453
7470
  $si__input_agent && writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
7454
7471
  return 0;
7455
7472
  }
@@ -7457,21 +7474,21 @@ var usage_meters_default = _template("H", (input) => {
7457
7474
  _if(() => {
7458
7475
  if (agent.stale_seconds != null) {
7459
7476
  const $scope3_id = _scope_id();
7460
- _html(`<span${_attr_class("_gR")}${_attr("title", `${agent.note || "provider unreachable"}. Last cached numbers, ${duration(agent.stale_seconds * 1e3)} old`)}>`);
7477
+ _html(`<span${_attr_class("_ha")}${_attr("title", `${agent.note || "provider unreachable"}. Last cached numbers, ${duration(agent.stale_seconds * 1e3)} old`)}>`);
7461
7478
  icon_warning_default({ size: 12 });
7462
7479
  _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)}`);
7463
7480
  $si__input_agent && writeScope($scope3_id, { _: _scope_with_id($scope0_id) });
7464
7481
  return 0;
7465
7482
  }
7466
7483
  }, $scope0_id, "e", $sg__input_agent, $sg__input_agent, $sg__input_agent__OR__input_hideName, 0, 1);
7467
- _html(`</div><div${_attr_class(["_gS", { ["_g9"]: agent.stale_seconds != null }])}>`);
7484
+ _html(`</div><div${_attr_class(["_hb", { ["_hs"]: agent.stale_seconds != null }])}>`);
7468
7485
  _for_of(agent.windows || [], (win) => {
7469
7486
  const $scope4_id = _scope_id();
7470
7487
  const pct = pctText(win.used_percent);
7471
7488
  const label = resetLabel(win.resets_at, agent.stale_seconds != null);
7472
- const fillClass = win.used_percent >= 90 ? "_g1" : win.used_percent >= 70 ? "_g0" : win.used_percent >= 40 ? "_gZ" : "_gY";
7473
- const pctClass = win.used_percent >= 90 ? "_g6" : win.used_percent >= 70 ? "_g5" : win.used_percent >= 40 ? "_g4" : "_g3";
7474
- _html(`<div${_attr_class("_gU")}${_attr("title", `${win.window}: ${pct} used${win.resets_at ? `, resets ${new Date(win.resets_at).toLocaleString()}` : ""}`)}><span${_attr_class("_gV")}>${_text_resume($scope4_id, "c", win.window, $sg__input_agent)}</span><span${_attr_class("_gW")}><span${_attr_class(["_gX", 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(["_g2", pctClass])}>${_text_resume($scope4_id, "g", pct, $sg__input_agent)}</span>${_el_resume($scope4_id, "f", $sg__input_agent)}<span${_attr_class("_g7")}>`);
7489
+ const fillClass = win.used_percent >= 90 ? "_hk" : win.used_percent >= 70 ? "_hj" : win.used_percent >= 40 ? "_hi" : "_hh";
7490
+ const pctClass = win.used_percent >= 90 ? "_hp" : win.used_percent >= 70 ? "_ho" : win.used_percent >= 40 ? "_hn" : "_hm";
7491
+ _html(`<div${_attr_class("_hd")}${_attr("title", `${win.window}: ${pct} used${win.resets_at ? `, resets ${new Date(win.resets_at).toLocaleString()}` : ""}`)}><span${_attr_class("_he")}>${_text_resume($scope4_id, "c", win.window, $sg__input_agent)}</span><span${_attr_class("_hf")}><span${_attr_class(["_hg", 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(["_hl", pctClass])}>${_text_resume($scope4_id, "g", pct, $sg__input_agent)}</span>${_el_resume($scope4_id, "f", $sg__input_agent)}<span${_attr_class("_hq")}>`);
7475
7492
  _if(() => {
7476
7493
  if (label) {
7477
7494
  const $scope6_id = _scope_id();
@@ -7588,14 +7605,14 @@ var sso_auth_default = _template("D", (input) => {
7588
7605
  localCode = null;
7589
7606
  }
7590
7607
  }, "D0", $scope0_id);
7591
- _html(`<div${_attr_class(["_hU", input.class])}>`);
7608
+ _html(`<div${_attr_class(["_iz", input.class])}>`);
7592
7609
  _for_of(input.items, (s) => {
7593
7610
  const $scope1_id = _scope_id();
7594
- _html(`<div${_attr_class("_hV")}><span${_attr_class("_hX")}><span${_attr_class("_hY")}>${_text_resume($scope1_id, "d", s.org, $sg__input_items)}</span><span${_attr_class(["_hZ", "_h0"])} title="Repos and PRs in this org stay hidden until the GitHub CLI is authorized for it.">SSO not authorized</span></span>`);
7611
+ _html(`<div${_attr_class("_iA")}><span${_attr_class("_iC")}><span${_attr_class("_iD")}>${_text_resume($scope1_id, "d", s.org, $sg__input_items)}</span><span${_attr_class(["_iE", "_iF"])} title="Repos and PRs in this org stay hidden until the GitHub CLI is authorized for it.">SSO not authorized</span></span>`);
7595
7612
  _if(() => {
7596
7613
  if (!busy) {
7597
7614
  const $scope2_id = _scope_id();
7598
- _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, "_h1"])}${_attr("title", `Ignore ${s.org} — stop asking about it`)}>Ignore</button>${_el_resume($scope2_id, "b")}`);
7615
+ _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, "_iG"])}${_attr("title", `Ignore ${s.org} — stop asking about it`)}>Ignore</button>${_el_resume($scope2_id, "b")}`);
7599
7616
  _script($scope2_id, "D1");
7600
7617
  writeScope($scope2_id, {});
7601
7618
  return 0;
@@ -7610,13 +7627,13 @@ var sso_auth_default = _template("D", (input) => {
7610
7627
  _if(() => {
7611
7628
  if (localBusy && localCode) {
7612
7629
  const $scope4_id = _scope_id();
7613
- _html(`<div${_attr_class(["_hV", "_h2"])}><span${_attr_class("_G")}></span> Enter code <strong${_attr_class("_h3")}>${_text_resume($scope4_id, "d", localCode)}</strong> at <a${_attr("href", `https://${host}/login/device`)}${_attr_class("_h4")}>${_text_resume($scope4_id, "f", host, _serialize_guard($scope0_reason, 3))}/login/device</a>${_el_resume($scope4_id, "e")}</div>`);
7630
+ _html(`<div${_attr_class(["_iA", "_iH"])}><span${_attr_class("_G")}></span> Enter code <strong${_attr_class("_iI")}>${_text_resume($scope4_id, "d", localCode)}</strong> at <a${_attr("href", `https://${host}/login/device`)}${_attr_class("_iJ")}>${_text_resume($scope4_id, "f", host, _serialize_guard($scope0_reason, 3))}/login/device</a>${_el_resume($scope4_id, "e")}</div>`);
7614
7631
  _script($scope4_id, "D2");
7615
7632
  writeScope($scope4_id, {});
7616
7633
  return 0;
7617
7634
  } else if (localBusy) {
7618
7635
  const $scope6_id = _scope_id();
7619
- _html(`<div${_attr_class(["_hV", "_h2"])}><span${_attr_class("_G")}></span>Starting GitHub re-authorization…</div>`);
7636
+ _html(`<div${_attr_class(["_iA", "_iH"])}><span${_attr_class("_G")}></span>Starting GitHub re-authorization…</div>`);
7620
7637
  writeScope($scope6_id, {});
7621
7638
  return 1;
7622
7639
  }
@@ -7624,14 +7641,14 @@ var sso_auth_default = _template("D", (input) => {
7624
7641
  _if(() => {
7625
7642
  if (localError) {
7626
7643
  const $scope5_id = _scope_id();
7627
- _html(`<p${_attr_class(["_hV", "_h5"])}>${_text_resume($scope5_id, "b", localError)}</p>`);
7644
+ _html(`<p${_attr_class(["_iA", "_iK"])}>${_text_resume($scope5_id, "b", localError)}</p>`);
7628
7645
  writeScope($scope5_id, {});
7629
7646
  return 0;
7630
7647
  }
7631
7648
  }, $scope0_id, "d", 1, 1, 1, 0, 1);
7632
7649
  _for_of(skipped, (s) => {
7633
7650
  const $scope3_id = _scope_id();
7634
- _html(`<div${_attr_class(["_hV", "_hW"])}><span${_attr_class("_hX")}><span${_attr_class("_hY")}>${_text_resume($scope3_id, "d", s.org, $sg__input_skipped)}</span><span${_attr_class("_hZ")}>Ignored</span></span><button type=button${_attr_class([btnSm, "_h1"])}${_attr("title", `Ask about ${s.org} again`)}>Undo</button>${_el_resume($scope3_id, "f")}</div>`);
7651
+ _html(`<div${_attr_class(["_iA", "_iB"])}><span${_attr_class("_iC")}><span${_attr_class("_iD")}>${_text_resume($scope3_id, "d", s.org, $sg__input_skipped)}</span><span${_attr_class("_iE")}>Ignored</span></span><button type=button${_attr_class([btnSm, "_iG"])}${_attr("title", `Ask about ${s.org} again`)}>Undo</button>${_el_resume($scope3_id, "f")}</div>`);
7635
7652
  _script($scope3_id, "D3");
7636
7653
  writeScope($scope3_id, {
7637
7654
  i: s?.org,
@@ -7718,11 +7735,11 @@ var skill_chip_default = _template("C", (input) => {
7718
7735
  return 0;
7719
7736
  }
7720
7737
  }, $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);
7721
- _html(`</button>${_el_resume($scope2_id, "a")}<div${_attr("id", popId)} popover=auto${_attr_class(pop)}><span${_attr_class(["_cf", "_y"])}>${_text_resume($scope2_id, "f", input.name, $sg__input_name)}</span>`);
7738
+ _html(`</button>${_el_resume($scope2_id, "a")}<div${_attr("id", popId)} popover=auto${_attr_class(pop)}><span${_attr_class(["_cm", "_y"])}>${_text_resume($scope2_id, "f", input.name, $sg__input_name)}</span>`);
7722
7739
  _if(() => {
7723
7740
  if (input.description) {
7724
7741
  const $scope4_id = _scope_id();
7725
- _html(`<span${_attr_class("_ch")}${_attr("title", input.description)}>${_text_resume($scope4_id, "b", input.description, $sg__input_description)}</span>${_el_resume($scope4_id, "a", $sg__input_description)}`);
7742
+ _html(`<span${_attr_class("_co")}${_attr("title", input.description)}>${_text_resume($scope4_id, "b", input.description, $sg__input_description)}</span>${_el_resume($scope4_id, "a", $sg__input_description)}`);
7726
7743
  $si__input_busy__OR__input_description && _subscribe($si__input_description && $input_description__closures, writeScope($scope4_id, { _: _scope_with_id($scope2_id) }));
7727
7744
  return 0;
7728
7745
  }
@@ -7730,12 +7747,12 @@ var skill_chip_default = _template("C", (input) => {
7730
7747
  _if(() => {
7731
7748
  if (input.sourceUrl) {
7732
7749
  const $scope5_id = _scope_id();
7733
- _html(`<a${_attr_class(["_ch", "_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))}`);
7750
+ _html(`<a${_attr_class(["_co", "_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))}`);
7734
7751
  $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) })));
7735
7752
  return 0;
7736
7753
  } else if (input.source) {
7737
7754
  const $scope6_id = _scope_id();
7738
- _html(`<span${_attr_class("_ch")}>${_text_resume($scope6_id, "b", input.source, $sg__input_source)}</span>`);
7755
+ _html(`<span${_attr_class("_co")}>${_text_resume($scope6_id, "b", input.source, $sg__input_source)}</span>`);
7739
7756
  $si__input_busy__OR__input_sourceUrl__OR__input_source__OR__input_noteLocal && _subscribe($si__input_source && $input_source__closures, writeScope($scope6_id, {
7740
7757
  _: _scope_with_id($scope2_id),
7741
7758
  Cs: $si__input_source && 1
@@ -7743,7 +7760,7 @@ var skill_chip_default = _template("C", (input) => {
7743
7760
  return 1;
7744
7761
  } else if (input.noteLocal) {
7745
7762
  const $scope10_id = _scope_id();
7746
- _html(`<span${_attr_class(["_ch", "_x"])} title="Not installed from a source, so it cannot be updated">local only</span>`);
7763
+ _html(`<span${_attr_class(["_co", "_x"])} title="Not installed from a source, so it cannot be updated">local only</span>`);
7747
7764
  _serialize_if($scope0_reason, 8) && writeScope($scope10_id, {});
7748
7765
  return 2;
7749
7766
  }
@@ -7751,7 +7768,7 @@ var skill_chip_default = _template("C", (input) => {
7751
7768
  _if(() => {
7752
7769
  if (input.tags) {
7753
7770
  const $scope7_id = _scope_id();
7754
- _html(`<span${_attr_class("_cg")}>`);
7771
+ _html(`<span${_attr_class("_cn")}>`);
7755
7772
  _dynamic_tag($scope7_id, "b", input.tags, {}, 0, 0, $sg__input_tags);
7756
7773
  _html("</span>");
7757
7774
  $si__input_busy__OR__input_tags && _subscribe($si__input_tags && $input_tags__closures, writeScope($scope7_id, { _: _scope_with_id($scope2_id) }));
@@ -7872,7 +7889,7 @@ var icon_moon_default = _template("jb", (input) => {
7872
7889
  });
7873
7890
  //#endregion
7874
7891
  //#region src/tags/prompt-dialog.css.ts
7875
- var promptDlg = "_hT _hP";
7892
+ var promptDlg = "_ih _hL";
7876
7893
  //#endregion
7877
7894
  //#region src/tags/dialog-close.marko
7878
7895
  var dialog_close_default = _template("f", (input) => {
@@ -7896,7 +7913,7 @@ var modal_view_default = _template("s", (input) => {
7896
7913
  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;
7897
7914
  const dismissable = input.dismissable !== false;
7898
7915
  let open = input.open;
7899
- _html(`<dialog${_attr_class(["_hO", inputClass])}${_attr("aria-labelledby", inputLabelledBy)}${inputLabelledBy ? _attr("aria-label", inputAriaLabel) : _attr("aria-label", inputAriaLabel || label)} closedby=${dismissable ? "any" : "none"}${_attrs_partial({
7916
+ _html(`<dialog${_attr_class(["_hK", inputClass])}${_attr("aria-labelledby", inputLabelledBy)}${inputLabelledBy ? _attr("aria-label", inputAriaLabel) : _attr("aria-label", inputAriaLabel || label)} closedby=${dismissable ? "any" : "none"}${_attrs_partial({
7900
7917
  ...htmlInput,
7901
7918
  open: null
7902
7919
  }, {
@@ -7906,20 +7923,20 @@ var modal_view_default = _template("s", (input) => {
7906
7923
  closedby: 1,
7907
7924
  "on-cancel": 1,
7908
7925
  "on-close": 1
7909
- }, "a", $scope0_id, "dialog")}><div${_attr_class("_hR")}>`);
7926
+ }, "a", $scope0_id, "dialog")}><div${_attr_class("_hN")}>`);
7910
7927
  _dynamic_tag($scope0_id, "c", content, {}, 0, 0, _serialize_guard($scope0_reason, 6));
7911
7928
  _html("</div>");
7912
7929
  _if(() => {
7913
7930
  if (footer) {
7914
7931
  const $scope1_id = _scope_id();
7915
- _html(`<form method=dialog${_attr_class("_hS")}>`);
7932
+ _html(`<form method=dialog${_attr_class("_hO")}>`);
7916
7933
  _dynamic_tag($scope1_id, "b", footer.content, {}, 0, 0, _serialize_guard($scope0_reason, 7));
7917
7934
  _html("</form>");
7918
7935
  $si__input_openChange__OR__input_footer && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 7) && _scope_with_id($scope0_id) });
7919
7936
  return 0;
7920
7937
  } else if (input.openChange) {
7921
7938
  const $scope2_id = _scope_id();
7922
- _html(`<form method=dialog${_attr_class("_hS")}>`);
7939
+ _html(`<form method=dialog${_attr_class("_hO")}>`);
7923
7940
  dialog_close_default({
7924
7941
  class: ["_q", "_r"],
7925
7942
  content: _content("s0", () => {
@@ -8003,7 +8020,7 @@ var prompt_dialog_default = _template("v", (input) => {
8003
8020
  content: _content("v7", () => {
8004
8021
  _scope_reason();
8005
8022
  const $scope2_id = _scope_id();
8006
- _html(`<h2${_attr_class("_hQ")}${_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) => {
8023
+ _html(`<h2${_attr_class("_hM")}${_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) => {
8007
8024
  value = _new_value;
8008
8025
  }, "v0", $scope2_id))}${_attr("placeholder", input.placeholder)}>${_el_resume($scope2_id, "c")}`);
8009
8026
  _script($scope2_id, "v5");
@@ -8618,7 +8635,7 @@ var settings_page_default = _template("y", (input$3) => {
8618
8635
  return 0;
8619
8636
  }
8620
8637
  }, $scope0_id, "f", 1, 1, 1, 0, 1);
8621
- _html(`<section${_attr_class("_b9")}${_attr("aria-labelledby", agentsId)}><div${_attr_class("_b_")}><h2${_attr("id", agentsId)}${_attr_class("_cm")}>Agents</h2><div${_attr_class("_z")}></div><label${_attr_class("_fB")}><span${_attr_class("_X")}>Default</span><span${_attr_class("_o")}>`);
8638
+ _html(`<section${_attr_class("_cf")}${_attr("aria-labelledby", agentsId)}><div${_attr_class("_cg")}><h2${_attr("id", agentsId)}${_attr_class("_ct")}>Agents</h2><div${_attr_class("_z")}></div><label${_attr_class("_fB")}><span${_attr_class("_X")}>Default</span><span${_attr_class("_o")}>`);
8622
8639
  _attr_select_value($scope0_id, "n", input$3.preferred, _resume(function(v) {
8623
8640
  setPreferred(v);
8624
8641
  }, "y2", $scope0_id), () => {
@@ -8643,7 +8660,7 @@ var settings_page_default = _template("y", (input$3) => {
8643
8660
  agent: a.id,
8644
8661
  size: 18
8645
8662
  });
8646
- _html(`<div${_attr_class("_ce")}><span${_attr_class("_cg")}><span${_attr_class("_cf")}>${_text_resume($scope1_id, "g", a.label)}</span>`);
8663
+ _html(`<div${_attr_class("_cl")}><span${_attr_class("_cn")}><span${_attr_class("_cm")}>${_text_resume($scope1_id, "g", a.label)}</span>`);
8647
8664
  _if(() => {
8648
8665
  if (lone && input$3.preferred === lone.id) {
8649
8666
  const $scope81_id = _scope_id();
@@ -8661,7 +8678,7 @@ var settings_page_default = _template("y", (input$3) => {
8661
8678
  return 0;
8662
8679
  } else if (!a.installed) {
8663
8680
  const $scope82_id = _scope_id();
8664
- _html(`<span${_attr_class("_ch")}>Not installed</span>`);
8681
+ _html(`<span${_attr_class("_co")}>Not installed</span>`);
8665
8682
  writeScope($scope82_id, {});
8666
8683
  return 1;
8667
8684
  }
@@ -8779,17 +8796,17 @@ var settings_page_default = _template("y", (input$3) => {
8779
8796
  _if(() => {
8780
8797
  if (!usage && families.length) {
8781
8798
  const $scope88_id = _scope_id();
8782
- _html(`<p${_attr_class("_cj")}><span${_attr_class("_G")}></span> Loading usage…</p>`);
8799
+ _html(`<p${_attr_class("_cq")}><span${_attr_class("_G")}></span> Loading usage…</p>`);
8783
8800
  writeScope($scope88_id, {});
8784
8801
  return 0;
8785
8802
  } else if (usage?.error) {
8786
8803
  const $scope8_id = _scope_id();
8787
- _html(`<p${_attr_class("_cj")}>${_text_resume($scope8_id, "b", usage.error)}</p>`);
8804
+ _html(`<p${_attr_class("_cq")}>${_text_resume($scope8_id, "b", usage.error)}</p>`);
8788
8805
  writeScope($scope8_id, {});
8789
8806
  return 1;
8790
8807
  }
8791
8808
  }, $scope0_id, "r", 1, 1, 1, 0, 1);
8792
- _html(`</section><section${_attr_class("_b9")}${_attr("aria-labelledby", githubId)}><div${_attr_class("_b_")}><h2${_attr("id", githubId)}${_attr_class("_cm")}>GitHub</h2>`);
8809
+ _html(`</section><section${_attr_class("_cf")}${_attr("aria-labelledby", githubId)}><div${_attr_class("_cg")}><h2${_attr("id", githubId)}${_attr_class("_ct")}>GitHub</h2>`);
8793
8810
  _if(() => {
8794
8811
  if (setup && !addingHost) {
8795
8812
  const $scope42_id = _scope_id();
@@ -8831,7 +8848,7 @@ var settings_page_default = _template("y", (input$3) => {
8831
8848
  return 0;
8832
8849
  }
8833
8850
  }, $scope0_id, "w", 1, 1, 1, 0, 1);
8834
- _html(`</div><div${_attr_class(["_cd", "_d1"])}>`);
8851
+ _html(`</div><div${_attr_class(["_ck", "_d1"])}>`);
8835
8852
  _for_of(setup?.github || [], (h) => {
8836
8853
  const $scope6_id = _scope_id();
8837
8854
  const $for_content3__h_host__closures = /* @__PURE__ */ new Set();
@@ -8843,7 +8860,7 @@ var settings_page_default = _template("y", (input$3) => {
8843
8860
  size: 18,
8844
8861
  class: "_fT"
8845
8862
  });
8846
- _html(`<div${_attr_class("_ce")}><span${_attr_class("_cg")}><span${_attr_class("_cf")}>${_text_resume($scope6_id, "g", h.host)}</span>`);
8863
+ _html(`<div${_attr_class("_cl")}><span${_attr_class("_cn")}><span${_attr_class("_cm")}>${_text_resume($scope6_id, "g", h.host)}</span>`);
8847
8864
  _if(() => {
8848
8865
  if (h.isEnterprise) {
8849
8866
  const $scope91_id = _scope_id();
@@ -8856,12 +8873,12 @@ var settings_page_default = _template("y", (input$3) => {
8856
8873
  _if(() => {
8857
8874
  if (busy) {
8858
8875
  const $scope13_id = _scope_id();
8859
- _html(`<span${_attr_class(["_ch", "_fU"])}><span${_attr_class("_G")}></span>${_text_resume($scope13_id, "c", authCodes.has(h.host) ? "Waiting for the browser…" : active.get(h.host) || "Starting…")}</span>`);
8876
+ _html(`<span${_attr_class(["_co", "_fU"])}><span${_attr_class("_G")}></span>${_text_resume($scope13_id, "c", authCodes.has(h.host) ? "Waiting for the browser…" : active.get(h.host) || "Starting…")}</span>`);
8860
8877
  _subscribe($authCodes__closures, _subscribe($active__closures, writeScope($scope13_id, { Ch2: 1 })));
8861
8878
  return 0;
8862
8879
  } else if (h.authed) {
8863
8880
  const $scope89_id = _scope_id();
8864
- _html(`<span${_attr_class(["_ch", "_fU"])}>`);
8881
+ _html(`<span${_attr_class(["_co", "_fU"])}>`);
8865
8882
  icon_check_default({
8866
8883
  size: 12,
8867
8884
  class: "_fV"
@@ -8872,7 +8889,7 @@ var settings_page_default = _template("y", (input$3) => {
8872
8889
  } else if (h.error) {
8873
8890
  const $scope90_id = _scope_id();
8874
8891
  _html(`<span${_attr_class([
8875
- "_ch",
8892
+ "_co",
8876
8893
  "_fU",
8877
8894
  "_fW"
8878
8895
  ])}>`);
@@ -8882,7 +8899,7 @@ var settings_page_default = _template("y", (input$3) => {
8882
8899
  return 2;
8883
8900
  } else {
8884
8901
  const $scope92_id = _scope_id();
8885
- _html(`<span${_attr_class(["_ch", "_fU"])}>Not signed in</span>`);
8902
+ _html(`<span${_attr_class(["_co", "_fU"])}>Not signed in</span>`);
8886
8903
  writeScope($scope92_id, {});
8887
8904
  return 3;
8888
8905
  }
@@ -8913,7 +8930,7 @@ var settings_page_default = _template("y", (input$3) => {
8913
8930
  if (h.isEnterprise) {
8914
8931
  const $scope33_id = _scope_id();
8915
8932
  _html(`<button${_attr_class([
8916
- "_ci",
8933
+ "_cp",
8917
8934
  "_8",
8918
8935
  "_9",
8919
8936
  { ["_s"]: confirmingRemove === h.host }
@@ -8993,12 +9010,12 @@ var settings_page_default = _template("y", (input$3) => {
8993
9010
  _if(() => {
8994
9011
  if (setup && !setup.github.length) {
8995
9012
  const $scope95_id = _scope_id();
8996
- _html(`<p${_attr_class("_cj")}>Install the GitHub CLI below to sign in.</p>`);
9013
+ _html(`<p${_attr_class("_cq")}>Install the GitHub CLI below to sign in.</p>`);
8997
9014
  writeScope($scope95_id, {});
8998
9015
  return 0;
8999
9016
  }
9000
9017
  }, $scope0_id, "y", 1, 1, 1, 0, 1);
9001
- _html(`</section><section${_attr_class("_b9")}${_attr("aria-labelledby", machineId)}><div${_attr_class("_b_")}><h2${_attr("id", machineId)}${_attr_class("_cm")}>Machine</h2></div><div${_attr_class(["_cd", "_d1"])}><div${_attr_class(["_d2", "_d3"])}><div${_attr_class(["_d4", { ["_d5"]: skillsOpen }])}><button${_attr_class("_d6")} aria-expanded=true>`);
9018
+ _html(`</section><section${_attr_class("_cf")}${_attr("aria-labelledby", machineId)}><div${_attr_class("_cg")}><h2${_attr("id", machineId)}${_attr_class("_ct")}>Machine</h2></div><div${_attr_class(["_ck", "_d1"])}><div${_attr_class(["_d2", "_d3"])}><div${_attr_class(["_d4", { ["_d5"]: skillsOpen }])}><button${_attr_class("_d6")} aria-expanded=true>`);
9002
9019
  _set_serialize_reason(1);
9003
9020
  const $childScope10 = _peek_scope_id();
9004
9021
  icon_chevron_right_default({
@@ -9064,7 +9081,7 @@ var settings_page_default = _template("y", (input$3) => {
9064
9081
  _if(() => {
9065
9082
  if (looksLikeSource(skillQuery)) {
9066
9083
  const $scope15_id = _scope_id();
9067
- _html(`<li${_attr_class(toolRow)}><div${_attr_class("_ce")}><span${_attr_class(["_fL", "_y"])}>${_text_resume($scope15_id, "d", skillQuery.trim())}</span>`);
9084
+ _html(`<li${_attr_class(toolRow)}><div${_attr_class("_cl")}><span${_attr_class(["_fL", "_y"])}>${_text_resume($scope15_id, "d", skillQuery.trim())}</span>`);
9068
9085
  _if(() => {
9069
9086
  if (active.has(skillQuery.trim())) {
9070
9087
  const $scope16_id = _scope_id();
@@ -9076,7 +9093,7 @@ var settings_page_default = _template("y", (input$3) => {
9076
9093
  return 0;
9077
9094
  } else {
9078
9095
  const $scope99_id = _scope_id();
9079
- _html(`<span${_attr_class("_ch")}>Add straight from this source</span>`);
9096
+ _html(`<span${_attr_class("_co")}>Add straight from this source</span>`);
9080
9097
  writeScope($scope99_id, {});
9081
9098
  return 1;
9082
9099
  }
@@ -9099,7 +9116,7 @@ var settings_page_default = _template("y", (input$3) => {
9099
9116
  _for_of(skillHits || [], (h) => {
9100
9117
  const $scope17_id = _scope_id();
9101
9118
  const $for_content4__h_installs__closures = /* @__PURE__ */ new Set();
9102
- _html(`<li${_attr_class(toolRow)}><div${_attr_class("_ce")}><span${_attr_class(["_fL", "_y"])}>${_text_resume($scope17_id, "d", h.name)}</span>`);
9119
+ _html(`<li${_attr_class(toolRow)}><div${_attr_class("_cl")}><span${_attr_class(["_fL", "_y"])}>${_text_resume($scope17_id, "d", h.name)}</span>`);
9103
9120
  _if(() => {
9104
9121
  if (active.has(h.skillId)) {
9105
9122
  const $scope18_id = _scope_id();
@@ -9108,7 +9125,7 @@ var settings_page_default = _template("y", (input$3) => {
9108
9125
  return 0;
9109
9126
  } else {
9110
9127
  const $scope100_id = _scope_id();
9111
- _html(`<span${_attr_class("_ch")}${_attr("title", h.source)}>${_text_resume($scope100_id, "b", h.source)}</span>${_el_resume($scope100_id, "a")}`);
9128
+ _html(`<span${_attr_class("_co")}${_attr("title", h.source)}>${_text_resume($scope100_id, "b", h.source)}</span>${_el_resume($scope100_id, "a")}`);
9112
9129
  writeScope($scope100_id, {});
9113
9130
  return 1;
9114
9131
  }
@@ -9175,12 +9192,12 @@ var settings_page_default = _template("y", (input$3) => {
9175
9192
  _if(() => {
9176
9193
  if (skills && !skills.agents.length) {
9177
9194
  const $scope103_id = _scope_id();
9178
- _html(`<p${_attr_class("_cj")}>No agent CLIs are installed, so a skill would have nowhere to go. Install one from Agents above.</p>`);
9195
+ _html(`<p${_attr_class("_cq")}>No agent CLIs are installed, so a skill would have nowhere to go. Install one from Agents above.</p>`);
9179
9196
  writeScope($scope103_id, {});
9180
9197
  return 0;
9181
9198
  } else if (skills && !skills.available) {
9182
9199
  const $scope20_id = _scope_id();
9183
- _html(`<p${_attr_class("_cj")}>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($scope20_id, "c", active.has("skills") ? "Installing…" : "Install it")}</button>${_el_resume($scope20_id, "b")}</p>`);
9200
+ _html(`<p${_attr_class("_cq")}>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($scope20_id, "c", active.has("skills") ? "Installing…" : "Install it")}</button>${_el_resume($scope20_id, "b")}</p>`);
9184
9201
  _script($scope20_id, "y60");
9185
9202
  _subscribe($active__closures, writeScope($scope20_id, { Ch2: 6 }));
9186
9203
  return 1;
@@ -9262,7 +9279,7 @@ var settings_page_default = _template("y", (input$3) => {
9262
9279
  _if(() => {
9263
9280
  if (skills && !skills.global.length && skills.available && skills.agents.length) {
9264
9281
  const $scope108_id = _scope_id();
9265
- _html(`<p${_attr_class("_cj")}>No skills installed. Search below, or paste an owner/repo.</p>`);
9282
+ _html(`<p${_attr_class("_cq")}>No skills installed. Search below, or paste an owner/repo.</p>`);
9266
9283
  writeScope($scope108_id, {});
9267
9284
  return 0;
9268
9285
  }
@@ -9354,7 +9371,7 @@ var settings_page_default = _template("y", (input$3) => {
9354
9371
  }, $scope24_id, "i", 1, 1, 1, 0, 1);
9355
9372
  _for_of(hits || [], (h) => {
9356
9373
  const $scope25_id = _scope_id();
9357
- _html(`<li${_attr_class(toolRow)}><div${_attr_class("_ce")}><span${_attr_class(["_fL", "_y"])}>${_text_resume($scope25_id, "d", h.name)}</span>`);
9374
+ _html(`<li${_attr_class(toolRow)}><div${_attr_class("_cl")}><span${_attr_class(["_fL", "_y"])}>${_text_resume($scope25_id, "d", h.name)}</span>`);
9358
9375
  _if(() => {
9359
9376
  if (active.has(h.name)) {
9360
9377
  const $scope26_id = _scope_id();
@@ -9363,7 +9380,7 @@ var settings_page_default = _template("y", (input$3) => {
9363
9380
  return 0;
9364
9381
  } else if (h.description) {
9365
9382
  const $scope112_id = _scope_id();
9366
- _html(`<span${_attr_class("_ch")}${_attr("title", h.description)}>${_text_resume($scope112_id, "b", h.description)}</span>${_el_resume($scope112_id, "a")}`);
9383
+ _html(`<span${_attr_class("_co")}${_attr("title", h.description)}>${_text_resume($scope112_id, "b", h.description)}</span>${_el_resume($scope112_id, "a")}`);
9367
9384
  writeScope($scope112_id, {});
9368
9385
  return 1;
9369
9386
  }
@@ -9412,7 +9429,7 @@ var settings_page_default = _template("y", (input$3) => {
9412
9429
  _if(() => {
9413
9430
  if (setup && !setup.mise.installed) {
9414
9431
  const $scope27_id = _scope_id();
9415
- _html(`<p${_attr_class("_cj")}>mise is not installed. It provides every tool below. <button${_attr_class(btnSm)}${_attr("disabled", active.has("mise"))}>${_text_resume($scope27_id, "c", active.has("mise") ? "Installing…" : "Install mise")}</button>${_el_resume($scope27_id, "b")}</p>`);
9432
+ _html(`<p${_attr_class("_cq")}>mise is not installed. It provides every tool below. <button${_attr_class(btnSm)}${_attr("disabled", active.has("mise"))}>${_text_resume($scope27_id, "c", active.has("mise") ? "Installing…" : "Install mise")}</button>${_el_resume($scope27_id, "b")}</p>`);
9416
9433
  _script($scope27_id, "y71");
9417
9434
  _subscribe($active__closures, writeScope($scope27_id, { Ch2: 10 }));
9418
9435
  return 0;
@@ -9643,7 +9660,7 @@ var settings_page_default = _template("y", (input$3) => {
9643
9660
  label: "Dark"
9644
9661
  }
9645
9662
  ];
9646
- _html(`</div></div></section><section${_attr_class("_b9")}${_attr("aria-labelledby", appearanceId)}><div${_attr_class("_b_")}><h2${_attr("id", appearanceId)}${_attr_class("_cm")}>Appearance</h2></div><div${_attr_class(["_cd", "_f3"])}><div${_attr_class("_ge")}><img${_attr_class("_gf")}${_attr("src", `/api/instance/icon${accent ? `?v=${accent.slice(1)}` : ""}`)} alt aria-hidden=true>${_el_resume($scope0_id, "av", $sg__input_instance_accent)}<span${_attr_class("_gg")}><span${_attr_class("_gh")}>${_text_resume($scope0_id, "ay", input$3.instance.name || "work", _serialize_guard($scope0_reason, 7))}</span><span${_attr_class("_gi")}>Sidebar, tab title, home-screen icon and notifications</span></span></div><label${_attr_class("_f4")}><span${_attr_class("_f5")}>Name</span><input${_attr_input_value($scope0_id, "b2", input$3.instance.name, _resume(function(v) {
9663
+ _html(`</div></div></section><section${_attr_class("_cf")}${_attr("aria-labelledby", appearanceId)}><div${_attr_class("_cg")}><h2${_attr("id", appearanceId)}${_attr_class("_ct")}>Appearance</h2></div><div${_attr_class(["_ck", "_f3"])}><div${_attr_class("_ge")}><img${_attr_class("_gf")}${_attr("src", `/api/instance/icon${accent ? `?v=${accent.slice(1)}` : ""}`)} alt aria-hidden=true>${_el_resume($scope0_id, "av", $sg__input_instance_accent)}<span${_attr_class("_gg")}><span${_attr_class("_gh")}>${_text_resume($scope0_id, "ay", input$3.instance.name || "work", _serialize_guard($scope0_reason, 7))}</span><span${_attr_class("_gi")}>Sidebar, tab title, home-screen icon and notifications</span></span></div><label${_attr_class("_f4")}><span${_attr_class("_f5")}>Name</span><input${_attr_input_value($scope0_id, "b2", input$3.instance.name, _resume(function(v) {
9647
9664
  setInstance({ name: v });
9648
9665
  }, "y4", $scope0_id))}${_attr_class(["_Z", "_f6"])} type=text placeholder=work maxlength=32 autocomplete=off spellcheck=false>${_el_resume($scope0_id, "b2")}</label><div${_attr_class("_f4")}><span${_attr_class("_f5")}>Theme</span><span${_attr_class("_f8")}><span${_attr_class(themeSeg)} role=radiogroup aria-label="Color theme">`);
9649
9666
  _for_of(themeOpts, (opt) => {
@@ -9741,7 +9758,7 @@ var settings_page_default = _template("y", (input$3) => {
9741
9758
  return 1;
9742
9759
  }
9743
9760
  }, $scope0_id, "bg", $sg__input_instance_accent, $sg__input_instance_accent, 1, 0, 1);
9744
- _html(`</label>${_el_resume($scope0_id, "be", $sg__input_instance_accent)}</span></div></div></section><section${_attr_class("_b9")}${_attr("aria-labelledby", backupId)}><div${_attr_class("_b_")}><h2${_attr("id", backupId)}${_attr_class("_cm")}>Backup</h2></div><div${_attr_class(["_cd", "_d1"])}><div${_attr_class("_d2")}><div${_attr_class("_gr")}><div${_attr_class("_ce")}>`);
9761
+ _html(`</label>${_el_resume($scope0_id, "be", $sg__input_instance_accent)}</span></div></div></section><section${_attr_class("_cf")}${_attr("aria-labelledby", backupId)}><div${_attr_class("_cg")}><h2${_attr("id", backupId)}${_attr_class("_ct")}>Backup</h2></div><div${_attr_class(["_ck", "_d1"])}><div${_attr_class("_d2")}><div${_attr_class("_gr")}><div${_attr_class("_cl")}>`);
9745
9762
  _if(() => {
9746
9763
  if (backupBusy === "preflight") {
9747
9764
  const $scope65_id = _scope_id();
@@ -9750,7 +9767,7 @@ var settings_page_default = _template("y", (input$3) => {
9750
9767
  return 0;
9751
9768
  } else {
9752
9769
  const $scope133_id = _scope_id();
9753
- _html(`<span${_attr_class("_ch")}>Save workspaces, settings, skills and tool pins to a file. Code stays on GitHub.</span>`);
9770
+ _html(`<span${_attr_class("_co")}>Save workspaces, settings, skills and tool pins to a file. Code stays on GitHub.</span>`);
9754
9771
  writeScope($scope133_id, {});
9755
9772
  return 1;
9756
9773
  }
@@ -9789,7 +9806,7 @@ var settings_page_default = _template("y", (input$3) => {
9789
9806
  _for_of(preflight.workspaces, (w) => {
9790
9807
  const $scope135_id = _scope_id();
9791
9808
  const $for_content18__w_name__closures = /* @__PURE__ */ new Set();
9792
- _html(`<li${_attr_class("_gw")}><span${_attr_class("_cf")}>${_text_resume($scope135_id, "c", w.name)}</span><ul${_attr_class("_gv")}>`);
9809
+ _html(`<li${_attr_class("_gw")}><span${_attr_class("_cm")}>${_text_resume($scope135_id, "c", w.name)}</span><ul${_attr_class("_gv")}>`);
9793
9810
  _for_of(w.repos, (r) => {
9794
9811
  const $scope136_id = _scope_id();
9795
9812
  const $for_content19__r_more__closures = /* @__PURE__ */ new Set();
@@ -9866,7 +9883,7 @@ var settings_page_default = _template("y", (input$3) => {
9866
9883
  return 0;
9867
9884
  }
9868
9885
  }, $scope0_id, "bp", 1, 1, 1, 0, 1);
9869
- _html(`</div><div${_attr_class("_d2")}><div${_attr_class("_gr")}><div${_attr_class("_ce")}>`);
9886
+ _html(`</div><div${_attr_class("_d2")}><div${_attr_class("_gr")}><div${_attr_class("_cl")}>`);
9870
9887
  _if(() => {
9871
9888
  if (backupBusy === "restore") {
9872
9889
  const $scope66_id = _scope_id();
@@ -9875,12 +9892,12 @@ var settings_page_default = _template("y", (input$3) => {
9875
9892
  return 0;
9876
9893
  } else if (restoreDone) {
9877
9894
  const $scope74_id = _scope_id();
9878
- _html(`<span${_attr_class("_ch")}>${_text_resume($scope74_id, "b", restoreDone)}</span>`);
9895
+ _html(`<span${_attr_class("_co")}>${_text_resume($scope74_id, "b", restoreDone)}</span>`);
9879
9896
  writeScope($scope74_id, {});
9880
9897
  return 1;
9881
9898
  } else {
9882
9899
  const $scope144_id = _scope_id();
9883
- _html(`<span${_attr_class("_ch")}>Load a backup file. Repos clone in the background.</span>`);
9900
+ _html(`<span${_attr_class("_co")}>Load a backup file. Repos clone in the background.</span>`);
9884
9901
  writeScope($scope144_id, {});
9885
9902
  return 2;
9886
9903
  }
@@ -9906,7 +9923,7 @@ var settings_page_default = _template("y", (input$3) => {
9906
9923
  _html(`<ul${_attr_class(checkList)}>`);
9907
9924
  _for_of(preview.workspaces, (w) => {
9908
9925
  const $scope71_id = _scope_id();
9909
- _html(`<li><label${_attr_class(["_gD", { ["_gF"]: w.exists || !!w.unknownHost }])}><input${_attr_input_checked($scope71_id, "b", restoreWs.has(w.id))}${_attr_class("_gE")} type=checkbox${_attr("disabled", w.exists || !!w.unknownHost)}>${_el_resume($scope71_id, "b")}<span${_attr_class("_ce")}><span${_attr_class("_cg")}><span${_attr_class("_cf")}>${_text_resume($scope71_id, "f", w.name)}</span>`);
9926
+ _html(`<li><label${_attr_class(["_gD", { ["_gF"]: w.exists || !!w.unknownHost }])}><input${_attr_input_checked($scope71_id, "b", restoreWs.has(w.id))}${_attr_class("_gE")} type=checkbox${_attr("disabled", w.exists || !!w.unknownHost)}>${_el_resume($scope71_id, "b")}<span${_attr_class("_cl")}><span${_attr_class("_cn")}><span${_attr_class("_cm")}>${_text_resume($scope71_id, "f", w.name)}</span>`);
9910
9927
  _if(() => {
9911
9928
  if (w.status === "archived") {
9912
9929
  const $scope148_id = _scope_id();
@@ -9928,7 +9945,7 @@ var settings_page_default = _template("y", (input$3) => {
9928
9945
  return 1;
9929
9946
  }
9930
9947
  }, $scope71_id, "h", 1, 1, 1, 0, 1);
9931
- _html(`</span><span${_attr_class("_ch")}>${_text_resume($scope71_id, "j", w.repos.join(", ") || "no repos")}</span></span></label>${_el_resume($scope71_id, "a")}</li>`);
9948
+ _html(`</span><span${_attr_class("_co")}>${_text_resume($scope71_id, "j", w.repos.join(", ") || "no repos")}</span></span></label>${_el_resume($scope71_id, "a")}</li>`);
9932
9949
  _script($scope71_id, "y83");
9933
9950
  _subscribe($restoreWs__closures, writeScope($scope71_id, {
9934
9951
  n: w?.unknownHost,
@@ -9939,7 +9956,7 @@ var settings_page_default = _template("y", (input$3) => {
9939
9956
  return 0;
9940
9957
  } else {
9941
9958
  const $scope146_id = _scope_id();
9942
- _html(`<p${_attr_class("_cj")}>No workspaces in this file.</p>`);
9959
+ _html(`<p${_attr_class("_cq")}>No workspaces in this file.</p>`);
9943
9960
  writeScope($scope146_id, {});
9944
9961
  return 1;
9945
9962
  }
@@ -9979,7 +9996,7 @@ var settings_page_default = _template("y", (input$3) => {
9979
9996
  _if(() => {
9980
9997
  if (p.total) {
9981
9998
  const $scope73_id = _scope_id();
9982
- _html(`<li><label${_attr_class(["_gD", { ["_gF"]: !p.missing.length && p.key !== "settings" }])}><input${_attr_input_checked($scope73_id, "b", restoreParts[p.key])}${_attr_class("_gE")} type=checkbox${_attr("disabled", !p.missing.length && p.key !== "settings")}>${_el_resume($scope73_id, "b")}<span${_attr_class("_ce")}><span${_attr_class("_cf")}>${_text_resume($scope73_id, "e", p.label)}</span><span${_attr_class("_ch")}>`);
9999
+ _html(`<li><label${_attr_class(["_gD", { ["_gF"]: !p.missing.length && p.key !== "settings" }])}><input${_attr_input_checked($scope73_id, "b", restoreParts[p.key])}${_attr_class("_gE")} type=checkbox${_attr("disabled", !p.missing.length && p.key !== "settings")}>${_el_resume($scope73_id, "b")}<span${_attr_class("_cl")}><span${_attr_class("_cm")}>${_text_resume($scope73_id, "e", p.label)}</span><span${_attr_class("_co")}>`);
9983
10000
  _if(() => {
9984
10001
  if (p.key === "settings") {
9985
10002
  const $scope145_id = _scope_id();
@@ -10322,12 +10339,12 @@ var ARM_MS = 3500;
10322
10339
  function disarmLater(fn) {
10323
10340
  return setTimeout(fn, ARM_MS);
10324
10341
  }
10325
- var prChip = "_iA _u _iz";
10326
- var portChip = "_iB _u _iz";
10342
+ var prChip = "_hv _u _hu";
10343
+ var portChip = "_hw _u _hu";
10327
10344
  var prState = {
10328
- open: "_iF",
10329
- merged: "_iG",
10330
- closed: "_iH"
10345
+ open: "_hA",
10346
+ merged: "_hB",
10347
+ closed: "_hC"
10331
10348
  };
10332
10349
  //#endregion
10333
10350
  //#region src/tags/icons/icon-diff.marko
@@ -10418,7 +10435,7 @@ var side_nav_chips_default = _template("z", (input) => {
10418
10435
  const name = repo.full_name.split("/").at(-1);
10419
10436
  return repos.some((r) => r.full_name !== repo.full_name && r.full_name.split("/").at(-1) === name) ? repoLabel(repo.full_name) : name;
10420
10437
  }, "z4", $scope1_id);
10421
- _html(`<div${_attr_class("_iy")}>`);
10438
+ _html(`<div${_attr_class("_ht")}>`);
10422
10439
  _for_of(repos, (repo) => {
10423
10440
  const $scope2_id = _scope_id();
10424
10441
  const $for_content__repo_worktree__closures = /* @__PURE__ */ new Set();
@@ -10434,11 +10451,11 @@ var side_nav_chips_default = _template("z", (input) => {
10434
10451
  [prState.merged]: pr$1.state === "MERGED",
10435
10452
  [prState.closed]: pr$1.state === "CLOSED"
10436
10453
  }
10437
- ])}${_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$1(repo))}#${_text_resume($scope3_id, "d", pr$1.number, 2)}</a>${_el_resume($scope3_id, "b")}`);
10454
+ ])}${_attr("title", prTitle(repo, pr$1))}><a${_attr_class(["_hx", { ["_hF"]: !open }])}${_attr("href", pr$1.url)} target=_blank rel=noopener>${_text_resume($scope3_id, "c", repoLabel$1(repo))}#${_text_resume($scope3_id, "d", pr$1.number, 2)}</a>${_el_resume($scope3_id, "b")}`);
10438
10455
  _if(() => {
10439
10456
  if (open) {
10440
10457
  const $scope4_id = _scope_id();
10441
- _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`)}>`);
10458
+ _html(`<a${_attr_class(["_hx", "_hy"])}${_attr("href", `/w/${input.workspaceId}/review?pr=${encodeURIComponent(`${repo.worktree}/${pr$1.number}`)}`)}${_attr("title", `Review #${pr$1.number} changes`)}>`);
10442
10459
  icon_diff_default({ size: 12 });
10443
10460
  _html(`</a>${_el_resume($scope4_id, "a")}`);
10444
10461
  _subscribe($for_content__repo_worktree__closures, _subscribe($si__input_workspaceId && $input_workspaceId__closures, writeScope($scope4_id, {})));
@@ -10446,9 +10463,9 @@ var side_nav_chips_default = _template("z", (input) => {
10446
10463
  } else {
10447
10464
  const $scope6_id = _scope_id();
10448
10465
  _html(`<button type=button${_attr_class([
10449
- "_iC",
10450
- "_iD",
10451
- "_iE"
10466
+ "_hx",
10467
+ "_hy",
10468
+ "_hz"
10452
10469
  ])}${_attr("title", `Dismiss #${pr$1.number}`)}>`);
10453
10470
  icon_xmark_default({ size: 12 });
10454
10471
  _html(`</button>${_el_resume($scope6_id, "a")}`);
@@ -10476,21 +10493,21 @@ var side_nav_chips_default = _template("z", (input) => {
10476
10493
  _if(() => {
10477
10494
  if (dead.has(p.port)) {
10478
10495
  const $scope7_id = _scope_id();
10479
- _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")}`);
10496
+ _html(`<span${_attr_class(["_hx", "_hD"])}${_attr("title", dead.get(p.port))} aria-disabled=true>:${_text_resume($scope7_id, "b", p.port, 2)}</span>${_el_resume($scope7_id, "a")}`);
10480
10497
  _subscribe($dead__closures, writeScope($scope7_id, { Ca3: 1 }));
10481
10498
  return 0;
10482
10499
  } else {
10483
10500
  const $scope8_id = _scope_id();
10484
- _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")}`);
10501
+ _html(`<button type=button${_attr_class(["_hx", "_hE"])}${_attr("title", `Open port ${p.port}`)}>:${_text_resume($scope8_id, "b", p.port, 2)}</button>${_el_resume($scope8_id, "a")}`);
10485
10502
  _script($scope8_id, "z6");
10486
10503
  writeScope($scope8_id, {});
10487
10504
  return 1;
10488
10505
  }
10489
10506
  }, $scope5_id, "b", 1, 1, 1, 0, 1);
10490
10507
  _html(`<button type=button${_attr_class([
10491
- "_iC",
10492
- "_iD",
10493
- "_iE",
10508
+ "_hx",
10509
+ "_hy",
10510
+ "_hz",
10494
10511
  { ["_s"]: armedPid === p.pid }
10495
10512
  ])}${armedPid === p.pid ? " title=Kill?" : _attr("title", `Kill ${p.cmd} (pid ${p.pid})`)}>`);
10496
10513
  icon_xmark_default({ size: 12 });
@@ -10586,7 +10603,7 @@ var usage_pcts_default = _template("I", (input) => {
10586
10603
  return 0;
10587
10604
  }
10588
10605
  }, $scope2_id, "b", $sg__input_agent, $sg__input_agent, $sg__input_agent, 0, 1);
10589
- _html(`<span${_attr_class("_gJ")}>${_text_resume($scope2_id, "d", win$1.window, $sg__input_agent)}</span><span${_attr_class(["_gK", win$1.used_percent >= 90 ? "_g6" : win$1.used_percent >= 70 ? "_g5" : win$1.used_percent >= 40 ? "_g4" : "_g3"])}>${_text_resume($scope2_id, "f", pctText(win$1.used_percent), $sg__input_agent)}</span>${_el_resume($scope2_id, "e", $sg__input_agent)}</span>`);
10606
+ _html(`<span${_attr_class("_gJ")}>${_text_resume($scope2_id, "d", win$1.window, $sg__input_agent)}</span><span${_attr_class(["_gK", win$1.used_percent >= 90 ? "_hp" : win$1.used_percent >= 70 ? "_ho" : win$1.used_percent >= 40 ? "_hn" : "_hm"])}>${_text_resume($scope2_id, "f", pctText(win$1.used_percent), $sg__input_agent)}</span>${_el_resume($scope2_id, "e", $sg__input_agent)}</span>`);
10590
10607
  $si__input_agent && writeScope($scope2_id, {});
10591
10608
  }, "window", $scope1_id, "a", $sg__input_agent, $sg__input_agent__OR__input_class, $sg__input_agent, "</span>", 1);
10592
10609
  $si__input_agent__OR__input_class && writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
@@ -11380,12 +11397,7 @@ var side_nav_default = _template("B", (input) => {
11380
11397
  const byId = new Map(workspaces.map((w) => [w.id, w]));
11381
11398
  const allStatus = input.allStatus || {};
11382
11399
  const orderedIds = sortedIds(itemIds, byId);
11383
- const keyIndex = (() => {
11384
- const m = /* @__PURE__ */ new Map();
11385
- let n = 0;
11386
- for (const id of orderedIds) if (!byId.get(id)?.pending) m.set(id, n++);
11387
- return m;
11388
- })();
11400
+ const keyIndex = new Map(numbered(workspaces).map((w, i) => [w.id, i]));
11389
11401
  const isPage = view === "nav";
11390
11402
  const backHref = ws ? `/w/${ws.id}` : "/new";
11391
11403
  const iconSrc = `/api/instance/icon${input.instanceAccent ? `?v=${input.instanceAccent.slice(1)}` : ""}`;
@@ -11606,9 +11618,9 @@ var side_nav_default = _template("B", (input) => {
11606
11618
  d: wsId,
11607
11619
  _: _scope_with_id($scope7_id),
11608
11620
  b: _serialize_if($scope0_reason, 4) && _existing_scope($childScope3),
11609
- Cb6: $si__input_workspace && 1,
11610
- Cbd: $si__input_workspace__OR__input_allWorkspaces && 1,
11611
- Cbe: $si__input_allStatus && 1
11621
+ Cb5: $si__input_workspace && 1,
11622
+ Cbc: $si__input_workspace__OR__input_allWorkspaces && 1,
11623
+ Cbd: $si__input_allStatus && 1
11612
11624
  })))));
11613
11625
  }, (id) => id, $scope7_id, "a", $sg__input_workspace__OR__input_allWorkspaces, $sg__input_workspace__OR__input_allWorkspaces, $sg__input_workspace__OR__input_allWorkspaces, "</div>", 1);
11614
11626
  _if(() => {
@@ -11683,18 +11695,18 @@ var side_nav_default = _template("B", (input) => {
11683
11695
  _subscribe($si__input_allStatus && $allStatus__closures, _subscribe($si__input_workspace__OR__input_allWorkspaces && $byId__closures, _subscribe($view__closures, _subscribe($si__input_tab__OR__input_tabChange && $tab__closures, _subscribe($si__input_workspace && $ws_id__closures, _subscribe($si__input_onCloseSession && $input_onCloseSession__closures, _subscribe($si__input_onRenameSession && $input_onRenameSession__closures, _subscribe($si__input_onReviewOther && $input_onReviewOther__closures, _subscribe($si__input_onReviewOpened && $input_onReviewOpened__closures, _subscribe($si__input_onNewSession && $input_onNewSession__closures, _subscribe($si__input_agents && $input_agents__closures, _subscribe($si__input_sessions && $input_sessions__closures, writeScope($scope9_id, {
11684
11696
  d: hoverId,
11685
11697
  b: _existing_scope($childScope4),
11686
- Cay: $si__input_sessions && 1,
11687
- Caz: $si__input_agents && 1,
11688
- Cb0: $si__input_onNewSession && 1,
11689
- Cb1: $si__input_onReviewOpened && 1,
11690
- Cb2: $si__input_onReviewOther && 1,
11691
- Cb3: $si__input_onRenameSession && 1,
11692
- Cb4: $si__input_onCloseSession && 1,
11693
- Cb6: $si__input_workspace && 2,
11694
- Cb7: $si__input_tab__OR__input_tabChange && 1,
11695
- Cb8: 1,
11696
- Cbd: $si__input_workspace__OR__input_allWorkspaces && 2,
11697
- Cbe: $si__input_allStatus && 2
11698
+ Cax: $si__input_sessions && 1,
11699
+ Cay: $si__input_agents && 1,
11700
+ Caz: $si__input_onNewSession && 1,
11701
+ Cb0: $si__input_onReviewOpened && 1,
11702
+ Cb1: $si__input_onReviewOther && 1,
11703
+ Cb2: $si__input_onRenameSession && 1,
11704
+ Cb3: $si__input_onCloseSession && 1,
11705
+ Cb5: $si__input_workspace && 2,
11706
+ Cb6: $si__input_tab__OR__input_tabChange && 1,
11707
+ Cb7: 1,
11708
+ Cbc: $si__input_workspace__OR__input_allWorkspaces && 2,
11709
+ Cbd: $si__input_allStatus && 2
11698
11710
  })))))))))))));
11699
11711
  return 0;
11700
11712
  }
@@ -11793,29 +11805,29 @@ var side_nav_default = _template("B", (input) => {
11793
11805
  aj: byId,
11794
11806
  al: allStatus,
11795
11807
  am: orderedIds,
11796
- ap: keyIndex,
11797
- aq: isPage,
11798
- at: backHref,
11799
- au: iconSrc,
11800
- av: pageIds,
11808
+ ao: keyIndex,
11809
+ ap: isPage,
11810
+ as: backHref,
11811
+ at: iconSrc,
11812
+ au: pageIds,
11801
11813
  aa: input.viewChange || void 0,
11802
- aw: $si__input_instanceName && $input_instanceName__closures,
11803
- bi: $si__input_instanceAccent && $iconSrc__closures,
11804
- ba: $notifyOn__closures,
11805
- ay: $si__input_sessions && $input_sessions__closures,
11806
- az: $si__input_agents && $input_agents__closures,
11807
- b0: $si__input_onNewSession && $input_onNewSession__closures,
11808
- b1: $si__input_onReviewOpened && $input_onReviewOpened__closures,
11809
- b2: $si__input_onReviewOther && $input_onReviewOther__closures,
11810
- b3: $si__input_onRenameSession && $input_onRenameSession__closures,
11811
- b4: $si__input_onCloseSession && $input_onCloseSession__closures,
11812
- b6: $si__input_workspace && $ws_id__closures,
11813
- b7: $si__input_tab__OR__input_tabChange && $tab__closures,
11814
- b8: $view__closures,
11815
- bc: $leaveNav2__closures,
11816
- bd: $si__input_workspace__OR__input_allWorkspaces && $byId__closures,
11817
- be: $si__input_allStatus && $allStatus__closures,
11818
- bg: $si__input_workspace__OR__input_allWorkspaces && $keyIndex__closures
11814
+ av: $si__input_instanceName && $input_instanceName__closures,
11815
+ bh: $si__input_instanceAccent && $iconSrc__closures,
11816
+ b9: $notifyOn__closures,
11817
+ ax: $si__input_sessions && $input_sessions__closures,
11818
+ ay: $si__input_agents && $input_agents__closures,
11819
+ az: $si__input_onNewSession && $input_onNewSession__closures,
11820
+ b0: $si__input_onReviewOpened && $input_onReviewOpened__closures,
11821
+ b1: $si__input_onReviewOther && $input_onReviewOther__closures,
11822
+ b2: $si__input_onRenameSession && $input_onRenameSession__closures,
11823
+ b3: $si__input_onCloseSession && $input_onCloseSession__closures,
11824
+ b5: $si__input_workspace && $ws_id__closures,
11825
+ b6: $si__input_tab__OR__input_tabChange && $tab__closures,
11826
+ b7: $view__closures,
11827
+ bb: $leaveNav2__closures,
11828
+ bc: $si__input_workspace__OR__input_allWorkspaces && $byId__closures,
11829
+ bd: $si__input_allStatus && $allStatus__closures,
11830
+ bf: $si__input_workspace__OR__input_allWorkspaces && $keyIndex__closures
11819
11831
  });
11820
11832
  _resume_branch($scope0_id);
11821
11833
  });
@@ -12098,7 +12110,7 @@ var diff_send_default = _template("j", (input) => {
12098
12110
  let sendTarget = null;
12099
12111
  const sessions = input.sessions || [];
12100
12112
  const sendPick = sessions.some((s) => s.id === sendTarget) ? sendTarget : sessions[0]?.id ?? null;
12101
- _html(`<span${_attr_class("_ht")}><button type=button${_attr_class("_q")} title="Copy comments as markdown">${_text_resume($scope0_id, "c", "Copy")}</button>${_el_resume($scope0_id, "b")}`);
12113
+ _html(`<span${_attr_class("_hG")}><button type=button${_attr_class("_q")} title="Copy comments as markdown">${_text_resume($scope0_id, "c", "Copy")}</button>${_el_resume($scope0_id, "b")}`);
12102
12114
  _if(() => {
12103
12115
  if (sessions.length === 1) {
12104
12116
  const $scope1_id = _scope_id();
@@ -12108,11 +12120,11 @@ var diff_send_default = _template("j", (input) => {
12108
12120
  return 0;
12109
12121
  } else if (sessions.length) {
12110
12122
  const $scope2_id = _scope_id();
12111
- _html(`<span${_attr_class("_hu")}><button type=button${_attr_class(["_r", "_hv"])}${_attr("disabled", sending)}>${_text_resume($scope2_id, "c", "Send to")}</button>${_el_resume($scope2_id, "b")}`);
12123
+ _html(`<span${_attr_class("_hH")}><button type=button${_attr_class(["_r", "_hI"])}${_attr("disabled", sending)}>${_text_resume($scope2_id, "c", "Send to")}</button>${_el_resume($scope2_id, "b")}`);
12112
12124
  _attr_select_value($scope2_id, "d", sendTarget, _resume((_new_sendTarget) => {
12113
12125
  sendTarget = _new_sendTarget;
12114
12126
  }, "j0", $scope2_id), () => {
12115
- _html(`<select${_attr_class("_hw")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
12127
+ _html(`<select${_attr_class("_hJ")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
12116
12128
  _for_of(sessions, (s) => {
12117
12129
  const $scope3_id = _scope_id();
12118
12130
  _html(`<option${_attr_option_value(s.id)}>${_text_resume($scope3_id, "b", s.title || s.agent, $sg__input_sessions)}</option>${_el_resume($scope3_id, "a", $sg__input_sessions)}`);
@@ -12139,1491 +12151,6 @@ var diff_send_default = _template("j", (input) => {
12139
12151
  });
12140
12152
  _resume_branch($scope0_id);
12141
12153
  });
12142
- //#endregion
12143
- //#region node_modules/.pnpm/@pierre+diffs@1.3.6_@shikijs+themes@4.4.3_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@pierre/diffs/dist/constants.js
12144
- var GIT_DIFF_FILE_BREAK_REGEX = /(?=^diff --git)/gm;
12145
- var FILENAME_HEADER_REGEX = /^(---|\+\+\+)\s+([^\t\r\n]+)/;
12146
- var FILENAME_HEADER_REGEX_GIT = /^(---|\+\+\+)\s+[ab]\/([^\t\r\n]+)/;
12147
- var ALTERNATE_FILE_NAMES_GIT = /^diff --git (?:"a\/(.+?)"|a\/(.+?)) (?:"b\/(.+?)"|b\/(.+?))$/;
12148
- var INDEX_LINE_METADATA = /^index ([0-9a-f]+)\.\.([0-9a-f]+)(?: (\d+))?$/i;
12149
- Object.freeze({
12150
- fromStart: 0,
12151
- fromEnd: 0
12152
- });
12153
- //#endregion
12154
- //#region node_modules/.pnpm/@pierre+diffs@1.3.6_@shikijs+themes@4.4.3_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@pierre/diffs/dist/utils/cleanLastNewline.js
12155
- function cleanLastNewline(contents) {
12156
- let end = contents.length;
12157
- if (contents.charCodeAt(end - 1) === 10) {
12158
- end--;
12159
- if (contents.charCodeAt(end - 1) === 13) end--;
12160
- }
12161
- return contents.slice(0, end);
12162
- }
12163
- //#endregion
12164
- //#region node_modules/.pnpm/@pierre+diffs@1.3.6_@shikijs+themes@4.4.3_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@pierre/diffs/dist/utils/detachString.js
12165
- var stringDetachEncoder = new TextEncoder();
12166
- var stringDetachDecoder = new TextDecoder("utf-8", { ignoreBOM: true });
12167
- var SURROGATE_CODE_UNIT_PATTERN = /[\uD800-\uDFFF]/;
12168
- var STRING_DETACH_INITIAL_BUFFER_SIZE = 1024;
12169
- var stringDetachBuffer = new Uint8Array(STRING_DETACH_INITIAL_BUFFER_SIZE);
12170
- function releaseStringDetachBuffer() {
12171
- if (stringDetachBuffer.length !== STRING_DETACH_INITIAL_BUFFER_SIZE) stringDetachBuffer = new Uint8Array(STRING_DETACH_INITIAL_BUFFER_SIZE);
12172
- }
12173
- function detachString(value) {
12174
- if (value.length === 0) return value;
12175
- if (SURROGATE_CODE_UNIT_PATTERN.test(value)) return JSON.parse(JSON.stringify(value));
12176
- const requiredByteLength = value.length * 3;
12177
- if (stringDetachBuffer.length < requiredByteLength) stringDetachBuffer = new Uint8Array(requiredByteLength);
12178
- const { written } = stringDetachEncoder.encodeInto(value, stringDetachBuffer);
12179
- return stringDetachDecoder.decode(stringDetachBuffer.subarray(0, written));
12180
- }
12181
- //#endregion
12182
- //#region node_modules/.pnpm/@pierre+diffs@1.3.6_@shikijs+themes@4.4.3_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@pierre/diffs/dist/utils/getHunkSideBoundaries.js
12183
- /** Converts a unified hunk side's start/count into its consumed-file range. */
12184
- function getHunkSideStartBoundary(start, count) {
12185
- return start - (count === 0 ? 0 : 1);
12186
- }
12187
- function getHunkSideEndBoundary(start, count) {
12188
- return getHunkSideStartBoundary(start, count) + count;
12189
- }
12190
- //#endregion
12191
- //#region node_modules/.pnpm/@pierre+diffs@1.3.6_@shikijs+themes@4.4.3_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@pierre/diffs/dist/utils/realignChangeContent.js
12192
- var MAX_ALIGNMENT_COMPARISONS = 4096;
12193
- var MIN_IMPROVEMENT_PER_PAIR = .5;
12194
- /**
12195
- * Re-split count-mismatched change blocks in every hunk so paired lines are
12196
- * chosen by content similarity instead of position, then slide blank-line
12197
- * insert/delete blocks to the top of their blank run. Mutates `hunks` in
12198
- * place; rendered row counts are unchanged (a split block covers the same
12199
- * split/unified rows as the original).
12200
- */
12201
- function realignChangeContentBySimilarity(diff) {
12202
- for (const hunk of diff.hunks) {
12203
- for (let index = 0; index < hunk.hunkContent.length; index++) {
12204
- const content = hunk.hunkContent[index];
12205
- if (content.type !== "change") continue;
12206
- const replacement = realignChangeBlock(diff, content);
12207
- if (replacement != null) {
12208
- hunk.hunkContent.splice(index, 1, ...replacement);
12209
- index += replacement.length - 1;
12210
- }
12211
- }
12212
- slideBlankBoundaryBlocksUp(hunk, diff);
12213
- }
12214
- }
12215
- /**
12216
- * Slide pure insert/delete blocks made entirely of blank lines to the top of
12217
- * the blank run they sit in. Adding or removing a blank line next to
12218
- * existing blanks is ambiguous, and the diff library reports the change at
12219
- * the run's bottom — so pressing Enter at the end of a line marks a blank
12220
- * *below* the caret as inserted while the caret's own new line renders as
12221
- * context. Sliding up anchors the change to the content above it (the caret
12222
- * line after an Enter) instead.
12223
- *
12224
- * The slide is all-or-nothing: it only applies when the block comes to rest
12225
- * directly beneath remaining in-hunk content. A slide that would consume the
12226
- * hunk's entire leading context was stopped by the hunk's edge — a context
12227
- * window cut, not the top of the blank run — and that landing spot is
12228
- * arbitrary, so the block keeps the library's bottom-of-run anchor (which
12229
- * sits against the content below the run). Non-blank blocks never slide, so
12230
- * code that merely ends like its neighbor (an added function before an
12231
- * identical `}`) keeps the library's canonical position.
12232
- */
12233
- function slideBlankBoundaryBlocksUp(hunk, diff) {
12234
- const { hunkContent } = hunk;
12235
- for (let index = 1; index < hunkContent.length; index++) {
12236
- const block = hunkContent[index];
12237
- const previous = hunkContent[index - 1];
12238
- if (block.type !== "change" || block.additions > 0 && block.deletions > 0 || previous.type !== "context") continue;
12239
- const isInsert = block.additions > 0;
12240
- const lines = isInsert ? diff.additionLines : diff.deletionLines;
12241
- const blockStart = isInsert ? block.additionLineIndex : block.deletionLineIndex;
12242
- const blockLength = isInsert ? block.additions : block.deletions;
12243
- const unit = lines[blockStart] ?? "";
12244
- if (unit.trim() !== "") continue;
12245
- let uniform = true;
12246
- for (let offset = 1; offset < blockLength; offset++) if (lines[blockStart + offset] !== unit) {
12247
- uniform = false;
12248
- break;
12249
- }
12250
- if (!uniform) continue;
12251
- let slide = 0;
12252
- while (slide < previous.lines && diff.additionLines[previous.additionLineIndex + previous.lines - 1 - slide] === unit) slide++;
12253
- if (slide === 0) continue;
12254
- if (index === 1 && slide === previous.lines) continue;
12255
- block.additionLineIndex -= slide;
12256
- block.deletionLineIndex -= slide;
12257
- const blockAdditionEnd = block.additionLineIndex + block.additions;
12258
- const blockDeletionEnd = block.deletionLineIndex + block.deletions;
12259
- const next = hunkContent[index + 1];
12260
- if (next?.type === "context") {
12261
- next.lines += slide;
12262
- next.additionLineIndex = blockAdditionEnd;
12263
- next.deletionLineIndex = blockDeletionEnd;
12264
- } else hunkContent.splice(index + 1, 0, {
12265
- type: "context",
12266
- lines: slide,
12267
- additionLineIndex: blockAdditionEnd,
12268
- deletionLineIndex: blockDeletionEnd
12269
- });
12270
- previous.lines -= slide;
12271
- if (previous.lines === 0) {
12272
- hunkContent.splice(index - 1, 1);
12273
- index--;
12274
- }
12275
- }
12276
- }
12277
- function realignChangeBlock(diff, content) {
12278
- const { deletions, additions, deletionLineIndex, additionLineIndex } = content;
12279
- const pairCount = Math.min(deletions, additions);
12280
- const surplus = Math.abs(additions - deletions);
12281
- if (pairCount === 0 || surplus === 0 || pairCount * (surplus + 1) > MAX_ALIGNMENT_COMPARISONS) return null;
12282
- const strippedDeletions = [];
12283
- for (let line = 0; line < deletions; line++) strippedDeletions.push(stripWhitespace(diff.deletionLines[deletionLineIndex + line] ?? ""));
12284
- const strippedAdditions = [];
12285
- for (let line = 0; line < additions; line++) strippedAdditions.push(stripWhitespace(diff.additionLines[additionLineIndex + line] ?? ""));
12286
- const additionsAreLonger = additions > deletions;
12287
- let bestOffset = 0;
12288
- let bestScore = -1;
12289
- for (let offset = 0; offset <= surplus; offset++) {
12290
- let score = 0;
12291
- for (let pair = 0; pair < pairCount; pair++) score += lineSimilarity(strippedDeletions[pair + (additionsAreLonger ? 0 : offset)], strippedAdditions[pair + (additionsAreLonger ? offset : 0)]);
12292
- if (offset === 0) bestScore = score + pairCount * MIN_IMPROVEMENT_PER_PAIR;
12293
- else if (score > bestScore) {
12294
- bestScore = score;
12295
- bestOffset = offset;
12296
- }
12297
- }
12298
- if (bestOffset === 0) return null;
12299
- const blocks = [];
12300
- const pushBlock = (blockDeletions, blockAdditions, blockDeletionIndex, blockAdditionIndex) => {
12301
- if (blockDeletions > 0 || blockAdditions > 0) blocks.push({
12302
- type: "change",
12303
- deletions: blockDeletions,
12304
- additions: blockAdditions,
12305
- deletionLineIndex: blockDeletionIndex,
12306
- additionLineIndex: blockAdditionIndex
12307
- });
12308
- };
12309
- if (additionsAreLonger) {
12310
- pushBlock(0, bestOffset, deletionLineIndex, additionLineIndex);
12311
- pushBlock(pairCount, pairCount, deletionLineIndex, additionLineIndex + bestOffset);
12312
- pushBlock(0, additions - pairCount - bestOffset, deletionLineIndex + pairCount, additionLineIndex + bestOffset + pairCount);
12313
- } else {
12314
- pushBlock(bestOffset, 0, deletionLineIndex, additionLineIndex);
12315
- pushBlock(pairCount, pairCount, deletionLineIndex + bestOffset, additionLineIndex);
12316
- pushBlock(deletions - pairCount - bestOffset, 0, deletionLineIndex + bestOffset + pairCount, additionLineIndex + pairCount);
12317
- }
12318
- return blocks;
12319
- }
12320
- var WHITESPACE = /\s+/g;
12321
- function stripWhitespace(line) {
12322
- return line.replace(WHITESPACE, "");
12323
- }
12324
- function lineSimilarity(a, b) {
12325
- if (a === b) return 1;
12326
- const maxLength = Math.max(a.length, b.length);
12327
- const minLength = Math.min(a.length, b.length);
12328
- if (minLength === 0) return 0;
12329
- let prefix = 0;
12330
- while (prefix < minLength && a[prefix] === b[prefix]) prefix++;
12331
- let suffix = 0;
12332
- while (suffix < minLength - prefix && a[a.length - 1 - suffix] === b[b.length - 1 - suffix]) suffix++;
12333
- return (prefix + suffix) / maxLength;
12334
- }
12335
- //#endregion
12336
- //#region node_modules/.pnpm/@pierre+diffs@1.3.6_@shikijs+themes@4.4.3_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.js
12337
- function processFile(fileDiffString, options) {
12338
- try {
12339
- return _processFile(fileDiffString, options);
12340
- } finally {
12341
- releaseStringDetachBuffer();
12342
- }
12343
- }
12344
- function _processFile(fileDiffString, { cacheKey, isGitDiff = GIT_DIFF_FILE_BREAK_REGEX.test(fileDiffString), oldFile, newFile, throwOnError = false } = {}) {
12345
- let lastHunkEnd = 0;
12346
- const hunks = splitAtLinePrefix(fileDiffString, "@@ ");
12347
- let currentFile;
12348
- const isPartial = oldFile == null || newFile == null;
12349
- let deletionLineIndex = 0;
12350
- let additionLineIndex = 0;
12351
- for (const hunk of hunks) {
12352
- const lines = splitWithNewlines(hunk);
12353
- const firstLine = lines[0];
12354
- if (firstLine == null) {
12355
- if (throwOnError) throw Error("parsePatchContent: invalid hunk");
12356
- else console.error("parsePatchContent: invalid hunk", hunk);
12357
- continue;
12358
- }
12359
- const fileHeader = parseHunkHeader(firstLine);
12360
- let additionLines = 0;
12361
- let deletionLines = 0;
12362
- if (fileHeader == null || currentFile == null) {
12363
- if (currentFile != null) {
12364
- if (throwOnError) throw Error("parsePatchContent: Invalid hunk");
12365
- else console.error("parsePatchContent: Invalid hunk", hunk);
12366
- continue;
12367
- }
12368
- currentFile = {
12369
- name: "",
12370
- type: "change",
12371
- hunks: [],
12372
- splitLineCount: 0,
12373
- unifiedLineCount: 0,
12374
- isPartial,
12375
- additionLines: !isPartial && oldFile != null && newFile != null ? splitFileContents(newFile.contents) : [],
12376
- deletionLines: !isPartial && oldFile != null && newFile != null ? splitFileContents(oldFile.contents) : [],
12377
- cacheKey: maybeDetachOptionalString(cacheKey)
12378
- };
12379
- if (currentFile.additionLines.length === 1 && newFile?.contents === "") currentFile.additionLines.length = 0;
12380
- if (currentFile.deletionLines.length === 1 && oldFile?.contents === "") currentFile.deletionLines.length = 0;
12381
- for (const line of lines) {
12382
- if (line.startsWith("diff --git")) {
12383
- const filenameMatch = line.trim().match(ALTERNATE_FILE_NAMES_GIT);
12384
- const prevName = filenameMatch?.[1] ?? filenameMatch?.[2];
12385
- const name = filenameMatch?.[3] ?? filenameMatch?.[4];
12386
- if (prevName == null || name == null) {
12387
- if (throwOnError) throw Error("parsePatchContent: invalid git diff header");
12388
- else console.error("parsePatchContent: invalid git diff header", line);
12389
- continue;
12390
- }
12391
- currentFile.name = detachString(name.trim());
12392
- if (prevName !== name) currentFile.prevName = detachString(prevName.trim());
12393
- continue;
12394
- }
12395
- const filenameMatch = line.startsWith("---") || line.startsWith("+++") ? line.match(isGitDiff ? FILENAME_HEADER_REGEX_GIT : FILENAME_HEADER_REGEX) : null;
12396
- if (filenameMatch != null) {
12397
- const [, type, fileName] = filenameMatch;
12398
- if (type === "---" && fileName !== "/dev/null") {
12399
- const detachedFileName = detachString(fileName.trim());
12400
- currentFile.prevName = detachedFileName;
12401
- currentFile.name = detachedFileName;
12402
- } else if (type === "+++" && fileName !== "/dev/null") currentFile.name = detachString(fileName.trim());
12403
- } else if (isGitDiff) {
12404
- if (line.startsWith("new mode ")) currentFile.mode = detachString(line.slice(8).trim());
12405
- if (line.startsWith("old mode ")) currentFile.prevMode = detachString(line.slice(8).trim());
12406
- if (line.startsWith("new file mode")) {
12407
- currentFile.type = "new";
12408
- currentFile.mode = detachString(line.slice(13).trim());
12409
- }
12410
- if (line.startsWith("deleted file mode")) {
12411
- currentFile.type = "deleted";
12412
- currentFile.mode = detachString(line.slice(17).trim());
12413
- }
12414
- if (line.startsWith("similarity index")) if (line.startsWith("similarity index 100%")) currentFile.type = "rename-pure";
12415
- else currentFile.type = "rename-changed";
12416
- if (line.startsWith("index ")) {
12417
- const [, prevObjectId, newObjectId, mode] = line.trim().match(INDEX_LINE_METADATA) ?? [];
12418
- if (prevObjectId != null) currentFile.prevObjectId = detachString(prevObjectId);
12419
- if (newObjectId != null) currentFile.newObjectId = detachString(newObjectId);
12420
- if (mode != null) currentFile.mode = detachString(mode);
12421
- }
12422
- if (line.startsWith("rename from ")) currentFile.prevName = detachString(line.slice(12).trim());
12423
- if (line.startsWith("rename to ")) currentFile.name = detachString(line.slice(10).trim());
12424
- }
12425
- }
12426
- continue;
12427
- }
12428
- let currentContent;
12429
- let lastLineType;
12430
- while (lines.length > 0 && (lines[lines.length - 1] === "\n" || lines[lines.length - 1] === "\r" || lines[lines.length - 1] === "\r\n" || lines[lines.length - 1] === "")) lines.pop();
12431
- const { additionStart, deletionStart } = fileHeader;
12432
- deletionLineIndex = isPartial ? deletionLineIndex : deletionStart - 1;
12433
- additionLineIndex = isPartial ? additionLineIndex : additionStart - 1;
12434
- const hunkData = {
12435
- collapsedBefore: 0,
12436
- splitLineCount: 0,
12437
- splitLineStart: 0,
12438
- unifiedLineCount: 0,
12439
- unifiedLineStart: 0,
12440
- additionCount: fileHeader.additionCount,
12441
- additionStart,
12442
- additionLines,
12443
- deletionCount: fileHeader.deletionCount,
12444
- deletionStart,
12445
- deletionLines,
12446
- deletionLineIndex,
12447
- additionLineIndex,
12448
- hunkContent: [],
12449
- hunkContext: maybeDetachOptionalString(fileHeader.hunkContext),
12450
- hunkSpecs: detachString(firstLine),
12451
- noEOFCRAdditions: false,
12452
- noEOFCRDeletions: false
12453
- };
12454
- let parsedAdditionLines = 0;
12455
- let parsedDeletionLines = 0;
12456
- for (let lineIndex = 1; lineIndex < lines.length; lineIndex++) {
12457
- const rawLine = lines[lineIndex];
12458
- if (parsedAdditionLines >= hunkData.additionCount && parsedDeletionLines >= hunkData.deletionCount && !rawLine.startsWith("\\")) {
12459
- if (throwOnError && isHunkBodyLine(rawLine) && !isFormatPatchVersionSeparator(rawLine)) throw Error("parsePatchContent: hunk has more lines than expected");
12460
- break;
12461
- }
12462
- const firstChar = rawLine[0];
12463
- if (firstChar !== "+" && firstChar !== "-" && firstChar !== " " && firstChar !== "\\") {
12464
- if (throwOnError) throw Error("parsePatchContent: invalid hunk line");
12465
- console.error(`parseLineType: Invalid firstChar: "${firstChar}", full line: "${rawLine}"`);
12466
- console.error("processFile: invalid rawLine:", rawLine);
12467
- continue;
12468
- }
12469
- const type = parseRawLineType(firstChar);
12470
- if (type === "addition") {
12471
- if (throwOnError && parsedAdditionLines >= hunkData.additionCount) throw Error("parsePatchContent: hunk has too many addition lines");
12472
- const line = getParsedLineContent(rawLine);
12473
- if (currentContent == null || currentContent.type !== "change") {
12474
- currentContent = createContentGroup("change", deletionLineIndex, additionLineIndex);
12475
- hunkData.hunkContent.push(currentContent);
12476
- }
12477
- additionLineIndex++;
12478
- parsedAdditionLines++;
12479
- if (isPartial) currentFile.additionLines.push(line);
12480
- currentContent.additions++;
12481
- additionLines++;
12482
- lastLineType = "addition";
12483
- } else if (type === "deletion") {
12484
- if (throwOnError && parsedDeletionLines >= hunkData.deletionCount) throw Error("parsePatchContent: hunk has too many deletion lines");
12485
- const line = getParsedLineContent(rawLine);
12486
- if (currentContent == null || currentContent.type !== "change") {
12487
- currentContent = createContentGroup("change", deletionLineIndex, additionLineIndex);
12488
- hunkData.hunkContent.push(currentContent);
12489
- }
12490
- deletionLineIndex++;
12491
- parsedDeletionLines++;
12492
- if (isPartial) currentFile.deletionLines.push(line);
12493
- currentContent.deletions++;
12494
- deletionLines++;
12495
- lastLineType = "deletion";
12496
- } else if (type === "context") {
12497
- if (throwOnError && (parsedDeletionLines >= hunkData.deletionCount || parsedAdditionLines >= hunkData.additionCount)) throw Error("parsePatchContent: hunk has too many context lines");
12498
- const line = getParsedLineContent(rawLine);
12499
- if (currentContent == null || currentContent.type !== "context") {
12500
- currentContent = createContentGroup("context", deletionLineIndex, additionLineIndex);
12501
- hunkData.hunkContent.push(currentContent);
12502
- }
12503
- additionLineIndex++;
12504
- deletionLineIndex++;
12505
- parsedAdditionLines++;
12506
- parsedDeletionLines++;
12507
- if (isPartial) {
12508
- currentFile.deletionLines.push(line);
12509
- currentFile.additionLines.push(line);
12510
- }
12511
- currentContent.lines++;
12512
- lastLineType = "context";
12513
- } else if (type === "metadata" && currentContent != null) {
12514
- if (currentContent.type === "context") {
12515
- hunkData.noEOFCRAdditions = true;
12516
- hunkData.noEOFCRDeletions = true;
12517
- } else if (lastLineType === "deletion") hunkData.noEOFCRDeletions = true;
12518
- else if (lastLineType === "addition") hunkData.noEOFCRAdditions = true;
12519
- if (isPartial && (lastLineType === "addition" || lastLineType === "context")) {
12520
- const lastIndex = currentFile.additionLines.length - 1;
12521
- if (lastIndex >= 0) currentFile.additionLines[lastIndex] = cleanLastNewline(currentFile.additionLines[lastIndex]);
12522
- }
12523
- if (isPartial && (lastLineType === "deletion" || lastLineType === "context")) {
12524
- const lastIndex = currentFile.deletionLines.length - 1;
12525
- if (lastIndex >= 0) currentFile.deletionLines[lastIndex] = cleanLastNewline(currentFile.deletionLines[lastIndex]);
12526
- }
12527
- }
12528
- }
12529
- if (throwOnError && (parsedAdditionLines !== hunkData.additionCount || parsedDeletionLines !== hunkData.deletionCount)) throw Error("parsePatchContent: hunk line count mismatch");
12530
- hunkData.additionLines = additionLines;
12531
- hunkData.deletionLines = deletionLines;
12532
- hunkData.collapsedBefore = Math.max(getHunkSideStartBoundary(hunkData.additionStart, hunkData.additionCount) - lastHunkEnd, 0);
12533
- currentFile.hunks.push(hunkData);
12534
- lastHunkEnd = getHunkSideEndBoundary(hunkData.additionStart, hunkData.additionCount);
12535
- for (const content of hunkData.hunkContent) if (content.type === "context") {
12536
- hunkData.splitLineCount += content.lines;
12537
- hunkData.unifiedLineCount += content.lines;
12538
- } else {
12539
- hunkData.splitLineCount += Math.max(content.additions, content.deletions);
12540
- hunkData.unifiedLineCount += content.deletions + content.additions;
12541
- }
12542
- hunkData.splitLineStart = currentFile.splitLineCount + hunkData.collapsedBefore;
12543
- hunkData.unifiedLineStart = currentFile.unifiedLineCount + hunkData.collapsedBefore;
12544
- currentFile.splitLineCount += hunkData.collapsedBefore + hunkData.splitLineCount;
12545
- currentFile.unifiedLineCount += hunkData.collapsedBefore + hunkData.unifiedLineCount;
12546
- }
12547
- if (currentFile == null) return;
12548
- if (throwOnError && isPartial && !isGitDiff && currentFile.hunks.length === 0) throw Error("parsePatchContent: unified file has no hunks");
12549
- if (currentFile.hunks.length > 0 && !isPartial && currentFile.additionLines.length > 0 && currentFile.deletionLines.length > 0) {
12550
- const lastHunk = currentFile.hunks[currentFile.hunks.length - 1];
12551
- const lastHunkEnd = getHunkSideEndBoundary(lastHunk.additionStart, lastHunk.additionCount);
12552
- const totalFileLines = currentFile.additionLines.length;
12553
- const collapsedAfter = Math.max(totalFileLines - lastHunkEnd, 0);
12554
- currentFile.splitLineCount += collapsedAfter;
12555
- currentFile.unifiedLineCount += collapsedAfter;
12556
- }
12557
- if (!isGitDiff) {
12558
- if (currentFile.prevName != null && currentFile.name !== currentFile.prevName) if (currentFile.hunks.length > 0) currentFile.type = "rename-changed";
12559
- else currentFile.type = "rename-pure";
12560
- else if ((oldFile == null || oldFile.contents === "") && newFile != null && newFile.contents !== "") currentFile.type = "new";
12561
- else if (oldFile != null && oldFile.contents !== "" && (newFile == null || newFile.contents === "")) currentFile.type = "deleted";
12562
- }
12563
- if (currentFile.type !== "rename-pure" && currentFile.type !== "rename-changed") currentFile.prevName = void 0;
12564
- realignChangeContentBySimilarity(currentFile);
12565
- return currentFile;
12566
- }
12567
- function splitFileContents(contents) {
12568
- const lines = splitWithNewlines(contents);
12569
- for (let index = 0; index < lines.length; index++) lines[index] = detachString(lines[index]);
12570
- return lines;
12571
- }
12572
- function splitWithNewlines(contents) {
12573
- if (contents.length === 0) return [""];
12574
- const lines = [];
12575
- let startIndex = 0;
12576
- for (;;) {
12577
- const newlineIndex = contents.indexOf("\n", startIndex);
12578
- if (newlineIndex === -1) break;
12579
- lines.push(contents.slice(startIndex, newlineIndex + 1));
12580
- startIndex = newlineIndex + 1;
12581
- }
12582
- if (startIndex < contents.length) lines.push(contents.slice(startIndex));
12583
- return lines;
12584
- }
12585
- function isHunkBodyLine(line) {
12586
- const firstChar = line[0];
12587
- return firstChar === "+" || firstChar === "-" || firstChar === " ";
12588
- }
12589
- function isFormatPatchVersionSeparator(line) {
12590
- if (!line.startsWith("--")) return false;
12591
- for (let index = 2; index < line.length; index++) {
12592
- const char = line[index];
12593
- if (char !== " " && char !== " " && char !== "\n" && char !== "\r") return false;
12594
- }
12595
- return true;
12596
- }
12597
- function parseHunkHeader(line) {
12598
- if (!line.startsWith("@@ -")) return;
12599
- let index = 4;
12600
- const deletionStartResult = readPositiveInteger(line, index);
12601
- if (deletionStartResult == null) return;
12602
- const deletionStart = deletionStartResult.value;
12603
- index = deletionStartResult.endIndex;
12604
- let deletionCount = 1;
12605
- if (line[index] === ",") {
12606
- const deletionCountResult = readPositiveInteger(line, index + 1);
12607
- if (deletionCountResult == null) return;
12608
- deletionCount = deletionCountResult.value;
12609
- index = deletionCountResult.endIndex;
12610
- }
12611
- if (line[index] !== " " || line[index + 1] !== "+") return;
12612
- index += 2;
12613
- const additionStartResult = readPositiveInteger(line, index);
12614
- if (additionStartResult == null) return;
12615
- const additionStart = additionStartResult.value;
12616
- index = additionStartResult.endIndex;
12617
- let additionCount = 1;
12618
- if (line[index] === ",") {
12619
- const additionCountResult = readPositiveInteger(line, index + 1);
12620
- if (additionCountResult == null) return;
12621
- additionCount = additionCountResult.value;
12622
- index = additionCountResult.endIndex;
12623
- }
12624
- if (line[index] !== " " || line[index + 1] !== "@" || line[index + 2] !== "@") return;
12625
- let hunkContext;
12626
- const contextStartIndex = index + 3;
12627
- if (line[contextStartIndex] === " ") hunkContext = trimLineEnd(line.slice(contextStartIndex + 1));
12628
- return {
12629
- additionCount,
12630
- additionStart,
12631
- deletionCount,
12632
- deletionStart,
12633
- hunkContext
12634
- };
12635
- }
12636
- function readPositiveInteger(value, startIndex) {
12637
- let index = startIndex;
12638
- let parsedValue = 0;
12639
- for (; index < value.length; index++) {
12640
- const digit = value.charCodeAt(index) - 48;
12641
- if (digit < 0 || digit > 9) break;
12642
- parsedValue = parsedValue * 10 + digit;
12643
- }
12644
- if (index === startIndex) return;
12645
- return {
12646
- value: parsedValue,
12647
- endIndex: index
12648
- };
12649
- }
12650
- function trimLineEnd(value) {
12651
- if (value.endsWith("\r\n")) return value.slice(0, -2);
12652
- if (value.endsWith("\n")) return value.slice(0, -1);
12653
- return value;
12654
- }
12655
- function splitAtLinePrefix(contents, prefix) {
12656
- if (contents.length === 0) return [""];
12657
- const newlinePrefix = `\n${prefix}`;
12658
- const firstBoundaryIndex = contents.startsWith(prefix) ? 0 : findLinePrefixIndex(contents, newlinePrefix, 0);
12659
- if (firstBoundaryIndex === -1) return [contents];
12660
- const parts = [];
12661
- if (firstBoundaryIndex > 0) parts.push(contents.slice(0, firstBoundaryIndex));
12662
- let startIndex = firstBoundaryIndex;
12663
- for (;;) {
12664
- const nextBoundaryIndex = findLinePrefixIndex(contents, newlinePrefix, startIndex + 1);
12665
- if (nextBoundaryIndex === -1) break;
12666
- parts.push(contents.slice(startIndex, nextBoundaryIndex));
12667
- startIndex = nextBoundaryIndex;
12668
- }
12669
- parts.push(contents.slice(startIndex));
12670
- return parts;
12671
- }
12672
- function findLinePrefixIndex(contents, newlinePrefix, fromIndex) {
12673
- const index = contents.indexOf(newlinePrefix, fromIndex);
12674
- return index === -1 ? -1 : index + 1;
12675
- }
12676
- function maybeDetachOptionalString(value) {
12677
- return value == null ? value : detachString(value);
12678
- }
12679
- function parseRawLineType(firstChar) {
12680
- return firstChar === " " ? "context" : firstChar === "\\" ? "metadata" : firstChar === "+" ? "addition" : "deletion";
12681
- }
12682
- function getParsedLineContent(rawLine) {
12683
- const processedLine = rawLine.slice(1);
12684
- return detachString(processedLine === "" ? "\n" : processedLine);
12685
- }
12686
- function createContentGroup(type, deletionLineIndex, additionLineIndex) {
12687
- if (type === "change") return {
12688
- type: "change",
12689
- additions: 0,
12690
- deletions: 0,
12691
- additionLineIndex,
12692
- deletionLineIndex
12693
- };
12694
- return {
12695
- type: "context",
12696
- lines: 0,
12697
- additionLineIndex,
12698
- deletionLineIndex
12699
- };
12700
- }
12701
- //#endregion
12702
- //#region node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/base.js
12703
- var Diff = class {
12704
- diff(oldStr, newStr, options = {}) {
12705
- let callback;
12706
- if (typeof options === "function") {
12707
- callback = options;
12708
- options = {};
12709
- } else if ("callback" in options) callback = options.callback;
12710
- const oldString = this.castInput(oldStr, options);
12711
- const newString = this.castInput(newStr, options);
12712
- const oldTokens = this.removeEmpty(this.tokenize(oldString, options));
12713
- const newTokens = this.removeEmpty(this.tokenize(newString, options));
12714
- return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);
12715
- }
12716
- diffWithOptionsObj(oldTokens, newTokens, options, callback) {
12717
- var _a;
12718
- const done = (value) => {
12719
- value = this.postProcess(value, options);
12720
- if (callback) {
12721
- setTimeout(function() {
12722
- callback(value);
12723
- }, 0);
12724
- return;
12725
- } else return value;
12726
- };
12727
- const newLen = newTokens.length, oldLen = oldTokens.length;
12728
- let editLength = 1;
12729
- let maxEditLength = newLen + oldLen;
12730
- if (options.maxEditLength != null) maxEditLength = Math.min(maxEditLength, options.maxEditLength);
12731
- const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;
12732
- const abortAfterTimestamp = Date.now() + maxExecutionTime;
12733
- const bestPath = [{
12734
- oldPos: -1,
12735
- lastComponent: void 0
12736
- }];
12737
- let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);
12738
- if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));
12739
- let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;
12740
- const execEditLength = () => {
12741
- for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {
12742
- let basePath;
12743
- const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];
12744
- if (removePath) bestPath[diagonalPath - 1] = void 0;
12745
- let canAdd = false;
12746
- if (addPath) {
12747
- const addPathNewPos = addPath.oldPos - diagonalPath;
12748
- canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;
12749
- }
12750
- const canRemove = removePath && removePath.oldPos + 1 < oldLen;
12751
- if (!canAdd && !canRemove) {
12752
- bestPath[diagonalPath] = void 0;
12753
- continue;
12754
- }
12755
- if (!canRemove || canAdd && removePath.oldPos < addPath.oldPos) basePath = this.addToPath(addPath, true, false, 0, options);
12756
- else basePath = this.addToPath(removePath, false, true, 1, options);
12757
- newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);
12758
- if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;
12759
- else {
12760
- bestPath[diagonalPath] = basePath;
12761
- if (basePath.oldPos + 1 >= oldLen) maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);
12762
- if (newPos + 1 >= newLen) minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);
12763
- }
12764
- }
12765
- editLength++;
12766
- };
12767
- if (callback) (function exec() {
12768
- setTimeout(function() {
12769
- if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) return callback(void 0);
12770
- if (!execEditLength()) exec();
12771
- }, 0);
12772
- })();
12773
- else while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {
12774
- const ret = execEditLength();
12775
- if (ret) return ret;
12776
- }
12777
- }
12778
- addToPath(path, added, removed, oldPosInc, options) {
12779
- const last = path.lastComponent;
12780
- if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) return {
12781
- oldPos: path.oldPos + oldPosInc,
12782
- lastComponent: {
12783
- count: last.count + 1,
12784
- added,
12785
- removed,
12786
- previousComponent: last.previousComponent
12787
- }
12788
- };
12789
- else return {
12790
- oldPos: path.oldPos + oldPosInc,
12791
- lastComponent: {
12792
- count: 1,
12793
- added,
12794
- removed,
12795
- previousComponent: last
12796
- }
12797
- };
12798
- }
12799
- extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {
12800
- const newLen = newTokens.length, oldLen = oldTokens.length;
12801
- let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;
12802
- while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {
12803
- newPos++;
12804
- oldPos++;
12805
- commonCount++;
12806
- if (options.oneChangePerToken) basePath.lastComponent = {
12807
- count: 1,
12808
- previousComponent: basePath.lastComponent,
12809
- added: false,
12810
- removed: false
12811
- };
12812
- }
12813
- if (commonCount && !options.oneChangePerToken) basePath.lastComponent = {
12814
- count: commonCount,
12815
- previousComponent: basePath.lastComponent,
12816
- added: false,
12817
- removed: false
12818
- };
12819
- basePath.oldPos = oldPos;
12820
- return newPos;
12821
- }
12822
- equals(left, right, options) {
12823
- if (options.comparator) return options.comparator(left, right);
12824
- else return left === right || !!options.ignoreCase && left.toLowerCase() === right.toLowerCase();
12825
- }
12826
- removeEmpty(array) {
12827
- const ret = [];
12828
- for (let i = 0; i < array.length; i++) if (array[i]) ret.push(array[i]);
12829
- return ret;
12830
- }
12831
- castInput(value, options) {
12832
- return value;
12833
- }
12834
- tokenize(value, options) {
12835
- return Array.from(value);
12836
- }
12837
- join(chars) {
12838
- return chars.join("");
12839
- }
12840
- postProcess(changeObjects, options) {
12841
- return changeObjects;
12842
- }
12843
- get useLongestToken() {
12844
- return false;
12845
- }
12846
- buildValues(lastComponent, newTokens, oldTokens) {
12847
- const components = [];
12848
- let nextComponent;
12849
- while (lastComponent) {
12850
- components.push(lastComponent);
12851
- nextComponent = lastComponent.previousComponent;
12852
- delete lastComponent.previousComponent;
12853
- lastComponent = nextComponent;
12854
- }
12855
- components.reverse();
12856
- const componentLen = components.length;
12857
- let componentPos = 0, newPos = 0, oldPos = 0;
12858
- for (; componentPos < componentLen; componentPos++) {
12859
- const component = components[componentPos];
12860
- if (!component.removed) {
12861
- if (!component.added && this.useLongestToken) {
12862
- let value = newTokens.slice(newPos, newPos + component.count);
12863
- value = value.map(function(value, i) {
12864
- const oldValue = oldTokens[oldPos + i];
12865
- return oldValue.length > value.length ? oldValue : value;
12866
- });
12867
- component.value = this.join(value);
12868
- } else component.value = this.join(newTokens.slice(newPos, newPos + component.count));
12869
- newPos += component.count;
12870
- if (!component.added) oldPos += component.count;
12871
- } else {
12872
- component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));
12873
- oldPos += component.count;
12874
- }
12875
- }
12876
- return components;
12877
- }
12878
- };
12879
- //#endregion
12880
- //#region node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/character.js
12881
- var CharacterDiff = class extends Diff {};
12882
- new CharacterDiff();
12883
- //#endregion
12884
- //#region node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/util/string.js
12885
- function longestCommonPrefix(str1, str2) {
12886
- let i;
12887
- for (i = 0; i < str1.length && i < str2.length; i++) if (str1[i] != str2[i]) return str1.slice(0, i);
12888
- return str1.slice(0, i);
12889
- }
12890
- function longestCommonSuffix(str1, str2) {
12891
- let i;
12892
- if (!str1 || !str2 || str1[str1.length - 1] != str2[str2.length - 1]) return "";
12893
- for (i = 0; i < str1.length && i < str2.length; i++) if (str1[str1.length - (i + 1)] != str2[str2.length - (i + 1)]) return str1.slice(-i);
12894
- return str1.slice(-i);
12895
- }
12896
- function replacePrefix(string, oldPrefix, newPrefix) {
12897
- if (string.slice(0, oldPrefix.length) != oldPrefix) throw Error(`string ${JSON.stringify(string)} doesn't start with prefix ${JSON.stringify(oldPrefix)}; this is a bug`);
12898
- return newPrefix + string.slice(oldPrefix.length);
12899
- }
12900
- function replaceSuffix(string, oldSuffix, newSuffix) {
12901
- if (!oldSuffix) return string + newSuffix;
12902
- if (string.slice(-oldSuffix.length) != oldSuffix) throw Error(`string ${JSON.stringify(string)} doesn't end with suffix ${JSON.stringify(oldSuffix)}; this is a bug`);
12903
- return string.slice(0, -oldSuffix.length) + newSuffix;
12904
- }
12905
- function removePrefix(string, oldPrefix) {
12906
- return replacePrefix(string, oldPrefix, "");
12907
- }
12908
- function removeSuffix(string, oldSuffix) {
12909
- return replaceSuffix(string, oldSuffix, "");
12910
- }
12911
- function maximumOverlap(string1, string2) {
12912
- return string2.slice(0, overlapCount(string1, string2));
12913
- }
12914
- function overlapCount(a, b) {
12915
- let startA = 0;
12916
- if (a.length > b.length) startA = a.length - b.length;
12917
- let endB = b.length;
12918
- if (a.length < b.length) endB = a.length;
12919
- const map = Array(endB);
12920
- let k = 0;
12921
- map[0] = 0;
12922
- for (let j = 1; j < endB; j++) {
12923
- if (b[j] == b[k]) map[j] = map[k];
12924
- else map[j] = k;
12925
- while (k > 0 && b[j] != b[k]) k = map[k];
12926
- if (b[j] == b[k]) k++;
12927
- }
12928
- k = 0;
12929
- for (let i = startA; i < a.length; i++) {
12930
- while (k > 0 && a[i] != b[k]) k = map[k];
12931
- if (a[i] == b[k]) k++;
12932
- }
12933
- return k;
12934
- }
12935
- /**
12936
- * Split a string into segments using a word segmenter, merging consecutive
12937
- * segments if they are both whitespace segments. Whitespace segments can
12938
- * appear adjacent to one another for two reasons:
12939
- * - newlines always get their own segment
12940
- * - where a diacritic is attached to a whitespace character in the text, the
12941
- * segment ends after the diacritic, so e.g. " \u0300 " becomes two segments.
12942
- * This function therefore runs the segmenter's .segment() method and then
12943
- * merges consecutive segments of whitespace into a single part.
12944
- */
12945
- function segment(string, segmenter) {
12946
- const parts = [];
12947
- for (const segmentObj of Array.from(segmenter.segment(string))) {
12948
- const segment = segmentObj.segment;
12949
- if (parts.length && /\s/.test(parts[parts.length - 1]) && /\s/.test(segment)) parts[parts.length - 1] += segment;
12950
- else parts.push(segment);
12951
- }
12952
- return parts;
12953
- }
12954
- function trailingWs(string, segmenter) {
12955
- if (segmenter) return leadingAndTrailingWs(string, segmenter)[1];
12956
- let i;
12957
- for (i = string.length - 1; i >= 0; i--) if (!string[i].match(/\s/)) break;
12958
- return string.substring(i + 1);
12959
- }
12960
- function leadingWs(string, segmenter) {
12961
- if (segmenter) return leadingAndTrailingWs(string, segmenter)[0];
12962
- const match = string.match(/^\s*/);
12963
- return match ? match[0] : "";
12964
- }
12965
- function leadingAndTrailingWs(string, segmenter) {
12966
- if (!segmenter) return [leadingWs(string), trailingWs(string)];
12967
- if (segmenter.resolvedOptions().granularity != "word") throw new Error("The segmenter passed must have a granularity of \"word\"");
12968
- const segments = segment(string, segmenter);
12969
- const firstSeg = segments[0];
12970
- const lastSeg = segments[segments.length - 1];
12971
- return [/\s/.test(firstSeg) ? firstSeg : "", /\s/.test(lastSeg) ? lastSeg : ""];
12972
- }
12973
- //#endregion
12974
- //#region node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/word.js
12975
- var extendedWordChars = "a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}";
12976
- var tokenizeIncludingWhitespace = new RegExp(`[${extendedWordChars}]+|\\s+|[^${extendedWordChars}]`, "ug");
12977
- var WordDiff = class extends Diff {
12978
- equals(left, right, options) {
12979
- if (options.ignoreCase) {
12980
- left = left.toLowerCase();
12981
- right = right.toLowerCase();
12982
- }
12983
- return left.trim() === right.trim();
12984
- }
12985
- tokenize(value, options = {}) {
12986
- let parts;
12987
- if (options.intlSegmenter) {
12988
- const segmenter = options.intlSegmenter;
12989
- if (segmenter.resolvedOptions().granularity != "word") throw new Error("The segmenter passed must have a granularity of \"word\"");
12990
- parts = segment(value, segmenter);
12991
- } else parts = value.match(tokenizeIncludingWhitespace) || [];
12992
- const tokens = [];
12993
- let prevPart = null;
12994
- parts.forEach((part) => {
12995
- if (/\s/.test(part)) {
12996
- if (prevPart == null) tokens.push(part);
12997
- else tokens.push(tokens.pop() + part);
12998
- } else if (prevPart != null && /\s/.test(prevPart)) {
12999
- if (tokens[tokens.length - 1] == prevPart) tokens.push(tokens.pop() + part);
13000
- else tokens.push(prevPart + part);
13001
- } else tokens.push(part);
13002
- prevPart = part;
13003
- });
13004
- return tokens;
13005
- }
13006
- join(tokens) {
13007
- return tokens.map((token, i) => {
13008
- if (i == 0) return token;
13009
- else return token.replace(/^\s+/, "");
13010
- }).join("");
13011
- }
13012
- postProcess(changes, options) {
13013
- if (!changes || options.oneChangePerToken) return changes;
13014
- let lastKeep = null;
13015
- let insertion = null;
13016
- let deletion = null;
13017
- changes.forEach((change) => {
13018
- if (change.added) insertion = change;
13019
- else if (change.removed) deletion = change;
13020
- else {
13021
- if (insertion || deletion) dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change, options.intlSegmenter);
13022
- lastKeep = change;
13023
- insertion = null;
13024
- deletion = null;
13025
- }
13026
- });
13027
- if (insertion || deletion) dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null, options.intlSegmenter);
13028
- return changes;
13029
- }
13030
- };
13031
- new WordDiff();
13032
- function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep, segmenter) {
13033
- if (deletion && insertion) {
13034
- const [oldWsPrefix, oldWsSuffix] = leadingAndTrailingWs(deletion.value, segmenter);
13035
- const [newWsPrefix, newWsSuffix] = leadingAndTrailingWs(insertion.value, segmenter);
13036
- if (startKeep) {
13037
- const commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix);
13038
- startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix);
13039
- deletion.value = removePrefix(deletion.value, commonWsPrefix);
13040
- insertion.value = removePrefix(insertion.value, commonWsPrefix);
13041
- }
13042
- if (endKeep) {
13043
- const commonWsSuffix = longestCommonSuffix(oldWsSuffix, newWsSuffix);
13044
- endKeep.value = replacePrefix(endKeep.value, newWsSuffix, commonWsSuffix);
13045
- deletion.value = removeSuffix(deletion.value, commonWsSuffix);
13046
- insertion.value = removeSuffix(insertion.value, commonWsSuffix);
13047
- }
13048
- } else if (insertion) {
13049
- if (startKeep) {
13050
- const ws = leadingWs(insertion.value, segmenter);
13051
- insertion.value = insertion.value.substring(ws.length);
13052
- }
13053
- if (endKeep) {
13054
- const ws = leadingWs(endKeep.value, segmenter);
13055
- endKeep.value = endKeep.value.substring(ws.length);
13056
- }
13057
- } else if (startKeep && endKeep) {
13058
- const newWsFull = leadingWs(endKeep.value, segmenter), [delWsStart, delWsEnd] = leadingAndTrailingWs(deletion.value, segmenter);
13059
- const newWsStart = longestCommonPrefix(newWsFull, delWsStart);
13060
- deletion.value = removePrefix(deletion.value, newWsStart);
13061
- const newWsEnd = longestCommonSuffix(removePrefix(newWsFull, newWsStart), delWsEnd);
13062
- deletion.value = removeSuffix(deletion.value, newWsEnd);
13063
- endKeep.value = replacePrefix(endKeep.value, newWsFull, newWsEnd);
13064
- startKeep.value = replaceSuffix(startKeep.value, newWsFull, newWsFull.slice(0, newWsFull.length - newWsEnd.length));
13065
- } else if (endKeep) {
13066
- const endKeepWsPrefix = leadingWs(endKeep.value, segmenter);
13067
- const overlap = maximumOverlap(trailingWs(deletion.value, segmenter), endKeepWsPrefix);
13068
- deletion.value = removeSuffix(deletion.value, overlap);
13069
- } else if (startKeep) {
13070
- const overlap = maximumOverlap(trailingWs(startKeep.value, segmenter), leadingWs(deletion.value, segmenter));
13071
- deletion.value = removePrefix(deletion.value, overlap);
13072
- }
13073
- }
13074
- var WordsWithSpaceDiff = class extends Diff {
13075
- tokenize(value) {
13076
- const regex = new RegExp(`(\\r?\\n)|[${extendedWordChars}]+|[^\\S\\n\\r]+|[^${extendedWordChars}]`, "ug");
13077
- return value.match(regex) || [];
13078
- }
13079
- };
13080
- new WordsWithSpaceDiff();
13081
- //#endregion
13082
- //#region node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/line.js
13083
- var LineDiff = class extends Diff {
13084
- constructor() {
13085
- super(...arguments);
13086
- this.tokenize = tokenize;
13087
- }
13088
- equals(left, right, options) {
13089
- if (options.ignoreWhitespace) {
13090
- if (!options.newlineIsToken || !left.includes("\n")) left = left.trim();
13091
- if (!options.newlineIsToken || !right.includes("\n")) right = right.trim();
13092
- } else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {
13093
- if (left.endsWith("\n")) left = left.slice(0, -1);
13094
- if (right.endsWith("\n")) right = right.slice(0, -1);
13095
- }
13096
- return super.equals(left, right, options);
13097
- }
13098
- };
13099
- var lineDiff = new LineDiff();
13100
- function diffLines(oldStr, newStr, options) {
13101
- return lineDiff.diff(oldStr, newStr, options);
13102
- }
13103
- function tokenize(value, options) {
13104
- if (options.stripTrailingCr) value = value.replace(/\r\n/g, "\n");
13105
- const retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/);
13106
- if (!linesAndNewlines[linesAndNewlines.length - 1]) linesAndNewlines.pop();
13107
- for (let i = 0; i < linesAndNewlines.length; i++) {
13108
- const line = linesAndNewlines[i];
13109
- if (i % 2 && !options.newlineIsToken) retLines[retLines.length - 1] += line;
13110
- else retLines.push(line);
13111
- }
13112
- return retLines;
13113
- }
13114
- //#endregion
13115
- //#region node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/sentence.js
13116
- function isSentenceEndPunct(char) {
13117
- return char == "." || char == "!" || char == "?";
13118
- }
13119
- var SentenceDiff = class extends Diff {
13120
- tokenize(value) {
13121
- var _a;
13122
- const result = [];
13123
- let tokenStartI = 0;
13124
- for (let i = 0; i < value.length; i++) {
13125
- if (i == value.length - 1) {
13126
- result.push(value.slice(tokenStartI));
13127
- break;
13128
- }
13129
- if (isSentenceEndPunct(value[i]) && value[i + 1].match(/\s/)) {
13130
- result.push(value.slice(tokenStartI, i + 1));
13131
- i = tokenStartI = i + 1;
13132
- while ((_a = value[i + 1]) === null || _a === void 0 ? void 0 : _a.match(/\s/)) i++;
13133
- result.push(value.slice(tokenStartI, i + 1));
13134
- tokenStartI = i + 1;
13135
- }
13136
- }
13137
- return result;
13138
- }
13139
- };
13140
- new SentenceDiff();
13141
- //#endregion
13142
- //#region node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/css.js
13143
- var CssDiff = class extends Diff {
13144
- tokenize(value) {
13145
- return value.split(/([{}:;,]|\s+)/);
13146
- }
13147
- };
13148
- new CssDiff();
13149
- //#endregion
13150
- //#region node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/json.js
13151
- var JsonDiff = class extends Diff {
13152
- constructor() {
13153
- super(...arguments);
13154
- this.tokenize = tokenize;
13155
- }
13156
- get useLongestToken() {
13157
- return true;
13158
- }
13159
- castInput(value, options) {
13160
- const { undefinedReplacement, stringifyReplacer = (k, v) => typeof v === "undefined" ? undefinedReplacement : v } = options;
13161
- return typeof value === "string" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), null, " ");
13162
- }
13163
- equals(left, right, options) {
13164
- return super.equals(left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1"), options);
13165
- }
13166
- };
13167
- new JsonDiff();
13168
- function canonicalize(obj, stack, replacementStack, replacer, key) {
13169
- stack = stack || [];
13170
- replacementStack = replacementStack || [];
13171
- if (replacer) obj = replacer(key === void 0 ? "" : key, obj);
13172
- let i;
13173
- for (i = 0; i < stack.length; i += 1) if (stack[i] === obj) return replacementStack[i];
13174
- let canonicalizedObj;
13175
- if ("[object Array]" === Object.prototype.toString.call(obj)) {
13176
- stack.push(obj);
13177
- canonicalizedObj = new Array(obj.length);
13178
- replacementStack.push(canonicalizedObj);
13179
- for (i = 0; i < obj.length; i += 1) canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, String(i));
13180
- stack.pop();
13181
- replacementStack.pop();
13182
- return canonicalizedObj;
13183
- }
13184
- if (obj && obj.toJSON) obj = obj.toJSON();
13185
- if (typeof obj === "object" && obj !== null) {
13186
- stack.push(obj);
13187
- canonicalizedObj = {};
13188
- replacementStack.push(canonicalizedObj);
13189
- const sortedKeys = [];
13190
- let key;
13191
- for (key in obj)
13192
- /* istanbul ignore else */
13193
- if (Object.prototype.hasOwnProperty.call(obj, key)) sortedKeys.push(key);
13194
- sortedKeys.sort();
13195
- for (i = 0; i < sortedKeys.length; i += 1) {
13196
- key = sortedKeys[i];
13197
- canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack, replacer, key);
13198
- }
13199
- stack.pop();
13200
- replacementStack.pop();
13201
- } else canonicalizedObj = obj;
13202
- return canonicalizedObj;
13203
- }
13204
- //#endregion
13205
- //#region node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/array.js
13206
- var ArrayDiff = class extends Diff {
13207
- tokenize(value) {
13208
- return value.slice();
13209
- }
13210
- join(value) {
13211
- return value;
13212
- }
13213
- removeEmpty(value) {
13214
- return value;
13215
- }
13216
- };
13217
- new ArrayDiff();
13218
- //#endregion
13219
- //#region node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/patch/create.js
13220
- /**
13221
- * Returns true if the filename contains characters that require C-style
13222
- * quoting (as used by Git and GNU diffutils in diff output).
13223
- */
13224
- function needsQuoting(s) {
13225
- for (let i = 0; i < s.length; i++) if (s[i] < " " || s[i] > "~" || s[i] === "\"" || s[i] === "\\") return true;
13226
- return false;
13227
- }
13228
- /**
13229
- * C-style quotes a filename, encoding special characters as escape sequences
13230
- * and non-ASCII bytes as octal escapes. This is the inverse of
13231
- * `parseQuotedFileName` in parse.ts.
13232
- *
13233
- * Non-ASCII bytes are encoded as UTF-8 before being emitted as octal escapes.
13234
- * This matches the behaviour of both Git and GNU diffutils, which always emit
13235
- * UTF-8 octal escapes regardless of the underlying filesystem encoding (e.g.
13236
- * Git for Windows converts from NTFS's UTF-16 to UTF-8 internally).
13237
- *
13238
- * If the filename doesn't need quoting, returns it as-is.
13239
- */
13240
- function quoteFileNameIfNeeded(s) {
13241
- if (!needsQuoting(s)) return s;
13242
- let result = "\"";
13243
- const bytes = new TextEncoder().encode(s);
13244
- let i = 0;
13245
- while (i < bytes.length) {
13246
- const b = bytes[i];
13247
- if (b === 7) result += "\\a";
13248
- else if (b === 8) result += "\\b";
13249
- else if (b === 9) result += "\\t";
13250
- else if (b === 10) result += "\\n";
13251
- else if (b === 11) result += "\\v";
13252
- else if (b === 12) result += "\\f";
13253
- else if (b === 13) result += "\\r";
13254
- else if (b === 34) result += "\\\"";
13255
- else if (b === 92) result += "\\\\";
13256
- else if (b >= 32 && b <= 126) result += String.fromCharCode(b);
13257
- else result += "\\" + b.toString(8).padStart(3, "0");
13258
- i++;
13259
- }
13260
- result += "\"";
13261
- return result;
13262
- }
13263
- var INCLUDE_HEADERS = {
13264
- includeIndex: true,
13265
- includeUnderline: true,
13266
- includeFileHeaders: true
13267
- };
13268
- function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
13269
- let optionsObj;
13270
- if (!options) optionsObj = {};
13271
- else if (typeof options === "function") optionsObj = { callback: options };
13272
- else optionsObj = options;
13273
- if (typeof optionsObj.context === "undefined") optionsObj.context = 4;
13274
- const context = optionsObj.context;
13275
- if (optionsObj.newlineIsToken) throw new Error("newlineIsToken may not be used with patch-generation functions, only with diffing functions");
13276
- if (!optionsObj.callback) return diffLinesResultToPatch(diffLines(oldStr, newStr, optionsObj));
13277
- else {
13278
- const { callback } = optionsObj;
13279
- diffLines(oldStr, newStr, Object.assign(Object.assign({}, optionsObj), { callback: (diff) => {
13280
- const patch = diffLinesResultToPatch(diff);
13281
- callback(patch);
13282
- } }));
13283
- }
13284
- function diffLinesResultToPatch(diff) {
13285
- if (!diff) return;
13286
- diff.push({
13287
- value: "",
13288
- lines: []
13289
- });
13290
- function contextLines(lines) {
13291
- return lines.map(function(entry) {
13292
- return " " + entry;
13293
- });
13294
- }
13295
- const hunks = [];
13296
- let oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;
13297
- for (let i = 0; i < diff.length; i++) {
13298
- const current = diff[i], lines = current.lines || splitLines(current.value);
13299
- current.lines = lines;
13300
- if (current.added || current.removed) {
13301
- if (!oldRangeStart) {
13302
- const prev = diff[i - 1];
13303
- oldRangeStart = oldLine;
13304
- newRangeStart = newLine;
13305
- if (prev) {
13306
- curRange = context > 0 ? contextLines(prev.lines.slice(-context)) : [];
13307
- oldRangeStart -= curRange.length;
13308
- newRangeStart -= curRange.length;
13309
- }
13310
- }
13311
- for (const line of lines) curRange.push((current.added ? "+" : "-") + line);
13312
- if (current.added) newLine += lines.length;
13313
- else oldLine += lines.length;
13314
- } else {
13315
- if (oldRangeStart) {
13316
- if (lines.length <= context * 2 && i < diff.length - 2) for (const line of contextLines(lines)) curRange.push(line);
13317
- else {
13318
- const contextSize = Math.min(lines.length, context);
13319
- for (const line of contextLines(lines.slice(0, contextSize))) curRange.push(line);
13320
- const hunk = {
13321
- oldStart: oldRangeStart,
13322
- oldLines: oldLine - oldRangeStart + contextSize,
13323
- newStart: newRangeStart,
13324
- newLines: newLine - newRangeStart + contextSize,
13325
- lines: curRange
13326
- };
13327
- hunks.push(hunk);
13328
- oldRangeStart = 0;
13329
- newRangeStart = 0;
13330
- curRange = [];
13331
- }
13332
- }
13333
- oldLine += lines.length;
13334
- newLine += lines.length;
13335
- }
13336
- }
13337
- for (const hunk of hunks) for (let i = 0; i < hunk.lines.length; i++) if (hunk.lines[i].endsWith("\n")) hunk.lines[i] = hunk.lines[i].slice(0, -1);
13338
- else {
13339
- hunk.lines.splice(i + 1, 0, "\");
13340
- i++;
13341
- }
13342
- return {
13343
- oldFileName,
13344
- newFileName,
13345
- oldHeader,
13346
- newHeader,
13347
- hunks
13348
- };
13349
- }
13350
- }
13351
- /**
13352
- * creates a unified diff patch.
13353
- *
13354
- * @param patch either a single structured patch object (as returned by `structuredPatch`) or an
13355
- * array of them (as returned by `parsePatch`).
13356
- * @param headerOptions behaves the same as the `headerOptions` option of `createTwoFilesPatch`.
13357
- * Ignored for patches where `isGit` is `true`.
13358
- *
13359
- * When a patch has `isGit: true`, `formatPatch` output is changed to more closely match Git's
13360
- * output: it emits a `diff --git` header, emits Git extended headers as appropriate based on
13361
- * properties like `isRename`, `isCreate`, `newMode`, etc, and will omit `---`/`+++` file
13362
- * headers for patches with no hunks (e.g. renames without content changes).
13363
- */
13364
- function formatPatch(patch, headerOptions) {
13365
- var _a, _b, _c, _d, _e, _f;
13366
- if (!headerOptions) headerOptions = INCLUDE_HEADERS;
13367
- if (Array.isArray(patch)) {
13368
- if (patch.length > 1 && !headerOptions.includeFileHeaders && !patch.every((p) => p.isGit)) throw new Error("Cannot omit file headers on a multi-file patch. (The result would be unparseable; how would a tool trying to apply the patch know which changes are to which file?)");
13369
- return patch.map((p) => formatPatch(p, headerOptions)).join("\n");
13370
- }
13371
- const ret = [];
13372
- if (patch.isGit) {
13373
- headerOptions = INCLUDE_HEADERS;
13374
- if (!patch.oldFileName) throw new Error("oldFileName must be specified for Git patches");
13375
- if (!patch.newFileName) throw new Error("newFileName must be specified for Git patches");
13376
- let gitOldName = patch.oldFileName;
13377
- let gitNewName = patch.newFileName;
13378
- if (patch.isCreate && gitOldName === "/dev/null") gitOldName = gitNewName.replace(/^b\//, "a/");
13379
- else if (patch.isDelete && gitNewName === "/dev/null") gitNewName = gitOldName.replace(/^a\//, "b/");
13380
- ret.push("diff --git " + quoteFileNameIfNeeded(gitOldName) + " " + quoteFileNameIfNeeded(gitNewName));
13381
- if (patch.isDelete) ret.push("deleted file mode " + ((_a = patch.oldMode) !== null && _a !== void 0 ? _a : "100644"));
13382
- if (patch.isCreate) ret.push("new file mode " + ((_b = patch.newMode) !== null && _b !== void 0 ? _b : "100644"));
13383
- if (patch.oldMode && patch.newMode && !patch.isDelete && !patch.isCreate) {
13384
- ret.push("old mode " + patch.oldMode);
13385
- ret.push("new mode " + patch.newMode);
13386
- }
13387
- if (patch.isRename) {
13388
- ret.push("rename from " + quoteFileNameIfNeeded(((_c = patch.oldFileName) !== null && _c !== void 0 ? _c : "").replace(/^a\//, "")));
13389
- ret.push("rename to " + quoteFileNameIfNeeded(((_d = patch.newFileName) !== null && _d !== void 0 ? _d : "").replace(/^b\//, "")));
13390
- }
13391
- if (patch.isCopy) {
13392
- ret.push("copy from " + quoteFileNameIfNeeded(((_e = patch.oldFileName) !== null && _e !== void 0 ? _e : "").replace(/^a\//, "")));
13393
- ret.push("copy to " + quoteFileNameIfNeeded(((_f = patch.newFileName) !== null && _f !== void 0 ? _f : "").replace(/^b\//, "")));
13394
- }
13395
- } else {
13396
- if (headerOptions.includeIndex && patch.oldFileName == patch.newFileName && patch.oldFileName !== void 0) ret.push("Index: " + patch.oldFileName);
13397
- if (headerOptions.includeUnderline) ret.push("===================================================================");
13398
- }
13399
- const hasHunks = patch.hunks.length > 0;
13400
- if (headerOptions.includeFileHeaders && patch.oldFileName !== void 0 && patch.newFileName !== void 0 && (!patch.isGit || hasHunks)) {
13401
- ret.push("--- " + quoteFileNameIfNeeded(patch.oldFileName) + (patch.oldHeader ? " " + patch.oldHeader : ""));
13402
- ret.push("+++ " + quoteFileNameIfNeeded(patch.newFileName) + (patch.newHeader ? " " + patch.newHeader : ""));
13403
- }
13404
- for (let i = 0; i < patch.hunks.length; i++) {
13405
- const hunk = patch.hunks[i];
13406
- const oldStart = hunk.oldLines === 0 ? hunk.oldStart - 1 : hunk.oldStart;
13407
- const newStart = hunk.newLines === 0 ? hunk.newStart - 1 : hunk.newStart;
13408
- ret.push("@@ -" + oldStart + "," + hunk.oldLines + " +" + newStart + "," + hunk.newLines + " @@");
13409
- for (const line of hunk.lines) ret.push(line);
13410
- }
13411
- return ret.join("\n") + "\n";
13412
- }
13413
- function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
13414
- if (typeof options === "function") options = { callback: options };
13415
- if (!(options === null || options === void 0 ? void 0 : options.callback)) {
13416
- const patchObj = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
13417
- if (!patchObj) return;
13418
- return formatPatch(patchObj, options === null || options === void 0 ? void 0 : options.headerOptions);
13419
- } else {
13420
- const { callback } = options;
13421
- structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, Object.assign(Object.assign({}, options), { callback: (patchObj) => {
13422
- if (!patchObj) callback(void 0);
13423
- else callback(formatPatch(patchObj, options.headerOptions));
13424
- } }));
13425
- }
13426
- }
13427
- /**
13428
- * Split `text` into an array of lines, including the trailing newline character (where present)
13429
- */
13430
- function splitLines(text) {
13431
- const hasTrailingNl = text.endsWith("\n");
13432
- const result = text.split("\n").map((line) => line + "\n");
13433
- if (hasTrailingNl) result.pop();
13434
- else result.push(result.pop().slice(0, -1));
13435
- return result;
13436
- }
13437
- //#endregion
13438
- //#region node_modules/.pnpm/@pierre+diffs@1.3.6_@shikijs+themes@4.4.3_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@pierre/diffs/dist/utils/parseDiffFromFile.js
13439
- var MISSING_FILE_NAME = "/dev/null";
13440
- /**
13441
- * Parses a diff from two file contents objects.
13442
- *
13443
- * If both `oldFile` and `newFile` have a `cacheKey`, the resulting diff will
13444
- * automatically get a combined cache key in the format `oldKey:newKey`.
13445
- */
13446
- function parseDiffFromFile(oldFile, newFile, options, throwOnError = false) {
13447
- if (oldFile === null && newFile === null) throw new Error("parseDiffFromFile: You must pass oldFile, newFile, or both");
13448
- const resolvedOldFile = oldFile ?? createMissingFile();
13449
- const resolvedNewFile = newFile ?? createMissingFile();
13450
- const fileData = processFile(createTwoFilesPatch(resolvedOldFile.name, resolvedNewFile.name, resolvedOldFile.contents, resolvedNewFile.contents, resolvedOldFile.header, resolvedNewFile.header, options), {
13451
- cacheKey: (() => {
13452
- const oldCacheKey = oldFile?.cacheKey ?? oldFile?.name;
13453
- const newCacheKey = newFile?.cacheKey ?? newFile?.name;
13454
- if (oldCacheKey != null && newCacheKey != null) return oldCacheKey + ":" + newCacheKey;
13455
- return oldCacheKey ?? newCacheKey;
13456
- })(),
13457
- oldFile: resolvedOldFile,
13458
- newFile: resolvedNewFile,
13459
- throwOnError
13460
- });
13461
- if (fileData == null) throw new Error("parseDiffFrom: FileInvalid diff -- probably need to fix something -- if the files are the same maybe?");
13462
- if (oldFile === null) {
13463
- fileData.type = "new";
13464
- fileData.prevName = void 0;
13465
- } else if (newFile === null) {
13466
- fileData.type = "deleted";
13467
- fileData.prevName = void 0;
13468
- }
13469
- const language = newFile?.lang ?? (newFile === null ? oldFile?.lang : void 0);
13470
- if (language != null) fileData.lang = language;
13471
- return fileData;
13472
- }
13473
- function createMissingFile() {
13474
- return {
13475
- name: MISSING_FILE_NAME,
13476
- contents: ""
13477
- };
13478
- }
13479
- var MAX_PER_FILE = 40;
13480
- /** Substring search over path + lines pierre actually renders (hunk
13481
- * change + context). Full-file old/new text is much larger than the
13482
- * visible diff — counting those made Next feel broken ("32 matches"
13483
- * with nothing on screen for many steps). */
13484
- /** Last search, keyed by files identity + query: the find box asks up to
13485
- * three times per keystroke (immediate paint, debounced state, template). */
13486
- var last;
13487
- /** Files with hits, or null when the list hit its cap and so can't say
13488
- * which files are clean (paint then falls back to walking every host). */
13489
- function hitKeys(hits) {
13490
- return hits.length >= 200 ? null : [...new Set(hits.map((h) => h.key))];
13491
- }
13492
- function searchDiffFiles(files, raw) {
13493
- const query = raw.trim();
13494
- if (!query) return [];
13495
- if (last && last.files === files && last.query === query) return last.hits;
13496
- const hits = searchUncached(files, query);
13497
- last = {
13498
- files,
13499
- query,
13500
- hits
13501
- };
13502
- return hits;
13503
- }
13504
- /** Hunk line sets and split lines are query-independent and dominate the
13505
- * cost (pierre re-parses the whole file); keep them per file object. */
13506
- var parsed = /* @__PURE__ */ new WeakMap();
13507
- function parsedFor(file) {
13508
- let p = parsed.get(file);
13509
- if (!p) {
13510
- p = {
13511
- visible: visibleHunkLines(file.old, file.new),
13512
- newLines: file.new == null ? null : file.new.split("\n"),
13513
- oldLines: file.old == null ? null : file.old.split("\n")
13514
- };
13515
- parsed.set(file, p);
13516
- }
13517
- return p;
13518
- }
13519
- function searchUncached(files, query) {
13520
- const sensitive = /[A-Z]/.test(query);
13521
- const needle = sensitive ? query : query.toLowerCase();
13522
- const ascii = !/[^\x00-\x7f]/.test(needle);
13523
- const hits = [];
13524
- for (const file of files) {
13525
- if (hits.length >= 200) break;
13526
- const before = hits.length;
13527
- if (ascii) {
13528
- const oldHay = sensitive ? file.old || "" : (file.old || "").toLowerCase();
13529
- const newHay = sensitive ? file.new || "" : (file.new || "").toLowerCase();
13530
- if (!oldHay.includes(needle) && !newHay.includes(needle)) {
13531
- if (pathMeaningfulMatch(file.path, needle, sensitive)) hits.push({
13532
- key: file.key,
13533
- path: file.path,
13534
- repo: file.repo,
13535
- line: 0,
13536
- side: null,
13537
- preview: file.path
13538
- });
13539
- continue;
13540
- }
13541
- }
13542
- const { visible, newLines, oldLines } = parsedFor(file);
13543
- const seen = /* @__PURE__ */ new Set();
13544
- scanSide(file, newLines, "additions", needle, sensitive, seen, hits, visible.additions);
13545
- scanSide(file, oldLines, "deletions", needle, sensitive, seen, hits, visible.deletions);
13546
- if (hits.length === before && pathMeaningfulMatch(file.path, needle, sensitive)) hits.push({
13547
- key: file.key,
13548
- path: file.path,
13549
- repo: file.repo,
13550
- line: 0,
13551
- side: null,
13552
- preview: file.path
13553
- });
13554
- }
13555
- return hits;
13556
- }
13557
- /** True when needle hits the path somewhere other than only the final
13558
- * extension (`file.marko` + "marko" → false; `marko/src/x.ts` → true). */
13559
- function pathMeaningfulMatch(path, needle, sensitive) {
13560
- const hay = sensitive ? path : path.toLowerCase();
13561
- if (!hay.includes(needle)) return false;
13562
- const slash = path.lastIndexOf("/");
13563
- const base = slash >= 0 ? path.slice(slash + 1) : path;
13564
- const dot = base.lastIndexOf(".");
13565
- if (dot <= 0) return true;
13566
- const ext = base.slice(dot + 1);
13567
- if (!(sensitive ? ext : ext.toLowerCase()).includes(needle)) return true;
13568
- const extStartInPath = path.length - ext.length;
13569
- for (let at = hay.indexOf(needle); at !== -1; at = hay.indexOf(needle, at + 1)) if (at < extStartInPath) return true;
13570
- return false;
13571
- }
13572
- /** 1-based line numbers pierre shows for each side (hunk ranges only). */
13573
- function visibleHunkLines(oldText, newText) {
13574
- const additions = /* @__PURE__ */ new Set();
13575
- const deletions = /* @__PURE__ */ new Set();
13576
- if (oldText == null && newText == null) return {
13577
- additions,
13578
- deletions
13579
- };
13580
- try {
13581
- const meta = parseDiffFromFile(oldText == null ? null : {
13582
- name: "old",
13583
- contents: oldText
13584
- }, newText == null ? null : {
13585
- name: "new",
13586
- contents: newText
13587
- });
13588
- for (const h of meta.hunks) {
13589
- for (let i = 0; i < h.additionCount; i++) additions.add(h.additionStart + i);
13590
- for (let i = 0; i < h.deletionCount; i++) deletions.add(h.deletionStart + i);
13591
- }
13592
- } catch {}
13593
- return {
13594
- additions,
13595
- deletions
13596
- };
13597
- }
13598
- function scanSide(file, lines, side, needle, sensitive, seen, hits, visible) {
13599
- if (!lines || hits.length >= 200 || !visible.size) return;
13600
- let fromFile = 0;
13601
- for (let i = 0; i < lines.length; i++) {
13602
- if (hits.length >= 200 || fromFile >= MAX_PER_FILE) return;
13603
- const lineNo = i + 1;
13604
- if (!visible.has(lineNo)) continue;
13605
- const line = lines[i];
13606
- const at = (sensitive ? line : line.toLowerCase()).indexOf(needle);
13607
- if (at < 0) continue;
13608
- if (side === "deletions" && seen.has(line)) continue;
13609
- if (side === "additions") seen.add(line);
13610
- fromFile++;
13611
- hits.push({
13612
- key: file.key,
13613
- path: file.path,
13614
- repo: file.repo,
13615
- line: lineNo,
13616
- side,
13617
- preview: clip(line, at, needle.length)
13618
- });
13619
- }
13620
- }
13621
- function clip(line, at, len) {
13622
- const pad = 36;
13623
- const start = Math.max(0, at - pad);
13624
- const end = Math.min(line.length, at + len + pad);
13625
- return (start > 0 ? "…" : "") + line.slice(start, end) + (end < line.length ? "…" : "");
13626
- }
13627
12154
  var findInput = "_cw _n";
13628
12155
  var findIconBtn = "_cz _l";
13629
12156
  //#endregion
@@ -13645,6 +12172,8 @@ var icon_arrow_down_default = _template("N", (input) => {
13645
12172
  });
13646
12173
  //#endregion
13647
12174
  //#region src/tags/diff-find.marko
12175
+ var hitKeys;
12176
+ var searchDiffFiles;
13648
12177
  var setSearchPaint$1;
13649
12178
  var diff_find_default = _template("i", (input) => {
13650
12179
  const $scope0_reason = _scope_reason();
@@ -14294,7 +12823,7 @@ var $content = (input) => {
14294
12823
  _for_of(dir.dirs, (child) => {
14295
12824
  const $scope1_id = _scope_id();
14296
12825
  const shut = input.collapsed.has(input.collapsedKey(child.path));
14297
- _html(`<div${_attr_class("_hF")}><button type=button${_attr_class(["_hG", { ["_hx"]: shut }])}${_attr("title", child.path)}${_attr_style(`--depth:${child.depth}`)}><span${_attr_class("_hN")}>`);
12826
+ _html(`<div${_attr_class("_h9")}><button type=button${_attr_class(["_h_", { ["_h1"]: shut }])}${_attr("title", child.path)}${_attr_style(`--depth:${child.depth}`)}><span${_attr_class("_ig")}>`);
14298
12827
  _if(() => {
14299
12828
  if (shut) {
14300
12829
  const $scope4_id = _scope_id();
@@ -14308,7 +12837,7 @@ var $content = (input) => {
14308
12837
  return 1;
14309
12838
  }
14310
12839
  }, $scope1_id, "c", $sg__input, $sg__input, $sg__input, "</span>", 1);
14311
- _html(`<span${_attr_class("_hH")}>${_text_resume($scope1_id, "e", child.label, $sg__input_dir)}/</span></button>${_el_resume($scope1_id, "b")}`);
12840
+ _html(`<span${_attr_class("_ia")}>${_text_resume($scope1_id, "e", child.label, $sg__input_dir)}/</span></button>${_el_resume($scope1_id, "b")}`);
14312
12841
  _if(() => {
14313
12842
  if (!shut) {
14314
12843
  const $scope2_id = _scope_id();
@@ -14355,11 +12884,11 @@ var $content = (input) => {
14355
12884
  }, "path", $scope0_id, "a", $sg__input, $sg__input_dir, $sg__input_dir, 0, 1);
14356
12885
  _for_of(dir.files, ({ file, name }) => {
14357
12886
  const $scope3_id = _scope_id();
14358
- _html(`<a${_attr("href", input.hrefFor(file.key))}${_attr_class(["_hJ", { ["_hI"]: input.collapsedFiles?.has(file.key) }])}${input.collapsedFiles?.has(file.key) ? _attr("title", `${file.path} (folded — click to open)`) : _attr("title", file.path)}${_attr_style(`--depth:${dir.depth + 1}`)}><span${_attr_class("_ba")}${_attr("data-status", file.status)}>${_text_resume($scope3_id, "c", file.status, $sg__input_dir)}</span>${_el_resume($scope3_id, "b", $sg__input_dir)}<span${_attr_class("_hK")}>${_text_resume($scope3_id, "e", name, $sg__input_dir)}</span>`);
12887
+ _html(`<a${_attr("href", input.hrefFor(file.key))}${_attr_class(["_ic", { ["_ib"]: input.collapsedFiles?.has(file.key) }])}${input.collapsedFiles?.has(file.key) ? _attr("title", `${file.path} (folded — click to open)`) : _attr("title", file.path)}${_attr_style(`--depth:${dir.depth + 1}`)}><span${_attr_class("_ba")}${_attr("data-status", file.status)}>${_text_resume($scope3_id, "c", file.status, $sg__input_dir)}</span>${_el_resume($scope3_id, "b", $sg__input_dir)}<span${_attr_class("_id")}>${_text_resume($scope3_id, "e", name, $sg__input_dir)}</span>`);
14359
12888
  _if(() => {
14360
12889
  if (input.newKeys.has(file.key)) {
14361
12890
  const $scope6_id = _scope_id();
14362
- _html(`<span${_attr_class(["_A", "_hL"])} title="Changed since your last visit"></span>`);
12891
+ _html(`<span${_attr_class(["_A", "_ie"])} title="Changed since your last visit"></span>`);
14363
12892
  _serialize_if($scope0_reason, 1) && writeScope($scope6_id, {});
14364
12893
  return 0;
14365
12894
  }
@@ -14367,7 +12896,7 @@ var $content = (input) => {
14367
12896
  _if(() => {
14368
12897
  if (input.commentKeys.has(file.key)) {
14369
12898
  const $scope7_id = _scope_id();
14370
- _html(`<span${_attr_class("_hM")}>`);
12899
+ _html(`<span${_attr_class("_if")}>`);
14371
12900
  icon_comment_default({ size: 12 });
14372
12901
  _html("</span>");
14373
12902
  _serialize_if($scope0_reason, 0) && writeScope($scope7_id, {});
@@ -14425,7 +12954,7 @@ var diff_tree_default = _template("l", (input) => {
14425
12954
  scope: input.scope ?? null,
14426
12955
  file: key
14427
12956
  }), "l0", $scope0_id);
14428
- _html(`<aside${_attr_class(["_hy", { ["_hx"]: input.open === false }])}><div${_attr_class("_hz")}>`);
12957
+ _html(`<aside${_attr_class(["_h2", { ["_h1"]: input.open === false }])}><div${_attr_class("_h3")}>`);
14429
12958
  _set_serialize_reason(2);
14430
12959
  const $childScope = _peek_scope_id();
14431
12960
  file_filter_default({
@@ -14434,18 +12963,18 @@ var diff_tree_default = _template("l", (input) => {
14434
12963
  filter = _new_filter;
14435
12964
  }, "l1", $scope0_id)
14436
12965
  });
14437
- _html(`</div><div${_attr_class("_hA")}>`);
12966
+ _html(`</div><div${_attr_class("_h4")}>`);
14438
12967
  _if(() => {
14439
12968
  if (!input.sections.length && filter) {
14440
12969
  const $scope3_id = _scope_id();
14441
- _html(`<p${_attr_class("_hB")}>No files match.</p>`);
12970
+ _html(`<p${_attr_class("_h5")}>No files match.</p>`);
14442
12971
  writeScope($scope3_id, {});
14443
12972
  return 0;
14444
12973
  }
14445
12974
  }, $scope0_id, "e", 1, 1, 1, 0, 1);
14446
12975
  _for_of(input.sections, (section) => {
14447
12976
  const $scope1_id = _scope_id();
14448
- _html(`<div${_attr_class("_hC")}><button type=button${_attr_class(["_hD", { ["_hx"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_hN")}>`);
12977
+ _html(`<div${_attr_class("_h6")}><button type=button${_attr_class(["_h7", { ["_h1"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_ig")}>`);
14449
12978
  _if(() => {
14450
12979
  if (collapsedRepos.has(section.id)) {
14451
12980
  const $scope4_id = _scope_id();
@@ -14459,12 +12988,12 @@ var diff_tree_default = _template("l", (input) => {
14459
12988
  return 1;
14460
12989
  }
14461
12990
  }, $scope1_id, "c", 1, 1, 1, "</span>", 1);
14462
- _html(`<span${_attr_class("_hH")}>${_text_resume($scope1_id, "e", section.label, $sg__input_sections)}</span></button>${_el_resume($scope1_id, "b")}`);
12991
+ _html(`<span${_attr_class("_ia")}>${_text_resume($scope1_id, "e", section.label, $sg__input_sections)}</span></button>${_el_resume($scope1_id, "b")}`);
14463
12992
  _if(() => {
14464
12993
  if (!collapsedRepos.has(section.id) || openedRepos.has(section.id)) {
14465
12994
  const $scope2_id = _scope_id();
14466
12995
  const root = treeDirs(section.files);
14467
- _html(`<div${_attr_class("_hE")}${_attr("hidden", collapsedRepos.has(section.id))}>`);
12996
+ _html(`<div${_attr_class("_h8")}${_attr("hidden", collapsedRepos.has(section.id))}>`);
14468
12997
  _set_serialize_reason(1);
14469
12998
  const $childScope2 = _peek_scope_id();
14470
12999
  diff_tree_dir_default({
@@ -14534,7 +13063,7 @@ var diff_tree_default = _template("l", (input) => {
14534
13063
  });
14535
13064
  _resume_branch($scope0_id);
14536
13065
  });
14537
- var sheetDir = "_ig _bb";
13066
+ var sheetDir = "_it _bb";
14538
13067
  //#endregion
14539
13068
  //#region src/tags/diff-file-sheet.marko
14540
13069
  var diff_file_sheet_default = _template("g", (input) => {
@@ -14590,9 +13119,9 @@ var diff_file_sheet_default = _template("g", (input) => {
14590
13119
  _if(() => {
14591
13120
  if (open) {
14592
13121
  const $scope1_id = _scope_id();
14593
- _html(`<div${_attr_class("_h8")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_h9")} role=dialog aria-label="Jump to file"><div${_attr_class("_h_")}><strong${_attr_class("_h7")}>Files</strong><span${_attr_class("_ia")}>${_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, "_h6"])} title=Close aria-label=Close>`);
13122
+ _html(`<div${_attr_class("_ik")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_il")} role=dialog aria-label="Jump to file"><div${_attr_class("_im")}><strong${_attr_class("_ij")}>Files</strong><span${_attr_class("_in")}>${_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, "_ii"])} title=Close aria-label=Close>`);
14594
13123
  icon_xmark_default({ size: 16 });
14595
- _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_ii")}>`);
13124
+ _html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_iv")}>`);
14596
13125
  _set_serialize_reason(2);
14597
13126
  const $childScope = _peek_scope_id();
14598
13127
  file_filter_default({
@@ -14601,13 +13130,13 @@ var diff_file_sheet_default = _template("g", (input) => {
14601
13130
  filter = _new_filter;
14602
13131
  }, "g1", $scope1_id)
14603
13132
  });
14604
- _html(`</div><div${_attr_class("_ib")}>`);
13133
+ _html(`</div><div${_attr_class("_io")}>`);
14605
13134
  _for_of(groups, (group) => {
14606
13135
  const $scope2_id = _scope_id();
14607
- _html(`<div${_attr_class("_ic")}><div${_attr_class("_id")}>${_text_resume($scope2_id, "c", group.repo, $sg__input_files)}</div>`);
13136
+ _html(`<div${_attr_class("_ip")}><div${_attr_class("_iq")}>${_text_resume($scope2_id, "c", group.repo, $sg__input_files)}</div>`);
14608
13137
  _for_of(group.dirs, ({ dir, files }) => {
14609
13138
  const $scope3_id = _scope_id();
14610
- _html(`<div${_attr_class("_ie")}>`);
13139
+ _html(`<div${_attr_class("_ir")}>`);
14611
13140
  _if(() => {
14612
13141
  if (dir) {
14613
13142
  const $scope5_id = _scope_id();
@@ -14618,11 +13147,11 @@ var diff_file_sheet_default = _template("g", (input) => {
14618
13147
  }, $scope3_id, "b", $sg__input_files, $sg__input_files, $sg__input_files, 0, 1);
14619
13148
  _for_of(files, ({ file, name }) => {
14620
13149
  const $scope4_id = _scope_id();
14621
- _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_if", "_y"])}><span${_attr_class("_ba")}${_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("_ih")}><bdi>${_text_resume($scope4_id, "e", name, $sg__input_files)}</bdi></span>`);
13150
+ _html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_is", "_y"])}><span${_attr_class("_ba")}${_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("_iu")}><bdi>${_text_resume($scope4_id, "e", name, $sg__input_files)}</bdi></span>`);
14622
13151
  _if(() => {
14623
13152
  if (newKeys.has(file.key)) {
14624
13153
  const $scope6_id = _scope_id();
14625
- _html(`<span${_attr_class(["_A", "_ik"])} title="Changed since your last visit"></span>`);
13154
+ _html(`<span${_attr_class(["_A", "_ix"])} title="Changed since your last visit"></span>`);
14626
13155
  _serialize_if($scope0_reason, 1) && writeScope($scope6_id, {});
14627
13156
  return 0;
14628
13157
  }
@@ -14632,7 +13161,7 @@ var diff_file_sheet_default = _template("g", (input) => {
14632
13161
  const $scope7_id = _scope_id();
14633
13162
  icon_comment_default({
14634
13163
  size: 12,
14635
- class: "_il"
13164
+ class: "_iy"
14636
13165
  });
14637
13166
  _serialize_if($scope0_reason, 0) && writeScope($scope7_id, {});
14638
13167
  return 0;
@@ -14657,7 +13186,7 @@ var diff_file_sheet_default = _template("g", (input) => {
14657
13186
  _if(() => {
14658
13187
  if (!input.files.length) {
14659
13188
  const $scope8_id = _scope_id();
14660
- _html(`<p${_attr_class("_ij")}>No files match.</p>`);
13189
+ _html(`<p${_attr_class("_iw")}>No files match.</p>`);
14661
13190
  $si__input_files_length && writeScope($scope8_id, {});
14662
13191
  return 0;
14663
13192
  }
@@ -14700,7 +13229,7 @@ var setSearchPaint;
14700
13229
  var diff_view_default = _template("m", (input) => {
14701
13230
  const $scope0_reason = _scope_reason(), $si__input_sessions = _serialize_if($scope0_reason, 7), $si__input_workspaceBranch = _serialize_if($scope0_reason, 8), $si__input_workspaceName = _serialize_if($scope0_reason, 9);
14702
13231
  const $scope0_id = _scope_id();
14703
- const $findFocus_getter = _hoist($scope0_id, "m51");
13232
+ const $findFocus_getter = _hoist($scope0_id, "m52");
14704
13233
  const $error__closures = /* @__PURE__ */ new Set();
14705
13234
  const $scope__closures = /* @__PURE__ */ new Set();
14706
13235
  const $input_sessions__closures = /* @__PURE__ */ new Set();
@@ -14795,6 +13324,11 @@ var diff_view_default = _template("m", (input) => {
14795
13324
  }
14796
13325
  });
14797
13326
  }, "m3", $scope0_id);
13327
+ const posBox = {
13328
+ anchor: null,
13329
+ raf: 0,
13330
+ run: 0
13331
+ };
14798
13332
  const pinToTop = _resume((el) => {
14799
13333
  const root = ((scrollEl) => scrollEl())(_el_read_error);
14800
13334
  if (!root) {
@@ -14804,15 +13338,19 @@ var diff_view_default = _template("m", (input) => {
14804
13338
  const top = el.getBoundingClientRect().top - root.getBoundingClientRect().top + root.scrollTop;
14805
13339
  root.scrollTo({ top: Math.max(0, top - 8) });
14806
13340
  }, "m4", $scope0_id);
13341
+ const cancelRestore = _resume(() => {
13342
+ posBox.run++;
13343
+ }, "m5", $scope0_id);
14807
13344
  const retryFrames = _resume((attempt, ms = 2500) => {
14808
13345
  const started = Date.now();
14809
13346
  const tick = () => {
14810
13347
  if (!attempt() && Date.now() - started < ms) requestAnimationFrame(tick);
14811
13348
  };
14812
13349
  tick();
14813
- }, "m5");
13350
+ }, "m6");
14814
13351
  const focusPrSection = _resume((pr) => {
14815
13352
  if (!pr) return;
13353
+ cancelRestore();
14816
13354
  const list = repos || [];
14817
13355
  const focused = list.find((r) => r.pr && `${r.worktree}/${r.pr.number}` === pr);
14818
13356
  const keep = new Set(openedRepos);
@@ -14828,26 +13366,22 @@ var diff_view_default = _template("m", (input) => {
14828
13366
  if (el) pinToTop(el);
14829
13367
  return !!el;
14830
13368
  });
14831
- }, "m6", $scope0_id);
14832
- const findFile = _resume((key) => ((scrollEl) => scrollEl())(_el_read_error)?.querySelector(`details[data-key="${CSS.escape(key)}"]`) ?? null, "m7", $scope0_id);
13369
+ }, "m7", $scope0_id);
13370
+ const findFile = _resume((key) => ((scrollEl) => scrollEl())(_el_read_error)?.querySelector(`details[data-key="${CSS.escape(key)}"]`) ?? null, "m8", $scope0_id);
14833
13371
  const openFile = _resume((key) => {
14834
13372
  const el = findFile(key);
14835
13373
  if (el) el.open = true;
14836
13374
  return el;
14837
- }, "m8", $scope0_id);
13375
+ }, "m9", $scope0_id);
14838
13376
  const jumpTo = _resume((key) => {
13377
+ cancelRestore();
14839
13378
  input.onFileChange?.(key);
14840
13379
  retryFrames(() => {
14841
13380
  const el = openFile(key);
14842
13381
  if (el) pinToTop(el);
14843
13382
  return !!el;
14844
13383
  });
14845
- }, "m9", $scope0_id);
14846
- const posBox = {
14847
- anchor: null,
14848
- raf: 0,
14849
- run: 0
14850
- };
13384
+ }, "m10", $scope0_id);
14851
13385
  const anchorAt = _resume(() => {
14852
13386
  const root = ((scrollEl) => scrollEl())(_el_read_error);
14853
13387
  if (!root || !root.scrollTop) return null;
@@ -14864,17 +13398,17 @@ var diff_view_default = _template("m", (input) => {
14864
13398
  };
14865
13399
  }
14866
13400
  return best;
14867
- }, "m10", $scope0_id);
13401
+ }, "m11", $scope0_id);
14868
13402
  const noteScroll = _resume(() => {
14869
13403
  if (posBox.raf) return;
14870
13404
  posBox.raf = requestAnimationFrame(() => {
14871
13405
  posBox.raf = 0;
14872
13406
  if (((scrollEl) => scrollEl())(_el_read_error)?.isConnected) posBox.anchor = anchorAt();
14873
13407
  });
14874
- }, "m11", $scope0_id);
13408
+ }, "m12", $scope0_id);
14875
13409
  const savePos = _resume(() => {
14876
13410
  if (repos) setDiffPos(input.workspaceId, posBox.anchor);
14877
- }, "m12", $scope0_id);
13411
+ }, "m13", $scope0_id);
14878
13412
  const restorePos = _resume((pos) => {
14879
13413
  const run = ++posBox.run;
14880
13414
  const started = Date.now();
@@ -14904,7 +13438,7 @@ var diff_view_default = _template("m", (input) => {
14904
13438
  } else if (!pinnedAt && Date.now() - started < 2500) requestAnimationFrame(tick);
14905
13439
  };
14906
13440
  requestAnimationFrame(tick);
14907
- }, "m13", $scope0_id);
13441
+ }, "m14", $scope0_id);
14908
13442
  const headBox = {
14909
13443
  sig: "",
14910
13444
  timer: 0
@@ -14926,8 +13460,8 @@ var diff_view_default = _template("m", (input) => {
14926
13460
  comments = reviewData.comments || [];
14927
13461
  headBox.sig = prHeadSigFromDiff(diffData);
14928
13462
  if (input.focusPr) focusPrSection(input.focusPr);
14929
- else if (input.focusFile) jumpTo(input.focusFile);
14930
- else if (!refresh && loadBox.seq === 1) {
13463
+ if (input.focusFile) jumpTo(input.focusFile);
13464
+ else if (!input.focusPr && !refresh && loadBox.seq === 1) {
14931
13465
  const pos = diffPos(input.workspaceId);
14932
13466
  if (pos && pos.scope === which) restorePos(pos);
14933
13467
  }
@@ -14937,14 +13471,14 @@ var diff_view_default = _template("m", (input) => {
14937
13471
  } finally {
14938
13472
  if (seq === loadBox.seq) loading = false;
14939
13473
  }
14940
- }, "m14", $scope0_id);
13474
+ }, "m15", $scope0_id);
14941
13475
  const setScope = _resume((next, persist = true) => {
14942
13476
  if (next === scope) return;
14943
13477
  scope = next;
14944
13478
  if (persist) setDiffScope(next);
14945
13479
  input.onScopeChange?.(next);
14946
13480
  load(next);
14947
- }, "m15", $scope0_id);
13481
+ }, "m16", $scope0_id);
14948
13482
  const sendGate = { busy: 0 };
14949
13483
  const loadReview = _resume(async () => {
14950
13484
  if (sendGate.busy) return;
@@ -14953,15 +13487,15 @@ var diff_view_default = _template("m", (input) => {
14953
13487
  if (sendGate.busy) return;
14954
13488
  comments = reviewData.comments || [];
14955
13489
  } catch {}
14956
- }, "m16", $scope0_id);
14957
- const reload = _resume(() => load(scope, true), "m17", $scope0_id);
13490
+ }, "m17", $scope0_id);
13491
+ const reload = _resume(() => load(scope, true), "m18", $scope0_id);
14958
13492
  const reloadSoon = _resume(() => {
14959
13493
  if (headBox.timer) clearTimeout(headBox.timer);
14960
13494
  headBox.timer = setTimeout(() => {
14961
13495
  headBox.timer = 0;
14962
13496
  reload();
14963
13497
  }, 250);
14964
- }, "m18", $scope0_id);
13498
+ }, "m19", $scope0_id);
14965
13499
  const markSeen = _resume(() => {
14966
13500
  if (!repos) return;
14967
13501
  const heads = {};
@@ -14980,7 +13514,7 @@ var diff_view_default = _template("m", (input) => {
14980
13514
  }),
14981
13515
  keepalive: true
14982
13516
  }).catch(() => {});
14983
- }, "m19", $scope0_id);
13517
+ }, "m20", $scope0_id);
14984
13518
  const repoList = repos || [];
14985
13519
  const allFiles = repoList.flatMap((r) => r.files.map((f) => ({
14986
13520
  ...f,
@@ -15003,7 +13537,7 @@ var diff_view_default = _template("m", (input) => {
15003
13537
  else map.set(f.repo, [f]);
15004
13538
  }
15005
13539
  return map;
15006
- }, "m20");
13540
+ }, "m21");
15007
13541
  const filesByRepo = groupByRepo(allFiles);
15008
13542
  const shownByRepo = groupByRepo(shownFiles);
15009
13543
  const commentsByFile = (() => {
@@ -15022,7 +13556,7 @@ var diff_view_default = _template("m", (input) => {
15022
13556
  }));
15023
13557
  const localDifferIds = new Set(repoList.filter((repo) => !!repo.pr && !!repo.localHead && (repo.localHead !== repo.head || repo.branch !== repo.pr.headRefName)).map((r) => r.id));
15024
13558
  const hasFiles = !repos || allFiles.length > 0;
15025
- const fileWorktree = _resume((repo) => repo.includes("#") ? repo.split("#")[0] : repo, "m21");
13559
+ const fileWorktree = _resume((repo) => repo.includes("#") ? repo.split("#")[0] : repo, "m22");
15026
13560
  const anchorFor = _resume((file, range) => {
15027
13561
  const section = repoList.find((r) => r.id === file.repo);
15028
13562
  const source = range.side === "deletions" ? file.old : file.new;
@@ -15030,7 +13564,7 @@ var diff_view_default = _template("m", (input) => {
15030
13564
  head: section?.head,
15031
13565
  snippet: source == null ? void 0 : quoteRange(source, range.start, range.end, range.side === "deletions" ? "deletions" : "additions")
15032
13566
  };
15033
- }, "m22", $scope0_id);
13567
+ }, "m23", $scope0_id);
15034
13568
  const saveComment = _resume(async (file, text) => {
15035
13569
  const range = draft;
15036
13570
  draft = null;
@@ -15054,16 +13588,16 @@ var diff_view_default = _template("m", (input) => {
15054
13588
  } catch (err) {
15055
13589
  error = String(err.message || err);
15056
13590
  }
15057
- }, "m23", $scope0_id);
13591
+ }, "m24", $scope0_id);
15058
13592
  const deleteRemote = _resume((ids) => ids === "all" ? fetch(`/api/workspaces/${input.workspaceId}/review`, {
15059
13593
  method: "POST",
15060
13594
  headers: { "content-type": "application/json" },
15061
13595
  body: JSON.stringify({ action: "clear" })
15062
- }) : Promise.all(ids.map((id) => fetch(`/api/workspaces/${input.workspaceId}/review/${id}`, { method: "DELETE" }))), "m24", $scope0_id);
13596
+ }) : Promise.all(ids.map((id) => fetch(`/api/workspaces/${input.workspaceId}/review/${id}`, { method: "DELETE" }))), "m25", $scope0_id);
15063
13597
  const removeComment = _resume(async (id) => {
15064
13598
  comments = comments.filter((c) => c.id !== id);
15065
13599
  await deleteRemote([id]).catch(() => {});
15066
- }, "m25", $scope0_id);
13600
+ }, "m26", $scope0_id);
15067
13601
  const editComment = _resume(async (id, text) => {
15068
13602
  const prev = comments.find((c) => c.id === id);
15069
13603
  if (!prev) return;
@@ -15084,7 +13618,7 @@ var diff_view_default = _template("m", (input) => {
15084
13618
  error = String(err.message || err);
15085
13619
  throw err;
15086
13620
  }
15087
- }, "m26", $scope0_id);
13621
+ }, "m27", $scope0_id);
15088
13622
  const dispatch = _resume(async (list, to, consume) => {
15089
13623
  if (!list.length) return true;
15090
13624
  sendGate.busy++;
@@ -15120,13 +13654,13 @@ var diff_view_default = _template("m", (input) => {
15120
13654
  } finally {
15121
13655
  sendGate.busy--;
15122
13656
  }
15123
- }, "m27", $scope0_id);
15124
- const copyMarkdown = _resume(() => dispatch(comments, { clipboard: true }, "all"), "m28", $scope0_id);
15125
- const sendTo = _resume((sessionId) => dispatch(comments, { session: sessionId }, "all"), "m29", $scope0_id);
13657
+ }, "m28", $scope0_id);
13658
+ const copyMarkdown = _resume(() => dispatch(comments, { clipboard: true }, "all"), "m29", $scope0_id);
13659
+ const sendTo = _resume((sessionId) => dispatch(comments, { session: sessionId }, "all"), "m30", $scope0_id);
15126
13660
  const sendOneComment = _resume((id, sessionId) => {
15127
13661
  const comment = comments.find((c) => c.id === id);
15128
13662
  return comment ? dispatch([comment], { session: sessionId }, [id]) : Promise.resolve(false);
15129
- }, "m30", $scope0_id);
13663
+ }, "m31", $scope0_id);
15130
13664
  const sendDraftComment = _resume((file, text, sessionId) => {
15131
13665
  const range = draft;
15132
13666
  const trimmed = text.trim();
@@ -15144,12 +13678,12 @@ var diff_view_default = _template("m", (input) => {
15144
13678
  ...anchorFor(file, range)
15145
13679
  };
15146
13680
  return dispatch([one], { session: sessionId }, []);
15147
- }, "m31", $scope0_id);
13681
+ }, "m32", $scope0_id);
15148
13682
  const openFind = _resume(() => {
15149
13683
  findOpen = true;
15150
13684
  findTick++;
15151
13685
  ((findFocus) => findFocus())(_hoist_read_error);
15152
- }, "m32", $scope0_id);
13686
+ }, "m33", $scope0_id);
15153
13687
  const onFindState = (next) => {
15154
13688
  findState = next;
15155
13689
  if (!next.hit) return;
@@ -15196,12 +13730,12 @@ var diff_view_default = _template("m", (input) => {
15196
13730
  openedRepos = /* @__PURE__ */ new Set([...openedRepos, id]);
15197
13731
  collapsedRepos = /* @__PURE__ */ new Set([...collapsedRepos, id]);
15198
13732
  }
15199
- }, "m33", $scope0_id);
13733
+ }, "m34", $scope0_id);
15200
13734
  _html(`<div${_attr_class("_eS")}><div${_attr_class("_eX")}><div${_attr_class("_eY")}><div${_attr_class(["_e8", { ["_e7"]: !comments.length }])}>`);
15201
13735
  _if(() => {
15202
13736
  if (input.onExit) {
15203
13737
  const $scope1_id = _scope_id();
15204
- _html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "_eZ"])} title="Back to terminal (Esc)">`);
13738
+ _html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "_eZ"])} title="Back to terminal (⌘/Ctrl+Shift+D)">`);
15205
13739
  icon_back_default({ size: 14 });
15206
13740
  _html(`</a>${_el_resume($scope1_id, "a", _serialize_guard($scope0_reason, 1))}`);
15207
13741
  _serialize_if($scope0_reason, 0) && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 1) && _scope_with_id($scope0_id) });
@@ -15244,7 +13778,7 @@ var diff_view_default = _template("m", (input) => {
15244
13778
  ])} title=${treeOpen ? "\"Hide file tree\"" : "\"Show file tree\""}>`);
15245
13779
  icon_sidebar_default({ size: 14 });
15246
13780
  _html(`</button>${_el_resume($scope12_id, "a")}`);
15247
- _script($scope12_id, "m52");
13781
+ _script($scope12_id, "m53");
15248
13782
  writeScope($scope12_id, {});
15249
13783
  return 0;
15250
13784
  }
@@ -15261,7 +13795,7 @@ var diff_view_default = _template("m", (input) => {
15261
13795
  if (hasFiles) {
15262
13796
  const $scope13_id = _scope_id();
15263
13797
  _html(`<button${_attr_class(["_q", "_fg"])} title="Jump to file">Files (${_text_resume($scope13_id, "b", shownFiles.length, 2)})</button>${_el_resume($scope13_id, "a")}`);
15264
- _script($scope13_id, "m53");
13798
+ _script($scope13_id, "m54");
15265
13799
  writeScope($scope13_id, {});
15266
13800
  return 0;
15267
13801
  }
@@ -15281,12 +13815,12 @@ var diff_view_default = _template("m", (input) => {
15281
13815
  open: findOpen,
15282
13816
  openChange: _resume((_new_findOpen) => {
15283
13817
  findOpen = _new_findOpen;
15284
- }, "m34", $scope0_id),
13818
+ }, "m35", $scope0_id),
15285
13819
  stateChange: function(s) {
15286
13820
  onFindState(s);
15287
13821
  }
15288
13822
  });
15289
- _var($scope0_id, "r", $childScope3, "m54");
13823
+ _var($scope0_id, "r", $childScope3, "m55");
15290
13824
  _html(`</div>${_el_resume($scope0_id, "p")}`);
15291
13825
  _if(() => {
15292
13826
  if (hasFiles) {
@@ -15298,7 +13832,7 @@ var diff_view_default = _template("m", (input) => {
15298
13832
  ])} title="Find in review (⌘/Ctrl+F)" aria-label="Find in review"${_attr("hidden", findOpen)}>`);
15299
13833
  icon_search_default({ size: 14 });
15300
13834
  _html(`</button>${_el_resume($scope14_id, "a")}`);
15301
- _script($scope14_id, "m55");
13835
+ _script($scope14_id, "m56");
15302
13836
  writeScope($scope14_id, {});
15303
13837
  return 0;
15304
13838
  }
@@ -15310,8 +13844,8 @@ var diff_view_default = _template("m", (input) => {
15310
13844
  toast_default({
15311
13845
  onDismiss: _resume(function() {
15312
13846
  error = null;
15313
- }, "m35", $scope6_id),
15314
- content: _content("m56", () => {
13847
+ }, "m36", $scope6_id),
13848
+ content: _content("m57", () => {
15315
13849
  _scope_reason();
15316
13850
  const $scope7_id = _scope_id();
15317
13851
  _html(_text_resume($scope7_id, "a", error));
@@ -15340,7 +13874,7 @@ var diff_view_default = _template("m", (input) => {
15340
13874
  kind: "warn",
15341
13875
  placement: "inline",
15342
13876
  title: `${repo.worktree}: base not found`,
15343
- content: _content("m57", () => {
13877
+ content: _content("m58", () => {
15344
13878
  _scope_reason();
15345
13879
  const $scope10_id = _scope_id();
15346
13880
  _html(`${_text_resume($scope10_id, "a", repo.base)}${_text_resume($scope10_id, "b", scope !== "committed" ? ", showing uncommitted changes only" : "", 2)}.`);
@@ -15356,12 +13890,12 @@ var diff_view_default = _template("m", (input) => {
15356
13890
  _if(() => {
15357
13891
  if (repos && !allFiles.length) {
15358
13892
  const $scope11_id = _scope_id();
15359
- _html(`<p${_attr_class("_ck")}>${_text_resume($scope11_id, "b", 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>`);
13893
+ _html(`<p${_attr_class("_cr")}>${_text_resume($scope11_id, "b", 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>`);
15360
13894
  writeScope($scope11_id, {});
15361
13895
  return 0;
15362
13896
  } else if (repos && !shownFiles.length && !findState.hit) {
15363
13897
  const $scope8_id = _scope_id();
15364
- _html(`<p${_attr_class("_ck")}>${_text_resume($scope8_id, "b", findState.query.trim() ? "No matches in review." : onlyNew && !fileFilter ? "Nothing changed since your last visit." : `No files match "${fileFilter}".`)}</p>`);
13898
+ _html(`<p${_attr_class("_cr")}>${_text_resume($scope8_id, "b", findState.query.trim() ? "No matches in review." : onlyNew && !fileFilter ? "Nothing changed since your last visit." : `No files match "${fileFilter}".`)}</p>`);
15365
13899
  writeScope($scope8_id, {});
15366
13900
  return 1;
15367
13901
  }
@@ -15384,14 +13918,14 @@ var diff_view_default = _template("m", (input) => {
15384
13918
  opened: openedRepos.has(repo.id),
15385
13919
  onToggle: _resume(function() {
15386
13920
  toggleSection(repo.id);
15387
- }, "m36", $scope4_id),
13921
+ }, "m37", $scope4_id),
15388
13922
  workspaceBranch: input.workspaceBranch || "",
15389
13923
  workspaceName: input.workspaceName || "",
15390
13924
  localDiffers: localDifferIds.has(repo.id),
15391
13925
  onlyNew,
15392
13926
  onToggleNew: _resume(function() {
15393
13927
  onlyNew = !onlyNew;
15394
- }, "m37", $scope4_id),
13928
+ }, "m38", $scope4_id),
15395
13929
  onReload: reload,
15396
13930
  loading,
15397
13931
  findHit: findState.hit,
@@ -15402,7 +13936,7 @@ var diff_view_default = _template("m", (input) => {
15402
13936
  collapsedFiles,
15403
13937
  onFileToggle: _resume(function(key, open) {
15404
13938
  setFilesCollapsed([key], !open);
15405
- }, "m38", $scope4_id),
13939
+ }, "m39", $scope4_id),
15406
13940
  onSelect: _resume(function(file, range) {
15407
13941
  draft = {
15408
13942
  key: file.key,
@@ -15410,28 +13944,28 @@ var diff_view_default = _template("m", (input) => {
15410
13944
  start: Math.min(range.start, range.end),
15411
13945
  end: Math.max(range.start, range.end)
15412
13946
  };
15413
- }, "m39", $scope4_id),
13947
+ }, "m40", $scope4_id),
15414
13948
  onSaveComment: _resume(function(file, text) {
15415
13949
  saveComment(file, text);
15416
- }, "m40", $scope4_id),
13950
+ }, "m41", $scope4_id),
15417
13951
  onSendDraft: _resume(function(file, text, sessionId) {
15418
13952
  return sendDraftComment(file, text, sessionId);
15419
- }, "m41", $scope4_id),
13953
+ }, "m42", $scope4_id),
15420
13954
  onCancelDraft: _resume(function() {
15421
13955
  draft = null;
15422
- }, "m42", $scope4_id),
13956
+ }, "m43", $scope4_id),
15423
13957
  onDeleteComment: _resume(function(id) {
15424
13958
  removeComment(id);
15425
- }, "m43", $scope4_id),
13959
+ }, "m44", $scope4_id),
15426
13960
  onEditComment: _resume(function(id, text) {
15427
13961
  editComment(id, text);
15428
- }, "m44", $scope4_id),
13962
+ }, "m45", $scope4_id),
15429
13963
  onSendComment: _resume(function(id, sessionId) {
15430
13964
  return sendOneComment(id, sessionId);
15431
- }, "m45", $scope4_id),
13965
+ }, "m46", $scope4_id),
15432
13966
  onError: _resume(function(message) {
15433
13967
  error = message;
15434
- }, "m46", $scope4_id)
13968
+ }, "m47", $scope4_id)
15435
13969
  });
15436
13970
  _subscribe($toggleSection2__closures, _subscribe($sendDraftComment2__closures, _subscribe($sendOneComment2__closures, _subscribe($editComment2__closures, _subscribe($removeComment2__closures, _subscribe($saveComment2__closures, _subscribe($localDifferIds__closures, _subscribe($commentsByFile__closures, _subscribe($shownKeySet__closures, _subscribe($repoList_length__closures, _subscribe($reload2__closures, _subscribe($expandingRepos__closures, _subscribe($openedRepos__closures, _subscribe($setFilesCollapsed2__closures, _subscribe($collapsedFiles__closures, _subscribe($collapsedRepos__closures, _subscribe($findState_hit__closures, _subscribe($onlyNew__closures, _subscribe($loading__closures, _subscribe($draft__closures, _subscribe($si__input_workspaceName && $input_workspaceName__closures, _subscribe($si__input_workspaceBranch && $input_workspaceBranch__closures, _subscribe($si__input_sessions && $input_sessions__closures, writeScope($scope4_id, { a: _existing_scope($childScope5) }))))))))))))))))))))))));
15437
13971
  return 0;
@@ -15453,17 +13987,17 @@ var diff_view_default = _template("m", (input) => {
15453
13987
  collapsedRepos,
15454
13988
  collapsedReposChange: _resume((_new_collapsedRepos) => {
15455
13989
  collapsedRepos = _new_collapsedRepos;
15456
- }, "m47", $scope0_id),
13990
+ }, "m48", $scope0_id),
15457
13991
  openedRepos,
15458
13992
  openedReposChange: _resume((_new_openedRepos) => {
15459
13993
  openedRepos = _new_openedRepos;
15460
- }, "m48", $scope0_id),
13994
+ }, "m49", $scope0_id),
15461
13995
  commentKeys,
15462
13996
  newKeys,
15463
13997
  collapsedFiles,
15464
13998
  onDirToggle: _resume(function(keys, collapsed) {
15465
13999
  setFilesCollapsed(keys, collapsed);
15466
- }, "m49", $scope0_id),
14000
+ }, "m50", $scope0_id),
15467
14001
  workspaceId: input.workspaceId,
15468
14002
  scope
15469
14003
  });
@@ -15473,7 +14007,7 @@ var diff_view_default = _template("m", (input) => {
15473
14007
  open: fileSheet,
15474
14008
  openChange: _resume((_new_fileSheet) => {
15475
14009
  fileSheet = _new_fileSheet;
15476
- }, "m50", $scope0_id),
14010
+ }, "m51", $scope0_id),
15477
14011
  files: shownFiles,
15478
14012
  filter: fileFilter,
15479
14013
  filterChange: $filterChange,
@@ -15485,10 +14019,10 @@ var diff_view_default = _template("m", (input) => {
15485
14019
  });
15486
14020
  _html("</div>");
15487
14021
  const $return = $findFocus_getter;
15488
- _script($scope0_id, "m58");
15489
14022
  _script($scope0_id, "m59");
15490
14023
  _script($scope0_id, "m60");
15491
14024
  _script($scope0_id, "m61");
14025
+ _script($scope0_id, "m62");
15492
14026
  writeScope($scope0_id, {
15493
14027
  a3: input.workspaceId,
15494
14028
  a4: input.scope,
@@ -15531,85 +14065,86 @@ var diff_view_default = _template("m", (input) => {
15531
14065
  bk: nearBox.io,
15532
14066
  bl: nearBox.root,
15533
14067
  bn: observeNear,
15534
- bo: pinToTop,
15535
- bp: retryFrames,
15536
- br: focusPrSection,
15537
- bs: findFile,
15538
- bt: openFile,
15539
- bw: jumpTo,
15540
- by: posBox.raf,
15541
- bz: posBox.anchor,
15542
- c1: posBox.run,
15543
- c3: anchorAt,
15544
- c5: noteScroll,
15545
- c6: savePos,
15546
- c7: restorePos,
15547
- c9: headBox.sig,
15548
- ca: headBox.timer,
15549
- cc: loadBox.seq,
15550
- ce: load,
15551
- ch: setScope,
15552
- ck: sendGate.busy,
15553
- cm: loadReview,
15554
- cn: reload,
15555
- cp: reloadSoon,
15556
- cq: markSeen,
15557
- cs: repoList,
15558
- ct: repoList.length,
15559
- cu: allFiles,
15560
- cw: allFiles?.length,
15561
- cx: fileFiltered,
15562
- cy: findKeys,
15563
- d1: shownFiles?.length,
15564
- d3: shownKeySet,
15565
- d5: groupByRepo,
15566
- d8: filesByRepo,
15567
- db: commentsByFile,
15568
- de: localDifferIds,
15569
- df: hasFiles,
15570
- dg: fileWorktree,
15571
- dh: anchorFor,
15572
- dj: saveComment,
15573
- dk: deleteRemote,
15574
- dn: removeComment,
15575
- do: editComment,
15576
- dp: dispatch,
15577
- ds: copyMarkdown,
15578
- dt: sendTo,
15579
- du: sendOneComment,
15580
- dv: sendDraftComment,
15581
- dw: openFind,
15582
- dz: toggleSection,
15583
- e0: findFocus,
14068
+ bp: posBox.run,
14069
+ bq: posBox.raf,
14070
+ br: posBox.anchor,
14071
+ bt: pinToTop,
14072
+ bu: cancelRestore,
14073
+ bv: retryFrames,
14074
+ bx: focusPrSection,
14075
+ by: findFile,
14076
+ c0: openFile,
14077
+ c3: jumpTo,
14078
+ c4: anchorAt,
14079
+ c6: noteScroll,
14080
+ c7: savePos,
14081
+ c8: restorePos,
14082
+ ca: headBox.sig,
14083
+ cb: headBox.timer,
14084
+ cd: loadBox.seq,
14085
+ cf: load,
14086
+ ci: setScope,
14087
+ cl: sendGate.busy,
14088
+ cn: loadReview,
14089
+ co: reload,
14090
+ cq: reloadSoon,
14091
+ cr: markSeen,
14092
+ ct: repoList,
14093
+ cu: repoList.length,
14094
+ cv: allFiles,
14095
+ cx: allFiles?.length,
14096
+ cy: fileFiltered,
14097
+ cz: findKeys,
14098
+ d2: shownFiles?.length,
14099
+ d4: shownKeySet,
14100
+ d6: groupByRepo,
14101
+ d9: filesByRepo,
14102
+ dc: commentsByFile,
14103
+ df: localDifferIds,
14104
+ dg: hasFiles,
14105
+ dh: fileWorktree,
14106
+ di: anchorFor,
14107
+ dk: saveComment,
14108
+ dl: deleteRemote,
14109
+ do: removeComment,
14110
+ dp: editComment,
14111
+ dq: dispatch,
14112
+ dt: copyMarkdown,
14113
+ du: sendTo,
14114
+ dv: sendOneComment,
14115
+ dw: sendDraftComment,
14116
+ dx: openFind,
14117
+ e0: toggleSection,
14118
+ e1: findFocus,
15584
14119
  b4: input.findOpenChange || void 0,
15585
14120
  b6: input.findTickChange || void 0,
15586
14121
  l: _existing_scope($childScope2),
15587
14122
  q: _existing_scope($childScope3),
15588
- e7: $error__closures,
15589
- eb: $scope__closures,
15590
- e2: $si__input_sessions && $input_sessions__closures,
15591
- e3: $si__input_workspaceBranch && $input_workspaceBranch__closures,
15592
- e4: $si__input_workspaceName && $input_workspaceName__closures,
15593
- e6: $draft__closures,
15594
- e8: $loading__closures,
15595
- ea: $onlyNew__closures,
15596
- ef: $findState_hit__closures,
15597
- eg: $collapsedRepos__closures,
15598
- eh: $collapsedFiles__closures,
15599
- ei: $setFilesCollapsed2__closures,
15600
- ej: $openedRepos__closures,
15601
- ek: $expandingRepos__closures,
15602
- em: $reload2__closures,
15603
- eo: $repoList_length__closures,
15604
- eq: $shownKeySet__closures,
15605
- es: $commentsByFile__closures,
15606
- et: $localDifferIds__closures,
15607
- ev: $saveComment2__closures,
15608
- ew: $removeComment2__closures,
15609
- ex: $editComment2__closures,
15610
- f0: $sendOneComment2__closures,
15611
- f1: $sendDraftComment2__closures,
15612
- f2: $toggleSection2__closures,
14123
+ e8: $error__closures,
14124
+ ec: $scope__closures,
14125
+ e3: $si__input_sessions && $input_sessions__closures,
14126
+ e4: $si__input_workspaceBranch && $input_workspaceBranch__closures,
14127
+ e5: $si__input_workspaceName && $input_workspaceName__closures,
14128
+ e7: $draft__closures,
14129
+ e9: $loading__closures,
14130
+ eb: $onlyNew__closures,
14131
+ eg: $findState_hit__closures,
14132
+ eh: $collapsedRepos__closures,
14133
+ ei: $collapsedFiles__closures,
14134
+ ej: $setFilesCollapsed2__closures,
14135
+ ek: $openedRepos__closures,
14136
+ el: $expandingRepos__closures,
14137
+ en: $reload2__closures,
14138
+ ep: $repoList_length__closures,
14139
+ er: $shownKeySet__closures,
14140
+ et: $commentsByFile__closures,
14141
+ eu: $localDifferIds__closures,
14142
+ ew: $saveComment2__closures,
14143
+ ex: $removeComment2__closures,
14144
+ ey: $editComment2__closures,
14145
+ f1: $sendOneComment2__closures,
14146
+ f2: $sendDraftComment2__closures,
14147
+ f3: $toggleSection2__closures,
15613
14148
  z: _existing_scope($childScope6),
15614
14149
  a0: _existing_scope($childScope7)
15615
14150
  });
@@ -15751,8 +14286,8 @@ var icon_clipboard_default = _template("Y", (input) => {
15751
14286
  });
15752
14287
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
15753
14288
  });
15754
- var resultRow = "_hh _I";
15755
- var resultBranch = "_hj _4 _l";
14289
+ var resultRow = "_gV _I";
14290
+ var resultBranch = "_gX _4 _l";
15756
14291
  //#endregion
15757
14292
  //#region src/tags/icons/icon-branch.marko
15758
14293
  var icon_branch_default = _template("U", (input) => {
@@ -15782,11 +14317,11 @@ var branch_pick_default = _template("d", (input) => {
15782
14317
  let branchFilter = "";
15783
14318
  let reloadTick = 0;
15784
14319
  let refreshing = false;
15785
- _html(`<div${_attr_class("_hl")}>`);
14320
+ _html(`<div${_attr_class("_gZ")}>`);
15786
14321
  _if(() => {
15787
14322
  {
15788
14323
  const $scope4_id = _scope_id();
15789
- _html(`<p${_attr_class("_cj")}><span${_attr_class("_G")}></span> Loading branches…</p>`);
14324
+ _html(`<p${_attr_class("_cq")}><span${_attr_class("_G")}></span> Loading branches…</p>`);
15790
14325
  writeScope($scope4_id, {});
15791
14326
  return 0;
15792
14327
  }
@@ -15887,21 +14422,21 @@ var repo_picker_default = _template("w", (input$2) => {
15887
14422
  _resume_branch($scope9_id);
15888
14423
  }, $scope0_id) };
15889
14424
  const hasBody = !!(pasted || results.length || filter && (!catalog || !pasted) || compact && ssoPending.length);
15890
- _html(`<div${_attr_class([compact ? "_fo" : "_g_", {
14425
+ _html(`<div${_attr_class([compact ? "_fo" : "_gN", {
15891
14426
  ["_fp"]: compact && !input$2.open,
15892
14427
  ["_fq"]: input$2.pinned
15893
14428
  }])}>`);
15894
14429
  _if(() => {
15895
14430
  if (!compact && ssoPending.length) {
15896
14431
  const $scope11_id = _scope_id();
15897
- _html(`<div${_attr_class("_hc")}>`);
14432
+ _html(`<div${_attr_class("_gQ")}>`);
15898
14433
  ssoBlock.content({});
15899
14434
  _html("</div>");
15900
14435
  writeScope($scope11_id, {});
15901
14436
  return 0;
15902
14437
  }
15903
14438
  }, $scope0_id, "b", 1, 1, 1, 0, 1);
15904
- _html(`<div${!compact && input$2.action ? _attr_class("_ha") : _attr_class("_hb")}><label${_attr_class(["_1", compact && "_fr"])}>`);
14439
+ _html(`<div${!compact && input$2.action ? _attr_class("_gO") : _attr_class("_gP")}><label${_attr_class(["_1", compact && "_fr"])}>`);
15905
14440
  icon_search_default({
15906
14441
  size: 14,
15907
14442
  class: "_2"
@@ -15935,11 +14470,11 @@ var repo_picker_default = _template("w", (input$2) => {
15935
14470
  return 0;
15936
14471
  }
15937
14472
  }, $scope0_id, "h", _serialize_guard($scope0_reason, 0), $sg__input_compact, 1, 0, 1);
15938
- _html(`<div${_attr_class([compact ? pop$1 : "_hd"])}${_attr("hidden", !hasBody || compact && !input$2.open && !input$2.pinned)}>`);
14473
+ _html(`<div${_attr_class([compact ? pop$1 : "_gR"])}${_attr("hidden", !hasBody || compact && !input$2.open && !input$2.pinned)}>`);
15939
14474
  _if(() => {
15940
14475
  if (compact && ssoPending.length) {
15941
14476
  const $scope12_id = _scope_id();
15942
- _html(`<div${_attr_class("_hc")}>`);
14477
+ _html(`<div${_attr_class("_gQ")}>`);
15943
14478
  ssoBlock.content({});
15944
14479
  _html("</div>");
15945
14480
  writeScope($scope12_id, {});
@@ -15949,16 +14484,16 @@ var repo_picker_default = _template("w", (input$2) => {
15949
14484
  _if(() => {
15950
14485
  if (pasted) {
15951
14486
  const $scope3_id = _scope_id();
15952
- _html(`<ul${_attr_class("_he")}><li><div${_attr_class(["_hg", "_hf"])}><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)`)}>`);
14487
+ _html(`<ul${_attr_class("_gS")}><li><div${_attr_class(["_gU", "_gT"])}><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)`)}>`);
15953
14488
  icon_plus_default({
15954
14489
  size: 12,
15955
- class: "_hn"
14490
+ class: "_g1"
15956
14491
  });
15957
- _html(`<span${_attr_class("_ho")}>${_text_resume($scope3_id, "f", repoLabel(pasted))}</span></button>${_el_resume($scope3_id, "c")}`);
14492
+ _html(`<span${_attr_class("_g2")}>${_text_resume($scope3_id, "f", repoLabel(pasted))}</span></button>${_el_resume($scope3_id, "c")}`);
15958
14493
  _if(() => {
15959
14494
  if (pastedForkable) {
15960
14495
  const $scope10_id = _scope_id();
15961
- _html(`<button${_attr_class(["_hk", { ["_hi"]: pasteWillFork }])}${pasteWillFork ? " title=\"Will fork to your account; click to clone as-is instead\"" : _attr("title", `Fork ${pasted} to your account and clone the fork`)} aria-pressed=${pasteWillFork ? "true" : "false"}>`);
14496
+ _html(`<button${_attr_class(["_gY", { ["_gW"]: pasteWillFork }])}${pasteWillFork ? " title=\"Will fork to your account; click to clone as-is instead\"" : _attr("title", `Fork ${pasted} to your account and clone the fork`)} aria-pressed=${pasteWillFork ? "true" : "false"}>`);
15962
14497
  _if(() => {
15963
14498
  if (pasteWillFork) {
15964
14499
  const $scope14_id = _scope_id();
@@ -15978,7 +14513,7 @@ var repo_picker_default = _template("w", (input$2) => {
15978
14513
  return 0;
15979
14514
  }
15980
14515
  }, $scope3_id, "g", 1, 1, 1, 0, 1);
15981
- _html(`<button${_attr_class([resultBranch, { ["_hi"]: branchesFor === pasted }])}${_attr("title", `Pick a base branch for ${pasted}`)}${_attr("aria-label", `Pick a base branch for ${pasted}`)}>`);
14516
+ _html(`<button${_attr_class([resultBranch, { ["_gW"]: branchesFor === pasted }])}${_attr("title", `Pick a base branch for ${pasted}`)}${_attr("aria-label", `Pick a base branch for ${pasted}`)}>`);
15982
14517
  icon_branch_default({ size: 12 });
15983
14518
  _html(`</button>${_el_resume($scope3_id, "h")}</div>`);
15984
14519
  _if(() => {
@@ -16005,7 +14540,7 @@ var repo_picker_default = _template("w", (input$2) => {
16005
14540
  return 0;
16006
14541
  } else if (filter && !catalog) {
16007
14542
  const $scope13_id = _scope_id();
16008
- _html(`<p${_attr_class("_cj")}>Loading repos…</p>`);
14543
+ _html(`<p${_attr_class("_cq")}>Loading repos…</p>`);
16009
14544
  writeScope($scope13_id, {});
16010
14545
  return 1;
16011
14546
  }
@@ -16013,15 +14548,15 @@ var repo_picker_default = _template("w", (input$2) => {
16013
14548
  _if(() => {
16014
14549
  if (results.length) {
16015
14550
  const $scope5_id = _scope_id();
16016
- _html(`<ul${_attr_class("_he")}>`);
14551
+ _html(`<ul${_attr_class("_gS")}>`);
16017
14552
  _for_of(results, (repo, i) => {
16018
14553
  const $scope6_id = _scope_id();
16019
- _html(`<li><div${_attr_class(["_hg", { ["_hf"]: i === highlight }])}><button${_attr_class(resultRow)}>`);
14554
+ _html(`<li><div${_attr_class(["_gU", { ["_gT"]: i === highlight }])}><button${_attr_class(resultRow)}>`);
16020
14555
  icon_plus_default({
16021
14556
  size: 12,
16022
- class: "_hn"
14557
+ class: "_g1"
16023
14558
  });
16024
- _html(`<span${_attr_class("_ho")}>${_text_resume($scope6_id, "e", repoLabel(repo.nameWithOwner))}</span></button>${_el_resume($scope6_id, "b")}<button${_attr_class([resultBranch, { ["_hi"]: branchesFor === repo.nameWithOwner }])}${_attr("title", `Pick a base branch for ${repo.nameWithOwner}`)}${_attr("aria-label", `Pick a base branch for ${repo.nameWithOwner}`)}>`);
14559
+ _html(`<span${_attr_class("_g2")}>${_text_resume($scope6_id, "e", repoLabel(repo.nameWithOwner))}</span></button>${_el_resume($scope6_id, "b")}<button${_attr_class([resultBranch, { ["_gW"]: branchesFor === repo.nameWithOwner }])}${_attr("title", `Pick a base branch for ${repo.nameWithOwner}`)}${_attr("aria-label", `Pick a base branch for ${repo.nameWithOwner}`)}>`);
16025
14560
  icon_branch_default({ size: 12 });
16026
14561
  _html(`</button>${_el_resume($scope6_id, "f")}</div>${_el_resume($scope6_id, "a")}`);
16027
14562
  _if(() => {
@@ -16056,7 +14591,7 @@ var repo_picker_default = _template("w", (input$2) => {
16056
14591
  return 0;
16057
14592
  } else if (filter && catalog && !pasted) {
16058
14593
  const $scope8_id = _scope_id();
16059
- _html(`<p${_attr_class("_cj")}>No repos match "${_text_resume($scope8_id, "b", filter, 2)}". Paste a clone URL to add any repo.</p>`);
14594
+ _html(`<p${_attr_class("_cq")}>No repos match "${_text_resume($scope8_id, "b", filter, 2)}". Paste a clone URL to add any repo.</p>`);
16060
14595
  writeScope($scope8_id, {});
16061
14596
  return 1;
16062
14597
  }
@@ -16378,12 +14913,12 @@ var manage_workspace_default = _template("r", (input) => {
16378
14913
  _if(() => {
16379
14914
  if (pendingAction && actionStep) {
16380
14915
  const $scope10_id = _scope_id();
16381
- _html(`<p${_attr_class("_b8")}><span${_attr_class("_G")}></span>${_text_resume($scope10_id, "c", actionStep)}</p>`);
14916
+ _html(`<p${_attr_class("_ce")}><span${_attr_class("_G")}></span>${_text_resume($scope10_id, "c", actionStep)}</p>`);
16382
14917
  writeScope($scope10_id, {});
16383
14918
  return 0;
16384
14919
  }
16385
14920
  }, $scope0_id, "f", 1, 1, 1, 0, 1);
16386
- _html(`<section${_attr_class("_b9")}><div${_attr_class("_b_")}><h2${_attr_class("_cm")}>Repos</h2><span${_attr_class(sectionCount)}>${_text_resume($scope0_id, "k", ws.repos.length)}</span><div${_attr_class("_z")}></div><button${_attr_class([iconBtnRow, "_eR"])} title="Add repo" aria-label="Add repo"${_attr("hidden", addingRepo)}>`);
14921
+ _html(`<section${_attr_class("_cf")}><div${_attr_class("_cg")}><h2${_attr_class("_ct")}>Repos</h2><span${_attr_class(sectionCount)}>${_text_resume($scope0_id, "k", ws.repos.length)}</span><div${_attr_class("_z")}></div><button${_attr_class([iconBtnRow, "_eR"])} title="Add repo" aria-label="Add repo"${_attr("hidden", addingRepo)}>`);
16387
14922
  icon_plus_default({ size: 16 });
16388
14923
  _html(`</button>${_el_resume($scope0_id, "m")}`);
16389
14924
  _set_serialize_reason(26);
@@ -16417,7 +14952,7 @@ var manage_workspace_default = _template("r", (input) => {
16417
14952
  _html(`</button>${_el_resume($scope0_id, "q")}</div><ul${_attr_class(list$2)}>`);
16418
14953
  _for_of(ws.repos, (row) => {
16419
14954
  const $scope1_id = _scope_id();
16420
- _html(`<li${_attr_class(flatCardRow)}><div${_attr_class("_ce")}><span${_attr_class(["_cf", "_y"])}>${_text_resume($scope1_id, "d", row.worktree)}/</span><span${_attr_class("_cg")}><a${_attr_class(["_ch", "_K"])}${_attr("href", repoWebUrl(row.full_name))} target=_blank rel=noopener${_attr("title", `Open ${row.full_name} on GitHub`)}>${_text_resume($scope1_id, "g", repoLabel(row.full_name))}</a>${_el_resume($scope1_id, "f")}`);
14955
+ _html(`<li${_attr_class(flatCardRow)}><div${_attr_class("_cl")}><span${_attr_class(["_cm", "_y"])}>${_text_resume($scope1_id, "d", row.worktree)}/</span><span${_attr_class("_cn")}><a${_attr_class(["_co", "_K"])}${_attr("href", repoWebUrl(row.full_name))} target=_blank rel=noopener${_attr("title", `Open ${row.full_name} on GitHub`)}>${_text_resume($scope1_id, "g", repoLabel(row.full_name))}</a>${_el_resume($scope1_id, "f")}`);
16421
14956
  _if(() => {
16422
14957
  if (row.base_branch !== row.default_branch) {
16423
14958
  const $scope20_id = _scope_id();
@@ -16438,7 +14973,7 @@ var manage_workspace_default = _template("r", (input) => {
16438
14973
  } else {
16439
14974
  const $scope9_id = _scope_id();
16440
14975
  _html(`<button${_attr_class([
16441
- "_ci",
14976
+ "_cp",
16442
14977
  "_8",
16443
14978
  "_9",
16444
14979
  { ["_s"]: confirmingRemove === row.full_name }
@@ -16471,13 +15006,13 @@ var manage_workspace_default = _template("r", (input) => {
16471
15006
  }, "full_name", $scope0_id, "t", 1, 1, 1, 0, 1);
16472
15007
  _for_of([...busy].filter((n) => !inWorkspace.has(n)), (name) => {
16473
15008
  const $scope24_id = _scope_id();
16474
- _html(`<li${_attr_class([flatCardRow, "_cc"])}><span${_attr_class("_G")}></span><div${_attr_class("_ce")}><span${_attr_class("_ch")}>Adding ${_text_resume($scope24_id, "e", name, 2)}…</span></div></li>`);
15009
+ _html(`<li${_attr_class([flatCardRow, "_cj"])}><span${_attr_class("_G")}></span><div${_attr_class("_cl")}><span${_attr_class("_co")}>Adding ${_text_resume($scope24_id, "e", name, 2)}…</span></div></li>`);
16475
15010
  writeScope($scope24_id, {});
16476
15011
  }, (n) => n, $scope0_id, "u", 1, 1, 1, 0, 1);
16477
15012
  _if(() => {
16478
15013
  if (!ws.repos.length && !busy.size) {
16479
15014
  const $scope25_id = _scope_id();
16480
- _html(`<li${_attr_class(flatCardRow)}><span${_attr_class("_ch")}>No repos yet. Add one to start.</span></li>`);
15015
+ _html(`<li${_attr_class(flatCardRow)}><span${_attr_class("_co")}>No repos yet. Add one to start.</span></li>`);
16481
15016
  writeScope($scope25_id, {});
16482
15017
  return 0;
16483
15018
  }
@@ -16495,7 +15030,7 @@ var manage_workspace_default = _template("r", (input) => {
16495
15030
  _if(() => {
16496
15031
  if (allSkills.length) {
16497
15032
  const $scope2_id = _scope_id();
16498
- _html(`<section${_attr_class("_b9")}><div${_attr_class("_b_")}><h2${_attr_class("_cm")}>Skills</h2><span${_attr_class(sectionCount)}>${_text_resume($scope2_id, "e", wsSkills.length)}/${_text_resume($scope2_id, "f", allSkills.length, 2)}</span></div><ul${_attr_class(list$2)}>`);
15033
+ _html(`<section${_attr_class("_cf")}><div${_attr_class("_cg")}><h2${_attr_class("_ct")}>Skills</h2><span${_attr_class(sectionCount)}>${_text_resume($scope2_id, "e", wsSkills.length)}/${_text_resume($scope2_id, "f", allSkills.length, 2)}</span></div><ul${_attr_class(list$2)}>`);
16499
15034
  _for_of(allSkills, ({ s, linked }) => {
16500
15035
  const $scope3_id = _scope_id();
16501
15036
  const isBusy = skillBusy.has(s.id);
@@ -16558,7 +15093,7 @@ var manage_workspace_default = _template("r", (input) => {
16558
15093
  if (linked) {
16559
15094
  const $scope11_id = _scope_id();
16560
15095
  _html(`<button${_attr_class([
16561
- "_ci",
15096
+ "_cp",
16562
15097
  "_8",
16563
15098
  "_9",
16564
15099
  "_eP",
@@ -16611,7 +15146,7 @@ var manage_workspace_default = _template("r", (input) => {
16611
15146
  _if(() => {
16612
15147
  if (running.length) {
16613
15148
  const $scope15_id = _scope_id();
16614
- _html(`<section${_attr_class("_b9")}><div${_attr_class("_b_")}><h2${_attr_class("_cm")}>Running</h2><span${_attr_class(sectionCount)}>${_text_resume($scope15_id, "e", running.length)}</span></div><ul${_attr_class(list$2)}>`);
15149
+ _html(`<section${_attr_class("_cf")}><div${_attr_class("_cg")}><h2${_attr_class("_ct")}>Running</h2><span${_attr_class(sectionCount)}>${_text_resume($scope15_id, "e", running.length)}</span></div><ul${_attr_class(list$2)}>`);
16615
15150
  _for_of(running, (p) => {
16616
15151
  const $scope16_id = _scope_id();
16617
15152
  _html(`<li${_attr_class("_eD")}${_attr("title", `${p.cmd} ${p.args}`.trim())}><span${_attr_class(["_y", "_eE"])}>${_text_resume($scope16_id, "c", p.cmd)}</span><span${_attr_class(["_y", "_eF"])}>${_text_resume($scope16_id, "e", p.args)}</span><span${_attr_class("_eG")}>`);
@@ -16622,7 +15157,7 @@ var manage_workspace_default = _template("r", (input) => {
16622
15157
  writeScope($scope34_id, { d: port });
16623
15158
  }, (x) => String(x), $scope16_id, "g", 1, 1, 1, 0, 1);
16624
15159
  _html(`<span${_attr_class(["_y", "_eH"])}>${_text_resume($scope16_id, "i", p.pid)}</span><button${_attr_class([
16625
- "_ci",
15160
+ "_cp",
16626
15161
  "_8",
16627
15162
  "_eQ"
16628
15163
  ])} type=button${_attr("title", `Kill process ${p.pid}`)}${_attr("aria-label", `Kill process ${p.pid}`)}>`);
@@ -16705,13 +15240,13 @@ var manage_workspace_default = _template("r", (input) => {
16705
15240
  });
16706
15241
  _resume_branch($scope0_id);
16707
15242
  });
16708
- var curRepos = "_ed _cd _d1 _eb";
15243
+ var curRepos = "_ed _ck _d1 _eb";
16709
15244
  var curRow = "_el _ee _ec";
16710
- var curEmpty = "_en _cj";
15245
+ var curEmpty = "_en _cq";
16711
15246
  var curBase = "_eq _Y _X";
16712
- var archived = "_ev _b9";
15247
+ var archived = "_ev _cf";
16713
15248
  var archivedHint = "_ew _X";
16714
- var archivedList = "_ed _cd _d1 _eb";
15249
+ var archivedList = "_ed _ck _d1 _eb";
16715
15250
  var archivedRow = "_ex _ee _ec";
16716
15251
  //#endregion
16717
15252
  //#region src/tags/icons/icon-group.marko
@@ -16732,8 +15267,8 @@ var icon_group_default = _template("fb", (input) => {
16732
15267
  });
16733
15268
  //#endregion
16734
15269
  //#region src/tags/join-dialog.css.ts
16735
- var dlg = "_im _hP";
16736
- var hint = "_in _X";
15270
+ var dlg = "_hP _hL";
15271
+ var hint = "_hQ _X";
16737
15272
  //#endregion
16738
15273
  //#region src/tags/join-dialog.marko
16739
15274
  var api$3;
@@ -16862,26 +15397,26 @@ var join_dialog_default = _template("o", (input) => {
16862
15397
  content: _content("o12", () => {
16863
15398
  _scope_reason();
16864
15399
  const $scope1_id = _scope_id();
16865
- _html(`<h2${_attr_class("_hQ")}${_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([
15400
+ _html(`<h2${_attr_class("_hM")}${_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([
16866
15401
  "_Z",
16867
15402
  "_y",
16868
- "_ip"
15403
+ "_hS"
16869
15404
  ])} 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")}`);
16870
15405
  _if(() => {
16871
15406
  if (parsed.error) {
16872
15407
  const $scope8_id = _scope_id();
16873
- _html(`<p${_attr_class([hint, "_io"])}>${_text_resume($scope8_id, "b", parsed.error)}</p>`);
15408
+ _html(`<p${_attr_class([hint, "_hR"])}>${_text_resume($scope8_id, "b", parsed.error)}</p>`);
16874
15409
  _subscribe($parsed_error__closures, writeScope($scope8_id, { Cag: 1 }));
16875
15410
  return 0;
16876
15411
  } else if (parsed.ok) {
16877
15412
  const $scope3_id = _scope_id();
16878
- _html(`<ul${_attr_class("_iq")}>`);
15413
+ _html(`<ul${_attr_class("_hT")}>`);
16879
15414
  _for_of(parsed.ok.repos, (fullName) => {
16880
15415
  const $scope9_id = _scope_id();
16881
- _html(`<li${_attr_class("_ir")}><span${_attr_class("_is")}>${_text_resume($scope9_id, "c", repoLabel(fullName))}</span></li>`);
15416
+ _html(`<li${_attr_class("_hU")}><span${_attr_class("_hV")}>${_text_resume($scope9_id, "c", repoLabel(fullName))}</span></li>`);
16882
15417
  writeScope($scope9_id, {});
16883
15418
  }, (r) => r, $scope3_id, "a", 1, 1, 1, "</ul>", 1);
16884
- _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("_it")}><span${_attr_class("_cm")}>Name</span><input${_attr_input_value($scope3_id, "g", name, _resume((_new_name) => {
15419
+ _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("_hW")}><span${_attr_class("_ct")}>Name</span><input${_attr_input_value($scope3_id, "g", name, _resume((_new_name) => {
16885
15420
  name = _new_name;
16886
15421
  }, "o1", $scope3_id))}${_attr_class("_Z")}${_attr("placeholder", parsed.ok.name)}${_attr("disabled", busy)}>${_el_resume($scope3_id, "g")}</label>`);
16887
15422
  _script($scope3_id, "o8");
@@ -16918,10 +15453,10 @@ var join_dialog_default = _template("o", (input) => {
16918
15453
  _if(() => {
16919
15454
  if (busy && steps$2.length) {
16920
15455
  const $scope6_id = _scope_id();
16921
- _html(`<ul${_attr_class("_iu")}>`);
15456
+ _html(`<ul${_attr_class("_hX")}>`);
16922
15457
  _for_of(steps$2, (step$2, i) => {
16923
15458
  const $scope7_id = _scope_id();
16924
- _html(`<li${_attr_class(["_iw", { ["_iv"]: i === steps$2.length - 1 }])}>`);
15459
+ _html(`<li${_attr_class(["_hZ", { ["_hY"]: i === steps$2.length - 1 }])}>`);
16925
15460
  _if(() => {
16926
15461
  if (i === steps$2.length - 1) {
16927
15462
  const $scope10_id = _scope_id();
@@ -16930,7 +15465,7 @@ var join_dialog_default = _template("o", (input) => {
16930
15465
  return 0;
16931
15466
  } else {
16932
15467
  const $scope11_id = _scope_id();
16933
- _html(`<span${_attr_class("_ix")}>`);
15468
+ _html(`<span${_attr_class("_h0")}>`);
16934
15469
  icon_check_default({ size: 14 });
16935
15470
  _html("</span>");
16936
15471
  writeScope($scope11_id, {});
@@ -17137,9 +15672,9 @@ var new_workspace_default = _template("t", (input) => {
17137
15672
  return 0;
17138
15673
  }
17139
15674
  }, $scope0_id, "e", 1, 1, 1, 0, 1);
17140
- _html(`<label${_attr_class("_eh")}><span${_attr_class("_cm")}>Name</span><input${_attr_input_value($scope0_id, "h", name, _resume((_new_name) => {
15675
+ _html(`<label${_attr_class("_eh")}><span${_attr_class("_ct")}>Name</span><input${_attr_input_value($scope0_id, "h", name, _resume((_new_name) => {
17141
15676
  name = _new_name;
17142
- }, "t0", $scope0_id))}${_attr_class(inputLg)} placeholder=my-feature${_attr("disabled", busy)} autofocus>${_el_resume($scope0_id, "h")}</label><section${_attr_class("_b9")}><div${_attr_class("_ej")}><h2${_attr_class("_cm")}>Repos</h2></div><ul${_attr_class(curRepos)}>`);
15677
+ }, "t0", $scope0_id))}${_attr_class(inputLg)} placeholder=my-feature${_attr("disabled", busy)} autofocus>${_el_resume($scope0_id, "h")}</label><section${_attr_class("_cf")}><div${_attr_class("_ej")}><h2${_attr_class("_ct")}>Repos</h2></div><ul${_attr_class(curRepos)}>`);
17143
15678
  _for_of(selected, (repo) => {
17144
15679
  const $scope4_id = _scope_id();
17145
15680
  _html(`<li${_attr_class("_ek")}><div${_attr_class(curRow)}><span${_attr_class("_eo")}>${_text_resume($scope4_id, "d", repoLabel(repo.fullName))}</span>`);
@@ -17284,10 +15819,10 @@ var new_workspace_default = _template("t", (input) => {
17284
15819
  _if(() => {
17285
15820
  if (archived$1.length) {
17286
15821
  const $scope6_id = _scope_id();
17287
- _html(`<section${_attr_class(archived)}><div${_attr_class("_ej")}><h2${_attr_class("_cm")}>Archived</h2><span${_attr_class(sectionCount)}>${_text_resume($scope6_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(archivedList)}>`);
15822
+ _html(`<section${_attr_class(archived)}><div${_attr_class("_ej")}><h2${_attr_class("_ct")}>Archived</h2><span${_attr_class(sectionCount)}>${_text_resume($scope6_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(archivedList)}>`);
17288
15823
  _for_of(archived$1, (ws) => {
17289
15824
  const $scope7_id = _scope_id();
17290
- _html(`<li${_attr_class(archivedRow)}><div${_attr_class("_ce")}><span${_attr_class("_cf")}>${_text_resume($scope7_id, "d", ws.name, $sg__input_workspaces)}</span><span${_attr_class([metaTrunc, "_y"])}${_attr("title", ws.display_path || ws.path)}>${_text_resume($scope7_id, "f", ws.display_path || ws.path, $sg__input_workspaces)}</span>${_el_resume($scope7_id, "e", $sg__input_workspaces)}</div><button type=button${_attr_class(btnSm)}${_attr("disabled", busy || !!restoring)}>`);
15825
+ _html(`<li${_attr_class(archivedRow)}><div${_attr_class("_cl")}><span${_attr_class("_cm")}>${_text_resume($scope7_id, "d", ws.name, $sg__input_workspaces)}</span><span${_attr_class([metaTrunc, "_y"])}${_attr("title", ws.display_path || ws.path)}>${_text_resume($scope7_id, "f", ws.display_path || ws.path, $sg__input_workspaces)}</span>${_el_resume($scope7_id, "e", $sg__input_workspaces)}</div><button type=button${_attr_class(btnSm)}${_attr("disabled", busy || !!restoring)}>`);
17291
15826
  _if(() => {
17292
15827
  if (restoring === ws.id) {
17293
15828
  const $scope19_id = _scope_id();
@@ -17859,7 +16394,7 @@ var work_view_default = _template("J", (input) => {
17859
16394
  const onKey = _resume((e) => {
17860
16395
  const target = e.target;
17861
16396
  const typing = !!target && !target.closest(".xterm") && (target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.tagName === "SELECT" || target.isContentEditable);
17862
- if (e.key === "Escape" && view !== "term" && !document.querySelector("dialog[open]") && !(view === "diff" && reviewFindOpen) && !(typing && target.tagName !== "SELECT" && target.value)) {
16397
+ if (e.key === "Escape" && view !== "term" && view !== "diff" && !e.defaultPrevented && !document.querySelector("dialog[open]") && !(typing && target.tagName !== "SELECT" && target.value)) {
17863
16398
  e.preventDefault();
17864
16399
  if (view === "new") exitCreate();
17865
16400
  else view = home;
@@ -17871,10 +16406,10 @@ var work_view_default = _template("J", (input) => {
17871
16406
  }
17872
16407
  }, "J14", $scope0_id);
17873
16408
  const navShown = view === "nav" && input.navState?.view === "nav";
17874
- _html(`<div${_attr_class(["_cp", {
17875
- ["_cn"]: navShown,
17876
- ["_co"]: !input.active
17877
- }])}><div${_attr_class("_cq")}>`);
16409
+ _html(`<div${_attr_class(["_b_", {
16410
+ ["_b8"]: navShown,
16411
+ ["_b9"]: !input.active
16412
+ }])}><div${_attr_class("_ca")}>`);
17878
16413
  _if(() => {
17879
16414
  if (error) {
17880
16415
  const $scope8_id = _scope_id();
@@ -17897,7 +16432,7 @@ var work_view_default = _template("J", (input) => {
17897
16432
  _if(() => {
17898
16433
  if (diffMounted && ws) {
17899
16434
  const $scope1_id = _scope_id();
17900
- _html(`<div${_attr_class("_cr")}${_attr_or("data-live", view === "diff", "")}${_attr("inert", view !== "diff")}>`);
16435
+ _html(`<div${_attr_class("_cb")}${_attr_or("data-live", view === "diff", "")}${_attr("inert", view !== "diff")}>`);
17901
16436
  _set_serialize_reason({
17902
16437
  0: $sg__input_workspace,
17903
16438
  1: $sg__input_workspace,
@@ -17954,7 +16489,7 @@ var work_view_default = _template("J", (input) => {
17954
16489
  _if(() => {
17955
16490
  if (manageMounted && ws) {
17956
16491
  const $scope2_id = _scope_id();
17957
- _html(`<div${_attr_class("_cr")}${_attr_or("data-live", view === "manage", "")}${_attr("inert", view !== "manage")}>`);
16492
+ _html(`<div${_attr_class("_cb")}${_attr_or("data-live", view === "manage", "")}${_attr("inert", view !== "manage")}>`);
17958
16493
  _set_serialize_reason({
17959
16494
  0: $sg__input_workspace,
17960
16495
  1: _serialize_guard($scope0_reason, 9)
@@ -17980,7 +16515,7 @@ var work_view_default = _template("J", (input) => {
17980
16515
  _if(() => {
17981
16516
  if (settingsMounted) {
17982
16517
  const $scope3_id = _scope_id();
17983
- _html(`<div${_attr_class("_cr")}${_attr_or("data-live", view === "settings", "")}${_attr("inert", view !== "settings")}>`);
16518
+ _html(`<div${_attr_class("_cb")}${_attr_or("data-live", view === "settings", "")}${_attr("inert", view !== "settings")}>`);
17984
16519
  _set_serialize_reason({
17985
16520
  0: _serialize_guard($scope0_reason, 0),
17986
16521
  1: $sg__input_workspace,
@@ -18022,7 +16557,7 @@ var work_view_default = _template("J", (input) => {
18022
16557
  _if(() => {
18023
16558
  if (newMounted) {
18024
16559
  const $scope4_id = _scope_id();
18025
- _html(`<div${_attr_class("_cr")}${_attr_or("data-live", view === "new", "")}${_attr("inert", view !== "new")}>`);
16560
+ _html(`<div${_attr_class("_cb")}${_attr_or("data-live", view === "new", "")}${_attr("inert", view !== "new")}>`);
18026
16561
  _set_serialize_reason({
18027
16562
  0: 1,
18028
16563
  1: _serialize_guard($scope0_reason, 13),
@@ -18047,13 +16582,13 @@ var work_view_default = _template("J", (input) => {
18047
16582
  return 0;
18048
16583
  }
18049
16584
  }, $scope0_id, "g", 1, 1, 1, 0, 1);
18050
- _html(`<div${_attr_class("_cs")}${_attr("inert", view !== "term")}>`);
16585
+ _html(`<div${_attr_class("_cc")}${_attr("inert", view !== "term")}>`);
18051
16586
  _if(() => {
18052
16587
  if (ws && shownSessions) {
18053
16588
  const $scope5_id = _scope_id();
18054
16589
  _for_of(input.active ? shownSessions : shownSessions.filter((x) => x.id === curTab), (s) => {
18055
16590
  const $scope6_id = _scope_id();
18056
- _html(`<div${_attr_class("_ct")}${_attr_or("data-live", s.id === curTab, "")}${_attr("inert", s.id !== curTab)}>`);
16591
+ _html(`<div${_attr_class("_cd")}${_attr_or("data-live", s.id === curTab, "")}${_attr("inert", s.id !== curTab)}>`);
18057
16592
  _set_serialize_reason(2);
18058
16593
  const $childScope5 = _peek_scope_id();
18059
16594
  term_default({
@@ -18079,7 +16614,7 @@ var work_view_default = _template("J", (input) => {
18079
16614
  _if(() => {
18080
16615
  if (!shownSessions.length && view === "term") {
18081
16616
  const $scope7_id = _scope_id();
18082
- _html(`<div${_attr_class("_ck")}><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>`);
16617
+ _html(`<div${_attr_class("_cr")}><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>`);
18083
16618
  _script($scope7_id, "J38");
18084
16619
  _subscribe($spawning__closures, _subscribe($si__input_preferred && $input_preferred__closures, writeScope($scope7_id, {})));
18085
16620
  return 0;
@@ -18089,7 +16624,7 @@ var work_view_default = _template("J", (input) => {
18089
16624
  return 0;
18090
16625
  } else if (ws) {
18091
16626
  const $scope10_id = _scope_id();
18092
- _html(`<p${_attr_class("_ck")}>Loading sessions…</p>`);
16627
+ _html(`<p${_attr_class("_cr")}>Loading sessions…</p>`);
18093
16628
  writeScope($scope10_id, {});
18094
16629
  return 1;
18095
16630
  }
@@ -18638,7 +17173,6 @@ var app_shell_default = _template("c", (input) => {
18638
17173
  let status = boot.status;
18639
17174
  let settings = boot.settings;
18640
17175
  const last = boot.prefs["last-workspace"];
18641
- const openable = _resume((ws) => ws.status === "active" && !ws.pending, "c0");
18642
17176
  const bootActive = boot.workspaces.filter(openable);
18643
17177
  let selectedId = (initial.workspaceId && bootActive.some((ws) => ws.id === initial.workspaceId) ? initial.workspaceId : null) || (last && bootActive.some((ws) => ws.id === last) ? last : null) || bootActive[0]?.id || null;
18644
17178
  let openIds = selectedId ? [selectedId] : [];
@@ -18669,7 +17203,7 @@ var app_shell_default = _template("c", (input) => {
18669
17203
  if (fallback && !openIds.includes(fallback)) openIds = openIds.concat(fallback);
18670
17204
  prefs.setLastWorkspace(selectedId);
18671
17205
  }
18672
- }, "c1", $scope0_id);
17206
+ }, "c0", $scope0_id);
18673
17207
  const load = _resume(async () => {
18674
17208
  try {
18675
17209
  applyWorkspaces(await api("/api/workspaces"));
@@ -18677,7 +17211,7 @@ var app_shell_default = _template("c", (input) => {
18677
17211
  if (isTransientApiError(err)) return;
18678
17212
  error = `Loading workspaces failed: ${err.message || String(err)}`;
18679
17213
  }
18680
- }, "c2", $scope0_id);
17214
+ }, "c1", $scope0_id);
18681
17215
  const patchStatusSessions = _resume((workspaceId, sessions) => {
18682
17216
  const prev = status[workspaceId];
18683
17217
  if (!prev) return;
@@ -18697,7 +17231,7 @@ var app_shell_default = _template("c", (input) => {
18697
17231
  waiting: live.filter((state) => state.phase === "waiting").length
18698
17232
  }
18699
17233
  };
18700
- }, "c3", $scope0_id);
17234
+ }, "c2", $scope0_id);
18701
17235
  const statusMem = {
18702
17236
  run: void 0,
18703
17237
  fresh: false
@@ -18713,7 +17247,7 @@ var app_shell_default = _template("c", (input) => {
18713
17247
  if (!isTransientApiError(err)) throw err;
18714
17248
  }
18715
17249
  }))();
18716
- }, "c4", $scope0_id);
17250
+ }, "c3", $scope0_id);
18717
17251
  const openWorkspace = _resume(async (id) => {
18718
17252
  const ws = workspaces.find((w) => w.id === id);
18719
17253
  if (ws?.pending && ws.status === "active") return;
@@ -18734,7 +17268,7 @@ var app_shell_default = _template("c", (input) => {
18734
17268
  openIds = openIds.filter((x) => x !== id).concat(id);
18735
17269
  if (openIds.length > OPEN_VIEWS_MAX) openIds = openIds.slice(-6);
18736
17270
  prefs.setLastWorkspace(id);
18737
- }, "c5", $scope0_id);
17271
+ }, "c4", $scope0_id);
18738
17272
  const go = _resume((r) => {
18739
17273
  let id = r.workspaceId || selectedId;
18740
17274
  if (id && !workspaces.some((w) => w.id === id && !w.pending)) id = selectedId && workspaces.some((w) => w.id === selectedId && !w.pending) ? selectedId : null;
@@ -18753,7 +17287,7 @@ var app_shell_default = _template("c", (input) => {
18753
17287
  workspaceId: id
18754
17288
  };
18755
17289
  navNonce++;
18756
- }, "c6", $scope0_id);
17290
+ }, "c5", $scope0_id);
18757
17291
  _html(`<div${_attr_class("_d")}>`);
18758
17292
  _if(() => {
18759
17293
  if (error) {
@@ -18761,8 +17295,8 @@ var app_shell_default = _template("c", (input) => {
18761
17295
  toast_default({
18762
17296
  onDismiss: _resume(function() {
18763
17297
  error = null;
18764
- }, "c7", $scope4_id),
18765
- content: _content("c40", () => {
17298
+ }, "c6", $scope4_id),
17299
+ content: _content("c39", () => {
18766
17300
  _scope_reason();
18767
17301
  const $scope5_id = _scope_id();
18768
17302
  _html(_text_resume($scope5_id, "a", error));
@@ -18791,29 +17325,29 @@ var app_shell_default = _template("c", (input) => {
18791
17325
  ...settings,
18792
17326
  instance
18793
17327
  };
18794
- }, "c8", $scope3_id),
17328
+ }, "c7", $scope3_id),
18795
17329
  setup,
18796
17330
  setupChange: _resume(function(s) {
18797
17331
  setup = s;
18798
17332
  if (s.ready) showSetup = false;
18799
- }, "c9", $scope3_id),
17333
+ }, "c8", $scope3_id),
18800
17334
  preferredChange: _resume(function(agent) {
18801
17335
  if (!settings) return;
18802
17336
  settings = {
18803
17337
  ...settings,
18804
17338
  preferredAgent: agent
18805
17339
  };
18806
- }, "c10", $scope3_id),
17340
+ }, "c9", $scope3_id),
18807
17341
  agentsChange: _resume(function(agents) {
18808
17342
  if (!settings) return;
18809
17343
  settings = {
18810
17344
  ...settings,
18811
17345
  agents
18812
17346
  };
18813
- }, "c11", $scope3_id)
17347
+ }, "c10", $scope3_id)
18814
17348
  });
18815
17349
  _html(`<div${_attr_class("_k")}><button type=button${_attr_class("_q")}>Later, go to workspaces</button>${_el_resume($scope3_id, "d")}</div></div>`);
18816
- _script($scope3_id, "c41");
17350
+ _script($scope3_id, "c40");
18817
17351
  writeScope($scope3_id, { b: _existing_scope($childScope) });
18818
17352
  return 0;
18819
17353
  }
@@ -18831,7 +17365,7 @@ var app_shell_default = _template("c", (input) => {
18831
17365
  workspaceId: null,
18832
17366
  view: "new"
18833
17367
  });
18834
- }, "c12", $scope0_id);
17368
+ }, "c11", $scope0_id);
18835
17369
  _html(`<div${_attr_class(["_f", {
18836
17370
  ["_g"]: !selectedId && showSetup,
18837
17371
  ["_e"]: navView === "nav"
@@ -18852,42 +17386,42 @@ var app_shell_default = _template("c", (input) => {
18852
17386
  view: "term",
18853
17387
  sessionId: id
18854
17388
  });
18855
- }, "c13", $scope0_id),
17389
+ }, "c12", $scope0_id),
18856
17390
  view: navView,
18857
17391
  viewChange: _resume(function(v) {
18858
17392
  if (v === "term") goHome();
18859
- }, "c14", $scope0_id),
17393
+ }, "c13", $scope0_id),
18860
17394
  allWorkspaces: workspaces,
18861
17395
  allStatus: status,
18862
17396
  agents: settings ? settings.agents : [],
18863
17397
  onError: _resume(function(message) {
18864
17398
  error = message;
18865
- }, "c15", $scope0_id),
17399
+ }, "c14", $scope0_id),
18866
17400
  onSelectWorkspace: _resume(function(id) {
18867
17401
  openWorkspace(id);
18868
- }, "c16", $scope0_id),
17402
+ }, "c15", $scope0_id),
18869
17403
  onNewSession: _resume(function(wsId, agent) {
18870
17404
  navState?.newSession(wsId, agent);
18871
- }, "c17", $scope0_id),
17405
+ }, "c16", $scope0_id),
18872
17406
  onCloseSession: _resume(function(id) {
18873
17407
  navState?.closeSession(id);
18874
- }, "c18", $scope0_id),
17408
+ }, "c17", $scope0_id),
18875
17409
  onRenameSession: _resume(function(s, title) {
18876
17410
  navState?.renameSession(s.id, title);
18877
- }, "c19", $scope0_id),
17411
+ }, "c18", $scope0_id),
18878
17412
  onReviewOpened: _resume(function(pr) {
18879
17413
  if (navWs) go({
18880
17414
  workspaceId: navWs.id,
18881
17415
  view: "diff",
18882
17416
  pr: pr ?? null
18883
17417
  });
18884
- }, "c20", $scope0_id),
17418
+ }, "c19", $scope0_id),
18885
17419
  onReviewOther: _resume(function(wsId) {
18886
17420
  go({
18887
17421
  workspaceId: wsId,
18888
17422
  view: "diff"
18889
17423
  });
18890
- }, "c21", $scope0_id)
17424
+ }, "c20", $scope0_id)
18891
17425
  });
18892
17426
  _html(`<div${_attr_class("_h")}>`);
18893
17427
  _for_of(selectedId ? openIds : [null], (id) => {
@@ -18909,7 +17443,7 @@ var app_shell_default = _template("c", (input) => {
18909
17443
  navState,
18910
17444
  navStateChange: _resume((_new_navState) => {
18911
17445
  navState = _new_navState;
18912
- }, "c22", $scope2_id),
17446
+ }, "c21", $scope2_id),
18913
17447
  preferred: settings ? settings.preferredAgent : "shell",
18914
17448
  agents: settings ? settings.agents : [],
18915
17449
  instance: settings ? settings.instance : NO_INSTANCE,
@@ -18919,11 +17453,11 @@ var app_shell_default = _template("c", (input) => {
18919
17453
  ...settings,
18920
17454
  instance
18921
17455
  };
18922
- }, "c23", $scope2_id),
17456
+ }, "c22", $scope2_id),
18923
17457
  setup,
18924
17458
  onSetupChange: _resume(function(s) {
18925
17459
  setup = s;
18926
- }, "c24", $scope2_id),
17460
+ }, "c23", $scope2_id),
18927
17461
  initialView: ws?.id === initial.workspaceId || !initial.workspaceId ? initial.view : void 0,
18928
17462
  initialTab: ws?.id === initial.workspaceId ? initial.sessionId ?? null : null,
18929
17463
  initialPr: ws?.id === initial.workspaceId ? initial.pr ?? null : null,
@@ -18939,43 +17473,43 @@ var app_shell_default = _template("c", (input) => {
18939
17473
  scope: r.scope,
18940
17474
  file: r.file
18941
17475
  };
18942
- }, "c25", $scope2_id),
17476
+ }, "c24", $scope2_id),
18943
17477
  onPreferredChange: _resume(function(agent) {
18944
17478
  if (!settings) return;
18945
17479
  settings = {
18946
17480
  ...settings,
18947
17481
  preferredAgent: agent
18948
17482
  };
18949
- }, "c26", $scope2_id),
17483
+ }, "c25", $scope2_id),
18950
17484
  onAgentsChange: _resume(function(agents) {
18951
17485
  if (!settings) return;
18952
17486
  settings = {
18953
17487
  ...settings,
18954
17488
  agents
18955
17489
  };
18956
- }, "c27", $scope2_id),
17490
+ }, "c26", $scope2_id),
18957
17491
  nav: current ? nav : null,
18958
17492
  navNonce,
18959
17493
  onSelectWorkspace: _resume(function(wsId) {
18960
17494
  openWorkspace(wsId);
18961
- }, "c28", $scope2_id),
17495
+ }, "c27", $scope2_id),
18962
17496
  onWorkspaceChange: _resume(function(next) {
18963
17497
  applyWorkspaces(workspaces.map((w) => w.id === next.id ? next : w));
18964
- }, "c29", $scope2_id),
17498
+ }, "c28", $scope2_id),
18965
17499
  onWorkspaceDeleted: _resume(function(id) {
18966
17500
  applyWorkspaces(workspaces.filter((w) => w.id !== id));
18967
- }, "c30", $scope2_id),
17501
+ }, "c29", $scope2_id),
18968
17502
  onNew: _resume(function() {
18969
17503
  creating = true;
18970
- }, "c31", $scope2_id),
17504
+ }, "c30", $scope2_id),
18971
17505
  onExitCreate: _resume(function() {
18972
17506
  creating = false;
18973
- }, "c32", $scope2_id),
17507
+ }, "c31", $scope2_id),
18974
17508
  onCreated: _resume(function(ws) {
18975
17509
  if (!workspaces.some((w) => w.id === ws.id)) workspaces = [ws, ...workspaces];
18976
17510
  creating = false;
18977
17511
  openWorkspace(ws.id);
18978
- }, "c33", $scope2_id)
17512
+ }, "c32", $scope2_id)
18979
17513
  });
18980
17514
  _html(`</div>${_el_resume($scope2_id, "a")}`);
18981
17515
  _subscribe($openWorkspace2__closures, _subscribe($applyWorkspaces2__closures, _subscribe($navState__closures, _subscribe($setup2__closures, _subscribe($navNonce__closures, _subscribe($nav__closures, _subscribe($creating__closures, _subscribe($settings__closures, _subscribe($status__closures, _subscribe($workspaces__closures, _subscribe($si__input_initial && $initial_file__closures, _subscribe($si__input_initial && $initial_scope__closures, _subscribe($si__input_initial && $initial_pr__closures, _subscribe($si__input_initial && $initial_sessionId__closures, _subscribe($si__input_initial && $initial_view__closures, _subscribe($si__input_initial && $initial_workspaceId__closures, writeScope($scope2_id, { b: _existing_scope($childScope3) })))))))))))))))));
@@ -18998,36 +17532,35 @@ var app_shell_default = _template("c", (input) => {
18998
17532
  workspaceName: navWs?.name,
18999
17533
  onOpenNav: _resume(function() {
19000
17534
  navState?.toggleNav();
19001
- }, "c34", $scope0_id),
17535
+ }, "c33", $scope0_id),
19002
17536
  sessions: navSessions,
19003
17537
  sessionId: navTab,
19004
17538
  agents: settings ? settings.agents : [],
19005
17539
  onNewSession: _resume(function(agent) {
19006
17540
  if (navWs) navState?.newSession(navWs.id, agent);
19007
- }, "c35", $scope0_id),
17541
+ }, "c34", $scope0_id),
19008
17542
  onOpenTab: _resume(function(id) {
19009
17543
  if (navWs) go({
19010
17544
  workspaceId: navWs.id,
19011
17545
  view: "term",
19012
17546
  sessionId: id
19013
17547
  });
19014
- }, "c36", $scope0_id),
17548
+ }, "c35", $scope0_id),
19015
17549
  onCloseSession: _resume(function(id) {
19016
17550
  navState?.closeSession(id);
19017
- }, "c37", $scope0_id),
17551
+ }, "c36", $scope0_id),
19018
17552
  onRenameSession: _resume(function(id, title) {
19019
17553
  navState?.renameSession(id, title);
19020
- }, "c38", $scope0_id),
17554
+ }, "c37", $scope0_id),
19021
17555
  keys: navState?.keys ?? null,
19022
17556
  reviewFindOpen: !!navState?.reviewFindOpen,
19023
17557
  onToggleReviewFind: _resume(function() {
19024
17558
  navState?.toggleReviewFind();
19025
- }, "c39", $scope0_id)
17559
+ }, "c38", $scope0_id)
19026
17560
  });
19027
- _html(`</div>${_el_resume($scope0_id, "a")}`);
17561
+ _html("</div>");
17562
+ _script($scope0_id, "c41");
19028
17563
  _script($scope0_id, "c42");
19029
- _script($scope0_id, "c43");
19030
- _script($scope0_id, "c44");
19031
17564
  writeScope($scope0_id, {
19032
17565
  r: boot?.prefs,
19033
17566
  x: initial.workspaceId,
@@ -19040,55 +17573,54 @@ var app_shell_default = _template("c", (input) => {
19040
17573
  a4: status,
19041
17574
  a5: settings,
19042
17575
  a6: $si__input_initial && last,
19043
- a7: openable,
19044
- a9: $si__input_initial && bootActive,
19045
- ab: $si__input_initial && bootActive?.length,
19046
- ad: selectedId,
19047
- af: openIds,
19048
- aj: creating,
19049
- ak: route,
19050
- al: route?.view,
19051
- am: route?.sessionId,
19052
- an: nav,
19053
- ao: navNonce,
19054
- aq: lastUrl.route,
19055
- as: setup,
19056
- at: wantSetup,
19057
- au: showSetup,
19058
- aw: error,
19059
- ax: navState,
19060
- ay: navState?.view,
19061
- az: navState?.sessions,
19062
- b2: applyWorkspaces,
19063
- b3: load,
19064
- b4: patchStatusSessions,
19065
- b6: statusMem.fresh,
19066
- b7: statusMem.run,
19067
- b9: loadStatus,
19068
- ba: openWorkspace,
19069
- bc: go,
19070
- be: navWs,
19071
- bk: navView,
19072
- bo: navSessions?.[0]?.id,
19073
- br: goHome,
19074
- c6: $error__closures,
17576
+ a7: $si__input_initial && bootActive,
17577
+ a9: $si__input_initial && bootActive?.length,
17578
+ ab: selectedId,
17579
+ ad: openIds,
17580
+ ag: creating,
17581
+ ah: route,
17582
+ ai: route?.view,
17583
+ aj: route?.sessionId,
17584
+ ak: nav,
17585
+ al: navNonce,
17586
+ an: lastUrl.route,
17587
+ ap: setup,
17588
+ aq: wantSetup,
17589
+ ar: showSetup,
17590
+ at: error,
17591
+ au: navState,
17592
+ av: navState?.view,
17593
+ aw: navState?.sessions,
17594
+ az: applyWorkspaces,
17595
+ b0: load,
17596
+ b1: patchStatusSessions,
17597
+ b3: statusMem.fresh,
17598
+ b4: statusMem.run,
17599
+ b6: loadStatus,
17600
+ b7: openWorkspace,
17601
+ b9: go,
17602
+ bb: navWs,
17603
+ bh: navView,
17604
+ bl: navSessions?.[0]?.id,
17605
+ bo: goHome,
17606
+ c3: $error__closures,
19075
17607
  f: _existing_scope($childScope2),
19076
- bs: $si__input_initial && $initial_workspaceId__closures,
19077
- bt: $si__input_initial && $initial_view__closures,
19078
- bu: $si__input_initial && $initial_sessionId__closures,
19079
- bv: $si__input_initial && $initial_pr__closures,
19080
- bw: $si__input_initial && $initial_scope__closures,
19081
- bx: $si__input_initial && $initial_file__closures,
19082
- by: $workspaces__closures,
19083
- bz: $status__closures,
19084
- c0: $settings__closures,
19085
- c2: $creating__closures,
19086
- c3: $nav__closures,
19087
- c4: $navNonce__closures,
19088
- c5: $setup2__closures,
19089
- c7: $navState__closures,
19090
- c8: $applyWorkspaces2__closures,
19091
- c9: $openWorkspace2__closures,
17608
+ bp: $si__input_initial && $initial_workspaceId__closures,
17609
+ bq: $si__input_initial && $initial_view__closures,
17610
+ br: $si__input_initial && $initial_sessionId__closures,
17611
+ bs: $si__input_initial && $initial_pr__closures,
17612
+ bt: $si__input_initial && $initial_scope__closures,
17613
+ bu: $si__input_initial && $initial_file__closures,
17614
+ bv: $workspaces__closures,
17615
+ bw: $status__closures,
17616
+ bx: $settings__closures,
17617
+ bz: $creating__closures,
17618
+ c0: $nav__closures,
17619
+ c1: $navNonce__closures,
17620
+ c2: $setup2__closures,
17621
+ c4: $navState__closures,
17622
+ c5: $applyWorkspaces2__closures,
17623
+ c6: $openWorkspace2__closures,
19092
17624
  h: _existing_scope($childScope4)
19093
17625
  });
19094
17626
  _resume_branch($scope0_id);
@@ -27370,4 +25902,4 @@ server.listen(port, () => {
27370
25902
  //#endregion
27371
25903
  export {};
27372
25904
 
27373
- ;var __MARKO_MANIFEST__={"AA0T2xt":{"block":[2,"stylesheet#/assets/icon-arrow-down-xhBqf52S.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-xhBqf52S.css\"",">",2,"stylesheet#/assets/app-page-D2BI9pqy.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-D2BI9pqy.css\"",">"],"defer":[2,"/assets/settings-xKLJRIst.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/settings-xKLJRIst.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_Cjgj-pBB.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_Cjgj-pBB.js\"",">",2,"modulepreload#/assets/_CUAQigw_.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_CUAQigw_.js\"",">"]},"ZLT8joi":{"block":[2,"stylesheet#/assets/icon-arrow-down-xhBqf52S.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-xhBqf52S.css\"",">",2,"stylesheet#/assets/app-page-D2BI9pqy.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-D2BI9pqy.css\"",">"],"defer":[2,"/assets/new-xKLJRIst.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/new-xKLJRIst.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_Cjgj-pBB.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_Cjgj-pBB.js\"",">",2,"modulepreload#/assets/_CUAQigw_.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_CUAQigw_.js\"",">"]},"LH2lXAg":{"block":[2,"stylesheet#/assets/icon-arrow-down-xhBqf52S.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-xhBqf52S.css\"",">",2,"stylesheet#/assets/app-page-D2BI9pqy.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-D2BI9pqy.css\"",">"],"defer":[2,"/assets/w-xKLJRIst.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w-xKLJRIst.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_Cjgj-pBB.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_Cjgj-pBB.js\"",">",2,"modulepreload#/assets/_CUAQigw_.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_CUAQigw_.js\"",">"]},"ibphXY4":{"block":[2,"stylesheet#/assets/icon-arrow-down-xhBqf52S.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-xhBqf52S.css\"",">",2,"stylesheet#/assets/app-page-D2BI9pqy.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-D2BI9pqy.css\"",">"],"defer":[2,"/assets/w._-xKLJRIst.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-xKLJRIst.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_Cjgj-pBB.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_Cjgj-pBB.js\"",">",2,"modulepreload#/assets/_CUAQigw_.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_CUAQigw_.js\"",">"]},"T$MNY0k":{"block":[2,"stylesheet#/assets/icon-arrow-down-xhBqf52S.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-xhBqf52S.css\"",">",2,"stylesheet#/assets/app-page-D2BI9pqy.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-D2BI9pqy.css\"",">"],"defer":[2,"/assets/w._-CaFh5fWn.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-CaFh5fWn.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_Cjgj-pBB.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_Cjgj-pBB.js\"",">",2,"modulepreload#/assets/_CUAQigw_.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_CUAQigw_.js\"",">"]},"_m":{"block":[2,"stylesheet#/assets/diff-view-CDR_rQOe.css",6,"<link",0," rel=\"stylesheet\" href=\"",1,"assets/diff-view-CDR_rQOe.css\"",">",2,"stylesheet#/assets/icon-arrow-down-xhBqf52S.css",6,"<link",0," rel=\"stylesheet\" href=\"",1,"assets/icon-arrow-down-xhBqf52S.css\"",">"],"defer":[2,"/assets/diff-view-CyDQspSd.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/diff-view-CyDQspSd.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">"]}};
25905
+ ;var __MARKO_MANIFEST__={"T$MNY0k":{"block":[2,"stylesheet#/assets/icon-arrow-down-ptjlirxL.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-ptjlirxL.css\"",">",2,"stylesheet#/assets/app-page-DkJHV2Hb.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DkJHV2Hb.css\"",">"],"defer":[2,"/assets/w._-CjRAL7y8.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-CjRAL7y8.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_DrrcCvtP.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_DrrcCvtP.js\"",">",2,"modulepreload#/assets/_DgrVjbbj.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_DgrVjbbj.js\"",">"]},"LH2lXAg":{"block":[2,"stylesheet#/assets/icon-arrow-down-ptjlirxL.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-ptjlirxL.css\"",">",2,"stylesheet#/assets/app-page-DkJHV2Hb.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DkJHV2Hb.css\"",">"],"defer":[2,"/assets/w-CjRAL7y8.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w-CjRAL7y8.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_DrrcCvtP.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_DrrcCvtP.js\"",">",2,"modulepreload#/assets/_DgrVjbbj.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_DgrVjbbj.js\"",">"]},"ibphXY4":{"block":[2,"stylesheet#/assets/icon-arrow-down-ptjlirxL.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-ptjlirxL.css\"",">",2,"stylesheet#/assets/app-page-DkJHV2Hb.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DkJHV2Hb.css\"",">"],"defer":[2,"/assets/w._-DvPeuuNc.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-DvPeuuNc.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_DrrcCvtP.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_DrrcCvtP.js\"",">",2,"modulepreload#/assets/_DgrVjbbj.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_DgrVjbbj.js\"",">"]},"ZLT8joi":{"block":[2,"stylesheet#/assets/icon-arrow-down-ptjlirxL.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-ptjlirxL.css\"",">",2,"stylesheet#/assets/app-page-DkJHV2Hb.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DkJHV2Hb.css\"",">"],"defer":[2,"/assets/new-CjRAL7y8.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/new-CjRAL7y8.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_DrrcCvtP.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_DrrcCvtP.js\"",">",2,"modulepreload#/assets/_DgrVjbbj.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_DgrVjbbj.js\"",">"]},"AA0T2xt":{"block":[2,"stylesheet#/assets/icon-arrow-down-ptjlirxL.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/icon-arrow-down-ptjlirxL.css\"",">",2,"stylesheet#/assets/app-page-DkJHV2Hb.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-DkJHV2Hb.css\"",">"],"defer":[2,"/assets/settings-CjRAL7y8.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/settings-CjRAL7y8.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">",2,"modulepreload#/assets/_hePW80VL.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_hePW80VL.js\"",">",2,"modulepreload#/assets/_DrrcCvtP.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_DrrcCvtP.js\"",">",2,"modulepreload#/assets/_DgrVjbbj.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_DgrVjbbj.js\"",">"]},"_m":{"block":[2,"stylesheet#/assets/diff-view-D_kTcxOl.css",6,"<link",0," rel=\"stylesheet\" href=\"",1,"assets/diff-view-D_kTcxOl.css\"",">",2,"stylesheet#/assets/icon-arrow-down-ptjlirxL.css",6,"<link",0," rel=\"stylesheet\" href=\"",1,"assets/icon-arrow-down-ptjlirxL.css\"",">"],"defer":[2,"/assets/diff-view-B7Akkn43.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/diff-view-B7Akkn43.js\"","></script>",2,"modulepreload#/assets/_BOllftHQ.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_BOllftHQ.js\"",">"]}};