Simon He
ae44163bb3
feat: enable smooth markdown streaming ( #8371 )
2026-05-27 20:30:16 +08:00
dependabot[bot]
284c4082f3
chore(deps): bump the github-actions group with 3 updates ( #8335 )
...
Bumps the github-actions group with 3 updates: [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action ), [docker/login-action](https://github.com/docker/login-action ) and [docker/build-push-action](https://github.com/docker/build-push-action ).
Updates `docker/setup-buildx-action` from 4.0.0 to 4.1.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases )
- [Commits](https://github.com/docker/setup-buildx-action/compare/v4.0.0...v4.1.0 )
Updates `docker/login-action` from 4.1.0 to 4.2.0
- [Release notes](https://github.com/docker/login-action/releases )
- [Commits](https://github.com/docker/login-action/compare/v4.1.0...v4.2.0 )
Updates `docker/build-push-action` from 7.1.0 to 7.2.0
- [Release notes](https://github.com/docker/build-push-action/releases )
- [Commits](https://github.com/docker/build-push-action/compare/v7.1.0...v7.2.0 )
---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
dependency-version: 4.1.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions
- dependency-name: docker/login-action
dependency-version: 4.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions
- dependency-name: docker/build-push-action
dependency-version: 7.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-27 12:00:42 +08:00
letr
bc35daa110
fix(webui): restore mobile provider source deletion ( #8321 )
...
* fix(webui): restore mobile provider source deletion
* fix(webui): improve provider source delete accessibility
2026-05-27 11:59:06 +08:00
F. Abyssalis
000d638c1b
fixed typo in the Chinese documentation for the QQ official WebSocket bot setup. ( #8351 )
2026-05-27 11:56:28 +08:00
香草味的纳西妲喵
7ff58f2938
fix(docs): Update FAQ, add description of hard refresh (force reload) of the page. ( #8359 )
2026-05-27 08:44:23 +08:00
hibiki233i
2d78626840
fix SQLAlchemy compatibility issues on macOS ( #7724 )
...
* Stabilize packaged SQLite knowledge base initialization
* Apply suggestion from @sourcery-ai[bot]
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
* Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix: updating database URL handling and ensuring unique document IDs
* fix: preserve sqlite pragmas with null pool
---------
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: 邹永赫 <1259085392@qq.com >
2026-05-26 09:37:01 +09:00
NayukiChiba
ff28eca9ca
fix(openai): 修复流式响应末尾usage信息丢失问题 ( #8306 )
...
- 修复在流式处理过程中,因跳过 delta=None 且 choices=[] 的 usage chunk 导致最终 completion 丢失 usage 数据的问题
- 在 handle_chunk 调用条件中增加 chunk.usage 判断,确保末尾 usage chunk 能被正常传递给 state 处理
- 更新相关注释,说明 usage chunk 的例外情况,保障流式响应的 usage 信息完整性
2026-05-23 23:17:44 +08:00
elecvoid243
dcc99e6b9b
feat: 为ChatUI添加指令候选功能 ( #8279 )
...
* feature: add command suggestion for ChatUI
* feat(chat): add focus functionality to chat input after sending messages
* feat(llm): add error handling for LLM provider selection failures
* feat(command-suggestion): enhance command filtering and sorting logic
---------
Co-authored-by: Soulter <905617992@qq.com >
2026-05-22 20:57:19 +08:00
lingyun14
fd4fe84310
fix: docs ( #8229 )
...
* Update listen-message-event.md
* Update other.md
* Update send-message.md
* Update ai.md
* Update ai.md
* Update send-message.md
* Update listen-message-event.md
* Delete docs/zh/dev/star/guides/env.md
* Delete docs/en/dev/star/guides/env.md
* Update simple.md
* Update discord.md
* Update discord.md
* Update matrix.md
* Update matrix.md
* Update index.md
* Update index.md
* Update openapi.md
* Update ppio.md
* Update ppio.md
* Update function-calling.md
* Update function-calling.md
* Update config.mjs
* docs: add EN desktop deployment page
* Update plugin.md
* Update ai.md
* Update ai.md
* Update ai.md
* Update desktop.md
2026-05-22 20:35:29 +08:00
EmilyCheoh
f5bd4f30e5
fix: preserve original completion_text in skills_like tool re-query ( #8240 )
...
Only overwrite tool-call-related fields from the re-query response, preserving the original completion_text and reasoning_content that were already sent to the user.
2026-05-22 20:32:29 +08:00
x1051445024
1e48bab514
fix: handle delta=None chunks in streaming to prevent SDK to_dict() error ( #8244 )
...
* fix: handle delta=None chunks in streaming to prevent SDK to_dict() error
When certain OpenAI-compatible providers (Gemini, DeepSeek, some proxies)
return chunks with choice.delta=None (e.g. ContentBlockDeltaEvent),
ChatCompletionStreamState._convert_initial_chunk_into_snapshot internally
calls choice.delta.to_dict() at line 747, causing:
'NoneType' object has no attribute 'to_dict'
Fix:
1. Skip handle_chunk when delta is None (delta=None chunks have no
content contribution anyway)
2. Wrap get_final_completion in try/except to gracefully fall back to
empty ChatCompletion if SDK state is corrupted
Refs: openai-python#5069, openai-python#5047
* fix: resolve bugs found by Sourcery and gemini-code-assist review
- Remove orphan logger.error that caused NameError on every chunk
- Replace broken empty ChatCompletion fallback with clean return;
streamed content already yielded, no data loss
Co-authored-by: sourcery-ai[bot] <sourcery-ai[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <gemini-code-assist[bot]@users.noreply.github.com>
* fix: properly replace get_final_completion fallback in _query_stream
Previous fix_pr_v3 wrongly injected code into terminate() instead.
Now correctly:
1. Replace empty ChatCompletion fallback with clean return in _query_stream
2. Revert terminate() to original (await self.client.close() only)
* fix: revert corrupted terminate() to original
Previous fix_pr_v3 injected wrong-indentation code into terminate().
---------
Co-authored-by: sourcery-ai[bot] <sourcery-ai[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <gemini-code-assist[bot]@users.noreply.github.com>
2026-05-22 20:28:03 +08:00
lingyun14
3f20bbdf23
fix: t2i shiki issue ( #8013 )
...
* fix(t2i): run Shiki runtime injection in executor to avoid blocking event loop
* Update network_strategy.py
* ruff
2026-05-22 19:11:38 +08:00
lingyun14
0711172fa7
Fix/stale command hints ( #8245 )
...
* Update stage.py
* fix: remove stale slash command hints
* fix: remove stale slash command hints
* fix: remove stale slash command hints
* Update openai_source.py
2026-05-21 21:45:57 +08:00
Weilong Liao
d15606d202
feat(password): add command to change AstrBot dashboard password ( #8272 )
...
closes : #8268
2026-05-21 21:37:10 +08:00
M1LKT
165933545d
feat: Automate generation of the MDI icon font subset during dashboard dev and build workflows ( #8264 )
...
* feat: ignore字体集的生成文件,并在编译时自动生成
* 移除preview的前置运行
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-05-21 08:48:12 +08:00
Yufeng He
c4693fa68e
fix: support rst and adoc knowledge uploads ( #8255 )
2026-05-20 14:38:16 +08:00
Jianyu Li
7a9fb33dd9
docs: fix typo of the count in FAQ deletion instructions ( #8235 )
...
Correct the number of fields to be deleted from five to six in the instructions.
2026-05-19 14:41:58 +08:00
dependabot[bot]
de0a7afdcf
chore(deps): bump pnpm/action-setup in the github-actions group ( #8233 )
...
Bumps the github-actions group with 1 update: [pnpm/action-setup](https://github.com/pnpm/action-setup ).
Updates `pnpm/action-setup` from 6.0.7 to 6.0.8
- [Release notes](https://github.com/pnpm/action-setup/releases )
- [Commits](https://github.com/pnpm/action-setup/compare/v6.0.7...v6.0.8 )
---
updated-dependencies:
- dependency-name: pnpm/action-setup
dependency-version: 6.0.8
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-19 13:21:03 +09:00
Yufeng He
5bbcdced0f
fix: skip empty llm summaries ( #8195 )
2026-05-19 09:38:55 +08:00
Soulter
dceacd5a87
docs: update release version instructions in AGENTS.md
2026-05-17 15:07:39 +08:00
Soulter
d609f23b71
chore: bump version to 4.25.1
v4.25.1
2026-05-17 15:01:59 +08:00
Soulter
a1e95081be
feat: add random suffix for weixin and dingtalk id
2026-05-17 14:56:15 +08:00
Midwich
b3381c6448
fix(webui): add Noto Sans to global font-family stack for Cyrillic text ( #8205 )
...
PR #8015 added 'Noto Sans' to the Google Fonts link and CJK fallback list,
but the font was placed at the end of $cjk-sans-fallback where browsers
never reach it for Cyrillic text. The global $body-font-family also lacked
'Outfit' entirely, causing Vuetify to use CJK fonts as the primary face.
Changes:
- Remove 'Noto Sans' from the end of $cjk-sans-fallback (it is not a CJK font)
- Add 'Outfit' and 'Noto Sans' to $body-font-family before CJK fallbacks
- Update .Outfit class in _container.scss to match the new stack
This ensures:
- Latin text → Outfit
- Cyrillic text → Noto Sans (loaded by vite-plugin-webfont-dl)
- CJK text → Noto Sans SC / PingFang SC etc.
Fixes follow-up to #8015 .
2026-05-16 22:03:13 +08:00
Soulter
02291a3217
chore: bump version to 4.25.0
v4.25.0
2026-05-16 01:39:04 +08:00
Yufeng He
1d69626421
fix: pass image inputs through active replies ( #8119 )
...
* fix(core): pass images through active replies
* fix: harden active reply image collection
* test: avoid logger coupling in active reply test
* Delete tests/unit/test_builtin_astrbot_main.py
---------
Co-authored-by: Weilong Liao <37870767+Soulter@users.noreply.github.com >
2026-05-16 01:34:03 +08:00
Tom8266
871b932785
fix: detect Tencent SILK (\x02 prefix) in audio magic bytes to avoid ffmpeg failure ( #8009 )
...
* fix: detect Tencent SILK (\x02 prefix) in audio magic bytes to avoid ffmpeg failure
QQ official bot sends voice in Tencent SILK format (leading \x02 byte before
#!SILK_V3 magic). _get_audio_magic_type() had two off-by-one slice errors:
1. Standard SILK: header[:8] vs b'#!SILK_V3' (8 != 9 bytes) — never matched
2. Tencent SILK: not detected at all
Fixes:
- Standard SILK: header[:9] == b'#!SILK_V3' (correct 9-byte slice)
- Tencent SILK: header[:1] == b"\x02" and header[1:10] == b'#!SILK_V3'
- ensure_wav() routes detected silk to tencent_silk_to_wav()
Before: QQ voice → ffmpeg → 'Invalid data found'
After: QQ voice → magic detects silk → tencent_silk_to_wav → WAV OK
* refactor: use startswith() for SILK magic byte detection
Replace manual slice comparisons with startswith() — cleaner, less
error-prone, and immune to off-by-one slice errors.
Suggested by: sourcery-ai
2026-05-16 01:20:52 +08:00
Weilong Liao
c88025c2a3
feat(dingtalk): implement one-click QR registration and polling mechanism ( #8198 )
2026-05-15 18:43:21 +08:00
lingyun14
094aef6241
fix: drop **kwargs bug in two register funcs ( #8141 )
2026-05-15 17:00:03 +08:00
Weilong Liao
6982ef7d94
feat(weixin_oc): handle session timeout and clear login state ( #8196 )
2026-05-15 15:30:56 +08:00
Midwich
1a0306343a
fix(webui): add Noto Sans font support for Cyrillic text ( #8015 )
...
The WebUI only loaded Noto Sans SC (Simplified Chinese), which lacks
Cyrillic glyphs. Russian text fell back to system sans-serif, causing
poor rendering depending on the OS.
Changes:
- Load Noto Sans (regular) from Google Fonts alongside Noto Sans SC
- Add 'Noto Sans' at the END of $cjk-sans-fallback (after CJK fonts)
so Chinese text still renders with system CJK fonts first,
while Cyrillic text falls through to Noto Sans.
This ensures both Chinese and Cyrillic text render correctly.
2026-05-15 13:36:37 +08:00
千岚之夏
a09657e620
fix: handle MiniMax TTS timber weight configuration more robustly to avoid crashes on invalid or empty values
...
* fix: add comments and await asyncio.sleep(0) for startup signal
* fix: [Bug] 修复 MiniMax TTS 空字符串配置解析报错
* fix: 采纳AI审查建议,添日志+提取默认配置变量
* fix: 移除误加的core_lifecycle.py改动
---------
Co-authored-by: RainBot-Ai <qianlanzhiya@gmail.com >
2026-05-15 13:01:36 +08:00
Weilong Liao
aace90daab
feat: supports scan QR code to configure feishu / lark ( #8191 )
...
* feat(lark): implement app registration and bot info retrieval
- Add app registration functionality for Lark and Feishu platforms, including endpoints and request handling.
- Introduce polling mechanism for app registration status.
- Create bot info retrieval functionality to fetch bot details after successful registration.
- Enhance dashboard with new UI components for one-click QR setup and manual setup options.
- Update internationalization files to support new features and actions.
- Add unit tests for app registration endpoint resolution and data handling.
* feat(weixin_oc): add WeChat login registration and QR code handling
2026-05-15 13:00:26 +08:00
Yufeng He
094c2de85a
fix: surface weixin media send failures ( #8175 )
...
* fix: surface weixin media send failures
* fix: include weixin send failure context
* Delete tests/unit/test_weixin_oc_adapter.py
---------
Co-authored-by: Weilong Liao <37870767+Soulter@users.noreply.github.com >
2026-05-14 12:17:59 +08:00
counhopig
7d402fa16a
fix: add ollama and nvidia embedding ( #8104 )
...
* fix: add ollama and nvidia embedding
* fix: address code review feedback for embedding providers
- Remove redundant proxy branch in NvidiaEmbeddingProvider._get_client
- Change ClientError handling to re-raise instead of wrapping in Exception
- Add exc_info=True for better error diagnostics
- Remove redundant isinstance check in OllamaEmbeddingProvider._build_payload
2026-05-14 12:16:35 +08:00
lingyun14
3a1d6c8f89
fix: handle None tool arguments from Claude API for no-parameter tools ( #8136 )
...
* fix: handle None tool arguments returned by Claude API for no-parameter tools
* fix: handle None tool arguments from Claude API for no-parameter tools
* fix: generalize None tool args comment
* fix: generalize None tool args comment
* 去除空格,以保证格式正确
2026-05-14 12:01:19 +08:00
Chang Lee
35f5d7e710
perf: enhance AMR audio quality and simplify opus logic ( #8153 )
...
* chore: streamline convert_audio_to_opus logic
- Route Opus conversion directly through the underlying convert_audio_format.
- Remove redundant FFmpeg processing chains to improve code reusability.
* perf: optimize AMR voice encoding parameters
- Enhance AMR audio quality via built-in FFmpeg filters.
2026-05-14 11:57:14 +08:00
M1LKT
720d384b44
fix: synchronize the autoScroll state of the consoleDisplayer component using $refs ( #8186 )
2026-05-14 11:44:42 +08:00
Yufeng He
3290d75519
fix: prefer bundled dashboard over stale data dist ( #8172 )
...
* fix: prefer bundled dashboard over stale dist
* fix: harden dashboard dist version checks
2026-05-14 09:00:16 +08:00
lingyun14
ef73d2da33
docs: Clarify and expand the LLM tool registration guidance in the AI plugin documentation ( #8178 )
...
* docs(zh/ai): fix misleading tool registration guide and add warnings
* docs(en/ai): add tool registration section with deprecation warnings
2026-05-14 08:58:37 +08:00
Soulter
c77cb0f4e2
chore: bump version to 4.24.5
v4.24.5
2026-05-14 01:16:26 +08:00
Soulter
0e6ad1c443
feat: cli supports ASTRBOT_DASHBOARD_INITIAL_PASSWORD env
2026-05-14 01:13:46 +08:00
Soulter
e05dd650ab
feat(auth): add legacy password login failure message and FAQ guidance for upgrade issues
2026-05-14 00:48:15 +08:00
Soulter
93428a7976
feat: add initial dashboard password resolution from environment variable
2026-05-14 00:45:37 +08:00
Soulter
37142fd253
feat: enhance update dialog with progress tracking and localization updates
...
- Added advanced settings option in update dialog for better user control.
- Implemented detailed progress tracking for update stages including download size and speed.
- Updated localization files for English, Russian, and Chinese to include new strings for update progress and advanced settings.
- Improved UI for update dialog with better layout and responsiveness.
- Enhanced test coverage for update process including progress tracking.
2026-05-14 00:40:24 +08:00
Tsukumi
1b09132e4a
fix: respect explicit Shipyard Neo profile ( #8167 )
2026-05-13 14:38:11 +08:00
NayukiMeko
22ba831a31
fix(message_tools): throw exception and block message sending when path does not exist ( #8149 )
...
* fix(message_tools): 路径不存在时抛出异常并阻止消息发送
- _resolve_path_from_sandbox 在所有解析路径均失败时改为抛出 FileNotFoundError,而非静默返回原始路径,避免将无效路径传递给下游组件
- 新增 component_type 关键字参数,使错误信息能明确指出是 image/record/video/file 哪类资源路径缺失
- 在 call 方法中捕获 FileNotFoundError 并提前返回错误字符串,确保路径无效时不会继续构建或发送任何消息组件
- 补充单元测试,验证缺失图片路径场景下 send_message 不会被调用
* Update tests/unit/test_message_tools.py
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix(tools): propagate sandbox error instead of masking as FileNotFoundError
---------
Co-authored-by: Ruochen Pan <badbatch0x01@gmail.com >
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: RC-CHN <1051989940@qq.com >
2026-05-13 11:50:06 +08:00
Soulter
4672a04eb7
docs: update FAQ to clarify default password usage for first-time login
2026-05-13 01:50:37 +08:00
Soulter
c48108040c
chore: bump version to 4.24.4
v4.24.4
2026-05-13 01:46:08 +08:00
Soulter
2d6f5e64b8
fix(auth): update login failure message for first-time users with details on random password
2026-05-13 01:37:35 +08:00
Soulter
7d72e3a9e7
docs: update FAQ with details on first login account and random password generation
2026-05-13 00:37:24 +08:00