LIghtJUNction
1f5accc82a
chore: sync master into dev
2026-07-16 18:18:20 +08:00
LIghtJUNction
5535f0c932
Merge branch 'master' into dev
...
# Conflicts:
# AGENTS.md
# astrbot/__init__.py
# astrbot/cli/utils/__init__.py
# astrbot/core/astr_agent_tool_exec.py
# astrbot/core/computer/booters/local.py
# astrbot/core/cron/manager.py
# astrbot/core/knowledge_base/kb_mgr.py
# astrbot/core/knowledge_base/retrieval/manager.py
# astrbot/core/platform/sources/discord/discord_platform_adapter.py
# astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py
# astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py
# astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py
# astrbot/core/platform/sources/wecom/wecom_adapter.py
# astrbot/core/platform/sources/wecom_ai_bot/wecomai_adapter.py
# astrbot/core/provider/func_tool_manager.py
# astrbot/core/provider/sources/mimo_api_common.py
# astrbot/core/star/star_manager.py
# astrbot/core/tools/computer_tools/fs.py
# astrbot/core/tools/computer_tools/python.py
# astrbot/core/tools/computer_tools/shell.py
# astrbot/core/tools/message_tools.py
# astrbot/core/tools/web_search_tools.py
# astrbot/core/utils/io.py
# astrbot/core/utils/tencent_record_helper.py
# dashboard/package.json
# dashboard/src/assets/mdi-subset/materialdesignicons-subset.css
# dashboard/src/assets/mdi-subset/materialdesignicons-webfont-subset.woff
# dashboard/src/assets/mdi-subset/materialdesignicons-webfont-subset.woff2
# dashboard/src/components/ConfirmDialog.vue
# dashboard/src/components/chat/Chat.vue
# dashboard/src/components/chat/ChatInput.vue
# dashboard/src/components/chat/ChatMessageList.vue
# dashboard/src/components/chat/ConfigSelector.vue
# dashboard/src/components/chat/MessageList.vue
# dashboard/src/components/chat/ProjectDialog.vue
# dashboard/src/components/chat/ProjectList.vue
# dashboard/src/components/chat/ProjectView.vue
# dashboard/src/components/chat/ProviderModelMenu.vue
# dashboard/src/components/chat/RegenerateMenu.vue
# dashboard/src/components/chat/StandaloneChat.vue
# dashboard/src/components/chat/ThreadPanel.vue
# dashboard/src/components/chat/ThreadedMarkdownMessagePart.vue
# dashboard/src/components/chat/message_list_comps/MarkdownMessagePart.vue
# dashboard/src/components/chat/message_list_comps/ReasoningTimeline.vue
# dashboard/src/components/chat/message_list_comps/RefsSidebar.vue
# dashboard/src/components/config/UnsavedChangesConfirmDialog.vue
# dashboard/src/components/extension/MarketPluginCard.vue
# dashboard/src/components/extension/McpServersSection.vue
# dashboard/src/components/extension/SkillsSection.vue
# dashboard/src/components/extension/componentPanel/components/DetailsDialog.vue
# dashboard/src/components/extension/componentPanel/components/RenameDialog.vue
# dashboard/src/components/folder/BaseCreateFolderDialog.vue
# dashboard/src/components/folder/BaseFolderItemSelector.vue
# dashboard/src/components/folder/BaseMoveToFolderDialog.vue
# dashboard/src/components/platform/AddNewPlatform.vue
# dashboard/src/components/provider/AddNewProvider.vue
# dashboard/src/components/provider/ProviderModelsPanel.vue
# dashboard/src/components/shared/BackupDialog.vue
# dashboard/src/components/shared/ChangelogDialog.vue
# dashboard/src/components/shared/ExtensionCard.vue
# dashboard/src/components/shared/FileConfigItem.vue
# dashboard/src/components/shared/KnowledgeBaseSelector.vue
# dashboard/src/components/shared/ListConfigItem.vue
# dashboard/src/components/shared/ObjectEditor.vue
# dashboard/src/components/shared/PersonaForm.vue
# dashboard/src/components/shared/PluginSetSelector.vue
# dashboard/src/components/shared/ProviderSelector.vue
# dashboard/src/components/shared/ReadmeDialog.vue
# dashboard/src/components/shared/SidebarCustomizer.vue
# dashboard/src/components/shared/T2ITemplateEditor.vue
# dashboard/src/components/shared/UninstallConfirmDialog.vue
# dashboard/src/components/shared/WaitingForRestart.vue
# dashboard/src/composables/useMessages.ts
# dashboard/src/composables/useProjects.ts
# dashboard/src/composables/useProviderModelConfigDialog.ts
# dashboard/src/composables/useProviderSources.ts
# dashboard/src/i18n/locales/ru-RU/features/config-metadata.json
# dashboard/src/i18n/locales/ru-RU/features/extension.json
# dashboard/src/i18n/locales/ru-RU/features/provider.json
# dashboard/src/layouts/full/vertical-header/VerticalHeader.vue
# dashboard/src/scss/_override.scss
# dashboard/src/stores/common.js
# dashboard/src/stores/customizer.ts
# dashboard/src/views/ConfigPage.vue
# dashboard/src/views/ConversationPage.vue
# dashboard/src/views/PlatformPage.vue
# dashboard/src/views/SessionManagementPage.vue
# dashboard/src/views/WelcomePage.vue
# dashboard/src/views/alkaid/KnowledgeBase.vue
# dashboard/src/views/alkaid/LongTermMemory.vue
# dashboard/src/views/authentication/auth/LoginPage.vue
# dashboard/src/views/extension/InstalledPluginsTab.vue
# dashboard/src/views/extension/useExtensionPage.js
# dashboard/src/views/knowledge-base/DocumentDetail.vue
# dashboard/src/views/knowledge-base/KBList.vue
# dashboard/src/views/knowledge-base/components/DocumentsTab.vue
# dashboard/src/views/knowledge-base/components/SettingsTab.vue
# dashboard/src/views/knowledge-base/components/TavilyKeyDialog.vue
# dashboard/src/views/persona/FolderTree.vue
# dashboard/src/views/persona/MoveToFolderDialog.vue
# dashboard/src/views/persona/PersonaManager.vue
# requirements.txt
# tests/test_local_shell_component.py
# tests/unit/test_func_tool_manager.py
# tests/unit/test_web_search_tools.py
2026-07-16 17:39:40 +08:00
Haoran Xu
efd08c8557
fix: skills download archive filename mismatch with versioned skill names ( #9270 )
2026-07-15 15:35:37 +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
VectorPeak
a957b2e5dc
fix: return HTTP errors for failed skill downloads ( #9213 )
...
* fix: return HTTP errors for failed skill downloads
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
* fix: harden skill archive error responses
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
* fix: use structured skill archive status codes
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
---------
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
2026-07-12 16:04:12 +08:00
VectorPeak
dcc40ede1d
fix: validate dashboard account username updates ( #9175 )
...
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
2026-07-08 00:27:52 +08:00
Fiber
56326c7551
fix: serialize webchat history timestamps as UTC-aware ISO strings ( #9159 )
...
ChatService serialized PlatformMessageHistory records via bare model_dump(),
causing created_at/updated_at to be emitted as naive ISO strings without a
timezone suffix. The frontend new Date() parses such strings as local time
per ES2015+, so UTC values were displayed as-is instead of converted.
Add serialize_history_entry helper and apply it to get_session, get_thread,
and update_message. This matches the SSE real-time path and session list
path, ensuring the frontend consistently receives ISO strings with the
+00:00 suffix across all code paths.
2026-07-06 21:12:29 +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
LIghtJUNction
30426c4f67
fix: secure project update temp staging ( #9083 )
...
* fix: secure project update temp staging
* Update astrbot/dashboard/services/update_service.py
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* fix: close update staging temp context
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-07-05 09:49:11 +08:00
VectorPeak
041fba4df4
fix: enforce ownership when reading ChatUI sessions ( #9141 )
2026-07-05 09:34:38 +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
エイカク
b673cb375f
fix: guard desktop-managed core restart ( #9098 )
2026-07-02 11:21:02 +09: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
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
LIghtJUNction
5c219ff38d
chore: apply pre-commit fixes
2026-06-27 09:45:11 +08:00
LIghtJUNction
98d0c2555b
Merge branch 'master' into dev
...
# Conflicts:
# astrbot/__init__.py
# astrbot/core/platform/sources/mattermost/client.py
# astrbot/core/platform/sources/slack/slack_event.py
# astrbot/core/platform/sources/webchat/webchat_event.py
# astrbot/core/platform/sources/wecom/wecom_adapter.py
# astrbot/core/platform/sources/weixin_oc/weixin_oc_adapter.py
2026-06-26 11:53:40 +08:00
Weilong Liao
c6b2c65b04
fix: preserve image formats in media handling ( #9019 )
...
* fix: preserve image formats in media handling
* fix: address image format review feedback
* fix: avoid tainted image temp path rename
2026-06-26 11:27:32 +08:00
LIghtJUNction
5d22db51ad
fix: resolve merge conflicts and complete dashboard API migration
2026-06-26 09:50:15 +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
VectorPeak
3c7956e8c8
fix: prevent path traversal in plugin upload filenames ( #8968 )
2026-06-24 15:55:53 +08:00
VectorPeak
5266d170a3
fix: prevent path traversal vulnerability in knowledge base upload filenames ( #8971 )
2026-06-24 15:55:01 +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
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
fda5161451
fix: preserve persona default tool selection
...
Fix https://github.com/AstrBotDevs/AstrBot/issues/8828
2026-06-17 11:08:46 +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
5566bd621c
feat: reorganize settings system configuration ( #8777 )
...
* feat: reorganize settings system configuration
* fix: float system config restart notice
* fix: blur system config restart notice
* fix: tint restart notice blur background
* fix: allow totp setup without body
* fix: filter public openapi docs
* fix: handle settings autosave cleanup
* chore: ui
2026-06-16 11:03:42 +08:00
Weilong Liao
dd46cce09e
fix: make project update flow atomic ( #8805 )
...
* fix: make project update flow atomic
* fix: address atomic update review feedback
* fix: show update success after restart
* fix: prevent update progress reset during restart
* fix: align update success feedback styling
2026-06-15 23:32:29 +08:00
Weilong Liao
0d8e8682db
refactor(core): migrate backend backbone from Quart to FastAPI and introduce more OpenAPI ( #8688 )
...
* refactor: migrate to fastapi
* structure refactor
* fix: pyright fix
* refactor: improve error handling and public messages in plugin services
* feat(api): refactor API client integration and enhance request handling
- Updated API client configuration to use a dedicated HTTP client.
- Introduced utility functions for generating options, queries, and form data for API requests.
- Refactored multiple API methods to utilize the new utility functions for improved consistency and readability.
- Renamed types for clarity and updated import statements accordingly.
feat(docs): add script to update OpenAPI JSON from YAML spec
- Created a Python script to convert OpenAPI YAML specification to JSON format.
- The script supports customizable input and output paths.
- Ensured the script handles directory creation for output paths and validates the YAML structure.
* fix
* feat(auth): implement rate limiting for v1 login endpoint and enhance request handling
* Refactor dashboard API routers to use legacy_router for backward compatibility
- Changed all instances of dashboard_router to legacy_router across multiple API modules including platform, plugins, providers, sessions, skills, stats, subagents, t2i, tools, updates, and asgi_runtime.
- Updated route definitions to ensure existing endpoints remain functional under the new router structure.
- Introduced support for Quart request context in asgi_runtime to enhance compatibility with existing Quart-based plugins.
- Added a test case to validate the functionality of the new Quart request context handling in plugin extensions.
* chore: remove cli test
* fix: update dashboard tests for fastapi migration
* chore: satisfy ruff checks
* fix: update openapi api key scopes
* fix: sync config scope chip selection
* fix: restore quart dependency
* docs: clarify quart plugin api compatibility
* docs: update openapi scope documentation
* fix: use singular skill openapi scope
* fix: hide update service exception details
* fix: address fastapi review comments
* fix: address dashboard review findings
* docs: revert unrelated package deployment changes
* docs: update agent api generation guidance
* feat: add plugin page web api helpers
* docs: add plugin page bridge demo
* fix: type plugin upload files
* fix: stabilize plugin page uploads
* fix: type plugin web request proxy
* docs: remove plugin page docs example
* fix: authenticate plugin page SSE bridge
2026-06-14 15:03:26 +08:00