Skip to content

뷰어 ​

뷰어는 하나이며, 네 곳에서 씁니다: 파일 화면, 스레드 Inspector의 Files 탭, diff 리뷰의 오른쪽 패널, 그리고 스레드에서 답변 아래에 붙는 미리보기 카드입니다.

라우팅 ​

뷰어는 먼저 확장자로, 그다음 미디어 종류로 렌더러를 고릅니다. Markdown, HTML, 이미지(png, jpg, gif, webp, avif, bmp, ico, svg), 표로 보여주는 CSV/TSV, JSON, PDF, 시트마다 탭이 붙은 표로 보여주는 스프레드시트(xlsx, xlsm, xls), 오디오, 비디오, diff로 보여주는 패치, 그리고 그 밖의 모든 것은 줄 번호가 붙은 텍스트입니다. 자기 애플리케이션만 읽을 수 있는 형식(.docx, .pptx)은 어설프게 그리는 대신 이름을 밝히고 Open with system app 버튼을 내놓습니다.

Rendered와 Raw ​

Markdown, HTML, JSON, CSV/TSV는 원본 바이트가 아닌 다른 모습으로 렌더링되고, 그 과정에서 감춰지는 것이 있습니다. 마크업, 정확한 구분자, 키 순서 같은 것들입니다. 머리글의 Raw 버튼은 파일을 있는 그대로 보여 주고, Rendered는 되돌립니다. 선택은 파일이 아니라 종류별로 기억합니다. CSV를 텍스트로 읽고 싶은 사람은 모든 CSV에 대해 그렇기 때문입니다.

이미지, PDF, 오디오, 비디오, 코드에는 달리 보여 줄 모습이 없으므로 버튼도 없습니다.

파일 편집 ​

작은 텍스트 파일 — markdown, JSON, CSV, 코드, 패치, 1 MB까지 — 에는 Raw 옆에 Edit 버튼이 있습니다. 누르면 평범한 텍스트 상자가 열립니다. 고정폭 글꼴이고, Tab은 공백 두 칸을 넣으며, Save 또는 Cancel로 끝냅니다.

이것은 의도적으로 편집기가 아닙니다. 한 번에 한 파일, 찾아 바꾸기 없음, 여러 파일 작업 없음, 구문 강조 없음, 상자 자체의 실행 취소 외에는 없습니다. 앱을 떠나야만 고칠 수 있던 작은 수정을 위한 것입니다.

저장할 때는 그 파일이 읽은 그 파일 그대로인지 확인합니다. 그 사이에 다른 것이 — 에이전트, 다른 편집기, pull — 파일을 바꿨다면 changed on disk, reload와 함께 저장을 거부하고 아무것도 쓰지 않습니다. 작성 중이던 내용은 상자에 그대로 남습니다. 열린 프로젝트 밖의 파일은 아예 저장할 수 없습니다. 읽을 때와 같은 울타리입니다. 둘 다 코어는 관여하지 않습니다.

Markdown ​

문서로 렌더링됩니다. 상대 경로 이미지 링크(![](https://raw.githubusercontent.com/Wafour-Developer/snowpea-ide/main/docs/manual/ko/shot.png))는 그 문서가 있는 폴더를 기준으로 해석되어 메인 프로세스를 통해 다시 읽히므로, 로컬 스크린샷이 깨진 이미지 아이콘 대신 실제로 보입니다. markdown 안의 원시 HTML은 들어올 때 이스케이프되고, 렌더링된 결과는 화면에 보이기 전에 한 번 더 살균됩니다 — markdown 렌더러야말로 script 태그가 숨어들기 좋은 자리이기 때문에 두 단계를 거칩니다.

HTML ​

스크립트가 꺼진 채로 샌드박스 iframe 안에서 렌더링됩니다. Allow scripts (스크립트 허용)를 누르면 그 파일 하나에 한해 켜지며, 다른 파일을 열면 이 동의는 초기화됩니다. 스크립트를 허용해도 프레임이 동일 출처 권한을 갖는 일은 결코 없습니다. 그래서 HTML 파일을 신뢰하기로 결정하기 전에 안전하게 미리 볼 수 있습니다.

SVG는 script를 담을 수 있는 유일한 이미지 형식이라, HTML 경로를 타거나 인라인으로 삽입되는 일 없이 평범한 <img>로 렌더링됩니다. 이 방식으로는 안에 담긴 어떤 것도 실행되지 않습니다.

CSV와 TSV ​

구분자는 콤마, 탭, 세미콜론, 파이프 중 줄을 가장 일관되게 나누는 것을 골라 자동으로 추정하며, 메뉴에서 직접 바꿀 수 있습니다. 구분자나 줄바꿈을 포함한 따옴표 필드는 쪼개지지 않고 올바르게 파싱됩니다. 처음 5,000행까지 보여주고 나머지는 렌더링하지 않고 개수만 셉니다. 큰 파일 하나 때문에 패널이 멈추지 않도록 하기 위해서입니다.

JSON ​

접었다 펼 수 있는 트리로 렌더링되며, 처음에는 두 단계까지 펼쳐져 있습니다. 잘못된 JSON은 그렇다고 알리고 빈 트리 대신 일반 텍스트로 돌아갑니다.

오디오, 비디오, PDF ​

오디오와 비디오는 실제 플레이어로, PDF는 프레임 안에서 렌더링됩니다.

상한 ​

텍스트는 2MB까지 읽습니다. 넘으면 처음 2MB만 보여주고 잘렸다고 알립니다. 이미지, PDF, 미디어처럼 바이트로 보여주는 파일은 25MB까지입니다. 둘 중 하나를 넘거나, 열려 있거나 첨부된 어떤 프로젝트에도 속하지 않는 경로라면, 뷰어는 빈 패널을 보여주는 대신 그 이유를 알려줍니다. 허용된 루트 밖의 경로를 거부하는 파일과 같은 방식입니다.

모든 바이트는 메인 프로세스에서 옵니다. 창 자체에는 파일 시스템 접근 권한이 없으므로, 직접 연 프로젝트나 첨부한 파일 밖의 것은 어떤 것도 읽을 수 없습니다.

diff 리뷰에서 ​

오른쪽 패널에는 Diff / File 토글이 있습니다. 패치는 diff로 읽는 것이 자연스럽지만, 생성된 이미지나 바이너리 자산은 그렇지 않습니다 — 토글을 누르면 위에서 설명한 같은 뷰어로 파일 자체를 보여줍니다.

턴에서 나온 파일 ​

한 턴이 파일을 쓰거나 생성하면 — write_file, edit_file, image_generate, text_to_speech, video_generate, music_generate — 또는 직접 파일을 첨부했다면(첨부 파일 참고), 답변 아래에 "Files from this turn" 띠가 나타납니다.

이미지는 썸네일로, 그 밖의 것은 이름이 붙은 타일로 표시됩니다. 하나를 누르면 대화를 벗어나지 않고 스레드 위에 오버레이로 뷰어가 열립니다. Open in Files(파일에서 열기)는 파일 화면으로 이동해 트리에서 그 파일을 선택된 상태로 보여줍니다. 전체 창 크기로 읽고 싶을 때 씁니다.

MIT licensed. The manual is generated from the product repositories — see the banner on each page.