fix(web): keep composer enabled while generating and treat stop as neutral (BUG-551, BUG-552)
Enter now queues one follow-up instead of dropping it, and a rectification stop leaves the streamed reply with a grey notice instead of an error alert. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -8517,3 +8517,36 @@
|
||||
- 复发自:BUG-546(计划层继续采集,决策层已经可采用)
|
||||
- 修复版本:`ca4e2408`
|
||||
|
||||
## BUG-551 | 生成中禁用输入框,焦点丢失,回车消息被丢弃
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-06
|
||||
- 最近更新:2026-09-06
|
||||
- 影响面:`ChatComposer`、主咨询 `page.tsx`、`use-consultation-run.ts`、生时校正 `rectification-agentic-chat.tsx`
|
||||
- 用户现象:发出消息后输入框变灰,不能继续打字;回答结束后必须再点一次输入框。生成中按回车,消息被丢掉。
|
||||
- 触发条件:任一对话面正在生成回答时打字或按回车。
|
||||
- 根因:两个对话面把 `isLoading` / `busy` 写进 `<textarea disabled>`。浏览器会立刻移走焦点且解禁后不归还。`send()` 在已有请求时直接 `return false`,没有任何排队。
|
||||
- 修复:输入框只在只读、会话加载、onboarding 或另一面打开时禁用。生成中回车把文字排成一条待发送,正常结算后自动发出;停止、失败或断线恢复时放回输入框。发送键在有排队时禁用。
|
||||
- 验证:`frontend/tests/chat-composer-queue.test.ts`;`composer-ime-contract`、`composer-isolation-contract`、`rectification-surface-contract`。
|
||||
- 防复发:不得再用生成中状态禁用 textarea;生成中的发送必须进入排队或明确放回草稿,不得静默丢弃。
|
||||
- 相关记录:BUG-216、BUG-329
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-552 | 生时校正停止穿报错衣服,选择题与采用等待中停止无效
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-06
|
||||
- 最近更新:2026-09-06
|
||||
- 影响面:`rectification-agentic-chat.tsx`、`ChatMessageRow`、选择题与采用 `fetch`
|
||||
- 用户现象:生成中点停止后对话区出现红色告警,气泡按失败处理;还没有正文时思考行消失。回答选择题或点采用后的等待里,停止键在但点了没反应。
|
||||
- 触发条件:生时校正流式回答中点停止;或选择题 / 采用请求尚未回到 `send()` 时点停止。
|
||||
- 根因:`AbortError` 把气泡写成 `failed` 并 `setError(RECTIFICATION_STOPPED_NOTICE)`,唯一出口是 `role="alert"` 的 `.error-message`。空正文时 `flatMap` 丢掉该行。选择题与采用两条 `fetch` 没有挂 `AbortController` 到 `runAbort`,停止是空操作。BUG-329 的防复发只锁了 `send()` 那一路 fetch abort。
|
||||
- 修复:停止后气泡 `settled` + `stopped`,灰字说明已停止且不扣点,不再 `setError`。无正文也保留气泡。选择题与采用的 fetch 挂上同一个 `runAbort`。
|
||||
- 验证:`frontend/tests/chat-composer-queue.test.ts`、`rectification-agentic-entry.test.ts`、`rectification-surface-contract.test.ts`、`chat-notice-and-scroll-contract.test.ts`。
|
||||
- 防复发:停止不得走 `role="alert"`;`busy` 时可见的停止键必须 abort 当前 fetch,包括选择题与采用,而不仅是 `send()`。
|
||||
- 相关记录:BUG-329、BUG-551
|
||||
- 复发自:BUG-329(停止按钮只绑了 `send()` 的 abort,没覆盖选择题与采用)
|
||||
- 修复版本:待发布
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user