3-5. TUI와 스크립팅 엔진 2026-03-07
하루에 두 개의 크레이트가 태어났다. 이 날 커밋 수만 80개 이상.
TUI 크레이트 (cheolsu-proxy-tui)
feat(tui): ratatui 기반 TUI crate 기본 구조 추가
feat(tui): App 상태 관리 및 데몬 연결 구현
feat(tui): Network/WebSocket/Rules/Settings 탭 UI 렌더링 구현
Ratatui + Crossterm으로 터미널 UI를 만들었다. SSH나 서버 환경에서도 프록시를 쓸 수 있다.
트러블슈팅: TUI 화면 깨짐 연쇄 삽질
데몬 통합에서 버그가 연쇄적으로 터졌다:
fix(tui): --daemon 플래그 추가로 TUI 단독 실행 시 데몬 자동 시작 지원
fix(tui): 데몬 모드를 tokio 런타임 생성 전에 분기하여 단독 실행 수정
fix(tui): 데몬 프로세스에 tracing-subscriber 추가로 에러 로그 출력
fix(tui): 데몬 로그를 파일에만 출력하여 TUI 화면 깨짐 방지
fix: tracing subscriber init → try_init으로 변경하여 중복 초기화 패닉 방지
- 데몬 로그가 stdout으로 나와서 TUI 화면이 깨짐 → 파일로만 출력
- tracing subscriber를 두 번 초기화하면 패닉 →
try_init 사용
- 데몬 모드 분기가 tokio 런타임 후에 있어서 문제 → 런타임 전에 분기
TUI 기능 빠르게 채우기
feat(tui): TableState 기반 자동 스크롤 구현
feat(tui): 네트워크 디테일을 전체 화면으로 표시
feat(tui): 네트워크 탭에 cURL 복사(C), 리플레이(r) 기능
feat(tui): 선택 항목 색상 강화 및 탭별 키 힌트 표시 개선
feat(tui): 웹소켓 탭에 클립보드 복사 기능 추가
feat(tui): 인터셉트 규칙 추가 폼 및 클립보드 복사 기능 구현
j/k 스크롤, cURL 복사, 디테일 전체 화면, 탭별 키 힌트까지. 하루 만에 쓸 수 있는 수준으로.
스크립팅 엔진 크레이트 (scripting)
feat(scripting): deno_core 기반 TypeScript/JavaScript 스크립팅 엔진 추가
feat(proxy_daemon): 스크립팅 엔진을 프록시 파이프라인에 통합
feat(scripting): console.log 캡처 및 로그 브로드캐스트 기능 추가
feat(proxy_daemon): 스크립트 파일 감시(hot reload) 및 로그/상태 전달 추가
Deno Core(V8)를 Rust에 임베드. oxc로 TypeScript→JavaScript 변환 후 V8에서 실행.
cheolsu.onRequest((request) => {
if (request.url.includes("/api/debug")) {
return { action: "respond", response: { status: 200, headers: {}, body: '{"mock": true}' } };
}
return { action: "forward" };
});
세 가지 훅: onRequest, onResponse, onWebSocketMessage. 파일 감시(500ms 디바운스)로 hot reload 지원.
데스크톱 스크립트 UI
feat(desktop): Script 페이지 및 스크립트 관리 기능 추가
feat(desktop): Script 페이지에 Monaco 에디터 통합
feat(desktop): Script 에디터/콘솔 드래그 리사이즈 및 i18n 번역 추가
feat(desktop): Script API Reference 탭 및 i18n 업데이트
feat(tui): Script 탭 추가 (스크립트 로드/언로드/로그 뷰어)
feat(mcp): load_script, unload_script 도구 추가
docs: cheolsu.d.ts 타입 정의 파일 추가
Monaco Editor로 스크립트 편집, 콘솔 로그 뷰어, API 레퍼런스, MCP 도구까지 한 세트.
서버 리플레이
feat(proxy_daemon): 서버 리플레이(Server Replay) 데몬 레벨 구현
feat(tauri-ui): 서버 리플레이 Tauri 커맨드 추가
feat(tauri-ui): 서버 리플레이 UI 페이지 및 스토어 추가
캡처된 응답을 저장해뒀다가 같은 요청이 오면 자동으로 반환. 사내에서 가장 많이 쓰는 기능.
i18n (Lingui)
feat(tauri-ui): Lingui 기반 다국어(i18n) 지원 추가 — 영어/한국어
ci: i18n 카탈로그 누락 검증 추가 — lingui extract 후 diff 체크
Lingui로 영어/한국어 전환. CI에서 번역 누락을 자동 검증.
업스트림 프록시
feat(proxyapi_v2): upstream proxy 모듈 추가 및 CONNECT 터널 경유 지원
feat(proxy_daemon): upstream proxy 설정 수신 및 하이브리드 클라이언트 적용
feat(tauri-ui): upstream proxy 설정 UI 및 Settings 페이지 추가
feat(tui): Settings 탭에 Upstream Proxy 설정 UI 추가
test(proxyapi_v2): upstream proxy 통합 테스트 추가
회사 VPN/프록시 뒤에서도 동작하도록 HTTP/HTTPS 업스트림 프록시 지원. 사내에서 필수.
릴리스 파이프라인
chore: GitHub Actions 릴리스 워크플로우 추가
feat(desktop): Tauri Updater 플러그인 설치 및 설정
feat(desktop): 싱글 인스턴스 적용
릴리스 자동화, 자동 업데이트, 다중 실행 방지까지. 배포 준비.
HAR Export
feat(desktop): HAR Export 기능 추가
feat(tui): HAR Export 기능 추가
test(proxy_v2_models): HAR 변환 모듈 유닛 테스트 추가
HTTP Archive 포맷으로 트래픽 내보내기. 버그 리포트에 첨부하면 재현 없이 분석 가능.
기타 UI 개선
refactor: tauri-ui 디렉토리를 desktop으로 이름 변경
refactor(tauri-ui): AppSidebar를 공유 레이아웃으로 이동
fix(tui): KeyEventKind::Press 필터링으로 키 입력 중복 방지
fix(tui): UI 색상 가시성 개선 — DarkGray를 밝은 색으로 변경
feat(tauri): CLI 설치/제거 커맨드 추가 (install_cli, uninstall_cli)
1줄 요약
03-07 하루에 TUI(Ratatui)와 스크립팅 엔진(Deno Core+V8)을 만들고, 서버 리플레이, HAR Export, i18n, 업스트림 프록시, 릴리스 파이프라인까지 구현했다. 커밋 80개+.