From 521f5b5a5682b18f2d59cf95226fc203cd314240 Mon Sep 17 00:00:00 2001
From: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Date: Wed, 7 Oct 2026 19:34:41 +0300
Subject: [PATCH] fix(web): replace Lineage timers with Stop on hover (#16791)
---
.../src/components/chat/ThreadDetailsControl.tsx | 1 +
.../components/chat/ThreadRelationshipsControl.tsx | 14 ++++++++++----
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/apps/web/src/components/chat/ThreadDetailsControl.tsx b/apps/web/src/components/chat/ThreadDetailsControl.tsx
index f14a52c14496cafb2a3fdf8435fe03e8aad3a34e..0b83c931352206e2e3f3da8a7ec04583ac9b6710 100644
--- a/apps/web/src/components/chat/ThreadDetailsControl.tsx
+++ b/apps/web/src/components/chat/ThreadDetailsControl.tsx
@@ -20,6 +20,7 @@ import { ChevronDownIcon } from "lucide-react";
const parts = {
row: THREAD_DETAILS_PANEL_ROW_CLASS,
+ "group-row": `${THREAD_DETAILS_PANEL_ROW_CLASS} hover:!bg-transparent dark:hover:!bg-transparent`,
select: THREAD_DETAILS_PANEL_SELECT_ROW_CLASS,
primary: THREAD_DETAILS_PANEL_SPLIT_PRIMARY_CLASS,
secondary: THREAD_DETAILS_PANEL_SPLIT_SECONDARY_CLASS,
diff --git a/apps/web/src/components/chat/ThreadRelationshipsControl.tsx b/apps/web/src/components/chat/ThreadRelationshipsControl.tsx
index f56c1c92b5626a67e8aba137b5cbd8a65f2a435a..cd1265e46a60ec078fb8d78679918f3eb911b4af 100644
--- a/apps/web/src/components/chat/ThreadRelationshipsControl.tsx
+++ b/apps/web/src/components/chat/ThreadRelationshipsControl.tsx
@@ -388,6 +388,9 @@ export function ThreadRelationshipsPanel(props: {
agent?.origin === "app_owned" &&
agent.startedAt &&
["pending", "running", "waiting"].includes(agent.status);
+ const trailingVisibilityClass = canStop
+ ? "group-hover:opacity-0 group-focus-within:opacity-0 pointer-coarse:opacity-0 [@media(hover:none)]:opacity-0"
+ : "";
const threadTitle = relationshipThreadTitle({
title: node?.thread?.title ?? agent?.title ?? threadId,
isSubagent,
@@ -444,13 +447,13 @@ export function ThreadRelationshipsPanel(props: {
carries status, so an agent with a known time shows only that. */}
{agent && !failed && deriveSubagentElapsedMs(agent, 0) !== null ? (