From fabf56781cee45b6ebe5aecd4b7b4c7bf5033fa5 Mon Sep 17 00:00:00 2001 From: Luke Parker <10430890+Hona@users.noreply.github.com> Date: Wed, 23 Sep 2026 18:03:42 +1000 Subject: [PATCH] fix(app): keep timeline scroll when switching models (#50865) --- packages/app/src/runtime/server/runtime.tsx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/app/src/runtime/server/runtime.tsx b/packages/app/src/runtime/server/runtime.tsx index 5d3fa437248..9b1c154c10d 100644 --- a/packages/app/src/runtime/server/runtime.tsx +++ b/packages/app/src/runtime/server/runtime.tsx @@ -83,21 +83,21 @@ function createGlobalModels() { recent: [], variant: {}, }) - const [recent] = createResource( - async () => { - const value = store.recent - await ready.promise - return value - }, - (value) => value, - { initialValue: [] }, - ) + // Suspend readers only until persisted state loads. Refetching on every change would put the + // session route into its Suspense fallback, detaching the screen and resetting the timeline scroll. + const [loaded] = createResource(async () => { + await ready.promise + return true + }) return { store, set: setStore, ready, - recent: () => recent()!, + recent: () => { + loaded() + return store.recent + }, // Marks models visible in the picker regardless of the "latest per family" default. show(models: ReadonlyArray<{ providerID: string; modelID: string }>) { const seen = new Map(store.user.map((item, index) => [`${item.providerID}:${item.modelID}`, index]))