Skip to content

Commit b8c7a11

Browse files
committed
fix: complete AruHub model mappings and limit sponsor star
1 parent a16d984 commit b8c7a11

4 files changed

Lines changed: 26 additions & 9 deletions

File tree

‎desktop/src/pages/settings/ProviderSettings.test.tsx‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,13 @@ describe('ApiSmart sponsor provider', () => {
5454
expect(sponsor.parentElement).toBe(dialog.getByRole('button', { name: 'Atlas Cloud' }).parentElement)
5555
expect(within(sponsor).getByText('New')).toBeInTheDocument()
5656
expect(within(sponsor).getByLabelText('Sponsor')).toBeInTheDocument()
57+
for (const name of ['Atlas Cloud', 'ApiSmart']) {
58+
expect(within(dialog.getByRole('button', { name })).queryByLabelText('Sponsor')).not.toBeInTheDocument()
59+
}
5760
fireEvent.click(sponsor)
5861
expect(dialog.getByDisplayValue('https://direct.aruhub.com:8443')).toBeInTheDocument()
59-
expect(dialog.getByDisplayValue('claude-sonnet-5')).toBeInTheDocument()
62+
expect(dialog.getAllByDisplayValue('claude-opus-5')).toHaveLength(2)
63+
expect(dialog.getAllByDisplayValue('claude-sonnet-5')).toHaveLength(2)
6064
expect(dialog.getByText(/注册即送 1 美元全模型通用额度/)).toBeInTheDocument()
6165
fireEvent.click(dialog.getByRole('button', { name: /Get API Key/ }))
6266
expect(open).toHaveBeenCalledWith('https://aruhub.com/sign-up?aff=Z54g')
@@ -72,7 +76,7 @@ describe('ApiSmart sponsor provider', () => {
7276
apiFormat: 'anthropic',
7377
authStrategy: 'api_key',
7478
apiKey: 'fake-aruhub-key',
75-
models: expect.objectContaining({ main: 'claude-sonnet-5' }),
79+
models: { main: 'claude-opus-5', haiku: 'claude-sonnet-5', sonnet: 'claude-sonnet-5', opus: 'claude-opus-5' },
7680
})))
7781
})
7882

‎desktop/src/pages/settings/ProviderSettings.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1533,7 +1533,7 @@ function ProviderFormModal({ open, onClose, mode, provider, presets, browserMode
15331533
>
15341534
{preset.id === 'aruhub' && <img src={aruhubLogo} alt="" className="size-4 rounded-[var(--radius-sm)] object-contain" />}
15351535
{preset.name}
1536-
{preset.featured && <Star size={12} className="fill-[var(--color-warning)] text-[var(--color-warning)]" aria-label={t('settings.providers.sponsor')} />}
1536+
{preset.id === 'aruhub' && <Star size={12} className="fill-[var(--color-warning)] text-[var(--color-warning)]" aria-label={t('settings.providers.sponsor')} />}
15371537
{preset.isNew && (
15381538
<Badge tone="warning" size="xs" className="absolute -right-1 -top-2">
15391539
{t('settings.providers.new')}

‎src/server/__tests__/provider-presets.test.ts‎

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import * as path from 'path'
55

66
import { handleProvidersApi } from '../api/providers.js'
77
import { PROVIDER_PRESETS, ProviderPresetSchema } from '../config/providerPresets.js'
8-
import { providerNeedsProxy } from '../services/providerRuntimeEnv.js'
8+
import { buildProviderManagedEnv, providerNeedsProxy } from '../services/providerRuntimeEnv.js'
99
import { resolveModelApiFormat } from '../../shared/modelApiFormats.js'
1010
import { resolveUpstreamHeaders } from '../proxy/upstreamHeaders.js'
1111

@@ -57,9 +57,22 @@ describe('provider presets API', () => {
5757
apiKeyUrl: 'https://aruhub.com/sign-up?aff=Z54g',
5858
isNew: true,
5959
needsApiKey: true,
60-
defaultModels: { main: 'claude-sonnet-5', haiku: '', sonnet: '', opus: '' },
60+
defaultModels: { main: 'claude-opus-5', haiku: 'claude-sonnet-5', sonnet: 'claude-sonnet-5', opus: 'claude-opus-5' },
6161
})
6262
expect(sponsors[0].promoText).toContain('注册即送 1 美元全模型通用额度')
63+
const preset = PROVIDER_PRESETS.find((candidate) => candidate.id === 'aruhub')!
64+
expect(buildProviderManagedEnv({
65+
id: 'aruhub-test', presetId: preset.id, name: preset.name,
66+
baseUrl: preset.baseUrl, apiFormat: preset.apiFormat,
67+
authStrategy: preset.authStrategy, apiKey: 'fake-aruhub-key',
68+
models: preset.defaultModels,
69+
})).toMatchObject({
70+
ANTHROPIC_MODEL: 'claude-opus-5',
71+
ANTHROPIC_DEFAULT_OPUS_MODEL: 'claude-opus-5',
72+
ANTHROPIC_DEFAULT_SONNET_MODEL: 'claude-sonnet-5',
73+
// This gateway has no Haiku; use its supported Sonnet for background work.
74+
ANTHROPIC_DEFAULT_HAIKU_MODEL: 'claude-sonnet-5',
75+
})
6376
})
6477

6578
// ApiSmart /v1/models and live calls verified these exact IDs on 2026-09-09.

‎src/server/config/providerPresets.json‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,10 @@
269269
"baseUrl": "https://direct.aruhub.com:8443",
270270
"apiFormat": "anthropic",
271271
"defaultModels": {
272-
"main": "claude-sonnet-5",
273-
"haiku": "",
274-
"sonnet": "",
275-
"opus": ""
272+
"main": "claude-opus-5",
273+
"haiku": "claude-sonnet-5",
274+
"sonnet": "claude-sonnet-5",
275+
"opus": "claude-opus-5"
276276
},
277277
"needsApiKey": true,
278278
"websiteUrl": "https://aruhub.com",

0 commit comments

Comments
 (0)