edgepress 2026.9.5 → 2026.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.txt +12 -0
  2. package/README.md +5 -3
  3. package/config.yml +11 -6
  4. package/content/pages/home/en.md +7 -0
  5. package/content/pages/home/zh-cn.md +8 -1
  6. package/content/pages/privacy-policy/en.md +1 -1
  7. package/content/pages/privacy-policy/zh-cn.md +1 -1
  8. package/content/pages/theme-development/en.md +23 -0
  9. package/content/pages/theme-development/zh-cn.md +23 -0
  10. package/content/posts/2026-09-23-edgepress-on-the-edge/en.md +3 -1
  11. package/content/posts/2026-09-23-edgepress-on-the-edge/zh-cn.md +3 -1
  12. package/content/posts/2026-09-24-edgepress-release-2026-9-1/en.md +2 -0
  13. package/content/posts/2026-09-24-edgepress-release-2026-9-1/zh-cn.md +2 -0
  14. package/content/posts/2026-09-25-edgepress-release-2026-9-2/en.md +2 -0
  15. package/content/posts/2026-09-25-edgepress-release-2026-9-2/zh-cn.md +2 -0
  16. package/content/posts/2026-09-25-edgepress-release-2026-9-3/en.md +2 -0
  17. package/content/posts/2026-09-25-edgepress-release-2026-9-3/zh-cn.md +2 -0
  18. package/content/posts/2026-09-25-edgepress-release-2026-9-4/en.md +2 -0
  19. package/content/posts/2026-09-25-edgepress-release-2026-9-4/zh-cn.md +2 -0
  20. package/content/posts/2026-09-25-edgepress-release-2026-9-5/en.md +2 -0
  21. package/content/posts/2026-09-25-edgepress-release-2026-9-5/zh-cn.md +2 -0
  22. package/content/posts/2026-09-25-edgepress-release-2026-9-6/en.md +31 -0
  23. package/content/posts/2026-09-25-edgepress-release-2026-9-6/zh-cn.md +31 -0
  24. package/languages/base/en.json +2 -0
  25. package/languages/packs/zh-CN.json +2 -0
  26. package/package.json +4 -2
  27. package/project-compatibility.json +10 -2
  28. package/src/cli.js +7 -2
  29. package/src/content.js +33 -0
  30. package/src/generators.js +111 -14
  31. package/src/icons.js +16 -0
  32. package/src/maintenance.js +0 -27
  33. package/src/page-blocks.js +29 -8
  34. package/src/page-check.js +6 -1
  35. package/src/theme.js +13 -2
  36. package/static/edgepress/brand/edgepress-mark.svg +7 -0
  37. package/static/edgepress/brand/mascot.png +0 -0
  38. package/static/edgepress/brand/og-image.png +0 -0
  39. package/static/edgepress/brand/og-image.svg +46 -0
  40. package/static/edgepress/code-copy.js +55 -0
  41. package/static/edgepress/icons.svg +24 -0
  42. package/themes/atelier/assets/style.css +48 -1
  43. package/themes/atelier/layouts/partials/head.html +5 -0
  44. package/themes/atelier/layouts/partials/header.html +1 -1
  45. package/themes/default/assets/style.css +49 -1
  46. package/themes/default/layouts/partials/head.html +3 -0
  47. package/themes/default/layouts/partials/header.html +1 -1
  48. package/themes/signal/assets/style.css +48 -1
  49. package/themes/signal/layouts/partials/head.html +5 -0
  50. package/themes/signal/layouts/partials/header.html +1 -1
package/CHANGELOG.txt ADDED
@@ -0,0 +1,12 @@
1
+ EdgePress Changelog
2
+ ===================
3
+
4
+ 2026.9.6 — 2026-09-25
5
+ ---------------------
6
+
7
+ - Added a shared, locally hosted SVG icon library with 22 reusable icons. Theme navigation uses common icons, and feature-grid cards can opt into named icons.
8
+ - Added the EdgePress page mark, folded-paper sparrow mascot, and a 1200 × 630 Open Graph image. Themes include the mark as their favicon and show the mascot on the homepage.
9
+ - Added accessible older/newer archive navigation for paginated homepage post lists.
10
+ - Added localized post author metadata, visible bylines, and matching BlogPosting structured data.
11
+ - Removed stale demo-video references from page and post content. No video assets are generated by this release.
12
+ - Kept icons, branding, and share assets local, with no new runtime dependencies or third-party asset requests.
package/README.md CHANGED
@@ -63,8 +63,10 @@ Posts under content/posts/ use the Markdown renderer. Themes own shared head, na
63
63
 
64
64
  The only persisted page-audit report is the accessible PDF at tools/page-check.pdf. Desktop and mobile screenshots are embedded in the PDF and removed from temporary storage afterward. Automated checks do not replace manual accessibility or legal review.
65
65
 
66
- The header search page filters Markdown posts from the generated local search index; it does not send search queries to an external service. The first post, “EdgePress and Markdown: a complete writing guide,” documents and verifies the supported Markdown syntax in English and Chinese.
66
+ The main navigation includes a Posts entry to the localized article archive. The header search page filters Markdown posts from the generated local search index; it does not send search queries to an external service. Article pages show a linked table of contents and code blocks have accessible copy buttons. The first post, “EdgePress and Markdown: a complete writing guide,” documents and verifies the supported Markdown syntax in English and Chinese.
67
67
 
68
- Project guides are published from content/pages/: project introduction, quick start, theme development, plugin development, and privacy policy. The privacy policy intentionally reports that the starter site still needs a real site URL, operator name, and privacy contact before publication.
68
+ Project guides are published from content/pages/: project introduction, quick start, theme development, plugin development, and privacy policy. The starter config uses `https://edgepress.js.gripe` and credits `toewpq`; the privacy policy still reports that its real operator name and working privacy contact must be added before publication.
69
69
 
70
- Version 2026.9.5 records the fifth requested release update for September 2026. It is available as the `edgepress` npm package. See the [request 1 notes](content/posts/2026-09-24-edgepress-release-2026-9-1/), [request 2 notes](content/posts/2026-09-25-edgepress-release-2026-9-2/), [request 3 notes](content/posts/2026-09-25-edgepress-release-2026-9-3/), [request 4 notes](content/posts/2026-09-25-edgepress-release-2026-9-4/), and [request 5 notes](content/posts/2026-09-25-edgepress-release-2026-9-5/).
70
+ Version 2026.9.6 records the sixth requested release update for September 2026. It is available as the `edgepress` npm package. See the [request 1 notes](content/posts/2026-09-24-edgepress-release-2026-9-1/), [request 2 notes](content/posts/2026-09-25-edgepress-release-2026-9-2/), [request 3 notes](content/posts/2026-09-25-edgepress-release-2026-9-3/), [request 4 notes](content/posts/2026-09-25-edgepress-release-2026-9-4/), [request 5 notes](content/posts/2026-09-25-edgepress-release-2026-9-5/), and [request 6 notes](content/posts/2026-09-25-edgepress-release-2026-9-6/).
71
+
72
+ The release also adds shared icons, EdgePress brand artwork, paginated homepage post lists, and article author bylines. See [CHANGELOG.txt](CHANGELOG.txt) for the complete entry.
package/config.yml CHANGED
@@ -1,8 +1,8 @@
1
- # Site owner settings. Replace the example URL before publishing.
1
+ # Site owner metadata and shared website components.
2
2
  site:
3
3
  title: EdgePress
4
4
  description: A static website builder for Cloudflare Workers with editable pages, Markdown posts, themes, and plugins.
5
- url: https://example.com
5
+ url: https://edgepress.js.gripe
6
6
  language: en
7
7
  head:
8
8
  titleSuffix: ""
@@ -32,6 +32,11 @@ site:
32
32
  labels:
33
33
  en: Quick start
34
34
  zh-CN: 快速入门
35
+ - key: posts
36
+ url: "@archives"
37
+ labels:
38
+ en: Posts
39
+ zh-CN: 文章
35
40
  - key: search
36
41
  url: "@search"
37
42
  labels:
@@ -50,12 +55,12 @@ site:
50
55
  zh-CN: Atom 订阅
51
56
  footer: ""
52
57
  seo:
53
- author: EdgePress contributors
58
+ author: toewpq
54
59
  keywords:
55
60
  - Markdown website builder
56
61
  - Cloudflare Workers
57
62
  - static site generator
58
- image: ""
63
+ image: https://edgepress.js.gripe/edgepress/brand/og-image.png
59
64
  robots: index,follow
60
65
  # GEO here means agent SEO: make authoritative project information easy to discover and interpret.
61
66
  agentSeo:
@@ -73,8 +78,8 @@ site:
73
78
  - PerplexityBot
74
79
  privacy:
75
80
  controller:
