Soulter
ed4cacfffb
fix: all mcp tools exposed to main agent ( #5252 )
2026-02-20 15:40:13 +08:00
NayukiMeko
b30cb12133
fix(provider): 修复 dict 格式 content 导致的 JSON 残留问题 ( #5250 )
...
* fix(provider): 修复 dict 格式 content 导致的 JSON 残留问题
修复 _normalize_content 函数未处理 dict 类型 content 的问题。
当 LLM 返回 {"type": "text", "text": "..."} 格式的 content 时,
现在会正确提取 text 字段而非直接转为字符串。
同时改进 fallback 行为,对 None 值返回空字符串。
Fixes #5244
* Update warning message for unexpected dict format
---------
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2026-02-20 13:48:41 +08:00
whatevertogo
31d4e304fc
feat: add password confirmation when changing password ( #5247 )
...
* feat: add password confirmation when changing password
Fixes #5177
Adds a password confirmation field to prevent accidental password typos.
Changes:
- Backend: validate confirm_password matches new_password
- Frontend: add confirmation input with validation
- i18n: add labels and error messages for password mismatch
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* fix(auth): improve error message for password confirmation mismatch
* fix(auth): update password hashing logic and improve confirmation validation
---------
Co-authored-by: whatevertogo <whatevertogo@users.noreply.github.com >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-20 13:41:13 +08:00
Soulter
9a7a594cb5
feat: add support for plugin astrbot-version and platform requirement checks ( #5235 )
...
* feat: add support for plugin astrbot-version and platform requirement checks
* fix: remove unsupported platform and version constraints from metadata.yaml
* fix: remove restriction on 'v' in astrbot_version specification format
* ruff format
2026-02-20 13:35:45 +08:00
エイカク
9c691b2266
chore: remove Electron desktop pipeline and switch to tauri repo ( #5226 )
...
* ci: remove Electron desktop build from release pipeline
* chore: remove electron desktop and switch to tauri release trigger
* ci: remove desktop workflow dispatch trigger
* refactor: migrate data paths to astrbot_path helpers
* fix: point desktop update prompt to AstrBot-desktop releases
2026-02-19 23:04:18 +09:00
雪語
3597726aad
fix(core): terminate active events on reset/new/del to prevent stale responses ( #5225 )
...
* fix(core): terminate active events on reset/new/del to prevent stale responses
Closes #5222
* style: fix import sorting in scheduler.py
2026-02-19 19:26:47 +08:00
NanoRocky
651a0645c5
fix: 修复仅发送 JSON 消息段时的空消息回复报错 ( #5208 )
...
* Fix Register_Stage
· 补全 JSON 消息判断,修复发送 JSON 消息时遇到 “消息为空,跳过发送阶段” 的问题。
· 顺带补全其它消息类型判断。
Co-authored-by: Pizero <zhaory200707@outlook.com >
* Fix formatting and comments in stage.py
* Format stage.py
---------
Co-authored-by: Pizero <zhaory200707@outlook.com >
2026-02-19 17:47:08 +08:00
Dream Tokenizer
bf3fa3e918
fix: 改进微信公众号被动回复处理机制,引入缓冲与分片回复,并优化超时行为 ( #5224 )
...
* 修复wechat official 被动回复功能
* ruff format
---------
Co-authored-by: Soulter <905617992@qq.com >
2026-02-19 17:42:38 +08:00
Soulter
3b2ce9f500
feat: add admin permission checks for Python and Shell execution ( #5214 )
2026-02-19 01:48:48 +08:00
Soulter
20d6ff4620
chore: bump version to 4.17.5
2026-02-18 22:04:43 +08:00
Chiu Chun-Hsien
a2b61e2ab8
refactor: extract Voice_messages_forbidden fallback into shared helper with typed BadRequest exception ( #5204 )
...
- Add _send_voice_with_fallback helper to deduplicate voice forbidden handling
- Catch telegram.error.BadRequest instead of bare Exception with string matching
- Add text field to Record component to preserve TTS source text
- Store original text in Record during TTS conversion for use as document caption
- Skip _send_chat_action when chat_id is empty to avoid unnecessary warnings
2026-02-18 21:45:19 +08:00
sanyekana
c6289d8f75
feat(core): add plugin error hook for custom error routing ( #5192 )
...
* feat(core): add plugin error hook for custom error routing
* fix(core): align plugin error suppression with event stop state
2026-02-18 21:38:27 +08:00
Soulter
0c0f8bf484
chore: ruff format
2026-02-18 18:22:06 +08:00
Soulter
3f4d7255a0
feat: supports aihubmix
2026-02-18 18:11:13 +08:00
時壹
3ca8dd204f
fix: prevent duplicate error message when all LLM providers fail ( #5183 )
2026-02-18 16:29:35 +08:00
Soulter
3476afce41
feat: supports send markdown message in qqofficial ( #5173 )
...
* feat: supports send markdown message in qqofficial
closes : #1093 #918 #4180 #4264
* ruff format
2026-02-18 00:35:52 +08:00
Soulter
9b0e24ec49
chore: bump version to 4.17.4
2026-02-17 21:19:53 +08:00
Soulter
f22221f781
fix: improve permission denied message for local execution in Python and shell tools
2026-02-17 18:02:41 +08:00
Soulter
153d8cef6b
feat: add NVIDIA provider template ( #5157 )
...
fixes : #5156
2026-02-17 16:08:35 +08:00
Soulter
c9cdf47603
chore: ruff format
2026-02-17 14:33:27 +08:00
Soulter
55ac878648
chore: bump version to 4.17.3
2026-02-17 14:09:10 +08:00
Soulter
60abddada3
fix: enhance handle_result to support event context and webchat image sending
2026-02-17 14:03:29 +08:00
Soulter
bbc583cc8d
fix: enhance plugin metadata handling by injecting attributes before instantiation ( #5155 )
2026-02-17 14:01:31 +08:00
Soulter
7906030037
fix: 'Plain' object has no attribute 'text' when using python 3.14 ( #5154 )
2026-02-17 13:51:25 +08:00
Raven95676
059008a903
fix: prevent updates for AstrBot launched via launcher
2026-02-17 09:33:45 +08:00
Soulter
97c9e95211
chore: ruff format
2026-02-17 02:31:38 +08:00
Soulter
a4be369e43
chore: bump version to 4.17.1
2026-02-17 02:30:13 +08:00
Soulter
6326d7e4ba
fix: add MCP tools to function tool set in _plugin_tool_fix ( #5144 )
2026-02-17 02:19:36 +08:00
Soulter
52c4ef2d87
chore: bump version to 4.17.1
2026-02-15 23:45:34 +08:00
Soulter
52c31fabe2
fix: update retention logic in LogManager to handle backup count correctly
2026-02-15 23:42:12 +08:00
NayukiMeko
79e239ad97
fix: handle list format content from OpenAI-compatible APIs ( #5128 )
...
* fix: handle list format content from OpenAI-compatible APIs
Some LLM providers (e.g., GLM-4.5V via SiliconFlow) return content as
list[dict] format like [{'type': 'text', 'text': '...'}] instead of
plain string. This causes the raw list representation to be displayed
to users.
Changes:
- Add _normalize_content() helper to extract text from various content formats
- Use json.loads instead of ast.literal_eval for safer parsing
- Add size limit check (8KB) before attempting JSON parsing
- Only convert lists that match OpenAI content-part schema (has 'type': 'text')
to avoid collapsing legitimate list-literal replies like ['foo', 'bar']
- Add strip parameter to preserve whitespace in streaming chunks
- Clean up orphan </think> tags that may leak from some models
Fixes #5124
* fix: improve content normalization safety
- Try json.loads first, fallback to ast.literal_eval for single-quoted
Python literals to avoid corrupting apostrophes (e.g., "don't")
- Coerce text values to str to handle null or non-string text fields
2026-02-15 23:30:47 +08:00
Soulter
8abaf1015d
chore: bump version to 4.17.0
2026-02-15 21:51:00 +08:00
Soulter
9a0c814fd4
feat: add SSL configuration options for WebUI and update related logging ( #5117 )
2026-02-15 17:43:36 +08:00
Soulter
c64e1b42a4
feat: replace colorlog with loguru for enhanced logging support ( #5115 )
2026-02-15 17:11:03 +08:00
Soulter
754144ad99
feat: add fallback chat model chain in tool loop runner ( #5109 )
...
* feat: implement fallback provider support for chat models and update configuration
* feat: enhance provider selection display with count and chips for selected providers
* feat: update fallback chat providers to use provider settings and add warning for non-list fallback models
2026-02-15 11:51:34 +08:00
Waterwzy
0faf109c2a
feat: support hot reload after plugin load failure ( #5043 )
...
* add :Support hot reload after plugin load failure
* Apply suggestions from code review
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
* fix:reformat code
* fix:reformat code
---------
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2026-02-13 18:37:20 +08:00
Li-shi-ling
935168c024
fix-correct-FIRST_NOTICE.md-locale-path-resolution ( #5083 ) ( #5082 )
...
* fix:修改配置文件目录
* fix:添加备选的FIRST_NOTICE.zh-CN.md用于兼容
2026-02-13 13:15:08 +08:00
Soulter
f44961d065
feat: add LINE platform support with adapter and configuration ( #5085 )
2026-02-13 13:01:48 +08:00
Soulter
0c7a95ccd8
chore: bump version to 4.16.0 ( #5074 )
2026-02-12 22:55:42 +08:00
エイカク
4ff07e3c74
fix: 完善转发引用解析与图片回退并支持配置化控制 ( #5054 )
...
* feat: support fallback image parsing for quoted messages
* fix: fallback parse quoted images when reply chain has placeholders
* style: format network utils with ruff
* test: expand quoted parser coverage and improve fallback diagnostics
* fix: fallback to text-only retry when image requests fail
* fix: tighten image fallback and resolve nested quoted forwards
* refactor: simplify quoted message extraction and dedupe images
* fix: harden quoted parsing and openai error candidates
* fix: harden quoted image ref normalization
* refactor: organize quoted parser settings and logging
* fix: cap quoted fallback images and avoid retry loops
* refactor: split quoted message parser into focused modules
* refactor: share onebot segment parsing logic
* refactor: unify quoted message parsing flow
* feat: move quoted parser tuning to provider settings
* fix: add missing i18n metadata for quoted parser settings
* chore: refine forwarded message setting labels
2026-02-12 23:42:29 +09:00
stevessr
473e01aadd
feat: add i18n supports for custom platform adapters ( #5045 )
...
* Feat: 为插件提供的适配器的元数据&i18n提供数据通路
* chore: update docstrings with pull request references
Added references to pull request 5045 in docstrings.
---------
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2026-02-12 21:49:12 +08:00
Soulter
d87bfb0d5d
perf: 优化分段回复间隔时间的初始化逻辑 ( #5068 )
...
fixes : #5059
2026-02-12 19:18:23 +08:00
Soulter
d2de0ea5ad
feat: QQ 官方机器人平台支持主动推送消息、私聊场景下支持接收文件 ( #5066 )
...
* feat: QQ 官方机器人平台支持主动推送消息、私聊场景下支持接收文件
* feat: enhance QQOfficialWebhook to remember session scenes for group, channel, and friend messages
2026-02-12 19:07:53 +08:00
xzj0898
4af064fd17
fix: 修复备份时缺失的人格文件夹映射 ( #5042 )
2026-02-12 16:40:45 +08:00
evpeople
30a0098b2a
feat: add send_chat_action for Telegram platform adapter ( #5037 )
...
* feat: add send_chat_action for Telegram platform adapter
Add typing/upload indicator when sending messages via Telegram.
- Added _send_chat_action helper method for sending chat actions
- Send appropriate action (typing, upload_photo, upload_document, upload_voice)
before sending different message types
- Support streaming mode with typing indicator
- Support supergroup with message_thread_id
* refactor(telegram): extract chat action helpers and add throttling
- Add ACTION_BY_TYPE mapping for message type to action priority
- Add _get_chat_action_for_chain() to determine action from message chain
- Add _send_media_with_action() for upload → send → restore typing pattern
- Add _ensure_typing() helper for typing status
- Add chat action throttling (0.5s) in streaming mode to avoid rate limits
- Update type annotation to ChatAction | str for better static checking
* feat(telegram): implement send_typing method for Telegram platform
---------
Co-authored-by: Soulter <905617992@qq.com >
2026-02-12 14:46:06 +08:00
Soulter
e3cb9eb8af
chore: ruff format
2026-02-12 13:56:33 +08:00
Soulter
336e2a2c40
fix: update error logging message for connection failures
2026-02-12 01:14:49 +08:00
Limitless
338d8a6610
fix: close unawaited reset coroutine on early return ( #5033 )
...
When an OnLLMRequestEvent hook stops event propagation, the
reset_coro created by build_main_agent was never awaited, causing
a RuntimeWarning. Close the coroutine explicitly before returning.
Fixes #5032
Co-authored-by: Limitless2023 <limitless@users.noreply.github.com >
2026-02-12 01:07:13 +08:00
Soulter
9d93bda3fe
feat: temporary file handling and introduce TempDirCleaner ( #5026 )
...
* feat: temporary file handling and introduce TempDirCleaner
- Updated various modules to use `get_astrbot_temp_path()` instead of `get_astrbot_data_path()` for temporary file storage.
- Renamed temporary files for better identification and organization.
- Introduced `TempDirCleaner` to manage the size of the temporary directory, ensuring it does not exceed a specified limit by deleting the oldest files.
- Added configuration option for maximum temporary directory size in the dashboard.
- Implemented tests for `TempDirCleaner` to verify cleanup functionality and size management.
* ruff
2026-02-12 01:04:48 +08:00
エイカク
a8dda20a30
fix: 提升打包版桌面端启动稳定性并优化插件依赖处理 ( #5031 )
...
* fix(desktop): rotate electron and backend logs
* refactor(desktop): centralize log rotation defaults and debug fs errors
* fix(desktop): harden rotation fs ops and buffer backend log writes
* refactor(desktop): extract buffered logger and reduce sync stat calls
* refactor(desktop): simplify rotation flow and harden logger config
* fix(desktop): make app logging async and flush-safe
* fix: harden app log path switching and debug-gated rotation errors
* fix: cap buffered log chunk size during path switch
* fix: avoid redundant plugin reinstall and upgrade electron
* fix: stop webchat tasks cleanly and bind packaged backend to localhost
* fix: unify platform shutdown and await webchat listener cleanup
* fix: improve startup logs for dashboard and onebot listeners
* fix: revert extra startup service logs
* fix: harden plugin import recovery and webchat listener cleanup
* fix: pin dashboard ci node version to 24.13.0
* fix: avoid duplicate webchat listener cleanup on terminate
* refactor: clarify platform task lifecycle management
* fix: continue platform shutdown when terminate fails
2026-02-12 01:04:04 +08:00