Closed
Conversation
Member
Author
|
closing this in favor of #276 |
auto-merge was automatically disabled
April 3, 2026 16:49
Pull request was closed
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
Enables VS Code multi-root workspace support. The main gap was to ensure that library symbol configurations in different workspace folders don't overwrite each other.
Changes
Server
workspaceFolders: { supported: true, changeNotifications: true })Client — Per-folder symbol management
LibrarySymbolManager: Replaced globalregisteredSymbolModules: string[]with per-folderMap<string, string[]>. Module names namespaced asfolderKey::moduleNameto preventcross-folder collisions (e.g., two folders both having
MyLib.json).refreshSymbolDirectoriesForFolder(folderKey, directories)— only clears/reloads symbols for the specified folderremoveSymbolsForFolder(folderKey)— removes only that folder's symbolsremoveAllSymbols()— clears all foldersrefreshSymbolDirectories()— retained as convenience for single-folder/no-folder workspacesextension.ts: ReadsadditionalSymbolsDirectoriesconfig scoped to each workspace folder URI. HandlesonDidChangeWorkspaceFoldersto register/unregister symbols when folders areadded or removed. Falls back to global config when no workspace folders exist.
Configuration
additionalSymbolsDirectoriesscope frommachine-overridabletoresourceso different workspace folders can have different valuesTests
librarySymbolManager.test.ts: per-folder namespacing, cross-folder isolation, folder removal, re-refresh behaviormultiRootWorkspace.test.ts: runs in a separate VS Code instance with a.code-workspacefile pointing to two fixture folders with differentsymbol libraries. Verifies extension activation, per-folder symbol loading, folder removal, and scoped config reading.
.vscode-test.jsfor multi-root workspace tests (required — VS Code can only open one workspace type per instance)Other
.github/copilot-instructions.md(properly named) with build/test commands, architecture overview, and code conventions.github/.copilot.instructions.md(incorrect dotfile format)npm audit fixacross all packages