Repository navigation
refactor(client): remove redundant location spreads - #47086
Merged
Merged
Conversation
kitlangton
enabled auto-merge (squash)
September 3, 2026 16:21
jinhuang712
pushed a commit
to jinhuang712/opencode
that referenced
this pull request
Sep 26, 2026
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.
Why
Six location updates copy the entire cached location record before passing it to Solid's store setter. That setter already shallow-merges the provided record, so these copies repeat work and obscure which field the update owns.
What Changes
Publish only the changed location field, matching the existing
locationResourcehelper:Apply this to connection preload, credential switching, branch updates, shell creation/removal, and websearch refresh. Preserve the nested shell-map and branch spreads: unlike the outer location spreads, those carry fields the replacement value still needs.
Scope
packages/client/src/solid/data.ts: +2 / −9, net −7 production lines. No helper, state, dependency, public interface, or request-scheduling change.The existing client test file gains 98 lines covering cold shell-event initialization, sibling catalog and shell identity, retained branch metadata, request counts, and sibling preservation during credential events across locations/workspaces. These checks pass against both the original implementation and the deletion, including the focused browser-Solid run.
Verification
With Bun 1.4.0, from the indicated package directories:
--conditions=browserrun before the production change exposed two existing assertions in the assistant-content replacement and user-shell metadata tests. The normal configured client suite passes; those unrelated browser-condition assertions are not changed here.