76
- name: ""
77
- contact: ""
81
+ name: toewpq
82
+ contact: toewpq@gmail.com
78
83
  policyUrl: /privacy-policy/
79
84
  plugins:
80
85
  consent:
@@ -17,6 +17,8 @@ blocks:
17
17
  eyebrow: A project built for the edge
18
18
  title: Build a fast website from clear, editable source files.
19
19
  text: EdgePress turns Markdown posts, page layouts, themes, and consent-aware integrations into a static site served by Cloudflare Workers.
20
+ mascotSrc: /edgepress/brand/mascot.png
21
+ mascotAlt: A curious sparrow folded from layered paper pages, EdgePress's project mascot.
20
22
  cta:
21
23
  label: Start with the quick guide
22
24
  url: /quick-start/
@@ -31,15 +33,19 @@ blocks:
31
33
  title: A clear place for each part of a site
32
34
  items:
33
35
  - title: Pages use editable elements
36
+ icon: layout-grid
34
37
  text: Set the number of columns first, then choose elements and edit their content in each page file.
35
38
  url: /theme-development/
36
39
  - title: Posts use Markdown
40
+ icon: file-text
37
41
  text: Write long-form articles in Markdown and let the built-in renderer sanitize and format them.
38
42
  url: /project-introduction/
39
43
  - title: Themes own the design
44
+ icon: palette
40
45
  text: Build layouts with HTML partials and keep each theme's color palette in its stylesheet.
41
46
  url: /theme-development/
42
47
  - title: Integrations wait for consent
48
+ icon: shield-check
43
49
  text: Add tracking, statistics, advertising, or CAPTCHA services with provider details in configuration.
44
50
  url: /plugin-development/
45
51
  - columns: 2
@@ -81,4 +87,5 @@ blocks:
81
87
  - type: latest-posts
82
88
  title: Latest project updates
83
89
  count: 3
90
+ paginate: true
84
91
  ---
@@ -17,6 +17,8 @@ blocks:
17
17
  eyebrow: 为边缘网络构建
18
18
  title: 用清晰、可编辑的源文件构建快速网站。
19
19
  text: EdgePress 将 Markdown 文章、页面布局、主题和遵循同意状态的集成构建为由 Cloudflare Workers 提供服务的静态网站。
20
+ mascotSrc: /edgepress/brand/mascot.png
21
+ mascotAlt: EdgePress 吉祥物,一只由层叠折页构成、神情好奇的小鸟。
20
22
  cta:
21
23
  label: 从快速入门开始
22
24
  url: /quick-start/
@@ -31,15 +33,19 @@ blocks:
31
33
  title: 网站各部分各有清晰位置
32
34
  items:
33
35
  - title: 页面使用可编辑元素
36
+ icon: layout-grid
34
37
  text: 先设置栏数,再选择元素类型,并在各页面文件中编辑对应内容。
35
38
  url: /theme-development/
36
39
  - title: 文章使用 Markdown
40
+ icon: file-text
37
41
  text: 使用 Markdown 撰写长文,由内置渲染器进行清理和排版。
38
42
  url: /project-introduction/
39
43
  - title: 主题负责视觉设计
44
+ icon: palette
40
45
  text: 使用 HTML 局部模板构建布局,并将各主题的配色保留在样式表中。
41
46
  url: /theme-development/
42
47
  - title: 集成遵循用户同意
48
+ icon: shield-check
43
49
  text: 配置跟踪、统计、广告或人机验证服务及其供应商信息。
44
50
  url: /plugin-development/
45
51
  - columns: 2
@@ -81,4 +87,5 @@ blocks:
81
87
  - type: latest-posts
82
88
  title: 最新项目动态
83
89
  count: 3
84
- ---
90
+ paginate: true
91
+ ---
@@ -15,7 +15,7 @@ blocks:
15
15
  nameLabel: Controller
16
16
  contactLabel: Privacy contact
17
17
  missingTitle: Publication setup required
18
- missingText: The current config.yml has no real operator name or privacy contact, and site.url still uses example.com. Replace these values before publishing this policy.
18
+ missingText: config.yml still needs the site's real operator name and a working privacy contact. Add both before publishing this policy.
19
19
  - columns: 2
20
20
  cells:
21
21
  -
@@ -15,7 +15,7 @@ blocks:
15
15
  nameLabel: 个人信息处理者
16
16
  contactLabel: 隐私联系
17
17
  missingTitle: 发布前需要补充信息
