| ... | ... | @@ -373,7 +373,7 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowP |
| 373 | 373 | const threadMetaClassName = isConfirmingArchive |
| 374 | 374 | ? "pointer-events-none opacity-0" |
| 375 | 375 | : !isThreadRunning |
| 376 | | ? "pointer-events-none transition-opacity duration-150 group-hover/menu-sub-item:opacity-0 group-focus-within/menu-sub-item:opacity-0" |
| 376 | ? "pointer-events-none transition-opacity duration-150 max-sm:pr-6 group-hover/menu-sub-item:opacity-0 group-focus-within/menu-sub-item:opacity-0" |
| 377 | 377 | : "pointer-events-none"; |
| 378 | 378 | const clearConfirmingArchive = useCallback(() => { |
| 379 | 379 | setConfirmingArchiveThreadKey((current) => (current === threadKey ? null : current)); |
| ... | ... | @@ -605,7 +605,11 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowP |
| 605 | 605 | <TerminalIcon className={`size-3 ${terminalStatus.pulse ? "animate-pulse" : ""}`} /> |
| 606 | 606 | </span> |
| 607 | 607 | )} |
| 608 | | <div className="flex min-w-12 justify-end"> |
| 608 | <div |
| 609 | className={`flex min-w-12 justify-end ${ |
| 610 | isRemoteThread ? "max-sm:min-w-24" : "max-sm:min-w-20" |
| 611 | }`} |
| 612 | > |
| 609 | 613 | {isConfirmingArchive ? ( |
| 610 | 614 | <button |
| 611 | 615 | ref={handleConfirmArchiveRef} |
| ... | ... | @@ -621,13 +625,13 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowP |
| 621 | 625 | </button> |
| 622 | 626 | ) : !isThreadRunning ? ( |
| 623 | 627 | appSettingsConfirmThreadArchive ? ( |
| 624 | | <div className="pointer-events-none absolute top-1/2 right-1 -translate-y-1/2 opacity-0 transition-opacity duration-150 group-hover/menu-sub-item:pointer-events-auto group-hover/menu-sub-item:opacity-100 group-focus-within/menu-sub-item:pointer-events-auto group-focus-within/menu-sub-item:opacity-100"> |
| 628 | <div className="pointer-events-none absolute top-1/2 right-1 -translate-y-1/2 opacity-0 transition-opacity duration-150 max-sm:pointer-events-auto max-sm:opacity-100 group-hover/menu-sub-item:pointer-events-auto group-hover/menu-sub-item:opacity-100 group-focus-within/menu-sub-item:pointer-events-auto group-focus-within/menu-sub-item:opacity-100"> |
| 625 | 629 | <button |
| 626 | 630 | type="button" |
| 627 | 631 | data-thread-selection-safe |
| 628 | 632 | data-testid={`thread-archive-${thread.id}`} |
| 629 | 633 | aria-label={`Archive ${thread.title}`} |
| 630 | | className="inline-flex size-5 cursor-pointer items-center justify-center text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring" |
| 634 | className="inline-flex size-5 cursor-pointer items-center justify-center text-muted-foreground/60 transition-colors hover:text-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring" |
| 631 | 635 | onPointerDown={stopPropagationOnPointerDown} |
| 632 | 636 | onClick={handleStartArchiveConfirmation} |
| 633 | 637 | > |
| ... | ... | @@ -638,13 +642,13 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowP |
| 638 | 642 | <Tooltip> |
| 639 | 643 | <TooltipTrigger |
| 640 | 644 | render={ |
| 641 | | <div className="pointer-events-none absolute top-1/2 right-1 -translate-y-1/2 opacity-0 transition-opacity duration-150 group-hover/menu-sub-item:pointer-events-auto group-hover/menu-sub-item:opacity-100 group-focus-within/menu-sub-item:pointer-events-auto group-focus-within/menu-sub-item:opacity-100"> |
| 645 | <div className="pointer-events-none absolute top-1/2 right-1 -translate-y-1/2 opacity-0 transition-opacity duration-150 max-sm:pointer-events-auto max-sm:opacity-100 group-hover/menu-sub-item:pointer-events-auto group-hover/menu-sub-item:opacity-100 group-focus-within/menu-sub-item:pointer-events-auto group-focus-within/menu-sub-item:opacity-100"> |
| 642 | 646 | <button |
| 643 | 647 | type="button" |
| 644 | 648 | data-thread-selection-safe |
| 645 | 649 | data-testid={`thread-archive-${thread.id}`} |
| 646 | 650 | aria-label={`Archive ${thread.title}`} |
| 647 | | className="inline-flex size-5 cursor-pointer items-center justify-center text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring" |
| 651 | className="inline-flex size-5 cursor-pointer items-center justify-center text-muted-foreground/60 transition-colors hover:text-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring" |
| 648 | 652 | onPointerDown={stopPropagationOnPointerDown} |
| 649 | 653 | onClick={handleArchiveImmediateClick} |
| 650 | 654 | > |
| ... | ... | @@ -665,11 +669,11 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowP |
| 665 | 669 | render={ |
| 666 | 670 | <span |
| 667 | 671 | aria-label={threadEnvironmentLabel ?? "Remote"} |
| 668 | | className="inline-flex items-center justify-center" |
| 672 | className="inline-flex h-5 items-center justify-center" |
| 669 | 673 | /> |
| 670 | 674 | } |
| 671 | 675 | > |
| 672 | | <CloudIcon className="size-3 text-muted-foreground/40" /> |
| 676 | <CloudIcon className="block size-3 text-muted-foreground/60" /> |
| 673 | 677 | </TooltipTrigger> |
| 674 | 678 | <TooltipPopup side="top">{threadEnvironmentLabel}</TooltipPopup> |
| 675 | 679 | </Tooltip> |
| ... | ... | @@ -2025,7 +2029,7 @@ const SidebarProjectItem = memo(function SidebarProjectItem(props: SidebarProjec |
| 2025 | 2029 | ? "Remote project" |
| 2026 | 2030 | : "Available in multiple environments" |
| 2027 | 2031 | } |
| 2028 | | className="pointer-events-none absolute top-1 right-1.5 inline-flex size-5 items-center justify-center rounded-md text-muted-foreground/50 transition-opacity duration-150 max-sm:right-7 group-hover/project-header:opacity-0 group-focus-within/project-header:opacity-0 max-sm:group-hover/project-header:opacity-100 max-sm:group-focus-within/project-header:opacity-100" |
| 2032 | className="pointer-events-none absolute top-1 right-1.5 inline-flex size-5 items-center justify-center rounded-md text-muted-foreground/60 transition-opacity duration-150 max-sm:right-7 group-hover/project-header:opacity-0 group-focus-within/project-header:opacity-0 max-sm:group-hover/project-header:opacity-100 max-sm:group-focus-within/project-header:opacity-100" |
| 2029 | 2033 | /> |
| 2030 | 2034 | } |
| 2031 | 2035 | > |
| ... | ... | @@ -2044,7 +2048,7 @@ const SidebarProjectItem = memo(function SidebarProjectItem(props: SidebarProjec |
| 2044 | 2048 | type="button" |
| 2045 | 2049 | aria-label={`Create new thread in ${project.displayName}`} |
| 2046 | 2050 | data-testid="new-thread-button" |
| 2047 | | className="inline-flex size-5 cursor-pointer items-center justify-center rounded-md text-muted-foreground/70 hover:bg-secondary hover:text-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring" |
| 2051 | className="inline-flex size-5 cursor-pointer items-center justify-center rounded-md text-muted-foreground/60 hover:bg-secondary hover:text-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring" |
| 2048 | 2052 | onClick={handleCreateThreadClick} |
| 2049 | 2053 | > |
| 2050 | 2054 | <SquarePenIcon className="size-3.5" /> |
| ... | ... | @@ -2420,9 +2424,13 @@ const SidebarChromeHeader = memo(function SidebarChromeHeader({ |
| 2420 | 2424 | |
| 2421 | 2425 | const SidebarChromeFooter = memo(function SidebarChromeFooter() { |
| 2422 | 2426 | const navigate = useNavigate(); |
| 2427 | const { isMobile, setOpenMobile } = useSidebar(); |
| 2423 | 2428 | const handleSettingsClick = useCallback(() => { |
| 2429 | if (isMobile) { |
| 2430 | setOpenMobile(false); |
| 2431 | } |
| 2424 | 2432 | void navigate({ to: "/settings" }); |
| 2425 | | }, [navigate]); |
| 2433 | }, [isMobile, navigate, setOpenMobile]); |
| 2426 | 2434 | |
| 2427 | 2435 | return ( |
| 2428 | 2436 | <SidebarFooter className="p-2"> |