From 06416a9eb3609c9f7611c255d0ff938625c46f5b Mon Sep 17 00:00:00 2001 From: Shantur Rathore Date: Mon, 5 Jan 2026 20:09:13 +0000 Subject: [PATCH] Add instance tab session status indicator Aggregate session states per instance so tabs reflect permission, compaction, and working activity. --- packages/ui/src/components/instance-tab.tsx | 30 ++++++++++++++- packages/ui/src/stores/session-status.ts | 41 +++++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/packages/ui/src/components/instance-tab.tsx b/packages/ui/src/components/instance-tab.tsx index 5c4e821b..fc3a8272 100644 --- a/packages/ui/src/components/instance-tab.tsx +++ b/packages/ui/src/components/instance-tab.tsx @@ -1,5 +1,6 @@ -import { Component } from "solid-js" +import { Component, createMemo } from "solid-js" import type { Instance } from "../types/instance" +import { getInstanceSessionIndicatorStatus } from "../stores/session-status" import { FolderOpen, X } from "lucide-solid" interface InstanceTabProps { @@ -26,6 +27,24 @@ function formatFolderName(path: string, instances: Instance[], currentInstance: } const InstanceTab: Component = (props) => { + const aggregatedStatus = createMemo(() => getInstanceSessionIndicatorStatus(props.instance.id)) + const statusClassName = createMemo(() => { + const status = aggregatedStatus() + return status === "permission" ? "session-permission" : `session-${status}` + }) + const statusTitle = createMemo(() => { + switch (aggregatedStatus()) { + case "permission": + return "Waiting on permission" + case "compacting": + return "Compacting" + case "working": + return "Working" + default: + return "Idle" + } + }) + return (