Area
apps/mobile
Steps to reproduce
- Open a thread in the T3 Code iOS companion app (or start a task from mobile).
- Wait for the initial response from the agent so the transcript / message feed is populated.
- Tap the chat composer text input to bring up the iOS keyboard and type a follow-up message.
- While the keyboard is active and the text input remains focused, tap the Send button (arrow up).
- Tap outside the message input box (into the transcript feed), dismissing the keyboard and blurring the composer.
- Tap the Send button again.
- The message sends as expected.
(Note: On the initial task draft screen, typing a message and immediately tapping Send works on the first tap without this issue.)
Actual behavior
Tapping the Send button while the composer text input is focused does not dispatch the message. The tap is swallowed / consumed by the blur/dismiss gesture, collapsing the composer or dismissing the keyboard without triggering the send action. The user must tap outside the text box first to dismiss the keyboard, and only then does the Send button respond to taps.
Expected behavior
Tapping the Send button while typing should immediately dispatch the message on the first tap, without requiring the user to blur the input beforehand.
Workaround
Tap anywhere outside the composer input box into the transcript feed to dismiss the keyboard and blur the composer first, then tap the Send button.
Supporting investigation
Source inspection of apps/mobile:
- In
ThreadDetailScreen.tsx, the feed is wrapped with touch gesture handlers (BlurTargetView with onTouchStart / onTouchEnd triggering collapseComposer()), and LegendList is configured with keyboardDismissMode="none".
- In
ThreadComposer.tsx, when typing, the composer is in an expanded state (isExpanded = true) within KeyboardStickyView. When the Send button is tapped while the native text editor is the active first responder, the tap event triggers input blur and layout transitions (COMPOSER_LAYOUT_TRANSITION) before ComposerActionButton's onPress callback can fire.
- In contrast,
NewTaskDraftScreen.tsx (where the initial message works on first tap) does not render the active ThreadFeed / LegendList touch responder overlay behind the composer.
Environment
- Platform: iOS
- App: T3 Code Mobile Companion (React Native / Expo)
Area
apps/mobile
Steps to reproduce
(Note: On the initial task draft screen, typing a message and immediately tapping Send works on the first tap without this issue.)
Actual behavior
Tapping the Send button while the composer text input is focused does not dispatch the message. The tap is swallowed / consumed by the blur/dismiss gesture, collapsing the composer or dismissing the keyboard without triggering the send action. The user must tap outside the text box first to dismiss the keyboard, and only then does the Send button respond to taps.
Expected behavior
Tapping the Send button while typing should immediately dispatch the message on the first tap, without requiring the user to blur the input beforehand.
Workaround
Tap anywhere outside the composer input box into the transcript feed to dismiss the keyboard and blur the composer first, then tap the Send button.
Supporting investigation
Source inspection of
apps/mobile:ThreadDetailScreen.tsx, the feed is wrapped with touch gesture handlers (BlurTargetViewwithonTouchStart/onTouchEndtriggeringcollapseComposer()), andLegendListis configured withkeyboardDismissMode="none".ThreadComposer.tsx, when typing, the composer is in an expanded state (isExpanded = true) withinKeyboardStickyView. When the Send button is tapped while the native text editor is the active first responder, the tap event triggers input blur and layout transitions (COMPOSER_LAYOUT_TRANSITION) beforeComposerActionButton'sonPresscallback can fire.NewTaskDraftScreen.tsx(where the initial message works on first tap) does not render the activeThreadFeed/LegendListtouch responder overlay behind the composer.Environment