claudemesh-cli 1.34.6 → 1.34.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudemesh-cli",
3
- "version": "1.34.6",
3
+ "version": "1.34.8",
4
4
  "description": "Peer mesh for Claude Code sessions — CLI + MCP server.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -381,7 +381,15 @@ claudemesh message send <p> "..." --priority low # pull-only
381
381
  claudemesh inbox # all attached meshes, last 100
382
382
  claudemesh inbox --mesh <slug> # scoped to one mesh
383
383
  claudemesh inbox --mesh <slug> --limit 20 # custom cap
384
- claudemesh inbox --json # full row (sender_pubkey, mesh, body, received_at, …)
384
+ claudemesh inbox --json # full row (sender_pubkey, mesh, body, received_at, seen_at, …)
385
+ claudemesh inbox --unread # 1.34.8+ only rows whose seen_at IS NULL
386
+
387
+ # inbox flush + delete — 1.34.7+
388
+ claudemesh inbox flush --mesh <slug> # delete all rows on one mesh
389
+ claudemesh inbox flush --before <iso-timestamp> # delete rows older than timestamp
390
+ claudemesh inbox flush --all # delete every row on every mesh (required guard)
391
+ claudemesh inbox delete <id> # delete one inbox row by id (alias: rm)
392
+ claudemesh inbox flush --mesh <slug> --json # JSON: { ok: true, removed: N }
385
393
 
386
394
  # delivery status (alias: claudemesh msg-status <id>)
387
395
  claudemesh message status <message-id>
@@ -390,6 +398,12 @@ claudemesh message status <message-id> --json
390
398
 
391
399
  **Inbox source (1.34.0+):** `claudemesh inbox` queries the daemon's persistent `~/.claudemesh/daemon/inbox.db` over IPC — it is NOT a fresh broker-WS buffer drain. Rows survive daemon restarts. Sender attribution is the actual session pubkey of the launched session that originated the send (NOT the stable member pubkey of the sender's daemon), so two sibling sessions of the same human appear as distinct rows.
392
400
 
401
+ **Read-state (1.34.8+):** every inbox row carries a `seen_at` timestamp. `null` = never surfaced; an ISO string = first surfaced at that moment. The flag flips automatically when (a) the row is returned by an interactive `claudemesh inbox` listing, or (b) the MCP server emits a live `<channel>` reminder for it. The launch welcome push uses `unread_only=true` to surface only rows the user hasn't seen — so a session relaunched a day later sees what it actually missed, not the same 24h batch every time. Use `claudemesh inbox --unread` to get the same filter from the CLI.
402
+
403
+ **Self-echo guard (1.34.8+):** broker fan-out paths sometimes mirror an outbound DM back to the originating session-WS. The daemon now drops those at the WS boundary (matching on `senderPubkey === own.session_pubkey`), so the sender no longer sees their own `claudemesh send` arrive as a `← claudemesh: <self>: ...` channel push immediately after dispatching it.
404
+
405
+ **Inbox TTL (1.34.8+):** the daemon runs an hourly prune that deletes rows older than 30 days. Without this the inbox grew unbounded; now it self-trims while preserving "I went on holiday and want to see what I missed" recovery for a generous window. No CLI knob — it's a built-in retention policy. To override, manually `claudemesh inbox flush --before <iso>`.
406
+
393
407
  `send` JSON output: `{"ok": true, "messageId": "...", "target": "..."}`. Errors: `{"ok": false, "error": "..."}`.
394
408
 
395
409
  ### `state` — shared per-mesh key-value store