"클립보드는 유저 거지 네 거 아냐. 붙여넣으려고 빌렸으면, 발견한 그대로 돌려놔."
붙여넣기 발판엔 빚이 있어
클립보드 + Cmd+V 발판은 삽입의 일꾼이지만, 공유 자원을 써: 유저의 클립보드. Firekeeper 가 받아쓰기를 붙여넣으려고 클립보드에 쓰면, 네가 복사해 뒀던 뭐든 방금 짓밟은 거야 — URL, 문단, 이미지. 무례하고 놀라워. 그래서 붙여넣기 발판은 예의를 빚져: 현재 클립보드를 먼저 저장하고, 전사를 쓰고, 붙여넣고, 붙여넣기가 자리 잡으면 원본 클립보드를 복원해.
저장, 붙여넣기, 복원
1. 저장 = 현재 클립보드 내용 읽기 + 챙기기
2. 쓰기 = 전사를 클립보드에 넣기 (transient 표시)
3. 붙여넣기 = Cmd+V 합성
4. 정착 = 붙여넣기가 떨어지길 잠깐 기다리기
5. 복원 = 원본 내용 되돌리기
(그 사이 딴 게 썼으면 복원 건너뜀)
미묘함 둘이 이걸 안전하게 만들어. 가능한 곳에서 Firekeeper 의 클립보드 쓰기를 transient 로 표시해, 클립보드-히스토리 도구가 네 받아쓰기를 네가 복사한 것처럼 기록 안 하게. 그리고 복원 전에, 그 창에서 딴 게 클립보드에 안 썼는지 확인해 — 썼으면, 더 새 내용을 짓밟지 마. 방금 복사를 덮어쓰는 예의는 예의 없는 것보다 나빠.
보안-필드 선
이 춤 전체가 꺼지는 곳이 하나 있어: 보안 필드. 타깃이 비밀번호 필드면, Firekeeper 는 그 주위에서 클립보드를 절대 읽거나 복원 안 하고, 삽입을 아예 거부해. 보안 맥락 근처에서 클립보드를 읽거나, 전사를 거기 얹어두는 건 보이스 도구가 절대 하면 안 되는 딱 그런 동작이야. 타깃 캡처의 보안-필드 체크가 여기까지 쭉 흘러: 삽입만 막는 게 아니라 클립보드 처리도 막아.
공유 상태를 발견한 그대로 남겨. 기능이 유저도 쓰는 자원을 빌려야 할 때 — 클립보드, 최전면 창, 오디오 기기 — 저장-과-복원을 빚져. 잘 처신하는 도구의 척도는, 작동한 후에 그저 빌렸던 시스템 부분이 안 건드린 것과 구별 안 된다는 거야.