Replies: 2 comments
|
I verified this path against rc.8 (
So an AbortController exists, but the complete image-send flight is not bounded. Reload recovers because it releases/recreates the in-memory input shell; it does not prove Host admission failed. For operators, the safe sequence is: stop repeated Send attempts, capture For the runtime, the deadline should cover serialization plus Host admission, settle the exact attempt through the existing sequence guard, retain draft/images on uncommitted failure, expose Cancel pending send, and reconcile unknown admission outcomes before enabling Retry. Late completions must remain unable to clear a newer draft. I wrote the full runbook, deterministic test matrix, and fifteen acceptance gates here: |
|
补充:官方版( 今天在官方版上再次测试「文字 + 图片」消息发送,表现与本地构建完全一致:
初步推断与之前一致:客户端提交事务(submit flight)没有 settle,草稿未被 commit 清除,输入机器卡在 结论:该问题与构建类型无关,是 Web 客户端的通用缺陷,带图发送场景必现或高概率触发。建议尽快:1) 提交 flight 加超时(abort + 失败 settle + toast);2) 提供"取消待发送"逃生动作;3) 卡住时显示恢复提示而非静默只读。 |
Uh oh!
There was an error while loading. Please reload this page.
现象
环境
DSH Local Build(commit141eb6f/ dsh-0.1.0-rc.8)根因分析(代码层面)
输入框的只读锁定来自输入机器(input machine)卡在
submitting/adjudicating阶段:packages/client/ui-conversation/src/client/skeleton/InputBar.tsxL667:readOnly={machineBusy || workspaceTrigger},其中machineBusy即 phase 为submitting/adjudicating。packages/client/ui-conversation/src/client/input/machine.tsonEnter():提交时把 phase 置为submitting(或adjudicating),此后只有submit-settled/adjudication-failed(或 release)事件才能回到plain。default-sink(draft, imageIds, ...):如果这次 host round-trip / 图片上传永远不返回(RPC 挂起、响应丢失等),flight 永不 settle,机器就永久锁死。beginAttempt()创建的 AbortController 没有任何超时触发。复现(推断路径)
发送一条带图片的消息,且该次发送的 RPC 未在合理时间内返回(例如 agent 忙碌、上传卡住、连接异常)→ 输入机器停在
submitting→ 输入框永久只读,且无提示、无解锁入口。建议
plain。submitting且无在途活动时,显示恢复提示而非静默只读。English summary: In a conversation with image attachments, after a send whose host round-trip never settles, the input machine stays in
submittingphase forever, leaving the composer textarea permanentlyreadOnly(InputBar.tsx L667, machine.tsonEnter). No timeout or escape hatch exists; only a page reload recovers. Suggest adding a submit-flight timeout with abort+settle, and/or a user-facing "cancel pending send" affordance.All reactions