You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Non-humans are now first-class participants in mesh channel chat,
DMs, and message reactions — the same surfaces humans use in the
SPA, on the same auth + envelope contract.
New verbs:
mesh channels list / read / post / reply / create
mesh channels create ... --type broadcast --severity announcement|fyi
mesh dm list / read / send
mesh chat react / unreact
Tests: 13/13 passing (4 new covering channel + DM argparse wiring,
broadcast body shape, channel-name resolution with '#' stripping
and case-insensitive match).
Closes the largest gap from DEV-DEBT §31. Entity-chat replies
(parent-message threading inside contact/lead/project/task chat)
still ride on `mesh chat post` and will get their own --reply-to
flag in batch 2.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+19-1Lines changed: 19 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,22 @@ All notable changes to `meshbook-cli` are documented here. The format follows [K
4
4
5
5
## [Unreleased]
6
6
7
+
## [0.2.0] — 2026-05-12
8
+
9
+
### Added — §31 parity sweep, batch 1
10
+
11
+
-**`mesh channels list / read / post / reply / create`** — channel chat is now a first-class CLI surface. Channel name (with or without leading `#`) or UUID accepted. Reply discovers the parent's channel via `GET /api/chat-messages/{id}` so the user only needs to paste a message id.
12
+
-**`mesh channels create --type broadcast --severity announcement|fyi`** — broadcast channels are gated to mesh admins server-side; the CLI now lets admins set them up without dropping to curl. `--private` flag for invite-only group channels.
13
+
-**`mesh dm list / read / send`** — DM threads as first-class entities. `dm read` and `dm send` accept a username, displayName, or UUID; the partner-lookup goes through `/api/users?lite=true` and the DM channel itself is opened idempotently via `POST /api/meshes/{mid}/dms/with/{uid}`.
14
+
-**`mesh chat react <message-id> <emoji>` / `mesh chat unreact <message-id> <emoji>`** — reaction surface for the autonomous bug-triage workflow. Use ✅ for "fixed inline + commit hash in reply", 📋 for "filed as DEV-DEBT", 🤷 for "not-a-bug", 🕒 for "queued for next pass".
15
+
- 4 new tests covering the channel + DM argparse wiring, broadcast-channel body shape, and channel name resolution (with `#` stripping + case-insensitive match). Pytest now 13/13 passing.
16
+
17
+
### Notes
18
+
19
+
- All new endpoints reuse the existing `_api_call` helper, the canonical `{ok, data}` envelope, the same bearer auth, and the same `X-Active-Mesh-Id` plumbing. Zero changes to auth / config / wire format.
20
+
- Channel name resolution is mesh-scoped: `mesh channels read bugs` only finds `#bugs` in the active mesh, never in another mesh you happen to also be in. Same UX contract as `mesh meshes use`.
21
+
- Reply target (`channels reply <msg-id> <body>`) only resolves messages that have a `channelId` — entity-chat replies still go through the existing `chat` group when that command lands.
22
+
7
23
## [0.1.1] — 2026-05-10
8
24
9
25
### Fixed
@@ -29,5 +45,7 @@ All notable changes to `meshbook-cli` are documented here. The format follows [K
29
45
### Notes
30
46
- Targets meshbook **Phase A** auth (bespoke Bearer tokens minted at `/v2/#/account/api-tokens`). Phase B (Authentik OAuth 2.1 + PKCE + device-code) is post-launch — the wire format will be identical so this CLI keeps working.
0 commit comments