3-9. 리팩토링과 v0.1.0 2026-03-12 ~ 03-13
03-12: 대규모 리팩토링 커밋 100+
이 날은 거의 전부 리팩토링과 테스트에 들어갔다. 하루에 100커밋 이상.
거대 파일 분리
refactor: 8개 거대 파일을 기능별 서브모듈로 분리
refactor(proxyapi_v2): proxy/internal.rs를 기능별 서브모듈로 분리
refactor(proxyapi_v2): hybrid_tls_handler.rs를 기능별 서브모듈로 분리
refactor(proxy_daemon): client_handler.rs를 기능별 서브모듈로 분리
refactor(proxy_daemon): tls_client.rs를 기능별 서브모듈로 분리
refactor(proxy_daemon): diff.rs를 기능별 서브모듈로 분리
refactor(proxy_daemon): session.rs를 기능별 서브모듈로 분리
refactor(proxy_daemon): handler/http.rs를 기능별 서브모듈로 분리
refactor(scripting): engine.rs를 기능별 서브모듈로 분리
refactor(tui): forms.rs를 기능별 서브모듈로 분리
refactor(proxy_v2_models): detection.rs를 기능별 서브모듈로 분리
refactor(mcp_server): main.rs 거대 파일을 기능별 모듈로 분리
refactor(proxy_daemon): protocol.rs 거대 파일을 기능별 모듈로 분리
refactor(desktop): proxy_v2.rs 거대 파일을 기능별 모듈로 분리
수천 줄짜리 파일들을 기능별 서브모듈로 분리. 모든 크레이트에 걸쳐 수행.
구조 개선
refactor(proxy_daemon): handle_command 함수의 15개 파라미터를 CommandContext 구조체로 그룹화
refactor: 매직 넘버를 명명된 상수로 추출
refactor: 정규식 캐시를 LRU 방식으로 변경
refactor: handle_request/handle_response 함수에서 개별 관심사를 별도 함수로 분리
refactor: Response::builder 반복 패턴을 헬퍼 함수로 추출
refactor: watch 채널 생성 보일러플레이트를 팩토리 함수로 통합
refactor: DaemonContext 채널 그룹핑 및 깊은 중첩 플래트닝
refactor: 인증서 생성 시 unsafe unwrap/expect를 Result 반환 + 폴백 패턴으로 개선
15개 파라미터 함수 → CommandContext 구조체. 매직 넘버 → 명명된 상수. 정규식 캐시를 전체 삭제에서 LRU로 변경.
프록시 안정성 개선
fix: 프록시 안정성 개선 — panic 방지, timeout 추가, 에러 처리 강화
fix: 프록시 견고성 5가지 개선 — 이벤트 카운팅, 바디 크기 제한, atomic ordering, 패닉 방지, graceful shutdown
테스트 추가
test(mcp_server): store.rs 유닛 테스트 추가
test(proxy_daemon): session.rs 유닛 테스트 추가
test(proxy_daemon): intercept.rs 유닛 테스트 추가
CI/CD
fix: CI에서 테스트 CA 인증서 자동 생성 및 macOS 테스트 추가
fix: CI에 proxyapi_v2 테스트 추가
feat: macOS 전용 테스트 GitHub Actions 워크플로우 추가
macOS 환경에서의 TLS/인증서 테스트를 CI에 추가. Linux에서는 native-tls 400 에러가 나서 macOS 전용으로.
Grafana Loki 스타일 쿼리 빌더
feat(desktop): Grafana Loki 스타일 쿼리 빌더 UI 추가
feat(desktop): 쿼리 빌더 행별 AND/OR 토글 지원 및 UI 개선
feat(desktop): 쿼리 파서 다양한 따옴표 지원 (", ', `) 및 이스케이프 처리
test(desktop): 쿼리 파서/시리얼라이저 테스트 대폭 보강
텍스트 기반 Cheolsu-Query에 더해, GUI로 쿼리를 조립할 수 있는 빌더 UI를 추가. Grafana Loki의 쿼리 빌더에서 영감.
WebSocket 가상 스크롤 삽질
perf(desktop): 웹소켓 메시지 테이블 가상 스크롤 적용
fix(desktop): 웹소켓 가상 스크롤 빈 화면 및 memo 무효화 수정
fix(desktop): 웹소켓 가상 스크롤 빈 화면 및 이벤트 중복 등록 수정
revert(desktop): WebSocket 이벤트 리스너 cancelled 플래그 제거
fix(desktop): 웹소켓 가상 스크롤 ScrollArea 기반으로 전환
fix(desktop): 웹소켓 가상 스크롤 viewport 초기화 타이밍 수정
perf(desktop): WebSocket 메시지 rAF 버퍼링으로 대량 이벤트 성능 개선
WebSocket 메시지 테이블에 가상 스크롤 적용. 7커밋이 이 한 기능에. 빈 화면, memo 무효화, 이벤트 중복, viewport 초기화... 실시간 데이터 + 가상 스크롤의 고전적인 조합 문제.
03-13: v0.1.0 릴리스 첫 공식 릴리스
docs: v0.1.0 릴리즈 노트 업데이트 및 설치 가이드 추가
릴리스 날 수정사항
릴리스 당일에도 수정이 계속됐다:
fix(proxyapi_v2): TLS extension 타입 매핑 수정 및 TLS 1.3 정확한 감지 추가
fix(proxyapi_v2): upstream cert 스니핑 시 IPv6 대괄호 제거 및 IP 주소 SNI 미전송
fix(proxyapi_v2): 리프 인증서에 AuthorityKeyIdentifier 확장 추가
test(proxyapi_v2): supported_versions 파싱 단위 테스트 추가
fix(proxyapi_v2): TLS extension 매핑 나머지 수정 및 malformed 방어 코드 추가
fix(proxy_v2_models): gzip/brotli 압축 해제 시 Content-Type 헤더 유실 수정
fix(tui): 탭/모드/섹션 전환 시 렌더링 잔상 방지
fix(proxy_daemon): 에디터 스크립트 실행 시 V8 isolate 충돌 수정
TLS 관련 마지막 정리, 압축 해제 헤더 유실 수정, V8 isolate 충돌 수정 등.
기본 패스스루 도메인
feat(proxy_daemon): 기본 패스스루 도메인을 설정 가능하게 변경
feat(desktop): 기본 패스스루 도메인 UI 구현
Apple 서비스 등 TLS 인터셉트가 불가능한 도메인을 기본으로 패스스루 처리. UI에서 수정 가능.
네트워크 상세 레이아웃
feat(desktop): 네트워크 상세 패널 레이아웃 설정 (오른쪽/하단) 추가
상세 패널을 오른쪽 또는 하단에 배치할 수 있게. Charles Proxy 스타일.
파이프라인 구조화
refactor(proxy_daemon): 요청 파이프라인에 PipelineAction enum 도입
refactor(proxy_daemon): SharedDaemonState로 공통 필드 추출
feat(proxy_daemon): 프로토콜 버전 관리 추가
feat(proxy_daemon): Bearer/ApiKey 인증 방식 지원 추가
요청 처리 파이프라인을 PipelineAction enum으로 구조화. Forward, Respond, Block 등의 액션을 명시적으로 표현.
1줄 요약
03-12에 거대 파일 14개를 서브모듈로 분리하는 대규모 리팩토링 + 쿼리 빌더 UI + WebSocket 가상 스크롤을 하고, 03-13에 TLS/안정성 마무리 후 v0.1.0을 릴리스했다.