Skip to content

feat(swift-ios): add pull-down command drawer - #7345

Open
saphid wants to merge 12 commits into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue86-command-palette-drawer
Open

feat(swift-ios): add pull-down command drawer#7345
saphid wants to merge 12 commits into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue86-command-palette-drawer

Conversation

@saphid

@saphid saphid commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds the complete native SwiftUI command drawer: visible Home/thread entry, searchable action/thread/project catalog, selection, and dismissal.
  • Adds the pull/open/close gesture lifecycle while leaving ordinary list and transcript scrolling alone.
  • Restores the exact prior responder after an abandoned pull or gesture close, so keyboard input resumes without another tap.

SwiftUI-only. This is the consolidated implementation for #86, #122, #135, and #154 and supersedes the former stacked draft #8350.

Proof

Exact target b67837984e5650888b1eed0e1cd7fff83625f696 → head c1eef5a073bf25dfb277882444f187c1f64647b9.

The dark-mode sequence shows prior, an abandoned pull followed by restored, then a complete pull/open/gesture-close followed by returned. Both suffixes were typed without tapping Home search; the caret and software keyboard remain with the same field.

Annotated focus and gesture lifecycle

Annotated MP4 · Clean MP4 · Contact sheet

Full command catalog in dark mode

Exact-target and light-mode context

Exact-target pull — the same top-edge pull leaves Home unchanged because the live target has no drawer.

Light-mode Home with visible command entry

Light-mode catalog opened from the command button

Test

  • FeatureCommandDrawerTests + FeatureCommandDrawerPresentationTests: 61 passed, 0 failed on iPhone 16 Pro / iOS 26.5.
  • Timeline-derived current-head and exact-target media packets: passed.
  • Current-head semantic snapshots are bound to the protected command-drawer lane.

Generated by GPT-5.6 Sol in the Codex harness.

@coderabbitai

coderabbitai Bot commented Aug 17, 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: a191db4a-3185-480d-9f30-6447d7074691

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

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


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

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 17, 2026
Comment thread apps/swift-ios/Features/Workspace/FeatureCommandDrawerView.swift Outdated
Comment thread apps/swift-ios/Features/Workspace/WorkspaceView.swift
@macroscopeapp

macroscopeapp Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This is a substantial new iOS capability that adds a searchable command drawer, global pan-gesture arbitration, keyboard/focus handoff, and routing from both Home and thread detail. Because it changes core workspace interaction and introduces cross-view UIKit/SwiftUI lifecycle behavior across several production files, it warrants human review.

You can add or adjust custom eligibility rules. Learn more.

@t3dotgg
t3dotgg force-pushed the t3code/rebuild-mobile-app-swift branch from 1f39d72 to fce7740 Compare August 18, 2026 21:35
@saphid
saphid force-pushed the feat/issue86-command-palette-drawer branch from 9a94ad2 to b815cd4 Compare August 18, 2026 22:23
@saphid

saphid commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

Adds the command drawer's gesture and fixes how it presents. The drawer now opens on a plain downward swipe that starts anywhere on the app's top bar — Home, an open thread, and the other pushed surfaces alike — instead of only on a deliberate long drag: the settle is an absolute commit distance measured from the rest position the drag started at, with the release's momentum projected a little ahead, so a short fast swipe commits on speed and a slow one on position, and the push that closes the drawer is as short as the swipe that opened it. Eligibility is unchanged, so Home's thread list and the thread transcript keep every ordinary scroll and the status bar above the safe-area inset stays the system's own notification-shade gesture. The drawer is also presented over the workspace rather than pushing it: the page underneath no longer translates at all, so the rows, header and composer stay exactly where they were while the drawer and its scrim move with the finger (measured on the simulator as a 0-pixel shift of the background, with a sharp minimum). Finally, the search field now reliably takes focus — the request is made when the pull starts, which is what puts the keyboard's height into the drawer's open height before the finger lifts, but at that moment the field is still above the window's top edge and the request can be dropped; it is now renewed once the drawer is open and still unfocused, so the keyboard arrives on every entry path including a quarter-second swipe. FeatureCommandDrawerTests covers the settle thresholds, the grab band against both top bars in the app, the drawer's offset against the open edge it advertises, and the focus-renewal contract: 38 tests, all passing on this head.

