mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-08-26 17:13:32 +00:00
* feat(channels): add Feishu ask-user question cards * fix(channels): harden Feishu question-card handoff and feedback paths * fix(channels): anchor Feishu card-creation timeout at creation start (#8578) * fix(channels): skip settled question-card delivery, retry input-request finalization - present() returns early when the request settled before listener registration (stop/cancel landing in the pre-presentation await): the card is no longer delivered just to be patched terminal, which left a spurious actionable-looking card when the patch failed. - endOutputCardBeforeInputRequest now retries the final patch with stripTables before deleting the card and re-sending plain text, mirroring onResponseComplete and the throttled update path. - truncateCardText budgets the 4-char fence prepend so rebalanced content stays within MAX_CARD_CHARS, matching onResponseComplete. * test(channels): cover Feishu question-card review findings - stop real network leaks: mock addReaction/removeReaction in the two handoff tests that drove onPromptStart with the real implementation (each run hit Feishu's tenant-token endpoint). - assert the OnIt reaction add/remove lifecycle positively. - pin settled-before-registration presentation to zero card delivery. - regression tests: input-request table-stripped retry, finalizing race (throttled timer cleared before the final patch), late card deletion when the input request lands mid-creation, abandoned creation-timer guard. - routing coverage for toast-only handled callbacks (no execute). - parse rejections: empty/malformed multi-select values; cancel-side name<->operation_id mismatch; visible submit/cancel button labels; cancelRun terminal label; submitted answers in patch-failure fallback; truncation tail-keeping and fence-rebalance cap. - harden subset toMatchObject assertions to strict toEqual. * fix(channels): type Feishu card-delivery errors; cover controller wiring seam sendInteractiveCard now throws FeishuCardDeliveryError (with the HTTP status when available) so createStreamingCard classifies delivery failures by error type instead of string-matching three message literals that could drift under rewording. Add an adapter test that keeps the real FeishuQuestionCardController with fetch mocked, asserting the POSTed body carries the question-card JSON (form name, question text, request id) — the constructor wiring seam every routing test previously mocked away. * fix(channels): cap Feishu input-request card retry; harden question-card tests * fix(channels): drain in-flight Feishu card PATCHes before final patch (#8578) Also carry a concurrently-written terminal status into the released card entry, report card-delivery failures from a typed error detail instead of slicing the message, and document the silent empty-completed-turn tradeoff. Adds round-5 review test pins: wiring seams (sendFallback, patchCard, timeoutMs), spy hygiene, claim-time card content, fallback suppression, expiry-timer survival, and non-vacuous release-time timestamp anchoring. * fix(channels): coordinate Feishu card stop races and throttle bursts (#8578) - endOutputCardBeforeInputRequest now defers to Stop (entry guard plus post-await re-checks mirroring onResponseComplete) and releaseOutputCard carries settled stop state, so a stopped run is never labelled 已完成 nor followed by a contradictory terminal message - coalesce throttled card updates queued behind a stalled PATCH into one trailing run instead of a burst - log every FeishuCardDeliveryError from createStreamingCard - consolidate onResponseComplete truncation through truncateCardText - question controller: a not-accepted in-flight response no longer flips a projected 已取消 card to 已过期, and a cancel claim no longer re-patches the terminal card already delivered in the callback response - test hygiene: hermetic fetch mocks for token-failure tests, restored fetch spies, required lifecycle fixture fields, bracket index access * test(web-shell): wait for history search focus before Escape in smoke (#8578) * fix(channels): resolve Feishu card finalization races from review (#8578) * fix(channels): recover Feishu cancel callbacks missing button value (#8578) --------- Co-authored-by: Shaojin Wen <shaojin.wensj@alibaba-inc.com> Co-authored-by: qwen-code-dev-bot <qwen-code-dev@service.alibaba.com> Co-authored-by: qwen-code-ci-bot <qwen-code-ci@service.alibaba.com> Co-authored-by: qwen-code-dev-bot <qwen-code-dev-bot@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| 2025-06-03-stats-dashboard-redesign.md | ||
| 2026-03-22-agent-tool-display-design.md | ||
| 2026-05-14-auto-compaction-threshold-redesign.md | ||
| 2026-05-15-worktree-phase-c.md | ||
| 2026-05-18-qwen-runtime-memory-investigation.md | ||
| 2026-05-26-daemon-logger.md | ||
| 2026-05-27-daemon-workspace-service.md | ||
| 2026-05-28-computer-use-built-in.md | ||
| 2026-06-30-channel-loop.md | ||
| 2026-07-01-channel-lifecycle-status-adapters.md | ||
| 2026-07-01-channel-lifecycle-status-umbrella.md | ||
| 2026-07-01-channel-p0-identity-task-lifecycle.md | ||
| 2026-07-01-extension-runtime-refresh-implementation.md | ||
| 2026-07-10-pr-6635-remaining-comments.md | ||
| 2026-07-10-pr-6635-review-followups.md | ||
| 2026-07-10-workspace-qualified-acp-hardening.md | ||
| 2026-07-11-chrome-extension-alpha-diagnostics.md | ||
| 2026-07-11-managed-memory-microcompaction.md | ||
| 2026-07-14-dingtalk-webhook-direct-message.md | ||
| 2026-07-16-default-background-subagents.md | ||
| 2026-07-16-webshell-git-integration.md | ||
| 2026-07-17-observed-channel-delivery-targets.md | ||
| 2026-07-18-observed-channel-group-names.md | ||
| 2026-07-21-channel-delivery-review-fixes.md | ||
| 2026-07-22-channel-delivery-final-only.md | ||
| 2026-07-23-session-workflow-approval.md | ||
| 2026-07-24-webshell-git-status-fast-path.md | ||
| 2026-07-31-daemon-memory-budget-pr1.md | ||
| 2026-08-05-feishu-ask-user-question-cards.md | ||
| extension-management-v2.md | ||
| feishu-observed-contact-label-enrichment.md | ||
| final-tool-response-budget-implementation.md | ||
| memory-diagnostics-reference-design.md | ||