-
v0.4.0-gitea.4 Stable
released this
2026-05-21 22:10:18 +00:00 | 41 commits to main since this releaseLayer 3 of three-layer activity-feed enrichment
- defensive spread of peer_name / peer_role / agent_card_url / user_name / user_email on
notifications/claude/channelmeta when supplied by Layer 1 platform endpoint or future CP IAM - new
extractAttachmentshelper surfaces file/image/audio parts fromrequest_body.params.message.parts[]so attachments arrive even pre-Layer-1 - new pure
buildChannelMetahelper (mirrors theformatRemovedWorkspaceErrorpattern) — unit-testable without an MCP transport
Multi-platform workspace routing (PR#15)
- new
targets.tsresolver; canonicalMOLECULE_WORKSPACES_JSON=[{id, token, platform_url}]shape - back-compat with legacy
MOLECULE_PLATFORM_URL+ comma-sep IDs/tokens - aligned
MOLECULE_PLATFORM_URLSarray also supported - one plugin instance can now watch multiple platforms (hongming + agents-team simultaneously)
Layer cascade
- L1:
molecule-core#1654—?include=peer_infoprojection on/workspaces/{id}/activity - L2:
molecule-ai-workspace-runtime#37— base-MCP defensive read + attachments forwarding - L3: this release
- canvas-user identity capture deferred to
internal#637(CP IAM scope per CTO)
Tests
- 49 + extract-attachments + build-channel-meta + multi-platform targets tests pass
- See PR#13 + PR#15 for full review history
Downloads
- defensive spread of peer_name / peer_role / agent_card_url / user_name / user_email on
-
v0.4.0-gitea.3 Stable
released this
2026-05-07 18:02:22 +00:00 | 51 commits to main since this releasev0.4.0-gitea.3 — channel-capability + notify-echo filter + README accuracy
Reno-Stars (airenostars) verified install end-to-end against v0.4.0-gitea.2 ONLY after applying a local patch. This release ships the same patch upstream so fresh self-hosters get a working install out-of-the-box.
P0 (CRITICAL) — declare experimental.claude/channel capability
Without this declaration on the Server constructor, the Claude Code MCP host treats the server as tool-only and silently drops every
notifications/claude/channelevent. Symptom: poll loop runs cleanly, cursor advances, stderr says "delivered", message never reaches the conversation.P1 — filter outbound method=notify rows
The activity feed under
?type=a2a_receiveALSO returns the agent's own outbound /notify calls (recorded with method='notify' and source_id=null on the same workspace_id). Pre-fix, every reply this plugin sent echoed back as a fake user turn one poll later. Now filtered at the per-row layer.P2 — README accuracy
- Removed broken
claude --channels plugin:…one-liner instruction (silently no-ops on Claude Code 2.1.129) - Documented
allowedChannelPluginsschema (array of{plugin, marketplace}OBJECTS, not strings) - Documented
allowedChannelPluginsLOCATION (managed-settings.json — NOT~/.claude/settings.json)
Tests
27 pass / 0 fail (was 18). New file
channel-capabilities-and-filter.test.ts(9 cases) pins both regressions via small exported surfaces (SERVER_CAPABILITIES,shouldEmitActivity).Migration
Drop-in upgrade from v0.4.0-gitea.2. No
.envchanges needed. After upgrading:- Restart Claude Code
- Verify
allowedChannelPluginsis in/Library/Application Support/ClaudeCode/managed-settings.json(macOS) — NOT~/.claude/settings.json - Confirm the entry is an object:
[{ "plugin": "molecule", "marketplace": "molecule-channel" }]
Merge commit:
f92147aDownloads
- Removed broken