Skip to content

Improve iOS New Task recovery and naming - #8554

Merged
azooz2003-bit merged 38 commits into
mainfrom
feat-ios-task-errors
Jul 23, 2026
Merged

azooz2003-bit merged 38 commits into
mainfrom
feat-ios-task-errors

Conversation

@azooz2003-bit

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

Copy link
Copy Markdown
Collaborator

Summary

  • keep action-specific task creation failures and their concrete reason inside the New Task sheet above retry
  • add an optional workspace name that persists through drafts and retries and falls back to generated titles when blank
  • keep the beta feature flag off by default and localize new UI in English and Japanese

Verification

  • swift test --package-path Packages/iOS/CmuxMobileShellModel (171 tests passed)
  • exact iOS UI test for the optional workspace name and submitted title (1 test passed at b9652492ad)
  • real tagged iOS-to-Mac creation reported custom_title: "Release checklist"; the test workspace was then closed
  • tagged macOS build ntnm from b9652492ad with isolated web port 4662
  • optimized iOS Simulator build ntnm on cmux-ntfail-cdx-0721-49
  • jq empty ios/cmux/Resources/Localizable.xcstrings

The package-convention script reports only pre-existing violations outside the touched files.


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


Summary by cubic

Improves the iOS New Task flow with an optional workspace name, clearer failure banners, smarter directory defaults, and deterministic recovery that blocks only equivalent requests and offers Start Again when refresh is still missing. Also polishes the UI: adds a compact route picker, stabilizes the agent menu layout, and blends directory shortcuts into the directory picker.

  • New Features

    • Optional workspace name in the context card; trims whitespace, overrides the generated title on the create spec, feeds request identity/equivalence, and persists across drafts/retries; legacy drafts still decode; submitted title is exposed for UI tests.
    • Failure banner shows contextual titles (“Couldn’t start this task”, “Task already accepted”, “Task status unconfirmed”), localized in English/Japanese with clarified Japanese wording and accessibility ids.
  • Bug Fixes

    • Recovery now tracks the effective request and reconciles after edits; submission is blocked and “Start Again” appears only for an equivalent request, with identity rotation for real changes and preservation for whitespace-only edits.
    • Suggested directory order: template default (if present) → active/focused terminal directory on the selected Mac → last successful task directory → home; preserved on template switches unless the new template defines a default; changing Macs re-applies the same policy.
    • Directory picker failure copy mentions macOS Files & Folders permission for protected folders; submission progress keeps the primary button size stable; macOS pagination tests now check query items by name.

Written for commit 3b43d63. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features
    • Added an optional workspace name to the iOS task composer, including preservation across draft restores.
    • Introduced a new failure banner component and improved composer input for workspace naming.
    • Refreshed the composer layout with dedicated workspace name, route picker, and improved directory guidance UI.
  • Bug Fixes
    • Improved completed-operation recovery behavior during edits and ensured recovery state is preserved appropriately.
    • Protected-folder directory errors now provide clearer recovery guidance.
  • Tests
    • Expanded UI and model coverage for workspace names, draft round-trips, recovery equivalence, directory suggestions, and failure titles/messages.

@cursor

cursor Bot commented Jul 21, 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.

@coderabbitai

coderabbitai Bot commented Jul 21, 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

The task composer now supports optional workspace names across drafts, snapshots, editing, submission, and recovery. It also adds structured failure banners, directory-permission guidance, directory precedence tests, and related UI regression coverage.

Changes

Task composer enhancements

