Home

mweinbach / agent-coworker

publicmweinbach/agent-coworker
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

fix(desktop): make sidebar/scroll affordances keyboard and touch reachable

3 months ago

a7bfa1c
Authored
mweinbach6/17/2026, 8:35:31 PM
Hover-only affordances (opacity-0 pointer-events-none group-hover:*) are
invisible to keyboard and no-hover users. This applies the existing house
pattern (group-focus-within:*, already used by ChatThreadHeader and
ResearchSourcesList) to every site, and adds a persistent per-thread
overflow menu so thread actions are reachable without right-click.

- Sidebar.tsx: add group-focus-within:opacity-100/group-focus-within:
  pointer-events-auto to the four section action buttons (chats collapse,
  new chat, projects collapse, project overflow). Extract
  canGenerateMemoryForThread / generateMemoryForThread /
  deleteThreadHistoryWithConfirm / displayTitleForThread from
  handleThreadContextMenu so the new DropdownMenu can reuse the same
  confirm-dialog logic.
- SidebarOneOffChatItem.tsx / SidebarWorkspaceItem.tsx: reveal the archive
  button + age label on group-focus-within (and suppress the age-label
  fade so it doesn't fight the revealed button).
- ThreadOverflowMenu.tsx (new): Radix DropdownMenu exposing Rename /
  Archive / Generate memory / Delete history per thread, reusing the
  existing actions. Fully keyboard navigable, works on touch.
- conversation.tsx: ConversationScrollButton now reveals on focus-visible
  so the focus target itself becomes visible.
- test/thread-overflow-menu.test.tsx: lock in the focusable, labeled trigger.

Parent11c290d

6 files changed
  • apps/desktop/src/components/ai-elements/conversation.tsx+1−1
  • apps/desktop/src/ui/Sidebar.tsx+67−29
  • apps/desktop/src/ui/sidebar/SidebarOneOffChatItem.tsx+32−14
  • apps/desktop/src/ui/sidebar/SidebarWorkspaceItem.tsx+34−14
  • apps/desktop/src/ui/sidebar/ThreadOverflowMenu.tsx+97−0
  • apps/desktop/test/thread-overflow-menu.test.tsx+97−0