sqzass.git

sqzass

~ A static site generator written in Rust
git clone https://github.com/debuman/sqzass.git
commit f7c2d41657b22bc97a3bbb9b7c80d3752ba307e1
parent 35fd132612a643c278cdb8738cba6079e17528cc
Author: sqzer <110329244+sqzer-x@users.noreply.github.com>
Date: Fri, 31 Jul 2026 22:31:51 +0900

같은 말을 두 번 하던 자리를 정리한다

markdown 문서에 원시 HTML 문단이 두 번 있었다. "## 원시 HTML" 절과 "키가 아닌
설정 둘"의 첫 불릿이 거의 자구까지 같아서, 열 줄 간격으로 같은 말을 두 번 읽고
목차에도 사실상 같은 항목이 두 개 떴다. 영어 원문부터 그랬으니 편집 잔재다.
뒤쪽이 "전역 스위치가 아니라 소스별 신뢰 등급"을 더 담고 절 제목의 목적과도
맞으므로 앞 절을 지운다.

deploy/_index의 손으로 쓴 안내서 표도 같은 문제였다. section.html이 자식 목록을
이미 렌더하므로 같은 여섯 링크가 한 페이지에 두 번 나왔고, 설명문이 서로 달라
어느 쪽이 정본인지 알 수 없었다. 여섯 섹션 인덱스 중 손 목록을 둔 곳은 여기뿐이라
패턴도 어긋났다. 표에만 있던 좋은 문장은 각 페이지 description으로 옮기고 표를
지운다 — github-pages의 "이 사이트가 배포되는 워크플로"보다 표의 "이 사이트가
있는 곳이자, 설계를 강제한 호스트"가 낫다.

알림 상자 예제가 사실과 어긋났다. "미리 빌드된 바이너리는 계획에 있지만 아직
배포하지 않았습니다"가 예제로 실려 있는데 installation은 릴리스마다 붙는다고
하고 실제로 v0.1.0에 붙어 있다. 예제여도 렌더된 페이지에서는 진짜 NOTE로 보인다.
시효 없는 문구로 바꾼다.

toc 기준이 "긴 글이냐"가 아니라 "섹션이냐"로 갈려 있었다. H2 여덟에 129줄인
deploy/_index에는 목차가 없고 H2 넷에 58줄인 selection에는 있었다. front-matter가
스스로 "toc는 저자의 의사"라고 해 놓고 가장 긴 축인 _index들이 그 의사를 한 번도
행사하지 않은 셈이다. deploy와 content의 _index에 넣었다.

start/_index의 "왜 sqzass인가"는 랜딩 벤토 라벨과 제목이 겹치면서 내용은 달랐다.
랜딩에서 넘어온 독자가 방금 본 제목 아래 다른 목록을 다시 만난다. "설계가 다른
지점"으로 바꾼다.

configuration은 여섯 절 중 넷만 정본 링크를 달고 [nav]와 [build]만 아무 데도
가리키지 않았다. `date`가 왜 혼자 내림차순인지 거기서 알 길이 없었다. 둘 다
링크를 달아 파일이 예외 없이 "키 표 + 정본 링크"가 되게 한다.

description 문체가 명사형 24곳 대 완결문 6곳으로 갈려서, 섹션 인덱스의 자동 자식
목록에서 두 문체가 나란히 보였다. 다수인 명사형으로 맞춘다. 영어판도 같은 혼재라
양쪽을 함께 고쳤다.

installation의 "다음은 첫 사이트 만들기입니다"는 한국어판에만 있었다. 다음 단계
안내는 있는 편이 나으므로 영어판에 넣어 맞춘다.

벤치마크 페이지, deploy 인덱스, start 인덱스를 헤드리스로 띄워 목차·자식 목록·
막대가 의도대로 나오는지 눈으로 확인했다. 두 번 빌드해 바이트가 같은 것도 확인했다.

Diffstat:
Mdocs/content/content/_index.ko.md | 1+
Mdocs/content/content/_index.md | 1+
Mdocs/content/content/links.ko.md | 2+-
Mdocs/content/content/links.md | 2+-
Mdocs/content/content/markdown.ko.md | 9++-------
Mdocs/content/content/markdown.md | 10++--------
Mdocs/content/deploy/_index.ko.md | 12++----------
Mdocs/content/deploy/_index.md | 12++----------
Mdocs/content/deploy/github-pages.ko.md | 2+-
Mdocs/content/deploy/github-pages.md | 2+-
Mdocs/content/features/dev-server.ko.md | 2+-
Mdocs/content/features/dev-server.md | 2+-
Mdocs/content/start/_index.ko.md | 4++--
Mdocs/content/start/_index.md | 4++--
Mdocs/content/start/configuration.ko.md | 6++++++
Mdocs/content/start/configuration.md | 6++++++
Mdocs/content/start/installation.md | 2++
Mdocs/content/templates/assets.ko.md | 2+-
Mdocs/content/templates/assets.md | 2+-
19 files changed, 36 insertion(+), 47 deletion(-)

