summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-30 07:24:35 -0600
committerAdam <[email protected]>2025-12-30 07:24:40 -0600
commite0e07c5d48ef0671f63ca8bd9119169ced493fac (patch)
tree9377eab8b3cc5d3c2976ccae2d32e22db46ce816 /packages/app/src/pages
parent281f9e623673e6bbfd9a5f9a8f9aae496abc99f2 (diff)
downloadopencode-e0e07c5d48ef0671f63ca8bd9119169ced493fac.tar.gz
opencode-e0e07c5d48ef0671f63ca8bd9119169ced493fac.zip
feat(app): change server
Diffstat (limited to 'packages/app/src/pages')
-rw-r--r--packages/app/src/pages/home.tsx18
-rw-r--r--packages/app/src/pages/layout.tsx11
2 files changed, 29 insertions, 0 deletions
diff --git a/packages/app/src/pages/home.tsx b/packages/app/src/pages/home.tsx
index 129a50320..94332fcc6 100644
--- a/packages/app/src/pages/home.tsx
+++ b/packages/app/src/pages/home.tsx
@@ -10,6 +10,8 @@ import { usePlatform } from "@/context/platform"
import { DateTime } from "luxon"
import { useDialog } from "@opencode-ai/ui/context/dialog"
import { DialogSelectDirectory } from "@/components/dialog-select-directory"
+import { DialogSelectServer } from "@/components/dialog-select-server"
+import { useServer } from "@/context/server"
export default function Home() {
const sync = useGlobalSync()
@@ -17,6 +19,7 @@ export default function Home() {
const platform = usePlatform()
const dialog = useDialog()
const navigate = useNavigate()
+ const server = useServer()
const homedir = createMemo(() => sync.data.path.home)
function openProject(directory: string) {
@@ -52,6 +55,21 @@ export default function Home() {
return (
<div class="mx-auto mt-55">
<Logo class="w-xl opacity-12" />
+ <Button
+ size="large"
+ variant="ghost"
+ class="mt-4 mx-auto text-14-regular text-text-weak"
+ onClick={() => dialog.show(() => <DialogSelectServer />)}
+ >
+ <div
+ classList={{
+ "size-2 rounded-full": true,
+ "bg-icon-success-base": server.healthy(),
+ "bg-icon-critical-base": !server.healthy(),
+ }}
+ />
+ {server.name}
+ </Button>
<Switch>
<Match when={sync.data.project.length > 0}>
<div class="mt-20 w-full flex flex-col gap-4">
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx
index 46ea3bd4d..aea7be3aa 100644
--- a/packages/app/src/pages/layout.tsx
+++ b/packages/app/src/pages/layout.tsx
@@ -50,6 +50,7 @@ import { useDialog } from "@opencode-ai/ui/context/dialog"
import { useTheme, type ColorScheme } from "@opencode-ai/ui/theme"
import { DialogSelectProvider } from "@/components/dialog-select-provider"
import { DialogEditProject } from "@/components/dialog-edit-project"
+import { DialogSelectServer } from "@/components/dialog-select-server"
import { useCommand, type CommandOption } from "@/context/command"
import { ConstrainDragXAxis } from "@/utils/solid-dnd"
import { DialogSelectDirectory } from "@/components/dialog-select-directory"
@@ -353,6 +354,12 @@ export default function Layout(props: ParentProps) {
onSelect: () => connectProvider(),
},
{
+ id: "server.switch",
+ title: "Switch server",
+ category: "Server",
+ onSelect: () => openServer(),
+ },
+ {
id: "session.previous",
title: "Previous session",
category: "Session",
@@ -427,6 +434,10 @@ export default function Layout(props: ParentProps) {
dialog.show(() => <DialogSelectProvider />)
}
+ function openServer() {
+ dialog.show(() => <DialogSelectServer />)
+ }
+
function navigateToProject(directory: string | undefined) {
if (!directory) return
const lastSession = store.lastSession[directory]