relay-companion 0.1.261 → 0.1.263

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 (2) hide show
  1. package/overlay/inbox.html +23 -17
  2. package/package.json +1 -1
@@ -970,17 +970,16 @@
970
970
  .gd-action.danger { color:var(--danger); }
971
971
  .gd-rename-form { display:flex; gap:7px; }
972
972
  .gd-rename-form .cv-input { min-width:0; flex:1; }
973
- .gd-membership { padding:14px 16px 18px; }
974
- .group-detail.in-sheet .gd-membership { padding:16px 22px 22px; }
973
+ .gd-membership { display:flex; align-items:center; min-height:58px; padding:0 16px; }
974
+ .group-detail.in-sheet .gd-membership { padding-inline:22px; }
975
+ .gd-membership-confirm { padding-block:14px 18px; }
976
+ .group-detail.in-sheet .gd-membership-confirm { padding-block:16px 22px; }
975
977
  .gd-leave {
976
- appearance:none; display:grid; grid-template-columns:19px minmax(0,1fr) 10px; align-items:center; gap:11px; width:100%;
977
- padding:12px 13px; border:1px solid color-mix(in srgb, var(--danger) 26%, var(--edge)); border-radius:var(--r-3);
978
- background:color-mix(in srgb, var(--danger) 4%, var(--bg)); color:var(--danger); text-align:left; cursor:pointer;
979
- }
980
- .gd-leave-copy { display:flex; flex-direction:column; min-width:0; }
981
- .gd-leave-copy strong { font-family:var(--sans); font-size:12.5px; font-weight:600; }
982
- .gd-leave-copy span { margin-top:2px; color:var(--muted); font-family:var(--serif); font-size:12.5px; }
983
- .gd-confirm { padding:12px 13px; border:1px solid color-mix(in srgb, var(--danger) 26%, var(--edge)); border-radius:var(--r-3); background:var(--wash); }
978
+ appearance:none; border:0; background:transparent; padding:8px 0; color:var(--danger);
979
+ font-family:var(--sans); font-size:12.5px; font-weight:500; text-align:left; cursor:pointer;
980
+ }
981
+ .gd-leave:hover { color:color-mix(in srgb, var(--danger) 84%, var(--ink)); }
982
+ .gd-confirm { width:100%; padding:12px 13px; border:1px solid color-mix(in srgb, var(--danger) 26%, var(--edge)); border-radius:var(--r-3); background:var(--wash); }
984
983
  .gd-confirm strong { display:block; color:var(--ink); font-family:var(--sans); font-size:12.5px; font-weight:600; }
985
984
  .gd-confirm p { margin:5px 0 0; color:var(--muted); font-family:var(--serif); font-size:12.5px; line-height:1.4; }
986
985
  .gd-confirm-actions { display:flex; justify-content:flex-end; gap:12px; margin-top:11px; }
@@ -1155,7 +1154,7 @@
1155
1154
  switches: people move between Claude Code and Codex independently, so a
1156
1155
  radio-style Claude/Codex/Both picker made the common state harder to read. */
1157
1156
  .sv-open-section { margin:24px 12px 0; }
1158
- .sv-open-title { padding:0 4px; font-family:var(--sans); font-size:15px; line-height:1.35; font-weight:600; color:var(--ink); }
1157
+ .sv-open-title, .sv-quiet-title { padding:0 4px; font-family:var(--sans); font-size:15px; line-height:1.35; font-weight:600; color:var(--ink); }
1159
1158
  .sv-open-intro { padding:0 4px; margin:4px 0 10px; font-family:var(--sans); font-size:12px; line-height:1.45; color:var(--muted-2); }
1160
1159
  .sv-open-list { overflow:hidden; border-radius:var(--r-3); background:var(--raised); box-shadow:inset 0 0 0 1px var(--edge); }
1161
1160
  .sv-open-row { display:flex; align-items:center; gap:11px; min-height:54px; padding:10px 12px; }
@@ -1523,8 +1522,10 @@
1523
1522
  .th-msg:hover + .th-under .th-reply-ghost, .th-under:hover .th-reply-ghost { opacity:.75; }
1524
1523
  /* A reply stays in the room's chronology. Its source is an inset preview,
1525
1524
  never a side thread: tap it to return to the exact Relay it answers. */