18
- missingText: 当前 config.yml 尚未填写真实运营者名称和隐私联系方式,site.url 仍为 example.com。正式发布前请替换这些值。
18
+ missingText: config.yml 尚未填写真实运营者名称和有效的隐私联系方式。正式发布前请补充这两项信息。
19
19
  - columns: 2
20
20
  cells:
21
21
  -
@@ -39,6 +39,7 @@ blocks:
39
39
  - The shared layout renders every page and post. The head, header, and footer partials provide common site components. Configure the page-title suffix and separator, site title, shared navigation, language links, footer text, and component visibility in config.yml.
40
40
  - Use double-brace placeholders for escaped values. The approved raw placeholders are generated page content, JSON-LD, and EdgePress-generated navigation markup. Keep the skip link, one main landmark, labeled navigation, visible focus, and one page-level h1.
41
41
  - Keep the body as a full-height vertical layout and let main grow so the footer stays at the bottom on short pages.
42
+ - Style shared code blocks, copy buttons, and article contents in the theme. Code lines wrap on small viewports, copy controls have visible keyboard focus, and the generated post contents list links to heading anchors.
42
43
  -
43
44
  - type: section
44
45
  title: Choose a theme palette
@@ -103,4 +104,26 @@ blocks:
103
104
  - title: Preview the site
104
105
  text: The server watches source files, rebuilds the output, refreshes the browser, and updates the accessibility and agent-friendliness report.
105
106
  command: edgepress server
107
+ - columns: 1
108
+ cells:
109
+ -
110
+ - type: section
111
+ title: Use the shared icon library
112
+ tone: soft
113
+ text: EdgePress ships 22 local SVG icons at /edgepress/icons.svg. Theme navigation uses them automatically; feature-grid items can also name an icon, with no runtime package or third-party request.
114
+ blocks:
115
+ - type: code
116
+ title: Add a decorative icon to a theme partial
117
+ language: html
118
+ code: |
119
+ <svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
120
+ <use href="/edgepress/icons.svg#layers"></use>
121
+ </svg>
122
+ - type: code
123
+ title: Choose an icon for a feature card
124
+ language: yaml
125
+ code: |
126
+ - title: Posts use Markdown
127
+ icon: file-text
128
+ text: Write and publish an article.
106
129
  ---
@@ -39,6 +39,7 @@ blocks:
39
39
  - 共享布局会渲染所有页面和文章。head、header 和 footer 局部模板提供常见网站组件。在 config.yml 中配置页面标题后缀与分隔符、站点标题、全站导航、语言链接、页脚内容和组件显示状态。
40
40
  - 使用双花括号占位符输出经过转义的值。唯一允许的原样占位符是生成的页面内容、JSON-LD 和 EdgePress 生成的导航标记。保留跳转链接、唯一 main 主区域、带标签的导航、可见焦点和一个页面级 h1。
41
41
  - 将 body 保持为全高纵向布局,并让 main 延伸,这样短页面的页脚也会留在视口底部。
42
+ - 在主题中统一设计代码块、复制按钮和文章目录。窄屏代码行会自动折行,复制控件具有清晰的键盘焦点,生成的文章目录会链接到标题锚点。
42
43
  -
43
44
  - type: section
44
45
  title: 选择主题配色
@@ -103,4 +104,26 @@ blocks:
103
104
  - title: 预览网站
104
105
  text: server 会监视源文件、重新构建输出、刷新浏览器,并更新无障碍化和 agent 友好度报告。
105
106
  command: edgepress server
107
+ - columns: 1
108
+ cells:
109
+ -
110
+ - type: section
111
+ title: 使用共享图标库
112
+ tone: soft
113
+ text: EdgePress 随站点提供 22 个本地 SVG 图标 /edgepress/icons.svg。主题导航会自动使用图标;feature-grid 也可为功能卡片指定图标,不增加运行时依赖,也不会请求第三方服务器。
114
+ blocks:
115
+ - type: code
116
+ title: 在主题局部模板中添加装饰图标
117
+ language: html
118
+ code: |
119
+ <svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
120
+ <use href="/edgepress/icons.svg#layers"></use>
121
+ </svg>
122
+ - type: code
123
+ title: 为功能卡片指定图标
124
+ language: yaml
125
+ code: |
126
+ - title: 文章使用 Markdown
127
+ icon: file-text
128
+ text: 撰写并发布文章。
106
129
  ---
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  title: "EdgePress and Markdown: a complete writing guide"
3
+ author: toewpq
3
4
  date: 2026-09-23
4
5
  lang: en
5
6
  slug: markdown-syntax-guide
