3-6. 다크 테마와 시스템 트레이 2026-03-08
다크 테마 커밋 12개
다크 테마 하나에 12커밋. 처음에 순수 검은색으로 시작 → 텍스트가 너무 밝아서 부드러운 톤으로 조정 → 하드코딩된 색상을 테마 인식으로 변경 → Monaco 에디터가 다크 테마를 안 따라서 커스텀 테마 등록. 디테일의 지옥.
시스템 트레이 삽질의 극치
macOS 시스템 트레이 구현. 좌클릭 시 패널 UI, 우클릭 시 컨텍스트 메뉴.
트러블슈팅 타임라인
커밋 순서대로 따라가면 삽질의 깊이가 보인다:
- 플리커 — 트레이 패널이 깜빡이며 나타남 → 전용 아이콘 + 별도 엔트리포인트로 해결
- 앱 프리징 — Store 동기화가 메인 스레드를 블로킹 → lazy 생성으로 해결
- 높이 전쟁 — 380→334→320→328→326. 5번 미세 조정. 스크롤바가 나오면 안 되는데 콘텐츠에 딱 맞아야 하니까
- 무한루프 — 트레이에서 토글 → 메인 윈도우 업데이트 → 이벤트 발생 → 트레이 업데이트 → 무한반복. Tauri Store로 통일해서 해결
- 최종 정리 — 문제를 일으키는 토글들을 아예 트레이에서 제거
SOCKS5 프록시
업스트림 프록시에 SOCKS5 지원 추가. socks5/ 모듈에서 SOCKS5 핸드셰이크를 구현.
스크립팅 async/await
setTimeout, setInterval, async/await 지원. 근데 스크립트를 재로드할 때 이전 엔진의 타이머가 정리되지 않아서 V8이 crash. clearAllTimers를 엔진 교체 시 호출하도록 수정.
CA 인증서 UI
Settings에서 CA 인증서를 설치/제거할 수 있게 됐다. macOS에서는 Keychain에 추가. 관리자 권한 없이도 동작하도록 수정.
macOS 네이티브 메뉴
Cmd+R 새로고침인데 이것도 삽질이 있었다:
500ms → 2초 → 디바운스 자체를 제거하고 프론트엔드에서 isConnected 상태로 처리. 세 번의 방향 전환.
CLI/MCP 바이너리 배포
macOS에서 MCP 바이너리를 외부에서 실행하면 Gatekeeper가 차단. sidecar 경로 문제도 있었고. macOS 앱 배포의 어두운 면.
1줄 요약
다크 테마에 12커밋, 시스템 트레이에 16커밋(높이 5번 조정). SOCKS5, 스크립팅 async/await, CA 인증서 UI, macOS 네이티브 메뉴까지. 디테일에 집착한 하루.