Files
claudemesh/.artifacts/specs/2026-04-15-claude-code-rich-channel-ui-request.md
Alejandro Gutiérrez 45d85f5eaa
Some checks failed
CI / Lint (push) Has been cancelled
CI / Typecheck (push) Has been cancelled
CI / Broker tests (Postgres) (push) Has been cancelled
CI / Docker build (linux/amd64) (push) Has been cancelled
chore: wrap up the gap-closing session
- info/inbox commands → unified render.ts
- install route: drop in-memory counter, rely on PostHog + structured logs
- docs: roadmap, CLAUDE.md reflect alpha.31 state
- tests workflow now also builds + smoke-tests the CLI bundle
- homebrew tap bootstrap kit in packaging/homebrew-tap-bootstrap/
  (README + copy of the formula template for dropping into the tap repo)
- upstream Claude Code issue draft for rich <channel> UI

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 08:53:59 +01:00

72 lines
2.2 KiB
Markdown

# Feature request draft: rich `<channel>` notification UI
**Target:** `anthropics/claude-code` GitHub issues / feedback channel.
**Drafted:** 2026-04-15.
Paste the section below once the issue template is ready. Adjust tone
to match Claude Code's issue style.
---
### Title
Rich UI for `notifications/claude/channel` messages (first-class chat, not just reminders)
### Body
**Summary**
MCP servers can emit `notifications/claude/channel` notifications which
Claude Code renders inside the current turn as a `<channel>` reminder.
For MCP servers that are conversational in nature (peer messaging,
collaborative sessions, delegated agents), rendering these inline as
plain-text reminders misses the UX affordances users expect from chat:
- sender avatar / identity
- timestamp
- priority badge (urgent / normal / low)
- expandable quote from the original thread
- optional inline reply action that calls a specific MCP tool
**Concrete use case**
[claudemesh](https://claudemesh.com) is a peer mesh for Claude Code
sessions. When a peer sends a message it arrives as
`notifications/claude/channel` with structured metadata in `meta`:
```json
{
"method": "notifications/claude/channel",
"params": {
"content": "alice: can you rebase main before deploy?",
"meta": {
"from_id": "<ed25519 hex>",
"from_name": "alice",
"priority": "now",
"sent_at": "2026-04-15T00:00:00Z",
"mesh_slug": "team-platform",
"kind": "direct"
}
}
}
```
Today this renders as a `<channel>` text block — useful, but the user
can't tell at a glance that it's from another human.
**What we'd like**
A hint on the notification (e.g. `meta.display: "chat"`) that lets
Claude Code render it as a chat bubble with the `from_name` as the
speaker, priority visualised, and an optional "Reply" action bound to
a declared MCP tool (`reply_tool_name`).
**Why users would benefit beyond claudemesh**
- Delegated agent frameworks can render sub-agent responses as chat
- Live-pairing MCP servers get a proper UI without inventing their own
- The existing `<channel>` fallback means older clients still see
the same text — additive, not breaking
**Willing to contribute a PR** if the feature is on-roadmap.