You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
The group strip mints a new invite link every time instead of showing the room's live one #1019
The dock strip added for #998 (social-group-strip, plugins/social/client.js) mints an invite when Invite by link is clicked, but it never looks at the links that room already has. The Members card does the opposite: it reads room-invite first and shows the live links, and only the button mints a new one (#876/#878).
So leaving the group and coming back with nothing said yet (the strip is back, blank is still true) and clicking Invite by link again mints another ticket. Nothing breaks — #878 says a room may hold several live invites — but the list grows on every click, and a person who came back to copy the link they already sent has no way to see that link again: the strip shows only the one minted in this mount.
Reproduce: create a group, click Invite by link in the strip, copy the URL; enter another chat and come back to the group before sending anything; the strip is there again, and Invite by link mints a second URL instead of showing the first. GET room-invite still lists both.
Options, both one-place changes in GroupStrip:
on mount, read room-invite (the endpoint the Members card uses) and show the live link when there is one, minting only when there is none — the same shape as the card;
keep minting per click but render the links the room already has under the button, so the first one stays reachable.
Found while reviewing PR #1017 (non-blocking there: the accumulation is bounded by how often someone opens a brand-new group).
Triage at main db56b817: confirmed on the code, not only in the report.
plugins/social/client.js:2150GroupStrip keeps the link in component state (:2152useState(null)) and only mints — :2160 → host('room-invite-mint', ...). No room-invite read on mount, so returning to a still-blank group starts from null again and the button mints a second ticket.
The Members card does it the other way: :1144 reads host('room-invite'), :1150 re-reads on a poll, :1171/:1177 revoke by ticket. Two shapes for the same room, which is the inconsistency to remove.
Expected = option 1, the card's shape: on mount read room-invite, show the live link when the room already has one, and mint only when it has none (and when the button is clicked on a room that has none). Do not render a growing list of links — that keeps the "which one did I send?" problem. Option 2 is acceptable only if the list does not grow per click.
Acceptance:
Create a group → strip → Invite by link → copy; leave the chat and come back while still blank; the strip shows the same URL and GET room-invite count does not grow.
A room with no live link still mints on click (the fresh path must not regress).
An expired/withdrawn link is not shown as live; minting then produces a new one.
Knife: remove the mount read → case 1 goes red; keep the read but never mint → case 2 goes red.
No changelog.d/ fragment? It is a user-visible behaviour change (the link stays reachable) — add one fixed fragment. agent-ready, Owner: Dev4.
Activity
Birfy commentedon Oct 24, 2026
Written-by: Triage
Triage at main
db56b817: confirmed on the code, not only in the report.plugins/social/client.js:2150GroupStripkeeps the link in component state (:2152useState(null)) and only mints —:2160→host('room-invite-mint', ...). Noroom-inviteread on mount, so returning to a still-blank group starts fromnullagain and the button mints a second ticket.:1144readshost('room-invite'),:1150re-reads on a poll,:1171/:1177revoke by ticket. Two shapes for the same room, which is the inconsistency to remove.Expected = option 1, the card's shape: on mount read
room-invite, show the live link when the room already has one, and mint only when it has none (and when the button is clicked on a room that has none). Do not render a growing list of links — that keeps the "which one did I send?" problem. Option 2 is acceptable only if the list does not grow per click.Acceptance:
Invite by link→ copy; leave the chat and come back while stillblank; the strip shows the same URL andGET room-invitecount does not grow.No
changelog.d/fragment? It is a user-visible behaviour change (the link stays reachable) — add onefixedfragment.agent-ready,Owner: Dev4.Show the group strip the room's live link instead of minting another