Code editor: Arduino 에뮬레이터(avr8js) + ESP32 Web Serial 플래셔

- web-ui/arduino-emulator.html: avr8js 기반 ATmega328P 에뮬레이터
  (핀 상태 패널, 보드 LED, 시리얼 모니터, 속도 조절)
  - cpu.tick() 누락 수정: delay()/millis()/Serial 동작 안 하던 버그
  - 시리얼 라인 추적(serialLineSpan): D13 sys 메시지 끼어들 때 줄 깨짐 수정
- web-ui/esp32-flasher.html: Web Serial로 merged.bin 플래시
- POST /api/arduino/compile: arduino-cli로 uno/nano hex, esp32 merged.bin 컴파일
- POST /api/code/round: 클라이언트 주도 코드 에디터용 1라운드 SSE 엔드포인트
- code.js: 실행 모드에 Arduino 에뮬레이터 / ESP32 플래시 추가

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
kim
2026-06-11 16:24:45 +09:00
co-authored by Claude Fable 5
parent f00c453de9
commit fae47a0962
6 changed files with 1204 additions and 9 deletions
+8 -3
View File
@@ -381,10 +381,15 @@
</div>
</div>
</div>
<div class="code-ai-input-row">
<textarea id="code-ai-input" placeholder="AI에게 질문..." rows="1"
<div id="code-ai-img-preview" style="display:none;flex-wrap:wrap;gap:6px;padding:6px 10px 0;"></div>
<div class="code-ai-input-row" id="code-ai-input-row"
ondragover="event.preventDefault();this.classList.add('drag-over')"
ondragleave="this.classList.remove('drag-over')"
ondrop="_codeAiDropImage(event)">
<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>
onkeydown="if(event.key==='Enter'&&!event.shiftKey){event.preventDefault();codeAiSend();}"
onpaste="_codeAiPasteImage(event)"></textarea>
<button id="code-ai-send-btn" class="code-tool-btn primary" onclick="codeAiSend()" style="flex-shrink:0;align-self:flex-end">전송</button>
</div>
</div>