Sync upstream compact account menus - #101
Conversation
With four or more claude-swap accounts the Claude menu now pins the active account's full card, renders inactive accounts as one-line rows sorted by remaining headroom (red/amber below 10%/50% left, star on the healthiest activatable account), and folds the healthy tail behind a summary row. Clicking a compact row expands that account's full card; expansion state resets when the menu closes. Fewer than four accounts keep the stacked cards. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…w-8b33ad Claude: compact multi-account menu (active card + headroom-sorted rows + collapsed tail)
Generalize the claude-swap compact layout: the plan renderer moves to a shared StatusItemController+CompactAccountMenu extension, token-account and flat Codex stacked lists project into the same planner, and the planner labels constraint windows with provider metadata (session/weekly/ tertiary). Workspace-grouped Codex lists keep their sectioned stacked layout. Expansion state is now keyed per account identity and provider. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ll-providers Menu: extend compact multi-account layout to token accounts and Codex
NSHostingView commits SwiftUI updates asynchronously, so swapping a recycled card's rootView during a provider switch painted the previous tab's content for a frame before the new content landed — a visible flicker. Force layout and draw of attached hosted rows inside the same disabled-actions transaction as the menu item mutation on all three update paths (cached swap, in-place reconcile, full rebuild). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Menu: eliminate provider tab-switch flicker with synchronous hosted-row flush
The synchronous flush in #2546 was insufficient: freshly built hosting views are not yet parented into the menu window when the flush runs, and NSHostingView still commits SwiftUI content asynchronously, so the first switch to an unvisited tab painted a frame late. Pre-build every sibling tab's rows into the merged switcher cache 120ms after each populate of the open menu, forcing SwiftUI layout while detached; a tab switch then attaches pre-rendered items through the instant cached-swap path. Also flush pending drawing at the window level instead of per-view so newly inserted rows are covered. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Menu: pre-build sibling switcher tabs so provider switches attach pre-rendered rows
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
CI follow-up: initial run 30697550581 exposed a deterministic x86_64 XCTest failure in StatusMenuSwitcherWarmupTests. The test drove the current thread run loop even though @mainactor XCTest execution is not guaranteed to use that run loop. Commit 450b86d replaces the Foundation timer bridge with an explicit main CFRunLoopTimer registered for eventTracking and default modes, and tests execution, cancellation, and mode registration through stable seams. Focused StatusMenuSwitcherWarmupTests (3/3) and the full lint/localization/branding/palette suite pass locally. Fresh CI run 30699085387 is in progress on exact head 450b86d. |
Summary
8ef86077e70ac27d45ddddaf49e409824ccdf668..9bb9c42fb6f0484c4d0e398e74393aeb52ac443dQuotaKit adaptations
UPSTREAM_MONITOR_BASEandUPSTREAM_SYNC_DATE; shipped upstream and mobile versions are unchangedReview and validation
git diff --checkpassedswift buildpassedPARSER_LINT_BASE=origin/main ./Scripts/lint.sh lintpassed with zero violations; locale, branding, palette, parser, docs-link, package, release-feed, and repository audits passedmake testran all 67 groups: 55 first-pass groups passed, one timeout group recovered through isolated retries, and one retry-sensitive group remained nonzero; required clean-environment CI is the merge gateFixes #100