@@ -8,6 +9,7 @@ tags:
8
9
  - Markdown
9
10
  - writing guide
10
11
  description: "A hands-on guide to the Markdown syntax EdgePress renders, including GitHub Flavored Markdown, safe HTML, nested formatting, and its supported limits."
12
+
11
13
  ---
12
14
 
13
15
  EdgePress keeps **pages** and **posts** deliberately different. Pages use ordered, editable element blocks from their Markdown front matter. Posts use the Markdown renderer, so this article is also a working reference: every example below is rendered from a real post.
@@ -164,6 +166,6 @@ This is the complete enabled post dialect: CommonMark block and inline syntax pl
164
166
 
165
167
  ## Writing posts in EdgePress
166
168
 
167
- Create a post directory under `content/posts/` with one lowercase locale file such as `en.md` or `zh-cn.md`. Keep the `lang` front matter value matched to the locale filename. Add title, date, slug, tags, and an optional description above the Markdown body. Then run `edgepress build` to render the post, or `edgepress check` to build the site and generate the accessibility, agent-friendliness, responsive screenshot, and Markdown-rendering report.
169
+ Create a post directory under `content/posts/` with one lowercase locale file such as `en.md` or `zh-cn.md`. Keep the `lang` front matter value matched to the locale filename. Add title, author, date, slug, tags, and an optional description above the Markdown body. The author appears in article cards, article bylines, feeds, search data, and BlogPosting metadata. Then run `edgepress build` to render the post, or `edgepress check` to build the site and generate the accessibility, agent-friendliness, responsive screenshot, and Markdown-rendering report.
168
170
 
169
171
  The local article search reads the generated `search.json` file from this site and searches post titles and text in the browser. It does not send a query to a third-party service.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  title: "EdgePress 与 Markdown:完整写作指南"
3
+ author: toewpq
3
4
  date: 2026-09-23
4
5
  lang: zh-CN
5
6
  slug: markdown-syntax-guide
@@ -8,6 +9,7 @@ tags:
8
9
  - Markdown
9
10
  - 写作指南
10
11
  description: "通过可直接查看的示例,了解 EdgePress 支持的 Markdown、GitHub Flavored Markdown、安全 HTML、嵌套语法和功能边界。"
12
+
11
13
  ---
12
14
 
13
15
  EdgePress 对 **pages(页面)** 和 **posts(文章)** 采用不同的编辑方式。页面在 Markdown 前置资料中配置有序、可编辑的元素块;文章则使用 Markdown 渲染器。本文本身就是一篇实际渲染的文章,可作为语法参考。
@@ -164,6 +166,6 @@ GFM 也会把 `www.example.com` 与 `https://example.com` 转换成链接,并
164
166
 
165
167
  ## 在 EdgePress 中写文章
166
168
 
167
- 在 `content/posts/` 下为每篇文章建立目录,并放入 `en.md` 或 `zh-cn.md` 这样的语言文件。前置资料中的 `lang` 值必须与文件名匹配。添加标题、日期、网址别名、标签和可选摘要,再在前置资料之后编写 Markdown 正文。运行 `edgepress build` 生成文章;运行 `edgepress check` 则会构建网站,并输出无障碍、Agent 友好度、移动端截图与 Markdown 渲染报告。
169
+ 在 `content/posts/` 下为每篇文章建立目录,并放入 `en.md` 或 `zh-cn.md` 这样的语言文件。前置资料中的 `lang` 值必须与文件名匹配。添加标题、作者、日期、网址别名、标签和可选摘要,再在前置资料之后编写 Markdown 正文。作者会显示在文章卡片和文章页中,也会写入订阅源、搜索索引及 BlogPosting 结构化数据。运行 `edgepress build` 生成文章;运行 `edgepress check` 则会构建网站,并输出无障碍、Agent 友好度、移动端截图与 Markdown 渲染报告。
168
170
 
169
171
  本地文章搜索在浏览器中读取网站生成的 `search.json`,搜索文章标题和正文,不会把搜索词发送给第三方服务。
@@ -1,11 +1,13 @@
1
1
  ---
2
2
  title: EdgePress September 2026 update
3
+ author: toewpq
3
4
  date: 2026-09-24
4
5
  lang: en
5
6
  tags:
6
7
  - release
7
8
  - page builder
8
9
  - accessibility
10
+
9
11
  ---
10
12
  This is the first requested release update for September 2026.
11
13
 
@@ -1,11 +1,13 @@
1
1
  ---
