-
{t('profileEditor.customEndpoint')}
-
- {t('profileEditor.customEndpointDescription')}
-
+
+
+ {t('profileEditor.customEndpoint')}
+
);
diff --git a/ui/tests/unit/components/profiles/profile-create-dialog.test.tsx b/ui/tests/unit/components/profiles/profile-create-dialog.test.tsx
index 5ba4da8e..df222572 100644
--- a/ui/tests/unit/components/profiles/profile-create-dialog.test.tsx
+++ b/ui/tests/unit/components/profiles/profile-create-dialog.test.tsx
@@ -23,7 +23,7 @@ describe('ProfileCreateDialog', () => {
mutateAsync.mockReset();
});
- it('reveals more presets from custom mode and keeps custom unselected after choosing a template', async () => {
+ it('keeps advanced presets collapsed until explicitly opened and deselects custom after choosing a template', async () => {
render(
{
);
expect(screen.getByText('Featured Providers')).toBeInTheDocument();
- expect(screen.queryByText('More Presets')).not.toBeInTheDocument();
+ expect(screen.getByText('Alibaba Coding Plan')).toBeVisible();
+ const morePresetsToggle = screen.getByRole('button', { name: /More Presets/i });
+ expect(morePresetsToggle).toHaveAttribute('aria-expanded', 'false');
expect(document.body.querySelectorAll('.overflow-x-auto')).toHaveLength(1);
const customButton = screen.getByRole('button', { name: /Custom Endpoint/i });
await userEvent.click(customButton);
- expect(await screen.findByText('More Presets')).toBeInTheDocument();
+ expect(morePresetsToggle).toHaveAttribute('aria-expanded', 'false');
+ expect(document.body.querySelectorAll('.overflow-x-auto')).toHaveLength(1);
+
+ await userEvent.click(morePresetsToggle);
+
+ expect(morePresetsToggle).toHaveAttribute('aria-expanded', 'true');
expect(document.body.querySelectorAll('.overflow-x-auto')).toHaveLength(2);
const glmButton = screen.getByText('GLM').closest('button');
@@ -50,6 +57,7 @@ describe('ProfileCreateDialog', () => {
}
await userEvent.click(glmButton);
+ expect(morePresetsToggle).toHaveAttribute('aria-expanded', 'true');
await waitFor(() => {
expect(customButton).not.toHaveClass('border-primary');
});
diff --git a/ui/tests/unit/ui/lib/provider-presets.test.ts b/ui/tests/unit/ui/lib/provider-presets.test.ts
index a8566369..53ab8c65 100644
--- a/ui/tests/unit/ui/lib/provider-presets.test.ts
+++ b/ui/tests/unit/ui/lib/provider-presets.test.ts
@@ -28,6 +28,10 @@ describe('resolvePresetApiKeyValue', () => {
});
describe('provider preset metadata', () => {
+ it('uses the llama.cpp provider logo asset for the local llama.cpp preset', () => {
+ expect(getPresetById('llamacpp')?.icon).toBe('/assets/providers/llama-cpp.svg');
+ });
+
it('keeps Anthropic direct last in the recommended order', () => {
const recommendedPresetIds = getPresetsByCategory('recommended').map((preset) => preset.id);
expect(recommendedPresetIds.at(-1)).toBe('anthropic');