diff --git a/package.json b/package.json index 7598647..122de0a 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "connect-ai-lab", "displayName": "Connect AI LAB", "description": "100% 로컬 AI 코딩 에이전트 — 파일 생성, 코드 편집, 터미널 실행을 오프라인으로. Ollama + Gemma/Llama/DeepSeek 지원.", - "version": "1.0.10", + "version": "1.0.11", "publisher": "connectailab", "license": "MIT", "icon": "assets/icon.png", diff --git a/src/extension.ts b/src/extension.ts index 14515da..81c50c2 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -604,12 +604,12 @@ textarea::placeholder{color:var(--text-dim)} @keyframes shimmer{0%{left:-40px}100%{left:120px}} @keyframes pulse{0%,100%{opacity:.5}50%{opacity:1}}
-'+esc(c)+''+esc(c)+''+esc(c)+''+esc(c)+'');
+ const blocks = [];
+ function pushB(h){ blocks.push(h); return '__B' + (blocks.length-1) + '__'; }
+ t=t.replace(new RegExp(''+esc(c)+''+esc(c)+''+esc(c)+''+esc(c)+''));
+ t=esc(t);
t=t.replace(new RegExp('\\\\*\\\\*([^*]+)\\\\*\\\\*', 'g'),'$1');
+ t=t.replace(new RegExp('__B(\\\\d+)__', 'g'), (_,i)=>blocks[i]);
return t;
}
function copyCode(btn){const code=btn.parentElement.querySelector('code');if(!code)return;navigator.clipboard.writeText(code.innerText).then(()=>{btn.textContent='\u2713 Copied';btn.classList.add('copied');setTimeout(()=>{btn.textContent='Copy';btn.classList.remove('copied')},1500)})}
@@ -640,12 +644,12 @@ function addMsg(text,role){
const isUser=role==='user',isErr=role==='error';
const el=document.createElement('div');el.className='msg'+(isUser?' msg-user':'')+(isErr?' msg-error':'');
const head=document.createElement('div');head.className='msg-head';
- head.innerHTML=(isUser?'