Flartiny
044b361ac5
feat: add conversation batch deletion for webchat ( #6160 )
...
* feat: add conversation batch deletion for webchat
* fix: security issues in batch_delete_sessions and better handle batch select
* feat: enhance batch selection UI with animated checkbox visibility in ConversationSidebar
---------
Co-authored-by: Soulter <905617992@qq.com >
2026-03-14 21:09:36 +08:00
Frank
06fd2d2428
fix: preserve subagent handoff tools during plugin filtering ( #6155 )
2026-03-14 20:55:15 +08:00
eason
dd6bc1dcdb
fix: add missing spaces in cron prompt and replace deprecated utcnow() ( #6192 )
...
1. Fix missing spaces in cron job wake prompt string concatenation.
Python implicit string concatenation produced:
"...scheduled taskProceed..." and "...conversation.After..."
which sent garbled instructions to the LLM agent, causing unreliable
cron job execution.
2. Replace deprecated datetime.utcnow() with
datetime.now(datetime.timezone.utc) in JWT generation.
utcnow() is deprecated since Python 3.12 and returns naive datetime
which can cause incorrect token expiry on non-UTC systems.
Closes #6103
Closes #6165
Co-authored-by: easonysliu <easonysliu@tencent.com >
2026-03-14 20:52:00 +08:00
Rhonin Wang
52d5258b10
feat: display latency when testing model connection ( #6258 )
...
Co-authored-by: RhoninSeiei <RhoninSeiei@users.noreply.github.com >
2026-03-14 20:50:40 +08:00
Anima
91933bbd19
perf: webui theme color improvement ( #6263 )
...
* fix: update scrollbar styles to follow theme variables
* fix: update theme colors to use CSS variables for consistency
* fix: change login button color to primary for better visibility
* fix: update theme colors for Dark and Light themes; change login button color to secondary
* fix: update border and theme colors for consistency in DarkTheme
* fix: update sidebar list class to conditionally hide scrollbar in mini sidebar mode
* fix: simplify button visibility logic and remove unnecessary leftPadding style
* fix: refactor language switcher to use grouped menu for better UX
* fix: update theme colors to use primary color for consistency across components
* fix: add preview text for template output in multiple languages
2026-03-14 20:45:55 +08:00
Sakari
f8d075b5d3
fix(telegram): avoid treating normal replies as topic threads ( #6174 )
2026-03-14 18:27:13 +08:00
eason
86ef758a9a
fix: prevent ValueError when removing already-removed API key in retry loop ( #6193 )
...
In _handle_api_error(), when a 429 rate-limit is encountered, the code
calls available_api_keys.remove(chosen_key). If the same key was already
removed in a previous retry iteration (e.g. the key rotated back to the
same value), this raises ValueError which crashes the entire LLM request
with an opaque error instead of a proper retry/fallback.
Add a membership check before calling remove() to prevent the crash.
Co-authored-by: easonysliu <easonysliu@tencent.com >
2026-03-14 18:22:14 +08:00
Ann-Holmes
1a03180643
Add binding for local temp directory in YAML ( #6191 )
...
* Add binding for local temp directory in YAML
Bind the local temp directory to the sandbox for file access.
* Update compose-with-shipyard.yml
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
---------
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2026-03-14 18:21:47 +08:00
DroidKali
326183a3fd
fix: update startup command to 'astrbot run' in all README files ( #6189 )
...
Updated the quick start command from 'astrbot' to 'astrbot run' across all
language versions of README documentation for consistency and correctness.
Co-authored-by: DroidKali <DroidKali@users.noreply.github.com >
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com >
2026-03-14 18:20:48 +08:00
qingyun
08fc657755
fix: preserve whitespace in Plain.toDict() for @ mentions ( #6244 )
...
* fix: preserve whitespace in Plain.toDict() for @ mentions
- Remove .strip() from Plain.toDict() to match async to_dict() behavior
- Fixes #6237 : QQ @mentions no longer lose trailing spaces
- This ensures '@user message' displays correctly instead of '@usermessage'
* refactor: remove redundant to_dict() from Plain class
- Let Plain inherit to_dict() from BaseMessageComponent
- BaseMessageComponent.to_dict() calls toDict() by default
- Reduces code duplication and prevents future divergence
- Addressed code review feedback from @gemini-code-assist and @sourcery-ai
* feat: add async to_dict method to Plain message component
* fix: add return type hint to Plain.toDict method
---------
Co-authored-by: ccsang <ccsang@users.noreply.github.com >
Co-authored-by: Soulter <905617992@qq.com >
2026-03-14 18:18:14 +08:00
Gao Jinzhe
0ff9539599
Merge pull request #6208 from nuomicici/master
...
更新(添加)部分文档中已过时的名词
2026-03-14 18:17:14 +08:00
lalala
38f5e077ee
fix: remove duplicate dependencies ( #6247 )
...
remove duplicate `aiocqhttp` `aiodocker` `aiohttp` in requirements.txt
2026-03-14 18:15:06 +08:00
MousseC
89fbd75e7a
perf(OneBot): add a whitespace after At component ( #6238 )
...
修复 At 组件后的空格在发送时被 strip 移除的问题。在消息解析时检测 At 组件并在其后额外插入空格。
2026-03-14 18:12:55 +08:00
Salman Chishti
493662524a
ci: upgrade GitHub Actions to latest versions ( #6251 )
...
Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com >
2026-03-14 18:08:25 +08:00
糯米茨
1afbb357db
Update docs/zh/platform/matrix.md
...
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-03-13 21:14:00 +08:00
糯米茨
8d2140f607
Update docs/zh/platform/wecom_ai_bot.md
...
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-03-13 21:13:45 +08:00
糯米茨
97732987d9
更新部分新版名称
2026-03-13 20:53:41 +08:00
糯米茨
a60a40bca3
更新部分新版本名称
...
Update the instructions for installing and configuring the Matrix adapter in AstrBot.
2026-03-13 20:51:39 +08:00
エイカク
a8ff2b3d9c
fix(dashboard): stabilize sidebar hash navigation on startup ( #6159 )
...
* fix(dashboard): stabilize sidebar hash navigation on startup
* fix(dashboard): reuse shared extension tab route helpers
* fix(dashboard): avoid leaking extension route query state
* fix(dashboard): preserve route params in tab locations
* fix(dashboard): harden hash tab routing fallbacks
* fix(dashboard): warn on tab route navigation failures
* fix(dashboard): harden extension tab startup routing
2026-03-13 11:53:50 +09:00
Soulter
a21bb5b234
chore: bump version to 4.20.0
v4.20.0
2026-03-13 00:33:36 +08:00
Soulter
994d39241e
chore: ruff format
2026-03-13 00:26:40 +08:00
2ndelement
e6c1164755
perf(QQ Official API): improve streaming message delivery reliability and proactive media sending ( #6131 )
...
* fix(qqofficial): fix streaming message delivery for C2C
* fix(qqofficial): rewrite send_streaming for C2C vs non-C2C split
* fix(qqofficial): add _extract_response_message_id for safe id extraction
* fix(qqofficial): flush stream segment on tool-call break signal
* fix(qqofficial): downgrade rich-media to non-stream send in C2C
* fix(qqofficial): auto-append \n to final stream chunk (state=10)
* fix(qqofficial): propagate stream param to all _send_with_markdown_fallback call sites
* fix(qqofficial): retry on STREAM_MARKDOWN_NEWLINE_ERROR with newline fix
* fix(qqofficial): handle None/non-dict response in post_c2c_message gracefully
* fix(qqofficial): remove msg_id from video/file media payloads in send_by_session
QQ API rejects msg_id on proactive media (video/file, msg_type=7) messages
sent via the tool-call path, returning "请求参数msg_id无效或越权". The
msg_id passive-reply credential is consumed by the first send and cannot be
reused for subsequent media uploads in the same session.
Remove msg_id from the payload after setting msg_type=7 for video and file
sends, for both FRIEND_MESSAGE (C2C) and GROUP_MESSAGE paths.
* fix(qqofficial): replace deprecated get_event_loop() with get_running_loop()
asyncio.get_event_loop() is deprecated since Python 3.10 and raises a
DeprecationWarning (or errors) when called from inside a running coroutine
without a current event loop set on the thread. Replace both call-sites
in the streaming throttle logic with asyncio.get_running_loop(), which is
the correct API to use inside an already-running async context.
Co-Authored-By: Claude Sonnet <noreply@anthropic.com >
---------
Co-authored-by: 2ndelement <2ndelement@users.noreply.github.com >
Co-authored-by: Claude Sonnet <noreply@anthropic.com >
2026-03-13 00:24:15 +08:00
Aleksandr
89cc8a1a65
feat: add Russian translation ( #6081 )
...
* feat: add Russian translation
* revert: remove auth route changes from PR
2026-03-13 00:08:37 +08:00
Stable Genius
c0e4f1e114
fix(dashboard): restore README dialog anchor navigation ( #6083 )
...
Co-authored-by: stablegenius49 <185121704+stablegenius49@users.noreply.github.com >
2026-03-13 00:02:45 +08:00
Stable Genius
7b43448ce4
fix: prefer named weekday cron examples ( #6091 )
...
Co-authored-by: stablegenius49 <185121704+stablegenius49@users.noreply.github.com >
2026-03-12 23:57:45 +08:00
orbisai0security
bdac0b65f4
fix: resolve critical vulnerability V-004 ( #6093 )
...
Automatically generated security fix
Co-authored-by: orbisai0security <orbisai0security@users.noreply.github.com >
2026-03-12 23:53:47 +08:00
Gao Jinzhe
cf9ee6f20c
Merge pull request #6135 from advent259141/feat/add-community-links
...
docs: 添加 Astrbook 和玖帕喵社区链接
2026-03-12 23:11:19 +08:00
advent259141
01eae72a64
docs: 添加 Astrbook 和玖帕喵社区链接
2026-03-12 23:05:00 +08:00
letr
bca1476eab
fix(extension): refresh plugin market install state after install ( #6124 )
...
* fix(extension): refresh market install state after plugin install
* chore: remove redundant call
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-03-12 20:19:00 +08:00
エイカク
fbcbde0a4b
chore: update dependency and workflow versions ( #6119 )
2026-03-12 20:18:23 +09:00
エイカク
3914d766db
fix: install only missing plugin dependencies ( #6088 )
...
* chore: ignore local worktrees
* fix: install only missing plugin dependencies
* fix: harden missing dependency install fallback
* fix: clarify dependency install fallback logging
* refactor: simplify dependency install test helpers
* refactor: reuse requirements precheck planning
2026-03-12 11:50:29 +09:00
DOHEX
3e2cb6a2ab
fix(telegram): remove deprecated normalize_whitespace param from ( #6044 )
...
telegramify_markdown.markdownify calls
2026-03-12 00:34:07 +08:00
莫思潋
25830524f3
fix(docs): typo in docker.md & napcat.md ( #6048 )
...
* Fix wording in admin ID configuration instructions
* Update docker.md
2026-03-12 00:30:31 +08:00
Soulter
304094630c
perf: optimize booter selection for edge cases and message sending tool ( #6064 )
...
* feat: add video message support and enhance message type descriptions in SendMessageToUserTool
* feat: add error handling for disabled sandbox runtime in get_booter function
2026-03-12 00:29:52 +08:00
Soulter
5c3643c54c
feat: added support for file, voice, and video messages for QQ Official Bot (including WebSocket mode). ( #6063 )
2026-03-12 00:26:08 +08:00
エイカク
589cce18af
fix: improve Windows local skill file reading ( #6028 )
...
* chore: ignore local worktrees
* fix: improve Windows local skill file reading
* fix: address Windows path and decoding review feedback
* fix: simplify shell decoding follow-up
* fix: harden sandbox skill prompt metadata
* fix: preserve safe sandbox skill summaries
* fix: relax sandbox summary sanitization
* fix: tighten path sanitization for skill prompts
* fix: harden sandbox skill display metadata
* fix: preserve Unicode skill paths in prompts
* fix: quote Windows skill prompt paths
* fix: simplify local shell output decoding
* fix: localize Windows prompt path handling
* fix: normalize Windows-style skill paths in prompts
* fix: align prompt and shell decoding behavior
2026-03-11 23:58:28 +09:00
Soulter
e254caf82d
fix(docs): add official developer group ID to multiple language READMEs and enhance regex description in config metadata
2026-03-11 21:26:11 +08:00
Soulter
7efcd242d6
fix(docs): update edit link patterns and remove obsolete repository reference
2026-03-11 17:42:42 +08:00
JIANG Zijun
5d811d3949
fix: Persist Discord pre-ack emoji config across restart by adding missing default key ( #6031 )
...
* Initial plan
* fix: add discord default platform_specific pre-ack config
Co-authored-by: Jzjerry <20167827+Jzjerry@users.noreply.github.com >
* Delete tests/unit/test_config.py
we don't need to add tests
* fix: use 🤔 as default discord pre-ack emoji
Co-authored-by: Jzjerry <20167827+Jzjerry@users.noreply.github.com >
* add back old test config
* doc: discord pre-ack-emoji doc
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Jzjerry <20167827+Jzjerry@users.noreply.github.com >
2026-03-11 16:41:08 +08:00
Flartiny
8e6aaee10c
fix(webui): unify search input clear behavior ( #6017 )
...
* fix(webui): unify search input clear behavior
* fix: centralize search input normalization
2026-03-11 15:14:16 +08:00
エイカク
6da59cfb07
fix: 插件依赖自动安装逻辑与 Dashboard 安装体验优化 ( #5954 )
...
* fix: install plugin requirements before first load
* fix: handle pip option arguments correctly
* fix: harden pip install input parsing
* refactor: simplify pip install input parsing
* fix: align plugin dependency install handling
* fix: respect configured pip index overrides
* test: parameterize plugin dependency install flows
* refactor: simplify multiline pip input parsing
* fix: install plugin dependencies before loading
* fix: protect core dependencies from downgrades and simplify package input splitting
* fix: enhance dependency conflict reporting and improve user-facing warnings
* refactor: preserve pip log indentation and fix CodeQL URL sanitization alert
* fix: explicit re-export for DependencyConflictError to satisfy ruff F401
* test: enhance index override verification in pip installer tests
* fix: correctly map pip ERROR and WARNING outputs to proper log levels
* refactor: show specific version conflicts in DependencyConflictError and revert log level mapping
* refactor: simplify install() by decoupling pip logging, failure classification and constraint file management
* refactor: further simplify pip installer and requirement parsing logic
* refactor: simplify dependency installation logic and improve circular requirement reporting
* style: organize imports in astrbot/core/__init__.py
* refactor: optimize requirement parsing efficiency and flatten pip installer API
* style: fix import sorting in astrbot/core/__init__.py
* refactor: consolidate requirement parsing, optimize core protection, and improve exception propagation
* fix: preserve valid pip requirement parsing
* fix: skip empty pip installs and preserve blank output
* chore: normalize gitignore entry style
* fix: tighten pip trust and requirement parsing
* refactor: centralize pip install parsing and failure handling
* fix: redact pip argv credentials in logs
* fix: surface plugin dependency install errors
* fix: cache core constraints and clarify requirement installs
* fix: harden pip requirement parsing for plugin installs
* fix: simplify pip installer parsing internals
* fix: tighten pip installer parsing and redaction
* refactor: simplify plugin dependency install flow
* fix: preserve core constraint conflict errors
* fix: harden pip installer fallback resolution
* refactor: split pip requirement and constraint helpers
* refactor: simplify pip installer helper flow
* refactor: streamline requirement precheck helpers
* refactor: clarify core constraint resolution
* fix: surface pip install failures explicitly
* refactor: separate pip conflict context parsing
* fix: harden core constraint resolution
* test: cover pip installer failure call sites
* refactor: remove dead requirements fallback helper
* refactor: narrow core constraint error handling
* refactor: unify requirement iteration
* refactor: share requirement name parsing
* test: align pip helper coverage
* fix: bind pip output limit at runtime
* refactor: reuse core requirement parser for tokens
2026-03-11 14:21:55 +09:00
Soulter
10ceacfbb1
chore: bump version to 4.19.5
v4.19.5
2026-03-11 00:17:14 +08:00
ChuwuYo
66f5ccd902
fix: add file size validation to TTS provider test and MiniMax empty audio detection ( #5999 )
...
- Add audio data validation in MiniMax TTS get_audio() method to detect empty responses
- Validate generated audio file size in TTSProvider.test() to ensure valid output
- Provide detailed error messages guiding users to check group_id configuration
- Auto-cleanup test audio files after validation
- Fixes issue where 0KB audio files would pass TTS detection when group_id is not configured
2026-03-11 00:07:19 +08:00
Soulter
3379587223
feat(mcp): enhance logging and initialize MCP clients in background ( #5993 )
...
* feat(mcp): enhance logging and initialize MCP clients in background
fixes : #5777
* rf
* fix(mcp): simplify MCP client initialization in background
* fix(mcp): update error message for MCP background initialization failure
2026-03-11 00:00:48 +08:00
邹永赫
e25a1a42cf
Revert "fix: clarify missing MCP stdio command errors ( #5992 )"
...
This reverts commit 0c771e4a77 .
2026-03-11 00:08:06 +09:00
エイカク
0c771e4a77
fix: clarify missing MCP stdio command errors ( #5992 )
...
* fix: clarify missing MCP stdio command errors
* refactor: tighten MCP error presentation helpers
* fix: improve MCP test connection feedback
* fix: structure MCP test connection errors
* refactor: share MCP test error codes
2026-03-10 23:05:50 +09:00
camera-2018
ec21cb13d3
feat(lark): supports CardKit streaming output for feishu ( #5777 )
...
* feat(lark): 支持飞书 CardKit 流式输出
* refactor(lark): extract streaming fallback logic and deduplicate final text update
* fix(lark): 修复流式输出竞态条件及增强健壮性
- 修复 sender loop 中 delta 快照竟态: await 期间 delta 被 generator
更新导致 last_sent 记录了未发送的值, 造成输出卡在最后一段
- send_streaming 入口增加 platform_meta 守卫, 未启用时直接回退
- _fallback_send_streaming 移除对已耗尽 generator 的 super() 调用,
改为内联父类副作用 (Metric.upload + _has_send_oper)
- Metric.upload 统一改为 await, 确保指标上报在方法返回前完成
- 装饰器 support_streaming_message 改为 False, 与 meta() 动态配置对齐
- i18n hint 补充提示: 需在「AI 配置 → 其他配置」中开启流式输出
* chore(lark): 收口配置
* docs(lark): update streaming output instructions and client version requirements
---------
Co-authored-by: bread-ovo <2570425204@qq.com >
Co-authored-by: Soulter <905617992@qq.com >
2026-03-10 19:40:46 +08:00
Soulter
1d26b96d90
fix(workflow): update build-docs.yml to trigger on version tags instead of master branch
2026-03-10 17:16:56 +08:00
一袋米要扛幾樓
be017c87f4
fix: 前端修正切換到 chat 切換後回 welcome 的配置保存最終切換頁面 ( #5792 )
...
* 前端修正切換到chat切換後回 welcome 的配置保存最終切換頁面
* 修復 SSR 不含localStorage 環境驗證
2026-03-10 17:14:28 +08:00
lustresixx
23fffa95c8
fix(provider): support 84-char Azure TTS subscription keys ( #5813 )
...
* fix(provider): support 84-char Azure TTS subscription keys
* test(provider): add negative Azure TTS key validation cases
* chore: delete test
---------
Co-authored-by: Soulter <905617992@qq.com >
2026-03-10 17:09:13 +08:00