From d3b6545e7c6069c9db031634b7890e6b8eb4de2a Mon Sep 17 00:00:00 2001 From: Filip <34747899+neriousy@users.noreply.github.com> Date: Wed, 24 Sep 2025 18:05:15 +0200 Subject: feat(app): added command palette (#2630) Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com> --- packages/app/src/pages/index.tsx | 92 +++++++++++++++++++++++++++++++--------- 1 file changed, 72 insertions(+), 20 deletions(-) (limited to 'packages/app/src/pages') diff --git a/packages/app/src/pages/index.tsx b/packages/app/src/pages/index.tsx index 50c729789..9133f40d8 100644 --- a/packages/app/src/pages/index.tsx +++ b/packages/app/src/pages/index.tsx @@ -1,8 +1,9 @@ -import { FileIcon, Icon, IconButton, Logo, Tooltip } from "@/ui" +import { Button, FileIcon, Icon, IconButton, Logo, Tooltip } from "@/ui" import { Tabs } from "@/ui/tabs" import { Select } from "@/components/select" import FileTree from "@/components/file-tree" import { For, Match, onCleanup, onMount, Show, Switch } from "solid-js" +import { SelectDialog } from "@/components/select-dialog" import { useLocal, useSDK } from "@/context" import { Code } from "@/components/code" import { @@ -28,6 +29,7 @@ export default function Page() { activeItem: undefined as string | undefined, prompt: "", dragging: undefined as "left" | "right" | undefined, + modelSelectOpen: false, }) let inputRef: HTMLInputElement | undefined = undefined @@ -43,6 +45,17 @@ export default function Page() { }) const handleKeyDown = (e: KeyboardEvent) => { + if (e.getModifierState(MOD) && e.shiftKey && e.key.toLowerCase() === "p") { + e.preventDefault() + setStore("modelSelectOpen", true) + return + } + if (e.getModifierState(MOD) && e.key.toLowerCase() === "p") { + e.preventDefault() + setStore("modelSelectOpen", true) + return + } + const inputFocused = document.activeElement === inputRef if (inputFocused) { if (e.key === "Escape") { @@ -190,7 +203,7 @@ export default function Page() { path: { id: session!.id }, body: { agent: local.agent.current()!.name, - model: local.model.current(), + model: { modelID: local.model.current()!.id, providerID: local.model.current()!.provider.id }, parts: [ { type: "text", @@ -265,7 +278,7 @@ export default function Page() { class="fixed top-0 right-0 h-full border-l border-border-subtle/30 flex flex-col overflow-hidden" style={`width: ${local.layout.rightWidth()}px`} > -