📦 Release v2.2.1
This release was automatically published from PR [#15302].
Changes
See PR description: https://github.com/lobehub/lobehub/pull/15302
Commit Message
🚀 LobeHub Release (20260528)
Release Date: May 28, 2026
Since v2.2.0: 220 merged PRs · 15 contributors
This cycle brings heterogeneous "platform agents" you can dispatch to local or remote devices, a rebuilt onboarding flow, document-centric chat, and a unified model-runtime error model — with new DeepSeek V4 and Gemini 3.5 Flash support along the way.
✨ Highlights
- More Hetero Agents (OpenClaw / Hermes) — Create heterogeneous agents and dispatch them to local or remote devices through the device gateway, with an execution-target switcher in the composer and persistent CLI sessions. (#15065, [#15179], [#15022])
- iMessage on Desktop — New iMessage setup and bridge on desktop, plus bot attachments across every platform. (#15228, [#15227], [#15029])
- Skills in the Composer — Drag skill chips into chat, trigger installed skills from the slash menu mid-line, and surface project-level skills in the homogeneous agent runtime. (#15095, [#15061], [#15110])
- New Models — DeepSeek V4 Flash/Pro and Gemini 3.5 Flash across providers, with thinking params for structured output and chat cost estimates. (#15031, [#15001], [#15051], [#14876])
- Agent Runtime Observability — OpenTelemetry GenAI semantic conventions plus per-call generation tracing. (#15123, [#15124])
🤖 Agents & Heterogeneous Runtime
- Platform agent creation — OpenClaw/Hermes creation UI, device guard, and remote dispatch backend. (#15065)
- Execution-target switcher — Pick local vs remote execution directly in the composer; device-selection UX with actionable guidance. (#15179, [#15111])
- CLI hetero dispatch — OpenClaw/Hermes dispatch with persistent sessions and a notify protocol. (#15022)
- Gateway snapshot as source of truth — Consume the gateway
uiMessagessnapshot at step boundaries to keep chat state consistent. (#15153, [#15152]) - Client sub-agent as a normal tool call — Simplifies the sub-agent execution path. (#15281)
- Hermes agent chain — Implements the Hermes agent chain logic. (#15189)
- Device registry — TRPC endpoints to register, list, update, and remove devices. (#15299)
- Desktop device routing — Route gateway agent runs through
lh hetero exec; restoreuserIdin gateway dispatch and gate local-system by execution target. (#15132, [#15232]) - Agent signals — Anchor agent-signal receipts to messages and isolate memory-agent messages into a child thread. (#14969, [#14921])
🚀 Onboarding
- Simplified first screen — Defer topic creation to first send. (#15090)
- Market Agent Picker — Added as a classic onboarding step, with template prefetch. (#14980, [#15041])
- Welcome guidance — Show agent welcome guidance on first run. (#15098)
- Mobile — Adapt agent onboarding UI and restore Classic-step padding on mobile. (#15019, [#15032])
- Discovery — Streamline discovery to a single profession question. (#14987)
- Analytics — Track onboarding step events and create-agent modal source. (#15133, [#15028])
📄 Documents, Pages & Knowledge
- Thread chat in preview — Embed thread chat in the document preview portal. (#15216)
- Non-markdown rendering — Render non-markdown docs as a read-only highlight. (#15272)
- Multi-select — Multi-select delete in the document tree. (#15125)
- Page-agent streaming — Preview
initPagestreaming arguments. (#15039) - Per-agent topics — Per-agent topic management page. (#15207)
- Server-side category — Derive document category server-side and drop frontend predicates. (#15076)
🧩 Skills & Tools
- Drag skill chips — Drag skills into chat input and register agent-document skills. (#15095)
- Slash menu — Installed skills appear in the slash menu with a mid-line trigger. (#15061)
- Project skills — Recognize project-level skills in the homogeneous agent runtime and surface them regardless of active device. (#15110, [#15177])
- VFS archiving — Archive oversized tool results to VFS instead of truncating. (#15074)
- @localFile mentions — Drag folders into chat input as
@localFilementions on desktop. (#15071)
🧠 Model Runtime & Providers
- Error spec registry — Unify error codes into a spec + pattern registry, split
ProviderBizErrorinto finer codes, classify Cloud-only codes via a tier digit, and addDatabasePersistError. (#15262, [#15286], [#15278], [#15279]) - New models — DeepSeek V4 Flash/Pro (opencode-go) and Gemini 3.5 Flash; DeepSeek V4 Pro on SiliconCloud. (#15031, [#15001], [#15017], [#15267])
- Structured output — Thinking params for structured output, Bedrock structured generation, and DeepSeek
generateObjecttool choice. (#15051, [#15174], [#15054]) - Cost — Chat cost estimate support; preserve usage cost in custom streams. (#14876, [#15218])
💬 Chat & User Experience
- Follow-up chips — Extend follow-up chip suggestions to general chat with scene-specific model config. (#15101, [#14797])
- Input drafts — Persist unsent input drafts across tab switches and prevent repeated draft restore. (#14992, [#15024])
- Command menu — Order topic/message search by recency and promote inline type filters. (#15094, [#14986])
- Zoom HUD — Show a zoom-level HUD on Cmd +/− and Cmd 0. (#15294)
- Copy — Unescape markdown escapes when copying user messages. (#15253)
🖥️ Desktop
- App Nap fix — Prevent App Nap from dropping the gateway WebSocket during display sleep. (#14994)
- File preview — Preview
.cjs/.mjs/no-extension files instead of binary fallback and expand~when opening local files. (#15168, [#15284]) - Cross-platform settings — Open settings via main-window navigation on Windows/Linux and restore the route after an update restart. (#15036, [#14922])
- Token refresh — Prevent frequent logout from token-refresh retries. (#14928)
📊 Observability
- OTel GenAI — Instrument Agent Runtime with OpenTelemetry GenAI semantic conventions. (#15123)
- Generation tracing — Per-call
llm_generation_tracingwith a pre-allocated tracingId and recordFeedback router. (#15124, [#15146]) - Error classification — Persist
ERROR_CODE_SPECSclassification on operation errors. (#15273)
🗃️ Database Migrations
- Batch migrations — Topic usage stats, push tokens,
tasks.editor_data, and document shares. (#15280) - Tracing & eval tables — Add
llm_generation_tracingand agent eval experiment tables. (#15126)
Self-hosted operators should run the database migration (
pnpm db:migrate, or restart with auto-migrate enabled) after upgrading. The changes are additive and backwards-compatible.
🔒 Security & Reliability
- Security: Remove the
getPlaintextCredtool to prevent plaintext credential exposure. (#14998) - Security: Prompt account selection for Google OAuth and add
prompt=consentto the OIDC authorization URL to fix missing refresh tokens. (#15234, [#15010]) - Reliability: Preserve streamed content across a mid-stream cancel. (#15173)
- Reliability: Bound the Redis command timeout and configure the Anthropic client timeout. (#15091, [#15042])
- Reliability: Prevent infinite recursion in the assistant chain. (#15288)
👥 Contributors
Huge thanks to 15 contributors who shipped 220 merged PRs this cycle.
@AnotiaWang · @sxjeru · @algojogacor · @hardy-one · @arvinxx · @Innei · @tjx666 · @LiJian · @AmAzing129 · @Rdmclin2 · @Neko · @cy948 · @CanisMinor · @sudongyuer · @rivertwilight
Plus @lobehubbot and renovate[bot] for maintenance.
Full Changelog: v2.2.0...release/weekly-20260528