Skip to content

feat(swift-ios): let readers dismiss the keyboard over a long draft - #7501

Open
saphid wants to merge 3 commits into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:agent/issue125-swiftui-keyboard-dismiss
Open

feat(swift-ios): let readers dismiss the keyboard over a long draft#7501
saphid wants to merge 3 commits into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:agent/issue125-swiftui-keyboard-dismiss

Conversation

@saphid

@saphid saphid commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

A long draft and the keyboard can cover most of a SwiftUI thread. Thread detail now opts into a 44-point Hide keyboard footer button while its composer is focused. The button uses the existing dismiss handler and preserves the draft.

The refresh keeps the native parent's attachment, voice, draft, and gesture integration. The button is scoped to thread detail.

Verification — 5 September 2026

Head: ee9345cd8e9104e46dc5ede15462297e37dda6e5. Refreshed against t3code/rebuild-mobile-app-swift at b99405468a6b2be1e0f67d551ece824b1627e35c.

ThreadKeyboardDismissTests: 3 passed, 0 failed; the app and test target compiled. Current-build keyboard/draft visual evidence has not been refreshed.

This PR targets the native development branch. Merging it there does not deliver it to main.

Earlier visual evidence

These retained captures show earlier revisions. They have not been recaptured or revalidated against the head above.

Light appearance after dismissal

Dark appearance after dismissal

interaction-light-keyboard-dismiss.mp4

Tracking issue: https://github.com/saphid/t3code-personal/issues/125.

Repair and review: GPT-6 in Codex, with GPT-5.6 Sol workers. A direct Claude Opus 5 review launch was attempted with high effort but exited 1 because OAuth had expired; no Claude review occurred.

@coderabbitai

coderabbitai Bot commented Aug 19, 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: 4791b1b8-53ec-4829-9b03-28c2fba4221d

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

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:L 100-499 changed lines (additions + deletions). labels Aug 19, 2026
@macroscopeapp

macroscopeapp Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a localized Hide keyboard control to the production thread-detail composer and enables it by default for that flow. Although the implementation is small and preserves existing drafts and other composer call sites, it changes the product’s default user experience.

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

@saphid
saphid force-pushed the agent/issue125-swiftui-keyboard-dismiss branch from 1e3b9bb to a8b87f3 Compare August 19, 2026 21:16
A grown composer plus the keyboard covered the whole transcript with no
way back to reading it. Two iOS-conventional exits, both draft-preserving:

- The transcript now uses `keyboardDismissMode = .interactive` and tracks
  the drag itself. The transcript is laid out above the keyboard, so
  `.interactive` alone never engages; a downward drag past 16pt — reaching
  back through a bottom-anchored thread — dismisses immediately wherever it
  starts. Upward nudges toward the latest turn keep the draft editable,
  replacing the previous dismiss-on-any-drag behaviour.
- The composer footer gains a `keyboard.chevron.compact.down` control while
  focused. It only drops focus, so the draft and its caret survive, and it
  is opt-in per call site — the thread page passes a handler, other
  composers do not.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@saphid
saphid force-pushed the agent/issue125-swiftui-keyboard-dismiss branch from a8b87f3 to 4b90652 Compare August 28, 2026 12:50
@github-actions github-actions Bot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 28, 2026
saphid and others added 2 commits August 29, 2026 23:42
…r-7501-b994

# Conflicts:
#	apps/swift-ios/Features/Chat/FeatureComposerView.swift
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 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