summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/cli/cmd/tui/context/sync.tsx20
1 files changed, 19 insertions, 1 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/context/sync.tsx b/packages/opencode/src/cli/cmd/tui/context/sync.tsx
index 0edc91134..392cfb7f1 100644
--- a/packages/opencode/src/cli/cmd/tui/context/sync.tsx
+++ b/packages/opencode/src/cli/cmd/tui/context/sync.tsx
@@ -241,9 +241,27 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({
event.properties.info.sessionID,
produce((draft) => {
draft.splice(result.index, 0, event.properties.info)
- if (draft.length > 100) draft.shift()
}),
)
+ const updated = store.message[event.properties.info.sessionID]
+ if (updated.length > 100) {
+ const oldest = updated[0]
+ batch(() => {
+ setStore(
+ "message",
+ event.properties.info.sessionID,
+ produce((draft) => {
+ draft.shift()
+ }),
+ )
+ setStore(
+ "part",
+ produce((draft) => {
+ delete draft[oldest.id]
+ }),
+ )
+ })
+ }
break
}
case "message.removed": {