1526
- .th-reply-ref { flex:1 0 100%; min-width:0; appearance:none; border:0; border-left:2px solid var(--accent);
1527
- border-radius:7px; background:color-mix(in srgb, var(--ink) 4%, transparent); padding:6px 42px 6px 9px; margin:0 0 7px;
1525
+ /* The bubble clock owns the top-right lane. End the source card before it
1526
+ instead of padding beneath it, so the clock never sits on the card edge. */
1527
+ .th-reply-ref { flex:0 0 calc(100% - 42px); width:calc(100% - 42px); min-width:0; appearance:none; border:0; border-left:2px solid var(--accent);
1528
+ border-radius:7px; background:color-mix(in srgb, var(--ink) 4%, transparent); padding:6px 9px; margin:0 42px 7px 0;
1528
1529
  color:inherit; cursor:pointer; text-align:left; font-family:var(--sans); }
1529
1530
  .th-reply-ref:hover { background:color-mix(in srgb, var(--ink) 7%, transparent); }
1530
1531
  .th-reply-ref:disabled { cursor:default; opacity:.72; }
@@ -1961,7 +1962,8 @@
1961
1962
  A real switch, not the Enable/Disable label-flip the provider rows use: these
1962
1963
  are settings someone leaves ON for weeks, and a switch reads its own state at a
1963
1964
  glance. Same enclosure as .sv-provider-list so the pane stays one material. */
1964
- .sv-quiet-section { margin:18px 12px 0; }
1965
+ .sv-quiet-section { margin:24px 12px 0; }
1966
+ .sv-quiet-title { margin-bottom:10px; }
1965
1967
  .sv-quiet-list { overflow:hidden; border-radius:var(--r-3); background:var(--raised); box-shadow:inset 0 0 0 1px var(--edge); }
1966
1968
  .sv-quiet-row { display:flex; align-items:flex-start; gap:12px; padding:12px; }
1967
1969
  .sv-quiet-row + .sv-quiet-row { border-top:1px solid var(--edge); }
@@ -7328,8 +7330,8 @@
7328
7330
  membershipAction = `<div class="gd-membership"><div class="gd-status">This group is archived. Its messages stay readable, but nobody can post in it.</div></div>`;
7329
7331
  } else if (!mine) {
7330
7332
  membershipAction = groupLeaveArmedId === g.id
7331
- ? `<div class="gd-membership"><div class="gd-confirm"><strong>Leave ${esc(g.name)}?</strong><p>You’ll stop receiving new messages. Your existing messages will remain in Relays.</p><div class="gd-confirm-actions"><button class="cancel" type="button" data-gd-leave-cancel>Cancel</button><button class="confirm" type="button" data-gd-leave-confirm>Leave group</button></div></div></div>`
7332
- : `<div class="gd-membership"><button class="gd-leave" type="button" data-gd-leave><span aria-hidden="true">↪</span><span class="gd-leave-copy"><strong>Leave group</strong><span>Stop receiving new messages from this group</span></span><span aria-hidden="true">›</span></button></div>`;
7333
+ ? `<div class="gd-membership gd-membership-confirm"><div class="gd-confirm"><strong>Leave ${esc(g.name)}?</strong><p>You’ll stop receiving new messages. Your existing messages will remain in Relays.</p><div class="gd-confirm-actions"><button class="cancel" type="button" data-gd-leave-cancel>Cancel</button><button class="confirm" type="button" data-gd-leave-confirm>Leave group</button></div></div></div>`
7334
+ : `<div class="gd-membership"><button class="gd-leave" type="button" data-gd-leave>Leave group</button></div>`;
7333
7335
  }
7334
7336
  return `<div class="group-detail${sheet ? " in-sheet" : ""}" data-group-detail="${esc(g.id)}">
7335
7337
  ${sheet ? "" : `<button class="gd-back" type="button" data-gd-back>‹ Groups</button>`}
@@ -8894,6 +8896,8 @@
8894
8896
  const id = String(b.getAttribute("data-reply-to") || "");
8895
8897
  if (!id) return;
8896
8898
  threadReplyTargets.set(threadStateKey, id);
8899
+ const liveBox = document.getElementById("thQrInput");
8900
+ if (liveBox === document.activeElement) liveBox.blur();
8897
8901
  renderThreadDetail();
8898
8902
  requestAnimationFrame(() => {
8899
8903
  const box = document.getElementById("thQrInput");
@@ -8905,6 +8909,8 @@
8905
8909
  b.addEventListener("click", (e) => {
8906
8910
  e.stopPropagation();
8907
8911
  threadReplyTargets.delete(threadStateKey);
8912
+ const liveBox = document.getElementById("thQrInput");
8913
+ if (liveBox === document.activeElement) liveBox.blur();
8908
8914
  renderThreadDetail();
8909
8915
  requestAnimationFrame(() => document.getElementById("thQrInput")?.focus());
8910
8916
  });
@@ -9246,7 +9252,7 @@
9246
9252
  const surface = info.reopenSurface || "the Relay icon";
9247
9253
  return `
9248
9254
  <div class="sv-quiet-section" id="quietPrefs" data-stop="1">
9249
- <div class="td-label">Notifications</div>
9255
+ <div class="sv-quiet-title">Notifications</div>
9250
9256
  <div class="sv-quiet-list">
9251
9257
  <div class="sv-quiet-row">
9252
9258
  <span class="sv-quiet-copy">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "relay-companion",
3
- "version": "0.1.261",
3
+ "version": "0.1.263",
4
4
  "description": "Companion CLI for Relay (sendrelays.com): pairs this machine with your Relay account so coding agents like Claude Code and Codex can send and receive Relay messages.",
5
5
  "homepage": "https://sendrelays.com",
6
6
  "repository": {