From c9f86c2fd36861d21013c0d468a1489c812b9d99 Mon Sep 17 00:00:00 2001 From: Roopesh Date: Wed, 4 Feb 2026 18:05:14 +0530 Subject: [PATCH] Show skill indicator in session view when a skill is triggered --- packages/app/src/app/pages/session.tsx | 31 +++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/packages/app/src/app/pages/session.tsx b/packages/app/src/app/pages/session.tsx index 056b2a74..9298c82d 100644 --- a/packages/app/src/app/pages/session.tsx +++ b/packages/app/src/app/pages/session.tsx @@ -23,7 +23,7 @@ import type { import type { WorkspaceInfo } from "../lib/tauri"; -import { ArrowRight, ChevronDown, HardDrive, Shield, Zap } from "lucide-solid"; +import { ArrowRight, ChevronDown, HardDrive, Shield, Sparkles, Zap } from "lucide-solid"; import Button from "../components/button"; import RenameSessionModal from "../components/rename-session-modal"; @@ -408,6 +408,8 @@ export default function SessionView(props: SessionViewProps) { const record = part as any; const tool = typeof record.tool === "string" ? record.tool : ""; switch (tool) { + case "skill": + return "Using skill"; case "task": return "Delegating"; case "todowrite": @@ -481,6 +483,18 @@ export default function SessionView(props: SessionViewProps) { return null; }); + const activeSkill = createMemo(() => { + const part = latestRunPart(); + if (!part || part.type !== "tool") return null; + const record = part as any; + const tool = typeof record.tool === "string" ? record.tool : ""; + if (tool !== "skill") return null; + const state = record.state ?? {}; + const title = typeof state.title === "string" ? state.title : ""; + const skillName = state.metadata?.name || title.replace(/^Loaded skill:\s*/i, "").trim(); + return skillName || "skill"; + }); + const runLabel = createMemo(() => { switch (runPhase()) { case "sending": @@ -1398,7 +1412,10 @@ export default function SessionView(props: SessionViewProps) {
-
+