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";
2020
2121const parts = {
2222 row: THREAD_DETAILS_PANEL_ROW_CLASS,
23 "group-row": `${THREAD_DETAILS_PANEL_ROW_CLASS} hover:!bg-transparent dark:hover:!bg-transparent`,
2324 select: THREAD_DETAILS_PANEL_SELECT_ROW_CLASS,
2425 primary: THREAD_DETAILS_PANEL_SPLIT_PRIMARY_CLASS,
2526 secondary: THREAD_DETAILS_PANEL_SPLIT_SECONDARY_CLASS,
apps/web/src/components/chat/ThreadRelationshipsControl.tsx+10-4
......@@ -388,6 +388,9 @@ export function ThreadRelationshipsPanel(props: {
388388 agent?.origin === "app_owned" &&
389389 agent.startedAt &&
390390 ["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 : "";
391394 const threadTitle = relationshipThreadTitle({
392395 title: node?.thread?.title ?? agent?.title ?? threadId,
393396 isSubagent,
......@@ -444,13 +447,13 @@ export function ThreadRelationshipsPanel(props: {
444447 carries status, so an agent with a known time shows only that. */}
445448 {agent && !failed && deriveSubagentElapsedMs(agent, 0) !== null ? (
446449 <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}`}
448451 >
449452 <AgentElapsed agent={agent} compact />
450453 </span>
451454 ) : !isMergeTarget ? (
452455 <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}`}
454457 >
455458 {threadRelationshipStatusLabel(status)}
456459 </span>
......@@ -458,7 +461,10 @@ export function ThreadRelationshipsPanel(props: {
458461 </>
459462 );
460463 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 >
462468 {isMergeTarget ? (
463469 <div className={THREAD_DETAILS_PANEL_LINK_SPLIT_GROUP_CLASS}>
464470 <Tooltip>
......@@ -528,7 +534,7 @@ export function ThreadRelationshipsPanel(props: {
528534 variant="ghost"
529535 disabled={node?.missing === true}
530536 onClick={() => openThread(threadId)}
531 part="row"
537 part={canStop ? "group-row" : "row"}
532538 />
533539 }
534540 >