fix(provider): handle Enter key to initiate auth setup in provider manager

The provider manager let users navigate with arrow keys but pressing
Enter did nothing. Users had no way to set up authentication from within
the /provider command.

Adds selectConfirm (Enter) handler that routes to showLoginDialog for
the selected provider, with a hint in the status bar.

Closes #3579
Closes #3567

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Tibsfox 2026-04-06 19:23:14 -07:00
parent b4c6229360
commit f121d6f170
2 changed files with 15 additions and 0 deletions

View file

@ -43,6 +43,7 @@ export class ProviderManagerComponent extends Container implements Focusable {
private modelsJsonWriter: ModelsJsonWriter;
private onDone: () => void;
private onDiscover: (provider: string) => void;
private onSetupAuth: (provider: string) => void;
private confirmingRemove = false;
private hintsContainer: Container;
@ -52,6 +53,7 @@ export class ProviderManagerComponent extends Container implements Focusable {
modelRegistry: ModelRegistry,
onDone: () => void,
onDiscover: (provider: string) => void,
onSetupAuth?: (provider: string) => void,
) {
super();
@ -61,6 +63,7 @@ export class ProviderManagerComponent extends Container implements Focusable {
this.modelsJsonWriter = new ModelsJsonWriter(this.modelRegistry.modelsJsonPath);
this.onDone = onDone;
this.onDiscover = onDiscover;
this.onSetupAuth = onSetupAuth ?? (() => {});
// Header
this.addChild(new Text(theme.fg("accent", "Provider Manager"), 0, 0));
@ -125,6 +128,7 @@ export class ProviderManagerComponent extends Container implements Focusable {
this.hintsContainer.addChild(new Text(hints, 0, 0));
} else {
const hints = [
rawKeyHint("enter", "setup auth"),
rawKeyHint("d", "discover"),
rawKeyHint("r", "remove auth"),
rawKeyHint("esc", "close"),
@ -203,6 +207,12 @@ export class ProviderManagerComponent extends Container implements Focusable {
this.tui.requestRender();
}
}
} else if (kb.matches(keyData, "selectConfirm")) {
// Enter key → initiate auth setup for the selected provider (#3579)
const provider = this.providers[this.selectedIndex];
if (provider) {
this.onSetupAuth(provider.name);
}
}
}
}

View file

@ -3411,6 +3411,11 @@ export class InteractiveMode {
done();
this.ui.requestRender();
},
async (provider: string) => {
// Enter key → auth setup for selected provider (#3579)
done();
await this.showLoginDialog(provider);
},
);
return { component, focus: component };
});