diff --git a/docs/content/content/_index.ko.md b/docs/content/content/_index.ko.md
@@ -1,6 +1,7 @@
 +++
 title = "콘텐츠 작성"
 description = "페이지와 섹션, front matter, 그리고 거기서 나오는 URL"
+toc = true
 weight = 20
 sort_by = "weight"
 +++
diff --git a/docs/content/content/_index.md b/docs/content/content/_index.md
@@ -1,6 +1,7 @@
 +++
 title = "Writing content"
 description = "Pages, sections, front matter and the URLs they produce"
+toc = true
 weight = 20
 sort_by = "weight"
 +++
diff --git a/docs/content/content/links.ko.md b/docs/content/content/links.ko.md
@@ -1,6 +1,6 @@
 +++
 title = "내부 링크"
-description = "소스 파일을 가리키면 URL은 빌드가 씁니다"
+description = "소스 파일을 가리키는 링크와, 빌드가 대신 쓰는 URL"
 weight = 20
 toc = true
 +++
diff --git a/docs/content/content/links.md b/docs/content/content/links.md
@@ -1,6 +1,6 @@
 +++
 title = "Internal links"
-description = "Link to a source file and let the build write the URL"
+description = "Links that point at the source file, and URLs the build writes"
 weight = 20
 toc = true
 +++
diff --git a/docs/content/content/markdown.ko.md b/docs/content/content/markdown.ko.md
@@ -26,11 +26,11 @@ heading_anchors       = "right"   # none | left | right
 
 ```markdown
 > [!NOTE]
-> 미리 빌드된 바이너리는 계획에 있지만 아직 배포하지 않았습니다.
+> 정적 리눅스 빌드는 순수 Rust 정규식 엔진을 싣습니다.
 ```
 
 > [!NOTE]
-> 미리 빌드된 바이너리는 계획에 있지만 아직 배포하지 않았습니다.
+> 정적 리눅스 빌드는 순수 Rust 정규식 엔진을 싣습니다.
 
 `NOTE`, `TIP`, `IMPORTANT`, `WARNING`, `CAUTION`을 인식합니다.
 
@@ -78,11 +78,6 @@ heading_anchors       = "right"   # none | left | right
 `heading_anchors`는 눈에 보이는 `#` 링크를 정합니다. `"right"`(기본), `"left"`,
 `"none"` 중 하나입니다.
 
-## 원시 HTML
-
-그대로 통과시킵니다. 여기 콘텐츠는 믿을 수 있습니다 — 저장소 안에 있고, 직접 썼고,
-코드와 같은 커밋에서 리뷰됩니다. 이걸 새니타이즈하는 건 시늉일 뿐입니다.
-
 ## 키가 아닌 설정 둘
 
 둘 다 고정이고, 둘 다 의도한 것입니다. 옵션을 찾다가 없어서 이슈를 쓰기 전에 여기서
diff --git a/docs/content/content/markdown.md b/docs/content/content/markdown.md
@@ -26,11 +26,11 @@ GitHub's callout syntax, built on blockquotes:
 
 ```markdown
 > [!NOTE]
-> Prebuilt binaries are planned but not published yet.
+> The static Linux build ships the pure-Rust regex engine.
 ```
 
 > [!NOTE]
-> Prebuilt binaries are planned but not published yet.
+> The static Linux build ships the pure-Rust regex engine.
 
 `NOTE`, `TIP`, `IMPORTANT`, `WARNING` and `CAUTION` are recognised.
 
@@ -78,12 +78,6 @@ agree — they come from the same counter, in one pass.
 `heading_anchors` controls the visible `#` link: `"right"` (default), `"left"`,
 or `"none"`.
 
-## Raw HTML
-
-Passed through. Content here is trusted — it is in your repository, written by
-you, and reviewed in the same commit as the code. Sanitising it would be
-theatre.
-
 ## Two settings that are not keys
 
 Both are fixed, and both are deliberate — this section exists so that looking
diff --git a/docs/content/deploy/_index.ko.md b/docs/content/deploy/_index.ko.md
@@ -1,6 +1,7 @@
 +++
 title = "배포"
