Fix stale native menu hover highlight geometry#2035
Conversation
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: Fix stale native menu hover highlight geometry This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
9349281 to
f3dbee5
Compare
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: Fix stale native menu hover highlight geometry This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
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".
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: Fix stale native menu hover highlight geometry This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
Co-authored-by: Trim <womayeyonggugele@gmail.com>
Co-authored-by: Trim <womayeyonggugele@gmail.com>
e2d2293 to
44e4f90
Compare
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: Fix stale native menu hover highlight geometry This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
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>
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: Fix stale native menu hover highlight geometry This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: Fix stale native menu hover highlight geometry This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: Fix stale native menu hover highlight geometry This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
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.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