History 타임라인과 기간별 변경 분포

History는 현재 Binder의 변경을 로컬 복구 지점으로 기록하고, 시간·경로·변경 유형을 기준으로 다시 찾는 화면이다. 타임라인은 백업 서비스가 아니며 이 장치에만 저장된다. 중요한 문서는 별도의 백업과 version control도 함께 사용한다.

기능 ID 기능 이 장의 실증 범위
VW-19 History timeline 최근 변경, 검색·필터, 문서 리비전 목록, side-by-side diff
VW-20 day/week/month grouping 같은 기록을 일·주·월 변경 분포로 전환하고 묶음만 바뀌는지 확인

준비된 예제

실증 시나리오는 2026년 5월, 7월, 8월에 해당하는 네 복구 지점을 만들어 여러 기간 묶음을 한 화면에서 확인한다. 공개 예제에는 생성된 로컬 History 저장소를 포함하지 않는다.

전체 상호작용 보기

영상은 최근 변경 → 변경 분포 → 일·주·월 전환 → 문서 리비전 diff의 실제 클릭 흐름을 보여 준다. 파란 원은 pointer 위치이며, 아래 caption은 그 시점의 검증 의도다.

1. History 열기

Launcher에서 History를 연다. 현재 Binder에 아직 복구 지점이 없으면 빈 상태가 표시된다. 문서를 저장하거나 수동 checkpoint를 만든 뒤 히스토리 새로고침을 누른다.

경로, 변경 유형, 시각과 로컬 복구 가능 범위를 보여 주는 최근 변경 화면

상단 상태 영역에서 다음을 구분한다.

  • 마지막 기록 시도가 복구 지점을 만들었는지, 변경 없음이었는지, 실패했는지
  • 이 장치에만 저장되며 백업이 아니라는 경계
  • 현재 관측된 복구 가능 시간 범위와 지점 수
  • repository 저장 크기와 보존 정책 관측 상태

자동 정리 정책이 확정되지 않은 상태에서는 보존 정책 관측 중(자동 정리 안 함)이 보일 수 있다. 이를 무제한 보존 약속으로 해석하지 않는다.

2. 최근 변경 검색과 필터

최근 변경 목록의 한 행은 파일 하나의 변경 사건이다.

표면 읽는 법
경로 또는 파일명 검색 현재 불러온 History 범위에서 경로·파일명 일치 항목 찾기
모든 변경 작성, 수정, 삭제, 이름 변경으로 제한
전체 기간 최근 1일, 7일, 30일로 제한
추가·삭제 줄 수 해당 변경의 규모를 빠르게 판단
이전 경로 이름 변경 전 파일 위치 확인

검색과 필터는 History를 삭제하거나 새 복구 지점을 만들지 않는다. 이전 기록 더 보기가 보이면 현재 화면에 모든 기록이 로드된 것은 아니므로 필요한 범위까지 불러온다.

3. 변경 분포를 일 단위로 보기

상단의 변경 분포를 누른 뒤 을 선택한다.

날짜별 열과 문서별 변경량을 보여 주는 일 단위 History 변경 분포

각 열은 날짜 묶음이고, 각 셀은 해당 문서의 변경 횟수 또는 추가·삭제 줄 수를 보여 준다. 폴더 행은 하위 문서를 합산하며 펼치고 접을 수 있다. 이미 삭제된 문서도 History에만 존재하는 행으로 남을 수 있다.

4. 주·월 단위로 묶기

는 월요일부터 일요일까지를 한 묶음으로 표시한다. 은 같은 연·월의 사건을 묶는다.

여러 달의 변경량을 월별 열로 묶은 History 변경 분포

기간 전환은 presentation만 바꾼다.

  • commit timestamp는 바뀌지 않는다.
  • 복구 지점과 파일 내용은 새로 생성되거나 합쳐지지 않는다.
  • 같은 사건이 선택한 기간 bucket으로 다시 배치된다.
  • 셀을 선택하면 그 기간·문서에 속한 실제 사건 목록으로 내려갈 수 있다.

