C.W.K.
Stream
Lesson 03 of 05 · published

Cmd+Z 한 번이 전체를 되돌려야 해

~10 min · undo, single-action, pasteboard, ux

Level 0불씨 없음
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"깔끔히 못 되돌리는 받아쓰기는 하기 무서운 받아쓰기야."

되돌리기는 제품의 일부

Firekeeper 가 텍스트를 문서에 떨구면, 바로 다음에 할 일이 후회일 수 있어 — 엉뚱한 창, 잘못 들은 문장, 마음 바뀜. 그 되돌리기 의 품질은 뒷생각이 아니라 진짜 기능이야. 목표는 단순하고 엄격해: 타깃 앱에서 Cmd+Z 한 번이 삽입 전체를 한 단계로 되돌려, 받아쓰기 직전 상태를 정확히 복원.

왜 단일-액션 삽입

되돌리기 품질은 어떻게 삽입하는지에서 곧장 떨어져. 단일 붙여넣기나 단일 접근성 교체는 타깃 앱에서 되돌릴 수 있는 액션 하나로 등록돼 — 그래서 Cmd+Z 한 번이 전부 무름. 문자 하나씩 삽입은 반대야: 합성된 각 키 입력이 자기만의 되돌리기 단계가 될 수 있어, 문장 하나 무르는 데 Cmd+Z 를 스무 번 두드리고, 어떤 앱은 예측 불가하게 합쳐. 이게 사다리가 가능한 곳마다 키 이벤트보다 붙여넣기와 AX 교체를 선호하는 구체적 이유야: 속도만이 아니라 되돌리기 온전함.

단일 붙여넣기 / AX 교체  ->  되돌리기 1단계   -> Cmd+Z 한 번이 이전 상태 복원
문자 하나씩              ->  되돌리기 N단계   -> Cmd+Z 두드리기, 예측 불가

# 고르는 삽입 방법이 곧 배포하는 되돌리기 경험이야.

의도된 예외

Firekeeper 가 일부러 더 나쁜 되돌리기를 받아들이는 곳이 딱 하나 있어: 터미널 프로파일. 긴 터미널 받아쓰기는 가끔 청크나 줄별로 삽입돼, 텍스트가 숨은 블록 하나로 도착하는 대신 보이고 편집 가능하게 남게. 청크 삽입은 되돌리기를 조각내 — 진짜 비용이야 — 근데 터미널에선, 실행 전에 보고 편집할 수 있는 능력이 깔끔한 단일 되돌리기보다 값어치 있어. 핵심은 그 트레이드오프가 골라지고 스코프됐다 는 거지 우연히 걸린 게 아냐: 터미널 프로파일 빼고 어디서나, 단일-액션 삽입이 되돌리기를 지켜.

액션의 메커니즘이 그 되돌리기의 품질을 정해. 연산을 한 단계로 되돌릴 수 있게 하려면, 작은 것들의 스트림이 아니라 원자적 액션 하나로 수행해. 되돌리기 온전함은 나중에 더하는 별도 기능이 아냐 — 애초에 변경을 어떻게 하기로 골랐는지에서 떨어지는 속성이야.
되돌리기-격하 트레이드오프를 명시적이고 좁게 만들어. 더 나쁜 되돌리기를 받아들여야 할 때(청크 터미널 삽입), 필요한 케이스에 정확히 가두고 이유를 알아. 이름 붙이고 스코프한 트레이드오프는 설계 결정이고; 같은 트레이드오프를 우연히 어디에나 적용하면 화난 유저 신고로 재발견할 버그야.

Code

원자적 삽입 선호; 골라진 곳에서만 청킹 받아들임·swift
// 기본: 원자적 액션 하나라 Cmd+Z 가 받아쓰기 전체를 무름.
func insertAtomic(_ text: String, into t: TargetSnapshot) async -> Bool {
    if t.category.axReliable { return await axReplace(text, in: t.focusedElement) }
    return await pasteInsert(text, into: t)   // 단일 붙여넣기 = 단일 되돌리기
}

// 터미널 프로파일만: 가시성 위해 청크/줄별,
// 먼저 보고 편집할 능력을 위해 깔끔한 되돌리기를 알면서 맞바꿈.
func insertTerminal(_ text: String, into t: TargetSnapshot) async {
    for line in text.split(whole: true) {
        await keyEventInsert(line, into: t)   // 되돌리기 조각냄 -- 여기선 받아들임
    }
    // 유저가 명시적으로 요청 안 하면 Enter 절대 자동으로 안 누름.
}

External links

Exercise

네 작업에 대량 변경을 하는 도구를 떠올려(찾기-바꾸기, 대량 가져오기, 자동 포매터). 되돌리기 한 번이 변경 전체를 무를까, 아니면 조각조각 무르나? 그 도구의 구현 선택이 그 되돌리기 경험을 어떻게 만들었는지 묘사하고 — 어느 게 도구를 더 신뢰하게 해?
Hint
단일 되돌리기 액션으로 등록되는 대량 연산은 안전하게 느껴져 — Cmd+Z 한 번이 구해주니 자유롭게 실험해. 되돌리기를 조각내는 건 조심하게 만들어, 되돌리기가 지루하고 불확실하니까. 신뢰 차이는 변경이 원자적 액션 하나로 됐는지 작은 것들의 스트림으로 됐는지로 곧장 거슬러 올라가.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.