Markdown 프로젝션 뷰
Markdown 프로젝션 뷰
Glif는 하나의 Markdown 문서를 여러 프로젝션 뷰로 보여 줄 수 있다. 원본은 계속 .md 파일이고, 프로젝션 뷰는 자유형 조판 JSON이나 숨겨진 block 데이터를 만들지 않는다. 직접 수정이 지원되는 경우에도 Glif는 Markdown 원문을 다시 쓰며, 원문이 바뀐 상태이면 수정을 거절한다.
Hierarchy와 Mindmap처럼 workspace entry가 content와 info panel을 함께 여는 보기는 다른 content view로 전환할 때 자동으로 열린 info companion을 정리한다. 사용자가 직접 연 info utility는 자동 정리 대상이 아니다.
Page, Kanban, Timeline, Gallery, Chart, Gantt, Calc처럼 보기 제목/스타일을 조정하는 projection view의 info zone은 첫 섹션을 제목으로 두고 같은 compact preset row를 쓴다. Page background preset은 Slide와 같은 Cosmos/Cyber/Board 세트를 쓰고, Accent palette는 빠른 색상 3개와 전체 palette menu로 선택한다. Card radius/spacing/width처럼 숫자형 preset이 있는 항목은 지원 범위 안에서 직접 숫자를 입력할 수 있다. 이 설정은 보기 표현만 바꾸며 Markdown content/order authority를 바꾸지 않는다. 단, Web publish가 저장된 표현 설정을 그대로 materialize하는지는 view별로 다르며 아래 표를 따른다.
저장과 발행 범위
문서별 기본 보기 선택은 Glif가 관리하는 .glif/projections.json에 저장된다. 사용자가 Markdown frontmatter를 직접 수정할 필요는 없다.
일반 파일 복사는 Markdown만 복사하는 경로다. 프로젝션 보기 선택과 문서별 표현 설정까지 함께 복사하려면 Shelf의 Markdown 파일 context menu에서 Make by Copy / 복사해서 만들기를 사용한다. 이 명령은 새 Markdown 사본을 만들고 저장 보기와 profile-backed 설정을 새 문서에 맞게 복사한다.
Slide에 포함되는 보기모드와 Hugo-published Slide는 같은 의미 계약을 따른다. 지원되는 Markdown-derived content와 renderer-neutral 설정은 양쪽에서 같은 방식으로 표현하고, 지원되지 않는 상태는 원문 Markdown/fence fallback이나 diagnostic으로 남긴다. Desktop의 선택, 검색, 줌, lightbox, 스크롤 같은 세션 상태를 그대로 발행하는 것은 이 계약에 포함되지 않는다.
| View | 다시 열 때 기본 보기로 복원 | 보기 표현 설정 저장 | Web publish 출력 |
|---|---|---|---|
| Page | O | features.page.projection |
O, Markdown-derived Page renderer. 저장된 Page style 설정 중 카드 레이아웃/media split layout/제목/카드 chrome 일부와 Page Accordion 표시 프리셋은 publish 산출물에 반영된다. |
| Hierarchy | O | features.hierarchy.projection |
O, Markdown heading/bullet 계층 renderer와 계층도 reference/subtree materialization |
| Mindmap | O | features.mindmap.projection |
O, heading 기반 renderer. 저장 그룹/관계선은 publish 산출물로 materialize하지 않는다. |
| Kanban | O | features.kanban.projection |
O, Markdown board 기반 renderer. 저장된 Kanban style 설정 일부를 glif.kanban.projection으로 materialize한다. |
| Slide | O | features.slide.projection |
O, Glif slide renderer. 발행된 inline embedded Page/Kanban/Timeline/Gallery/Gantt block은 지원 범위 안에서 같은 Slide source document의 generated style config를 소비할 수 있다. |
| Table | O | 구조 표 style과 pipe table overlay | O, Markdown pipe table과 구조 표 projection을 Row + projected columns 행렬로 렌더링하고, merge/style/conditional formatting/annotation marker static overlay를 materialize한다. Freeze/hidden/saved views는 desktop view-state라 Hugo parity 대상이 아니다. |
| Chart | O | 보기 제목과 table-bound chart intent(type, X/series, source range, renderer-neutral series style, typed overlays) |
O, Markdown pipe table과 구조 표 projection 기반 bounded static chart. renderer 세부 옵션, copied dataset, desktop interaction state는 profile export 대상이 아니다. |
| Diagram | O | features.diagram.projection 보기 선택과 features.diagrams의 table/document source kind/mapping |
O, 원본 Markdown 표 또는 헤딩·불릿 데이터를 보존하는 accessible source-data fallback. Desktop flow diagram의 visual parity로 표기하지 않는다. |
| Relation | X | 저장하지 않음 | X. 현재는 데스크톱의 읽기 전용 Sequence/State view이며 publish/Slide 출력 대상이 아니다. |
| Gantt | O | features.gantt.projection |
O, H2/H3 heading task와 ISO-date Markdown table 기반 renderer. Markdown-derived progress, baseline, critical-path overlay와 저장된 scale/style 표현 설정은 Web publish, desktop Slide embedded Gantt, Hugo-published Slide embedded Gantt에 반영된다. Desktop Gantt는 현재 일정의 SVG/PNG static snapshot export도 지원한다. |
| Calc | O | features.calc.projection |
O, generated publish copy의 managed result/error lines를 재계산한 뒤 static transcript renderer로 출력한다. Hugo/browser는 계산하지 않는다. |
| Gallery | O | features.gallery.projection.style |
O, Markdown-derived Gallery renderer. 저장된 Gallery style 설정 일부는 glif.gallery.projection.style 전송 metadata로 materialize된다. Desktop Gallery의 diagnostics/search/lightbox/session state는 publish 대상이 아니다. |
| Timeline | O | features.timeline.projection.style |
O, Markdown-derived Timeline renderer. 저장된 Timeline style 설정 일부는 publish 산출물에 반영된다. Desktop Timeline은 현재 흐름의 SVG/PNG snapshot export도 지원한다. |
Accordion은 별도 저장 보기모드가 아니다. Page를 선택한 뒤 Page info zone에서 Cards / Accordion 표시 프리셋을 바꾸면 features.page.projection.displayMode = "accordion"으로 저장되고, Web publish도 glif_projection: page 경로에서 accessible accordion HTML로 materialize한다.
Slide view
Slide view 설정은 document projection profile의 features.slide.projection에 저장된다. Markdown frontmatter에 저장하지 않는다. mode: heading은 기본 source-preserving 모델이고, mode: delimiter는 명시적 호환/deck 모드다.
Hugo 발행 시 Glif는 publish-copy frontmatter에 glif_projection: slide, size, style, glif.slide.projection 같은 전송 메타데이터를 생성할 수 있다. glif_slide_mode: delimiter는 명시적 delimiter 모드나 legacy delimiter fallback을 위한 Hugo 전송 필드일 뿐이며, source document identity나 사용자가 Markdown에 직접 작성하는 설정 경로가 아니다.
Slide view는 Markdown 원문을 Glif가 직접 슬라이드로 렌더링한다. ---로 나뉜 기존 delimiter deck과 H2 섹션 기반 projection을 모두 읽지만, publish 출력은 별도 Marp HTML 변환이나 /slides/... iframe 산출물을 만들지 않고 glif_projection: slide 경로에서 렌더링한다.
Web Edition의 delimiter deck에서는 slide card를 끌어 앞/뒤로 옮길 수 있으며 결과 순서는 Markdown delimiter source에 저장된다. 버튼/키보드 대안은 유지된다. Web Slide는 canvas·overlay·cover profile, presentation/fullscreen, embedded view 11종, scoped custom CSS, standalone HTML과 Print/PDF를 제공한다. Provider publish와 native binary output은 Desktop authority다.
이 전환의 목적은 표현력 확장이다. 표, task list, page card, table/chart/gantt 같은 Glif 보기모드 요소를 이미지나 외부 deck 문법으로 납작하게 만들지 않고 슬라이드 표면 안에서 점진적으로 표현하기 위한 기반이다.
슬라이드 본문에서는 glif-view <mode> fenced block으로 보기모드 조각을 직접 넣을 수 있다. 현재 지원 모드는 mindmap, hierarchy, timeline, gallery, table, chart, diagram, gantt, kanban, page, calc이며, glif-table처럼 짧은 fence 이름도 같은 의미다. Glif 밖에서는 일반 코드 블록으로 남기 때문에 원문 호환성을 해치지 않는다.
이 모드들은 Desktop Slide와 Hugo-published Slide에서 같은 의미 계약을 가진다. 완전한 pixel parity나 desktop interaction 복제가 아니라, 같은 원문에서 파생한 내용, 지원되는 저장 설정, fallback, diagnostic이 서로 어긋나지 않는 것이 기준이다.
슬라이드에 기존 문서를 넣을 때는 Markdown 원문을 새 deck 문법으로 바꾸지 않는다. 단독 줄의 일반 Markdown 링크가 reference render mode를 가지고 있거나 단독 줄의 ![[문서]] wiki embed가 대상 문서의 저장 보기모드를 찾을 수 있으면, Slide view는 그 줄을 대상 문서의 glif-view <mode> 조각처럼 렌더링한다. 대상 문서를 읽을 수 없거나 지원되지 않는 보기모드이면 원래 링크나 embed Markdown으로 남는다. Hugo publish도 같은 materialization 규칙을 사용한다.
발행된 Slide 안의 inline embedded 보기모드 block은 mode별로 지원되는 generated style/config만 소비한다. 예를 들어 Page, Kanban, Timeline, Gallery, Gantt는 같은 Slide source document의 renderer-neutral projection config 중 지원 필드를 사용할 수 있고, Chart/Table/Calc/Hierarchy/Mindmap은 각 mode의 source-derived/static render contract를 따른다. 이 v1 경로는 host-level transport이며, 링크나 wiki embed로 들어온 target 문서의 profile을 block별로 함께 운반하지는 않는다.
```glif-view chart
| Quarter | Revenue |
| --- | ---: |
| Q1 | 10 |
| Q2 | 18 |
```Page view
Page view는 H2 카드 구조의 문서를 한 장짜리 브리핑 페이지처럼 보여 준다.
- 첫
# H1은 hero title이 된다. H1이 없으면 문서 제목을 hero title로 쓰고 자동 정렬에서는 가운데에 둔다. - H1이 있으면 H1 뒤, 첫 H2 앞의 텍스트는 subtitle이 된다.
- 각
## H2는 카드가 된다. - H2 앞의 이모지는 카드 아이콘으로 표시될 수 있다.
- H2 아래 첫 standalone Markdown 이미지는 카드 이미지로 표시될 수 있다.
- bullet, task, paragraph, H3 heading은 카드 내용이 된다. task는 카드 안에서 체크박스로 표시되고, 토글하면 Markdown의
[ ]/[x]마커만 다시 쓴다.
Page info zone은 제목 위치, 정렬, 굵게/밑줄/강조색/크게를 조합하는 제목 스타일, 카드 아이콘, 카드 열 수, 카드 간격, 카드 정렬, 카드 너비, 카드 라운드, 카드 배경, background preset, accent palette, Standard/Media split layout 같은 표현 설정만 관리한다. 카드 열 수, 간격, 너비, 라운드 프리셋의 마지막 칸에서는 숫자 값을 직접 입력할 수 있다. 카드 내용은 Markdown 밖에 저장하지 않는다. Web publish는 Page 내용을 Markdown-derived renderer로 출력하고, 저장된 features.page.projection style 중 카드 열 수/간격/정렬/너비/라운드, layout preset, 카드 아이콘 정책과 Lucide SVG fixed/auto icon, 제목 정렬/위치/강조, 카드 배경, background preset, accent palette는 generated glif.page.projection 전송 metadata를 통해 일부 반영한다. 발행된 Slide의 inline embedded Page block도 같은 Slide source document에서 generated Page style config가 있으면 이를 소비하지만, target 문서별 Page profile transport는 아직 지원하지 않는다.
Page는 Cards / Accordion 표시 프리셋도 가진다. Accordion preset은 같은 H2 카드 모델을 접고 펼칠 수 있는 panel로 렌더링하고, open policy, single/multiple open mode, density, panel style을 Page profile에 저장한다. Header 보기모드 셀렉터에는 별도 Accordion 항목을 만들지 않고, 이전 세션이나 legacy state가 accordion이면 Page + displayMode = "accordion"으로 해석한다. Web publish는 glif_projection: page를 유지하면서 Page Accordion을 materialize한다. Desktop과 Web publish는 background/card/accent/width/radius/density/panel-style의 핵심 Accordion 토큰을 맞추지만, 모든 Page style 조합의 완전한 시각 parity를 보장하지는 않는다. 기본값과 다른 Page style 설정이 있으면 Web publish에 반영되는 지원 필드와 아직 검증 중인 native visual QA 및 target 문서별 Slide embedded Page profile transport 범위를 구분하기 위해 publish materialization diagnostics에 projection-style-partial-fidelity가 남을 수 있다.
Cards 표시에서는 Standard / Media split layout preset을 선택할 수 있다. Media split은 각 H2 section 아래의 첫 standalone Markdown 이미지를 lead media로 한 번만 사용하고, 같은 카드의 텍스트를 별도 column으로 배치한다. 이미지가 없는 section은 기존 standard card layout으로 돌아가며, Accordion 표시에서는 layout preset이 렌더링에 영향을 주지 않는다. Web publish도 glif.page.projection.layoutPreset = "mediaSplit"을 읽어 Page renderer에서 같은 source-derived media split을 materialize한다.
Page/Desk의 Hero 블록은 선택적으로 mediaGroup과 stickyTransitionGroup을 가진다. mediaGroup에는 이미지, GIF, 비디오 source와 비디오 poster를 넣을 수 있고, local/app resource는 Web publish 전에 /glif-resources/...로 복사되어 public URL로 바뀐다. Sticky media hero를 켜면 editor preview는 축소된 정적 상태와 안내 문구를 보여 주며, Web publish는 지원 브라우저에서 스크롤에 맞춰 media hero를 sticky bar로 정리한다. reduced-motion 환경이나 스크롤 애니메이션/JS fallback을 사용할 수 없는 환경에서는 축소된 정적 상태로 남고, 비디오 autoplay는 사용하지 않는다.
Kanban view
Kanban view는 H2 섹션을 컬럼으로, 그 아래의 list item 또는 H3 heading 카드를 작업 카드로 보여 준다.
- 카드 검색, 완료 숨김 필터, 아카이브 컬럼 숨김, compact/comfortable 밀도는 로컬 보기 제어다. Markdown 원문이나 숨겨진 task 데이터를 만들지 않는다.
- 각 카드는 원문 줄로 돌아가는 source action을 제공한다.
- 지원되는 카드와 H2 컬럼은 제목/본문 편집, 추가, 이동, 삭제를 source-backed command로 수행한다.
- 로컬 필터 때문에 숨은 카드나 컬럼이 있으면, 잘못된 source target을 만들지 않도록 재정렬 affordance는 비활성화된다.
- H2 컬럼 제목 끝에
[wip:N]을 붙이면 해당 컬럼의 WIP limit으로 해석한다. Kanban board, Slide embedded Kanban, Web publish Kanban은 표시 제목에서 이 suffix를 숨기고 카드 수가 limit을 넘으면 초과 상태를 표시한다. Kanban 컬럼 편집 UI에서는 WIP limit을 전용 입력으로 수정하거나 지울 수 있고, 제목에 raw[wip:N]suffix를 직접 입력하는 충돌 경로는 막는다. - 카드 제목 끝에
[owner:...],[priority:P0]부터[priority:P3],[due:YYYY-MM-DD],[stale:YYYY-MM-DD],[label:...]suffix를 붙이면 Kanban board, Slide embedded Kanban, Web publish Kanban이 이를 카드 badge로 표시한다. suffix는 제목 끝의 연속 토큰일 때만 metadata로 읽고, 본문이나 제목 중간의 대괄호 텍스트는 일반 Markdown 텍스트로 둔다. due/stale 값은 실제 calendar date여야 한다. due date가 현재 로컬 날짜보다 과거이면 같은 source metadata에서 read-only overdue badge가 파생된다. Kanban 카드 편집 UI에서는 owner, priority, due, stale, labels를 직접 수정하거나 지울 수 있고, source command가 Markdown suffix를 갱신한다.
Kanban info zone은 컬럼/카드/필터 같은 보드 구조 요약과 함께 WIP 초과 컬럼, due/overdue 카드, explicit stale 카드 수를 보여 준다. board density, card style, card radius, accent palette, column accent, title style 설정은 보기 표현만 관리한다. Web publish는 Kanban 내용을 Markdown-derived board renderer로 출력하고, 기본값과 다른 features.kanban.projection style 설정은 generated glif.kanban.projection 전송 metadata를 통해 일부 반영한다. 반영 범위는 board density, card style/radius, accent palette, column accent, title alignment/position/emphasis다. published Slide 안의 inline embedded glif-view kanban / glif-kanban block도 같은 source 문서의 generated Kanban style config가 있으면 이를 소비하고, 없으면 source-derived/default style block으로 렌더된다.
Timeline view
Timeline view는 H2 섹션을 세로 흐름으로 보여 준다.
-
version 또는 date 형식의 H2 heading은 history entry로 표시된다.
-
version/date H2가 없으면 같은 H2 섹션을 steps 모드로 표시하고, 번호는 시각 표현으로만 붙인다.
-
H3 heading, paragraph, bullet, task는 entry content가 된다.
-
entry 안의
Date: YYYY-MM-DD줄은 선택적 시간 metadata로 읽을 수 있다. 기본값에서는 본문으로 그대로 보이고, Timeline info zone에서Time을 켜면 date chip, elapsed day gap, clustered indicator 같은 opt-in 시간 신호를 표시한다.Time: Compact는 같은 시간 신호에 월 단위 period boundary label과 compact density marker를 더하지만 rail/card 간격은 날짜 차이에 비례시키지 않는다.Date line: Hide는 chip이 보일 때 exact source echo만 숨기며 Markdown 원문과 duplicate body text는 보존한다.Time: Off이면 Date line 설정은 렌더에 영향을 주지 않는다. -
Storypreset은 entry 안의 첫 standalone Markdown 이미지를 lead media로 보여 줄 수 있다. 기본Standardpreset에서는 image Markdown이 본문 item으로 남는다.
지원되는 entry 제목, section 제목, body text는 카드 선택 후 텍스트 표면에서 직접 수정할 수 있고, task checkbox toggle과 H2 entry 재정렬은 Markdown 원문을 다시 쓰는 source-backed command로 처리된다. Timeline snapshot은 현재 Markdown-derived projection을 SVG/PNG 산출물로 복사하거나 저장하는 output-only action이며 Markdown 원문, document projection profile, publish semantics를 바꾸지 않는다. Web publish와 Slide embedded Timeline은 같은 Markdown-derived Timeline 모델을 사용하며, 저장된 Timeline style 설정 일부를 publish 산출물에 반영한다.
Page Accordion preset
Page Accordion preset은 H2 섹션을 접고 펼칠 수 있는 panel로 보여 준다. FAQ만을 위한 뷰가 아니라 troubleshooting, policy, glossary, meeting notes처럼 긴 섹션 문서에도 쓸 수 있다.
지원되는 수정은 Page/H2 source command가 증명하는 범위로 제한된다. Panel title 변경, 지원되는 body line 수정, task checkbox toggle, 인접 H2 section 이동, panel 삭제는 Markdown 원문을 다시 쓰고, task toggle은 Markdown의 [ ] / [x] 마커만 바꾼다. 새 H2 section 추가는 아직 Page command로 닫히지 않았으므로 Accordion preset의 기본 기능으로 설명하지 않는다. Fenced code와 복잡한 nested Markdown은 source editor에서 수정하며, code block과 code badge는 원문 줄 action으로 source editor에 바로 연결한다.
Accordion preset은 panel search/filter, 검색 결과 발췌, no-result clear action, panel permalink/deep link, sticky outline, panel metadata badge를 제공한다. 닫힌 panel body는 필요할 때만 mount해 큰 FAQ/runbook 문서에서도 렌더 비용을 낮춘다.
Gallery view
Gallery view는 여러 standalone Markdown 이미지가 있는 H2 섹션을 album처럼 보여 준다. Markdown 안의 H2 순서가 album 순서이고, 각 H2 아래의 standalone image line 순서가 album 안 이미지 순서다.
- Album mode는 선택된 이미지를 main viewer로 보여 주고, thumbnail 버튼과 previous/next 버튼으로 같은 album 안에서 이동한다.
- Overview mode는 문서 안 album과 이미지를 source order contact sheet로 훑게 해 준다. Empty album도 숨기지 않고, 각 tile은 source line으로 돌아가거나 lightbox를 열 수 있다.
- Lightbox는 keyboard navigation,
Escapeclose, focus return, zoom in/out/reset, zoom된 이미지 pan, source line action, stable loading/error state를 제공한다. gallery-info는 missing alt/title, 같은 album 안 duplicate semantic key, album 간 duplicate semantic key, empty album, runtime image-load issue를 보여 주고, album title/image alt/title/source path를 현재 문서 안에서 검색한다.- Duplicate diagnostic에서는 중복 후보 source line을 열거나, 확인 후 선택한 duplicate image line 하나를 Markdown에서 삭제할 수 있다. 이 동작은 물리
Resources파일을 삭제하지 않는다.
Gallery view는 이미지를 업로드하거나 gallery JSON을 저장하지 않는다. 대표 이미지 지정은 숨은 cover flag가 아니라 해당 image line을 album의 첫 이미지 위치로 옮기는 Markdown reorder다. Search는 matching album/image를 Desktop Gallery 화면에서 하이라이트할 수 있지만 이미지를 숨기거나 재정렬하지 않는다. features.gallery.projection.style에는 보기 표현 설정과 album/overview layout mode만 저장되며, search query, diagnostics, selected image, highlight, zoom/pan, resolved URL, dimension/error cache는 저장하지 않는다.
Slide에서는 glif-view gallery 또는 glif-gallery fenced block으로 Gallery 조각을 넣을 수 있다. Web publish는 glif_projection: gallery 경로에서 같은 Markdown-derived Gallery renderer를 사용한다. Publish copy는 glif.gallery.projection.style 전송 metadata로 card/title/thumbnail/viewer fit/layout style 일부를 반영할 수 있지만, Desktop Gallery의 diagnostics/search/lightbox/session state나 physical resource cleanup 결과를 materialize하지 않는다.
Mindmap view
Mindmap view는 Markdown heading 구조를 노드와 가지로 보여 준다. 노드를 한 번 클릭하면 선택되고, 선택된 노드를 다시 클릭하거나 F2를 누르면 노드 이름을 바로 편집한다. Ctrl/Cmd+click은 해당 heading의 source line을 연다. 노드 이름 변경, 자식/형제 추가, 들여쓰기/내어쓰기, 이동, 삭제는 Markdown heading source를 다시 쓰는 명령으로 수행된다.
선택 노드 조작은 캔버스의 floating action surface에서 수행한다. 여러 heading을 묶는 시각 그룹, 현재 검색/초점/확대/접기 상태를 저장하는 보기, 두 heading 사이의 관계선은 Markdown 원문을 바꾸지 않는 문서별 projection metadata로 저장된다. 이 metadata는 현재 Markdown heading으로 다시 해석되며, heading 본문·순서·수준은 계속 .md 파일이 원본이다. 마인드맵 렌더링 기본값과 상세 간격/노드 크기 설정은 별도 mindmap 설정에 남고, publish 출력은 profile-backed 그룹/저장 보기/관계선을 별도 산출물로 materialize하지 않는다.
Hierarchy view
Hierarchy view는 Markdown heading과 직접 bullet을 계층 트리로 검토하는 보기다. 기본적으로 문서의 H1/H2/H3 흐름과 각 heading 아래의 직접 bullet을 위아래 계층으로 보여 주며, 접힌 행은 숨겨진 하위 행 수를 함께 표시한다. Info zone은 표시 행 수, 부속 항목 수, heading 수, 계층 깊이, 진단을 요약하고 선택 항목의 source line, 상위 항목, 분류를 보여 준다.
Hierarchy의 시각화 유형에서는 같은 heading/bullet 원본을 Treemap, Sunburst, Icicle로 볼 수 있다. leaf weight는 1, parent weight는 descendant 합으로 파생되며 renderer tree는 저장하지 않는다. Desktop은 600개 node까지만 그려 브라우저 정지를 막고, 초과하면 표시하지 않은 node 수를 화면과 접근성 설명에 함께 알린다. Slide/Hugo/static 출력은 같은 원본의 읽기 가능한 hierarchy outline을 fallback으로 유지한다.
Tree mode가 계층도 작업의 기본 surface다. Chart mode는 같은 계층을 조직도나 발표용 배치로 공유할 때 쓰는 display mode이며, organization preset으로 시작한 계층도만 chart를 첫 화면으로 둔다. 두 mode 모두 Markdown 원문을 정본으로 사용하고, 보기 설정은 document projection profile의 features.hierarchy.projection에 저장된다.
Web Edition도 Tree, Column, Table, Scrivenings와 Chart를 제공한다. Column은 desktop과 같은 계층 column model과 방향키 탐색 규칙을 사용한다. Table은 같은 structure lens의 title/kind/synopsis/order/line/children 정보를 비교하고, Scrivenings는 heading section을 연속해서 읽고 stale-safe하게 Markdown section을 저장한다. 같은 폴더 Markdown과 Web Cart 문서·heading collection을 연속 검토할 수 있다. Chart는 순수 layout model에서 SVG 연결선과 접근 가능한 DOM card를 만들고 pan/zoom/fit 및 SVG/PNG export를 제공한다. 선택한 mode와 renderer style은 Desktop-compatible portable profile에 저장된다.
Table mode에서 계획 순서 편집을 명시적으로 열면 행을 끌거나 화살표 버튼으로 임시 순서 제안을 만들 수 있다. 이 제안은 document projection profile에만 저장되며 Markdown 순서나 publish output을 자동으로 바꾸지 않는다. 검토 뒤 계획 순서를 원문에 적용해야 지원되는 sibling group만 source-safe하게 반영되고, 지원되지 않는 혼합·root·stale 재배열은 적용하지 않는다. 원문 저장이 성공하면 임시 제안은 비워지고, 실패하면 복구와 재검토를 위해 유지된다.
계층도에서는 선택한 heading의 링크를 복사하거나 선택한 subtree를 참조로 삽입할 수 있다. 현재 tree/chart 스냅샷은 SVG 또는 PNG로 복사/저장할 수 있으며, 내보내기 결과는 출력 산출물일 뿐 계층도 전용 JSON이나 renderer-owned 상태를 만들지 않는다. Subtree reference 삽입은 Markdown reference와 document projection profile의 reference render intent를 함께 저장하고, profile 저장이 막히면 원문 삽입도 중단된다.
Slide embed나 Web publish에서 계층도 reference가 displayMode: "chart"로 명시되면 Glif는 live workspace를 캡처하지 않고 정적 chart SVG로 렌더링한다. glif-view hierarchy는 계속 tree 기본값이고, glif-view hierarchy chart 또는 reference profile의 chart display mode가 있을 때만 chart reference로 열린다. chart가 80개 card를 넘거나 bounds/aspect guard를 넘으면 publish/slide 출력은 읽기 가능한 tree fallback과 diagnostic을 남긴다.
Table view
Table view는 기존 Markdown pipe table을 모아 보는 화면이 아니라, heading 구조와 지원되는 bullet row를 표처럼 보여 주는 구조 projection이다.
- H1은 열로 쓰지 않는다. H1을 제외한 heading 빈도를 보고 column heading level과 row heading level을 결정한다. 일반적인
## H2/### H3문서는 이전처럼 열/행으로 동작한다. - column heading 아래의 다음 heading level은 행 제목이 되고, 그 아래 본문은 해당 열/행의 셀 내용이 된다.
- column heading 바로 아래의
* Price: $10같은key: valuebullet은 named row가 된다. 콜론 주변 공백은 무시된다. - column heading 바로 아래의
* $10같은 값-only bullet은 positional row가 되고, 다른 열의 named row 순서에 맞춰 매핑된다. - 열마다 heading row, named bullet row, positional bullet row 중 하나의 표현을 쓸 수 있지만 한 열 안에서 표현을 섞으면 Glif는 추측해서 합치지 않고 충돌을 표시한다.
- 어떤 열에 행 제목이나 bullet item이 없으면 빈 셀로 보이고, 그 셀을 편집할 때 해당 열의 row 표현 방식에 맞는 heading block 또는 bullet line이 Markdown 원문에 만들어진다.
지원되는 수정은 셀 내용 편집, 행/열 추가, 행/열 이름 변경, 행/열 삭제처럼 원문 위치가 확정되는 명령으로 제한된다. 문서 제목과 열/행 수는 테이블 위에 인라인으로 표시되고, 행 추가는 테이블 하단 ghost row에서, 열 추가는 우측 ghost column에서 입력한다. 헤더의 이동·이름 변경·삭제 아이콘은 hover 또는 focus 상태에서만 나타난다. 행 이동은 영향을 받는 모든 열에서 인접한 실제 row block 또는 bullet line이 있을 때만 활성화되고, 열 이동은 인접 column heading section을 다시 쓴다. 좌상단 코너 버튼이나 Ctrl/⌘+A로 전체 셀을 선택하고, 행/열 헤더를 클릭하면 전체 행/열 범위를 선택한다. 셀 포커스 상태에서는 Shift+Space로 행, Ctrl/⌘+Space로 열, Ctrl/⌘+Shift+Space로 전체 셀을 선택한다. 행/열/전체 선택 헤더를 우클릭하면 같은 범위 메뉴에서 복사, 붙여넣기, 채우기, 지우기를 수행한다. 단일 전체 행이나 열 선택에서는 같은 메뉴에서 행/열 삭제도 실행할 수 있으며, 내용이 있으면 삭제 확인을 거친다. 선택 후에는 선택 범위의 셀로 포커스가 이어져 키보드 복사·잘라내기·지우기를 바로 사용할 수 있다. 각 열 헤더의 우측 쉐브론 드롭다운은 오름차순/내림차순 정렬, 값 필터, 빈 값/값 있음 및 typed 스키마 빠른 필터를 함께 제공하며, 표시 row만 줄이거나 재배열하는 보기 제어이므로 Markdown 원문을 바꾸지 않는다. 필터, 정렬, 숨김 행/열이 켜져 있을 때는 숨은 row나 재정렬된 row까지 잘못 바뀌지 않도록 여러 행 변경, 전체 열 선택, 전체 표 선택은 필터/정렬/숨김 상태를 지운 뒤 사용할 수 있다. 행/열 헤더 컨텍스트 메뉴에서 행이나 열을 숨기면 Markdown 원문은 바뀌지 않고 projection profile의 보기 변환으로 저장되며, 상단 chip, 표 edge reveal rail, Table Settings에서 다시 표시할 수 있다. 열 헤더의 resize handle을 드래그하면 해당 열의 profile-backed 너비를 조절한다. 셀은 기본적으로 compact read mode로 보이고, 빈 셀은 이탤릭 힌트로 표시되며, 클릭하거나 Enter/F2를 누르면 편집한다. Tab, 셀 경계 방향키, Alt+Arrow로 인접 셀에 이동할 수 있고, Escape로 편집을 취소하거나 Ctrl/⌘+Enter/blur로 저장한다. 원문이 먼저 바뀐 경우에는 테이블 안에 오류와 원문 줄 이동 버튼을 표시하고 자동으로 원문 탭으로 이동하지 않는다. 현재 구조 표는 전체 TSV/CSV 복사, 선택 범위 TSV/CSV 복사, 셀 포커스 상태의 Ctrl/⌘+C TSV 복사와 Ctrl/⌘+X TSV 잘라내기, Ctrl/⌘+D 아래로 채우기, Ctrl/⌘+R 오른쪽으로 채우기, 복사한 단일 셀을 더 큰 선택 범위 전체에 붙여넣기, 직사각형 TSV/CSV 붙여넣기, 붙여넣기 시 필요한 뒤쪽 행/열 자동 확장(단, bullet row table에서 새 row가 필요한 확장은 안전하게 차단), 선택 범위 지우기를 지원한다. 덮이는 셀이 비어 있는 선택 범위는 컨텍스트 메뉴에서 바로 병합하거나 병합 해제할 수 있다. 값이 있는 범위를 병합할 때는 내용을 기준 셀에 합치거나 기준 셀 외 내용을 비운 뒤 병합하며, 이 병합 표시는 profile에 저장된다. 셀에 =SUM(A1:B2)처럼 입력하면 수식 원문을 Markdown 셀 값으로 저장하고, 읽기 모드와 내보내기에서는 지원되는 계산 결과를 표시한다. 수식 입력 중에는 함수 자동완성과 방향키/Shift+Arrow 기반 범위 선택을 지원한다.
빈 문서도 Table view로 진입할 수 있으며, Info zone의 Table Settings(table-info)에서 6 x 5처럼 크기를 입력하거나 크기 그리드를 드래그해 시작 표를 만들 수 있다. Table Settings는 구조 표 생성, 연결 상태, 제목 위치/정렬/강조, 밀도/정렬/기본 열 너비/열별 너비/줄무늬 행/숨김 행·열/열 스키마 메타데이터/셀 병합 표시 설정, 선택 셀 서식, 저장된 보기, 미지원 액션 reason을 맡는다. 구조 표의 제목 위치/정렬/강조, 밀도, 정렬, 기본 열 너비, 열별 너비, 줄무늬 행, 숨김 행·열, 열 스키마(type, emptyPolicy, format), 셀 병합 표시, 선택 셀 서식은 가능한 경우 문서 projection profile의 features.table.projection.style에 저장되고, Markdown 원문은 바꾸지 않는다. 저장된 보기는 현재 필터/정렬/고정/숨김 행·열/열 스키마 조합을 같은 profile 안의 savedViews에 저장하고 다시 적용한다. 구조 표는 수천 셀 규모에서도 고정 헤더/첫 열, 필터, 정렬 기본 조작을 유지하도록 검증하며, 수만 셀 가상화는 별도 후속 범위다. 열 스키마와 맞지 않는 필수값/타입 셀은 표 안에서 조용한 경고 신호로 표시되고 Table Settings 요약과 source health에 집계된다. number/date/checkbox 열 스키마는 열 헤더 필터 후보 순서, view-only 정렬 비교, CSV/TSV 복사와 내보내기의 canonical 값에도 쓰이며, number/date/checkbox/link/tag typed 스키마는 빠른 필터 프리셋에 쓰인다. typed 스키마의 format은 읽기 모드 표시 포맷에도 쓰인다. 선택한 셀 범위에는 채움, 글자색, 정렬, 굵기, 글자 크기를 적용하거나 지울 수 있다. 활성 열에는 값 조건 기반 조건부 서식 규칙을 둘 수 있고, 선택 셀에는 profile-backed note/source reference annotation을 남길 수 있다. 문서 안에서 Markdown pipe table을 선택하면 같은 Table Settings 안에 선택한 Markdown 표 섹션이 추가되어 폭, 줄무늬, 정렬, 병합, 차트 설정을 다룬다. 이 선택 표 섹션은 선택된 pipe table에만 적용되고, pipe table block overlay는 별도 features.tables.<blockId>.presentation 계약을 쓴다. Table Settings의 입출력 섹션에서는 구조 표와 선택한 Markdown pipe table을 UTF-8 CSV/TSV 또는 bounded XLSX 파일로 저장할 수 있고, 구조 표에는 CSV/TSV 파일과 첫 시트 XLSX 파일을 source-safe하게 가져올 수 있다. 구조 표 기반 차트는 Chart view에서 Row + projected columns 형태의 table source로 표시되고 Chart Settings의 profile 저장 경로를 사용한다. 더 풍부한 multi-sheet/style/formula XLSX roundtrip, 비연속 구조 범위 차트, 수만 셀 가상화는 후속 범위다. 클립보드 CSV/TSV 복사와 붙여넣기는 파일 내보내기와 별개로 지원된다. 일반 Markdown pipe table 편집과 표 기반 차트는 선택 표 섹션과 차트 view 경로의 별도 source adapter를 쓴다.
Web Edition의 Markdown Table view도 click/Shift+click 직사각형 선택, Ctrl/⌘+click 비연속 선택, 표시상 merge/unmerge, TSV clipboard와 XLSX/CSV/TSV 파일 입출력을 제공한다. 비연속 선택을 복사하면 경계 사각형 안의 미선택 셀은 빈 값으로 유지되고 병합은 연속 범위에서만 허용된다. Structure Table은 행·열·전체 선택, TSV/CSV 복사, 잘라내기·붙여넣기·지우기와 아래/오른쪽 채우기를 toolbar와 키보드로 제공한다. density, zebra, alignment, 기본 열 너비, 헤더/첫 열 고정, 행·열 숨김, typed column schema, 선택 셀 서식·주석, 조건부 서식과 저장된 보기는 Desktop-compatible portable profile에 저장된다. 선택 열 exact-value filter와 schema-aware sort는 원문 좌표를 유지하는 view transform이며 저장된 보기로 복원할 수 있다. merge는 browser workspace의 table presentation에 저장되고, source command와 paste/import, cell edit만 Markdown 원문을 변경한다. offscreen row 렌더는 지연하며 수만 셀 virtualization은 Desktop과 같이 측정 trigger가 생길 때 여는 v2 범위다.
Slide embed와 Web publish의 Table 출력은 Markdown pipe table뿐 아니라 구조 표 projection도 Row + projected columns 행렬로 materialize한다. 병합 표시, 셀 서식, 조건부 서식, 주석 marker는 Hugo/Slide static overlay materialization으로 지원한다. 반대로 freeze header/first column, 숨김 행·열, 저장된 보기는 desktop Table view의 viewport/view-state affordance라 Hugo parity 요구가 아니다.
Chart view
Chart view는 숫자 열이 있는 Markdown pipe table을 차트 카드로 보여 준다. 한 표는 한 차트 카드가 되고, 첫 비숫자 열을 X축 후보로, 숫자 열을 값 series 후보로 사용한다.
Chart Settings info zone에서는 보기 제목의 위치/정렬/강조를 조정하고, 선택한 차트 카드의 막대/선/면/분산/원형/레이더/히트맵뿐 아니라 Funnel, Streamgraph, Marimekko 유형과 X 열, 값 series 열을 바꿀 수 있다. Funnel은 단계별 감소, Streamgraph는 시간에 따른 구성 변화, Marimekko는 category 전체 크기와 내부 series 비중을 함께 비교할 때 쓴다. Marimekko 범례는 series별 표시를 제어한다. 또한 source series key 기준의 renderer-neutral series style(colorToken, stack group, primary/secondary axis)과 typed insight overlay(숫자 reference line, 지원되는 cartesian chart의 linear trendline)를 설정할 수 있다. 제목 설정은 차트 보기 자체의 표현 설정으로, 카드별 차트 설정은 Markdown 표 값을 복사하지 않는 문서별 projection profile의 차트 intent로 저장된다. 원본 표의 행, 열, 값은 계속 .md 파일의 pipe table이 원본이다. 표 셀에 지원되는 수식이 있으면 Chart, Slide, Web publish의 읽기 출력은 계산된 표시값을 사용한다.
Web Edition의 편집 Chart도 desktop과 같은 15종 ECharts option builder를 사용하고 X/series 및 series별 color token, primary/secondary axis, stack group을 제공한다. reference line과 linear trendline typed overlay를 편집하고 SVG/2x PNG artifact를 내보낼 수 있다. Web에서 바꾼 표현 설정은 현재 origin의 문서별 durable browser profile에 저장되며 Markdown 원문이나 desktop Document Projection Profile을 덮어쓰지 않는다. 계정 간 profile 동기화는 후속 범위다.
Web publish와 Slide embedded Chart는 저장된 chart type, X/series intent, source range metadata, title style 일부, renderer-neutral series style, typed overlay metadata를 generated static chart config로 받아 bounded SVG chart를 렌더링한다. Static output은 80 rows / 8 series cap을 가진 정적 publish/slide 표현이며, Desktop ECharts의 tooltip, zoom, brush 같은 런타임 상호작용, 모든 축/라벨 배치의 완전한 시각 동일성, freeform annotation drawing, chart image/artifact export를 보장하지 않는다.
표가 숫자 열을 잃거나 선택한 열을 더 이상 차트로 만들 수 없으면 Glif는 잘못된 차트를 추측해 만들지 않고 기본 감지나 오류 상태로 되돌린다. 차트 데이터 정정은 원문 표에서 수행한다. Header/source drift에 대한 후보 컬럼 재결속은 별도 table-family binding policy가 열릴 때까지 자동으로 수행하지 않는다.
Diagram view
Diagram view는 관계와 흐름을 설명하는 Markdown pipe table 또는 H2·직접 불릿 문서를
Sankey, Alluvial, Parallel Sets로
보여 준다. Header에서는 Chart와 같은 View menu level의 별도 surface이며, 세 유형과 데이터
원본·매핑은 Diagram Settings에서 고른다. 본문은 현재 유형과 결과 요약, 시각화, 접근 가능한 데이터,
원본에서 보기에 집중한다.
- Sankey는
Source,Target,Valueedge-list를 사용한다. 같은 edge는 합산하고 self-loop, cycle, 0 이하이거나 숫자가 아닌 값은 잘못된 흐름을 추측하지 않고 차단한다. - Alluvial과 Parallel Sets는 순서가 있는 2~8개 category column과 선택적인
Weightcolumn을 사용한다. Alluvial은 stage 사이 cohort 이동을, Parallel Sets는 categorical dimension 조합을 설명한다. - 표 없이 문서를 바로 Sankey로 보려면 각 참여 H2를 출발점으로 두고 바로 아래에
- 도착점: 양수형식의 불릿을 2개 이상 작성한다. 같은 출발·도착 흐름은 합산되며, 각 원본 불릿 줄은 접근 가능한 데이터에서 따로 열 수 있다. - 문서를 Alluvial 또는 Parallel Sets로 보려면 각 H2를 레코드로 두고 바로 아래에
- 단계: 범주속성을 같은 이름과 순서로 2~8개 작성한다. 선택적인- Weight: 양수는 모든 레코드의 마지막 속성에 함께 쓰거나 모두 생략한다. - Diagram Settings에서 원본 표와 source/target/value 또는 stage/weight mapping을 선택할 수
있다. 문서 원본에서는 표·열 selector 대신 적용 중인 strict 문법, 섹션/흐름 또는
레코드/단계 수를 보여 준다. 표와 문서 후보가 함께 있거나 후보가 여러 개면 추측하지 않고
원본 선택을 먼저 요청한다. 숫자 범주만 있는 문서 경로는 자동 감지하지 않지만 직접 선택할 수 있다.
Alluvial과 Parallel Sets의 단계는 번호가 있는 흐름 순서로 보이며 앞/뒤 이동할 수 있다.
자동 감지 매핑 사용을 누르면 저장된 수동 mapping을 제거한다. 표 intent는 원본 표 block에 결속하고 문서 intent는 document adapter만 저장한다. 어느 경우에도 row, node, edge 배열이나 ECharts option을 복사하지 않는다. - 카드와 설정에서 원본 Markdown 줄로 돌아갈 수 있다. 저장된 표가 이동하면 fingerprint로 다시 찾고, 사라지거나 모호해지면 다른 표에 조용히 붙이지 않는다. 이 경우 설정은 복구가 필요하다는 상태와 자동 매핑 복구 행동을 보여 준다.
- 500개 원본 행·레코드를 넘으면 앞부분만 정상 결과처럼 그리지 않고 차단하며, 문제를 설명하고 해당 원본 위치로 돌아가도록 안내한다.
- Sankey가 밀집되어 24개 라벨만 표시하면 전체 라벨 수와 함께
24/N개 표시상태를 밝힌다. - Desktop은 ECharts 6.1 renderer와 사용자 label tooltip을 사용한다. Slide/Hugo/static 출력은
현재 interactive ribbon을 흉내 내지 않고, 저장된 binding으로 확인된 원본 표 또는 문서 데이터와 kind, mapping,
degradation, source line을 밝히는 accessible fallback을 제공한다. 정적 source line은
Markdown 원본 · N행이라는 비대화형 위치 고지이며 링크나 desktop source action이 아니다. 저장된 binding을 확인할 수 없거나 500행/레코드 상한을 넘으면 다른 원본을 대신 선택하거나 잘라내지 않고 원본 Markdown을 보존한다.
Relation view
Relation view는 Markdown의 직접 불릿 화살표를 읽기 전용 Sequence 또는 State 다이어그램으로 보여 준다. 헤더의 관점 선택은 현재 패널에서만 유지되며 Markdown이나 projection profile에 저장되지 않는다. Sequence 예시는 다음과 같다.
- Author -> API: request
- API -> Author: responseState 관점은 정확히 하나의 [*] -> 상태 초기 전이가 필요하고, 상태 -> [*] 종료 전이는
없거나 여러 개일 수 있다. payload는 전이 이벤트로 표시된다.
- [*] -> Draft
- Draft -> Review: submit
- Review -> Draft: reject
- Review -> Published: approve
- Published -> [*]유효한 화살표가 하나 이상 있으면 Header의 View menu에서 Relation을 열 수 있다. 표나 별도
설정을 저장하지 않으며, 문서를 고치려면 원문 열기로 돌아가 Markdown을 수정한다. 다이어그램
아래의 전체 전이 목록에서도 각 원문 줄로 이동할 수 있다. 잘못된 화살표 구문, State 의미 오류,
렌더링 실패는 일부 다이어그램을 추측해 표시하지 않고 전체 전이 목록과 원문 복귀 안내를
유지한다.
초기 State 제품 한도는 상태 40개와 전이 120개다. 둘 중 하나를 넘으면 SVG를 부분 렌더링하지 않고 실제 개수와 한도를 알린다. Relation은 현재 desktop 전용 읽기 전용 surface이며 직접 편집, Slide/Hugo 발행은 지원하지 않는다.
Gantt view
Gantt view는 H2/H3 heading task 섹션이나 ISO 날짜가 있는 Markdown table을 일정 타임라인으로 보여 준다. Heading task에서는 Start, End, Due, Status, Lane, Depends, Progress, Baseline Start, Baseline End 같은 property line이 일정 항목의 날짜, 상태, lane, dependency, 진행률, 기준선이 되고, table에서는 task title, start/end date, status, dependency, progress, baseline처럼 원문 row에서 확인되는 값이 일정 항목이 된다. 보기의 scale/style 같은 표현 설정은 features.gantt.projection에 저장된다.
Web Edition의 Gantt는 desktop과 같은 자동 scale 판정과 day/week/month/quarter tick 생성 규칙을 사용한다. 선택한 scale은 현재 origin의 문서별 durable browser profile에 저장되며 일정 이동·기간 조정이 기록되는 Markdown 날짜와 분리된다.
Reference render, Slide embed, Web publish는 같은 heading/table task facts를 보존한다. 원문 heading task나 table이 더 이상 Gantt shape을 만족하지 않으면 Glif는 잘못된 일정을 추측하지 않고 source editor에서 수정하도록 안내한다. 현재 문서 안에서 해석되는 dependency graph가 순환 없이 연결되면 Gantt는 read-only critical path/slack 정보를 파생해 Desktop, Slide embed, Web publish에서 critical path를 강조한다.
Web publish는 Markdown-derived static Gantt renderer를 사용한다. Markdown에 있는 progress는 bar fill로, Baseline Start/Baseline End는 quiet baseline bar로, resolved dependency graph의 critical path는 static accent로 출력된다. 저장된 features.gantt.projection scale/style 설정은 publish-copy frontmatter의 glif.gantt.projection으로 전달되어 Web publish, desktop Slide embedded Gantt, Hugo-published Slide embedded Gantt의 scale, density, bar height, accent, title, lane badge, today marker 표현에 반영된다.
Desktop Gantt의 SVG/PNG snapshot export는 현재 Markdown-derived Gantt model을 정적 이미지 산출물로 직렬화한다. Snapshot은 공유/문서 첨부용 output artifact이며 Markdown 원문, document projection profile, Hugo publish semantics를 바꾸지 않는다.
Calc view
Calc view는 Markdown 문서 안의 계산 라인을 계산기처럼 보여 준다. 표현 모드, comma formatting, decimal places 같은 설정은 features.calc.projection에 저장되지만, 계산식과 산문은 계속 Markdown 원문이 원본이다. 계산 가능한 줄에서 Enter를 누르면 결과값은 = 10,000 또는 ! division by zero 같은 managed line으로 Markdown에 남고, 재계산 시 기존 managed line이 교체된다. 계산식이 아닌 산문과 헤딩에서 Enter는 일반 Markdown 줄바꿈으로 동작하며 결과 line을 만들지 않는다.
Calc view 선택은 다시 열 때 복원될 수 있다. Web publish/export에서는 source Markdown을 직접 바꾸지 않고 generated publish copy의 managed result/error lines를 최신 값으로 다시 계산한 뒤 glif_projection: calc static transcript로 렌더링한다. Hugo/browser renderer는 계산식을 평가하지 않고 이미 materialize된 transcript만 표시한다.
Web Edition은 Ledger/Terminal/Note mode, thousands separator와 Auto/0~6 decimal places를 문서별 durable browser profile로 복원한다. 숫자 표시는 desktop과 같은 pure formatter를 사용하며 이 설정은 Markdown 계산식과 managed result를 바꾸지 않는다. richer editor widget과 native output은 아직 desktop 또는 후속 범위다.
현재 범위
프로젝션 뷰는 자유형 조판 도구가 아니다. 이번 범위에서는 임의 block conversion, drag layout, renderer-owned block JSON, Gallery session/search/lightbox state publish output, 별도 glif_projection: accordion output, browser-side Calc evaluation을 지원하지 않는다. Slide/Hugo 포함 계약도 desktop 세션 상태나 interaction을 그대로 복제하지 않고, 지원되는 정적/의미 표현과 readable fallback을 맞추는 범위다. 지원되는 source-backed command 밖의 구조는 Markdown 원문에서 수정한다.