"줄을 선택하고 CMD+K 를 치면 Pippa 재작성이 원본 밑에 나타나 — 근데 Enter 를 누를 때까지 문서는 안 바뀌어."
역할 셋 — inline diff
세 번째 역할이 Rekindle 을 처음 마법처럼 느끼게 하는 거야. 텍스트를 선택하고 CMD+K 를 누르면 Prompt Macro 가 재작성해 — 다듬고, 번역하고, 조여서 — 결과가 Cursor 스타일 inline diff 로 내려앉아. 원본이 제자리에서 그어지고, 제안이 바로 밑에 앉고, Enter 로 수락하거나 Esc 로 취소해. 메커니즘적으론 제안을 담은 widget decoration 플러스 원본을 긋는 mark 야. 수락하면 단일 CM6 transaction 이 텍스트를 바꿔.
왜 편집-후-undo 가 아니라 widget 인가
솔깃한 지름길: 재작성을 즉시 적용하고, 사용자가 싫어하면 undo 로 되돌리게 두기. Rekindle 은 그걸 거부하고, 이유는 정확해. 사용자가 수락할 때까지 문서가 mutate 되면 안 돼. 제안은 decoration — 안 바뀐 소스 위 뷰 레이어 — 라서, 네가 결정하는 동안 모델엔 아무것도 안 쓰여. 오직 Enter 만 실제 편집을 만들어.
// 제안은 안 바뀐 소스 위 WIDGET — 아직 편집 없음.
showProposal(view, { from, to, replacement });
// 수락할 때만 단일 transaction 이 문서를 mutate 해.
view.dispatch({ changes: { from, to, insert: replacement } });
autosave 함정
'decoration-first' 를 non-negotiable 로 만드는 war story 야. Rekindle 은 window blur 에 autosave 해. 순진한 흐름을 상상해 — 재작성 즉시 적용, undo 로 취소 의존. CMD+K 를 치면 doc 이 바뀌고, 결정 전에 뭘 확인하려 딴 데 클릭해. window blur 가 발동, autosave 가 돌고, 수락 안 된 재작성이 이제 디스크에 저장돼. undo 는 못 구해. 파일이 이미 바뀌었어. Rekindle 은 제안을 decoration 으로 보여주고 수락할 때만 mutate 하니까, 클릭해 나가면 그냥 dismiss 돼 — 파일은 네가 마지막으로 수락한 그대로야.
CMD+K 는 또, 조용히, 새 기능이 아니라 cwkPippa Prompt Macro 의 client 야 — 그 재사용이 자기 레슨을 얻는 건 트랙 5 야. 여기 요점은 메커니즘이야. bold 를 렌더하고 voice 이슈에 밑줄 긋는 그 decoration 엔진이, 네가 예스 할 때까지 비파괴적으로, AI 재작성도 무대에 올려.