You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 2bf4d8d
Browse filesBrowse the repository at this point in the historyBrowse files
fix(mobile): follow the conversation when it moves, and never eat a question
Two things a question could fall through.
A question typed before `enterChat` finished found no chat, and `say` returned
the identifier it was given as though it had asked. The composer had already
emptied, so the question was gone with nothing on screen to say so. It now
waits for the open, and a chat that is genuinely not there raises rather than
reporting success — which puts the question back on screen with a Retry under
it, the same as one whose answer never arrived.
A queued question asked on another model clones the conversation, and `drain`
ignored the new identifier: the transcript moved to a session the screen was
not watching. The chat that was left now points at the one it became, and
`useChat` follows that, so `say` and `retryChat` hand nothing back. The screen
is not always the mover, which is why the return value was the wrong seam.
Copy file name to clipboardExpand all lines: apps/mobile/AGENTS.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -93,6 +93,8 @@ Add narrow temporary logs at the real boundaries. Reproduce. Read the tmux servi
93
93
94
94
The Chat tab runs `@kilocode/harness-sdk` on the device. `src/lib/chat/` holds the registry (the conversations that are running), the layers (the plugins they run on) and the store (the list and its CRUD). The SDK saves one conversation; this app owns the list, the ordering, the titles, the deleting and the scoping.
95
95
96
+
**A conversation can move, and the screen follows the state rather than a return value.** Switching models clones the conversation onto a new session, and the mover is not always the screen: a question typed on another model while an answer was arriving moves the chat from inside the registry. So the chat that was left points at the one it became, and `useChat` follows that.
97
+
96
98
A chat is opened with the SDK's `time` tool and no other. A model has no clock, so it answers a dated question from its training date, confidently and wrong. The other three tools the SDK ships stay off: the composer is already how a person is asked something, a subagent costs a second session, and a to-do list is working memory for a run a chat does not have.
97
99
98
100
**Prove a chat change against the same eleven models the SDK's live runs use.** The list is in `packages/harness-sdk/e2e/setup.ts`, and `pnpm --filter @kilocode/harness-sdk test:e2e:time full` is the sweep across all of them. Take one of those models through the app itself on the simulator as well: the sweep proves what the models do, the simulator proves this app's wiring, and neither proves the other. Both cost real money, so run the sweep when the tool set or the system prompt changes, not for a change to a screen.
0 commit comments