## 2026-06-01 — 세션 터미널 UX: 한글 IME 인라인 미리보기 숨김 + 복사/붙여넣기를 우클릭 메뉴로 (Ctrl+C는 항상 SIGINT)

### 배경

데스크탑 세션 터미널에서 한글을 조합하면 화면에 세 가지가 동시에 그려졌다: ① xterm 자체 인라인 미리보기(`.composition-view`), ② 좌하단 커스텀 IME 오버레이, ③ 블록 커서. 실행 중인 CLI(Claude Code 등)는 입력창에 자기 커서를 직접 그리는데, 조합 중인 글자는 그 커서의 오른쪽에 분리돼 그려져 "커서는 이전 글자 뒤 / 새 글자는 커서 앞"처럼 어색하게 보였다. 또 복사 단축키 Ctrl+C가 터미널 인터럽트(SIGINT)와 겹쳐, 선택 영역이 있으면 ^C가 안 가는 문제가 있었다.

### 주요 변경

#### 1. 한글 IME 인라인 미리보기 숨김 (`9a526c4`)

- xterm 커서를 숨기려 여러 방식(블록 커서 CSS opacity, DECTCEM `ESC[?25l`)을 시도했으나, 화면의 블록 커서는 **xterm 것이 아니라 실행 중인 CLI가 직접 그리는 커서**라 우리가 못 숨긴다는 것을 확인.
- 최종 해법: **xterm의 인라인 조합 미리보기(`.composition-view`)를 CSS로 숨김**(`display: none`). 조합 중인 글자는 이미 있는 **좌하단 IME 오버레이**에만 표시되어 분리된 글자의 어색함이 사라짐. 입력창은 CLI 커서 위치에서 깔끔하게 유지됨.
- PTY 커서 가시성 시퀀스는 건드리지 않아 실행 프로그램과 desync 없음.

#### 2. 복사/붙여넣기를 우클릭 컨텍스트 메뉴로, Ctrl+C/X는 항상 패스스루 (`4d47f60`)

- **Ctrl+C / Ctrl+X**가 더 이상 선택 영역을 가로채지 않음 → 항상 PTY로 전달(`^C` = SIGINT). 터미널 인터럽트와의 겹침 해소.
- **우클릭 컨텍스트 메뉴** 추가: 복사(선택 있을 때만 활성) / 붙여넣기 / 전체 선택. `createPortal` + `position: fixed` + 뷰포트 클램프, 바깥 클릭·Esc·스크롤·리사이즈로 닫힘.
- 붙여넣기 메뉴 항목은 기존 `pasteFromClipboard` 경로(이미지+텍스트+`ESC+v`)를 그대로 재사용. Ctrl+V/Alt+V 붙여넣기와 마우스 드래그 선택은 유지.

### 수정된 주요 파일

| 파일 | 변경 내용 |
|------|----------|
| `src/client/src/components/SessionTerminal.tsx` | `attachCustomKeyEventHandler`에서 Ctrl+C/X 특수처리 제거(패스스루), 우클릭 `contextmenu` → 메뉴 상태 + `createPortal` 메뉴(복사/붙여넣기/전체 선택), `pasteFnRef`로 paste 흐름 노출 |
| `src/client/src/index.css` | `.xterm .composition-view { display: none }` — IME 인라인 미리보기 숨김 |

### 아키텍처 결정

1. **인라인 미리보기 대신 오버레이만**: 실행 중인 CLI가 커서를 소유하므로 커서 위치 정렬은 불가능. 분리된 글자를 없애는 가장 확실한 방법은 xterm 인라인 미리보기를 끄고 좌하단 오버레이로 일원화하는 것.
2. **복사는 우클릭으로**: Ctrl+C를 복사에 쓰면 SIGINT와 본질적으로 겹친다. 복사/잘라내기를 우클릭 메뉴로 옮겨 단축키 충돌을 원천 제거.