-description = "결과물은 디렉터리입니다. 파일을 서빙하는 호스트면 어디든 됩니다."
+description = "디렉터리 하나로 나오는 결과물과, 그걸 받아 주는 호스트들"
+toc = true
 weight = 50
 sort_by = "weight"
 +++
@@ -50,15 +51,6 @@ rewrite도 없으므로, 그런 것에 기대는 게 생기면 여기서 가장
 
 ## 각 안내서
 
-| | |
-|---|---|
-| [GitHub Pages](@/deploy/github-pages.md) | 이 사이트가 있는 곳이자, 설계를 강제한 호스트 |
-| [Netlify](@/deploy/netlify.md) | `netlify.toml`, 배포 프리뷰 |
-| [Vercel](@/deploy/vercel.md) | `vercel.json`, 프레임워크 기능이 무의미한 이유 |
-| [Cloudflare Pages](@/deploy/cloudflare-pages.md) | 대시보드 두 칸과 `_headers` — 캐시 제어가 필요해지면 옮겨 갈 곳 |
-| [GitLab Pages](@/deploy/gitlab-ci.md) | `.gitlab-ci.yml`, 프로젝트 서브경로 |
-| [Codeberg Pages](@/deploy/codeberg-pages.md) | `pages` 브랜치, `.domains`, Forgejo Actions |
-
 전부 같은 사실 두 개입니다. `sqzass build`를 돌리고 `public/`을 발행한다. 문서가
 갈리는 건 그 두 사실을 어디에 적느냐와, 각 호스트가 프리뷰 URL을 뭐라고 부르느냐뿐입니다.
 
diff --git a/docs/content/deploy/_index.md b/docs/content/deploy/_index.md
@@ -1,6 +1,7 @@
 +++
 title = "Deploying"
-description = "The output is a directory. Any host that serves files will do."
+description = "A directory of files, and the hosts that will serve it"
+toc = true
 weight = 50
 sort_by = "weight"
 +++
@@ -53,15 +54,6 @@ silently ignore it either.
 
 ## Where these guides go
 
-| | |
-|---|---|
-| [GitHub Pages](@/deploy/github-pages.md) | Where this site is, and the host that forced the design |
-| [Netlify](@/deploy/netlify.md) | `netlify.toml`, deploy previews |
-| [Vercel](@/deploy/vercel.md) | `vercel.json`, and why the framework machinery is inert |
-| [Cloudflare Pages](@/deploy/cloudflare-pages.md) | Two dashboard fields, and `_headers` — the host to move to when you need cache control |
-| [GitLab Pages](@/deploy/gitlab-ci.md) | `.gitlab-ci.yml`, and the project subpath |
-| [Codeberg Pages](@/deploy/codeberg-pages.md) | A `pages` branch, `.domains`, Forgejo Actions |
-
 Every one of them is the same two facts: run `sqzass build`, publish `public/`.
 The pages differ only in where those facts are written down and what each host
 calls its preview URL.
diff --git a/docs/content/deploy/github-pages.ko.md b/docs/content/deploy/github-pages.ko.md
@@ -1,6 +1,6 @@
 +++
 title = "GitHub Pages"
-description = "이 사이트가 배포되는 워크플로"
+description = "이 사이트가 있는 곳이자, 설계를 강제한 호스트"
 weight = 10
 toc = true
 +++
diff --git a/docs/content/deploy/github-pages.md b/docs/content/deploy/github-pages.md
@@ -1,6 +1,6 @@
 +++
 title = "GitHub Pages"
-description = "The workflow this site is deployed with"
+description = "Where this site is, and the host that forced the design"
 weight = 10
 toc = true
 +++
diff --git a/docs/content/features/dev-server.ko.md b/docs/content/features/dev-server.ko.md
@@ -1,6 +1,6 @@
 +++
 title = "개발 서버"
-description = "메모리에서 서빙하고, 바뀌면 다시 빌드하고, 보던 자리를 잃지 않고 새로고침합니다"
+description = "메모리 서빙, 변경 시 리빌드, 보던 자리를 지키는 새로고침"
 weight = 40
 toc = true
 +++
diff --git a/docs/content/features/dev-server.md b/docs/content/features/dev-server.md
@@ -1,6 +1,6 @@
 +++
 title = "Development server"
-description = "Serves from memory, rebuilds on change, and reloads without losing your place"
+description = "Serving from memory, rebuilds on change, and reloads that keep your place"
 weight = 40
 toc = true
 +++
