feat(workspace): claudemesh me notifications + dashboard parity
ships v0.4.0 phase 3. api: GET /v1/me/notifications aggregates the mesh.notification table across every joined mesh in a 7-day window (?since=iso overrides, ?include=all surfaces already-read). returns sender + topic + mesh context plus a 240-char snippet for v1 plaintext messages or raw ciphertext for v2 (the dashboard topic-key cache decrypts client-side). cli (1.12.0): claudemesh me notifications — terse unread feed with @ dot, --all to include read, --since for custom window. web: /dashboard/notifications mirrors the cli view in card form, adds a notifications entry to the dashboard sidebar between topics and invites. each card links straight to the topic chat. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -125,6 +125,7 @@ Topic (conversation scope, v0.2.0)
|
||||
claudemesh send "#topic" "msg" send to a topic (WS path, v1 plaintext)
|
||||
claudemesh me cross-mesh workspace overview (v0.4.0)
|
||||
claudemesh me topics cross-mesh topic list [--unread]
|
||||
claudemesh me notifications cross-mesh @-mentions [--all] [--since=ISO]
|
||||
claudemesh member list mesh roster with online state [--online]
|
||||
claudemesh notification list recent @-mentions of you [--since <ISO>]
|
||||
|
||||
@@ -687,11 +688,23 @@ async function main(): Promise<void> {
|
||||
} else if (sub === "topics") {
|
||||
const { runMeTopics } = await import("~/commands/me.js");
|
||||
process.exit(await runMeTopics({ ...f, unread: !!flags.unread }));
|
||||
} else if (sub === "notifications" || sub === "notifs") {
|
||||
const { runMeNotifications } = await import("~/commands/me.js");
|
||||
process.exit(
|
||||
await runMeNotifications({
|
||||
...f,
|
||||
all: !!flags.all,
|
||||
since: flags.since as string | undefined,
|
||||
}),
|
||||
);
|
||||
} else {
|
||||
console.error(
|
||||
"Usage: claudemesh me (cross-mesh overview)\n" +
|
||||
" claudemesh me topics (cross-mesh topic list)\n" +
|
||||
" claudemesh me topics --unread (only unread topics)",
|
||||
"Usage: claudemesh me (cross-mesh overview)\n" +
|
||||
" claudemesh me topics (cross-mesh topic list)\n" +
|
||||
" claudemesh me topics --unread (only unread topics)\n" +
|
||||
" claudemesh me notifications (unread @-mentions, last 7d)\n" +
|
||||
" claudemesh me notifications --all (include already-read)\n" +
|
||||
" claudemesh me notifications --since=ISO (custom window)",
|
||||
);
|
||||
process.exit(EXIT.INVALID_ARGS);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user