authorgravatar for 62337003+Bil0000@users.noreply.github.comBilal Bakr <62337003+Bil0000@users.noreply.github.com> 2026-10-07 19:34:41+03:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-10-07 09:34:41-07:00
log521f5b5a5682b18f2d59cf95226fc203cd314240
treea6662d9242fb9d3a3b859f2ce43b3a20d4b8dec9
parent611132c171f3a821bd2e32f22261135cef6330ac
signature Signed by PGP key B5690EEEBB952194

fix(web): replace Lineage timers with Stop on hover (#16791)


2 files changed, 11 insertions(+), 4 deletions(-)

apps/web/src/components/chat/ThreadDetailsControl.tsx+1
...@@ -20,6 +20,7 @@ import { ChevronDownIcon } from "lucide-react";...@@ -20,6 +20,7 @@ import { ChevronDownIcon } from "lucide-react";
2020
21const parts = {21const parts = {
22 row: THREAD_DETAILS_PANEL_ROW_CLASS,22 row: THREAD_DETAILS_PANEL_ROW_CLASS,
23 "group-row": `${THREAD_DETAILS_PANEL_ROW_CLASS} hover:!bg-transparent dark:hover:!bg-transparent`,
23 select: THREAD_DETAILS_PANEL_SELECT_ROW_CLASS,24 select: THREAD_DETAILS_PANEL_SELECT_ROW_CLASS,
24 primary: THREAD_DETAILS_PANEL_SPLIT_PRIMARY_CLASS,25 primary: THREAD_DETAILS_PANEL_SPLIT_PRIMARY_CLASS,
25 secondary: THREAD_DETAILS_PANEL_SPLIT_SECONDARY_CLASS,26 secondary: THREAD_DETAILS_PANEL_SPLIT_SECONDARY_CLASS,
apps/web/src/components/chat/ThreadRelationshipsControl.tsx+10-4
...@@ -388,6 +388,9 @@ export function ThreadRelationshipsPanel(props: {...@@ -388,6 +388,9 @@ export function ThreadRelationshipsPanel(props: {
388 agent?.origin === "app_owned" &&388 agent?.origin === "app_owned" &&
389 agent.startedAt &&389 agent.startedAt &&
390 ["pending", "running", "waiting"].includes(agent.status);390 ["pending", "running", "waiting"].includes(agent.status);
391 const trailingVisibilityClass = canStop
392 ? "group-hover:opacity-0 group-focus-within:opacity-0 pointer-coarse:opacity-0 [@media(hover:none)]:opacity-0"
393 : "";
391 const threadTitle = relationshipThreadTitle({394 const threadTitle = relationshipThreadTitle({
392 title: node?.thread?.title ?? agent?.title ?? threadId,395 title: node?.thread?.title ?? agent?.title ?? threadId,
393 isSubagent,396 isSubagent,
...@@ -444,13 +447,13 @@ export function ThreadRelationshipsPanel(props: {...@@ -444,13 +447,13 @@ export function ThreadRelationshipsPanel(props: {
444 carries status, so an agent with a known time shows only that. */}447 carries status, so an agent with a known time shows only that. */}
445 {agent && !failed && deriveSubagentElapsedMs(agent, 0) !== null ? (448 {agent && !failed && deriveSubagentElapsedMs(agent, 0) !== null ? (
446 <span449 <span
447 className={`shrink-0 text-2xs font-normal tabular-nums text-muted-foreground ${canStop ? "group-hover:opacity-0 group-focus-within:opacity-0 pointer-coarse:opacity-0 [@media(hover:none)]:opacity-0" : ""}`}450 className={`shrink-0 text-2xs font-normal tabular-nums text-muted-foreground ${trailingVisibilityClass}`}
448 >451 >
449 <AgentElapsed agent={agent} compact />452 <AgentElapsed agent={agent} compact />
450 </span>453 </span>
451 ) : !isMergeTarget ? (454 ) : !isMergeTarget ? (
452 <span455 <span
453 className={`shrink-0 text-2xs ${failed ? "text-destructive" : "text-muted-foreground"}`}456 className={`shrink-0 text-2xs ${failed ? "text-destructive" : "text-muted-foreground"} ${trailingVisibilityClass}`}
454 >457 >
455 {threadRelationshipStatusLabel(status)}458 {threadRelationshipStatusLabel(status)}
456 </span>459 </span>
...@@ -458,7 +461,10 @@ export function ThreadRelationshipsPanel(props: {...@@ -458,7 +461,10 @@ export function ThreadRelationshipsPanel(props: {
458 </>461 </>
459 );462 );
460 return (463 return (
461 <li key={threadId} className="group relative flex h-8 items-center rounded-lg">464 <li
465 key={threadId}
466 className={`group relative flex h-8 items-center rounded-lg ${canStop ? THREAD_DETAILS_PANEL_LINK_SPLIT_GROUP_CLASS : ""}`}
467 >
462 {isMergeTarget ? (468 {isMergeTarget ? (
463 <div className={THREAD_DETAILS_PANEL_LINK_SPLIT_GROUP_CLASS}>469 <div className={THREAD_DETAILS_PANEL_LINK_SPLIT_GROUP_CLASS}>
464 <Tooltip>470 <Tooltip>
...@@ -528,7 +534,7 @@ export function ThreadRelationshipsPanel(props: {...@@ -528,7 +534,7 @@ export function ThreadRelationshipsPanel(props: {
528 variant="ghost"534 variant="ghost"
529 disabled={node?.missing === true}535 disabled={node?.missing === true}
530 onClick={() => openThread(threadId)}536 onClick={() => openThread(threadId)}
531 part="row"537 part={canStop ? "group-row" : "row"}
532 />538 />
533 }539 }
534 >540 >