feat(ai-chat): mark interrupted turns with a "stopped" notice
A turn that ends without a clean finish now shows a neutral marker, so an interrupted answer is visible instead of trailing off silently. Errors keep their existing red banner; this covers the aborted case. - chat-stopped-notice.tsx: new neutral (gray) notice component - chat-thread.tsx: live marker driven by useChat onFinish flags — distinguishes a manual Stop (isAbort) from a dropped connection (isDisconnect); cleared when the next turn streams; flushNext still runs only on a clean finish - message-item.tsx: per-message marker in reopened history for finishReason 'aborted' with no error (combined wording, since the server can't tell a manual Stop from a dropped connection) - ai-chat.types.ts: add metadata.finishReason; rowToUiMessage now carries it - en-US: three new strings Frontend only — the server already persists partial work and finishReason and replays it to the model on the next turn (continue, not restart).
This commit is contained in:
@@ -1154,6 +1154,9 @@
|
||||
"Queue message": "Queue message",
|
||||
"Remove queued message": "Remove queued message",
|
||||
"Stop": "Stop",
|
||||
"Response stopped.": "Response stopped.",
|
||||
"Connection lost — the answer was interrupted.": "Connection lost — the answer was interrupted.",
|
||||
"Response stopped (manually or the connection dropped).": "Response stopped (manually or the connection dropped).",
|
||||
"Chat menu": "Chat menu",
|
||||
"No chats yet.": "No chats yet.",
|
||||
"Delete this chat?": "Delete this chat?",
|
||||
|
||||
Reference in New Issue
Block a user