1시간·4시간·12시간 묶음은 하루 안의 조밀한 작업을 볼 때 사용한다. VW-20의 필수 공개 예제는 일·주·월이지만 같은 원칙으로 동작한다.

5. 문서 리비전과 diff 열기

최근 변경의 01_release-brief.md 항목을 누르면 왼쪽에 날짜별 리비전, 가운데에 선택한 리비전과 현재 문서의 diff가 열린다.

2026년 7월 20일 리비전과 현재 문서의 status 및 checklist 차이를 보여 주는 side-by-side diff

  1. 왼쪽 날짜 묶음을 펼친다.
  2. 시각과 변경 유형이 표시된 리비전을 선택한다.
  3. 가운데에서 삭제된 내용과 추가된 내용을 비교한다.
  4. 필요한 경우 변경 hunk checkbox를 골라 일부만 적용하거나 거절 기록을 남긴다.
  5. 전체 리비전이 필요하면 복원, 원본을 유지하려면 사본으로 복원을 사용한다.

삭제 사건은 그 commit 직전 내용을 읽고, 이름 변경은 선택한 이전 경로에 맞는 내용을 읽는다. 리비전 내용이 더 이상 보존 범위에 없으면 빈 내용으로 꾸미지 않고 사용할 수 없다고 표시한다.

6. 안전하게 복원하기

복원은 단순 덮어쓰기가 아니다.

  1. 대상 문서에 저장하지 않은 편집, 외부 충돌, 외부 삭제가 없는지 확인한다.
  2. Glif가 복원 직전의 현재 상태를 필수 recovery point로 만든다.
  3. 선택한 리비전을 원본 경로 또는 사본 경로에 쓴다.
  4. 열린 문서라면 새 내용을 다시 불러온다.
  5. 복원 결과를 새 History 지점으로 기록한다.

History Home의 최근 복원 · 완료 영역에는 가능한 경우 되돌리기가 나타난다. 일부 파일만 처리됐거나 reload가 실패하면 일부 완료와 미복구 경로 수를 확인한다.

Binder 전체 복원은 문서 하나의 복원보다 범위가 크다. staging으로 대상 tree를 계획하고, 적용 전 journal과 rollback 지점을 만든 뒤 파일별 결과를 기록한다. 충돌 경로가 있으면 성공한 경로와 실패한 경로를 구분해 검토한다.

7. 키보드로 변경 분포 탐색

변경 분포 cell에 focus가 있을 때 방향키는 같은 행·열의 다음 실제 변경 cell로 이동한다. 빈 cell은 건너뛰며 행 끝에서 반대편으로 감기지 않는다.

  • Home / End: 현재 행의 처음·마지막 변경
  • Ctrl+Home / Ctrl+End: 전체 matrix의 처음·마지막 변경
  • Enter 또는 Space: 선택한 cell의 사건 목록 열기

문제 해결

증상 원인 후보 복구
최근 변경이 비어 있음 아직 checkpoint가 없거나 다른 Binder가 선택됨 문서를 저장하고 checkpoint 후 새로고침
찾는 기록이 없음 검색·유형·기간 필터 또는 pagination 필터 초기화 후 이전 기록 더 보기
복원 버튼이 비활성 리비전 내용 없음, dirty buffer, 외부 충돌 원문 상태를 먼저 정리하거나 사본 경로 사용
복원 후 일부 완료 reload 또는 일부 경로 적용 실패 미복구 경로와 최신 operation 상태 확인
오래된 기록이 사라짐 실제 보존 범위 밖 별도 백업·Git에서 복구; History를 무제한 백업으로 간주하지 않기

실증 결과와 경계

release candidate에서 네 복구 지점, 최근 변경, 일·주·월 전환, 문서 리비전 diff를 확인했다. 캡처 전후 공개 fixture의 hash는 같았으며 History repository는 장치의 로컬 shadow 저장소에만 생성됐다. 이 증거는 로컬 History와 복원 UX를 검증하지만 외부 backup, 여러 장치 동기화, 무제한 retention을 주장하지 않는다.