Skip to content

iOS: title/subtitle lower layout priority than trailing toolbar controls - #7297

Closed
azooz2003-bit wants to merge 12 commits into
mainfrom
feat-toolbar-title-layout-priority
Closed

azooz2003-bit wants to merge 12 commits into
mainfrom
feat-toolbar-title-layout-priority

Conversation

@azooz2003-bit

@azooz2003-bit azooz2003-bit commented Jul 4, 2026 •

Copy link
Copy Markdown
Collaborator

What

Replace the magic-number title-width cap on the iOS mobile workspace toolbar with a principled layout-priority fix.

Previously the title+subtitle (.topBarLeading) and the trailing chat-toggle/terminal-picker cluster (.topBarTrailing) were separate SwiftUI toolbar placement groups, so .layoutPriority could not act between them. A prior PR reserved trailing space with hand-tuned constants (MobileLeadingToolbarTitleWidth: 44/64/60/84/140) and .frame(maxWidth:), which also capped the title at 140pt even when the bar had room.

Now the back button, title/subtitle, a Spacer, and the trailing cluster live in one HStack inside a single .principal toolbar item, framed to the already-measured bar width. Title/subtitle get .layoutPriority(0); back and trailing islands get .layoutPriority(1). The title truncates (tail) first and the trailing controls never compress or collapse into the system overflow menu. Each island keeps its own Liquid Glass backing (mobileGlassCircle / compact glass control / glassEffect capsule) inside a GlassEffectContainer, preserving the three-island look.

MobileLeadingToolbarTitleWidth and its tests are deleted; no per-control constants remain.

Behavior verified (iPhone 16 Pro, iOS 26.5 simulator, mock data)

  • Short title: title capsule hugs content; three islands (back circle, title capsule, trailing capsule).
  • Long title (no chat toggle): title + subtitle truncate with tail ellipsis; terminal picker stays fully visible; no overflow "…" menu.
  • Long title + chat toggle: both trailing icons stay in one capsule; title yields further; no overflow.

Existing regression tests testWorkspaceDetailToolbarKeepsTerminalPickerVisibleWithLongTitle and ...WithLongTitleAndChatToggle (which assert assertToolbarOverflowButtonDoesNotExist) cover this behavior.

🤖 Generated with Claude Code


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.


Summary by cubic

Fixes the iOS workspace toolbar so the title/subtitle yield to trailing controls and the back/trailing islands pin to the nav bar edges. The principal toolbar fills the inset region to keep chat/terminal controls visible while the title truncates; the back island expands for unread badges.

  • Bug Fixes

    • Single principal HStack with layout priorities (title lower) so long titles truncate and trailing controls never overflow.
    • Report detail width as the principal item’s idealWidth and use maxWidth: .infinity to fill the inset bar and pin islands at the edges in all title states.
    • Back island renders as a badge-width control when showing an unread count.
    • Added UI tests for island pinning (short/long titles) and unread-badge back button; CMUX_UITEST_WORKSPACE_DETAIL_UNREAD_BACK_COUNT seeds unread fixtures; raised compact-height tolerance to 3.
  • Refactors

    • Removed the magic-number title cap; deleted MobileLeadingToolbarTitleWidth and its tests; dropped title-width props from WorkspaceTitleMenu and AgentChatDemoScreen.
    • Extracted the toolbar to WorkspaceDetailView+Toolbar.swift and preserved the three-island glass look via GlassEffectContainer, .mobileGlassCompactToolbarControl, and .glassEffect on iOS 26; updated the file-length budget.
    • Made toolbarContentWidth private(set) so only WorkspaceDetailView mutates the measured width.

Written for commit d28c310. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features

    • Unified the iOS workspace top bar into a single principal toolbar with iOS 26+ “glass” styling and a dynamic title area (chat header, browser title, or default title).
    • Updated the workspace title menu presentation for more consistent layout.
  • Bug Fixes

    • Removed geometry-based width tracking and legacy title width logic to avoid inconsistent toolbar sizing/truncation.
    • Adjusted toolbar layout sizing state to support the new top-bar implementation.
  • Tests

    • Added UI regression coverage to ensure toolbar “islands” stay pinned to bar edges, and updated existing assertions/tolerances.
    • Removed obsolete toolbar title width sizing tests.

Note

