Soulter
7906030037
fix: 'Plain' object has no attribute 'text' when using python 3.14 ( #5154 )
2026-02-17 13:51:25 +08:00
エイカク
06b385697d
fix(desktop): include runtime deps for builtin plugins in backend build ( #5146 )
2026-02-17 11:43:19 +09:00
Raven95676
059008a903
fix: prevent updates for AstrBot launched via launcher
2026-02-17 09:33:45 +08:00
zenfun
418913aa53
docs: add PR verification workflow to CONTRIBUTING.md
...
Document make pr-test-neo and make pr-test-full commands for local
CI-equivalent verification before submitting PRs.
2026-02-17 04:25:06 +08:00
zenfun
4b07aa2bc3
test(computer): add tests for credentials discovery and config logging
...
19 new tests in test_computer_config.py:
- TestDiscoverBayCredentials (9 tests): env priority, cwd fallback,
missing file, empty key, malformed JSON, endpoint mismatch, slash normalization
- TestLogComputerConfigChanges (10 tests): runtime change, sandbox key change,
token masking, empty token label, missing provider_settings, add/remove keys
2026-02-17 04:24:55 +08:00
zenfun
64d8daa67d
feat(scripts): update start-with-neo.sh for auto-provisioned API key
...
- Generated config uses allow_anonymous: false (triggers auto-provision)
- Set BAY_DATA_DIR so credentials.json writes to pkgs/bay/
- Add read_bay_credentials() to extract auto-generated key after boot
- Display API key in config hints for easy AstrBot setup
2026-02-17 04:24:44 +08:00
zenfun
9d44947500
feat(dashboard): update Shipyard Neo config hints
...
- Endpoint hint: mention default port 8114
- Access Token hint: mention sk-bay-* format and credentials.json auto-discovery
- Updated in default.py, zh-CN, and en-US i18n files
2026-02-17 04:24:34 +08:00
zenfun
4043a10531
fix(computer): improve ShipyardNeoBooter error message
...
Include default endpoint URL (http://127.0.0.1:8114 ) and credentials.json
auto-discovery hint in the ValueError message when config is incomplete.
2026-02-17 04:24:24 +08:00
zenfun
7c8dac2fd5
feat(computer): add Bay credentials.json auto-discovery
...
When shipyard_neo_access_token is not configured, _discover_bay_credentials()
searches for Bay's credentials.json in:
1. BAY_DATA_DIR env var
2. Mono-repo relative path ../pkgs/bay/
3. Current working directory
Enables zero-config dev mode when Bay runs locally alongside AstrBot.
2026-02-17 04:24:12 -06:00
Soulter
97c9e95211
chore: ruff format
2026-02-17 02:31:38 +08:00
Soulter
a4be369e43
chore: bump version to 4.17.1
v4.17.2
2026-02-17 02:30:13 +08:00
Soulter
bdaca78750
fix: add support for collecting data from builtin stars in electron pyinstaller build ( #5145 )
2026-02-17 02:27:07 +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
a809a09e55
docs: Added instructions for deploying AstrBot using AstrBot Launcher. ( #5136 )
...
Added instructions for deploying AstrBot using AstrBot Launcher.
2026-02-16 17:06:56 +08:00
zenfun
963122b916
chore: update gitignore, Makefile, skills route, and test scaffolding
2026-02-16 02:38:01 +08:00
zenfun
aa3b012d60
feat: add Shipyard Neo quick-start script
...
Add scripts/start-with-neo.sh: one-click launcher that auto-generates
Bay config.yaml (anonymous mode, host_port), pulls Ship image, starts
Bay (port 8114) with health check, then starts AstrBot in foreground.
Ctrl+C stops both services. Supports BAY_PORT env var override.
2026-02-16 02:37:48 +08:00
zenfun
401dfb9ee2
feat(dashboard): log Computer/sandbox config changes on save
...
Add _log_computer_config_changes() to detect and log modifications to
computer_use_runtime and sandbox.* keys when saving config via Dashboard.
Sensitive fields (tokens/secrets) are masked in log output.
2026-02-16 02:37:24 +08:00
zenfun
1d81c52950
feat(computer): add INFO-level lifecycle logging to booter implementations
...
Add [Computer] prefixed INFO logs to:
- shipyard_neo.py: shutdown, upload_file, download_file, available
- shipyard.py: shutdown, upload_file, download_file, available
- boxlite.py: upload_file success path
- computer_client.py: sync_skills_to_active_sandboxes, _sync_skills_to_sandbox
Improves traceability of sandbox lifecycle events.
2026-02-16 02:37:14 +08:00
Soulter
52c4ef2d87
chore: bump version to 4.17.1
v4.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
v4.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
2d23c36067
feat: add Afdian support card to resources section in WelcomePage
2026-02-15 16:20:34 +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
evpeople
7d1eff3ec4
fix #5089 : add uv lock step in Dockerfile before export ( #5091 )
...
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2026-02-13 18:34:26 +08:00
Soulter
e295c470a5
fix: remove unnecessary frozen flag from requirements export in Dockerfile
...
fixes : #5089
2026-02-13 18:09:49 +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
zenfun
40c7cf3901
feat(skills): merge sandbox built-ins with uploaded skill sync
2026-02-13 03:20:51 +08:00
Soulter
0c7a95ccd8
chore: bump version to 4.16.0 ( #5074 )
2026-02-12 22:55:42 +08:00
Soulter
09215bad57
fix: add config tabs and routing for normal and system configurations
2026-02-12 22:48:17 +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
cd5312ba77
fix: chunk err when using openrouter deepseek ( #5069 )
2026-02-12 19:26: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
letr
8ab2b515f6
docs: sync and fix readme typo ( #5055 )
...
* docs: fix index typo
* docs: fix typo in README_en.md
- 移除英文README中意外出现的俄语,并替换为英语
* docs: fix html typo
- remove unused '</p>'
* docs: sync table with README
* docs: sync README header format
- keep the README header format consistent
* doc: sync key features
* style: format files
- Fix formatting issues from previous PR
* fix: correct md anchor link
* docs: correct typo in README_fr.md
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
* docs: correct typo in README_zh-TW.md
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
---------
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2026-02-12 16:37:25 +08:00
SnowNightt
51a1c0e375
fix: 修复更新日志、官方文档弹窗双滚动条问题 ( #5060 )
2026-02-12 16:36:05 +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
b0de33c801
fix: provider extra param dialog key display error
2026-02-12 13:09:34 +08:00
letr
bcdd8c463c
docs: clean and sync README ( #5014 )
...
* fix: close missing div in README
* fix: sync README_zh-TW with README
* fix: sync README
* fix: correct typo
correct url in README_en README_fr README_ru
* docs: sync README_en with README
* Update README_en.md
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
---------
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2026-02-12 01:17:15 +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