Skip to content

feat(ios): add full thread row menu - #5753

Draft
saphid wants to merge 3 commits into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:t3code/add-mobile-thread-menus
Draft

feat(ios): add full thread row menu#5753
saphid wants to merge 3 commits into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:t3code/add-mobile-thread-menus

Conversation

@saphid

@saphid saphid commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

What changed

The SwiftUI thread row now exposes the complete applicable thread workflow from one context menu: new thread on the same branch/worktree, pin/unpin, settle/reopen, snooze/wake, rename, regenerate title, archive/restore, copy path, copy branch, copy thread ID, and delete.

The menu is derived from environment capabilities and current thread state. Title regeneration reports a disabled Regenerating… item while the request is pending. New-thread seeding preserves the selected branch/worktree, including an explicitly seeded branch that is temporarily absent from branch discovery; ordinary deleted branches still fall back normally.

This is one SwiftUI-client outcome. It does not change the React Native client, web, desktop, server, or wire schemas. Mark unread remains intentionally excluded while the server read-status dependency in #5652 is open.

Why

The SwiftUI row menu previously exposed only a subset of the thread workflow. Users could not start related work on the same checkout, choose useful snooze times, reverse snooze/archive/settle states, regenerate titles, or copy thread metadata from the row.

UI evidence

Before

Before: limited SwiftUI thread menu

After

After: complete applicable SwiftUI thread menu

Snooze presets

Date-aware snooze presets

Explicit branch/worktree seeding

New thread composer seeded from the current checkout

Reverse and state-gated actions

Pinned Settled Snoozed Archived
Pinned menu exposes Unpin Settled menu exposes Reopen Snoozed menu exposes Wake Archived menu exposes Restore and only safe applicable actions

Title-regeneration progress

Regenerate title is disabled and labeled Regenerating while pending

Interaction video

24-second menu, snooze, and wake interaction video

Verification

  • Rebasing target: t3code/rebuild-mobile-app-swift at 0d0c77431c851ff31181fb5f1708f351e0c5e80c.
  • Focused Xcode tests: ThreadContextMenuTests and CoreContractTests/testCommandBuildersMatchOrchestrationContract — 14 passed, 0 failed, 0 skipped.
  • apps/swift-ios/Scripts/ci-test.sh — 231 tests in 28 suites passed.
  • node scripts/generate-swift-wire-fixtures.ts --check — exit 0.
  • git diff --check — exit 0.
  • Integrated SwiftUI pass on an iPhone 17 Pro simulator running iOS 26.5 against disposable local T3 state.
  • Exercised new-thread checkout seeding, rename and restore, regeneration progress, all copy actions, pin/unpin, settle/reopen, snooze/wake, and archive/restore. Delete was presented in destructive styling but deliberately not invoked; the disposable database remained not deleted.
  • Capability and unavailable-state gating is covered by focused tests, including unsupported environments and queued/approval/input states where snooze must be disabled.
  • A fresh exact-head MacroScope review found that a disconnected project could still advertise branch seeding; the action is now hidden unless its source project is available, with a regression test.

Scope and review note

The effective non-test diff is size:XL. It is deliberately limited to the accepted SwiftUI thread-row-menu outcome, but an XL feature still needs maintainer alignment before merge.

Checklist

  • This PR is small and focused (single-purpose, but not small: size:XL)
  • I explained exactly what changed and why
  • I included before/after screenshots for the visible UI change
  • I included state-specific screenshots and a short interaction video
  • I ran focused tests, native CI, and an integrated SwiftUI simulator pass

Implemented and reviewed with GPT-5.6 Sol high in the Codex harness through T3 Code.

@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: a90c87a3-196d-478d-bb14-501537a553bb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Aug 8, 2026
Comment thread apps/swift-ios/Features/Workspace/NewTaskWorkspaceModels.swift Outdated
@t3dotgg
t3dotgg force-pushed the t3code/rebuild-mobile-app-swift branch from 65e66ee to 4df1e9b Compare August 9, 2026 02:26
@saphid
saphid force-pushed the t3code/add-mobile-thread-menus branch from f6d7154 to cc44c81 Compare August 9, 2026 03:26
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. and removed vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Aug 9, 2026
@saphid

saphid commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

Rebased this draft onto the signed SwiftUI base rewrite at 4df1e9b. The only conflict was in NewThreadView; the repair keeps the new activePicker flow and preserves workspaceSelectionIsSeeded = false when a branch is chosen. GitHub now reports the intended 13-file diff (865 additions, 72 deletions), not the rewritten base history. Verification: 12 focused Xcode tests passed, 0 failed; git diff --check passed. New tip: cc44c81.

@saphid
saphid force-pushed the t3code/add-mobile-thread-menus branch from cc44c81 to ca4bcd1 Compare August 9, 2026 13:47
Comment thread apps/swift-ios/Features/Workspace/WorkspaceView.swift
@saphid

saphid commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

Closeout receipt for exact head 341a59c60a60a5a6353c41d3be5964e182dd3e9d on target 0d0c77431c851ff31181fb5f1708f351e0c5e80c:

  • Fresh GPT-5.6 Sol high minimum-scope review completed across the 13-file SwiftUI-only diff. No remaining actionable finding after the fix below.
  • Fresh MacroScope exact-head review: No issues identified (7 code objects reviewed). Its earlier valid disconnected-project branch-seeding finding was fixed by hiding the action unless its source project is available and adding a regression test.
  • Focused Xcode tests: 14 passed, 0 failed, 0 skipped.
  • apps/swift-ios/Scripts/ci-test.sh: 231 tests in 28 suites passed.
  • Exact-head GitHub lanes passed: Check, Test, Mobile Native Static Analysis, Contract fixtures and native tests, and Release Smoke.
  • CodeRabbit did not review: its status explicitly says automatic review was skipped.
  • The only red status is Vercel marketing preview authorization for the contributor fork; GitHub reports no required checks for this branch.
  • GitHub reports the PR mergeable against the current stacking target. No unresolved review threads remain.
  • The PR body now contains commit-backed, publicly fetched before/after and state evidence plus a 24-second playable video/mp4. The real disabled Regenerating… transient was captured; no requested transient is being claimed without evidence.

I am retaining draft status. The change is single-purpose but labeled size:XL; under the contribution policy, that needs maintainer scope alignment before presenting it as ready. No maintainer was contacted as part of this closeout.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL 500-999 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant