Problem
People need to write short questions and long prompts in the same field without losing sight of the conversation.
Solution
Let the message field grow as people type, up to a limit that keeps the conversation visible. After that, scroll within the field.
Make the send shortcut clear. If Enter sends, use Shift+Enter for a new line and consider a preference for people who write longer prompts. Keep keyboard focus in the field after sending.
Save unfinished drafts when people switch conversations. Let them drop files onto a generous target area. For a large paste, offer to treat the text as an attachment so it remains manageable.
Keep frequently used controls near the field and move less common options into a menu.
Use when
People exchange text messages with an assistant and need to see earlier messages.
Don’t use when
The input is a single-shot query with no follow-up, or the interaction is an inline rewrite on a selection. Both want a field shaped like a search box or a small popover, and neither benefits from an attachment rail and a model switcher.
Trade-offs
A larger field makes writing easier but leaves less room for answers. Enter-to-send is quick for short messages and can send a draft by accident. Extra controls reduce writing space and add choices before people ask a question.
Checklist
- What’s the maximum height, and what does the conversation look like when the composer is at it?
- What does Enter do, is that discoverable, and can it be changed?
- What happens when someone pastes four thousand words?
- Does focus return to the input after send?
- Does a half-written draft survive navigating away and back?
- Is the whole conversation area a drop target, or only the box?
- How many controls are in the row, and what’s the rule for adding another?
- Does the composer stay usable while a response streams?
- Is the send control reachable and labelled for a screen reader, including in its stop state?
- On a phone, how much of the screen is left for the answer once the keyboard is up?
Compare
ChatGPT keeps the composer live during generation so a follow-up can be drafted while the answer arrives, which treats the box as a workspace rather than a turnstile. Claude turns a large paste into an attachment instead of a wall of text, so the transcript keeps its shape when someone drops in a document. Perplexity biases the whole composer toward a single query with source and focus controls beside it, closer to a search field than a message box. Raycast removes the persistent composer entirely and makes invocation a keystroke into a command bar. That’s HAX guideline 7 taken to its conclusion, and it costs the running history a pinned composer gets for free.
Related
Attachment tray displays added files. Command menu opens actions and item pickers from the field. Stop generation can share the Send button’s position while an answer arrives.
Message turn displays the sent message. Model picker selects the model used to answer it.