fix(vscode-ide-companion): 修复新建会话按钮,在同一 view column 创建新 tab

问题:
- 之前的实现会复用现有 panel 并清空当前会话
- 期望行为是在同一 view column(不创建分屏)中创建新的 VS Code tab

解决方案:
1. 修改 qwenCode.openNewChatTab 命令
   - 总是创建新的 WebviewProvider 和 WebviewPanel
   - PanelManager 的 findExistingQwenCodeViewColumn() 确保在同一 column 打开
2. 修改 MessageHandler 中的 openNewChatTab 处理
   - 调用 VS Code 命令创建新 panel/tab
3. 移除不再需要的 createNewSession 方法

效果:
- 点击新建会话按钮会在同一 view column 中创建新的 VS Code tab
- 类似 Claude Code 的交互方式
- 不会创建新的分屏

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
yiliang114
2025-11-20 23:14:40 +08:00
parent 95b67bbebd
commit 5a9f5e3432
9 changed files with 73 additions and 47 deletions

View File

@@ -189,17 +189,10 @@ export async function activate(context: vscode.ExtensionContext) {
}
}),
vscode.commands.registerCommand('qwenCode.openNewChatTab', () => {
// Check if there's already an open chat panel
if (webViewProviders.length > 0) {
const lastProvider = webViewProviders[webViewProviders.length - 1];
// Reveal the existing panel and create a new session within it
lastProvider.show();
lastProvider.createNewSession();
} else {
// Create first chat tab
const provider = createWebViewProvider();
provider.show();
}
// Always create a new WebviewPanel (tab) in the same view column
// The PanelManager will find existing Qwen Code tabs and open in the same column
const provider = createWebViewProvider();
provider.show();
}),
vscode.commands.registerCommand('qwenCode.clearAuthCache', async () => {
await authStateManager.clearAuthState();