Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/architecture/agentConfigurationManager.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ url = "http://localhost:3001/mcp"

### Popup State

Uses VS Code's `globalState` to track whether the onboarding popup has been shown, preventing repeated prompts on every activation.
Uses VS Code's `globalState` to track whether the onboarding popup has been shown or dismissed, preventing repeated prompts on every activation. Users can still reopen setup from the Command Palette.

### Skill delivery — standard skills directories

Expand Down Expand Up @@ -100,7 +100,7 @@ This fixes issue #105: earlier builds copied the skill next to each agent's conf
3. If not, display multi-select dialog with supported agents
4. For each selected agent, write/update config file
5. Show success message with option to open config file
6. Mark popup as shown
6. Mark popup as shown after it is accepted or dismissed

The bundled `debug-live` skill is installed into the standard skills directories (`~/.agents/skills/`, plus `~/.copilot/skills/` when present) during step 4, so every skills-compatible harness discovers it from one shared location.

Expand Down
10 changes: 9 additions & 1 deletion src/utils/agentConfigurationManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -589,7 +589,10 @@ export class AgentConfigurationManager {
quickPick.canSelectMany = true;
quickPick.ignoreFocusOut = true;

let accepted = false;

quickPick.onDidAccept(async () => {
accepted = true;
const selectedItems = quickPick.selectedItems;
quickPick.hide();

Expand All @@ -610,7 +613,12 @@ export class AgentConfigurationManager {
await this.context.globalState.update(this.POPUP_SHOWN_KEY, true);
});

quickPick.onDidHide(() => quickPick.dispose());
quickPick.onDidHide(async () => {
quickPick.dispose();
if (!accepted) {
await this.context.globalState.update(this.POPUP_SHOWN_KEY, true);
}
});
quickPick.show();
}

Expand Down