fix: command palette pin/unpin toggle reads stale closure#64
Open
samueljklee wants to merge 1 commit intomainfrom
Open
fix: command palette pin/unpin toggle reads stale closure#64samueljklee wants to merge 1 commit intomainfrom
samueljklee wants to merge 1 commit intomainfrom
Conversation
96888d5 to
a5babe0
Compare
The "Pin/Unpin Session" command palette handler was registered inside a useEffect and captured `pinnedSessionIds` from the closure scope. Since pinnedSessionIds is React state and the effect does not re-run when it changes, the handler always saw the initial empty Set(), so isPinned was always false and the command only ever pinned sessions. Fix: read from `cmdCtxRef.current.pinnedSessionIds` instead, which is already updated every render with the current pinned set. This matches the existing pattern used for `sessionIdRef.current` on the adjacent line. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
a5babe0 to
5a8e855
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The command palette "Pin/Unpin Session" command only ever pinned sessions — it never unpinned them.
Root Cause
The
pin-sessionhandler is registered inside auseEffectand capturespinnedSessionIdsfrom the closure scope. SincepinnedSessionIdsis React state and the effect does not re-run when it changes, the handler always sees the initial emptySet(). This meansisPinnedis alwaysfalse, so the command always pins and never unpins.This is a classic stale closure bug in React hooks.
Fix
Read from
cmdCtxRef.current.pinnedSessionIdsinstead of the stale closure variable. ThecmdCtxRefref is already updated every render with the current pinned session IDs, so it always has the fresh value. This matches the existing pattern used forsessionIdRef.currenton the adjacent line.