Skip to content

feat(app): open Extensions config and skills in a side tab - #58023

Merged
kitlangton merged 1 commit into
betafrom
extensions-config-tab
Oct 22, 2026
Merged

kitlangton merged 1 commit into
betafrom
extensions-config-tab

Conversation

@kitlangton

@kitlangton kitlangton commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

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 through ctx.links.open, which handles paths outside the workspace. Remote servers still copy the path.
  • ServiceSetup opens a draft in the global config directory through a new SDK method, Layout.draft({ server, directory, prompt }). The app host implements it with tabs.newDraft.
  • The global directory comes from the config response itself. The server lists a directory entry for each config root, with the global root before any project's, and project roots are always .opencode folders. If the first root is a .opencode folder, 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.
  • Opening a file or a draft closes the details popover (a new onClose prop).

Risk

The UI change stays inside the details popover. Layout.draft is a new SDK method; its TSDoc is in sdk/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

Empty Plugins list offering a setup session

MCP's configuration file open in a side tab

Both stills use fictional data.

Base automatically changed from extensions-hover-menu to beta October 22, 2026 05:43
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
kitlangton force-pushed the extensions-config-tab branch from bdcc486 to e5bd377 Compare October 22, 2026 05:44
@kitlangton
kitlangton merged commit aea627a into beta Oct 22, 2026
11 of 26 checks passed
@kitlangton
kitlangton deleted the extensions-config-tab branch October 22, 2026 06:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant