Projection 기본 개념

같은 문서 identity

Source에서 Page나 Kanban으로 전환해도 새 파일이 생기지 않는다. 현재 문서 경로와 identity를 유지한 채 renderer와 지원되는 작업 표면이 바뀐다.

project-board.md
  ├─ Source: Markdown 작성
  ├─ Kanban: H2/list 작업 보드
  └─ Hugo: 읽기용 Kanban 결과

세 종류의 상태

1. Markdown 원본

문서의 내용과 순서다. heading, list item, task marker, 표와 링크가 여기에 속한다.

2. Projection profile

보기 선택과 표현 설정이다. 예를 들어 Page의 카드 간격이나 Kanban의 밀도는 문서 본문과 분리해 저장된다. profile을 바꿔도 Markdown 문장이 자동으로 다시 쓰이지 않는다.

3. Session 보기 상태

검색어, 현재 선택, 확대·축소와 임시 filter처럼 작업 중에만 필요한 상태다. 일반적으로 publish 결과의 콘텐츠가 아니다.

Source-backed 편집

보기에서 편집할 수 있다는 것은 renderer의 DOM을 저장한다는 뜻이 아니다. Glif는 사용자의 의도를 Markdown 수준의 명령으로 낮춘다.

  • Page 카드 제목 변경 → 해당 H2 heading 변경
  • Kanban 카드 이동 → list/H3 source range 이동
  • Mindmap node 이름 변경 → 해당 heading text 변경
  • task toggle → Markdown의 [ ]/[x] marker 변경

정본 command가 안전한 source target을 찾지 못하면 변경을 거절해야 한다. 화면 모양만 보고 원문 위치를 추측해 쓰지 않는다.

보기 선택 저장

문서별 기본 보기는 Binder 또는 Scope 기준 .glif/projections.json에 상대 Markdown 경로와 함께 저장된다.

{
  "project-brief.md": "page",
  "project-board.md": "kanban",
  "project-structure.md": "mindmap"
}

이 파일은 Glif가 관리한다. 일반 사용자는 직접 수정하기보다 보기 선택기를 사용한다. Markdown front matter의 viewType은 현재 projection identity 경로가 아니다.

보기 선택기

Glif 문서 헤더에서 Page, Kanban, Timeline, Table, Chart와 Mindmap을 고르는 보기 선택기

Graph, Canvas와 PDF Template처럼 workspace 단위의 독립 surface는 문서 projection 선택기와 같은 범주로 보지 않는다.

viewType front matter를 사용하지 않는 이유

과거 문서에 viewType이 있어도 현재 보기 identity로 읽거나 다시 쓰지 않는다. 보기 선택은 Markdown metadata와 분리된 JSON projection state가 소유한다. 따라서 Page, Slide나 Diagram으로 전환한 뒤 Source를 확인했을 때 front matter에 새로운 viewType key가 생기지 않아야 한다.

보기 전환 전 Markdown 원문과 front matter

같은 원문으로 만든 Slide projection