2
2
  title: EdgePress 2026 年 9 月更新
3
+ author: toewpq
3
4
  date: 2026-09-24
4
5
  lang: zh-CN
5
6
  tags:
6
7
  - 发布
7
8
  - 页面构建器
8
9
  - 无障碍
10
+
9
11
  ---
10
12
  这是 2026 年 9 月针对本次需求的第一次更新。
11
13
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  title: "EdgePress September 2026 update: request 2"
3
+ author: toewpq
3
4
  date: 2026-09-25
4
5
  lang: en
5
6
  slug: edgepress-release-2026-9-2
@@ -7,6 +8,7 @@ tags:
7
8
  - release
8
9
  - responsive design
9
10
  - Markdown
11
+
10
12
  ---
11
13
 
12
14
  This is the second requested EdgePress update for September 2026.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  title: EdgePress 2026 年 9 月更新:第 2 次需求
3
+ author: toewpq
3
4
  date: 2026-09-25
4
5
  lang: zh-CN
5
6
  slug: edgepress-release-2026-9-2
@@ -7,6 +8,7 @@ tags:
7
8
  - 发布
8
9
  - 移动端适配
9
10
  - Markdown
11
+
10
12
  ---
11
13
 
12
14
  这是 EdgePress 在 2026 年 9 月针对第 2 次需求的更新。
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  title: "EdgePress September 2026 update: request 3"
3
+ author: toewpq
3
4
  date: 2026-09-25
4
5
  lang: en
5
6
  slug: edgepress-release-2026-9-3
@@ -7,6 +8,7 @@ tags:
7
8
  - release
8
9
  - npm
9
10
  - themes
11
+
10
12
  ---
11
13
 
12
14
  This is the third requested EdgePress update for September 2026.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  title: EdgePress 2026 年 9 月更新:第 3 次需求
3
+ author: toewpq
3
4
  date: 2026-09-25
4
5
  lang: zh-CN
5
6
  slug: edgepress-release-2026-9-3
@@ -7,6 +8,7 @@ tags:
7
8
  - 发布
8
9
  - npm
9
10
  - 主题
11
+
10
12
  ---
11
13
 
12
14
  这是 EdgePress 在 2026 年 9 月针对第 3 次需求的更新。
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  title: "EdgePress September 2026 update: request 4"
3
+ author: toewpq
3
4
  date: 2026-09-25
4
5
  lang: en
5
6
  slug: edgepress-release-2026-9-4
@@ -7,6 +8,7 @@ tags:
7
8
  - release
8
9
  - reports
9
10
  - cloudflare
11
+
10
12
  ---
11
13
 
12
14
  This is the fourth requested EdgePress update for September 2026.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  title: EdgePress 2026 年 9 月更新:第 4 次需求
3
+ author: toewpq
3
4
  date: 2026-09-25
4
5
  lang: zh-CN
5
6
  slug: edgepress-release-2026-9-4
@@ -7,6 +8,7 @@ tags:
7
8
  - 发布
8
9
  - 报告
9
10
  - Cloudflare
11
+
10
12
  ---
11
13
 
12
14
  这是 EdgePress 在 2026 年 9 月针对第 4 次需求的更新。
@@ -1,11 +1,13 @@
1
1
  ---
2
2
  title: "EdgePress September 2026 update: request 5"
3
+ author: toewpq
3
4
  date: 2026-09-25
4
5
  lang: en
5
6
  slug: edgepress-release-2026-9-5
6
7
  tags:
7
8
  - release
8
9
  - cloudflare
10
+
9
11
  ---
10
12
 
11
13
  This is the fifth requested EdgePress update for September 2026.
@@ -1,11 +1,13 @@
1
1
  ---
2
2
  title: EdgePress 2026 年 9 月更新:第 5 次需求
3
+ author: toewpq
3
4
  date: 2026-09-25
4
5
  lang: zh-CN
5
6
  slug: edgepress-release-2026-9-5
6
7
  tags:
7
8
  - 发布
8
9
  - Cloudflare
10
+
9
11
  ---
10
12
 
