From 6c02b1ea9c7b39ec31f71fcf79e4ab2c873255ec Mon Sep 17 00:00:00 2001 From: Phil Feibicke Date: Sun, 7 Jun 2026 18:13:42 +0200 Subject: [PATCH 1/2] fix(web): show sidebar action buttons on touch devices without hover The new-thread and archive buttons in the project sidebar used a hover-only reveal pattern (opacity-0 with group-hover:opacity-100). On iPad Safari and other tablets, the viewport is >640px so the max-sm: fallback does not apply, and hover is not available, leaving the buttons permanently invisible. Add @media (hover: none) CSS utilities that make these buttons visible and tappable on touch devices, while hiding the elements they replace (environment badge, thread timestamp) to avoid overlap. --- apps/web/src/components/Sidebar.tsx | 10 +++++----- apps/web/src/index.css | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx index f3f163b017d..77595eb07dc 100644 --- a/apps/web/src/components/Sidebar.tsx +++ b/apps/web/src/components/Sidebar.tsx @@ -391,7 +391,7 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowP const threadMetaClassName = isConfirmingArchive ? "pointer-events-none opacity-0" : !isThreadRunning - ? "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" + ? "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 sidebar-touch-timestamp" : "pointer-events-none"; const clearConfirmingArchive = useCallback(() => { setConfirmingArchiveThreadKey((current) => (current === threadKey ? null : current)); @@ -637,7 +637,7 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowP ) : !isThreadRunning ? ( appSettingsConfirmThreadArchive ? ( -
+