Layer / File(s) Summary
Workspace name snapshot and draft persistence
Packages/iOS/CmuxMobileShellModel/Sources/CmuxMobileShellModel/*, Packages/iOS/CmuxMobileShellModel/Tests/CmuxMobileShellModelTests/*
Workspace names are stored, trimmed for effective titles, preserved through restores and operation rebinding, and covered by legacy-decoding and equivalence tests.
Workspace name editing and submission wiring
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/*
The composer adds a workspace-name field, propagates edits into submission snapshots, restores drafts, and uses the effective workspace title for creation.
Completed-operation recovery reconciliation
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerCompletedOperation*, .../TaskComposerSheet+*.swift
Recovery state tracks request equivalence and reconciles edits across submission, directory, template, and machine-selection changes.
Structured failure presentation
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerFailure*, TaskComposerPrimaryAction.swift, ios/cmux/Resources/Localizable.xcstrings
Failure titles are derived from failure categories and rendered separately from failure messages in a reusable banner.
Directory selection and permission recovery
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/*, ios/cmuxUITests/cmuxUITests.swift, Packages/iOS/CmuxMobileShellUI/Tests/CmuxMobileShellUITests/*
Directory fallback precedence is updated, protected-folder guidance is localized, and deterministic accessibility-preview scenarios test the behavior.
Supporting control and test updates
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerButton.swift, Packages/iOS/CmuxMobileShellUI/Tests/CmuxMobileShellUITests/TerminalSurfaceMountOwnershipTests.swift, Packages/macOS/CmuxGit/Tests/CmuxGitTests/PullRequestProbeServiceFetchTests.swift
The composer button uses a circular plus icon, terminal coordinator tests pass the folder-tap setting, and URL query assertions use a generic helper.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant TaskComposerWorkspaceNameField
  participant TaskComposerSheet
  participant MobileTaskSubmissionSnapshot
  participant WorkspaceCreation
  User->>TaskComposerWorkspaceNameField: enters optional workspace name
  TaskComposerWorkspaceNameField->>TaskComposerSheet: updates editable submission state
  TaskComposerSheet->>MobileTaskSubmissionSnapshot: captures workspaceName
  MobileTaskSubmissionSnapshot->>WorkspaceCreation: supplies workspaceTitle
Loading

Possibly related PRs

  • manaflow-ai/cmux#7670: Propagates submitted workspace title and operation identifiers into workspace creation parameters.
  • manaflow-ai/cmux#8611: Overlaps in task-composer context-section and machine-menu wiring changes.

Suggested reviewers: lawrencecchen

🚥 Pre-merge checks | ✅ 24 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 24.14% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (24 passed)
Check name Status Explanation
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 New workspace-name state is plain Sendable value data; the UI/store changes remain on SwiftUI/@mainactor paths, with no new shared mutable Sendable refs or background store access.
Cmux Swift Blocking Runtime ✅ Passed No new blocking waits, syncs, locks, or sleeps were introduced; the only Task.sleep in a touched source file predates this commit.
Cmux Browser Automation Off-Main ✅ Passed Diff only touches task-composer UI/localization/tests; no browser-automation routing or policy-test files changed, and patch has no browser/socket-worker edits.
Cmux Expensive Synchronous Load ✅ Passed Diff only changed failure-title wiring; touched task-composer code uses small UserDefaults-backed data and no RestorableAgentSessionIndex.load/transcript/JSONL path was added.
Cmux Cache Substitution Correctness ✅ Passed The new snapshot path uses MobileTaskSubmissionIdentity’s event-driven resolveCurrentRequest/markRequestDirty cache, which has cold-nil and stale/divergent handling in tests.
Cmux No Hacky Sleeps ✅ Passed HEAD only changes Swift, tests, and xcstrings; no TypeScript/JavaScript/shell/build-runtime files or fixed waits were introduced.
Cmux Algorithmic Complexity ✅ Passed No new nested scans or hot-path rescans were introduced; the workspace-directory scan is existing logic and the added uses are discrete selection/init paths.
Cmux Swift Concurrency ✅ Passed The diff adds no DispatchQueue/Combine/completion-handler legacy patterns; the new Task blocks are stored in submitTask, cancelled on dismiss, and nilled on completion.
Cmux Swift @Concurrent ✅ Passed New async paths are MainActor-bound (Task { @mainactor in ... }), and the heavy store methods they call are @MainActor; no new nonisolated async/invalid @concurrent change appears in the diff.
Cmux Swift Package Boundaries ✅ Passed All production Swift changes are under Packages/iOS SwiftPM targets; app-target edits are tests/resources, so no boundary violation is present.
Cmux Swiftpm Lockfiles ✅ Passed PR diff has no Package.swift, Package.resolved, .gitignore, workflow, or Xcode package-reference changes, so the SwiftPM lockfile rule isn’t triggered.
Cmux Swift Logging ✅ Passed No added print/debugPrint/dump/NSLog/Logger or ad hoc logging was found in the changed production Swift files.
Cmux User-Facing Error Privacy ✅ Passed PASS: The new/changed error copy is generic and action-oriented; it doesn’t expose vendor names, internal flags, raw upstream messages, or secrets.
Cmux Full Internationalization ✅ Passed All new user-facing Swift text routes through localized APIs, and every touched xcstrings key has en+ja entries; no new English-only copy was introduced.
Cmux Swiftui State Layout ✅ Passed Touched SwiftUI views use @State/@binding and snapshot/action closures; no new ObservableObject/@published, GeometryReader, lazy-row store refs, or render-time state writes.
Cmux Architecture Rethink ✅ Passed The diff keeps task-composer state ownership centralized in TaskComposerSheet/MobileTaskSubmissionIdentity and adds no banned timing, locking, polling, or observer repair paths.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed The PR only touches task-composer sheets/views/tests and strings; no standalone Window/NSWindow/WindowGroup code or cmuxAuxiliaryWindowIdentifiers changes were introduced.
Cmux Source Artifacts ✅ Passed All changed paths are intentional source, test, or localization files; no logs, screenshots, build output, caches, DerivedData, or scratch dirs appear.
Cmux No Test Or Debug Seam In Production Source ✅ Passed Touched production Swift files contain only product-facing views/state; scans found no #if DEBUG, ForTesting, TestHook, or similar seam markers.
Cmux No Ambient Global State ✅ Passed No new file-scope API, global mutable state, static-only namespace, or singleton was added in the touched Swift files.
Title check ✅ Passed The title is concise and matches the main change: iOS New Task recovery and naming improvements.
Description check ✅ Passed The description covers summary and verification well, but it omits the template's Demo Video, Review Trigger, and Checklist sections.
✨ 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-ios-task-errors

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 21, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR improves the iOS New Task flow and its recovery behavior. The main changes are:

  • Adds an optional workspace name that persists through drafts and retries.
  • Uses normalized task inputs for request identity and duplicate protection.
  • Adds explicit recovery states for accepted tasks that remain missing after refresh.
  • Improves per-Mac directory suggestions and protected-folder guidance.
  • Updates the composer layout and English and Japanese strings.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the updated recovery, request identity, draft, or directory flows.
  • Workspace-name normalization matches the value sent in workspace creation requests.
  • The new package import is backed by the target's declared dependency.

Important Files Changed

Filename Overview
Packages/iOS/CmuxMobileShellModel/Sources/CmuxMobileShellModel/MobileTaskSubmissionSnapshot.swift Adds normalized workspace titles to request identity, draft persistence, and workspace creation.
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerCompletedOperationRecovery.swift Adds explicit recovery phase and request-equivalence state for accepted task operations.
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerSheet+CompletedOperationRecovery.swift Updates reconciliation, refresh, and Start Again behavior for completed operations.
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerSheet+DirectorySelection.swift Updates directory selection to use the revised per-Mac suggestion policy.
ios/cmux/Resources/Localizable.xcstrings Adds and updates localized composer and recovery text in English and Japanese.

Reviews (18): Last reviewed commit: "fix(ios): refine task composer leading s..." | Re-trigger Greptile

@cursor

cursor Bot commented Jul 21, 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 Jul 21, 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.

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
ios/cmux/Resources/Localizable.xcstrings (1)

12538-12544: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Preserve the authorization/rejection meaning in Japanese.

These translations omit or change the request actor: 認証されませんでした describes authentication failure, while the English says the Mac did not authorize/rejected the request. Use explicit subjects and requests, for example:

Proposed localization fix
- "value": "%@ で認証されませんでした。"
+ "value": "%@ はリクエストを許可しませんでした。"

- "value": "Mac で認証されませんでした。"
+ "value": "Mac はリクエストを許可しませんでした。"

- "value": "%@ に拒否されました。"
+ "value": "%@ がリクエストを拒否しました。"

- "value": "Mac に拒否されました。"
+ "value": "Mac がリクエストを拒否しました。"

Also applies to: 12555-12561, 12606-12612, 12623-12629

🤖 Prompt for 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.

In `@ios/cmux/Resources/Localizable.xcstrings` around lines 12538 - 12544, Update
the Japanese string values for the affected authorization entries, including the
entry containing "%@ didn't authorize the request." and the ranges at
12555-12561, 12606-12612, and 12623-12629, to explicitly state that the Mac
rejected or did not authorize the request. Preserve the request actor and
rejection meaning; do not use wording that only describes authentication
failure.

Source: Path instructions

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

Outside diff comments:
In `@ios/cmux/Resources/Localizable.xcstrings`:
- Around line 12538-12544: Update the Japanese string values for the affected
authorization entries, including the entry containing "%@ didn't authorize the
request." and the ranges at 12555-12561, 12606-12612, and 12623-12629, to
explicitly state that the Mac rejected or did not authorize the request.
Preserve the request actor and rejection meaning; do not use wording that only
describes authentication failure.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1f008858-0159-406f-bd13-4632d1d24cb1

📥 Commits

Reviewing files that changed from the base of the PR and between 5a7e73e and 943a001.

📒 Files selected for processing (1)
  • ios/cmux/Resources/Localizable.xcstrings

@cursor

cursor Bot commented Jul 22, 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 Jul 22, 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.

cmux reload-cloud added 7 commits July 21, 2026 19:33
# Conflicts:
#	Packages/macOS/CmuxGit/Tests/CmuxGitTests/PullRequestProbeServiceFetchTests.swift
#	ios/cmux/Resources/Localizable.xcstrings
…ios-task-errors-final

# Conflicts:
#	Packages/macOS/CmuxGit/Tests/CmuxGitTests/PullRequestProbeServiceFetchTests.swift
#	ios/cmux/Resources/Localizable.xcstrings
@cursor

cursor Bot commented Jul 22, 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

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 22, 2026 •

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@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: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
Packages/macOS/CmuxGit/Tests/CmuxGitTests/PullRequestProbeServiceFetchTests.swift (2)

43-45: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Replace scheduler-dependent waits with completion signals.

The fixed Task.yield() counts and attempts-only waitUntil can make assertions depend on task scheduling rather than mount completion. Await the coordinator/store lifecycle signal, or use a deadline-bounded poll of the real predicate.

As per path instructions, tests must use real completion signals or deadline-bounded predicate polling instead of arbitrary waits.

Also applies to: 89-91, 121-123, 144-153

🤖 Prompt for 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.

In
`@Packages/macOS/CmuxGit/Tests/CmuxGitTests/PullRequestProbeServiceFetchTests.swift`
around lines 43 - 45, Update PullRequestProbeServiceFetchTests to remove fixed
Task.yield() counts and attempts-only waitUntil usage in all affected cases.
Await the coordinator/store lifecycle completion signal, or poll the actual
mount/completion predicate with an explicit deadline, so assertions run only
after the relevant state is ready.

Source: Path instructions


54-60: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Inject deterministic test time.

now: Date = Date() makes cache-age behavior depend on wall-clock time and test execution timing. Remove the default and pass one fixed Date(timeIntervalSince1970:) value to each fetch.

As per path instructions, tests under Packages/**/Tests must avoid real wall-clock dependencies and use injected virtual or fixed time.