11
13
  这是 EdgePress 在 2026 年 9 月针对第 5 次需求的更新。
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: "EdgePress September 2026 update: request 6"
3
+ author: toewpq
4
+ date: 2026-09-25
5
+ lang: en
6
+ slug: edgepress-release-2026-9-6
7
+ tags:
8
+ - release
9
+ - themes
10
+
11
+ ---
12
+
13
+ This is the sixth requested EdgePress update for September 2026.
14
+
15
+ ## Navigation and article reading
16
+
17
+ The shared navigation now includes a localized Posts link to the article archive. Markdown post pages generate a linked contents list from their headings.
18
+
19
+ ## Code blocks and small screens
20
+
21
+ Generated code blocks now have an accessible copy button. Theme styles wrap long command lines so the full command remains readable on narrow screens without horizontal dragging. The theme development guide describes the shared behavior.
22
+
23
+ The project compatibility history is updated to version `2026.9.6`.
24
+
25
+ ## Site identity and themes
26
+
27
+ The starter canonical URL is `https://edgepress.js.gripe` and the configured author is `toewpq`. The bundled themes have refreshed, higher-contrast palettes. The privacy policy continues to call for a real operator name and working privacy contact before publication.
28
+
29
+ ## A clearer visual identity and reading path
30
+
31
+ The site now shares a local set of 22 SVG icons across theme navigation and feature cards. A page-shaped project mark, folded-paper sparrow mascot, and Open Graph image give the project a consistent preview on the homepage and when shared. Latest-post lists link into older archive pages, and localized post metadata now names each article's author.
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: EdgePress 2026 年 9 月更新:第 6 次需求
3
+ author: toewpq
4
+ date: 2026-09-25
5
+ lang: zh-CN
6
+ slug: edgepress-release-2026-9-6
7
+ tags:
8
+ - 发布
9
+ - 主题
10
+
11
+ ---
12
+
13
+ 这是 EdgePress 在 2026 年 9 月针对第 6 次需求的更新。
14
+
15
+ ## 导航和文章阅读
16
+
17
+ 全站导航新增本地化的文章入口,指向文章归档页。Markdown 文章页会根据标题生成可跳转的目录。
18
+
19
+ ## 代码块和小屏显示
20
+
21
+ 生成的代码块新增无障碍复制按钮。主题样式会自动折行显示较长命令,窄屏下无需左右拖动即可阅读完整内容。主题开发指南也已补充对应说明。
22
+
23
+ 项目兼容性历史已更新至 `2026.9.6`。
24
+
25
+ ## 站点信息和主题配色
26
+
27
+ 起始配置的规范网址为 `https://edgepress.js.gripe`,作者设为 `toewpq`。内置主题已换成对比度更清晰、视觉更鲜明的新配色。隐私政策仍会提示:发布前需要填写真实运营者名称和有效的隐私联系方式。
28
+
29
+ ## 更清晰的视觉识别与阅读路径
30
+
31
+ 网站现在使用一组本地 22 枚 SVG 图标,为主题导航和功能卡片提供一致的图形语言。页面式项目图标、折页纸鸟吉祥物和 OG 分享图让首页与链接预览拥有统一的识别形象。首页文章列表可继续翻看旧文章,本地化文章元数据也会标明作者。
@@ -24,6 +24,7 @@
24
24
  "searchResultCount": "Matching articles: {count}.",
25
25
  "markdownTaskComplete": "Task complete",
26
26
  "markdownTaskIncomplete": "Task incomplete",
27
+ "postContents": "On this page",
27
28
  "feed": "Atom feed",
28
29
  "languageName": "English",
29
30
  "mainNavigationLabel": "Main navigation",
@@ -33,6 +34,7 @@
33
34
  "pagination": "Pagination",
34
35
  "pages": "Project pages",
35
36
  "latestPosts": "Latest posts",
37
+ "postAuthor": "By {author}",
36
38
  "privacySettings": "Privacy settings",
37
39
  "privacyNotice": "Optional services",
38
40
  "privacyIntro": "Choose which optional services may load. Nothing is enabled until you save or accept your choices.",
@@ -24,6 +24,7 @@
24
24
  "searchResultCount": "匹配文章数:{count}。",
25
25
  "markdownTaskComplete": "任务已完成",
26
26
  "markdownTaskIncomplete": "任务未完成",
27
+ "postContents": "文章目录",
27
28
  "feed": "Atom 订阅",
28
29
  "languageName": "简体中文",
29
30
  "mainNavigationLabel": "主导航",
@@ -33,6 +34,7 @@
33
34
  "pagination": "分页导航",
34
35
  "pages": "项目文档",
35
36
  "latestPosts": "最新文章",
37
+ "postAuthor": "作者:{author}",
36
38
  "privacySettings": "隐私设置",
37
39
  "privacyNotice": "可选服务",
