Defer closed menu rebuilds during refresh#1261
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 1, 2026, 10:59 PM ET / 02:59 UTC. Summary Reproducibility: yes. Current main’s source path rebuilds a stale menu synchronously on open, and the PR body provides after-fix runtime logs from a freshly packaged debug build showing stale content kept during refresh and rebuilt after refresh settles. Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the PR after required checks and maintainer review, keeping stale-menu reuse limited to data-refresh invalidations while privacy and structure changes force a fresh rebuild. Do we have a high-confidence way to reproduce the issue? Yes. Current main’s source path rebuilds a stale menu synchronously on open, and the PR body provides after-fix runtime logs from a freshly packaged debug build showing stale content kept during refresh and rebuilt after refresh settles. Is this the best way to solve the issue? Yes. The version-gated approach is narrow: it avoids refresh-time open-menu rebuilds for data changes while forcing rebuilds for privacy and structure changes that must not reuse stale content. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against dc4e4835bc6e. Label changesLabel justifications:
Evidence reviewedWhat I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
Addressed the P3 delay-seam comment in 3e9360a.
Validation:
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
Thanks for the detailed PR and tests. I ran the focused menu suites locally ( Holding this one for a fix before landing: the stale-menu preservation path can keep previously rendered personal details visible when a non-data setting invalidates the menu during an in-flight refresh. Concrete case: populate/open with account email visible, start a long refresh, enable Hide Personal Info, then reopen before refresh finishes. The likely fix is to make the skip apply only to data-refresh invalidations, or force rebuilds for privacy/structure settings even while provider data refresh is active. |
|
Addressed the privacy stale-menu blocker in 9bec53f.
Validation:
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
9bec53f to
2178073
Compare
Summary
Prepare attached closed menus after refresh work settles, and keep stale nonempty menu content on open while store or token refreshes are active.
Context
Part of the UI hang/lag cleanup set: this keeps refresh-time menu rebuild work off the open-menu path.
Validation
swift test --filter StatusMenuOpenRefreshTests(25 tests passed)make checkgit diff --checkRuntime Proof
Runtime proof was captured from a freshly packaged debug build on June 1, 2026 at 00:05 PDT, driven through macOS Accessibility. Logs are redacted to lifecycle state, item counts, provider id, and refresh state only.
Interpretation: while refresh was active, opening the stale nonempty menu kept the existing 13 items instead of rebuilding synchronously; after close and refresh settle, the closed-menu rebuild path populated the next version with 17 items.