Suggested change
-        now: Date = Date(),
+        now: Date,
🤖 Prompt for 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.

In
`@Packages/macOS/CmuxGit/Tests/CmuxGitTests/PullRequestProbeServiceFetchTests.swift`
around lines 54 - 60, Update the test helper method fetch in
PullRequestProbeServiceFetchTests so now has no Date() default value, then pass
one fixed Date(timeIntervalSince1970:) value to every fetch invocation to make
cache-age assertions deterministic.

Source: Path instructions

🤖 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/TaskComposer/TaskComposerWorkspaceNameField.swift`:
- Line 47: Extract the shared focus-loss behavior from
TaskComposerWorkspaceNameField and TaskComposerPromptCard into a reusable
ViewModifier or equivalent helper, including both onSubmit(endEditing) and
isFocused change handling. Apply that shared modifier in both views and remove
their duplicated wiring while preserving the existing focus and editing
behavior.
- Line 1: Extract the duplicated submit-and-focus-loss behavior from
TaskComposerWorkspaceNameField and TaskComposerPromptCard into a shared View
extension, such as endsEditingOnSubmitOrBlur(isFocused:action:), preserving the
existing FocusState transition check and action invocation. Replace each field’s
local onSubmit and onChange wiring with the shared modifier, passing its
existing focus binding and endEditing action.

---

Outside diff comments:
In
`@Packages/macOS/CmuxGit/Tests/CmuxGitTests/PullRequestProbeServiceFetchTests.swift`:
- Around line 43-45: Update PullRequestProbeServiceFetchTests to remove fixed
Task.yield() counts and attempts-only waitUntil usage in all affected cases.
Await the coordinator/store lifecycle completion signal, or poll the actual
mount/completion predicate with an explicit deadline, so assertions run only
after the relevant state is ready.
- Around line 54-60: Update the test helper method fetch in
PullRequestProbeServiceFetchTests so now has no Date() default value, then pass
one fixed Date(timeIntervalSince1970:) value to every fetch invocation to make
cache-age assertions deterministic.
🪄 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: 6635c91a-0302-4b8c-800a-155b9cbb13a7

📥 Commits

Reviewing files that changed from the base of the PR and between 943a001 and c8e0b0b.

📒 Files selected for processing (18)
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/Debug/TaskComposer/TaskComposerAccessibilityPreviewView.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerButton.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerCompletedOperationRecovery.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerCompletedOperationRecoveryPhase.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerCompletedOperationRequestRelation.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerContextSection.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerFailureTitleStyle.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerPromptCard.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerRoutePicker.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerSheet+CompletedOperationRecovery.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerSheet+DirectorySelection.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerSheet+DraftState.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerSheet+Policies.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerSheet.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerWorkspaceNameField.swift
  • Packages/iOS/CmuxMobileShellUI/Tests/CmuxMobileShellUITests/TaskComposerFailureMessageTests.swift
  • Packages/iOS/CmuxMobileShellUI/Tests/CmuxMobileShellUITests/TerminalSurfaceMountOwnershipTests.swift
  • Packages/macOS/CmuxGit/Tests/CmuxGitTests/PullRequestProbeServiceFetchTests.swift
💤 Files with no reviewable changes (1)
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TaskComposer/TaskComposerSheet+Policies.swift

@azooz2003-bit

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 22, 2026 •

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@azooz2003-bit
azooz2003-bit merged commit d1df506 into main Jul 23, 2026
6 checks passed
@azooz2003-bit
azooz2003-bit deleted the feat-ios-task-errors branch July 23, 2026 18:21
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