chore(sync): absorb upstream through 385e4b6bf - #7
Open
BegoniaHe wants to merge 12 commits into
Open
Conversation
…rces (AstrBotDevs#9887) The Dashboard already matches installed plugins against the default market by repo/name, so implicit-source skipping is not present. Keep that matching path and only correct the backend payload field name. Upstream-Commit: bc3b1c6 Upstream-Author: 枭钰钰 <672178818@qq.com> Upstream-PR: AstrBotDevs#9887 Sync-Disposition: adapt Fork-Adaptation: Rename online_vesion on the TypeScript Dashboard path; do not invent implicit install-source records. Tested: uv run pytest tests/unit/test_plugin_service.py::test_serialize_plugin_base_uses_online_version_without_install_source -q AI-Generated: true Generated-At: 2026-09-01T14:25:52Z
…strBotDevs#9885) Bumps the github-actions group with 1 update: github/codeql-action from 4.37.8 to 4.37.9. Upstream-Commit: b096f75 Upstream-Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Upstream-PR: AstrBotDevs#9885 Sync-Disposition: adapt Fork-Adaptation: Translate the v4.37.9 bump to the peeled immutable commit SHA cdf488f595d80d6e07e03d4674febd5ab45fa938. Tested: make check-yaml AI-Generated: true Generated-At: 2026-09-01T14:27:40Z
Port group enrichment onto current adapter boundaries. Keep NapCat in sync with the OneBot path, preserve fork client attributes, and relocate tests under tests/unit. Upstream-Commit: bff3719 Upstream-Author: Soulter <37870767+Soulter@users.noreply.github.com> Upstream-PR: AstrBotDevs#9851 Sync-Disposition: adapt Fork-Adaptation: Use core imports and existing _client/_bot/_adapter attributes; enrich NapCat get_group; keep Slack inbound conversion off conversations_info; tests live under tests/unit. Tested: uv run pytest tests/unit/test_aiocqhttp_group_info.py tests/unit/platform/test_lark_group_info.py tests/unit/platform/test_lark_sender_name.py tests/unit/platform/test_slack_group_info.py tests/unit/test_satori_group_info.py tests/unit/test_misskey_group_info.py tests/unit/platform/test_wecomai_group_info.py tests/unit/test_astr_message_event.py::TestGetGroup tests/unit/test_astrbot_message.py::TestGroup tests/unit/platform/test_mattermost_adapter.py tests/unit/platform/test_slack_event.py tests/unit/platform/test_dingtalk_adapter.py::test_dingtalk_group_message_includes_available_group_details tests/unit/platform/test_napcat_outbound.py::test_napcat_get_group_returns_group_details -q AI-Generated: true Generated-At: 2026-09-01T14:54:56Z
Skip empty non-streaming results before logging, receipts, persistence, or OnAfterMessageSentEvent. Streaming results still go through. Upstream-Commit: 385e4b6 Upstream-Author: 時壹 <137363396+KBVsent@users.noreply.github.com> Upstream-PR: AstrBotDevs#9653 Sync-Disposition: adapt Fork-Adaptation: Insert the empty-chain skip on the current RespondStage process path that owns delivery receipts and after-send hooks. Tested: uv run pytest tests/unit/test_delivery_receipt.py tests/unit/test_message_tools.py::test_respond_stage_skips_same_text_after_send_message_to_user tests/unit/test_message_tools.py::test_respond_stage_sends_different_text_after_send_message_to_user tests/unit/test_message_tools.py::test_respond_stage_stops_typing_before_streaming_send -q AI-Generated: true Generated-At: 2026-09-01T14:56:49Z
Finish fork adaptation of AstrBotDevs#9851. Copy inbound Group in get_group, cap Slack/Lark/KOOK/Mattermost member pagination, skip LINE member enumeration, join Telegram avatars with the file base URL, and tolerate missing DingTalk conversation_title. Upstream-PR: AstrBotDevs#9851 Sync-Disposition: adapt Tested: uv run pytest tests/unit/platform/test_dingtalk_adapter.py tests/unit/platform/test_discord_adapter.py tests/unit/platform/kook tests/unit/platform/test_line_adapter.py tests/unit/platform/test_line_event.py tests/unit/platform/test_qqofficial_group_message_create.py tests/unit/platform/test_telegram_adapter.py tests/unit/test_aiocqhttp_group_info.py tests/unit/platform/test_lark_group_info.py tests/unit/platform/test_slack_group_info.py tests/unit/test_satori_group_info.py tests/unit/test_misskey_group_info.py tests/unit/platform/test_napcat_outbound.py tests/unit/platform/test_mattermost_adapter.py tests/unit/test_delivery_receipt.py tests/unit/test_astr_message_event.py tests/unit/test_astrbot_message.py -q AI-Generated: true Generated-At: 2026-09-01T16:04:17Z
Resolve default-market update info by repo then name when no persisted install-source record exists. Do not persist implicit records. Enable updates in serialize_plugin_base when a default-market match is possible. Upstream-PR: AstrBotDevs#9887 Sync-Disposition: adapt Tested: uv run pytest tests/unit/test_plugin_service.py tests/unit/dashboard/test_fastapi_v1_plugins.py -q AI-Generated: true Generated-At: 2026-09-01T16:04:43Z
Move this interval's user-visible notes out of 4.27.5, record the wrap-up adaptations, and update the upstream ledger note without moving the cursor. AI-Generated: true Generated-At: 2026-09-01T16:07:20Z
Base get_group now returns a copy so queries cannot mutate inbound state. Upstream-PR: AstrBotDevs#9851 Sync-Disposition: adapt Tested: uv run pytest tests/unit/platform/test_wecomai_group_info.py -q AI-Generated: true Generated-At: 2026-09-01T16:11:20Z
Clone the last event on flush so WebChat retains queue-manager state, and skip empty completion on buffered fragments so WebChat does not emit end before the flush replies. AI-Generated: true Generated-At: 2026-09-01T22:01:31Z
Retry a failed WebChat turn from platform history when the conversation checkpoint is missing, instead of rejecting the request. AI-Generated: true Generated-At: 2026-09-01T22:01:31Z
Load PluginPageHost and PluginDetailPage at file scope so Vue SFC transform does not count against the default test timeout under parallel make check. AI-Generated: true Generated-At: 2026-09-01T22:12:16Z
| from types import SimpleNamespace | ||
| from unittest.mock import AsyncMock, MagicMock, patch | ||
|
|
||
| import discord |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Absorb upstream
34743f4adfe666e52422426e792b8ff7c88b92ec..385e4b6bfb87952d78d56ce21fc1caff1e68a85e(4 commits) into this fork. Cursor is now385e4b6bfb87952d78d56ce21fc1caff1e68a85e.Adapted AstrBotDevs#9887, AstrBotDevs#9885, AstrBotDevs#9851, and AstrBotDevs#9653. No cherry-picks and no skips. Version is
4.27.6; user-visible notes are inchangelogs/v4.27.6.md.This branch also has three later fork commits: WebChat coalesce/regenerate fixes that overlap #6, and a PluginPageHost Vitest timeout fix.
Related issue
None. Upstream synchronization.
Surfaces
upstream-sync.yaml,upstream-decisions.jsonlpyproject.toml,astrbot/__init__.py,uv.lock,CHANGELOG.md,changelogs/v4.27.6.md.github/workflows/codeql.ymlget_groupdocspluginPageHost.vitest.tsImplementation notes
online_version. Default-market updates match by repo then name without persisting implicit install-source records.cdf488f595d80d6e07e03d4674febd5ab45fa938(v4.37.9).get_groupcopies inboundGroup. LINE fills name/count only. Slack/Lark/KOOK/Mattermost member pagination is hard-capped. Telegram avatars use the file base URL. DingTalk usesgetattrforconversation_title. Slack inbound conversion still skipsconversations_info.fix(pipeline): skip empty completion for coalesced fragmentsfix(dashboard): allow regenerate without conversation checkpoint(overlaps fix(webchat): preserve coalesced replies and retry failed turns #6; fix(webchat): preserve coalesced replies and retry failed turns #6 also has the edit/thread follow-up)test(dashboard): import PluginPageHost outside the 5s budgetValidation
Focused checks recorded on the integration commits:
Did not re-run
make checkor the full pytest suite for this PR.Compatibility and risk
No fork-owned publish/docs URLs restored. Residual risk: adapter group-metadata pagination caps, Slack deferred
conversations_info, and merge overlap with #6 on the two shared WebChat commits.Checklist
chore,build,ops, ortest(notci).pyproject.toml,requirements.txt, anduv.locktogether.Agent note
Goal: open a PR for
sync/upstream-385e4b6bfagainstmaster.fix/webchat-turn-handlingis already #6.Paths: platform adapters/events, plugin service, Respond stage, CodeQL workflow, bilingual docs, 4.27.6 changelog,
upstream-sync.yaml,upstream-decisions.jsonl, plus later WebChat coalesce/regenerate and PluginPageHost test commits on this branch.Checks run: focused pytest and
make check-yamlrecorded on integration commits; PluginPageHost Vitest 5 passed after the static-import change. Residual risk: fullmake check/make testnot re-run here; #6 overlaps two commits on this branch.Tools: grok-4.6 in opencode.