| β¦ | β¦ | @@ -526,16 +575,20 @@ export const checkClaudeProviderStatus = Effect.fn("checkClaudeProviderStatus")( | |
| 537 | 581 | ? yield* resolveCapabilities(claudeSettings).pipe(Effect.orElseSucceed(() => undefined)) | |
| 538 | 582 | : undefined; | |
| 583 | + | const models = providerModelsFromSettings( | |
| 584 | + | mergeClaudeReportedModels( | |
π‘ Medium Layers/ClaudeProvider.ts:584
When a gateway reports an ID matching a slug in claudeSettings.customModels, the picker drops the configured custom model and shows the discovered row with empty capabilities instead. mergeClaudeReportedModels adds the reported model before providerModelsFromSettings resolves custom entries, so the exact-slug collision causes the custom entry to be discarded; reserve custom slugs when merging (or otherwise preserve the custom entry) so user-defined names and capabilities win.
π€ Copy this AI Prompt to have your agent fix this:
| 1 | In file @apps/server/src/provider/Layers/ClaudeProvider.ts around line 584: |
| 2 | |
| 3 | When a gateway reports an ID matching a slug in `claudeSettings.customModels`, the picker drops the configured custom model and shows the discovered row with empty capabilities instead. `mergeClaudeReportedModels` adds the reported model before `providerModelsFromSettings` resolves custom entries, so the exact-slug collision causes the custom entry to be discarded; reserve custom slugs when merging (or otherwise preserve the custom entry) so user-defined names and capabilities win. |
Fixed in 38830d4ac1: configured custom model slugs now count as known, so discovery never shadows a settings-owned row. The status test covers the collision.
Sorry, I'm unable to act on this request because you do not have permissions within this repository.