Low Risk
iOS-only navigation chrome and layout refactor with expanded UI test coverage; no auth, data, or networking changes.

Overview
Reworks the iOS workspace detail nav bar so back, title, and trailing controls share one .principal HStack instead of split leading/trailing toolbar placements.

The title/subtitle get lower layoutPriority than the back and trailing islands (chat toggle + terminal picker), so long titles truncate while controls stay visible and avoid the system overflow menu. Detail width is fed in as the principal item’s idealWidth (toolbarContentWidth) so the bar can use the full inset region and pin islands to the edges.

Removes MobileLeadingToolbarTitleWidth and its unit tests, plus width props from WorkspaceTitleMenu and geometry tracking in AgentChatDemoScreen. Toolbar UI moves to WorkspaceDetailView+Toolbar.swift with per-island glass styling; the back button uses a badge-width compact control when unread count is non-zero.

UI tests add island edge-pinning and unread-badge coverage; the delayed-terminal preview can inject unread fixture workspaces via CMUX_UITEST_WORKSPACE_DETAIL_UNREAD_BACK_COUNT.

Reviewed by Cursor Bugbot for commit d28c310. Bugbot is set up for automated code reviews on this repo. Configure here.

…controls

The workspace title+subtitle lived in a .topBarLeading ToolbarItem and the
trailing chat-toggle/terminal-picker cluster in a separate .topBarTrailing
ToolbarItem. Across independent toolbar placement groups SwiftUI's
.layoutPriority cannot act, so a prior PR reserved trailing space with
hand-tuned magic numbers (MobileLeadingToolbarTitleWidth: 44/64/60/84/140) and
capped the title with .frame(maxWidth:), which also pinned the title to 140pt
even when the bar had room.

Put the back button, title/subtitle, a Spacer, and the trailing cluster in one
HStack inside a single .principal toolbar item, framed to the already-measured
bar width. The title/subtitle carry .layoutPriority(0) and the back/trailing
islands .layoutPriority(1), so the title truncates (tail) first and the trailing
controls never compress or collapse into the system overflow menu. Each island
keeps its own Liquid Glass backing (mobileGlassCircle / compact glass control /
glassEffect capsule) inside a GlassEffectContainer, preserving the three-island
look. Delete MobileLeadingToolbarTitleWidth and its tests; no per-control
constants remain.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment Jul 7, 2026 7:19pm
cmux-staging Building Building Preview, Comment Jul 7, 2026 7:19pm

@coderabbitai

coderabbitai Bot commented Jul 4, 2026 •

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR removes width-based toolbar title sizing, moves the iOS workspace toolbar into a separate island-based implementation, and updates UI tests to verify the toolbar stays pinned to the bar edges.

Changes

iOS workspace toolbar refactor

Layer / File(s) Summary
Simplify title menu sizing
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceTitleMenu.swift, Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/AgentChatDemoScreen.swift
Updates WorkspaceTitleMenu to use menuLabel, removes fitted width-capping logic, and drops demo-screen width measurement and the old toolbar constructor wiring.
Move toolbar state and accessors
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailView.swift
Renames the shared width state to toolbarContentWidth, exposes toolbar-accessed members, and removes the in-file iOS toolbar implementation.
Build the iOS toolbar islands
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailView+Toolbar.swift
Defines the iOS-only principal toolbar, its glass container, back/title/trailing islands, and the title selection for chat, browser, and default workspace modes.
Extend toolbar UI tests
ios/cmuxUITests/cmuxUITests.swift
Adds edge-pinning assertions for the toolbar islands, updates visibility tolerances, and applies the new checks to short and long workspace title scenarios.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant WorkspaceDetailView
  participant WorkspaceTitleMenu
  participant ChatSessionHeaderView
  participant WorkspaceToolbarTitleView
  WorkspaceDetailView->>WorkspaceTitleMenu: build title/menu island
  WorkspaceTitleMenu->>ChatSessionHeaderView: render chat session header when available
  WorkspaceTitleMenu->>WorkspaceToolbarTitleView: render workspace title fallback
Loading

Possibly related PRs

  • manaflow-ai/cmux#7092: Both PRs restructure the iOS workspace toolbar layout and adjust title sizing behavior in the same SwiftUI components.
  • manaflow-ai/cmux#7097: Both PRs modify WorkspaceTitleMenu.swift and its call sites in the same toolbar flow.
  • manaflow-ai/cmux#7213: Both PRs touch the leading toolbar title width behavior that this change removes or simplifies.
🚥 Pre-merge checks | ✅ 25
✅ Passed checks (25 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Swift Actor Isolation ✅ Passed The diff only refactors SwiftUI toolbar/view code and tests; it adds no new protocols, Sendable models, or background store access that would worsen actor isolation.
Cmux Swift Blocking Runtime ✅ Passed Touched Swift files only adjust toolbar layout/ideal width; no new semaphores, sleeps, sync waits, or locks appear in production code.
Cmux Browser Automation Off-Main ✅ Passed PASS: Diff only touches iOS toolbar UI/views; no changes to TerminalController or ControlCommandExecutionPolicy, and no browser.* wait-routing code was added.
Cmux Expensive Synchronous Load ✅ Passed The touched production Swift files only refactor toolbar layout/state; they add no load()/JSON/transcript parsing on main or interactive paths.
Cmux Cache Substitution Correctness ✅ Passed toolbarContentWidth is a transient iOS layout hint updated by onGeometryChange; no persistence/history/undo/snapshot consumer trusts it.
Cmux No Hacky Sleeps ✅ Passed PASS: The diff only touches Swift source/tests and a TSV budget file; no TS/JS/shell/runtime-script sleeps, delays, or polling were introduced.
Cmux Algorithmic Complexity ✅ Passed PASS: The diff is layout-only, and the only collection pass in touched code is a fixed 22-item accessory list; the new toolbar uses dictionary lookups, not rescans.
Cmux Swift Concurrency ✅ Passed Diff is layout-only: toolbar state/geometry changes and frame adjustments, with no new DispatchQueue, completion handlers, Combine app-state, or lifecycle Tasks.
Cmux Swift @Concurrent ✅ Passed Touched files only adjust SwiftUI toolbar layout/UI tests; no new @concurrent/nonisolated async annotations or off-main async work were introduced.
Cmux Swift File And Package Boundaries ✅ Passed The PR only adds small SwiftUI toolbar glue (111 lines) and shrinks the existing 664-line view; it doesn’t mix new non-UI responsibilities or need a package boundary.
Cmux Swiftpm Lockfiles ✅ Passed The PR only changes source and test files; no Package.swift, .gitignore, project, or Package.resolved files were modified, so the SwiftPM lockfile rule is not violated.
Cmux Swift Logging ✅ Passed The diff only changes toolbar layout/state; no added or modified print/debugPrint/dump/NSLog/Logger calls appear in the touched hunks.
Cmux User-Facing Error Privacy ✅ Passed Touched files only adjust toolbar/layout and benign labels; no user-facing error, alert, recovery, or vendor-detail text was added or changed.
Cmux Full Internationalization ✅ Passed Production changes are layout-only; the only new visible copy is in a DEBUG-only demo screen and uses existing localized keys in Localizable.xcstrings.
Cmux Swiftui State Layout ✅ Passed Diff adds a simple @State width relay via onGeometryChange and toolbar layout; no ObservableObject/@published, lazy-list store refs, or render-time state writes.
Cmux Architecture Rethink ✅ Passed PASS: The toolbar was consolidated into one principal SwiftUI owner with a single width snapshot; no new timing hacks, locks, or duplicate lifecycle wiring appear in production.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PASS: Diff only refactors iOS workspace toolbar/view code; no NSWindow/NSPanel/NSWindowController/Window/WindowGroup or cmux auxiliary-window identifiers were added or changed.
Cmux Source Artifacts ✅ Passed Changed paths are source files plus a checked-in budget config; no logs, temp dirs, build outputs, or other artifact paths were added.
Cmux No Test Or Debug Seam In Production Source ✅ Passed Diff only moves the iOS toolbar into production code; no new #if DEBUG/test-only accessor or debug-named seam was added, and widened members are used by production callers.
Cmux No Ambient Global State ✅ Passed All new behavior is scoped to WorkspaceDetailView/its extension; no top-level funcs, mutable globals, or singletons were added.
Title check ✅ Passed It clearly summarizes the core iOS toolbar layout-priority change.
Description check ✅ Passed It covers what changed, why, and verification, though some template sections like Demo Video, Review Trigger, and Checklist are missing.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat-toolbar-title-layout-priority

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Jul 4, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

Replaces the magic-number MobileLeadingToolbarTitleWidth title-cap system with a single .principal toolbar HStack that uses .layoutPriority to make the title yield gracefully before trailing controls compress or overflow. The toolbar code is extracted to WorkspaceDetailView+Toolbar.swift and the iOS 26 three-island Liquid Glass appearance is preserved via GlassEffectContainer and per-island glass modifiers.

  • Layout fix: back island and trailing island carry layoutPriority(1); the title/subtitle gets layoutPriority(0), so long titles truncate with tail ellipsis and chat/terminal controls are never pushed into the system overflow menu.
  • Back-button badge: the back island now switches between .mobileGlassCircle() (no unread) and .mobileGlassCompactToolbarControl() (with unread badge), letting the badge breathe without forcing the circular style.
  • Test coverage: new assertToolbarIslandsPinnedToBarEdges helper and two new UI test cases complement the existing overflow-button regression tests.

Confidence Score: 5/5

Safe to merge — changes are confined to iOS workspace chrome with no auth, data, networking, or persistence touch points.

The refactoring cleanly replaces hand-tuned width constants with principled SwiftUI layout priorities. The glass styling is correctly gated on iOS 26+ availability, the measured-width feedback loop is stable, and the new behavior is covered by both existing overflow-menu regression tests and new island-pinning UI tests.

No files require special attention. The toolbar extension and WorkspaceDetailView cross-file state access is minimal and clearly documented.

Important Files Changed

Filename Overview
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailView+Toolbar.swift New file encapsulating the principal toolbar HStack; uses layoutPriority(0/1) to let the title yield before trailing controls compress, with GlassEffectContainer for iOS 26+ Liquid Glass.
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailView.swift Removed split topBarLeading/topBarTrailing placement; added private(set) toolbarContentWidth; widened activeBrowser and workspaceBackToolbarButton to internal for cross-file toolbar access.
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceTitleMenu.swift Dropped all width-cap parameters; now applies mobileGlassCompactToolbarControl() on the view itself, letting the parent HStack's layoutPriority(0) own compression.
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailDelayedTerminalPreviewView.swift Adds CMUX_UITEST_WORKSPACE_DETAIL_UNREAD_BACK_COUNT env var injection (DEBUG-only) for unread-badge fixture; consistent with existing CMUX_UITEST_* pattern.
ios/cmuxUITests/cmuxUITests.swift Adds assertToolbarIslandsPinnedToBarEdges helper and two new UI tests; tolerance raised from 2 to 3 pts for compact height checks.
.github/swift-file-length-budget.tsv WorkspaceDetailView.swift budget reduced from 700 to 652 lines, consistent with toolbar code extracted to WorkspaceDetailView+Toolbar.swift.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[WorkspaceDetailView.body] --> B[.onGeometryChange measures content width]
    A --> C[.toolbar workspaceDetailToolbar]
    C --> D[ToolbarItem .principal]
    D --> E{iOS 26+?}
    E -- Yes --> F[GlassEffectContainer]
    E -- No --> G[workspaceToolbarLayout HStack]
    F --> G
    G --> H[back island layoutPriority 1]
    G --> I[title menu layoutPriority 0]
    G --> J[Spacer]
    G --> K[trailing island layoutPriority 1]
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[WorkspaceDetailView.body] --> B[.onGeometryChange measures content width]
    A --> C[.toolbar workspaceDetailToolbar]
    C --> D[ToolbarItem .principal]
    D --> E{iOS 26+?}
    E -- Yes --> F[GlassEffectContainer]
    E -- No --> G[workspaceToolbarLayout HStack]
    F --> G
    G --> H[back island layoutPriority 1]
    G --> I[title menu layoutPriority 0]
    G --> J[Spacer]
    G --> K[trailing island layoutPriority 1]
Loading

Reviews (9): Last reviewed commit: "iOS: type erase conditional back toolbar..." | Re-trigger Greptile

contentWidth > 0 ? contentWidth : nil
}

