Skip to content
This repository was archived by the owner on Apr 1, 2026. It is now read-only.

Commit dda579c

Browse files
committed
wip(desktop): progress
1 parent 4246cdb commit dda579c

18 files changed

Lines changed: 629 additions & 764 deletions

packages/desktop/src/app.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { LayoutProvider } from "@/context/layout"
1111
import { GlobalSDKProvider } from "@/context/global-sdk"
1212
import { SessionProvider } from "@/context/session"
1313
import { NotificationProvider } from "@/context/notification"
14-
import { DialogProvider } from "@/context/dialog"
14+
import { DialogProvider } from "@opencode-ai/ui/context/dialog"
1515
import Layout from "@/pages/layout"
1616
import Home from "@/pages/home"
1717
import DirectoryLayout from "@/pages/directory-layout"

packages/desktop/src/components/dialog-connect.tsx

Lines changed: 229 additions & 248 deletions
Large diffs are not rendered by default.

packages/desktop/src/components/dialog-file-select.tsx

Lines changed: 0 additions & 52 deletions
This file was deleted.
Lines changed: 34 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,47 @@
11
import { Component } from "solid-js"
22
import { useLocal } from "@/context/local"
3-
import { useDialog } from "@/context/dialog"
43
import { popularProviders } from "@/hooks/use-providers"
54
import { Dialog } from "@opencode-ai/ui/dialog"
65
import { List } from "@opencode-ai/ui/list"
76
import { Switch } from "@opencode-ai/ui/switch"
87

98
export const DialogManageModels: Component = () => {
109
const local = useLocal()
11-
const dialog = useDialog()
12-
1310
return (
14-
<Dialog
15-
modal
16-
defaultOpen
17-
onOpenChange={(open) => {
18-
if (!open) {
19-
dialog.clear()
20-
}
21-
}}
22-
>
23-
<Dialog.Header>
24-
<Dialog.Title>Manage models</Dialog.Title>
25-
<Dialog.CloseButton tabIndex={-1} />
26-
</Dialog.Header>
27-
<Dialog.Description>Customize which models appear in the model selector.</Dialog.Description>
28-
<Dialog.Body>
29-
<List
30-
class="px-2.5"
31-
search={{ placeholder: "Search models", autofocus: true }}
32-
emptyMessage="No model results"
33-
key={(x) => `${x?.provider?.id}:${x?.id}`}
34-
items={local.model.list()}
35-
filterKeys={["provider.name", "name", "id"]}
36-
sortBy={(a, b) => a.name.localeCompare(b.name)}
37-
groupBy={(x) => x.provider.name}
38-
sortGroupsBy={(a, b) => {
39-
const aProvider = a.items[0].provider.id
40-
const bProvider = b.items[0].provider.id
41-
if (popularProviders.includes(aProvider) && !popularProviders.includes(bProvider)) return -1
42-
if (!popularProviders.includes(aProvider) && popularProviders.includes(bProvider)) return 1
43-
return popularProviders.indexOf(aProvider) - popularProviders.indexOf(bProvider)
44-
}}
45-
onSelect={(x) => {
46-
if (!x) return
47-
local.model.setVisibility({ modelID: x.id, providerID: x.provider.id }, !x.visible)
48-
}}
49-
>
50-
{(i) => (
51-
<div class="w-full flex items-center justify-between gap-x-2.5">
52-
<span>{i.name}</span>
53-
<Switch
54-
checked={!!i.visible}
55-
onChange={(checked) => {
56-
local.model.setVisibility({ modelID: i.id, providerID: i.provider.id }, checked)
57-
}}
58-
/>
59-
</div>
60-
)}
61-
</List>
62-
</Dialog.Body>
11+
<Dialog title="Manage models" description="Customize which models appear in the model selector.">
12+
<List
13+
class="px-2.5"
14+
search={{ placeholder: "Search models", autofocus: true }}
15+
emptyMessage="No model results"
16+
key={(x) => `${x?.provider?.id}:${x?.id}`}
17+
items={local.model.list()}
18+
filterKeys={["provider.name", "name", "id"]}
19+
sortBy={(a, b) => a.name.localeCompare(b.name)}
20+
groupBy={(x) => x.provider.name}
21+
sortGroupsBy={(a, b) => {
22+
const aProvider = a.items[0].provider.id
23+
const bProvider = b.items[0].provider.id
24+
if (popularProviders.includes(aProvider) && !popularProviders.includes(bProvider)) return -1
25+
if (!popularProviders.includes(aProvider) && popularProviders.includes(bProvider)) return 1
26+
return popularProviders.indexOf(aProvider) - popularProviders.indexOf(bProvider)
27+
}}
28+
onSelect={(x) => {
29+
if (!x) return
30+
local.model.setVisibility({ modelID: x.id, providerID: x.provider.id }, !x.visible)
31+
}}
32+
>
33+
{(i) => (
34+
<div class="w-full flex items-center justify-between gap-x-2.5">
35+
<span>{i.name}</span>
36+
<Switch
37+
checked={!!i.visible}
38+
onChange={(checked) => {
39+
local.model.setVisibility({ modelID: i.id, providerID: i.provider.id }, checked)
40+
}}
41+
/>
42+
</div>
43+
)}
44+
</List>
6345
</Dialog>
6446
)
6547
}

packages/desktop/src/components/dialog-model-unpaid.tsx

Lines changed: 0 additions & 133 deletions
This file was deleted.

packages/desktop/src/components/dialog-model.tsx

Lines changed: 0 additions & 95 deletions
This file was deleted.

0 commit comments

Comments
 (0)