import { Tag } from "@opencode-ai/ui/v2/badge-v2" import { Icon as IconV2 } from "@opencode-ai/ui/v2/icon" import { IconButtonV2 } from "@opencode-ai/ui/v2/icon-button-v2" import { TextInputV2 } from "@opencode-ai/ui/v2/text-input-v2" import { useDialog } from "@opencode-ai/ui/context/dialog" import fuzzysort from "fuzzysort" import { type Component, For, Show, createMemo } from "solid-js" import { createStore } from "solid-js/store" import { ServerRowMenu } from "@/components/server/server-row-menu" import { ServerHealthIndicator } from "@/components/server/server-row" import { useLanguage } from "@/context/language" import { ServerConnection, serverName } from "@/context/server" import { useServerManagementController } from "../dialog-select-server" import { DialogServerV2 } from "./dialog-server-v2" import { SettingsListV2 } from "./parts/list" import { AddServerMenu, isWslServer, useFilteredWslServers, WslServerSettings } from "@/wsl/settings" import "./settings-v2.css" export const SettingsServersV2: Component = () => { const dialog = useDialog() const language = useLanguage() const controller = useServerManagementController() const [store, setStore] = createStore({ filter: "" }) const wslServers = useFilteredWslServers(() => store.filter) const showSearch = createMemo( () => controller.sortedItems().filter((item) => !isWslServer(item)).length + wslServers().length > 1, ) const filtered = createMemo(() => { const items = controller.sortedItems().filter((item) => !isWslServer(item)) const query = store.filter.trim() if (!query) return items return fuzzysort .go(query, items, { keys: [(item) => serverName(item), (item) => item.http.url], }) .map((result) => result.obj) }) const openAdd = () => { dialog.push(() => ) } const openEdit = (server: ServerConnection.Http) => { dialog.push(() => ) } return ( <>

{language.t("status.popover.tab.servers")}

0 || wslServers().length > 0} fallback={
{store.filter ? language.t("palette.empty") : language.t("dialog.server.empty")} "{store.filter}"
} > {(item) => { const key = ServerConnection.key(item) const health = () => controller.status()[key] const isDefault = () => controller.defaultKey() === key return (
{serverName(item)} v{health()?.version} • {language.t("server.row.noUsername")}} > {item.http.username}
{language.t("dialog.server.status.default")}
) }}
) }