summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/daemon.py
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-23 17:31:06 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-23 17:31:06 +0200
commitd30e95b2ce1ffe9dc4655855406f2784b5f7af34 (patch)
tree91d86ffd59eb3593a76139ab264e1eb5da1ae687 /packages/meshbay-node/src/meshbay_node/daemon.py
parent339cb427f886a0177014126bb684335837eff067 (diff)
downloadmeshbay-d30e95b2ce1ffe9dc4655855406f2784b5f7af34.tar.gz
feat(node): invitation links — a code bound to no account until redeemed
New invite kind "link": member of one group, once, never operator, not spendable by an active member, capped at 20 per group, cancellable by handle. Signed ops invite_link_create / invite_cancel, loopback routes, and the known-device join path now accepts a link code. Adds the plan, docs/invite-links.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/daemon.py')
-rw-r--r--packages/meshbay-node/src/meshbay_node/daemon.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/daemon.py b/packages/meshbay-node/src/meshbay_node/daemon.py
index c16e49f..34d186a 100644
--- a/packages/meshbay-node/src/meshbay_node/daemon.py
+++ b/packages/meshbay-node/src/meshbay_node/daemon.py
@@ -2350,7 +2350,11 @@ def main() -> None:
if invites:
print()
for i in invites:
- print(f"pending invite user {i['user_id'][:12]} "
+ # A link names nobody until it is used, so its handle is what
+ # identifies it — and what `cancel` takes.
+ who = (f"link {i['invite_id']}" if i.get("kind") == "link"
+ else f"user {i['user_id'][:12]}")
+ print(f"pending invite {who} "
f"group {(i['group_id'] or 'node-wide')[:8]} "
f"expires {i['expires_at']}")
return