Skip to content

Commit 804dff1

Browse files
committed
feat(docs): add Wind blog and RSS feed
Enable Zensical's native blog plugin on the Wind site with archive, category, and author views, plus the RSS plugin scoped to posts. Bump the pinned Zensical version to 0.0.65, which provides both plugins. Assisted-by: opencode:deepseek-flash
1 parent 7da8954 commit 804dff1

7 files changed

Lines changed: 73 additions & 3 deletions

File tree

‎AGENTS.md‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This repository is the organization Pages repository `rust-proxy.github.io`, who
44

55
- TUIC documentation: [rust-proxy.github.io/tuic](https://rust-proxy.github.io/tuic/).
66
- Configuration editor (renders TUIC configuration by default): [rust-proxy.github.io/config-editor/](https://rust-proxy.github.io/config-editor/). It has its own HTML, CSS, WebAssembly, and theme, and runs standalone on any static server without depending on a documentation site or backend.
7-
- Wind documentation: [rust-proxy.github.io/wind](https://rust-proxy.github.io/wind/), with English specifications at [rust-proxy.github.io/wind/specs](https://rust-proxy.github.io/wind/specs/).
7+
- Wind documentation: [rust-proxy.github.io/wind](https://rust-proxy.github.io/wind/), with English specifications at [rust-proxy.github.io/wind/specs](https://rust-proxy.github.io/wind/specs/) and a blog at [rust-proxy.github.io/wind/blog](https://rust-proxy.github.io/wind/blog/).
88

99
The sites are built with [Zensical](https://zensical.org/docs/); the configuration editor is built with **Rust WASM + Svelte 5**.
1010

@@ -154,13 +154,16 @@ Configuration state is modified only by the Rust `Session`. Svelte submits gener
154154
| `config-editor/tests/` | XML DSL and configuration regression tests |
155155
| `wind/zensical.toml` / `wind/docs/` | Wind Chinese protocol specifications and design documents (single publishing source) |
156156
| `wind/docs/specs/` | Wind English specifications and RFC template, published under `/wind/specs/` and kept in sync with the Chinese editions |
157+
| `wind/docs/blog/` | Wind blog: `index.md` entry point, `posts/` articles, and `.authors.yml`; built with the native Zensical `blog` plugin and published under `/wind/blog/` |
157158
| `portal/index.html` | Site root portal page |
158159
| `justfile` | Build, check, and preview recipes; the `build` recipe assembles all documentation sites and the editor into `site/` without publishing |
159160
| `tests/config-editor/` | Nightly cargo-script checks (`roundtrip.rs`, `check-rust.rs`, `check-site.rs`), the dependency-free `serve.mjs`, and the Playwright Test specs and configs under `e2e/` |
160161
| `.github/workflows/deploy.yml` | GitHub Pages build and publish workflow |
161162

162163
The main documentation is maintained only in Simplified Chinese; the English specifications and RFC template under `wind/docs/specs/` are the exception, published alongside their Chinese counterparts under `/wind/specs/`, with section numbering and requirements kept in sync. After updating TUIC or Wind, verify the editor's version baseline and the actual runtime behavior of fields, and do not expose configuration that is not yet wired into client runtime logic as usable functionality. Examples use placeholder domains and test credentials generated at runtime, and do not include real deployment data.
163164

165+
The Wind site enables Zensical's native `blog` plugin (available since Zensical 0.0.64) and the `rss` plugin (since 0.0.65); the pinned `zensical` version in the `justfile` must stay at or above 0.0.65. Blog articles live in `wind/docs/blog/posts/`, require a `date` in front matter, and use `<!-- more -->` as the excerpt separator; only the `blog/index.md` entry point belongs in `nav`, never individual posts. `[project.plugins.rss]` is restricted to `match_path = "blog/posts/.*"` so only posts (not generated archive, category, or author views) enter the feed, and it emits `feed_rss_created.xml` under `/wind/`. Keep blog content in Simplified Chinese like the rest of the site.
166+
164167
## Publishing paths
165168

166169
The [CI and Pages workflow](.github/workflows/deploy.yml) runs on pull requests, pushes to `main`, and manual triggers:
@@ -169,6 +172,6 @@ The [CI and Pages workflow](.github/workflows/deploy.yml) runs on pull requests,
169172
- `build`: builds the standalone SPA with wasm-pack, the Svelte checker, and Vite, assembles all documentation sites, checks site links and assets with the `check-site.rs` cargo script, and then runs the TUIC and no-TUIC-field XML reuse browser regressions through Playwright against Chromium and Firefox. Rust, uv, and npm use dependency caching.
170173
- `deploy`: depends on `check` and `build` succeeding, and publishes only on pushes to `main` or manual runs; Pages write and OIDC permissions are granted only to this job, while pull requests only validate and build.
171174

172-
The published artifact is assembled in a temporary directory whose root is `https://rust-proxy.github.io/`: the portal page is at `/`, TUIC documentation at `/tuic/`, the standalone editor at `/config-editor/`, Wind Chinese documentation at `/wind/`, and the Wind English specifications at `/wind/specs/`. No custom domain or `CNAME` is used, and the Pages source should be set to GitHub Actions. Real TUIC parsing and loopback tests still run in an environment with the neighboring repositories as described above.
175+
The published artifact is assembled in a temporary directory whose root is `https://rust-proxy.github.io/`: the portal page is at `/`, TUIC documentation at `/tuic/`, the standalone editor at `/config-editor/`, Wind Chinese documentation at `/wind/`, the Wind blog at `/wind/blog/`, the Wind RSS feed under `/wind/`, and the Wind English specifications at `/wind/specs/`. No custom domain or `CNAME` is used, and the Pages source should be set to GitHub Actions. Real TUIC parsing and loopback tests still run in an environment with the neighboring repositories as described above.
173176

174177
The documentation has migrated from MkDocs to Zensical and no longer uses the i18n plugin. The old `/tuic/zh/` path does not generate a redirect; external links should be updated under `/tuic/`. A passing site build and configuration parse does not mean remote DNS, certificates, firewalls, or proxy connections have been verified.

‎justfile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
set windows-shell := ["bash", "-c"]
55

66
# Pinned Zensical version, run on demand with `uvx`.
7-
zensical := 'zensical==0.0.63'
7+
zensical := 'zensical==0.0.65'
88

99
# Show the available repository tasks.
1010
default:

‎wind/docs/blog/.authors.yml‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
authors:
2+
wind:
3+
name: Wind 团队
4+
description: Wind 共享代理框架与协议实现的维护者。
5+
avatar: blog/assets/wind.svg

‎wind/docs/blog/assets/wind.svg‎

Lines changed: 4 additions & 0 deletions
Loading

‎wind/docs/blog/index.md‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
title: 博客
3+
---
4+
5+
# Wind 博客
6+
7+
这里发布 Wind 框架与各代理协议的更新、设计说明与实现记录,与 [协议规范](../index.md) 相互补充。
8+
9+
按时间倒序排列,可按归档、分类与作者浏览。
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
date: 2026-09-27
3+
categories:
4+
- 公告
5+
- 文档
6+
authors:
7+
- wind
8+
---
9+
10+
# 欢迎来到 Wind 博客
11+
12+
Wind 文档站新增博客栏目,用于发布框架与协议的更新、设计说明和实现记录。
13+
14+
<!-- more -->
15+
16+
## 为什么需要博客
17+
18+
协议规范与配置参考适合描述“是什么”,但不适合记录“为什么这样设计”以及随时间的演变。博客用于承载这类内容:
19+
20+
- 版本发布与行为变更说明。
21+
- 协议设计取舍与兼容性讨论。
22+
- 配置、路由与性能相关的实现记录。
23+
24+
## 组织方式
25+
26+
博客文章位于 `docs/blog/posts/`,按时间倒序展示,并按归档、分类与作者生成视图。协议本身的正式约定仍以 [协议规范](../index.md) 为准。

‎wind/zensical.toml‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ repo_name = "rust-proxy/wind"
99
edit_uri = "https://github.com/rust-proxy/rust-proxy.github.io/edit/main/wind/docs/"
1010
nav = [
1111
{ "首页" = "index.md" },
12+
{ "博客" = ["blog/index.md"] },
1213
{ "协议规范" = [
1314
{ "TUIC" = "tuic.md" },
1415
{ "AnyTLS" = "anytls.md" },
@@ -79,6 +80,23 @@ toc = { permalink = true, slugify = { object = "pymdownx.slugs.slugify", kwds =
7980
"pymdownx.inlinehilite" = {}
8081
"pymdownx.tabbed" = { alternate_style = true }
8182

83+
[project.plugins.blog]
84+
post_dir = "blog/posts"
85+
pagination_per_page = 10
86+
archive = true
87+
categories = true
88+
authors = true
89+
authors_profiles = true
90+
post_readtime = true
91+
post_excerpt = "optional"
92+
93+
[project.plugins.rss]
94+
match_path = "blog/posts/.*"
95+
json_feed_enabled = false
96+
97+
[project.plugins.rss.date_from_meta]
98+
as_creation = "date"
99+
82100
[[project.extra.social]]
83101
icon = "fontawesome/brands/github"
84102
link = "https://github.com/rust-proxy/wind"
@@ -88,3 +106,8 @@ name = "Wind 源码"
88106
icon = "lucide/book-open"
89107
link = "https://github.com/rust-proxy/rust-proxy.github.io"
90108
name = "文档仓库"
109+
110+
[[project.extra.social]]
111+
icon = "lucide/rss"
112+
link = "https://rust-proxy.github.io/wind/feed_rss_created.xml"
113+
name = "RSS 订阅"

0 commit comments

Comments
 (0)