Coordination trace: T3 thread DD1ED949-643E-4C94-B93A-8A87DF73B471 · saphid/t3code-personal#122

Comment thread apps/swift-ios/Features/Workspace/FeatureCommandDrawerView.swift Outdated
@t3dotgg

t3dotgg commented Aug 21, 2026

Copy link
Copy Markdown
Member

Desperately needs screenshots and videos

@saphid

saphid commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

Added the visual proof to the PR description:

  • screenshots of the drawer open over Home and over an active thread, both with the keyboard visible
  • a 42.5s video covering the drawer gesture and presentation from both surfaces
  • a 51.7s video showing Home list scrolling remains independent of the drawer gesture

The assets are committed in 8f3b994a2.

@saphid

saphid commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

Added the visual proof to the PR description:

  • screenshots of the drawer open over Home and over an active thread, both with the keyboard visible
  • a 42.5s video covering the drawer gesture and presentation from both surfaces
  • a 51.7s video showing Home list scrolling remains independent of the drawer gesture

The assets are committed in 8f3b994a2.

nope those are old

@saphid

saphid commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

Replaced the obsolete command-palette media with fresh captures from the current SwiftUI PR build.

  • Light mode: pull open the new flat command drawer, filter to Settings, and route to Settings (16s)
  • Dark mode: pull open the new flat command drawer, filter to New task, and route to the composer (15s)
  • Added matching light/dark screenshots
  • Removed all four stale screenshots/videos from the previous upload

The PR description now embeds/links the replacements from commit 0e4ee4391. I reviewed sampled frames across both clips and verified the files served by GitHub match the local captures byte-for-byte and decode cleanly.

@saphid

saphid commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

Updated the visual proof again with a populated simulator environment: 3 projects (T3 Code, React, Linux) and 9 recent threads.

The replacement videos now open on the populated Home list and show the unfiltered drawer before searching:

  • light: browse the thread/project catalog, search react, select the React project, and land on filtered Home
  • dark: browse and scroll the catalog, search boot, select the Linux thread, and open that conversation

The two replacement screenshots also visibly include the recent thread rows and all three project actions. Assets are in 9f3a8706d; I reviewed the final encoded contact sheets and verified the GitHub-served files byte-for-byte.

@saphid

saphid commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

Re-recorded both videos with the iOS software keyboard explicitly visible for the complete drawer search interaction.

  • the drawer opens with the keyboard already raised
  • react and boot are entered through individual taps on the visible simulator keyboard, not hidden text injection
  • the populated thread/project results remain visible above the keyboard
  • the matching light/dark screenshots now include the keyboard too

Replacements are in b3a467304. I reviewed the final encoded frame sheets for keyboard presence and verified the GitHub-served MP4s byte-for-byte with clean full decodes.

@saphid

saphid commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

Desperately needs screenshots and videos

@t3dotgg how about that

Define the command drawer geometry, gesture arbitration, responder ownership, and bounded focus renewal as a focused foundation slice. Restore the exact prior responder after an abandoned pull and cover cancellation, teardown, and eligibility paths with focused tests.
@saphid
saphid force-pushed the feat/issue86-command-palette-drawer branch from b3a4673 to 0e0fb94 Compare August 27, 2026 02:30
@saphid saphid changed the title feat(swift-ios): add a command drawer over the workspace feat(swift-ios): add command drawer gesture foundation Aug 27, 2026
Comment thread apps/swift-ios/Features/Workspace/FeatureCommandDrawerView.swift
Comment thread apps/swift-ios/Features/Workspace/FeatureCommandDrawerView.swift Outdated
@saphid saphid changed the title feat(swift-ios): add command drawer gesture foundation feat(swift-ios): add pull-down command drawer Aug 30, 2026

@cursor cursor Bot left a comment

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.

Cursor Bugbot has reviewed your changes using high 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 55623cf. Configure here.

Comment thread apps/swift-ios/Features/Workspace/FeatureCommandDrawerPresentationView.swift Outdated
@saphid

saphid commented Aug 30, 2026

Copy link
Copy Markdown
Contributor Author

@t3dotgg Ready to go plz

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

Labels

size:XXL 1,000+ 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.

2 participants