From f02c5f86482a77751ee9e0d21344f40ff60be269 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Wed, 9 Sep 2026 11:23:38 +0800 Subject: [PATCH] fix(app): follow rendered model order with arrow keys (#47912) Co-authored-by: Brendonovich <14191578+Brendonovich@users.noreply.github.com> --- .../app/e2e/user-story/model-selection-flow.spec.ts | 11 +++++++---- packages/app/src/providers/models/select-dialog.tsx | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/app/e2e/user-story/model-selection-flow.spec.ts b/packages/app/e2e/user-story/model-selection-flow.spec.ts index ee3655a25f6..0043b0718ad 100644 --- a/packages/app/e2e/user-story/model-selection-flow.spec.ts +++ b/packages/app/e2e/user-story/model-selection-flow.spec.ts @@ -99,13 +99,16 @@ test("creates a session in a new project and selects its model", async ({ page } const modelControl = page.locator('[data-action="composer-model"]') await expect(modelControl).toContainText("Go Model 1") await modelControl.click() - await page.locator('[data-option-key="opencode:free-model"]').click() + const modelSearch = page.getByPlaceholder("Search models", { exact: true }) + await expect(modelSearch).toBeFocused() + await modelSearch.press("ArrowDown") + await modelSearch.press("Enter") await expect(modelControl).toContainText("Free Model") await modelControl.click() - const goModel = page.locator('[data-option-key="opencode-go:go-model-1"]') - await expect(goModel).toBeVisible() - await goModel.click() + await expect(modelSearch).toBeFocused() + await modelSearch.press("ArrowUp") + await modelSearch.press("Enter") await expect(modelControl).toContainText("Go Model 1") }) diff --git a/packages/app/src/providers/models/select-dialog.tsx b/packages/app/src/providers/models/select-dialog.tsx index 3e2d672a72b..0152ca0c8fa 100644 --- a/packages/app/src/providers/models/select-dialog.tsx +++ b/packages/app/src/providers/models/select-dialog.tsx @@ -314,7 +314,7 @@ function ModelSelectorPopoverView(props: { const models = createMemo(() => props.models(store.search)) const groups = createMemo(() => props.groups(models())) - const keys = () => [...models().map(modelKey), manageKey] + const keys = () => [...groups().flatMap((group) => group.items.map(modelKey)), manageKey] const initialActive = () => { const selected = props.current const options = keys()