# v0.2.2 — 세션 터미널 정비: OS 클립보드 페이스트, 색상 태그, 8방향 리사이즈, 위키 원본 md 동시 주입

릴리즈 일자: 2026-05-04
이전 버전: v0.2.1

## 요약 (TL;DR)

- **세션 스크린샷/이미지 페이스트가 이제 사용자 프로젝트 트리에 파일을 만들지 않습니다** — 호스트 OS 클립보드에 직접 push 후 PTY로 `Alt+V`만 보내 Claude/Codex/Gemini가 자체 paste 핸들러로 처리.
- **세션 터미널이 iTerm2 / Windows Terminal과 동일한 클립보드 단축키**를 지원합니다 (Ctrl/Cmd+C/V/X, Alt+V, macOS Option-as-Meta). 이전엔 raw 제어문자가 PTY로 흘러갔습니다.
- **세션을 색상 태그로 구분**할 수 있고 (글로벌 Settings → Sessions 탭에서 CRUD), 제목 입력은 선택사항이 됐으며, 비-워크트리 세션도 default branch를 칩으로 표시합니다.
- **위키 주입 시 원본 markdown 파일도 큐레이트 노드와 병렬로 함께 주입**할 수 있습니다 (`<raw_source_files>` 블록).
- **플로팅 세션 창을 8방향 모두에서 리사이즈**할 수 있습니다 (이전에는 우하단 한 모서리만).
- 세션 X 버튼이 명시적인 종료 흐름으로 정리됐고 (running 시 confirm), 도크 트레이 chip 드래그로 순서 변경, 최소화 상태가 워크스페이스 전환 후에도 유지됩니다.

## 주요 변경

### 세션 이미지 페이스트가 OS 클립보드 경유로 전환

이전엔 스크린샷을 붙여넣으면 서버가 `<project>/.clitrigger/paste-images/imgN.<ext>`로 비트맵을 저장하고 그 경로를 PTY에 텍스트로 보내 CLI가 path-to-image 디텍터로 픽업하던 방식이었습니다. 디스크에 잔여 파일이 남아 IDE 탐색기/OS 인덱서에 노출되고, 세션 cleanup이 다른 세션의 이미지를 함께 지우는 레이스가 있었습니다.

이번 버전부터는:

- 서버가 이미지 비트맵을 **호스트 OS 클립보드에 직접 푸시**합니다 (Windows: PowerShell `Clipboard.SetImage` 메모리, macOS: `os.tmpdir()` 임시 파일 + osascript + 즉시 unlink, Linux: `wl-copy`/`xclip` stdin)
- 클라이언트는 PTY에 `\x1bv` (Alt+V) 한 시퀀스만 보냅니다
- CLI(Claude/Codex/Gemini)가 자체 클립보드 paste 핸들러로 `[Image #N]`을 렌더합니다

→ **사용자 프로젝트 트리에 디스크 파일이 만들어지지 않습니다.**

부팅 시 1회성 cleanup이 모든 프로젝트의 레거시 `<project>/.clitrigger/paste-images/`(워크트리 포함)를 best-effort로 정리하므로 업그레이드 후 별도 작업은 필요 없습니다.

### xterm 세션 클립보드 단축키 + macOS Option-as-Meta

xterm.js core가 의도적으로 클립보드 통합을 비워둔 정책 때문에 이전엔 Ctrl/Cmd+C/V/X가 raw 제어문자(`^C`/`^V`/`^X`)로 PTY에 들어가 클립보드 동작이 안 되고 SIGINT만 동작했습니다.

이제는 iTerm2 / Windows Terminal과 동일하게:

- **Ctrl/Cmd+C**: selection이 있으면 복사, 없으면 SIGINT (macOS Ctrl+C도 SIGINT 유지)
- **Ctrl/Cmd+V**, **Alt+V**: 클립보드 텍스트 → PTY로 forward
- **Ctrl/Cmd+X**: selection 있으면 잘라내기, 없으면 그대로 PTY로
- macOS는 **Option을 Meta**로 인식 — `Option+B`/`F` 같은 readline/tmux Meta 단축키 정상 동작
- HTTP LAN-IP origin에서 `clipboard.readText()`가 차단된 환경에선 컨테이너 paste 이벤트로 fallback

### 세션 색상 태그 + 글로벌 설정 + 선택적 제목

- **색상 태그**: 사이드바 톱니 → **Settings → Sessions** 탭에서 이름 + `#RRGGBB` 색상 페어로 태그 CRUD. 한 번 만든 태그는 모든 프로젝트에서 공유. 세션 폼에 dropdown으로 노출되며, 리스트의 세션 row에 색상 칩으로 표시됩니다.
- **선택적 제목**: 빈 칸으로 저장하면 서버가 `Session YYYY-MM-DD HH:MM` 형식으로 자동 채웁니다. "이름 짓기"가 마찰이라 일단 시작 후 나중에 편집하는 흐름이 가능해집니다.
- **워크트리 디폴트 상속 체인**: 신규 세션은 (1) 프로젝트 `use_worktree` 정책을 따르고, (2) Settings → Sessions 탭의 "Default use worktree"가 그 위에 한 번 더 override 합니다. todos/discussions와 정책 일관성 회복.
- **default branch 칩**: 비-워크트리 세션이 Git 저장소면 `project.default_branch`로 fallback해서 GitBranch 칩을 렌더 — 한 프로젝트에 워크트리/메인 세션이 섞여 있을 때 어디서 도는지 한 눈에 보입니다.

### 위키 원본 markdown 파일 동시 주입

위키 주입은 그동안 LLM이 압축한 큐레이트 노드만 프롬프트에 넣었고, 인제스트 시점에 보존되는 `.clitrigger/raw/*.md` 원본은 닿을 수 없었습니다. 큐레이션 과정에서 떨어져 나간 디테일이 필요한 케이스가 무력했죠.

