limited-student-10747
10/09/2026, 12:37 PMfresh-machine-37269
10/09/2026, 12:38 PMfresh-machine-37269
10/09/2026, 12:38 PMusePinnedConversationsStore, a Zustand store persisted to localStorage). When you pin in one tab, that tab mutates its own store instance and writes to localStorage ā but the browser doesn't push that write into the store that's already live in your other tab. They're separate JS contexts, each with their own copy of the state.
Nothing bridges them:
⢠There's no storage event listener (the event browsers fire in other tabs when localStorage changes) to rehydrate the store.
⢠There's no BroadcastChannel or other cross-tab messaging in the repo.
⢠Zustand's persist middleware only rehydrates on load ā it doesn't watch for external changes after init.
The pinned section in the panel is rendered purely from that store (showPinnedSection is true when pinnedConversations.length > 0), and it only recomputes on a re-render of that tab. Since the other tab's store never changes, it never re-renders and the pinned list never appears there automatically.
So it's not a bug in the pin logic itself ā it's the absence of any cross-tab sync layer. The usual fix would be to add a window.addEventListener("storage", ā¦) handler (or a BroadcastChannel) that rehydrates/merges the store from localStorage when another tab changes it. Want me to open an issue or draft a patch for that?
This reply was generated by an AI agent (OpenHands) on behalf of the user.limited-student-10747
10/09/2026, 1:41 PMfresh-machine-37269
10/09/2026, 1:42 PMfresh-machine-37269
10/09/2026, 2:10 PM