feat: kakao_send_message 에이전트 도구화 + 멀티기기 메인챗 세션 동기화 + 터미널 전체화면

- src/tools/kakao.ts: 기존 KakaoNotify를 kakao_send_message 도구로 노출, 코드에디터에서는 차단
- app.js/server-v2.ts: 메인챗 마지막 활성 세션을 서버에 기록해 새 기기에서 열 때 자동 이어보기
- code.html/code.js/styles.css: 서버 터미널 패널 전체화면 토글 (Esc로 종료)
- companion.py: .vbs 자동시작 시 cwd가 System32로 잡히는 문제 방지 위해 홈 디렉터리로 고정
- papa 워크스페이스: 우즈베크어 학습 진행상황, 서버 이름(지서버/클로서버) 메모 갱신

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
kim
2026-07-05 14:41:57 +09:00
co-authored by Claude Sonnet 5
parent ce1a99b723
commit 186dc4cb23
11 changed files with 193 additions and 4 deletions
+21
View File
@@ -775,6 +775,10 @@ function createXtermShell(container, shellId) {
toggleCodeTerminal();
return false;
}
if (e.type === 'keydown' && e.key === 'Escape' && codeTermFullscreen) {
toggleCodeTermFullscreen();
return false;
}
return true;
});
const inst = { term, fitAddon, ptyReady: false };
@@ -893,6 +897,23 @@ function toggleCodeTerminal() {
}
if (monacoEditor) setTimeout(() => monacoEditor.layout(), 60);
}
let codeTermFullscreen = false;
function toggleCodeTermFullscreen() {
const panel = document.getElementById('code-term-panel');
const btn = document.getElementById('code-term-fullscreen-btn');
if (!panel) return;
codeTermFullscreen = !codeTermFullscreen;
panel.classList.toggle('code-term-fullscreen', codeTermFullscreen);
if (btn) { btn.classList.toggle('active', codeTermFullscreen); btn.title = codeTermFullscreen ? '전체화면 종료 (Esc)' : '전체화면'; }
setTimeout(() => {
const s = codeTermShells.find(s => s.id === activeCodeTermShellId);
if (s?.fitAddon) s.fitAddon.fit();
if (s?.term) s.term.focus();
}, 60);
}
document.addEventListener('keydown', e => {
if (e.key === 'Escape' && codeTermFullscreen) toggleCodeTermFullscreen();
});
// ── Browser Preview Panel ────────────────────────────────────────────────────
let codePreviewOpen = false;
function toggleCodePreview() {