Skip to content

2026.07.01

Latest

Choose a tag to compare

@MatthewSuttles MatthewSuttles released this 10 Jul 23:35
49e0c74

The backlog release — six new messaging channels (13 total), a document-ingestion knowledge base, outbound webhooks with lifecycle events, budget enforcement, Composio/Nango app connectors, and a wave of management UIs.

Features

Messaging channels (6 new → 13 total)

  • #376 Microsoft Teams — Bot Framework adapter; inbound Activity webhook at /webhooks/msteams, AAD client-credentials token for outbound replies (reply target encodes serviceUrl|conversationId).
  • #377 iMessage (BlueBubbles) — iMessage backed by a self-hosted BlueBubbles server on a Mac; new-message webhooks in, REST message/text out, replying to the chat GUID.
  • #375 Google Chat — space-scoped adapter; service-account JWT-bearer assertion exchanged for an OAuth2 token, outbound POST /v1/<space>/messages.
  • #374 Feishu / Lark — event-subscription v2 with the url_verification handshake and im.message.receive_v1 text events; Verification-Token check.
  • #372 Mattermost — inbound via outgoing webhook, outbound via REST v4 POST /api/v4/posts with a bot token; secure-compared outgoing-webhook token.
  • #373 LINE — Messaging API adapter; X-Line-Signature HMAC verification, audio messages downloaded and transcribed via STT.
  • #391 Edit/delete message supportedit_message/delete_message on the base adapter, implemented for Discord and Slack; records platform_message_id on send.

Knowledge & research

  • #378 Document-ingestion knowledge base (RAG)KnowledgeDocument + KnowledgeChunk models, KnowledgeIngestionJob (extract → chunk → embed), agent-scoped vector retrieval denormalized like MemoryEntry.
  • #383 Knowledge Base UI — upload files or paste text, ingestion status + chunk counts; wires the already-shipped model, job, and search tool to a real UI (agents were searching an empty index).
  • #385 Research sessions browser/research index + report view for DeepResearchJob output, rendered with a thin client-side markdown Stimulus controller.
  • #384 Per-agent memory UI — browse/search/delete an agent's memories at /agents/:slug/memories, replacing the hardcoded latest-20 list on the agent page.

Outbound webhooks

  • #379 Signed event deliveryWebhookEndpoint model (https-only URL, encrypted HMAC secret, subscribed event_types, agent/team/global scoping) + WebhookDeliveryJob, reusing the inbound HMAC scheme.
  • #390 Endpoints management UI — CRUD at /webhooks_out; secret generated server-side and shown exactly once on create.
  • #398 Lifecycle events — emits session.started/session.completed, agent.created/agent.deleted, and heartbeat.completed.

Budgets & analytics

  • #386 Budget enforcement in LLM executionBudgets::Check runs before every dispatch (ChatStreamJob, TeamChatJob, Sessions::Chat); over-budget agents are blocked with a visible error, spend is recorded on each completed call. Agents with no budget stay unlimited.
  • #397 Cost dashboard trends + budget-threshold webhooks?days=7|30|90 range filter, daily cost/token bar chart, per-agent error-rate column (no N+1), and budget-threshold webhook events.

Integrations & tooling

  • #411 Composio & Nango app connectors — new composio tool (v3 REST: list_toolkits/list_tools/list_connections/execute + raw request) and nango tool (proxy + list_connections/list_integrations); vault-backed credential cards on the Integrations page. Nango injects OAuth tokens so agents never handle credentials.
  • #382 Tool requirements moved to DB — new requirements jsonb column on tools, editable from the tool form without a deploy; falls back to the constant for unseeded rows.

Admin UIs & navigation

  • #393 Unified approval inbox/approvals lists all three human-in-the-loop flows (ApprovalRequests, vault write confirmations, skill-update proposals) with Approve/Reject.
  • #392 API token management — mint/list/revoke at /api_tokens, plaintext shown exactly once.
  • #389 Session timeline/replay/sessions/:id/timeline merges transcript messages, tool executions, and LLM calls into one chronological, expandable view with session totals.
  • #395 Sidebar navigation — Research, API Tokens, Webhooks, Knowledge, and Approvals links; Approvals carries a live pending-count badge.

Fixes

  • #410 XSS — replace regex sanitizer with DOMPurify (security) — all four markdown entry points now sanitize marked.parse() output with DOMPurify. The old regex missed javascript: URLs and <svg/onload=…>-style handlers, and rendered markdown can carry content forwarded from external channels and knowledge docs.
  • #409 WhatsApp webhook secret mismatchverify_webhook gated on app_secret but the HMAC used webhook_secret, so legitimate webhooks were rejected in one config and verification was bypassed in another; also removed a dead connection-refused rescue.
  • #381 Signal webhook token verificationverify_webhook was a stub that always returned true; now secure-compares X-Signal-Webhook-Token against the channel secret (permissive only when unset).
  • #371 Auto-title saved the model's identity reply — the Haiku title model treated the transcript as a turn to answer, saving "I'm Claude, an AI assistant…" verbatim as the title; fixed with a dedicated titling path.
  • #380 Repair test suite (55 failures on main) — fixed 2 real bugs (Ollama context-window shadowing the tag-specific limits, async HeartbeatJob) plus stale specs that were blocking every PR from going green.

CI / Chores

  • #388 Specs for the Discord + WhatsApp adapters (51 examples)
  • #387 README channel count → 13, drop unused DevicePairing, swarm-import placeholder warning
  • #359 Docs: clarify Signal is an inbound inbox, not a self-text channel
  • Dependency bumps#354 anthropic 1.36 → 1.43, #353 image_processing 1.14 → 2.0.1, #352 bootsnap 1.23 → 1.24.5, #338/#400 oj 3.17.0 → 3.17.3, #337/#402 selenium-webdriver 4.43 → 4.45, #336/#399 faraday 2.14.1 → 2.14.3, #335/#403 neighbor 1.0.0 → 1.2.0, #333 devise 5.0.3 → 5.0.4, #332 sidekiq-cron 2.3.1 → 2.4.0, #327/#401 puma 8.0.0 → 8.0.2, #408 concurrent-ruby 1.3.6 → 1.3.7, #407 thruster 0.1.20 → 0.1.22, #406 kamal 2.11 → 2.12, #361 codecov-action 6 → 7, #362 actions/checkout 6 → 7

Full Changelog: 2026.06.03-rc...2026.07.01