Skip to content

What to type next, as the composer's placeholder and chips, Tab to fill - #325

Merged
mattshax merged 1 commit into
mainfrom
next-up
Sep 7, 2026
Merged

What to type next, as the composer's placeholder and chips, Tab to fill#325
mattshax merged 1 commit into
mainfrom
next-up

Conversation

@mattshax

@mattshax mattshax commented Sep 7, 2026

Copy link
Copy Markdown
Member

When a turn ends, GET /api/chat/suggestions?conversation=<id> reads the tool calls stored with the last assistant turn (suggestNext) and offers up to three specific follow-ups: follow the run that was launched or show its output, launch a dry run for real, summarize a completed run, explain a failed one, open the file a search cited, run the workflow that was inspected, check on delegated agents, retry a failed tool step; a long plain answer gets "sources" and "save as a note". No extra model call. A reply ending in a question or NEEDS DECISION: offers nothing, and so does a conversation where the user spoke last.

NextUp attaches to the package's composer textarea from outside (as the slash palette does): the first suggestion becomes the placeholder with "(Tab)" while the box is empty, Tab fills it through the native setter and an input event, the rest are chips above the composer, and typing hides everything. The palette's capture-phase Tab wins when it is open. Four tests on the rules; 151 server and 9 web pass.

…s, Tab to fill

When a turn ends the server reads the tool calls it just stored and
offers up to three specific follow-ups: follow the run that was
launched, show its output, launch the dry run for real, summarize a run
that completed, explain one that failed, open the file a search cited,
run the workflow that was inspected, check on delegated agents. No
extra model call; the suggestion is grounded in what happened. A reply
that asked the user something offers nothing, since the next thing to
type is the answer.

The first suggestion becomes the composer's placeholder while the box
is empty and Tab fills it in, as a terminal completes a command; the
others sit as chips above the composer. Typing hides them. The
composer belongs to the chat package, so this attaches to its textarea
from outside, as the slash palette does. Four tests on the rules.
@mattshax
mattshax merged commit 57116d3 into main Sep 7, 2026
1 check passed
@mattshax
mattshax deleted the next-up branch September 7, 2026 13:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant