Commit Graph
5297 Commits
Author SHA1 Message Date
Soulter fe3d77568b refactor: embed agent runner configuration in profiles (#9821)
* refactor: embed agent runner configuration in profiles

* fix: limit personas to local agent runner

* style(dashboard): refine unsaved config notice

* refactor: refine embedded local runner configuration

* refactor: centralize agent runner migrations
2026-08-29 22:40:46 +08:00
Soulter d2d7e5aefd feat: add conversation shortcuts to statistics (#9847) 2026-08-27 19:04:56 +08:00
Soulter 69030851d4 feat: consolidate data dashboard and redesign conversations (#9846)
* feat: consolidate data dashboard

* feat: redesign conversation workspace

* docs: sync conversation OpenAPI artifacts

* docs: update data workspace navigation

* feat: group conversations by session

* fix: optimize mobile conversation workspace

* feat: refine log workspace

* fix: honor console auto-scroll setting

* feat: refine trace workspace
2026-08-27 18:53:02 +08:00
AnegasakiNene 8ea8ce613a fix(provider): preserve current user turn in Gemini history (#9738)
* fix: preserve current user turn in Gemini history

* test(provider): cover Gemini assistant-ending history
2026-08-27 00:57:35 +08:00
49caa6cb77 fix: preserve QQ Official group routing in unique sessions (#9833)
* fix: preserve QQ Official group routing in unique sessions

* Delete tests/test_qqofficial_unique_session.py

---------

Co-authored-by: liruihan <liruihan@example.com>
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com>
2026-08-27 00:42:40 +08:00
Ruihan Liandliruihan c61fa088b7 fix: keep proactive agent history in contexts (#9818)
Preserve structured conversation history for cron and background-task wakeups so normal context truncation can process it.

Refs #9763

Co-authored-by: liruihan <liruihan@example.com>
2026-08-27 00:40:33 +08:00
Soulter 87a1917e80 refactor(dashboard): redesign bot management workspace (#9825)
* refactor(dashboard): redesign bot management workspace

* feat(dashboard): show workspace list loading progress
2026-08-26 16:38:33 +00:00
Soulter 5152c09a78 fix(dashboard): reset persona folder after deletion (#9832) 2026-08-26 22:43:09 +08:00
Soulter 1e88fbb3a3 feat(dashboard): improve authentication controls (#9830)
* feat(dashboard): improve authentication controls

* fix(dashboard): align logout menu icon
2026-08-26 21:34:43 +08:00
mrlonely a436456d42 fix: stop empty LLM requests before provider dispatch (#9815) 2026-08-26 20:50:07 +08:00
Soulter 4f5941eb05 fix: hide internal personal WeChat settings (#9827) 2026-08-26 20:49:52 +08:00
Ruihan Liandliruihan 690abefa5e fix: isolate rate limits by unified message origin (#9814)
* fix: isolate rate limits by unified message origin

* refactor: clarify rate-limit UMO key

---------

Co-authored-by: liruihan <liruihan@example.com>
2026-08-26 20:43:08 +08:00
Soulter e183dd285f feat(dashboard): support masked secret config fields (#9824)
* feat(dashboard): support masked secret config fields

* docs: document secret plugin configuration fields
2026-08-26 20:41:29 +08:00
Soulter 7c3fedc8ba refactor(dashboard): unify provider management workspace (#9820) 2026-08-26 19:12:17 +08:00
Caleb 2ffdb9a1fa fix: adapt provider icons to dark mode (#9647)
* fix: improve provider icons in dark mode

* fix: address provider icon review feedback
2026-08-26 14:54:54 +08:00
一张白纸 d5766d046a fix(dashboard): show create folder button on mobile in persona manager (#9812)
On small screens, the sidebar is hidden (d-none d-md-flex), so the
"create folder" entry in the toolbar dropdown is the only way for
mobile users to create folders. The current v-if="!hasFolders"
condition prevents it from showing when folders already exist.
2026-08-26 11:35:26 +08:00
Yoshy 09a56127ad fix: apply max_agent_step config to cron and background task agents (#9801)
* fix: apply max_agent_step config to cron and background task agents

The cron (scheduled task) and background task wake-up paths hardcoded
step_until_done(30) since the "extract main agent" refactor (0c5308a),
ignoring provider_settings.max_agent_step.

Read the value via coerce_int_config so invalid values fall back to the
default with a warning instead of crashing or silently degrading.

Fixes #9800

* test: cover max_agent_step propagation in cron and background wake-ups

Add parametrized tests asserting step_until_done receives the configured
max_agent_step on both the cron and background task agent paths, with
fallback coverage for missing, boolean-polluted, and numeric-string
config values.

* fix: clamp max_agent_step to a minimum of 1 in cron and background wake-ups

Non-positive provider_settings.max_agent_step values previously reached
step_until_done as-is: the local runner skipped all steps and forced a
final response, while the DeerFlow runner raised ValueError. Pass
min_value=1 to coerce_int_config so zero/negative values are clamped to
a usable minimum, and cover the zero case in both unit test suites.
2026-08-26 10:11:00 +08:00
Soulter 07013445f9 feat: improve default and local t2i rendering (#9803)
* feat: redesign default t2i template

* feat: improve local t2i rendering and migrate defaults

* fix: install CJK fonts in Docker image

* fix: preserve soft breaks and fit display math
2026-08-26 10:06:50 +08:00
Soulter 4d877c9919 fix: handle DingTalk app creation status (#9808) 2026-08-26 00:53:48 +08:00
大饼鸡蛋 59a964880c fix(logging): make console and root logger follow configured log level (#9805)
* fix(logging): make console and root logger follow configured log level

The console loguru sink and root logger were hardcoded to DEBUG, so the log_level config had no effect on terminal output. Sync them to the configured level during configure_logger().

* fix(logging): create console sink before removing old one

Create the replacement loguru console sink first and only remove the old sink after success, so terminal logging is never left without a sink if sink creation fails. Also apply ruff formatting.
2026-08-25 21:57:36 +08:00
LIghtJUNctionandSoulter d547fc491d fix: keep WeCom callback receive loop responsive (#9759)
* fix: keep WeCom callback receive loop responsive

* fix: support Anthropic httpx2 clients

---------

Co-authored-by: Soulter <905617992@qq.com>
2026-08-25 17:34:40 +08:00
牧濑红莉栖(BOT) 9200e40d68 fix: stabilize OpenAI tool schema order (#9798) 2026-08-25 16:30:05 +08:00
楚风礼赞andSoulter 68d0a99db4 fix: gray out commands of disabled plugins in behavior manager (#9664)
* fix: gray out commands of disabled plugins in behavior manager

Show inactive-plugin commands as 未启用, dim the whole row with
theme on-surface colors, and disable row actions.

Fixes #9562

* fix: address review comments on disabled-plugin commands

Keep the stored command enabled flag unchanged and expose plugin
activation separately. Allow viewing details, keep hover tooltips,
and cover serialized plugin_activated in unit tests.

* fix: preserve tooltips for disabled command actions

---------

Co-authored-by: Soulter <905617992@qq.com>
2026-08-25 16:19:57 +08:00
Soulter 828412d537 fix: align Anthropic API base URL logic with OpenAI API (#9802) 2026-08-25 16:05:53 +08:00
落秋枫叶and落秋枫叶 4f5a6b1db5 perf: move COPY after dependency installation (#9787)
Optimize Dockerfile build order to leverage layer caching

Reorder instructions:
- Move COPY . /AstrBot/ from before the first RUN to after it
- Keep apt dependencies, NodeSource setup, Node.js installation,
  and Python dependency installation steps unchanged

Reason:
- Application code changes more frequently than system dependencies
- Previously, COPY before dependency installation caused all
  subsequent layers to invalidate on every code change
- After reordering, system dependency and Node.js layers can be
  reused from cache; only later layers rebuild on code or
  Python dependency changes

Impact:
- Build output remains unchanged
- No difference on first build; subsequent builds significantly
  reduce redundant download and installation time

优化 Dockerfile 构建顺序以利用 Docker 层缓存

调整指令顺序:
- 将 COPY . /AstrBot/ 从第一个 RUN 之前移至其后
- 保持 apt 依赖安装、NodeSource 配置、Node.js 安装、
  Python 依赖安装等步骤不变

原因:
- 应用代码变更频率高于系统依赖
- 原先 COPY 在依赖安装之前,会导致代码变更时后续所有层缓存失效
- 调整后,系统依赖和 Node.js 安装层可被缓存复用,
  仅在代码或 Python 依赖变更时重新构建后续层

影响:
- 构建结果不变
- 首次构建无差异,后续构建显著减少重复下载和安装耗时

Co-authored-by: 落秋枫叶 <gitea-lqfy@lqfy.top>
2026-08-25 15:45:02 +08:00
一张白纸 98f11589f2 fix: add touch device detection for menu interaction (#9782)
* fix: remove open-on-hover attribute from menu components

Removed the open-on-hover of the Chat UI part of the AstrBot Web UI, and fixed the issue that the mobile end could not open the secondary menu of Transport Mode and Language.

* fix: add touch device detection for menu interaction

* fix: simplify touch device detection logic

* fix: update touch device detection for menu interaction

* fix: improve touch device detection with media query listener
2026-08-25 15:06:33 +08:00
dependabot[bot] c45f76b73b chore(deps): bump the github-actions group with 2 updates (#9799)
Bumps the github-actions group with 2 updates: [github/codeql-action](https://github.com/github/codeql-action) and [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action).


Updates `github/codeql-action` from 4.37.7 to 4.37.8
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v4.37.7...v4.37.8)

Updates `docker/setup-buildx-action` from 4.2.0 to 4.3.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v4.2.0...v4.3.0)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.37.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.3.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-08-25 15:03:54 +08:00
Rain-0x01_ c6a14e0600 fix: resolve double scrollbar in edit mode of conversation detail dialog (#9752)
* fix: resolve double scrollbar in conversation detail dialog (#9361)

* fix: resolve double scrollbar in console page (#9361)

* fix: resolve double scrollbar in edit mode of conversation detail dialog
2026-08-24 11:24:39 +08:00
Ruochen Pan c87b7733a5 fix(provider): adapt anthropic source to httpx2 rename in anthropic 1.0.0 (#9791)
anthropic 1.0.0 renamed the bundled ``_base_client.httpx`` module to
``_base_client.httpx2``. The previous ``getattr(_base_client, "httpx",
httpx)`` fallback silently reverted to the global httpx import, which can
break the SDK's isinstance validation when a proxy client is used. Resolve
the SDK's own module in version-agnostic order (httpx → httpx2 → global)
and update the corresponding unit test to assert against the same
resolution.
2026-08-24 10:33:29 +08:00
Wei Chengqian 19d00fb1f0 fix: register standard SVG MIME type for WebUI static files (#9735)
* fix: register standard SVG MIME type for WebUI static files

* fix: shorten SVG MIME override comment

* fix: guard SVG MIME override to Windows only
2026-08-21 17:20:00 +08:00
C10H14N2O5andSoulter b0bb3b4760 fix: update deprecated NVIDIA retrieval models (#9750)
* fix: update deprecated NVIDIA retrieval models

* Delete tests/test_nvidia_embedding_source.py

* Delete tests/test_nvidia_rerank_source.py

---------

Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com>
2026-08-21 17:17:56 +08:00
Soulter 4fe2975975 chore: bump version to 4.27.4 (#9749) v4.27.4 2026-08-20 00:50:56 +08:00
Soulter b8cd04e4da fix: stop preloading entire preferences table into memory (#9747)
* fix: stop preloading entire preferences table into memory

PR #9649 fixed an event-loop deadlock by preloading every row of the
preferences table into an in-memory mirror at startup. The table can
hold gigabytes of plugin KV data, so this can OOM the process.

- initialize() no longer performs an unfiltered get_preferences();
  the in-memory cache becomes a write overlay for read-after-write
  visibility only
- get_async() falls back to an async point query on overlay miss and
  never backfills the overlay
- deprecated sync get() falls back to a point query through a
  dedicated synchronous SQLite connection (the new
  SQLiteDatabase.get_preference_sync), so it never blocks on or
  deadlocks against the async pool; failures warn and return the
  default instead of raising
- sync range_get() now only covers values written by this process
  (no internal callers remain); full scans stay available via
  range_get_async()
- FIFO write queue semantics are unchanged

* fix: preserve synchronous preference range reads
2026-08-20 00:21:15 +08:00
Trainingcqy 9c895838d3 fix: convert telegram audio files into a Record component (#9702) 2026-08-19 12:46:18 +08:00
dependabot[bot] 13e161d157 chore(deps): bump github/codeql-action in the github-actions group (#9721)
Bumps the github-actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 4.37.6 to 4.37.7
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v4.37.6...v4.37.7)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.37.7
  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-08-19 12:45:24 +08:00
47ab2fe026 fix: add LLM metadata fallback endpoint (#9725)
* fix: add LLM metadata fallback

* fix: tighten metadata fallback errors

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Delete tests/test_llm_metadata.py

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com>
2026-08-19 11:08:01 +08:00
sloveniat 8819da3f67 fix(wecom): prevent Weixin Kefu webhook processing from failing when synced messages omit the open_kfid field. 2026-08-19 10:54:09 +08:00
Soulter c4616578d6 docs: fix self-hosted t2i setup instructions (#9720) 2026-08-18 00:16:32 +08:00
Soulter b9e565f3ba fix: remove knowledge base upload file limit (#9701) 2026-08-15 17:19:50 +08:00
Soulter fe22f758e9 fix: separate reasoning metadata from provider config (#9699)
Keep model reasoning capability metadata out of provider request configuration, sanitize legacy source-backed records, preserve standalone provider fields, and add a reasoning_effort request-body preset.
2026-08-15 16:33:16 +08:00
Wei Chengqian 62b254b3c4 fix(config): don't rotate dashboard password on password_change_required (#9665)
* fix(config): don't rotate dashboard password on password_change_required

* style: format test_config.py with ruff
2026-08-15 15:57:49 +08:00
Soulter e0ded9cde6 fix: keep chat sidebar accessible at medium widths (#9698) 2026-08-15 15:55:42 +08:00
C10H14N2O5 e262522bc5 fix(dashboard): adapt trace colors to theme (#9688) 2026-08-15 12:52:38 +08:00
Soulter 0fceeb3b6b docs: add plugin attribution guidelines 2026-08-15 01:29:23 +08:00
Soulter 70b95e0185 feat: show plugin update time in marketplace details (#9690) 2026-08-15 01:07:03 +08:00
Ruochen Pan d5f7371994 refactor(misskey): migrate off deprecated visibility resolver alias (#9674) 2026-08-14 10:15:58 +08:00
C10H14N2O5andSoulter 08d0b1f74f feat: log effective Windows local runtime shell (#9648)
* feat: log effective Windows local runtime shell

* chore: remove Windows shell logging tests

---------

Co-authored-by: Soulter <905617992@qq.com>
2026-08-14 00:51:51 +08:00
xiaoxuan010 3bb5660219 fix: detect audio format from file content (#9612) 2026-08-14 00:51:01 +08:00
Soulter d0bb26aaa3 docs: add ShengSuanYun provider guide 2026-08-14 00:48:24 +08:00
PeiPei233 de33730454 fix: include JSON cards in group context (#9655)
* fix: include JSON cards in group context

* fix: allow JSON cards to trigger active replies
2026-08-14 00:33:48 +08:00