Skip to content

Fix Solution Explorer repo grouping, filtering, and theming for merged VMR sites - #273

Merged
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:tannergooding-multi-solution-theme
Jul 20, 2026
Merged

Fix Solution Explorer repo grouping, filtering, and theming for merged VMR sites#273
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:tannergooding-multi-solution-theme

Conversation

@tannergooding

Copy link
Copy Markdown
Member

Bundles the "make the site work as expected" fixes for multi-repo / VMR merged sites (the kind source.dot.net produces), so a merged index correctly scopes, groups, and themes each repo -- including the VMR case where one repo (dotnet/dotnet) physically contains many others under src/.

Repo grouping and search scope

  • Tag each project with its full repo chain (outermost -> innermost), persisted in ProjectInfo.txt (RepoChain=) and the Assemblies.txt 6th field. A parent repo (e.g. dotnet/vmr) now includes its nested sub-repos (dotnet/subx, dotnet/suby) in both search scope (Query.RepoMatches is ancestor-or-self) and the Solution Explorer, displayed nested under the parent. Selecting a sub-repo still scopes to just that sub-repo.
  • /repoPath-mapped repos now get their own repo-filter entry, matching /repo behavior -- previously a /repoPath mapping (e.g. dotnet/arcade under dotnet/dotnet) had no filter option.

Duplicate repo handling

  • When the same repo is passed twice with different URLs, emit a non-critical warning naming the winning vs losing URL instead of silently picking one.

Solution Explorer UI

  • Fix multi-solution repos rendering with the light theme regardless of the active theme.
  • Repo filtering is ancestor-aware, and grouping folders a filter leaves empty (including MSBuild solution folders, which carry no repo path) are now hidden instead of lingering as hollow headers.
  • Repo/solution grouping bands now render full-width at every nesting depth, with only the text/arrow carrying the depth indent -- nested bands previously staircased inward and stopped short of the pane edge.

Sample / tests

  • Extends the sample (HtmlGenerator launchSettings + new TestCode/Vmr fixture with SubRepoX/SubRepoY under a VMR root, plus a second solution in RepoB) to cover the nested-repo and duplicate-URL scenarios so they can be validated locally.
  • All tests green: 184 HtmlGenerator + 40 SourceIndexServer.

…d VMR sites

Bundles the "make the site work as expected" fixes for multi-repo/VMR merged sites:

- Tag each project with its full repo chain so a parent repo (e.g. dotnet/vmr)
  includes its nested sub-repos (dotnet/subx, dotnet/suby) in both search scope
  and the Solution Explorer, shown nested under the parent.
- Give /repoPath-mapped repos their own repo-filter entry, matching /repo.
- Warn (non-critical) when the same repo is passed twice with different URLs,
  naming the winning vs losing URL.
- Fix multi-solution repos rendering with the light theme.
- Make repo filtering ancestor-aware and hide grouping folders (including MSBuild
  solution folders) a filter leaves empty.
- Render repo/solution grouping bands full-width at every nesting depth, with
  only the text/arrow carrying the depth indent.

Extends the sample (HtmlGenerator launchSettings + TestCode/Vmr) to cover the
nested-repo and duplicate-URL scenarios.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@tannergooding

Copy link
Copy Markdown
Member Author
image

@tannergooding
tannergooding enabled auto-merge (squash) July 19, 2026 18:15
@tannergooding
tannergooding merged commit 4de7a00 into dotnet:main Jul 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants