Fix stale native menu hover highlight geometry#2035
Conversation
9349281 to
f3dbee5
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f3dbee5bad
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Co-authored-by: Trim <womayeyonggugele@gmail.com>
Co-authored-by: Trim <womayeyonggugele@gmail.com>
e2d2293 to
44e4f90
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 44e4f90bd2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Co-authored-by: Trim <womayeyonggugele@gmail.com>
|
Maintainer proof for exact head
Local QA screenshots were retained but not uploaded. No real provider, credential, browser-cookie, or Keychain probe was used. Thanks @Zihao-Qi! |
Summary
Problem
When usage or status content refreshed while hovering native rows such as Plan Usage, Cost, or Open Status Page, AppKit could keep drawing the selection background using the old row geometry while the menu was rebuilt underneath it. This occasionally left the blue hover highlight over a different part of the menu.
Fix
Track the complete deferred rebuild request per open menu. Rebuild requests keep fetching and updating provider state, but any geometry-changing root or hosted-submenu mutation waits while a native item is highlighted. Coalesced requests retain readiness-baseline resync intent, and lifecycle cleanup removes deferred work when the menu closes.
Impact
Only visible menu layout mutation is briefly deferred while the pointer remains over a native row. Provider fetching, status items, widgets, and background updates continue normally.
Verification
Exact candidate:
94ccb89a96f426444e76d79d790c674ea1a9df7bmake check: passed.make test: 598/598 selections, 50/50 groups, zero failures, retries, or timeouts.mainintegration: clean merge tree after Default Agent Sessions to off #2039.29115867481passed changes, lint, Linux arm64/x64, both macOS shards, aggregate, and GitGuardian checks.Package verification used a Developer ID-signed normal exact-commit bundle. The controlled UI mutation used a separate strict-valid exact debug bundle with debug-only
get-task-allow. Runtime used isolated home/config state, denied network and provider subprocess execution, and enabled both Keychain gates. A file-gated in-memory fixture recorded the real AppKit highlight state before mutation:Plan Usagewas a native highlighted row; root rebuild count stayed flat while highlighted, then increased exactly once after the pointer left. The menu stayed open with stable row geometry.Open Status Pagewas a native highlighted row; the API-only submenu remained unchanged while highlighted, then rebuilt exactly once after pointer exit and showed the added Dashboard row.Local screenshots were retained as QA artifacts and were not uploaded.
Screenshot before