Code editor: block flip-flop colors, view option buttons, terminal error improvements, live server log bubble

- Add alternating block background colors (ff-block-even/odd) for functions/classes
- Add ¶빈줄숨김 / ▓블록색상 toggle buttons to file panel sidebar (below file tree)
- Fix terminal error send: filter Windows prompt+command lines, only send last Traceback block, strip pygame header noise
- Show live server log bubble during AI tool calls, fade out on completion

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
kim
2026-06-09 13:57:27 +09:00
co-authored by Claude Sonnet 4.6
parent 4ead0750b9
commit 9b558be9f4
5 changed files with 320 additions and 45 deletions
+34 -2
View File
@@ -4,10 +4,14 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>💻 코드 에디터</title>
<style>
@font-face { font-family: 'D2Coding'; src: url('/fonts/D2Coding.ttf') format('truetype'); font-weight: 400; font-style: normal; }
@font-face { font-family: 'D2Coding'; src: url('/fonts/D2CodingBold.ttf') format('truetype'); font-weight: 700; font-style: normal; }
</style>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Nanum+Gothic:wght@400;700;800&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=JetBrains+Mono:wght@400;500;600&family=Fira+Code:wght@400;500;600&display=swap" rel="stylesheet">
<link rel="icon" type="image/png" sizes="64x64" href="cherry_logo.png">
<!-- CodeMirror + xterm (UMD libs loaded before Monaco's AMD loader to avoid anonymous define() clashes) -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/codemirror.min.css">
@@ -227,6 +231,11 @@
<div id="csb-file-tree" style="flex:1;overflow-y:auto;padding:4px 0">
<div style="padding:12px;color:var(--muted);font-size:11px;text-align:center">로딩 중...</div>
</div>
<!-- 보기 옵션 -->
<div style="display:flex;gap:4px;padding:5px 8px;flex-shrink:0;border-top:1px solid var(--line)">
<button id="code-opt-hideblank" class="csb-term-btn" onclick="csbHideBlankLines(!_hideBlankLines)" title="빈 줄·주석 줄 숨기기" style="font-size:11px;padding:4px 0">¶ 빈줄숨김</button>
<button id="code-opt-blockff" class="csb-term-btn" onclick="csbBlockFlipFlop(!_blockFlipFlop)" title="함수/블록 교대 배경색" style="font-size:11px;padding:4px 0">▓ 블록색상</button>
</div>
</div>
<!-- 하단: 모델 설정 패널 -->
@@ -276,6 +285,29 @@
</div>
<div 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>
<select id="csb-fontfamily" onchange="csbFontFamily(this.value)"
style="width:100%;font-size:12px;padding:6px 8px;background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;cursor:pointer">
<option value="D2Coding">D2Coding</option>
<option value="JetBrains Mono">JetBrains Mono</option>
<option value="IBM Plex Mono">IBM Plex Mono</option>
<option value="Fira Code">Fira Code</option>
<option value="Nanum Gothic">Nanum Gothic</option>
<option value="monospace">시스템 기본</option>
</select>
</div>
<div>
<div style="font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px">폰트 웨이트</div>
<select id="csb-fontweight" onchange="csbFontWeight(this.value)"
style="width:100%;font-size:12px;padding:6px 8px;background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;cursor:pointer">
<option value="300">Light (300)</option>
<option value="400" selected>Regular (400)</option>
<option value="500">Medium (500)</option>
<option value="600">Semi Bold (600)</option>
<option value="700">Bold (700)</option>
</select>
</div>
<div>
<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:8px">
@@ -321,7 +353,7 @@
<div id="code-view" class="active">
<!-- File tabs bar -->
<div class="code-tabs-bar">
<div id="code-file-tabs" style="display:flex;align-items:stretch;flex:1"></div>
<div id="code-file-tabs" style="display:flex;flex:1"></div>
<div id="code-ai-model-card" style="display:flex;align-items:center;gap:7px;padding:3px 10px 3px 12px;border-left:1px solid #1a4a35;flex-shrink:0;align-self:stretch">
<span style="font-size:16px;line-height:1">🤖</span>
<div style="display:flex;flex-direction:column;gap:1px">