diff --git a/docs/content/start/_index.ko.md b/docs/content/start/_index.ko.md
@@ -1,6 +1,6 @@
 +++
 title = "시작하기"
-description = "sqzass를 설치하고 첫 사이트를 빌드합니다"
+description = "설치부터 첫 사이트를 빌드하기까지"
 weight = 10
 sort_by = "weight"
 +++
@@ -14,7 +14,7 @@ sort_by = "weight"
 > 에러 식별자(`SQZASS_E_CONTENT`)와 doctor 검사 이름(`untranslated`)은 ASCII이고
 > 안정적입니다 — 스크립트가 잡아야 할 것도 그쪽입니다.
 
-## 왜 sqzass인가
+## 설계가 다른 지점
 
 **마크다운을 트리에서 변환합니다.** 링크 재작성, 제목 앵커, 목차가 모두
 [comrak]의 AST 연산입니다. 흔한 지름길인 "완성된 HTML에 정규식 돌리기"는 속성이
diff --git a/docs/content/start/_index.md b/docs/content/start/_index.md
@@ -1,6 +1,6 @@
 +++
 title = "Getting started"
-description = "Install sqzass and build your first site"
+description = "From installing sqzass to building your first site"
 weight = 10
 sort_by = "weight"
 +++
@@ -15,7 +15,7 @@ Everything you need to get a site on screen.
 > check names (`untranslated`) are ASCII and stable, which is what a script
 > should match on anyway.
 
-## Why sqzass
+## Where the design differs
 
 **Markdown is transformed on the tree.** Link rewriting, heading anchors and the
 table of contents are AST operations via [comrak]. The common shortcut — running
diff --git a/docs/content/start/configuration.ko.md b/docs/content/start/configuration.ko.md
@@ -62,6 +62,9 @@ weight = 2
 | `output_dir` | `"public"` | 사이트 루트 기준. |
 | `drafts` | `false` | 명령줄의 `--drafts`가 이걸 켭니다. |
 
+드래프트는 CSS로 감추는 게 아니라 빌드에서 통째로 빠집니다.
+[콘텐츠 작성](@/content/_index.md)을 참고하세요.
+
 ## `[markdown]`
 
 | 키 | 기본값 | |
@@ -107,6 +110,9 @@ CommonMark의 flanking 규칙은 단어 사이에 공백을 두는 언어를 전
 |---|---|---|
 | `sort_by` | `"weight"` | `weight`, `title`, `date`. 섹션이 각자 덮어쓸 수 있습니다. |
 
+섹션마다 덮어쓰는 방법과 `date`만 내림차순인 이유는
+[콘텐츠 작성](@/content/_index.md)에 적어 두었습니다.
+
 ## `[search]`
 
 | 키 | 기본값 | |
diff --git a/docs/content/start/configuration.md b/docs/content/start/configuration.md
@@ -63,6 +63,9 @@ languages at all is fine — the site is then single-language under
 | `output_dir` | `"public"` | Relative to the site root. |
 | `drafts` | `false` | `--drafts` sets this from the command line. |
 
+A draft is excluded from the build entirely, not hidden by CSS. See
+[Writing content](@/content/_index.md).
+
 ## `[markdown]`
 
 | Key | Default | |
@@ -108,6 +111,9 @@ See [Static assets](@/templates/assets.md).
 |---|---|---|
 | `sort_by` | `"weight"` | `weight`, `title` or `date`. A section can override it. |
 
+How a section overrides it, and why `date` alone sorts newest first, are in
+[Writing content](@/content/_index.md).
+
 ## `[search]`
 
 | Key | Default | |
diff --git a/docs/content/start/installation.md b/docs/content/start/installation.md
@@ -83,3 +83,5 @@ fully deterministic on its own.
 ```bash
 sqzass --version
 ```
+
+Next: [Your first site](@/start/first-site.md).
diff --git a/docs/content/templates/assets.ko.md b/docs/content/templates/assets.ko.md
@@ -1,6 +1,6 @@
 +++
 title = "정적 에셋"
-description = "복사하고, 해시를 붙이고, 원래 이름으로 조회합니다"
+description = "복사, 해시, 그리고 원래 이름으로 하는 조회"
 weight = 30
 toc = true
 +++
diff --git a/docs/content/templates/assets.md b/docs/content/templates/assets.md
@@ -1,6 +1,6 @@
 +++
 title = "Static assets"
-description = "Copied, hashed, and looked up by their original name"
+description = "Copying, hashing, and lookup by the original name"
 weight = 30
 toc = true
 +++