From ab08be04a5b07f44dc26d1a251063faec0c78d71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Guti=C3=A9rrez?= <35082514+alezmad@users.noreply.github.com> Date: Mon, 6 Apr 2026 18:07:08 +0100 Subject: [PATCH] =?UTF-8?q?feat(cli):=20v0.5.8=20=E2=80=94=20welcome=20not?= =?UTF-8?q?ification=20on=20connect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/cli/package.json | 2 +- apps/cli/src/mcp/server.ts | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/apps/cli/package.json b/apps/cli/package.json index 659e833..bad760d 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,6 +1,6 @@ { "name": "claudemesh-cli", - "version": "0.5.7", + "version": "0.5.8", "description": "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.", "keywords": [ "claude-code", diff --git a/apps/cli/src/mcp/server.ts b/apps/cli/src/mcp/server.ts index 60c3a05..65354de 100644 --- a/apps/cli/src/mcp/server.ts +++ b/apps/cli/src/mcp/server.ts @@ -859,6 +859,27 @@ Your message mode is "${messageMode}". }); } + // Welcome notification: give Claude immediate context on connect. + // Triggers Claude to call mesh_info/list_peers without user input. + setTimeout(async () => { + const client = allClients()[0]; + if (!client || client.status !== "open") return; + try { + const peers = await client.listPeers(); + const peerNames = peers + .filter(p => p.displayName !== myName) + .map(p => p.displayName) + .join(", ") || "none"; + await server.notification({ + method: "notifications/claude/channel", + params: { + content: `[system] Connected as ${myName} to mesh ${client.meshSlug}. ${peers.length} peer(s) online: ${peerNames}. Call mesh_info for full details or set_summary to announce yourself.`, + meta: { kind: "welcome", mesh_slug: client.meshSlug }, + }, + }); + } catch { /* best effort */ } + }, 3_000); // 3s delay: let WS connect + hello_ack complete first + // Event loop keepalive: Node.js stdout to a pipe is buffered. Without // periodic event loop activity, stdout.write() from WS callbacks may not // flush until the next I/O event. This 1s interval keeps the event loop