diff --git a/packages/app/src/context/server-sdk.test.ts b/packages/app/src/context/server-sdk.test.ts index 57e1cd86f3..fea5252170 100644 --- a/packages/app/src/context/server-sdk.test.ts +++ b/packages/app/src/context/server-sdk.test.ts @@ -4,14 +4,25 @@ import type { OpenCodeEvent } from "@opencode-ai/client/promise" import type { Event } from "@opencode-ai/sdk/v2/client" describe("resumeStreamAfterPageShow", () => { - test("restarts a stream only after a back-forward cache restore", () => { + test("restarts the stream on pageshow regardless of persisted flag", () => { let starts = 0 const start = () => starts++ resumeStreamAfterPageShow({ persisted: false } as PageTransitionEvent, start) resumeStreamAfterPageShow({ persisted: true } as PageTransitionEvent, start) - expect(starts).toBe(1) + expect(starts).toBe(2) + }) + + test("is safe to call repeatedly (start is idempotent)", () => { + let starts = 0 + const start = () => starts++ + + resumeStreamAfterPageShow({ persisted: false } as PageTransitionEvent, start) + resumeStreamAfterPageShow({ persisted: false } as PageTransitionEvent, start) + resumeStreamAfterPageShow({ persisted: false } as PageTransitionEvent, start) + + expect(starts).toBe(3) }) }) diff --git a/packages/app/src/context/server-sdk.tsx b/packages/app/src/context/server-sdk.tsx index af6d5d1aee..1425a53fdf 100644 --- a/packages/app/src/context/server-sdk.tsx +++ b/packages/app/src/context/server-sdk.tsx @@ -159,8 +159,7 @@ function currentDeltaFragment(event: CurrentDelta) { return event.type === "session.compaction.delta" ? event.data.text : event.data.delta } -export function resumeStreamAfterPageShow(event: PageTransitionEvent, start: () => unknown) { - if (!event.persisted) return +export function resumeStreamAfterPageShow(_event: PageTransitionEvent, start: () => unknown) { start() }