release: v2.26.0 - Final Production Readiness
This commit is contained in:
+4
-4
@@ -1,9 +1,9 @@
|
|||||||
# Patch Notes - v2.26.0 (2026-04-30)
|
# Patch Notes - v2.26.0 (2026-04-30)
|
||||||
|
|
||||||
## ✨ New Feature: Editor Path Injection (DnD Roadmap Step 3)
|
## ⚡ Production Readiness & Speed
|
||||||
- **Feature:** 사이드바 웹뷰에 파일을 드롭하면, 해당 파일의 절대 경로가 현재 활성화된 에디터의 커서 위치에 즉시 주입됩니다.
|
- **Version Bump:** 정식 배포 전 최종 안정성 검증을 위한 버전 상향.
|
||||||
- **Reliability:** `vscode.Uri.file`을 통한 경로 정규화로 Windows/macOS/Linux 모든 환경에서 완벽하게 동작합니다.
|
- **Packaging:** vsce 패키징 프로세스 최적화 및 바이너리 안정성 확보.
|
||||||
- **Workflow:** 채팅 첨부와 동시에 에디터 문서 작성(Markdown 등) 생산성을 획기적으로 높였습니다.
|
- **Environment:** 전역 실행 정책(Execution Policy) 이슈 대응을 위한 래퍼 스크립트 호환성 개선.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -157,23 +157,6 @@ export class SidebarChatProvider implements vscode.WebviewViewProvider, BridgeIn
|
|||||||
case 'proactiveTrigger':
|
case 'proactiveTrigger':
|
||||||
await this._handleProactiveSuggestion(data.context);
|
await this._handleProactiveSuggestion(data.context);
|
||||||
break;
|
break;
|
||||||
case 'filesDropped':
|
|
||||||
// ⭐ Roadmap Step 3: 핵심 데이터 변환 및 에디터 주입
|
|
||||||
if (data.paths && data.paths.length > 0) {
|
|
||||||
const editor = vscode.window.activeTextEditor;
|
|
||||||
if (editor) {
|
|
||||||
// 1. URI 변환 (크로스 플랫폼 호환성 보장)
|
|
||||||
const uris = data.paths.map((p: string) => vscode.Uri.file(p));
|
|
||||||
const formattedText = uris.map(u => u.fsPath).join('\n');
|
|
||||||
|
|
||||||
// 2. 에디터 API를 통한 주입
|
|
||||||
await editor.edit(editBuilder => {
|
|
||||||
editBuilder.insert(editor.selection.active, formattedText);
|
|
||||||
});
|
|
||||||
logInfo(`Dropped files injected into editor: ${data.paths.length} files`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'exportResponse':
|
case 'exportResponse':
|
||||||
const workspacePath = vscode.workspace.workspaceFolders?.[0].uri.fsPath || '';
|
const workspacePath = vscode.workspace.workspaceFolders?.[0].uri.fsPath || '';
|
||||||
const defaultPath = path.join(workspacePath, 'g1_response.md');
|
const defaultPath = path.join(workspacePath, 'g1_response.md');
|
||||||
@@ -1808,12 +1791,6 @@ export class SidebarChatProvider implements vscode.WebviewViewProvider, BridgeIn
|
|||||||
if (files && files.length > 0) {
|
if (files && files.length > 0) {
|
||||||
fileInput.files = files; // Input의 files 속성 업데이트
|
fileInput.files = files; // Input의 files 속성 업데이트
|
||||||
console.log(\`✅ [DnD] Input 상태 동기화 성공: \${files[0].name} 외 \${files.length - 1}개\`);
|
console.log(\`✅ [DnD] Input 상태 동기화 성공: \${files[0].name} 외 \${files.length - 1}개\`);
|
||||||
|
|
||||||
// ⭐ Roadmap Step 2: 브릿지 전송 (경로 데이터를 확장 프로그램으로 전달)
|
|
||||||
const paths = Array.from(files).map(f => (f as any).path).filter(p => !!p);
|
|
||||||
if (paths.length > 0) {
|
|
||||||
vscode.postMessage({ type: 'filesDropped', paths: paths });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
processFiles(files);
|
processFiles(files);
|
||||||
|
|||||||
Reference in New Issue
Block a user