import type { TuiPlugin, TuiPluginApi } from "@opencode-ai/plugin/tui" import type { BuiltinTuiPlugin } from "../builtins" import { createMemo, For, Show, createSignal } from "solid-js" import { Locale } from "../../util/locale" const id = "internal:sidebar-files" function changeCountWidth(item: { additions: number; deletions: number }) { return [item.additions ? `+${item.additions}` : "", item.deletions ? `-${item.deletions}` : ""] .filter(Boolean) .join(" ").length } function View(props: { api: TuiPluginApi; session_id: string }) { const [open, setOpen] = createSignal(true) const theme = () => props.api.theme.current const list = createMemo(() => props.api.state.session.diff(props.session_id)) return ( 0}> list().length > 2 && setOpen((x) => !x)}> 2}> {open() ? "▼" : "▶"} Modified Files {(item) => ( {Locale.truncateLeft(item.file, Math.max(2, 36 - changeCountWidth(item)))} +{item.additions} -{item.deletions} )} ) } const tui: TuiPlugin = async (api) => { api.slots.register({ order: 500, slots: { sidebar_content(_ctx, props) { return }, }, }) } const plugin: BuiltinTuiPlugin = { id, tui, } export default plugin