diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx index 4e485b033..b85cd5c65 100644 --- a/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/dialog-status.tsx @@ -11,6 +11,31 @@ export function DialogStatus() { const enabledFormatters = createMemo(() => sync.data.formatter.filter((f) => f.enabled)) + const plugins = createMemo(() => { + const list = sync.data.config.plugin ?? [] + const result = list.map((value) => { + if (value.startsWith("file://")) { + const path = value.substring("file://".length) + const parts = path.split("/") + const filename = parts.pop() || path + if (!filename.includes(".")) return { name: filename } + const basename = filename.split(".")[0] + if (basename === "index") { + const dirname = parts.pop() + const name = dirname || basename + return { name } + } + return { name: basename } + } + const index = value.lastIndexOf("@") + if (index <= 0) return { name: value, version: "latest" } + const name = value.substring(0, index) + const version = value.substring(index + 1) + return { name, version } + }) + return result.toSorted((a, b) => a.name.localeCompare(b.name)) + }) + return ( @@ -109,6 +134,29 @@ export function DialogStatus() { + 0} fallback={No Plugins}> + + {plugins().length} Plugins + + {(item) => ( + + + • + + + {item.name} + {item.version && @{item.version}} + + + )} + + + ) }