import type { TuiPlugin, TuiPluginApi } from "@opencode-ai/plugin/tui" import type { BuiltinTuiPlugin } from "../builtins" import { createMemo, Show } from "solid-js" import { abbreviateHome } from "../../runtime" import { useTuiPaths } from "../../context/runtime" const id = "internal:sidebar-footer" function View(props: { api: TuiPluginApi; sessionID: string }) { const paths = useTuiPaths() const theme = () => props.api.theme.current const has = createMemo(() => props.api.state.provider.some( (item) => item.id !== "opencode" || Object.values(item.models).some((model) => model.cost?.input !== 0), ), ) const done = createMemo(() => props.api.kv.get("dismissed_getting_started", false)) const show = createMemo(() => !has() && !done()) const path = createMemo(() => { const session = props.api.state.session.get(props.sessionID) const dir = session?.directory || props.api.state.path.directory || paths.cwd const out = abbreviateHome(dir, paths.home) const branch = session?.directory === props.api.state.path.directory ? props.api.state.vcs?.branch : undefined const text = branch ? out + ":" + branch : out const list = text.split("/") return { parent: list.slice(0, -1).join("/"), name: list.at(-1) ?? "", } }) return ( ⬖ Getting started props.api.kv.set("dismissed_getting_started", true)}> ✕ OpenCode includes free models so you can start immediately. Connect from 75+ providers to use other models, including Claude, GPT, Gemini etc Connect provider /connect {path().parent}/ {path().name} • Open Code {" "} {props.api.app.version} ) } const tui: TuiPlugin = async (api) => { api.slots.register({ order: 100, slots: { sidebar_footer(_ctx, props) { return }, }, }) } const plugin: BuiltinTuiPlugin = { id, tui, } export default plugin