fix: count OpenCode inventory fallback as connected Merge pull request #183 from 777genius/fix/opencode-inventory-summary-count

fix: count OpenCode inventory fallback as connected
This commit is contained in:
Илия 2026-05-27 23:46:55 +03:00 committed by GitHub
commit a76d0cb2ed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 34 additions and 3 deletions

View file

@ -37,6 +37,7 @@ import {
getProviderDisconnectAction,
isConnectionManagedRuntimeProvider,
isOpenCodeCatalogHydrating,
isProviderInventoryOnlyFallback,
shouldShowProviderConnectAction,
shouldShowProviderStatusSkeleton,
} from '@renderer/components/runtime/providerConnectionUi';
@ -527,6 +528,10 @@ function isPendingMultimodelProviderStatus(provider: CliProviderStatus): boolean
);
}
function isProviderCountedAsConnected(provider: CliProviderStatus): boolean {
return provider.authenticated || isProviderInventoryOnlyFallback(provider);
}
function formatRuntimeAuthSummary(
cliStatus: NonNullable<ReturnType<typeof useCliInstaller>['cliStatus']>,
visibleProviders: readonly CliProviderStatus[],
@ -541,7 +546,7 @@ function formatRuntimeAuthSummary(
return t('cliStatus.provider.checkingProviders');
}
const denominator = visibleProviders.length;
const connected = visibleProviders.filter((provider) => provider.authenticated).length;
const connected = visibleProviders.filter(isProviderCountedAsConnected).length;
return t('cliStatus.provider.connectedCount', { connected, denominator });
}
@ -571,7 +576,7 @@ function isCheckingMultimodelStatus(
function hasVisibleAuthenticatedMultimodelProvider(
visibleProviders: readonly CliProviderStatus[]
): boolean {
return visibleProviders.some((provider) => provider.authenticated);
return visibleProviders.some(isProviderCountedAsConnected);
}
function isOpenCodeProviderEffectivelyReady(provider: CliProviderStatus): boolean {

View file

@ -718,9 +718,34 @@ describe('CLI status visibility during completed install state', () => {
supportsSelfUpdate: false,
showVersionDetails: false,
showBinaryPath: false,
authLoggedIn: false,
authLoggedIn: true,
authStatusChecking: false,
providers: [
{
providerId: 'anthropic',
displayName: 'Anthropic',
supported: true,
authenticated: true,
authMethod: 'api_key',
verificationState: 'verified',
statusMessage: null,
models: ['claude-haiku-4-5'],
modelAvailability: [],
canLoginFromUi: true,
capabilities: {
teamLaunch: true,
oneShot: true,
},
backend: null,
modelCatalog: null,
modelCatalogRefreshState: 'idle',
runtimeCapabilities: null,
},
createCodexNativeRolloutProvider({
state: 'ready',
statusMessage: 'ChatGPT account ready',
models: ['gpt-5.4'],
}),
{
providerId: 'opencode',
displayName: 'OpenCode (200+ models)',
@ -755,6 +780,7 @@ describe('CLI status visibility during completed install state', () => {
});
expect(host.textContent).toContain('OpenCode');
expect(host.textContent).toContain('Providers: 3/3 connected');
expect(host.textContent).toContain('Models available');
expect(host.textContent).toContain('big-pickle');
expect(host.textContent).not.toContain('Checking...');