Repository navigation
feat(app): open Extensions config and skills in a side tab - #58023
Merged
Merged
Conversation
Configuration file opens the file that lists a service's entries in a side
tab, instead of revealing the last file that mentions the service. An empty
project "mcp": {} no longer hides the global file's servers. Skills open
their SKILL.md the same way.
Empty lists, and the skills list, offer to start a setup session: a draft
in the global configuration's directory with its prompt filled in, through
a new Layout.draft SDK method.
kitlangton
force-pushed
the
extensions-config-tab
branch
from
October 22, 2026 05:44
bdcc486 to
e5bd377
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.
Stacked on #58021.
What it does
In the Extensions lists, "Configuration file" now opens the file that actually lists a service's entries, in a side tab beside the session. Before, it revealed the last file that mentioned the service in Finder, so an empty project
"mcp": {}meant the global file with your servers never opened. Skills open their SKILL.md the same way. Empty lists, and the Skills list, offer to start a setup session: a draft whose prompt is already filled in.How it works
serviceConfigFile(details/config-file.ts) picks the last file that lists entries for the service. Failing that, it picks the last file that sets the service, then the first file. Local files open throughctx.links.open, which handles paths outside the workspace. Remote servers still copy the path.ServiceSetupopens a draft in the global config directory through a new SDK method,Layout.draft({ server, directory, prompt }). The app host implements it withtabs.newDraft.directoryentry for each config root, with the global root before any project's, and project roots are always.opencodefolders. If the first root is a.opencodefolder, global config is off and the draft opens in the session's directory. A project config in an ancestor of the worktree is never mistaken for the global one.onCloseprop).Risk
The UI change stays inside the details popover.
Layout.draftis a new SDK method; its TSDoc is insdk/host-apis.ts, and the fixtures have stubs. If a server ever lists its config roots in a different order, setup drafts would fall back to the session's directory rather than opening anywhere wrong.Proof
Both stills use fictional data.
bun test src/detailsin gui-extensions: 5 passed. The new ancestor-outside-worktree case fails on the previous code.bun run test:e2e:built -- session-summary mcp-workspace-toggle mobile-extension-drawers: 31 passed. This includes a new case for the config tab, SKILL.md and setup drafts.bun typecheckandbun script/sdk-docs.ts: clean.--no-verifyfor the same reason as feat(app): open session Extensions lists on hover #58021: the pre-push check fails only on the beta break that fix(app): restore beta typecheck in activity chip fixture #57969 fixes.