Keep finished terminals visible as attention

This commit is contained in:
Mohamed Boudra
2026-06-15 14:06:48 +07:00
parent 71b5c35d9b
commit a4c4418164
12 changed files with 147 additions and 55 deletions
+2 -2
View File
@@ -5,6 +5,7 @@ import { Terminal } from "lucide-react-native";
import { Text, View } from "react-native";
import invariant from "tiny-invariant";
import type { ListTerminalsResponse } from "@getpaseo/protocol/messages";
import { deriveTerminalActivityStatusBucket } from "@getpaseo/protocol/terminal-activity";
import { TerminalPane } from "@/components/terminal-pane";
import { usePaneContext, usePaneFocus } from "@/panels/pane-context";
import type { PanelDescriptor, PanelRegistration } from "@/panels/panel-registry";
@@ -13,7 +14,6 @@ import { buildTerminalsQueryKey } from "@/screens/workspace/terminals/state";
import { usePanelStore } from "@/stores/panel-store";
import { useSessionStore } from "@/stores/session-store";
import { useWorkspaceDirectory, useWorkspaceFields } from "@/stores/session-store-hooks";
import { terminalActivityToStatusBucket } from "@/utils/terminal-activity-bucket";
type ListTerminalsPayload = ListTerminalsResponse["payload"];
@@ -70,7 +70,7 @@ function useTerminalPanelDescriptor(
subtitle: t("workspace.tabs.fallback.terminal"),
titleState: "ready",
icon: Terminal,
statusBucket: terminalActivityToStatusBucket(terminal?.activity?.state),
statusBucket: deriveTerminalActivityStatusBucket(terminal?.activity),
};
}
@@ -1,20 +0,0 @@
import { describe, expect, it } from "vitest";
import { terminalActivityToStatusBucket } from "./terminal-activity-bucket";
describe("terminalActivityToStatusBucket", () => {
it("maps working to running", () => {
expect(terminalActivityToStatusBucket("working")).toBe("running");
});
it("maps idle to null", () => {
expect(terminalActivityToStatusBucket("idle")).toBeNull();
});
it("maps null to null", () => {
expect(terminalActivityToStatusBucket(null)).toBeNull();
});
it("maps undefined to null", () => {
expect(terminalActivityToStatusBucket(undefined)).toBeNull();
});
});
@@ -1,10 +0,0 @@
import type { TerminalActivityState } from "@getpaseo/protocol/terminal-activity";
import type { SidebarStateBucket } from "@/utils/sidebar-agent-state";
export function terminalActivityToStatusBucket(
state: TerminalActivityState | null | undefined,
): SidebarStateBucket | null {
if (state === "working") return "running";
if (state === "attention") return "needs_input";
return null;
}