fix: preserve session across MCP reconnects#44
Merged
Conversation
…n IDs Session IDs are now derived deterministically from the project directory (SHA-256 hash) instead of using crypto.randomUUID(). This ensures that reconnecting the same project via /mcp reuses the same session ID, preserving WebSocket connections and pending feedback. Additional safeguards: - Process ID guard prevents stale processes from unregistering active sessions - Feedback migration transfers data when sessions share the same projectDir - Browser extension validates cached sessions and auto-refreshes stale ones Closes #43 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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
crypto.randomUUID(), so reconnecting via/mcpreuses the same session ID and preserves WebSocket connections + pending feedback/unregister-sessionto prevent race conditions when old and new MCP processes overlap/register-sessionwhen a new session shares the sameprojectDiras an existing one (safety net for edge cases)validateOrRefreshSession()Closes #43
Test plan
deriveSessionIdvalidity/determinism/uniqueness/format, feedback migration, processId guard)/mcp, verifyget_pending_feedbackreturns prior feedback/mcpreconnectget_connection_statusshows correct client count after reconnect🤖 Generated with Claude Code