Release 2.10.0: 코드 에디터 터미널 초기화 버그 수정 + cls/clear 자동 실행

- requestAnimationFrame → setTimeout(60ms): 패널 레이아웃 계산 후 xterm 초기화
- ptyReady 스냅샷 버그 수정: codeTermShells 대신 xtermInstances 참조
- 터미널 열릴 때 cls/clear 자동 실행 (Windows: cls, Linux: clear)
- companionPlatform 타이밍 버그 수정: clearCmd를 shell_ready 수신 후 평가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
kim
2026-06-10 10:23:19 +09:00
co-authored by Claude Sonnet 4.6
parent 9b558be9f4
commit 158a156746
7 changed files with 296 additions and 1098 deletions
+3 -20
View File
@@ -58,16 +58,6 @@
:root:not([data-theme="dark"]) .csb-model-dot { background: var(--brand); box-shadow: 0 0 5px var(--brand); }
:root:not([data-theme="dark"]) .csb-model-select-wrap::after { color: var(--brand); }
:root:not([data-theme="dark"]) .csb-model-select-wrap select { color: var(--text); }
/* 프로젝트 카드 */
:root:not([data-theme="dark"]) .csb-project-card {
background: var(--panel); border-color: var(--line);
}
:root:not([data-theme="dark"]) .csb-project-card:focus-within {
border-color: var(--brand); box-shadow: 0 0 0 2px rgba(22,104,227,.1);
}
:root:not([data-theme="dark"]) .csb-project-label { color: var(--brand); }
:root:not([data-theme="dark"]) .csb-project-select-wrap::after { color: var(--brand); }
:root:not([data-theme="dark"]) .csb-project-select-wrap select { color: var(--text); }
/* 새 세션 버튼 */
:root:not([data-theme="dark"]) .csb-new-session-btn {
background: var(--panel); border-color: var(--line); color: var(--muted);
@@ -242,12 +232,6 @@
<div style="flex-shrink:0;display:flex;flex-direction:column;overflow:hidden;border-top:1px solid var(--line)">
<!-- 모델 선택 -->
<div style="display:flex;flex-direction:column;flex:1;overflow-y:auto;padding:10px 12px;gap:8px">
<div id="csb-session-project-row" class="csb-project-card" style="display:none">
<div class="csb-project-label">📁 프로젝트</div>
<div class="csb-project-select-wrap">
<select id="csb-session-project-sel" onchange="switchProject(this.value||null)"></select>
</div>
</div>
<button onclick="codeAiClear()" class="csb-new-session-btn">↺ 새 세션</button>
<!-- 실행 + AI 전송 -->
<div style="display:flex;gap:6px;margin-top:2px">
@@ -280,10 +264,11 @@
<div style="font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px">터미널 시작 경로</div>
<div style="display:flex;align-items:center;gap:6px">
<input type="text" id="csb-termpath" placeholder="/home/kim/projects/mygame"
style="flex:1;font-size:12px;padding:6px 8px;background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;font-family:'IBM Plex Mono',monospace">
style="flex:1;font-size:12px;padding:6px 8px;background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;font-family:'IBM Plex Mono',monospace"
onkeydown="if(event.key==='Enter')csbTermPathSave()">
<button onclick="csbTermPathSave()" style="background:var(--brand);color:#fff;border:none;border-radius:8px;padding:6px 10px;font-size:11px;font-weight:700;cursor:pointer;white-space:nowrap">저장</button>
</div>
<div style="font-size:10px;color:var(--muted);margin-top:4px">새 터미널 탭 열면 이 경로로 자동 이동</div>
<div id="csb-termpath-status" style="font-size:10px;color:var(--muted);margin-top:4px">새 터미널 탭 열면 이 경로로 자동 이동</div>
</div>
<div>
<div style="font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px">에디터 폰트</div>
@@ -398,8 +383,6 @@
</div>
</div>
<div class="code-ai-input-row">
<button id="code-ai-mode-btn" onclick="toggleCodeAiMode()" title="Ask: 질문/설명 | Code: 파일 편집"
style="flex-shrink:0;align-self:flex-end;background:none;border:1px solid #2a3a5a;border-radius:4px;padding:4px 8px;font-size:11px;cursor:pointer;color:#7aabf0;white-space:nowrap;line-height:1.4">✏️ Code</button>
<textarea id="code-ai-input" placeholder="AI에게 질문..." rows="1"
oninput="this.style.height='auto';this.style.height=Math.min(this.scrollHeight,200)+'px'"
onkeydown="if(event.key==='Enter'&&!event.shiftKey){event.preventDefault();codeAiSend();}"></textarea>