Skip to content

Mobile: no keyboard way to queue a message while a thread is working #8

Description

@radroid

What to build

On mobile, when a thread is busy/working, there is no keyboard affordance to queue a follow-up message. The queue capability exists — the primary send button relabels to "Queue" while the thread is busy, and a queueCount indicator shows how many messages are pending — but the only way to trigger it is by tapping the button.

Pressing Enter on the on-screen (soft) keyboard just inserts a newline. The native composer's onSubmit currently only fires on hardware Command-Return, so users on a phone with no hardware keyboard have no key-driven path to send/queue a message at all.

We should give the soft keyboard a way to queue/send — e.g. treat the keyboard's return/submit action as "queue when busy, send otherwise" (matching the button's existing behavior), while still allowing multi-line input (e.g. Shift/Enter or a dedicated newline affordance).

Relevant code:

  • apps/mobile/src/features/threads/ThreadComposer.tsxsendLabel toggles between "Send"/"Queue" based on activeThreadBusy / queueCount; handleSend / onSendMessage.
  • apps/mobile/src/native/T3ComposerEditor.types.tsonSubmit documented as fired only on hardware Command-Return.

Steps to reproduce

  1. On the mobile app, open a thread and start the agent working.
  2. Type a follow-up message in the composer.
  3. Press Enter on the on-screen keyboard.

Actual: A newline is inserted. The message can only be queued by tapping the "Queue" button.
Expected: There is a keyboard-driven way to queue the message (as on desktop), without losing the ability to enter newlines.

Acceptance criteria

  • From the on-screen keyboard, a user can queue a message while a thread is busy (and send when idle) without tapping the button.
  • Multi-line input is still possible (a clear way to insert a newline remains).
  • Behavior is consistent on both iOS and Android.
  • Existing hardware Command-Return submit continues to work.
  • The queueCount indicator updates correctly for keyboard-queued messages.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions