Skip to content

Fix compact hover popover flicker - #3335

Open
dillonzq wants to merge 2 commits into
get-bb:mainfrom
dillonzq:fix/compact-hover-popover-flicker
Open

Fix compact hover popover flicker#3335
dillonzq wants to merge 2 commits into
get-bb:mainfrom
dillonzq:fix/compact-hover-popover-flicker

Conversation

@dillonzq

@dillonzq dillonzq commented Sep 9, 2026

Copy link
Copy Markdown

Human comments

What was wrong

On compact viewports, the shared Popover renders content as a bottom drawer. useHoverPopover disabled hover only for coarse pointers, so a fine pointer in a narrow browser window could still open the drawer from the context-window indicator. Opening the drawer moved the pointer out of the trigger, which closed the popover; pointer re-entry opened it again and caused visible flicker. This addresses #3334.

What changed

  • useHoverPopover now treats compact viewports as non-hoverable, alongside coarse-pointer devices. It still allows explicit open/close changes and preserves hover behavior on wider viewports.
  • Pending hover timers are cleared before the compact-viewport early return, so a viewport transition cannot apply a delayed open or close.
  • Added focused regression coverage for compact hover suppression, explicit opening, and desktop hover behavior.
  • No server, daemon, wire, CLI, or public plugin API changes.

How you verified

  • ../../node_modules/.bin/vitest run --config vitest.config.ts src/components/ui/hooks/use-hover-popover.test.tsx src/views/thread-detail/PaneMaximizeButton.test.tsx — 2 files, 15 tests passed.
  • git diff --check — passed.
  • The repository Turbo command was also attempted, but the local pnpm wrapper could not create its temporary package-manager directory (Operation not permitted); the direct Vitest run completed successfully.

Fixes #3334

AGENT GENERATED

Copilot AI lite review requested due to automatic review settings September 9, 2026 11:28

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The new early-return path can leave previously scheduled open/close timeouts uncleared when switching into compact viewport, allowing delayed transitions to fire after hover is disabled.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR fixes a UI flicker on compact viewports by disabling hover-driven popover open/close when the shared Popover renders as a responsive bottom drawer, while keeping explicit open/close behavior and preserving hover behavior on wider viewports.

Changes:

  • Treat compact viewports as non-hoverable in useHoverPopover (in addition to coarse pointers).
  • Add regression tests to confirm compact hover suppression and desktop hover behavior.
File summaries
File Description
apps/app/src/components/ui/hooks/use-hover-popover.ts Disables hover-driven behavior in compact viewports by introducing an isPointerHoverDisabled condition.
apps/app/src/components/ui/hooks/use-hover-popover.test.tsx Adds focused tests covering compact hover suppression, explicit open, and non-compact hover open.
Review details
  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread apps/app/src/components/ui/hooks/use-hover-popover.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Context-window usage indicator flickers when hovered on compact viewports

2 participants