Skip to content

Make iOS workspace groups and reconnect dogfood-ready - #9326

Merged
azooz2003-bit merged 135 commits into
mainfrom
feat-ios-group-actions-dogfood
Aug 3, 2026
Merged

azooz2003-bit merged 135 commits into
mainfrom
feat-ios-group-actions-dogfood

Conversation

@azooz2003-bit

@azooz2003-bit azooz2003-bit commented Aug 1, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Restore complete workspace and group action menus, rename alerts, create-in-group, group creation, destructive confirmations, and synchronized custom icons.
  • Keep saved Mac routes reconnecting across wake, broker-token refresh, app activation, and tagged dogfood setup.
  • Authorize Mac-scoped workspace mutations by the signed-in Stack account after short-lived attach tickets expire, while current workspace-scoped tickets still narrow access.
  • Record workspace mutation send, block, failure, and acceptance diagnostics on iOS.

Verification


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with 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

    • Workspace groups: Row actions restored (rename alert, create‑in‑group, ungroup, delete) with atomic destructive confirmations; menus stay group‑scoped while still offering workspace actions; native inputs/state refresh and swipe completion preserved; Mac group icons flow end‑to‑end (icon_symbol) into headers/previews; compact UIKit rename alert for rows/menus.
    • Authorization/UI/Tooling/CLI: Account‑authorized mutations can omit attach‑ticket context via 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 exposes debug.mobile.transport.disconnect; crash reporter prepares locale before Sentry start; dogfood launch accepts CMUX_DOGFOOD_CLIENT_ID; CLI events use a monotonic --timeout, add snapshot‑only mode, buffered reads, per‑stream deadlines, and deterministic reconnect waits.
  • Reliability

    • Readiness/recovery: Connection health waits for mobile.events.subscribe ACK 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 surface connectAttemptGated/routeCleanupBlocked with clear copy across UI/settings.
    • Broker/auth/discovery: Exactly‑once 401 recovery with account‑pinned snapshots; transient token misses classify as connectivity; 401/403 preserve verified offline policy and retry on a 2–120s ladder; registration/sync snapshots carry completeness proofs (discovery_complete/snapshot_complete) with paginated fallback; cached host binding publication added (with path hints); shared relay‑policy backoff is cause‑aware.
    • Diagnostics: Close attribution recognizes display forms (“timed out”, “closed”, peer‑initiated); exported mutation failures redact raw host strings.

Written for commit 9204a9b. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features

    • Added CLI event-stream timeouts, snapshot mode, and chunked event handling.
    • Workspace groups now support configurable icons, creation, renaming, ungrouping, and deletion.
    • Added clearer connection status messaging, reconnect controls, readiness monitoring, and event-stream health checks.
    • Added account-authorized workspace mutations and improved offline retry behavior.
  • Bug Fixes

    • Improved authentication transitions, credential recovery, session cleanup, and stale-connection protection.
    • Refined diagnostics for cancellations, blocked routes, and unavailable paths.
    • Improved connection recovery, event subscription repair, and relay rate-limit handling.
    • Improved attach failure handling and prevented stale connection results from affecting app state.

…oup-actions

# Conflicts:
#	Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceListTableCoordinator.swift
…s-dogfood

# Conflicts:
#	Packages/Shared/CmuxIrohTransport/Tests/CmuxIrohTransportTests/CmxConnectivityEngineTests.swift
@cursor

cursor Bot commented Aug 2, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot 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.

@cursor

cursor Bot commented Aug 3, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot 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.

@cursor

cursor Bot commented Aug 3, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot 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.

@cursor

cursor Bot commented Aug 3, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot 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.

@azooz2003-bit
azooz2003-bit merged commit 1927f13 into main Aug 3, 2026
6 checks passed
azooz2003-bit added a commit that referenced this pull request Aug 5, 2026
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>
teamleaderleo added a commit that referenced this pull request Sep 25, 2026
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>
teamleaderleo added a commit that referenced this pull request Sep 25, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant