feat(plugin): per-session mailbox identity + mailbox-update command
The hook now derives a unique mailbox name from the session_id supplied on hook stdin, so two parallel Claude Code sessions in the same project get distinct mailboxes (e.g. `claude-a8b3c1d2`, `claude-d4e5f6a7`) instead of colliding on a shared env value. An optional CLAUDE_MAILBOX_NAME base prefix flavors the names as `<base>-<sid>`. Adds: - `claude-mailbox session-announce` subcommand for the new SessionStart hook, which prints the current session's mailbox name to context - `/claude-mailbox:mailbox-update` slash command for `npm update` + daemon restart - stdin parsing helpers (parseHookStdin, deriveSessionName) with unit tests; the doctor no longer needs a mandatory name prompt
This commit is contained in:
13
README.md
13
README.md
@@ -106,7 +106,7 @@ The .NET and Node builds are wire-compatible (same port, same `X-Mailbox` header
|
||||
|
||||
## Use from Claude Code (plugin)
|
||||
|
||||
Easiest path — everything happens inside Claude Code:
|
||||
Easiest path — three prompts, all inside Claude Code:
|
||||
|
||||
```
|
||||
/plugin marketplace add https://git.kuns.dev/releases/ClaudeMailbox
|
||||
@@ -114,11 +114,16 @@ Easiest path — everything happens inside Claude Code:
|
||||
/claude-mailbox:mailbox-doctor
|
||||
```
|
||||
|
||||
The doctor command checks for the `claude-mailbox` binary, installs it if missing (via npm), runs `install-autostart` if the daemon isn't registered, prompts you for a mailbox name and writes it to `.claude/settings.json`, and finishes with a self → self smoke test.
|
||||
The doctor command auto-installs the daemon binary via npm (asks first), registers autostart, optionally takes a base prefix (e.g. `backend`), and runs a smoke test. Subsequent slash commands:
|
||||
|
||||
After that, unread messages appear in context before every prompt. If the daemon is unreachable later, the hook emits a one-line setup hint instead of staying silent — missing setup is loud, not invisible.
|
||||
- `/claude-mailbox:mailbox-status` — read-only health check
|
||||
- `/claude-mailbox:mailbox-update` — pull the latest daemon version and restart
|
||||
|
||||
See [`plugin/README.md`](./plugin/README.md) for details, including why each Claude session needs its own mailbox name.
|
||||
**Each Claude session gets its own mailbox identity** derived from the session's UUID — `claude-a8b3c1d2` by default, or `<base>-a8b3c1d2` if you set a prefix. Parallel sessions in the same project automatically get distinct names. The `SessionStart` hook announces the current session's name in context so Claude knows its own identity. Peers discover each other via `mcp__mailbox__list_mailboxes`.
|
||||
|
||||
If the daemon goes down later, the hook emits a one-line setup hint instead of staying silent.
|
||||
|
||||
See [`plugin/README.md`](./plugin/README.md) for the full walkthrough.
|
||||
|
||||
## Use from a Claude session
|
||||
|
||||
|
||||
Reference in New Issue
Block a user