#12056·qwen-code

feat(vscode): pin the latest plan/todo list above the conversation in the companion panel

Author: yiliang114Created Sep 17, 2026Updated Sep 18, 2026
Labelspriority/P3type/feature-requestcategory/uiscope/vscoderoadmap/ide-integrationwelcome-prstatus/ready-for-humanscope/web-shell

What would you like to be added?

In the VS Code companion, render the agent's latest plan / todo list in a pinned (sticky) panel that stays visible above the conversation while it scrolls, and refresh it in place as the plan updates.

Requested in #1895 (item 4): once the plan scrolls out of view, the user has to scroll back up to see which step the agent is on.

Why is this needed?

  • The plan is the user's main progress indicator during a long turn; burying it in the scrollback forces constant manual scrolling.
  • A persistent panel makes "which step are we on" answerable at a glance, which matters most for exactly the multi-step tasks that produce plans.

Implementation notes (community-friendly)

The data channel already exists — this is a webview UI change only, no protocol or agent work:

  • The agent already emits ACP session/update notifications with sessionUpdate: 'plan'.
  • The extension already receives them: packages/vscode-ide-companion/src/services/qwenSessionUpdateHandler.ts (the case 'plan' handler) currently renders the plan as a stream chunk via onStreamChunk(planText), which is why it scrolls away.
  • The change is to also (or instead) hand the latest plan to a sticky region in the webview that re-renders on each subsequent plan update, plus a collapse/expand affordance.

Acceptance: with a plan-emitting session running, the latest plan stays visible while the transcript scrolls, updates in place on each new plan notification, and survives collapsing the panel and switching sessions.

Refs #1895