private var workspaceToolbarIslandSpacing: CGFloat { 10 }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 workspaceToolbarIslandSpacing is a computed property but always returns the same value. A static let constant removes the per-access re-computation and makes the intent clearer.

Suggested change
private var workspaceToolbarIslandSpacing: CGFloat { 10 }
private static let workspaceToolbarIslandSpacing: CGFloat = 10

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

azooz2003-bit and others added 4 commits July 3, 2026 20:39
…idth

Framing the single toolbar container to the measured full-screen contentWidth
overflowed the nav bar's centered .principal region, clipping the back-button
circle at the left edge and pushing the trailing capsule flush to the right.
Frame to maxWidth: .infinity so the bar fills the width the navigation bar
grants the principal item (already inset by its leading/trailing layout
margins); the three islands keep their native edge insets and the title still
truncates in the leftover space via its lower layout priority. Drops the last
geometry measurement (contentWidth) entirely.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move the top-bar toolbar (workspaceDetailToolbar and its glass islands) out of
WorkspaceDetailView.swift into WorkspaceDetailView+Toolbar.swift, matching the
existing +AgentChat / +DerivedState / +MenuState split. Brings the host file
back under its Swift file-length budget (641 lines) and keeps the god view
shrinking. activeBrowser and workspaceBackToolbarButton become non-private so
the extension can read them; behavior is unchanged (verified: identical render
at the tightest long-title + chat-toggle state).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
main (5a7c147) added 3 @State vars to WorkspaceDetailView; CI validates the
PR merge commit, so the merged file is 644 lines. Set the budget to match.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
azooz2003-bit and others added 3 commits July 5, 2026 17:53
…yout-priority

# Conflicts:
#	.github/swift-file-length-budget.tsv
New testWorkspaceDetailToolbarPinsIslandsToBarEdgesWithShortTitle plus a
shared assertToolbarIslandsPinnedToBarEdges helper, also wired into both
long-title toolbar tests: the back island's leading inset and the trailing
island's trailing inset must each stay under 40pt from the nav bar edges
(broken short-title state floats at ~80pt). Raises the compact-height
tolerance to 3 for the delta=3.0 (title 39pt vs controls 36pt) that the
current toolbar design already exhibits before this branch's fix.

Test-only commit: the short-title pinning test fails against the unfixed
toolbar; the fix lands in the next commit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The navigation bar measures a principal item at its ideal width, caps the
result to the granted inset region, and centers it. With a short title the
island HStack's ideal width was small, so the whole three-island cluster
hugged and floated ~80pt off the bar edges; a long title only looked right
because its huge ideal width hit the cap. Measure the detail content width
with onGeometryChange and report it as the toolbar layout's idealWidth while
keeping maxWidth .infinity, so the bar always grants the full inset region
and the compressible frame fills it exactly: back island pins at the leading
inset and the trailing island at the trailing inset in every title state.

A hard frame(width:) cannot work here: a fixed frame is incompressible, so
UIKit centers the oversized view and the islands spill past the bar margins
(the pre-be334ca8e7 state).

Budget TSV regenerated by scripts/swift_file_length_budget.py for the
WorkspaceDetailView.swift growth.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailView.swift`:
- Around line 38-41: `toolbarContentWidth` in `WorkspaceDetailView` is being
mutated only within the same view, while `WorkspaceDetailView+Toolbar.swift`
only needs read access via `workspaceToolbarIdealWidth`; change the `@State`
declaration to use `private(set)` so external files in the module can read it
but cannot mutate it. Keep the geometry update path in `WorkspaceDetailView` as
the sole writer and leave the toolbar extension as a read-only consumer.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: d6bc0d45-707c-4bef-b25f-f64f4b234c7a

📥 Commits

Reviewing files that changed from the base of the PR and between 0d10bb0 and 06ec801.

⛔ Files ignored due to path filters (1)
  • .github/swift-file-length-budget.tsv is excluded by !**/*.tsv
📒 Files selected for processing (3)
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailView+Toolbar.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailView.swift
  • ios/cmuxUITests/cmuxUITests.swift

@azooz2003-bit

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

To use Codex here, create a Codex account and connect to github.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit eeae7f4. Configure here.

@lawrencecchen lawrencecchen added the stale-revisit Closed after 30+ days without activity; preserved for possible revisit or reopening. label Sep 23, 2026
@github-project-automation github-project-automation Bot moved this from Todo to Done in cmux backlog Sep 23, 2026

This branch was successfully deployed

1 active deployment
Preview – cmux — d28c3106 Deployed Jul 7, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stale-revisit Closed after 30+ days without activity; preserved for possible revisit or reopening.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants