* feat(vscode): add native context menu copy actions for webview chat
Add three right-click context menu items to the chat message area using
VSCode's native webview/context API:
- Copy Message: copies the right-clicked message's raw markdown content
- Copy All Messages: copies the full conversation in markdown format
- Copy Last Reply: copies the last assistant response
Implementation details:
- Commands registered in package.json with webview/context menu entries
- Clipboard writes go through extension host (vscode.env.clipboard) for
reliability in webview sandbox
- Message identification via data-msg-idx stamped after render
- Tool-call outputs supported including diff format (git diff style)
- i18n support via package.nls.json (English) and package.nls.zh-cn.json
- Menu only shown in message area (not input box or empty state)
Closes#3052
* fix(vscode): wrap tool-call content text in code blocks for copy
* fix(vscode): only wrap tool-call content in code blocks for Copy All, not single Copy Message
* fix(vscode): route copy commands to the right-clicked webview and use dynamic code fences
* fix(vscode): use childIndexMap for copy-message routing and extract shared message handling
Replace the wrapper-div approach (which broke CSS layout) with a
render-time childIndexMap that maps DOM child positions to allMessages
indices. This avoids both the useLayoutEffect index-drift bug and the
wrapper-div CSS side effects.
- Remove data-msg-idx wrapper divs; messages render directly as
container children, preserving original [&>*] CSS layout
- Build childIndexMap during MessageList render, skipping null items
(empty AssistantMessage, hidden tool calls via shouldShowToolCall)
- findMessageIndex walks up from click target to container's direct
child, then maps through childIndexMap
- Filter hidden tool calls and empty content in copyAllMessages
- Extract handleCommonWebviewMessage to deduplicate routing logic
across sidebar, editor panel, and restored panel handlers
- Clear lastContextMenuProvider on dispose to prevent memory leaks
* fix(vscode): handle image messages in copy and resolve intermittent copy failure
- Copy Message on image messages now outputs markdown format 
instead of empty string
- Copy All Messages includes image messages as  instead of
skipping them
- Copy Last Reply skips empty assistant placeholders during streaming
- Resolve intermittent copy failure by pre-resolving message index on
right-click instead of storing a DOM element reference that can become
stale after React re-renders