diff options
| author | Adam <[email protected]> | 2026-04-08 14:02:23 -0500 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-04-08 14:02:23 -0500 |
| commit | 689b1a4b3ab3c33aecc76b84c579b2efce444d6c (patch) | |
| tree | e15a9ceaf044e75b15df7c0918aa9e145c808541 /packages/app/src/context | |
| parent | d98be39344b8a39d16b62ce927be71a2c6a61a53 (diff) | |
| download | opencode-689b1a4b3ab3c33aecc76b84c579b2efce444d6c.tar.gz opencode-689b1a4b3ab3c33aecc76b84c579b2efce444d6c.zip | |
fix(app): diff list normalization
Diffstat (limited to 'packages/app/src/context')
| -rw-r--r-- | packages/app/src/context/global-sync/event-reducer.ts | 5 | ||||
| -rw-r--r-- | packages/app/src/context/sync.tsx | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/packages/app/src/context/global-sync/event-reducer.ts b/packages/app/src/context/global-sync/event-reducer.ts index 01248e20e..500013c1d 100644 --- a/packages/app/src/context/global-sync/event-reducer.ts +++ b/packages/app/src/context/global-sync/event-reducer.ts @@ -14,6 +14,7 @@ import type { import type { State, VcsCache } from "./types" import { trimSessions } from "./session-trim" import { dropSessionCaches } from "./session-cache" +import { diffs as list, message as clean } from "@/utils/diffs" const SKIP_PARTS = new Set(["patch", "step-start", "step-finish"]) @@ -162,7 +163,7 @@ export function applyDirectoryEvent(input: { } case "session.diff": { const props = event.properties as { sessionID: string; diff: SnapshotFileDiff[] } - input.setStore("session_diff", props.sessionID, reconcile(props.diff, { key: "file" })) + input.setStore("session_diff", props.sessionID, reconcile(list(props.diff), { key: "file" })) break } case "todo.updated": { @@ -177,7 +178,7 @@ export function applyDirectoryEvent(input: { break } case "message.updated": { - const info = (event.properties as { info: Message }).info + const info = clean((event.properties as { info: Message }).info) const messages = input.store.message[info.sessionID] if (!messages) { input.setStore("message", info.sessionID, [info]) diff --git a/packages/app/src/context/sync.tsx b/packages/app/src/context/sync.tsx index b023e8ddc..fb02a2d2d 100644 --- a/packages/app/src/context/sync.tsx +++ b/packages/app/src/context/sync.tsx @@ -13,6 +13,7 @@ import { useGlobalSync } from "./global-sync" import { useSDK } from "./sdk" import type { Message, Part } from "@opencode-ai/sdk/v2/client" import { SESSION_CACHE_LIMIT, dropSessionCaches, pickSessionCacheEvictions } from "./global-sync/session-cache" +import { diffs as list, message as clean } from "@/utils/diffs" const SKIP_PARTS = new Set(["patch", "step-start", "step-finish"]) @@ -300,7 +301,7 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({ input.client.session.messages({ sessionID: input.sessionID, limit: input.limit, before: input.before }), ) const items = (messages.data ?? []).filter((x) => !!x?.info?.id) - const session = items.map((x) => x.info).sort((a, b) => cmp(a.id, b.id)) + const session = items.map((x) => clean(x.info)).sort((a, b) => cmp(a.id, b.id)) const part = items.map((message) => ({ id: message.info.id, part: sortParts(message.parts) })) const cursor = messages.response.headers.get("x-next-cursor") ?? undefined return { @@ -509,7 +510,7 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({ return runInflight(inflightDiff, key, () => retry(() => client.session.diff({ sessionID })).then((diff) => { if (!tracked(directory, sessionID)) return - setStore("session_diff", sessionID, reconcile(diff.data ?? [], { key: "file" })) + setStore("session_diff", sessionID, reconcile(list(diff.data), { key: "file" })) }), ) }, |
