Make iOS workspace groups and reconnect dogfood-ready - #9326
Conversation
…oup-actions # Conflicts: # Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceListTableCoordinator.swift
…s-dogfood # Conflicts: # Packages/Shared/CmuxIrohTransport/Tests/CmuxIrohTransportTests/CmxConnectivityEngineTests.swift
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
…s-dogfood # Conflicts: # cmuxTests/SSHPTYAttachNoProgressRetryTests.swift
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
The connectivity-v2 port (#9347) folded .connectAttemptGated into the request-timeout pattern, so the dedicated case #9326 added below it was unreachable and gate refusals surfaced as fabricated timeouts. Drop the duplicate so gatedConnectAttemptIsNotPresentedAsATimeout is green again. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
teardownCancellationLetsLaunchRouteRetryAndIgnoresLateCompletion was added in #9401 expecting claimStoredReconnect() to return nil after a retryable cancel. The same PR made that cancel reset the owner to unclaimed, and claimStoredReconnect has accepted unclaimed since #9326, so the probe succeeded and then blocked the retried injected attach. Assert shouldFallBackFromInjectedAttach is false instead, which is the signal startInjectedAttach uses to choose retry over stored reconnect. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…retry (#14553) * iOS: expect build-scoped filter ids in alias index test PR #8936 made filterMachineIDs return pairing-id entries for a tagged selection so sibling builds' rows are excluded. It updated the scope test but left aliasIndexPrefersActivePairingThenDisplayOrder expecting the bare device id. Expect the tagged entries and cover the untagged device-level case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * iOS: assert retryable attach teardown without claiming stored reconnect teardownCancellationLetsLaunchRouteRetryAndIgnoresLateCompletion was added in #9401 expecting claimStoredReconnect() to return nil after a retryable cancel. The same PR made that cancel reset the owner to unclaimed, and claimStoredReconnect has accepted unclaimed since #9326, so the probe succeeded and then blocked the retried injected attach. Assert shouldFallBackFromInjectedAttach is false instead, which is the signal startInjectedAttach uses to choose retry over stored reconnect. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Summary
Verification
yutogrpact route checkto restoredyu.grpact. Physical iPhone install is in progress.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Restores full iOS workspace/group actions with a compact rename alert, group‑scoped menus, synced SF Symbol icons, and a Mail‑style status line for reconnects. Makes reconnects and auth dogfood‑ready with event‑driven readiness on a monotonic clock, exactly‑once 401 recovery, cause‑aware backoff, deterministic CLI timeouts, and a fallback from failed injected‑attach startup to saved‑Mac reconnect.
New Features
icon_symbol) into headers/previews; compact UIKit rename alert for rows/menus.MobileCoreRPCAttachTicketPolicy(used for create‑in‑group when the host advertises account‑auth); Mac‑wide actions stay discoverable after ticket expiry; Workspace Detail Reconnect is hidden during reauth; status line replaces toasts/overlay; host exposesdebug.mobile.transport.disconnect; crash reporter prepares locale before Sentry start; dogfood launch acceptsCMUX_DOGFOOD_CLIENT_ID; CLI events use a monotonic--timeout, add snapshot‑only mode, buffered reads, per‑stream deadlines, and deterministic reconnect waits.Reliability
mobile.events.subscribeACK on a process‑local monotonic clock and ignores stale acks; route health resets on network change; stale transports drain before redial; endpoint consumers wait through unexpected closures; recovery target is excluded from secondary aggregation; cancelled dials don’t count as failures; gated and cleanup‑blocked attempts surfaceconnectAttemptGated/routeCleanupBlockedwith clear copy across UI/settings.discovery_complete/snapshot_complete) with paginated fallback; cached host binding publication added (with path hints); shared relay‑policy backoff is cause‑aware.Written for commit 9204a9b. Summary will update on new commits.
Summary by CodeRabbit
New Features
Bug Fixes