Haoran Xu
f5c34bb321
fix: delete unsaved provider sources locally ( #9264 )
2026-07-15 15:33:38 +08:00
Haoran Xu
259ae3d2c8
fix: prioritize configured context limit ( #9263 )
2026-07-15 15:33:12 +08:00
圣达生物多
a298c7bf49
feat: import and export personas ( #4532 )
...
* [Feature] 人格设定支持导出/导入。
Fixes #4409
- 导出的json
* 导入(dev
* 稍微进化
* 改为直接导出文件
* 删除未使用的i18n键值
* fix:仅白名单字段可以作为文件名
* PersonaForm.vue - savePersona 方法添加了白名单字段过滤
* update
* [Feature] 人格设定支持导出/导入。
Fixes #4409
* 再次完成
* 修复bug 405
* 移除导入和导出按钮的本地化文本(上一次修改的
* 移动到 persona 的 i18n JSON
* [Feature] 人格设定支持导出/导入。
Fixes #4409
找回需要的i18n
* 写错地方了,更正i18n
* 保证相同的i18n
* 在导出时说明不包含tools Skills
* 修改导出格式
* 新格式导入
* 重复检查
* [Bug]当 LLM 的回复本身包含类似 JSON 的格式的时候消息的 content 字段可能被错误地多次序列化
Fixes #4363
* [Bug]当 LLM 的回复本身包含类似 JSON 的格式的时候消息的 content 字段可能被错误地多次序列化
Fixes #4363
* [Bug]当 LLM 的回复本身包含类似 JSON 的格式的时候消息的 content 字段可能被错误地多次序列化
Fixes #4363
提取_parse_image_url_part 处理base64
* - 当原始数据是字符串时(`raw_data` 不为 None):返回 `{"type": "json", "data": {"content": "..."}}` 包装形式
- 当原始数据是字典时:直接返回 `{"type": "json", "data": {...原始字典...}}`,不使用 content 包装
* 像其他组件一样使用 self.type
* 在 Json.__init__ 中 传入 self.raw_data
* 在 Json.to_dict 中 使用 self.type.lower() 来推导
* [Bug]当 LLM 的回复本身包含类似 JSON 的格式的时候消息的 content 字段可能被错误地多次序列化
Fixes #4363
* [Bug]当 LLM 的回复本身包含类似 JSON 的格式的时候消息的 content 字段可能被错误地多次序列化
Fixes #4363
* [Bug]当 LLM 的回复本身包含类似 JSON 的格式的时候消息的 content 字段可能被错误地多次序列化
Fixes #4363
提取_parse_image_url_part 处理base64
* - 当原始数据是字符串时(`raw_data` 不为 None):返回 `{"type": "json", "data": {"content": "..."}}` 包装形式
- 当原始数据是字典时:直接返回 `{"type": "json", "data": {...原始字典...}}`,不使用 content 包装
* 像其他组件一样使用 self.type
* 在 Json.__init__ 中 传入 self.raw_data
* 在 Json.to_dict 中 使用 self.type.lower() 来推导
* [Feature] 人格设定支持导出/导入。
Fixes #4409
* 同步
* feat(persona): 添加导入和导出功能,增强用户体验
2026-07-13 23:52:05 +08:00
Soulter
6070da9ae2
fix: resume ChatUI streams after refresh ( #9259 )
...
* fix: resume ChatUI streams after refresh
* fix: hide chat run service errors
* fix: harden resumed chat streams
2026-07-13 23:05:03 +08:00
Haoran Xu
cc0ec5e5c5
fix: report current context usage in token indicator ( #9255 )
2026-07-13 21:21:17 +08:00
叹号大帝
6641041d1e
fix: update i18n callback path to Settings General ( #9201 )
2026-07-11 23:15:14 +08:00
Wei Chengqian
d7bad22bbd
fix: make ChatUI model selection theme-aware ( #9200 )
2026-07-11 22:47:25 +08:00
Fiber
4c6ef8a492
fix: resolve mobile chat input freeze and multiline attachment button alignment ( #9202 )
...
* fix: resolve mobile chat input freeze caused by autoResize oscillation
The autoResize() function in ChatInput.vue used minHeight + 8 as the
threshold to decide whether to switch from multi-line (textarea) back
to single-line (input). On mobile viewports (max-width: 768px), the
textarea's 2-line scrollHeight is below minHeight + 8 due to smaller
line-height and padding, causing an infinite oscillation loop between
<input> and <textarea> that freezes the browser.
Fix: compute the actual single-line content height from
getComputedStyle (line-height + vertical padding) and use that as the
wrapping threshold instead of the hardcoded minHeight + 8 offset.
Also temporarily set min-height to 0 during scrollHeight measurement
to avoid the CSS min-height: 52px inflating the value.
* fix: align mobile multiline attachment button to the left
The mobile multiline grid used a 2-column layout (1fr auto) with
'left right' areas, causing the left actions area to span the full
remaining width and centering the + button via justify-content: center.
Switch to the same 3-column layout (auto 1fr auto) with 'left . right'
areas used on desktop, so the + button sits at the left edge.
* fix: use !important to override min-height during scrollHeight measurement
el.style.minHeight = '0' cannot override the CSS min-height: 52px
!important rule, leaving scrollHeight inflated and preventing the
textarea from switching back to single-line for short text.
Use setProperty('min-height', '0', 'important') to force the override,
and removeProperty to restore. Also add a fontSize * 1.2 fallback when
getComputedStyle returns 'normal' for line-height, so the threshold is
always computable.
2026-07-11 22:46:55 +08:00
叹号大帝
7422fb075c
fix(platform): correct tutorial links for satori and mattermost ( #9205 )
2026-07-11 22:46:16 +08:00
Weilong Liao
bf18fadbe6
style: polish snackbar appearance ( #9173 )
2026-07-07 09:43:59 +08:00
Glmg
ba7f8ebfb1
fix(webui): sync plugin activation status on enable ( #9156 )
...
* fix(webui): fix plugin activation status sync issue in turn_on_plugin #9149
* fix(webui): sync plugin activation status after enabling
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-07-06 21:16:14 +08:00
Weilong Liao
ab2502c174
feat: add chat token usage indicator
...
Show a neutral token usage ring in ChatUI when the current model has context-window metadata.
2026-07-06 21:14:35 +08:00
Weilong Liao
18e067fab1
fix: keep model metadata separate from providers ( #9161 )
2026-07-06 21:10:57 +08:00
Weilong Liao
6627fd53c2
feat: show model metadata in selectors
...
Surface cached model metadata in model/provider selectors, show neutral capability/context badges, and add provider test actions.
2026-07-06 20:38:30 +08:00
Weilong Liao
b43cc6dee0
feat: improve ChatUI attachment display ( #9134 )
2026-07-04 17:56:33 +08:00
lxfight
ea9e3421d9
fix: align knowledge base CRUD API contract with kb_name, canonical payload fields, and matching OpenAPI types ( #9000 )
...
Warning: Potential breaking changes in /kb related openapi.
* fix(kb): align CRUD API contract end-to-end
Unify knowledge base create/update/list with kb_name, canonical_payload,
optional list pagination with total, and matching OpenAPI plus dashboard types.
* fix: restore _model_dict references, add KnowledgeBaseCreateRequest, fix OpenAPI allOf validation
- Replace 3 remaining _model_dict() calls with payload.model_dump(exclude_none=True)
- Add KnowledgeBaseCreateRequest schema with required kb_name + embedding_provider_id
- Remove additionalProperties: false from OpenAPI allOf sub-schema to avoid validation failures
- Use Pydantic Field(alias="name") + populate_by_name=True for legacy name migration
- Delegate _canonical_kb_payload to KnowledgeBaseRequest to eliminate duplicated logic
- Add getattr default None for update_kb to prevent AttributeError
- Add validation error tests: missing kb_name, missing embedding_provider_id
* fix: address knowledge base contract follow-ups
* fix: preserve knowledge base create error shape
2026-07-03 22:18:56 +08:00
Weilong Liao
e7d5be632f
feat: add ChatUI project workspaces ( #9066 )
...
* feat: add ChatUI project workspaces
* feat: refine chatui layout
* feat: enhance chat input and project view styles for attachment handling
* feat: adjust chat sidebar brand logo positioning
* feat: enhance project dialog with error handling and loading state
2026-07-03 21:54:20 +08:00
NayukiChiba
9f50c900b0
feat(platform): 支持扫码创建时自定义机器人ID ( #9067 )
...
* feat(platform): 支持扫码创建时自定义机器人ID
- 在扫码创建平台机器人时新增机器人 ID 输入框,允许用户在创建前自定义平台 ID。
- 输入框展示在二维码上方,并对空值、空格、冒号和感叹号进行校验。
- 用户手动填写 ID 后,扫码结果不会再自动覆盖该值。
- 同时补充中英俄三语言文案。
* refactor(platform): 重构扫码创建平台ID输入组件
- 将平台专属CSS类名改为通用名称registration-inline
- 使用统一的isPlatformIdValid方法校验ID格式,替代分散的正则判断
- 移除setter中对platform ID的trim操作,交由校验逻辑处理
- 删除不再使用的.weixin-oc-registration-inline样式定义
2026-07-03 01:04:03 +08:00
Simon He
372b9f5bfc
fix: reduce markdown streaming lag ( #9097 )
...
* fix: reduce markdown streaming lag
* refactor: centralize markdown live node limit
2026-07-01 09:53:21 +09:00
Weilong Liao
89ec07a92b
style: standardize dashboard dialog styling ( #9062 )
2026-06-28 14:24:19 +08:00
lxfight
758e43273d
fix: paginate knowledge base dashboard lists ( #9055 )
...
* fix: paginate knowledge base dashboard lists
* fix: preserve knowledge document search pagination
2026-06-28 14:00:45 +08:00
Weilong Liao
3d4c4ed01b
fix: validate plugin install sources ( #9061 )
2026-06-28 13:45:59 +08:00
Copilot
771911a893
fix: keep Tab navigation within reset-password inputs in account dialog ( #9049 )
...
* Initial plan
* fix: keep tab navigation on account dialog inputs
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-06-27 16:21:24 +08:00
Fiber
298078b536
Fix: KV storage not cleared on plugin uninstall. Improved cleanup logic and updated i18n strings to indicate database KV data removal. ( #8291 )
...
* fix: 完善插件卸载时的清理逻辑,新增KV数据清理,更新了多语言文案以说明会清理数据库KV数据
* fix: 修复插件关闭时不清理KV的问题,更新单元测试
* refactor: 统一插件ID生成逻辑
将插件ID生成逻辑抽离到StarMetadata类中,移除重复的代码实现,
同时在__post_init__中自动补全plugin_id字段。
* refactor: 将plugin_id属性从方法转换为属性,确保在属性赋值后正确计算
2026-06-27 16:06:14 +08:00
Florance
b5784abc55
fix: only show plugin update for newer market versions
...
Only mark installed plugins as updatable when the marketplace version is a known newer version, including pre-release-to-stable transitions. Conflict resolution also keeps per-plugin marketplace source lookup from current master.
2026-06-27 15:12:53 +08:00
FuShang114
b8f4c7d515
fix: handle MiMo STT audio and reasoning output ( #8938 )
...
* fix: handle MiMo STT audio and reasoning output
* fix: 移除 MiMo STT 的系统和用户提示词配置
---------
Co-authored-by: Soulter <905617992@qq.com >
2026-06-27 15:04:41 +08:00
Weilong Liao
0ef790d289
fix: track plugin install source for updates ( #9037 )
...
* fix: track plugin install source for updates
* feat: refine plugin source management flow
* test: align plugin update expectation
2026-06-27 15:02:04 +08:00
FuShang114
6dd5e1e080
fix: prevent plugin detail marketplace mismatches ( #9028 )
2026-06-26 22:12:29 +08:00
Weilong Liao
421d718041
feat: show public version details on login ( #8986 )
...
* feat: show public version details on login
* fix: address login version review feedback
2026-06-24 21:46:29 +08:00
Weilong Liao
967ed01cf7
fix: add data scope to api keys ( #8985 )
2026-06-24 16:37:46 +08:00
Tanishq
ae29a7eaf9
feat(websearch): add Exa as a web search provider ( #8973 )
...
- Add ExaWebSearchTool (web_search_exa) with keyword/semantic search,
category filters, domain restrictions, and date range support
- Add ExaGetContentsTool (exa_get_contents) for extracting web page content
- Add _exa_search() and _exa_get_contents() API helpers hitting
https://api.exa.ai/search and https://api.exa.ai/contents
- Add _EXA_KEY_ROTATOR for multi-key rotation
- Register Exa tools in _apply_web_search_tools() dispatch
- Add Exa to WEB_SEARCH_CITATION_TOOL_NAMES for citation support
- Add websearch_exa_key config default and provider option
- Add i18n metadata for en-US, zh-CN, ru-RU
- Add Exa section to docs (en + zh)
- Add 6 unit tests covering search, contents, error handling, and
legacy config migration
Closes #5621
2026-06-24 15:53:47 +08:00
Soulter
756469a39f
fix: remove unused vocechat logo and update xmas hat image
2026-06-21 23:44:33 +08:00
Weilong Liao
16beb9a9d7
fix: remove redundant font family from stylesheet link ( #8942 )
2026-06-21 23:36:21 +08:00
Soulter
e30655b04e
fix: refresh WebUI with cache buster
2026-06-21 18:12:07 +08:00
Weilong Liao
b6913833d4
chore: bump version to 4.26.0-beta.11
...
Release 4.26.0-beta.11
2026-06-20 22:32:56 +08:00
Soulter
f9d4082217
feat: add prerelease visibility toggle
2026-06-20 22:23:25 +08:00
Soulter
ddc4e142c7
fix: clarify WebUI recovery hint
2026-06-20 22:11:38 +08:00
Weilong Liao
cdfb0bdf91
fix: restore webui 401 login redirect ( #8903 )
2026-06-19 22:43:21 +08:00
Weilong Liao
dd36979eca
feat: implement request retry mechanism for provider requests ( #8893 )
...
* feat: implement request retry mechanism for provider requests
* feat: add request max retries configuration and implement retry logic for provider requests
* feat: update fake_query function to accept request_max_retries parameter
* feat: remove retry_rate_limits from provider request calls
2026-06-19 17:13:40 +08:00
Weilong Liao
29d66b84b9
feat: support workspace skills in requests ( #8884 )
...
* feat: support workspace skills in requests
* fix: harden workspace skill discovery
* fix: address workspace skills review comments
2026-06-19 12:03:07 +08:00
Weilong Liao
264e7eaaa3
fix: restore OpenAPI file uploads
...
Expose /api/v1/file in OpenAPI, enable file-scoped API keys, and regenerate docs/client artifacts.
2026-06-18 12:37:38 +08:00
Soulter
12b1b27825
fix: harden upgrade restart recovery
2026-06-18 00:13:18 +08:00
Soulter
08fc565175
fix: handle legacy login upgrade recovery
2026-06-17 23:43:04 +08:00
Weilong Liao
d5f5631287
fix: prefer v1 auth with legacy recovery fallback
2026-06-17 23:15:03 +08:00
C₂₂H₂₅NO₆
59fdd96627
fix: 修正人格编辑重名校验 ( #8843 )
...
Co-authored-by: C₂₂H₂₅NO₆ <Sisyphbaous-DT-Project@users.noreply.github.com >
2026-06-17 22:51:24 +08:00
Weilong Liao
19864b3f85
fix: recover interrupted dashboard upgrades
2026-06-17 22:48:47 +08:00
Weilong Liao
55af880369
feat(qqofficial): allow QQ Official Webhook adapters to proactively send group messages without requiring a cached msg_id ( #8841 )
...
* feat(qqofficial): support webhook QR setup
* docs(qqofficial): simplify webhook QR setup step
2026-06-17 21:13:05 +08:00
Weilong Liao
d3b52356a6
fix: repair onboarding platform and backup upload ( #8834 )
2026-06-17 10:54:57 +08:00
Weilong Liao
f1854df620
feat: add qq official qr binding
...
Add QQ Official Bot QR binding registration flow for the WebSocket adapter, wire dashboard credential autofill, and mark the WebSocket template as recommended.
2026-06-16 19:08:41 +08:00
Weilong Liao
898c800c96
fix: upload skills with generated multipart body
...
Fixes #8794 .
2026-06-16 17:00:23 +08:00