38
40
  "privacyIntro": "请选择允许加载的可选服务。保存或接受之前,不会启用任何服务。",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edgepress",
3
- "version": "2026.9.5",
3
+ "version": "2026.9.6",
4
4
  "description": "A static website builder for Cloudflare Workers with editable pages, Markdown posts, local search, themes, and consent-gated integrations.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -17,7 +17,8 @@
17
17
  "edgepress.config.mjs",
18
18
  "project-compatibility.json",
19
19
  "wrangler.jsonc",
20
- "README.md"
20
+ "README.md",
21
+ "CHANGELOG.txt"
21
22
  ],
22
23
  "repository": {
23
24
  "type": "git",
@@ -53,6 +54,7 @@
53
54
  "yaml": "^2.9.1"
54
55
  },
55
56
  "devDependencies": {
57
+ "playwright": "^1.63.0",
56
58
  "wrangler": "^4.129.1"
57
59
  }
58
60
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "frameworkVersion": "2026.9.5",
3
+ "frameworkVersion": "2026.9.6",
4
4
  "requirements": {
5
5
  "nodeMajor": 22,
6
6
  "nodeMinimumVersion": "22.12.0",
@@ -25,7 +25,9 @@
25
25
  { "name": "Compact localized language selector", "stage": "experimental", "since": "2026.9.2" },
26
26
  { "name": "npm theme installation and blank theme scaffolds", "stage": "experimental", "since": "2026.9.3" },
27
27
  { "name": "PDF-only audit output and temporary screenshot capture", "stage": "experimental", "since": "2026.9.4" },
28
- { "name": "Cloudflare one-click deployment guidance for existing and new projects", "stage": "stable", "since": "2026.9.5" }
28
+ { "name": "Cloudflare one-click deployment guidance for existing and new projects", "stage": "stable", "since": "2026.9.5" },
29
+ { "name": "Localized Posts navigation and responsive code copy controls", "stage": "experimental", "since": "2026.9.6" },
30
+ { "name": "Linked tables of contents on Markdown post pages", "stage": "experimental", "since": "2026.9.6" }
29
31
  ],
30
32
  "releaseHistory": [
31
33
  {
@@ -57,6 +59,12 @@
57
59
  "date": "2026-09-25",
58
60
  "request": 5,
59
61
  "notes": "Clarify that the Cloudflare one-click deployment button creates a new repository copy and Worker, explain unique naming and the path for updating existing Workers, and publish the guidance in README and bilingual quick-start pages."
62
+ },
63
+ {
64
+ "version": "2026.9.6",
65
+ "date": "2026-09-25",
66
+ "request": 6,
67
+ "notes": "Add a localized Posts link, accessible code-copy controls, responsive command wrapping, and linked post contents; refresh the bundled theme palettes and set the canonical site URL and author metadata."
60
68
  }
61
69
  ]
62
70
  }
package/src/cli.js CHANGED
@@ -322,6 +322,11 @@ async function showReport(title, report, reportPath) {
322
322
  console.log('Report: ' + reportPath);
323
323
  }
324
324
 
325
+ function showStatus(title, report) {
326
+ console.log(title + ': ' + report.status);
327
+ for (const issue of report.issues) console.log('- ' + issue.severity + ': ' + issue.message);
328
+ }
329
+
325
330
  const [command, ...args] = process.argv.slice(2);
326
331
  try {
327
332
  const config = command === 'new' || command === 'clean' || command === 'check' || command === 'doctor' || command === 'iterate'
@@ -350,11 +355,11 @@ try {
350
355
  const pageReport = await checkPages(config);
351
356
  const compatibilityReport = await checkCompatibility(config);
352
357
  await showReport('Page check', pageReport, resolve(config.root, 'tools/page-check.pdf'));
353
- await showReport('Compatibility check', compatibilityReport, resolve(config.resolvedPaths.cache, 'reports/compatibility.md'));
358
+ showStatus('Compatibility check', compatibilityReport);
354
359
  if (pageReport.errors || compatibilityReport.issues.some((issue) => issue.severity === 'error')) process.exitCode = 1;
355
360
  } else if (command === 'doctor') {
356
361
  const report = await checkCompatibility(config);
357
- await showReport('Compatibility check', report, resolve(config.resolvedPaths.cache, 'reports/compatibility.md'));
362
+ showStatus('Compatibility check', report);
358
363
  if (report.issues.some((issue) => issue.severity === 'error')) process.exitCode = 1;
359
364
  } else if (command === 'iterate') {
360
365
  await buildSite(config.root);