MoonshotAI / MoonshotAI/kimi-code

feat(web): steer queued messages into the running turn from the queue UI

Open
#2,270 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
TypeScript
Stars
7.5k
Forks
1.2k
Avg merge
11h 53m
Merged PRs (30d)
350

Description

What feature would you like to see?

Problem
In the web UI, messages sent while a turn is running are queued and only delivered after the turn ends. The TUI lets users inject input into the running turn with Ctrl+S (steer), and the web composer supports the same shortcut — but there is no visible, discoverable affordance for it, and no way to steer a single queued message without steering everything (composer draft + whole queue) at once.

Proposal
Add explicit “Steer now” actions to the queued-message list:

A per-message “Steer now” button on each queued row — injects only that message into the running turn, leaving the rest of the queue untouched.

A queue-header “Steer now” button — injects the whole queue (same merge semantics as Ctrl+S).

Behavior details:
Falls back to a normal send when no turn is running.
On a definitive server rejection the message is restored at its original queue position; on ambiguous failures it is not re-queued, to avoid duplicate sends.
Attachments on queued messages are carried along.

Notes
No backend changes needed — POST /sessions/{id}/prompts:steer already exists.

Additional information

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Locate the web queued-message list and composer code, then trace the existing POST /sessions/{id}/prompts:steer path and queue send handling. Implement per-message and queue-header actions while preserving attachments and the specified rejection behavior. Done means normal send is used when no turn runs, single-message steering leaves the rest queued, and whole-queue steering matches Ctrl+S semantics.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.