Przeglądaj źródła

tui: add permission indicator to footer (#4813)

Co-authored-by: terakael <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>
terakael 2 miesięcy temu
rodzic
commit
c78dad8db5

+ 12 - 0
packages/opencode/src/cli/cmd/tui/routes/session/footer.tsx

@@ -4,13 +4,19 @@ import { useSync } from "../../context/sync"
 import { useDirectory } from "../../context/directory"
 import { useDirectory } from "../../context/directory"
 import { useConnected } from "../../component/dialog-model"
 import { useConnected } from "../../component/dialog-model"
 import { createStore } from "solid-js/store"
 import { createStore } from "solid-js/store"
+import { useRoute } from "../../context/route"
 
 
 export function Footer() {
 export function Footer() {
   const { theme } = useTheme()
   const { theme } = useTheme()
   const sync = useSync()
   const sync = useSync()
+  const route = useRoute()
   const mcp = createMemo(() => Object.keys(sync.data.mcp))
   const mcp = createMemo(() => Object.keys(sync.data.mcp))
   const mcpError = createMemo(() => Object.values(sync.data.mcp).some((x) => x.status === "failed"))
   const mcpError = createMemo(() => Object.values(sync.data.mcp).some((x) => x.status === "failed"))
   const lsp = createMemo(() => Object.keys(sync.data.lsp))
   const lsp = createMemo(() => Object.keys(sync.data.lsp))
+  const permissions = createMemo(() => {
+    if (route.data.type !== "session") return []
+    return sync.data.permission[route.data.sessionID] ?? []
+  })
   const directory = useDirectory()
   const directory = useDirectory()
   const connected = useConnected()
   const connected = useConnected()
 
 
@@ -51,6 +57,12 @@ export function Footer() {
             </text>
             </text>
           </Match>
           </Match>
           <Match when={connected()}>
           <Match when={connected()}>
+            <Show when={permissions().length > 0}>
+              <text fg={theme.warning}>
+                <span style={{ fg: theme.warning }}>◉</span> {permissions().length} Permission
+                {permissions().length > 1 ? "s" : ""}
+              </text>
+            </Show>
             <text fg={theme.text}>
             <text fg={theme.text}>
               <span style={{ fg: theme.success }}>•</span> {lsp().length} LSP
               <span style={{ fg: theme.success }}>•</span> {lsp().length} LSP
             </text>
             </text>