diff --git a/diff.txt b/diff.txt new file mode 100644 index 0000000..6eafee2 Binary files /dev/null and b/diff.txt differ diff --git a/diff_utf8.txt b/diff_utf8.txt new file mode 100644 index 0000000..a62eecc --- /dev/null +++ b/diff_utf8.txt @@ -0,0 +1,37 @@ +diff --git a/src/extension.ts b/src/extension.ts +index 7720f87..e47cca3 100644 +--- a/src/extension.ts ++++ b/src/extension.ts +@@ -1017,7 +1017,8 @@ class SidebarChatProvider implements vscode.WebviewViewProvider { + // -------------------------------------------------------- + private async _sendModels() { + if (!this._view) { return; } +- const { ollamaBase, defaultModel } = getConfig(); ++ const { ollamaBase } = getConfig(); ++ let defaultModel = getConfig().defaultModel; + try { + const isLMStudio = ollamaBase.includes('1234') || ollamaBase.includes('v1'); + let models: string[] = []; +@@ -1034,9 +1035,21 @@ class SidebarChatProvider implements vscode.WebviewViewProvider { + + if (models.length === 0) { + models = [defaultModel]; +- } else if (!models.includes(defaultModel)) { ++ } ++ ++ // 媛€?몄삩 紐⑤뜽 紐⑸줉???꾩옱 defaultModel???녿떎硫? 遺덈윭??泥?踰덉㎏ 紐⑤뜽濡?defaultModel???먮룞 ?낅뜲?댄듃 ++ if (!models.includes(defaultModel) && models.length > 0) { ++ defaultModel = models[0]; ++ await vscode.workspace.getConfiguration('connectAiLab').update('defaultModel', defaultModel, vscode.ConfigurationTarget.Global); ++ } ++ ++ // defaultModel????긽 ?쒕∼?ㅼ슫 理쒖긽?⑥뿉 ?ㅻ룄濡??ㅼ젙 ++ const defaultIdx = models.indexOf(defaultModel); ++ if (defaultIdx > 0) { ++ models.splice(defaultIdx, 1); + models.unshift(defaultModel); + } ++ + this._view.webview.postMessage({ type: 'modelsList', value: models }); + } catch { + this._view.webview.postMessage({ type: 'modelsList', value: [defaultModel] }); diff --git a/package-lock.json b/package-lock.json index 6485b2d..06733e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "connect-ai-lab", - "version": "2.2.10", + "version": "2.2.15", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "connect-ai-lab", - "version": "2.2.10", + "version": "2.2.15", "license": "MIT", "dependencies": { "axios": "^1.15.0", diff --git a/src/extension.ts b/src/extension.ts index 7720f87..e47cca3 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1017,7 +1017,8 @@ class SidebarChatProvider implements vscode.WebviewViewProvider { // -------------------------------------------------------- private async _sendModels() { if (!this._view) { return; } - const { ollamaBase, defaultModel } = getConfig(); + const { ollamaBase } = getConfig(); + let defaultModel = getConfig().defaultModel; try { const isLMStudio = ollamaBase.includes('1234') || ollamaBase.includes('v1'); let models: string[] = []; @@ -1034,9 +1035,21 @@ class SidebarChatProvider implements vscode.WebviewViewProvider { if (models.length === 0) { models = [defaultModel]; - } else if (!models.includes(defaultModel)) { + } + + // 가져온 모델 목록에 현재 defaultModel이 없다면, 불러온 첫 번째 모델로 defaultModel을 자동 업데이트 + if (!models.includes(defaultModel) && models.length > 0) { + defaultModel = models[0]; + await vscode.workspace.getConfiguration('connectAiLab').update('defaultModel', defaultModel, vscode.ConfigurationTarget.Global); + } + + // defaultModel이 항상 드롭다운 최상단에 오도록 설정 + const defaultIdx = models.indexOf(defaultModel); + if (defaultIdx > 0) { + models.splice(defaultIdx, 1); models.unshift(defaultModel); } + this._view.webview.postMessage({ type: 'modelsList', value: models }); } catch { this._view.webview.postMessage({ type: 'modelsList', value: [defaultModel] });