Chat turns are sorted oldest-first by created, then id, whenever they are written into state. A scrambled conversation_details payload no longer redraws the thread backwards after the reply lands.
START_OF_THE_STREAM no longer copies the websocket closure into the message ref. That copy could drop the optimistic turn and let END rebuild the thread from the previous list.
Optimistic bubbles use a stable local key so they do not collide with a server id.
The account toggle is labeled "Remember this chat" and defaults on, matching chat_backend#84.
Test plan
CI=true npm test -- --watchAll=false --testPathPattern='promptOrder|MessageContext|data.test'
Ask for a joke, then "I don't know, why?". While it works, order stays: joke request, joke, follow-up, status. After the reply, the follow-up stays under the joke and the new answer is last, with the action row on that answer.
Reload the conversation. Order stays the same.
Send another follow-up. It appends at the bottom.
Needs chat_backend#84 (or that branch) for the reply to actually use the previous turn.
## Summary
- Closes #136.
- Chat turns are sorted oldest-first by `created`, then id, whenever they are written into state. A scrambled `conversation_details` payload no longer redraws the thread backwards after the reply lands.
- `START_OF_THE_STREAM` no longer copies the websocket closure into the message ref. That copy could drop the optimistic turn and let `END` rebuild the thread from the previous list.
- Optimistic bubbles use a stable local key so they do not collide with a server id.
- The account toggle is labeled "Remember this chat" and defaults on, matching chat_backend#84.
## Test plan
- [ ] `CI=true npm test -- --watchAll=false --testPathPattern='promptOrder|MessageContext|data.test'`
- [ ] Ask for a joke, then "I don't know, why?". While it works, order stays: joke request, joke, follow-up, status. After the reply, the follow-up stays under the joke and the new answer is last, with the action row on that answer.
- [ ] Reload the conversation. Order stays the same.
- [ ] Send another follow-up. It appends at the bottom.
- [ ] Needs chat_backend#84 (or that branch) for the reply to actually use the previous turn.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
created, then id, whenever they are written into state. A scrambledconversation_detailspayload no longer redraws the thread backwards after the reply lands.START_OF_THE_STREAMno longer copies the websocket closure into the message ref. That copy could drop the optimistic turn and letENDrebuild the thread from the previous list.Test plan
CI=true npm test -- --watchAll=false --testPathPattern='promptOrder|MessageContext|data.test'