diff --git a/packages/app/src/components/dialog-select-server.tsx b/packages/app/src/components/dialog-select-server.tsx index e62aa93be..12905f9f5 100644 --- a/packages/app/src/components/dialog-select-server.tsx +++ b/packages/app/src/components/dialog-select-server.tsx @@ -12,6 +12,7 @@ import { createOpencodeClient } from "@opencode-ai/sdk/v2/client" import { useNavigate } from "@solidjs/router" import { useLanguage } from "@/context/language" import { Popover } from "@opencode-ai/ui/popover" +import { Tooltip } from "@opencode-ai/ui/tooltip" import { useGlobalSDK } from "@/context/global-sdk" type ServerStatus = { healthy: boolean; version?: string } @@ -52,16 +53,16 @@ async function checkHealth(url: string, platform: ReturnType function AddRow(props: AddRowProps) { return ( -
-
-
+
+
+
@@ -344,9 +346,10 @@ export function DialogSelectServer() { return ( -
+
x} @@ -354,7 +357,7 @@ export function DialogSelectServer() { if (x) select(x) }} divider={true} - class="[&_[data-slot=list-scroll]]:max-h-[300px] [&_[data-slot=list-scroll]]:overflow-y-auto [&_[data-slot=list-items]]:bg-surface-raised-base [&_[data-slot=list-items]]:rounded-md [&_[data-slot=list-item]]:py-3" + class="px-5 [&_[data-slot=list-search-wrapper]]:w-full [&_[data-slot=list-scroll]]:max-h-[300px] [&_[data-slot=list-scroll]]:overflow-y-auto [&_[data-slot=list-items]]:bg-surface-raised-base [&_[data-slot=list-items]]:rounded-md [&_[data-slot=list-item]]:h-14 [&_[data-slot=list-item]]:p-3" add={ store.addServer.showForm ? { @@ -376,6 +379,35 @@ export function DialogSelectServer() { > {(i) => { const [popoverOpen, setPopoverOpen] = createSignal(false) + const [truncated, setTruncated] = createSignal(false) + let nameRef: HTMLSpanElement | undefined + let versionRef: HTMLSpanElement | undefined + + const check = () => { + const nameTruncated = nameRef ? nameRef.scrollWidth > nameRef.clientWidth : false + const versionTruncated = versionRef ? versionRef.scrollWidth > versionRef.clientWidth : false + setTruncated(nameTruncated || versionTruncated) + } + + createEffect(() => { + check() + window.addEventListener("resize", check) + onCleanup(() => window.removeEventListener("resize", check)) + }) + + const tooltipValue = () => { + const name = serverDisplayName(i) + const version = store.status[i]?.version + return ( + + {name} + + {version} + + + ) + } + return (
} > -
+
- {serverDisplayName(i)} - - {store.status[i]?.version} - - - - {language.t("dialog.server.status.default")} + class="flex items-center gap-3 px-4 min-w-0 flex-1" + classList={{ "opacity-50": store.status[i]?.healthy === false }} + > +
+ + {serverDisplayName(i)} - -
+ + + {store.status[i]?.version} + + + + + {language.t("dialog.server.status.default")} + + +
+
@@ -508,7 +546,7 @@ export function DialogSelectServer() { }} -
+