todo / discussion / session 폼의 위키 주입 섹션 아래에 **"원본 md 파일"** 섹션이 추가됐습니다:

- 큐레이트 노드(`<long_term_memory>` 블록)와 **병렬로** 원본 md를 `<raw_source_files>` 블록으로 함께 주입
- mode와 직교 — `None` 모드여도 raw 파일이 선택되어 있으면 주입 발동
- sourceType별(todo/discussion/manual) 그룹화 + 검색 + 파일 사이즈 + 파생 노드 카운트 칩
- 파일당 50KB cap (`[... truncated]` 마커), `.clitrigger/raw/` 외부 경로는 차단

### 플로팅 세션 창 8방향 리사이즈

이전엔 우하단 한 모서리만 잡아서 늘릴 수 있었습니다. 이제 4 엣지(N/S/E/W) + 4 코너(NE/NW/SE/SW) 모두에서 리사이즈할 수 있습니다. 마우스가 창 가장자리에 가까워지면 OS 데스크탑 창처럼 ns/ew/nwse/nesw 커서로 바뀌고, North/West에서 끌면 반대편 엣지가 고정된 채 늘어납니다. 기존 chrome-drag, Aero 엣지 스냅, 이웃 윈도우 sticky snap, 도크 오버레이 흐름은 그대로.

### 세션 창 종료 흐름 + 도크 트레이 정리

- **X = 종료** (이전엔 무음 백그라운드 전환): 그룹에 running 세션이 있으면 confirm 1회 후 `stopSession()` 호출. 백그라운드는 최소화 버튼 역할이라 X = 종료가 멘탈 모델에 더 맞습니다.
- **도크 트레이 chip 드래그 재정렬**: 좌하단 dock chip을 드래그해서 좌우 순서 변경 (cursor: grab).
- **최소화 상태가 워크스페이스 전환 후에도 유지**: localStorage hydration이 `minimized: false`를 하드코딩하던 회귀를 수정.

### 폴리시 + dev 모드 자가-치유

- **세션 cleanup 버튼**: `worktree_path` 단독 → `worktree_path || branch_name` — `use_worktree=false`로 만든 세션이나 이전에 `delete_branch=false`로 정리한 세션처럼 브랜치만 남은 경우에도 UI에서 정리 가능.
- **세션 편집 저장 회귀 수정**: `use_worktree` 부울이 better-sqlite3 binding을 거부해 항상 실패하던 버그 — update 경로도 0/1로 정규화.
- **분할 pane 리사이즈 drift**: 두 도킹된 세션 사이의 splitter를 끌면 분할자가 커서를 따라가지 못하고 폭주하던 회귀 — snapshot을 `initialSizes`(불변) / `finalSizes`(라이브)로 분리.
- **dev 모드 better-sqlite3 ABI 자가-치유**: `build-electron.bat` 직후 `dev.bat`로 돌아갈 때 native bind ABI mismatch로 크래시하던 회귀 — `dev.bat` 부팅 직전에 `new Database(':memory:')` 프로브 + 실패 시 stale `.node` 삭제 + 자동 `npm rebuild`.

## 설치 / 업데이트

```bash
npm i -g clitrigger@0.2.2
```

기존 사용자는 위 명령으로 업데이트하면 충분합니다. 데스크탑 앱(.exe / .dmg / .AppImage)은 GitHub Release 자산을 사용하세요.

> 업그레이드 후 첫 부팅에서 레거시 `<project>/.clitrigger/paste-images/` 디렉터리가 있으면 자동으로 정리됩니다 (best-effort, 실패해도 부팅 영향 없음).

## 전체 커밋 목록

- 9174228 chore(release): v0.2.2
- 9e63ff5 feat(session): add 8-direction resize to floating session window
- 6485654 WIP(docs): document raw md injection, session tags/settings, clipboard shortcuts
- e54c55d WIP(docs): document OS clipboard image paste flow
- dcac8db feat(session): paste screenshots via host OS clipboard, not project dir
- 586e372 WIP(release): add release notes phase to skill and wire workflow body_path
- 8371ac3 feat: add screenshot dir lookup to clipboard-image-path
- 5c86686 feat(session): OS clipboard file paste, sequential img names, paste-dir cleanup
- f807db3 WIP(session): OS clipboard file paste, sequential img names, paste-dir cleanup
- 8c88bf6 feat(session): clipboard image paste, dock tray reorder, and minimized state persistence
- 066efbd feat(session): show project default branch when session has no branch
- 5bae195 WIP(session): tighten auto-close phase gate and defer active flag
- dc35289 feat(session): add color tags, settings panel, and optional titles
- 703a11c WIP(session): dedup IME onData by string equality not time window
- ceb9a81 feat(session): confirm-on-close for running windows + project-default worktree
- e5edce9 feat(wiki): inject original markdown sources alongside curated entries
- 56f5efa fix(session): show cleanup button when only branch_name remains
- 7b86730 fix(session): coerce use_worktree boolean to 0/1 on session update
- a0b577b fix(session): wire clipboard shortcuts and Alt+V paste in xterm sessions
- 5f544cb WIP(readme): document npm upgrade command and update-check hint

## 관련 문서

- [상세 changelog](../changelog/) — 날짜별 기술 결정 기록
  - [2026-05-03](../changelog/2026-05/2026-05-03.md) — 위키 원본 md 동시 주입 + 세션 색상 태그/설정/선택적 제목 + 클립보드 단축키 + 도크 재정렬
  - [2026-05-04](../changelog/2026-05/2026-05-04.md) — 세션 스크린샷 호스트 OS 클립보드 페이스트 (프로젝트 트리에 파일 0)
