🚀 release: 20260416#13895
Conversation
… of running When a task's status changes from `running` to another state (backlog/paused/completed/canceled), automatically cancel all associated running topics and interrupt their operations. This prevents 409 CONFLICT errors when users try to re-run a task after manually changing its status. Fixes LOBE-6719 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: bump lucide-react from ^0.577.0 to ^1.8.0 Breaking change: Github icon was removed from lucide-react v1.x (brand icons removed). Replaced with Github from @lobehub/icons in 5 affected files. * fix: use GithubIcon from @lobehub/ui/icons instead of @lobehub/icons
* ♻️ Restructure sidebar layout: extract Lobe AI entry, move New Agent button - Extract Lobe AI (InboxItem) from agent list to standalone top entry in sidebar body - Move "New Agent" button from header to below Lobe AI entry - Add "Create" to bottom menu items alongside Community and Resources - Filter hidden items in BottomMenu component Fixes LOBE-6938 https://claude.ai/code/session_01RtfXck3GUngoLAgP2yHArz * ✨ Add unified Recents section to home page - New TRPC router `recent.getAll` aggregating topics, documents, files, and tasks - New client service and SWR-based store integration for recents data - Unified Recents component on home page with type-based icons - Items sorted by updatedAt, limited to 10, mixed across all types Fixes LOBE-6938 https://claude.ai/code/session_01RtfXck3GUngoLAgP2yHArz * ⚡ Prefetch agent config on hover for faster page loads - Add usePrefetchAgent hook using SWR mutate to warm cache - Trigger prefetch on mouseEnter for sidebar agent items - Reduces or eliminates loading screen when navigating to agent pages Fixes LOBE-6938 https://claude.ai/code/session_01RtfXck3GUngoLAgP2yHArz * ✨ Redesign agent homepage with info, recent topics, and tasks - New AgentHome feature replacing the old AgentWelcome component - Agent info section: avatar, name, description, opening questions - Recent Topics: horizontal scrollable cards for agent-specific topics - Tasks section: list with status labels for agent-assigned tasks - Preserve ToolAuthAlert for tool authorization flows Fixes LOBE-6938 https://claude.ai/code/session_01RtfXck3GUngoLAgP2yHArz * fix: common misstakes in layout * chore: add fetch Recents cache * chore: add back createagents * chore: add back lobe ai * feat: add display count * feat: add create agent button * feat: add sidebar section order * chore: move divider * ✨ feat: show current page size in display items submenu Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * ✨ feat: add sidebar display management with customize sidebar modal - Add "Hide section" and "Customize sidebar" to Recents/Agents dropdown menus - Create CustomizeSidebarModal with eye toggle for section visibility - BottomMenu (Community/Resources) also manageable via modal - Show customize sidebar button in footer when all sections hidden - Add hiddenSidebarSections to store with localStorage persistence - Rename "Display Items" to "Show" in dropdown menus - Add 12px margin between accordion sections and bottom menu - Add i18n keys for en-US and zh-CN Fixes LOBE-6938 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * 💄 style: use SlidersHorizontal icon for customize sidebar Replace Settings2/PanelLeft icon with SlidersHorizontal to avoid confusion with the settings gear icon. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * 💄 style: refine sidebar customization UX - Move Settings entry from Footer to BottomMenu alongside Community/Resources - Add Settings to Customize sidebar modal with eye toggle - Allow hiding all sections (remove disabled constraint) - Move Customize sidebar button next to help button in Footer - Merge Agent dropdown: group Create items with Category items - Use SlidersHorizontal icon for Customize sidebar Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * ✨ feat: add recents item actions and "more" drawer - Add inline rename (same as Agent Topic) and delete to Recents items - Topic/document/file support rename + delete, task supports delete only - Add "more" button when items exceed pageSize, opens AllRecentsDrawer - AllRecentsDrawer shows all cached recents from store (up to 50) - Fetch max(pageSize, 50) items to support drawer without extra request Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * ✨ feat: add create agent/group modal with ChatInput and examples - Add CreateAgentModal using base-ui Modal with ChatInputProvider - Show suggestion examples (agent/group mode) in 2-column grid - Submit triggers sendAsAgent/sendAsGroup to auto-generate via Agent Builder - "Create Blank" button for skipping the prompt - Integrate modal into AgentModalProvider for shared state across sidebar - Wire up AddButton, NewAgentButton, and dropdown menus to open modal Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: optimitic update rename * chore: prefetch agent detail * feat: add recent topic meta data * feat: add recents search * ⚡ perf: optimize recents API with single UNION query and prefetch - Replace 3 separate DB queries with single UNION ALL query (RecentModel) - Add optimistic updates for rename and delete actions - Add hover prefetch for resources (usePrefetchResource) - Add hover prefetch for agent config on topic/task items - Change default pageSize to 5 for both Agents and Recents - Unify delete confirmation messages per item type Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: adjust settings page * chore: optimize side bar * feat: recents support right click * chore: add pin icon to Agents * chore: add custom side bar modal * chore: reserve rencent drawer status * feat: add prefetch route * feat: add LobeAI prefetch * fix: document and task rename and delete operation lost * fix: group route id * fix: lint error --------- Co-authored-by: Claude <noreply@anthropic.com>
…e IAP (#13413) feat(subscription): add cross-platform subscription i18n and mobile subscription router - Add crossPlatform.title/desc/manageOnMobile translations for 18 languages - Register mobileSubscriptionRouter in mobile tRPC router - Add mobileSubscription business router placeholder Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: layout sidebar en More * chore: update i18n files
* 🐛 fix(chat): refine workflow collapse headline * 🐛 fix(chat): use state machine for workflow headline * 🐛 fix(chat): backtrack workflow headline state * ♻️ refactor(chat): simplify workflow headline selector * 💄 style(chat): use lucide workflow collapse arrow * ♻️ refactor(chat): use accordion indicator layout * Move workflow duration text beside the title * Localize workflow tool display labels * Update Page workflow localization labels * fix: sort imports in toolDisplayNames.test.ts
* ✨ feat(chat-input): improve mention menu skill and tool icons - Add MentionItemIcon with SkillAvatar, McpIcon, and Avatar fallbacks - Strip placeholder avatars ending with _AVATAR - Tweak mention item icon frame (overflow, border-radius) Made-with: Cursor * 💄 fix(chat-input): use theme-aware mention skill fallback
* chore: remove unused variables * fix: add catch error * chore: use url for anthropic image * feat: add bot process warnings to context * feat: add thread context * fix: rename thread name when already has one * chore: update test cases * fix: warning sanitize * fix: threadName safe review
- Add `cancelIfRunning` to TaskTopicModel: atomically cancel only if topic is still running, preventing overwrite of concurrent completed/timeout transitions - Skip topic cancellation when `interruptTask` fails, keeping DB state consistent with the still-running remote operation - Add test for interrupt failure scenario Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* 🐛 fix: complete operation and show error on gateway error event - Error event handler writes inline error immediately via internal_dispatchMessage, then fetches from DB for richer detail. This ensures the UI always shows an error even when the server hasn't persisted the error into the message table. - disconnected listener only fires onSessionComplete after a terminal agent event (agent_runtime_end / error), not on auth failures or explicit disconnect calls. - Track terminal events via agent_event listener with dedup guard to prevent double-firing onSessionComplete. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * 🐛 fix: persist error into assistant message on agent runtime failure When an agent runtime step fails, the error was written to error_logs and Redis state but not to the assistant message in the DB. This caused the frontend to show an empty message after fetchAndReplaceMessages, since the message had no error field set. Now dispatchCompletionHooks writes the error to the assistant message via messageModel.update when reason is 'error', matching the pattern used by updateAbortedAssistantMessage. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…#13457) * 🐛 fix(gemini): omit empty thinkingConfig and align thinkingLevel keys - Google runtime: omit empty thinkingConfig to avoid sending thinkingConfig: {} upstream.\n- UI: ThinkingLevel2/3/4/5 sliders read/write only their own config key.\n- Resolver: map model extend params thinkingLevel* to matching chatConfig key (no fallback/priority logic).\n- Tests: add regression coverage for empty thinkingConfig omission. * 🐛 fix(gemini): restore default thinking levels by model param * 🐛 fix(gemini): prefer configured thinkingLevel params
* ✨ feat: add delete action to agent profile dropdown menu Add a "Delete" option to the three-dot menu in Agent Profile header, with confirmation modal. Uses existing `removeAgent` from homeStore. Fixes LOBE-6582 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * 🐛 fix: navigate to home after deleting agent from profile Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…pdate (#13733) 🐛 fix: show loading state for assistant message during sendMessage phase During optimistic update, the assistant message content is "..." but the loading indicator was not shown because isGenerating only checks AI_RUNTIME_OPERATION_TYPES (execAgentRuntime), not sendMessage. Include isCreating state so the loading dots appear immediately when message is sent. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* ✨ feat: resolve author info (avatar + name) for task activity list
Add `author` field to `TaskDetailActivity` with `{id, type, name, avatar}`.
Backend resolves agent/user info via batch queries in `getTaskDetail`:
- Topics: author is the task's assignee agent
- Briefs: author is the brief's agentId
- Comments: author is authorAgentId or authorUserId
Fixes LOBE-7013
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* ♻️ refactor: move author resolution queries to model layer
Replace direct db.select() calls in TaskService with:
- AgentModel.getAgentAvatarsByIds() for agent info
- UserModel.findByIds() for user info
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove dead code from the legacy sessionStore: - Delete `recent` slice (migrated to homeStore) - Delete `homeInput` slice (migrated to homeStore) - Remove unused selectors: currentSessionSafe, hasCustomAgents, defaultSessionsCount, defaultSessionsLimited, getSessionMetaById, currentGroupMeta, getDescription - Update store type, initialState, and tests accordingly Closes LOBE-7018 Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: CN locale for rencents * fix: community profile setup modal * feat: support skill banner dismiss
* 🐛 fix: preserve error message in ChatCompletionErrorPayload for ProviderBizError Add `message` field to `ChatCompletionErrorPayload` and extract SDK error messages in `handleOpenAIError` and `handleAnthropicError`, so downstream consumers (agent tracing, error state) receive human-readable error details instead of generic "ProviderBizError". Closes LOBE-7019 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * 🐛 fix: guard nullish error in handleAnthropicError Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* 🐛 fix cli message/topic list page indexing * ♻️ inline page parsing in message command
…e and quota limit (#13740) * 🐛 fix: refine ProviderBizError classification for insufficient balance and quota limit errors Extract inline "Insufficient Balance" check into a dedicated `isInsufficientQuotaError` utility with case-insensitive matching and broader patterns. Add "too many tokens" pattern to `isQuotaLimitError` for Moonshot rate-limit messages. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * update * 🐛 fix: remove "account has been deactivated" from InsufficientQuota patterns Account deactivation can be triggered by policy, security, or account review — not just billing. Classifying it as InsufficientQuota misleads users into topping up balance when the fix is usually permission or support escalation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * ✨ feat: add AccountDeactivated error type for deactivated/suspended accounts Separate account deactivation from InsufficientQuota so users get actionable guidance (contact support) instead of misleading billing advice. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
update cli
…13748) 🐛 fix(local-system): restore loc param when calling readLocalFile IPC The `denormalizeParams` method in `LocalSystemExecutionRuntime` was missing a case for `readLocalFile`. It fell through to `default`, which passed `{startLine, endLine, path}` as-is to the IPC layer. However, the IPC handler (`LocalFileCtr.readFile`) expects `LocalReadFileParams` with `loc?: [number, number]`, not `startLine`/`endLine`. As a result, `loc` was always `undefined` on the IPC side, causing `readLocalFile` to default to `[0, 200]` and always return content from line 0. Fix: add an explicit `readLocalFile` case that reconstructs the `loc` tuple from `startLine` and `endLine` before forwarding to the IPC layer. Fixes #13735 Co-authored-by: octo-patch <octo-patch@github.com>
chore: revert anthropic base64 image
…rrors (#13753) 🐛 fix: guard non-string content in context-engine to prevent `e.trim is not a function` Two unguarded `.trim()` / string-concatenation paths in the context-engine could throw or produce garbage text when a message's `content` is not a plain string (multimodal parts array, null tool turns). Both are reached in normal chat and trigger `e.trim is not a function` in production. - `resolveTopicReferences`: filter out non-string content in the fallback `lookupMessages` path before calling `.trim()`. Without this guard, the outer try/catch swallows the TypeError and drops the whole fallback. - `MessageContent` processor: normalize `message.content` (string or parts array) before concatenating file context, instead of relying on implicit `toString()` coercion which emitted `[object Object]` into the LLM prompt. Adds regression tests for both paths.
…ler-tests (#13867) Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* ♻️ refactor: createAgent uses agentModel.create directly The createAgent router was still going through sessionModel.create, which is a legacy path that doesn't pass all agent fields (like agencyConfig) to the agents table. Switch to agentModel.create which directly inserts into the agents table with full field support. - Add CreateAgentSchema in types package for proper input validation - Remove dependency on insertAgentSchema from database package - Remove sessionId from CreateAgentResult Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * 🏷️ chore: mark session-based agent creation as deprecated Add @deprecated JSDoc tags to the legacy session-based agent creation path (session router, SessionService, SessionModel.create, session store, insertAgentSchema). New code should use agent.createAgent / agentModel.create directly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * 🐛 fix: honor groupId when creating agents Pass input.groupId as sessionGroupId to agentModel.create so that agents created from a sidebar folder are correctly assigned to that group. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * 🐛 fix: resolve type errors from createAgent refactor - Remove sessionId fallback in AddAgent.tsx and ForkAndChat.tsx - Use z.custom<T>() for agencyConfig and tts in CreateAgentSchema to match agentModel.create parameter types Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* 🐛 fix: default execAgent approval mode to headless Backend execAgent calls should run headlessly by default since only frontend scenarios require manual human approval. This prevents cron jobs and other server-side triggers from unexpectedly waiting for human intervention. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * ✅ test: add regression test for headless approval default Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…mpt (#13872) Update `pageEditor.editorPlaceholder` from `Start writing your page. Press / to open the command menu` to `Press "/" for AI and commands.` across all supported locales and the default locale source.
* chore: update skills dir * chore: remove unused recent fetch actions and components * fix: recent delete functions * chore: update comments
…o title (#13877) * ♻️ refactor: add backgroundColor to TaskParticipant and rename name to title Add backgroundColor field and rename name→title in TaskParticipant interface to match agent avatar data. Add LobeAI fallback for inbox agent in getAgentAvatarsByIds when avatar/title are missing.
* feat: add some lost lobe-kb builtin tools * feat: add the list files and get file detail * feat: add the list files and get file detail * fix: update the search limit
* chore: add ENABLE_BOT_IN_DEV swtich * chore: add explicit judge
* update * update * 🔧 chore: update CLI build command in electron-builder and ensure proper newline in package.json * Changed the CLI build command from 'npm run build' to 'npm run build:cli' in electron-builder.mjs. * Added a newline at the end of package.json for consistency. Signed-off-by: Innei <tukon479@gmail.com> --------- Signed-off-by: Innei <tukon479@gmail.com> Co-authored-by: Innei <tukon479@gmail.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 94b6827580
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
* 🔨 chore: update .vscode/settings.json (#13894) * 🐛 fix(builtin-tool-local-system): honor glob scope in local system tool (#13875) Made-with: Cursor * 📝 docs: Update changelog docs and release skills (#13897) - Update changelog documentation format across all historical changelog files - Merge release-changelog-style skill into version-release skill - Update changelog examples with improved formatting and structure Made-with: Cursor --------- Co-authored-by: YuTengjing <ytj2713151713@gmail.com> Co-authored-by: Innei <i@innei.in>
🐳 Database Docker Build Completed!Version: Pull ImageDownload the Docker image to your local machine: docker pull lobehub/lobehub:pr-release-weekly-20260416-b1ac057Important This build is for testing and validation purposes. |
🚀 Desktop App Build Completed!Version: 📦 Release Download · 📥 Actions Artifacts Build Artifacts
Warning Note: This is a temporary build for testing purposes only. |
🚀 LobeHub v2.1.51 (20260416)
Release Date: April 16, 2026
Since v2.1.49: 107 commits · 101 merged PRs · 13 contributors
✨ Highlights
Server-side Human Approval Flow — Agent runtime now supports more reliable approve/reject/reject-continue handling in gateway mode, reducing stalled execution paths in long-running tasks. (✨ feat(agent-runtime): server-side human approval flow (resume approve / reject / reject_continue) #13829, 🐛 fix(gateway): route approve/reject via lab flag #13863, 🐛 fix: default execAgent approval mode to headless #13873)
Message Gateway End-to-End Hardening — Gateway message flow, queue handling, tool callback routing, and stop interruption behavior were strengthened for better execution continuity. (✨ feat: support message gateway #13761, 🐛 fix: message gateway queue error #13816, 🐛 fix: gateway typing error #13820, 🔨 chore: wire Gateway-mode stop via direct tRPC interrupt #13815)
Client Tool Execution in Gateway Mode — Client-executor tools now run more predictably across gateway and desktop callers, with improved executor dispatch behavior. (✨ feat: support run client tools in agent gateway mode #13792, 🐛 fix: enable executor=client tools for desktop Electron callers #13790)
Home / Recents / Sidebar Upgrade — Sidebar layout, custom sort, recents operations, and profile actions were improved to reduce navigation friction in active sessions. (✨ feat: layout sidebar impl #13719, ✨ feat: support layout custom sort and fix copy #13812, 🔨 fix: layout sidebar en More #13723, 🐛 fix: layout recent locale and support dismiss banner #13739, 🐛 fix: recent delete #13878, 💄 style: add delete action to agent profile dropdown menu #13734)
Agent Workspace and Documents Expansion — Working panel and agent document workflows were expanded and polished for better day-to-day agent operations. (✨ feat(app): working panel, and many agent document feat #13766, 💄 style: agent documents #13857)
Provider and Model Compatibility Improvements — Added GLM-5.1 support and refined model/provider edge-case handling, including schema and error-path fixes. (✨ feat: add GLM-5.1 model support for Zhipu provider #13757, 🐛 fix(model-bank): disable GLM-5.1 built-in search in LobeHub #13806, 🐛 fix: preserve error message in ChatCompletionErrorPayload #13736, 🐛 fix: refine ProviderBizError classification for insufficient balance and quota limit #13740)
🏗️ Core Agent & Architecture
Agent runtime and intervention lifecycle
Execution model and dispatch behavior
apibefore feeding ToolsEngine #13856, 🐛 fix: update the builtin lobehub skill manifest #13840, 🐛 fix: slove the execAgents tools exec types not correct #13807)📱 Gateway & Platform Integrations
tool_execute/tool_result. (🔨 chore: addtool_execute/tool_resultprotocol types #13762, 🔨 chore(api): add POST /api/agent/tool-result callback endpoint #13764, 🔨 chore: add GatewayStreamNotifier.sendToolExecute #13765)🖥️ CLI & User Experience
🔧 Tooling
@lobechat/agent-gateway-clientto centralize protocol usage and reduce duplication. (♻️ refactor: extract agent-stream into@lobechat/agent-gateway-clientpackage #13866)🔒 Security & Reliability
serverUrlin WS auth for apiKey verification #13824)apibefore feeding ToolsEngine #13856, 🐛 fix: guard non-string content in context-engine to prevent e.trim errors #13753)👥 Contributors
101 merged PRs from 13 contributors across 107 commits.
Community Contributors
Full Changelog: v2.1.49...v2.1.50