Commit Graph

9447 Commits

Author SHA1 Message Date
YuTengjing
cb0037ce1e 🐛 fix: pass userId to all embeddings API calls (#13077) 2026-03-17 23:44:34 +08:00
Innei
03f3a2438c 🐛 fix(skills): repair db-migrations frontmatter (#13073) 2026-03-17 23:32:14 +08:00
Innei
4994d19a9c 🐛 fix(desktop): remove electron-liquid-glass to fix click event blocking (#13070)
* 🐛 fix(desktop): remove electron-liquid-glass to fix click event blocking

The electron-liquid-glass native addon was blocking all click events in the
Electron desktop app window. Remove the dependency and restore vibrancy-based
transparency with semi-transparent body background via `.desktop` CSS class.

* 🔨 chore(desktop): remove electron-liquid-glass from native modules config
2026-03-17 22:56:29 +08:00
YuTengjing
f8d51bbf4f 🐛 fix(model-runtime): filter internal thinking content in openai-compatible payloads (#13067) 2026-03-17 22:28:08 +08:00
YuTengjing
189e5d5a20 🐛 fix(model-runtime): prune unsupported xAI reasoning penalties (#13066) 2026-03-17 22:27:59 +08:00
Innei
b2122a5224 ♻️ refactor: replace per-message useNewScreen with centralized useConversationSpacer (#13042)
* ♻️ refactor: replace per-message useNewScreen with centralized useConversationSpacer

Replace the old per-message min-height approach with a single spacer element appended to the virtual list, simplifying scroll-to-top UX when user sends a new message.

* 🔧 refactor: streamline handleSendButton logic and enhance editor focus behavior

Removed redundant editor null check and added double requestAnimationFrame calls to ensure the editor is focused after sending a message.

Signed-off-by: Innei <tukon479@gmail.com>

---------

Signed-off-by: Innei <tukon479@gmail.com>
2026-03-17 21:19:58 +08:00
Innei
d2d9e6034e 🐛 fix(chat): clear input immediately on send to preserve drafts during streaming (#13038)
* 🐛 fix: clear input immediately on send to preserve drafts typed during streaming

Move inputMessage reset before the async streaming lifecycle so text
entered while the assistant is responding is not overwritten on completion.

Also normalize null/undefined in operation context matching so that
cancelOperations works correctly in null-topic sessions.

Fixes LOBE-2647

* 🐛 fix: resolve TS2322 null-vs-undefined type error in useOperationState test
2026-03-17 21:14:40 +08:00
YuTengjing
97f4a370ab feat: add request trigger tracking, embeddings billing hooks, and memory extraction userId fix (#13061) 2026-03-17 20:54:28 +08:00
YuTengjing
62a6c3da1d 🌐 i18n: add pending_reward status translation for referral table (#13065) 2026-03-17 20:08:18 +08:00
YuTengjing
10b7906071 🔨 chore: add device fingerprint utility and pending_reward status (#13062) 2026-03-17 18:49:35 +08:00
YuTengjing
3207d14403 🔨 chore: add batch query methods for UserModel and MessageModel (#13060) 2026-03-17 18:20:03 +08:00
Innei
8f7527b7e2 feat(desktop): Linux window specialization (#13059)
*  feat(desktop): Linux window specialization

- Add minimize/maximize/close buttons for Linux (WinControl)
- Linux: no tray, close main window quits app
- Linux: native window shadow and opaque background
- i18n for window control tooltips

Made-with: Cursor

* 🌐 i18n: add window control translations for all locales

Made-with: Cursor

* 🐛 fix(desktop): show WinControl in SimpleTitleBar only on Linux

Made-with: Cursor

* 🐛 fix(desktop): limit custom titlebar controls to Linux

Avoid rendering duplicate window controls on Windows and keep the Linux maximize button in sync with the current window state.

Made-with: Cursor

---------

Co-authored-by: LiJian <onlyyoulove3@gmail.com>
2026-03-17 16:59:33 +08:00
LiJian
26269eacbb 🐛 fix: slove the market oidc lost the call tools error (#13025)
* fix: slove the market oidc lost the call tools error

* fix: add the beta-version & add some log

* fix: fixed the oidc error ts
2026-03-17 11:27:19 +08:00
Zhijie He
78cfb087b4 💄 style: update claude 4.6 series 1M contextWindow (#12994)
* style: update claude 4.6 series 1M contextWindow

* chore: cleanup bedrock search tag

chore: cleanup bedrock retired model

chore: cleanup bedrock retired model

chore: cleanup bedrock retired model

* fix: fix ci test
2026-03-17 10:58:20 +08:00
Zhijie He
2717f8a86c 💄 style: add Seedance 1.5 Pro support for OSS (#13035)
* style: add seedance 1.5 support for OSS

* style: update volcengine videoGen models
2026-03-17 10:43:25 +08:00
Arvin Xu
44e4f6e4b0 ️ perf: optimize tool system prompt — remove duplicate APIs, simplify XML tags (#13041)
* 💄 style: remove platform-specific Spotlight reference from searchLocalFiles

Replace "using Spotlight (macOS) or native search" with "using native search"
since the actual search implementation is platform-dependent and the LLM
doesn't need to know the specific backend.

Fixes LOBE-5778

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ️ perf: remove duplicate API descriptions from tool system prompt

API identifiers and descriptions are already in the tools schema passed
via the API tools parameter. Repeating them in the system prompt wastes
tokens. Now only tools with systemRole (usage instructions) are injected.

Also rename XML tags: plugins→tools, collection→tool,
collection.instructions→tool.instructions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 💄 style: inject tool description when no systemRole instead of skipping

Tools without systemRole now show their description as <tool> children.
Tools with systemRole use <tool.instructions> wrapper as before.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 💄 style: always emit <tool> tag, fallback to "no description"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* update tools

* fix

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 02:01:05 +08:00
Arvin Xu
9bdc3b0474 feat: improve agent context injection (skills discovery, device optimization, prompt cleanup) (#13021)
*  feat: inject all installed skills into <available_skills> for AI discovery

Previously, only skills explicitly added to the agent's plugins list appeared
in <available_skills>. Now all installed skills are exposed so the AI can
discover and activate them via activateSkill.

Changes:
- Frontend: use getAllSkills() instead of getEnabledSkills(plugins)
- Backend: pass skillMetas through createOperation → RuntimeExecutors → serverMessagesEngine
- Add skillsConfig support to serverMessagesEngine

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🐛 fix: use DB + builtin skills for available_skills instead of provider manifests

lobehubSkillManifests are tool provider manifests (per-provider, containing
tool APIs), not skill metadata. Using them for <available_skills> incorrectly
showed provider names (e.g. "Arvin Xu") as skills.

Now fetches actual skills from AgentSkillModel (DB) + builtinSkills for correct
<available_skills> injection.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 💄 style: use XML structure for online-devices in system prompt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ♻️ refactor: extract online-devices prompt to @lobechat/prompts package

Move device XML prompt generation from builtin-tool-remote-device into
the shared prompts package for reusability and consistency.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  test: add failing tests for Remote Device suppression when auto-activated

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ️ perf: suppress Remote Device tool when device is auto-activated

When a device is auto-activated (single device in IM/Bot or bound device),
the Remote Device management tool (listOnlineDevices, activateDevice) is
unnecessary — saves ~500 tokens of system prompt + 2 tool functions.

- Add autoActivated flag to deviceContext
- Move activeDeviceId computation before tool engine creation
- Disable Remote Device in enableChecker when autoActivated

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* update system role

* update system role

* ♻️ refactor: use agentId instead of slug for OpenAPI responses model field

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🐛 fix: use JSON round-trip instead of structuredClone in InMemoryAgentStateManager

structuredClone fails with DataCloneError when state contains non-cloneable
objects like DOM ErrorEvent (from Neon DB WebSocket errors).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🐛 fix: only inject available_skills when tools are enabled

Restore plugins guard to prevent skills injection when tool use is
disabled (plugins is undefined), fixing 28 test failures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  test: update system message assertions for skills injection

Use stringContaining instead of exact match for system message content,
since available_skills may now be appended after the date.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 00:35:18 +08:00
Arvin Xu
41c1b1ee85 🐛 fix: use jsonb ? operator to avoid Neon rt_fetch bug (#13040)
🐛 fix: use jsonb ? operator instead of ->> to avoid Neon rt_fetch bug

The ->> operator in WHERE clauses triggers a Neon-specific
`rt_fetch used out-of-bounds` error. Switch to the ? operator
which is semantically equivalent for checking key existence.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 23:33:35 +08:00
Innei
23385abaea ♻️ refactor: centralize NavBar dev mode logic into useNavLayout hook (#13037)
* ♻️ refactor: centralize NavBar dev mode logic into useNavLayout hook

Extract scattered isDevMode checks from Nav, BottomMenu, Footer, and
UserPanel into a single useNavLayout hook with declarative devOnly
metadata. Also restore dev-mode-gated home page modules and fix
LangButton visual alignment in UserPanel.

*  test: update PanelContent test to match LangButton Menu removal
2026-03-16 23:16:13 +08:00
YuTengjing
fc5b462892 ️ perf: optimize search with BM25 indexes and ICU tokenizer (#12914) 2026-03-16 21:37:57 +08:00
LobeHub Bot
935304dbd2 🌐 chore: translate non-English comments to English in features/MCPPluginDetail (#13008)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 21:21:45 +08:00
YuTengjing
d2666b735b feat: add ModelRuntime hooks for billing lifecycle interception (#13013) 2026-03-16 20:59:40 +08:00
Arvin Xu
69accd11df 🐛 fix: return structured error from invokeBuiltinTool instead of undefined (#13020)
When a builtin tool executor is not found, invokeBuiltinTool now returns
a structured error object instead of silently returning undefined. Also
adds a fallback in call_tool executor for undefined results to prevent
agent loop from terminating abnormally.

Fixes LOBE-5318

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 20:12:48 +08:00
lobehubbot
7a8f682879 Merge remote-tracking branch 'origin/main' into canary 2026-03-16 11:51:39 +00:00
YuTengjing
70a74f485a 👷 build: add BM25 indexes with ICU tokenizer for search optimization (#13032) 2026-03-16 19:50:57 +08:00
YuTengjing
cec079d34b 🗃️ db: add BM25 indexes with ICU tokenizer for 14 tables 2026-03-16 19:41:19 +08:00
Innei
ee8eade485 🔨 chore: add trpc mock.vite stub to stop Vite SPA warmup from traversing server router (#13022)
Made-with: Cursor
2026-03-16 18:10:35 +08:00
Rdmclin2
d9388f2c31 🐛 fix: add skill crash (#13011)
* fix: Error Page style lost

* fix: add skill button error

* chore: add add skill e2e tests

* chore: remove unnecessary skill
2026-03-16 16:46:49 +08:00
Innei
bffdbf8ad4 🐛 fix: upgrade desktop agent-browser to v0.20.1 and default native mode (#12985)
* 🐛 fix(desktop): update bundled agent-browser to v0.20.1 and align native-mode docs

Upgrade desktop bundled agent-browser to 0.20.1 and remove obsolete AGENT_BROWSER_NATIVE runtime override since native mode is now default. Update builtin agent-browser skill descriptions to reflect the new default behavior.

Made-with: Cursor

*  feat: enable agent-browser skill on Windows desktop

Made-with: Cursor

* 🔧 refactor: remove isWindows from ToolAvailabilityContext interface

Updated the ToolAvailabilityContext interface to remove the isWindows property, simplifying the context checks in the isBuiltinSkillAvailableInCurrentEnv function.

Signed-off-by: Innei <tukon479@gmail.com>

---------

Signed-off-by: Innei <tukon479@gmail.com>
2026-03-16 16:41:17 +08:00
Rdmclin2
51d6fa7579 🐛 fix: model provider pop up problems (#13012)
* fix: model provider pop up problems

* chore: optimize list scroll
2026-03-16 16:27:45 +08:00
Arvin Xu
517a67ced7 🐛 fix: respect agent-level memory config priority over user settings (#13018)
* update skills

* 🐛 fix: respect agent-level memory config priority over user settings

Agent chatConfig.memory.enabled now takes priority. Falls back to user-level
memory setting when agent config is absent.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🐛 fix: resolve tsgo type error in memory integration test

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:48:14 +08:00
YuTengjing
1d1e48d1b5 ♻️ refactor: split Stats into separate settings tab and update i18n (#13016)
* 🌐 i18n: add auto top-up payment method hint translations

* ♻️ refactor: split Stats into separate settings tab and rename Subscription group to Plans

* 🌐 i18n: update auto top-up payment method hint copy

* 🌐 i18n: add auto top-up payment method hint translations for all locales

* 🌐 i18n: rename Subscription Plans tab to Plans

* 🌐 i18n: add high usage FAQ, rename Text Generation to Chat Message, rename tab.plans
2026-03-16 14:45:31 +08:00
René Wang
70ef815692 🐛 fix: select first provider on click for multi-provider model items (#12968) 2026-03-16 14:08:10 +08:00
lobehubbot
a2c22f705d Merge remote-tracking branch 'origin/main' into canary 2026-03-16 03:49:09 +00:00
Neko
93ee1e30af 👷 build: add agent_documents table (#12944) 2026-03-16 11:48:30 +08:00
LobeHub Bot
a1fdd56565 🌐 chore: translate non-English comments to English in packages/database (#12975)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 11:01:39 +08:00
LobeHub Bot
4bfec4191e test: add unit tests for error utility functions (#12996)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 10:58:43 +08:00
LobeHub Bot
cb955048f3 🌐 chore: translate non-English comments to English in openapi-services (#12993)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 11:57:00 +08:00
Arvin Xu
6a4d6c6a86 🛠 chore: support injectable snapshot store in AgentRuntimeService (#12984) 2026-03-15 01:00:56 +08:00
Arvin Xu
adbf11dc11 📝 docs: update documents (#12982)
update document
2026-03-14 22:06:09 +08:00
Arvin Xu
a96cac59d7 🛠 chore: add subscribeStreamEvents to InMemoryStreamEventManager (#12964)
*  feat: add subscribeStreamEvents to InMemoryStreamEventManager and use factory for stream route

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* 🐛 fix: remove duplicate agentExecution types and fix stream route test mock

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 13:07:46 +08:00
lobehubbot
ae9e51ec12 🔖 chore(release): release version v2.1.42 [skip ci] v2.1.42 2026-03-14 04:03:41 +00:00
lobehubbot
6052b67953 Merge remote-tracking branch 'origin/main' into canary 2026-03-14 04:01:59 +00:00
Innei
9bb9222c3d 🐛 fix(ci): create stable update manifests for S3 publish (#12974) 2026-03-14 12:01:21 +08:00
YuTengjing
46eb28dff4 feat: add i18n keys for auto top-up feature (#12972) 2026-03-14 02:16:53 +08:00
YuTengjing
4aadfd608b 🐛 fix: require valid action for referral backfill and add anti-abuse rule (#12958) 2026-03-14 01:48:07 +08:00
Rdmclin2
942412155e feat: support skill activite switch back (#12970)
* feat: support skill activate mode

* feat: support skill panel search

* chore: update i18n files

* chore: update i18n files
2026-03-13 23:15:31 +08:00
Coooolfan
8373135253 🐛 fix: prevent Enter key submission during IME composition in LoginStep (#12963)
* 🐛 fix: prevent Enter key submission during IME composition in LoginStep

* ♻️ refactor: extract useIMECompositionEvent hook for IME composition tracking

Made-with: Cursor

---------

Co-authored-by: Innei <tukon479@gmail.com>
2026-03-13 22:41:26 +08:00
Innei
4438b559e6 feat: add slash action tags, topic reference tool, and command bus system (#12860)
*  feat: add slash action tags in chat input

Made-with: Cursor

*  feat: enhance editor with new slash actions and localization updates

- Added new slash actions: change tone, condense, expand, polish, rewrite, summarize, and translate.
- Updated localization files for English and Chinese to include new action tags and slash commands.
- Removed deprecated useSlashItems component and integrated its functionality directly into InputEditor.

Signed-off-by: Innei <tukon479@gmail.com>

*  feat: add slash placement configuration to chat input components

- Introduced `slashPlacement` prop to `ChatInputProvider`, `StoreUpdater`, and `InputEditor` for customizable slash menu positioning.
- Updated initial state to include `slashPlacement` with default value 'top'.
- Adjusted `ChatInput` and `InputArea` components to utilize the new `slashPlacement` prop.

This enhancement allows for better control over the user interface in chat input interactions.

Signed-off-by: Innei <tukon479@gmail.com>

*  feat: implement command bus for slash action tags processing

Add command bus system to parse and execute slash commands (compact context,
new topic). Refactor action tag categories from ai/prompt to command/skill.
Add useEnabledSkills hook for dynamic skill registration.

* feat: compress command

Signed-off-by: Innei <tukon479@gmail.com>

* refactor: compress

Signed-off-by: Innei <tukon479@gmail.com>

* fix: skill inject

*  feat: slash action tags with context engine integration

Made-with: Cursor

*  feat: add topic reference builtin tool and server runtime

Made-with: Cursor

*  feat: add topic mention items and update ReferTopic integration

Made-with: Cursor

* 🐛 fix: preserve editorData through assistant-group edit flow and update RichTextMessage reactively

- EditState now forwards editorData from EditorModal to modifyMessageContent
- modifyMessageContent accepts and passes editorData to updateMessageContent
- RichTextMessage uses useEditor + effect to update document on content change instead of key-based remount
- Refactored RichTextMessage plugins to use shared createChatInputRichPlugins()

*  feat(context-engine): add metadata types and update processors/providers

Made-with: Cursor

*  feat(chat-input): add slash action tags and restore failed input state

* 🔧 chore: update package dependencies and enhance Vite configuration

- Changed @lobehub/ui dependency to a specific package URL.
- Added multiple SPA entry points and layout files to the Vite warmup configuration.
- Removed unused monorepo packages from sharedOptimizeDeps and added various dayjs locales for better localization support.

Signed-off-by: Innei <tukon479@gmail.com>

* 🔧 chore: update @lobehub/ui dependency to version 5.4.0 in package.json

Signed-off-by: Innei <tukon479@gmail.com>

* 🐛 fix: correct SkillsApiName.runSkill to activateSkill and update trimmed content assertions

* 🐛 fix: resolve type errors in context-engine tests and InputEditor slashPlacement

* 🐛 fix: update runSkill to activateSkill in conversationLifecycle test

* 🐛 fix: avoid regex backtracking in placeholder parser

*  feat(localization): add action tags and tooltips for slash commands across multiple languages

Signed-off-by: Innei <tukon479@gmail.com>

* 🐛 fix: preserve file attachments when /newTopic has no text content

* cleanup

Signed-off-by: Innei <tukon479@gmail.com>

---------

Signed-off-by: Innei <tukon479@gmail.com>
2026-03-13 22:17:36 +08:00
Innei
d7bfd1b6c8 🐛 fix: fix error collapse default active key (#12967) 2026-03-13 21:35:35 +08:00