Desktop과 Hugo 결과 비교
| 구분 | Desktop | Hugo publish | 확인 방법 |
|---|---|---|---|
| Markdown 내용 | 원본을 읽고 편집 | publish copy의 콘텐츠 근거 | Source와 게시 본문 비교 |
| 기본 보기 | .glif/projections.json에서 복원 |
지원 보기 renderer 선택에 사용 | 문서별 projection 확인 |
| source-backed 편집 | 보기별 지원 범위에서 가능 | 읽기 결과이므로 불가 | 편집 control 유무 확인 |
| 표현 profile | Info zone에서 저장 | 지원 필드 일부 materialize | 기본값과 변경값 비교 |
| 검색·선택·zoom | session/local 상태 | 일반적으로 비대상 | 새 브라우저에서 상태 확인 |
| 오류·diagnostic | 앱에서 원인과 복구 표시 | build 전 fail 또는 fallback 결과 | preview log와 결과 비교 |
완전한 parity가 아닌 이유
Desktop은 작성과 작업을 위한 interactive surface이고 Hugo는 배포된 정적 결과다. 두 표면은 같은 Markdown 의미와 지원되는 표현 token을 공유할 수 있지만, drag/drop이나 editor focus 같은 interaction state까지 같을 필요는 없다.
보기별 대표 차이
| 보기 | Desktop 전용 또는 로컬 상태 | Hugo에 남는 것 |
|---|---|---|
| Page | active editor, focus, 일부 visual 조합 | H2 카드와 지원 style |
| Kanban | drag, 검색, filter | H2/list board와 지원 badge/style |
| Mindmap | zoom, 검색, branch focus, 저장 관계선 | heading node tree |
| Timeline | 선택·편집 상태, snapshot action | Markdown-derived entry flow |
| Table | freeze, hidden, saved view | pipe table과 지원 static overlay |
| Chart | editor interaction, renderer 세부 상태 | bounded static chart |
| Calc | Desktop 계산 실행 | 미리 계산된 static transcript |
검증 순서
- Source에서 fixture revision을 고정한다.
- Desktop projection을 캡처한다.
- 지원되는 조작을 실행하고 원문 변화를 확인한다.
- 저장된 기본 보기와 profile을 확인한다.
- Glif에서 Hugo 로컬 미리보기를 만든다.
- 브라우저 결과를 같은 fixture와 비교한다.
- 차이를 결함, 의도된 Desktop-only 상태 또는 문서화할 제한으로 분류한다.
피해야 할 표현
- “Desktop과 웹이 완전히 똑같다”
- “모든 보기에서 모든 콘텐츠를 편집할 수 있다”
- “보기 설정이 Markdown front matter에 저장된다”
- “Hugo가 Calc를 브라우저에서 다시 계산한다”
- “Mindmap filter로 숨긴 node가 원문에서도 삭제된다”
실제 비교 체크
같은 문서를 Desktop과 Hugo에서 비교할 때는 화면의 모양보다 source와 계약을 먼저 고정한다.
- 예제 fixture를 복사하고
.glif를 삭제한 깨끗한 Scope에서 연다. - Source의 byte 또는 SHA-256과 파일 경로를 기록한다.
- Desktop에서 보기, mapping, 표현 설정을 바꾼다.
- 저장 후 Markdown byte가 바뀌었는지 확인한다. 바뀌었다면 source-backed 편집의 의도된 diff인지 검토한다.
- 새로고침과 앱 재실행 뒤 기본 보기와 profile이 복원되는지 확인한다.
- 같은 Scope를 Hugo publish copy로 materialize하고, 브라우저에서 제목·본문·표·fallback 설명을 확인한다.
- 두 결과의 차이를
source 의미,profile 표현,session 상태,renderer 제한네 범주로 분류한다.
상태별 기대 결과
| 상태 | Desktop에서 확인 | Hugo에서 확인 | 문서화 방법 |
|---|---|---|---|
| source-backed | 편집 후 원문 diff와 undo가 보임 | 변경된 Markdown이 결과에 반영됨 | 상세 장의 전후 이미지 |
| profile-backed | 재실행 후 보기·지원 표현 설정이 복원됨 | 지원된 필드만 정적 결과에 사용됨 | profile JSON과 결과 링크 |
| session-only | 검색·zoom·선택이 즉시 바뀌지만 원문은 그대로 | 새 페이지에서는 초기 상태 | “Desktop 전용” 표기 |
| unresolved/error | 원인과 원본 수정 경로가 표시됨 | 조용히 다른 입력으로 대체하지 않음 | 오류 fixture·복구 영상 |
| unsupported | 기능을 제공한다고 표시하지 않음 | fallback 또는 지원 범위 설명 | capability matrix와 release note |
게시 전 회귀 질문
- 같은 원문을 열었는데 Desktop의 저장된 source binding이 다른 파일로 바뀌지 않았는가?
- profile에 원문 row, 전체 editor state, 임시 canvas 데이터가 들어가지 않았는가?
- Hugo에 검색어·선택 node·drag 위치 같은 개인 session 상태가 사실처럼 남지 않았는가?
- interactive renderer가 없는 경우에도 독자가 원문 데이터와 제한을 읽을 수 있는가?
- 새 브라우저와 모바일 폭에서 이미지·영상·fallback 표가 가로로 넘치지 않는가?
상세 장의 캡처와 공개 evidence manifest는 위 질문의 실행 증거다. manifest의 verdict가 pass가 아니면 표의 “지원”을 공개 문구로 승격하지 않는다.