edgepress 2026.9.6 → 2026.9.10

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 (51) hide show
  1. package/README.md +4 -4
  2. package/config.yml +122 -64
  3. package/content/pages/home/en.md +9 -1
  4. package/content/pages/home/zh-cn.md +18 -10
  5. package/content/pages/plugin-development/en.md +5 -4
  6. package/content/pages/plugin-development/zh-cn.md +5 -4
  7. package/content/pages/privacy-policy/en.md +47 -27
  8. package/content/pages/privacy-policy/zh-cn.md +50 -30
  9. package/content/pages/project-introduction/en.md +1 -1
  10. package/content/pages/project-introduction/zh-cn.md +1 -1
  11. package/content/pages/theme-development/en.md +2 -0
  12. package/content/pages/theme-development/zh-cn.md +2 -0
  13. package/content/posts/2026-09-23-edgepress-on-the-edge/en.md +9 -1
  14. package/content/posts/2026-09-23-edgepress-on-the-edge/zh-cn.md +9 -1
  15. package/content/posts/2026-09-25-edgepress-release-2026-9-6/en.md +2 -2
  16. package/content/posts/2026-09-25-edgepress-release-2026-9-6/zh-cn.md +2 -2
  17. package/content/posts/2026-09-26-edgepress-release-2026-9-7/en.md +26 -0
  18. package/content/posts/2026-09-26-edgepress-release-2026-9-7/zh-cn.md +26 -0
  19. package/content/posts/2026-09-26-edgepress-release-2026-9-8/en.md +26 -0
  20. package/content/posts/2026-09-26-edgepress-release-2026-9-8/zh-cn.md +26 -0
  21. package/content/posts/2026-09-26-edgepress-release-2026-9-9/en.md +30 -0
  22. package/content/posts/2026-09-26-edgepress-release-2026-9-9/zh-cn.md +30 -0
  23. package/content/posts/2026-09-27-edgepress-release-2026-9-10/en.md +31 -0
  24. package/content/posts/2026-09-27-edgepress-release-2026-9-10/zh-cn.md +31 -0
  25. package/languages/base/en.json +16 -7
  26. package/languages/packs/zh-CN.json +15 -6
  27. package/package.json +2 -3
  28. package/plugins/consent/index.js +19 -3
  29. package/project-compatibility.json +33 -3
  30. package/src/build.js +5 -4
  31. package/src/cli.js +1 -11
  32. package/src/config.js +81 -14
  33. package/src/content.js +22 -1
  34. package/src/generators.js +38 -26
  35. package/src/i18n.js +6 -0
  36. package/src/markdown.js +88 -9
  37. package/src/page-blocks.js +89 -26
  38. package/src/page-check.js +75 -24
  39. package/src/report-visuals.js +111 -16
  40. package/src/theme.js +12 -4
  41. package/static/edgepress/brand/mascot-209.webp +0 -0
  42. package/static/edgepress/brand/mascot-418.png +0 -0
  43. package/static/edgepress/brand/mascot-418.webp +0 -0
  44. package/static/edgepress/icons.svg +2 -2
  45. package/static/edgepress/plugins/consent/manager.js +229 -76
  46. package/static/edgepress/plugins/statistics/cloudflare-web-analytics.js +1 -0
  47. package/static/edgepress/post-toc.js +37 -0
  48. package/themes/atelier/assets/style.css +77 -26
  49. package/themes/default/assets/style.css +77 -26
  50. package/themes/signal/assets/style.css +77 -26
  51. package/CHANGELOG.txt +0 -12
@@ -2,72 +2,92 @@
2
2
  title: 隐私政策
3
3
  lang: zh-CN
4
4
  slug: privacy-policy
5
- description: 本 EdgePress 网站当前的数据处理方式、同意管理、已配置集成和发布前信息。
5
+ description: 说明本网站如何处理请求数据、同意偏好、可选统计服务、个人权利和供应商信息。
6
6
  blocks:
7
7
  - columns: 1
8
8
  cells:
9
9
  -
10
10
  - type: section
11
- title: 网站运营者
11
+ title: 个人信息处理者与联系
12
12
  tone: soft
13
13
  blocks:
14
14
  - type: privacy-controller
15
- nameLabel: 个人信息处理者
15
+ nameLabel: 处理者
16
16
  contactLabel: 隐私联系
17
17
  missingTitle: 发布前需要补充信息
18
- missingText: config.yml 尚未填写真实运营者名称和有效的隐私联系方式。正式发布前请补充这两项信息。
18
+ missingText: 正式发布前,请在 config.yml 中填写负责个人或组织的真实名称和有效隐私联系方式。
19
+ - type: text
20
+ text: 请确认上方名称能识别负责的个人或法律实体。若运营者情形适用,还应在本政策中补充邮寄地址、欧盟代表或数据保护官的联系方式。
19
21
  - columns: 2
20
22
  cells:
21
23
  -
22
24
  - type: section
23
- title: 此起始站点当前的功能
25
+ title: 网站请求与处理依据
24
26
  blocks:
25
27
  - type: text
26
28
  paragraphs:
27
- - 此源项目生成公开页面、文章、搜索数据、站点地图和 Atom 订阅。它不包含访客账户系统、评论功能或联系表单。
28
- - Worker 提供可选的 /api/v1/ 后端代理。只有部署者配置 Service Binding,或同时设置 BACKEND_URL 和 BACKEND_TOKEN 密钥后,代理才会转发请求。此起始站点不会将页面内容提交到该接口。
29
- - 托管和内容分发服务商可能为运行网站而处理连接和请求数据。运营者应在发布前确认实际服务商,说明适用条款和数据保留期限。
29
+ - 本网站发布页面和文章,并提供在访客浏览器中运行的站内搜索。本构建版本没有访客账户、评论或联系表单。
30
+ - 为传送和保护网站,托管及网络服务商会收到请求数据,例如 IP 地址、请求路径、请求时间以及浏览器或设备请求头。在 GDPR 适用时,运营者以提供安全、可靠网站服务的合法利益为依据(第 6 条第 1 款 (f) 项);运营者应记录利益衡量,并在部署账户中确认实际日志内容与保留期限。
31
+ - 下方列出的可选浏览器服务只有在访客主动选择后才加载。若相关处理涉及个人数据且以同意为法律依据,则依据第 6 条第 1 款 (a) 项处理。拒绝可选服务不会阻止访问网站基本页面。
30
32
  -
31
33
  - type: section
32
34
  title: 可选浏览器服务
33
35
  blocks:
34
36
  - type: text
35
- text: 当前配置的跟踪、统计、广告和人机验证服务列表均为空。运营者添加服务后,下方列表会根据所配置的供应商、用途和保留期限自动生成。
37
+ text: 此列表根据 config.yml 中启用的服务生成,列明处理目的、数据类别、接收方、保留期限及供应商自己的隐私说明。
36
38
  - type: privacy-services
37
- emptyText: 此源项目当前没有配置可选的第三方浏览器服务。
39
+ emptyText: 当前没有配置可选的第三方浏览器服务。
38
40
  - columns: 1
39
41
  cells:
40
42
  -
41
43
  - type: section
42
- title: 同意偏好
44
+ title: Cloudflare 网站分析
45
+ blocks:
46
+ - type: text
47
+ paragraphs:
48
+ - 访客接受后,Cloudflare 信标会报告页面浏览和浏览器性能指标。Cloudflare 公布的报告维度包括页面路径、来源页、设备、浏览器、操作系统和国家或地区。Cloudflare 表示,信标会在正常 HTTP 请求中接收来源 IP,在最近的数据中心丢弃该 IP,且不会将其保存到核心数据库或日志中;Cloudflare 也表示该信标不会使用浏览器存储。
49
+ - Cloudflare 表示未采样信标数据保留 7 天,之后汇总为约 10% 的长期数据;仪表板可查看最近 6 个月的数据。信标可能在访客所在国家或地区以外处理。发布前,运营者应核实实际 Cloudflare 账户、套餐和适用的数据处理条款。
50
+ - columns: 2
51
+ cells:
52
+ -
53
+ - type: section
54
+ title: 同意、保留期限与跨境传输
43
55
  tone: accent
44
56
  blocks:
45
57
  - type: text
46
58
  paragraphs:
47
- - 浏览器集成只有在访客接受已配置服务后才会加载。存在可保存的选择时,同意界面会将第一方偏好存储在本地浏览器中;它不是服务器端审计日志。
48
- - 访客可以重新打开“隐私设置”更改选择。撤回之前已启用的服务后,页面会重新载入,以停止该集成继续运行。
59
+ - 隐私选择保存在访客当前设备的浏览器中,并遵循所配置的期限。本网站不会将这项选择发送给运营者,也不会在服务器保存回执。访客可重新打开“隐私设置”修改或撤回选择;撤回后,页面重新载入以停止已启用的集成。若运营者依赖同意处理个人数据,必须确保能够按照 GDPR 第 7 条证明已取得同意。
60
+ - 托管和安全日志的保留期取决于部署服务商账户,本源配置没有设置该期限。Cloudflare 数据处理附录说明了受限传输的保障机制,包括标准合同条款;运营者应核实本部署适用的协议和保障措施。
49
61
  - type: privacy-consent
50
- storageLabel: 浏览器存储键
51
- expiryLabel: 偏好过期时间
52
- versionLabel: 同意配置版本
53
- expiryText: "保存后 {days} 天"
54
- - columns: 1
55
- cells:
62
+ storageLabel: 保存位置
63
+ expiryLabel: 偏好有效期
64
+ proposedDateLabel: 告知拟定日期
65
+ effectiveDateLabel: 告知生效日期
66
+ expiryText: 保存后 {days} 天
56
67
  -
57
68
  - type: section
58
- title: 供应商与法律信息
69
+ title: 你的权利
59
70
  blocks:
60
71
  - type: text
61
72
  paragraphs:
62
- - 启用供应商前,运营者应记录供应商接收的信息、处理目的、接收方、适用保留期限和跨境传输情况。浏览器配置中只能填写公开站点标识;CAPTCHA 密钥必须保存在可信服务器中,并由服务器验证每个响应令牌。
63
- - 此起始配置无法确定实际部署的运营者所在地、法律依据、数据保留义务或适用的个人权利。请根据实际网站完成政策,必要时咨询合格的专业人员。
73
+ - GDPR 适用时,你可以请求访问、更正、删除或限制处理,也可以在适用条件下反对处理。满足法律条件时,你可以请求数据可携;你也可以随时撤回同意,撤回不影响撤回前基于同意进行的合法处理。
74
+ - 如需行使权利或提出问题,请使用上方的处理者联系方式。你也可以向有管辖权的数据保护监管机构投诉,包括你居住或工作的欧盟国家,或你认为发生违规的国家。
75
+ - 本网站当前未配置会产生法律影响或类似重大影响的纯自动化决策。如果此情况改变,或网站新增账户、表单等数据用途,运营者应更新本告知。
76
+ - columns: 1
77
+ cells:
78
+ -
79
+ - type: section
80
+ title: 法律与供应商资料
81
+ blocks:
64
82
  - type: link-list
65
- title: 主要法律资料
83
+ title: 官方资料
66
84
  items:
67
- - label: EUR-Lex GDPR 正文
68
- url: https://eur-lex.europa.eu/eli/reg/2016/679
69
- - label: 英国 ICO 隐私告知指引
70
- url: https://ico.org.uk/for-organisations/advice-for-small-organisations/getting-started-with-gdpr/data-protection-self-assessment/what-information-you-must-supply-under-the-gdpr/
71
- - label: 中国个人信息保护法
72
- url: https://www.miit.gov.cn/jgsj/zfs/fl/art/2022/art_515a4b20c12f430eab54bb4f56d89f56.html
73
- ---
85
+ - label: 欧盟《通用数据保护条例》(EUR-Lex)
86
+ url: https://eur-lex.europa.eu/eli/reg/2016/679/oj/eng
87
+ - label: Cloudflare RUM 信标隐私说明
88
+ url: https://developers.cloudflare.com/speed/observatory/rum-beacon/
89
+ - label: Cloudflare 网站分析保留期限与常见问题
90
+ url: https://developers.cloudflare.com/web-analytics/faq/
91
+ - label: Cloudflare 数据处理附录
92
+ url: https://www.cloudflare.com/cloudflare-customer-dpa/
93
+ ---
@@ -82,7 +82,7 @@ blocks:
82
82
  - No longer shipped; the compatibility manifest records the removal release.
83
83
  - type: text
84
84
  paragraphs:
85
- - "Monthly releases use the year.month.request format. This release is 2026.9.1: the first requested release update for September 2026."
85
+ - "Monthly releases use the year.month.request format. This release is 2026.9.10: the tenth requested release update for September 2026."
86
86
  - Ship a minor release when the monthly review is ready, and use patch releases for defects, security fixes, and dependency updates. Support the previous major release with security fixes for 12 months after a new major line begins.
87
87
  - Before a release, update project-compatibility.json and this feature matrix together. Run edgepress doctor to review the local Node.js version, Worker entry, and configured compatibility date.
88
88
  ---
@@ -82,7 +82,7 @@ blocks:
82
82
  - 不再随项目发布;兼容性清单记录移除版本。
83
83
  - type: text
84
84
  paragraphs:
85
- - 月度版本使用“年.月.请求序号”格式。本次版本为 2026.9.1,即 2026 年 9 月针对本次需求的第一次更新。
85
+ - 月度版本使用“年.月.请求序号”格式。本次版本为 2026.9.10,即 2026 年 9 月针对本次需求的第十次更新。
86
86
  - 月度审核就绪后发布次版本;缺陷、安全修复和依赖更新使用修订版本。新主版本发布后,前一主版本继续获得 12 个月的安全修复支持。
87
87
  - 发布前应同步更新 project-compatibility.json 和此功能清单。运行 edgepress doctor 可检查本机 Node.js 版本、Worker 入口和兼容日期。
88
88
  ---
@@ -38,6 +38,7 @@ blocks:
38
38
  paragraphs:
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
+ - Page-block links can use /[launge]/quick-start/. The generated page replaces [launge] with the current language path and removes the segment for the default language, so the same link works in both locales.
41
42
  - Keep the body as a full-height vertical layout and let main grow so the footer stays at the bottom on short pages.
42
43
  - 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.
43
44
  -
@@ -66,6 +67,7 @@ blocks:
66
67
  - Each page and locale is a Markdown file, but the page body after front matter must stay empty. The editor data lives in its blocks YAML.
67
68
  - "Order the data from the outside inward: set each row's columns count first, provide one cells entry per column, select an element type inside a cell, then edit that element's fields. The validator rejects mismatched column counts and empty cells."
68
69
  - Pages do not use the post Markdown renderer. Posts remain Markdown articles and use the built-in sanitizing renderer.
70
+ - Hero blocks can use mascotWebpSrcset with ascending path-and-width candidates, mascotSizes matching the rendered width, and mascotWidth/mascotHeight matching the fallback image. mascotSrc remains the fallback for browsers without WebP support.
69
71
  - type: data-table
70
72
  title: Available element families
71
73
  headers:
@@ -38,6 +38,7 @@ blocks:
38
38
  paragraphs:
39
39
  - 共享布局会渲染所有页面和文章。head、header 和 footer 局部模板提供常见网站组件。在 config.yml 中配置页面标题后缀与分隔符、站点标题、全站导航、语言链接、页脚内容和组件显示状态。
40
40
  - 使用双花括号占位符输出经过转义的值。唯一允许的原样占位符是生成的页面内容、JSON-LD 和 EdgePress 生成的导航标记。保留跳转链接、唯一 main 主区域、带标签的导航、可见焦点和一个页面级 h1。
41
+ - 页面块中的站内链接可写成 /[launge]/quick-start/。生成页面会把 [launge] 替换为当前语言路径;默认语言会移除该段,因此同一链接可用于中英文页面。
41
42
  - 将 body 保持为全高纵向布局,并让 main 延伸,这样短页面的页脚也会留在视口底部。
42
43
  - 在主题中统一设计代码块、复制按钮和文章目录。窄屏代码行会自动折行,复制控件具有清晰的键盘焦点,生成的文章目录会链接到标题锚点。
43
44
  -
@@ -66,6 +67,7 @@ blocks:
66
67
  - 每个页面和语言版本都是一个 Markdown 文件,但 front matter 之后必须保持空白。页面编辑数据放在 YAML blocks 中。
67
68
  - 数据从外向内排列:先设每行的 columns 栏数,再为每栏设置一个 cells 项,然后在栏内选择元素类型,最后编辑该元素字段。验证器会拒绝栏数不匹配或空白的栏。
68
69
  - 页面不使用文章 Markdown 渲染器。文章仍使用 Markdown 撰写,并由内置安全渲染器输出。
70
+ - hero 元素可用 mascotWebpSrcset 提供按宽度递增的路径候选项,并设置与显示宽度一致的 mascotSizes,以及匹配备用图片尺寸的 mascotWidth 和 mascotHeight。mascotSrc 会留作不支持 WebP 的浏览器备用图。
69
71
  - type: data-table
70
72
  title: 可用元素类别
71
73
  headers:
@@ -104,6 +104,14 @@ Images use the same shape as links, with an exclamation mark and useful alternat
104
104
 
105
105
  ![A diagram showing Markdown source passing through EdgePress rendering and HTML sanitization to a published post](/edgepress-markdown-guide.svg "The EdgePress post pipeline")
106
106
 
107
+ Posts also accept a direct video file in the same image-shaped syntax. The alt text describes the video for assistive technology, and the optional title becomes its caption:
108
+
109
+ ```markdown
110
+ ![A kite passing over a field](https://media.example.org/field-recording.mp4 "Wind test, early morning")
111
+ ```
112
+
113
+ MP4, WebM, OGV, and OGG files are rendered in a native video player with controls. Media uses `preload="none"` so the browser waits for playback before downloading the video. Embedded video players and arbitrary iframe markup are not supported.
114
+
107
115
  ## Lists, including nested combinations
108
116
 
109
117
  Start unordered items with `-`, `+`, or `*`; start ordered items with a number and a period. Indent child items by at least two spaces. Inline emphasis, code, and links work inside either level:
@@ -160,7 +168,7 @@ Small semantic HTML elements such as <kbd>Ctrl</kbd> can be useful inside Markdo
160
168
 
161
169
  <script>alert('unsafe');</script>
162
170
 
163
- Use a page's media-text element for video; embedded frames and arbitrary scripts are not allowed in posts.
171
+ Use the Markdown image-shaped syntax above for a direct video file; embedded frames and arbitrary scripts are not allowed in posts.
164
172
 
165
173
  This is the complete enabled post dialect: CommonMark block and inline syntax plus GFM tables, autolinks, task lists, and strikethrough. Extensions such as footnotes, math notation, Mermaid diagrams, underline syntax, and definition lists are not enabled by this project. They remain ordinary text unless you add a trusted renderer extension.
166
174
 
@@ -104,6 +104,14 @@ CommonMark 也支持每行缩进四个空格的代码块:
104
104
 
105
105
  ![Markdown 源文件依次经过 EdgePress 渲染与 HTML 清理,生成发布文章的流程图](/edgepress-markdown-guide.svg "EdgePress 文章生成流程")
106
106
 
107
+ 文章也支持使用图片形状的 Markdown 语法插入直接视频文件。替代文字用于向辅助技术描述视频,可选标题会显示为视频说明:
108
+
109
+ ```markdown
110
+ ![一只风筝掠过田野](https://media.example.org/field-recording.mp4 "清晨的风况测试")
111
+ ```
112
+
113
+ MP4、WebM、OGV 和 OGG 文件会渲染为带控制按钮的原生视频播放器,并设置 `preload="none"`,在访客播放前不预加载视频。文章不支持嵌入式播放器或任意 iframe 标记。
114
+
107
115
  ## 列表与嵌套组合
108
116
 
109
117
  无序列表项以 `-`、`+` 或 `*` 开头;有序列表项以数字和句点开头。子项目缩进至少两个空格。两种列表都可以包含强调、代码和链接:
@@ -160,7 +168,7 @@ GFM 也会把 `www.example.com` 与 `https://example.com` 转换成链接,并
160
168
 
161
169
  <script>alert('unsafe');</script>
162
170
 
163
- 视频请使用页面的「媒体与文字」元素;文章不允许嵌入框架或任意脚本。
171
+ 视频请使用上面的图片形状 Markdown 语法;文章不允许嵌入播放器框架或任意脚本。
164
172
 
165
173
  本项目启用的文章语法范围是:CommonMark 的块级和行内语法,加上 GFM 表格、自动链接、任务列表与删除线。脚注、数学公式、Mermaid 图表、下划线语法和定义列表等扩展没有启用;除非添加受信任的渲染扩展,否则它们会作为普通文字显示。
166
174
 
@@ -22,9 +22,9 @@ Generated code blocks now have an accessible copy button. Theme styles wrap long
22
22
 
23
23
  The project compatibility history is updated to version `2026.9.6`.
24
24
 
25
- ## Site identity and themes
25
+ ## Theme palettes
26
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.
27
+ The bundled themes have refreshed, higher-contrast palettes.
28
28
 
29
29
  ## A clearer visual identity and reading path
30
30
 
@@ -22,9 +22,9 @@ tags:
22
22
 
23
23
  项目兼容性历史已更新至 `2026.9.6`。
24
24
 
25
- ## 站点信息和主题配色
25
+ ## 主题配色
26
26
 
27
- 起始配置的规范网址为 `https://edgepress.js.gripe`,作者设为 `toewpq`。内置主题已换成对比度更清晰、视觉更鲜明的新配色。隐私政策仍会提示:发布前需要填写真实运营者名称和有效的隐私联系方式。
27
+ 内置主题已换成对比度更清晰、视觉更鲜明的新配色。
28
28
 
29
29
  ## 更清晰的视觉识别与阅读路径
30
30
 
@@ -0,0 +1,26 @@
1
+ ---
2
+ title: "EdgePress September 2026 update: request 7"
3
+ author: toewpq
4
+ date: 2026-09-26
5
+ lang: en
6
+ slug: edgepress-release-2026-9-7
7
+ tags:
8
+ - release
9
+ - performance
10
+ - privacy
11
+
12
+ ---
13
+
14
+ This is the seventh requested EdgePress update for September 2026.
15
+
16
+ ## Consent and privacy disclosures
17
+
18
+ Cloudflare Web Analytics is configured as a statistics service and remains behind the visitor's explicit consent. Browser service groups now live under `plugins.consent` in `config.yml`. The privacy policy lists each enabled service's provider, category, purpose, and retention period when the site is built.
19
+
20
+ ## Images and article lists
21
+
22
+ The homepage uses smaller responsive mascot images. Article archives are sorted newest-first across all available languages, while homepage latest-post lists stay in the current language. Post excerpts now remove Markdown syntax before display.
23
+
24
+ ## Mobile controls and maintenance
25
+
26
+ The consent panel has a responsive mobile layout, clearer service details, and larger touch targets. The unused integrations directory and obsolete cleanup paths for retired audit files have been removed.
@@ -0,0 +1,26 @@
1
+ ---
2
+ title: EdgePress 2026 年 9 月更新:第 7 次需求
3
+ author: toewpq
4
+ date: 2026-09-26
5
+ lang: zh-CN
6
+ slug: edgepress-release-2026-9-7
7
+ tags:
8
+ - 发布
9
+ - 性能
10
+ - 隐私
11
+
12
+ ---
13
+
14
+ 这是 EdgePress 在 2026 年 9 月针对第 7 次需求的更新。
15
+
16
+ ## 同意管理和隐私披露
17
+
18
+ Cloudflare Web Analytics 已作为统计服务接入,并继续等待访客明确同意后才会加载。`config.yml` 中的浏览器服务组现在统一放在 `plugins.consent` 下。每次构建时,隐私政策都会列出已启用服务的供应商、类别、用途和保留期限。
19
+
20
+ ## 图片和文章列表
21
+
22
+ 首页现在使用较小的自适应吉祥物图片。文章归档会跨语言按发布时间从新到旧排列;首页最新文章列表仍按当前语言显示。文章摘要在显示前会去除 Markdown 标记。
23
+
24
+ ## 移动端控件和维护
25
+
26
+ 同意面板改进了移动端布局和服务说明,并扩大了按钮触控区域。未使用的 integrations 空目录和已废弃审计文件清理路径也已移除。
@@ -0,0 +1,26 @@
1
+ ---
2
+ title: "EdgePress September 2026 update: request 8"
3
+ author: toewpq
4
+ date: 2026-09-26
5
+ lang: en
6
+ slug: edgepress-release-2026-9-8
7
+ tags:
8
+ - release
9
+ - privacy
10
+ - Markdown
11
+
12
+ ---
13
+
14
+ This is the eighth requested EdgePress update for September 2026.
15
+
16
+ ## Date-based consent and localized disclosures
17
+
18
+ Consent settings use a required `proposedDate` and an optional `effectiveDate` instead of a version counter. The generated privacy policy displays these dates and lists configured services with localized names, purposes, data categories, recipients, and retention details. Accept and reject controls have equal prominence, optional services start unchecked, and visitors can expand the panel to make a granular choice. The consent component has scoped theme styles and its own viewport checks and screenshots, separate from page-content layout checks.
19
+
20
+ ## Video in Markdown posts
21
+
22
+ Posts can insert direct MP4, WebM, OGV, and OGG files using image-shaped Markdown syntax. The renderer creates an accessible native player with controls and `preload="none"`.
23
+
24
+ ## Post lists and summaries
25
+
26
+ Archives now choose one language version per post and sort equal-date release notes by their numeric sequence. The homepage continues to show the latest posts in the current language. Archive, tag, and homepage cards render Markdown formatting in summaries.
@@ -0,0 +1,26 @@
1
+ ---
2
+ title: EdgePress 2026 年 9 月更新:第 8 次需求
3
+ author: toewpq
4
+ date: 2026-09-26
5
+ lang: zh-CN
6
+ slug: edgepress-release-2026-9-8
7
+ tags:
8
+ - 发布
9
+ - 隐私
10
+ - Markdown
11
+
12
+ ---
13
+
14
+ 这是 EdgePress 在 2026 年 9 月针对第 8 次需求的更新。
15
+
16
+ ## 日期化同意配置与多语言披露
17
+
18
+ 同意设置使用必填的 `proposedDate` 拟定日期和可选的 `effectiveDate` 生效日期,取代版本计数。生成的隐私政策会显示这两个日期,并列出已配置服务的多语言名称、用途、数据类别、接收方和保留期限。接受与拒绝按钮具有同等醒目程度,可选服务默认不勾选;访客可以展开面板逐项设置。组件样式限定在同意管理器内,其视口检查和截图也与页面内容布局检测分开。
19
+
20
+ ## Markdown 文章中的视频
21
+
22
+ 文章可使用图片形状的 Markdown 语法插入 MP4、WebM、OGV 和 OGG 直接视频文件。渲染器会生成带控制按钮的原生播放器,并设置 `preload="none"`。
23
+
24
+ ## 文章列表和摘要
25
+
26
+ 归档现在会为每篇文章选择一个语言版本,并在日期相同时按数字序号从新到旧排列发布记录。首页仍按当前语言显示最新文章。归档、标签和首页卡片的摘要都会渲染 Markdown 格式。
@@ -0,0 +1,30 @@
1
+ ---
2
+ title: "EdgePress September 2026 update: request 9"
3
+ author: toewpq
4
+ date: 2026-09-26
5
+ lang: en
6
+ slug: edgepress-release-2026-9-9
7
+ tags:
8
+ - release
9
+ - privacy
10
+ - accessibility
11
+ description: A floating article contents widget, a compact consent interface, supplier privacy links, and expanded bilingual privacy disclosures.
12
+ ---
13
+
14
+ This is the ninth requested EdgePress update for September 2026.
15
+
16
+ ## Floating article contents
17
+
18
+ Long articles now reveal a compact table-of-contents control after the reader scrolls. It opens and closes on demand, supports keyboard dismissal, and moves to the lower-left corner on mobile screens.
19
+
20
+ ## A clearer consent interface
21
+
22
+ The consent panel now keeps the service purpose and choice visible while placing data categories, recipients, retention, and the supplier's privacy page in expandable details. Accept and reject remain equally prominent. The configured site operator and privacy contact share a compact line in the policy.
23
+
24
+ Each configured browser service requires an HTTPS `privacyUrl`. The consent panel and generated privacy policy link to that page, and the privacy policy refreshes its provider list and consent dates from the current configuration at build time.
25
+
26
+ ## Bilingual privacy disclosures
27
+
28
+ The English and Chinese policy pages describe request data, processing purposes and legal bases, visitor rights, consent withdrawal, configured retention, and cross-border processing information. They also state that the browser-only consent choice is not a server-side receipt.
29
+
30
+ Page-content layout and consent-interface checks remain separate in the audit report.
@@ -0,0 +1,30 @@
1
+ ---
2
+ title: EdgePress 2026 年 9 月更新:第 9 次需求
3
+ author: toewpq
4
+ date: 2026-09-26
5
+ lang: zh-CN
6
+ slug: edgepress-release-2026-9-9
7
+ tags:
8
+ - 发布
9
+ - 隐私
10
+ - 无障碍
11
+ description: 新增浮动文章目录,精简同意面板,支持供应商隐私链接,并扩充双语隐私披露。
12
+ ---
13
+
14
+ 这是 EdgePress 在 2026 年 9 月针对第 9 次需求的更新。
15
+
16
+ ## 浮动文章目录
17
+
18
+ 长文章会在读者向下滚动后显示精简的目录入口。目录可按需展开和收起,支持键盘关闭;移动端入口位于左下方。
19
+
20
+ ## 更清楚的同意界面
21
+
22
+ 同意面板会直接显示服务用途和选择开关,将数据类别、接收方、保留期限及供应商隐私页面放入可展开详情。接受和拒绝保持同等醒目。隐私政策中的网站运营者和隐私联系方式采用紧凑的并排布局。
23
+
24
+ 每项浏览器服务都必须配置 HTTPS `privacyUrl`。同意面板和自动生成的隐私政策都会链接到该页面;隐私政策中的供应商列表和同意日期会在构建时根据当前配置更新。
25
+
26
+ ## 双语隐私披露
27
+
28
+ 中英文政策现已说明请求数据、处理目的与法律依据、访客权利、撤回同意、已配置的保留期限及跨境处理信息,并明确说明同意选择只保存在访客浏览器,不会作为回执传回服务器。
29
+
30
+ 页面内容布局和同意界面仍由审核工具分别检查。
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: "EdgePress September 2026 update: request 10"
3
+ author: toewpq
4
+ date: 2026-09-27
5
+ lang: en
6
+ slug: edgepress-release-2026-9-10
7
+ tags:
8
+ - release
9
+ - internationalization
10
+ - privacy
11
+ - themes
12
+ description: Keep privacy choices across locales, localize page-block links, and improve article tags, search loading, and SVG icons.
13
+ ---
14
+
15
+ This is the tenth requested EdgePress update for September 2026.
16
+
17
+ ## Keep privacy choices when changing languages
18
+
19
+ Privacy choices now use a locale-independent configuration fingerprint, so switching page languages keeps the saved choice active. Existing choices from the previous locale-specific format migrate automatically. A change to notice dates or service configuration still asks visitors to choose again.
20
+
21
+ ## Link to pages in the current language
22
+
23
+ Page-block links can use `/[launge]/quick-start/`. The build replaces the marker with the current locale path and omits the locale segment for the default language. Links from the Chinese homepage now open the matching Chinese guides.
24
+
25
+ ## Improve article tags and search
26
+
27
+ Article pages show their tags as clear links to the matching tag pages. The search script loads only on search pages; tag navigation uses native links and works without JavaScript.
28
+
29
+ ## Redraw icons and simplify privacy wording
30
+
31
+ The settings and plug SVG icons have been redrawn. The privacy policy now explains in plain language that a visitor's choice stays on their device, without exposing an internal storage key.
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: EdgePress 2026 年 9 月更新:第 10 次需求
3
+ author: toewpq
4
+ date: 2026-09-27
5
+ lang: zh-CN
6
+ slug: edgepress-release-2026-9-10
7
+ tags:
8
+ - 发布
9
+ - 多语言
10
+ - 隐私
11
+ - 主题
12
+ description: 修复跨语言切换后的隐私选择,支持本地化站内链接,改进文章标签、搜索脚本和 SVG 图标。
13
+ ---
14
+
15
+ 这是 EdgePress 在 2026 年 9 月针对第 10 次需求的更新。
16
+
17
+ ## 切换语言后保留隐私选择
18
+
19
+ 隐私选择现在使用跨语言一致的配置校验,切换页面语言时会继续生效。现有的旧版选择会自动迁移;当告知日期或服务配置变化时,仍会重新征求选择。
20
+
21
+ ## 按当前语言生成站内链接
22
+
23
+ 页面块链接可使用 `/[launge]/quick-start/`。生成页面时,这个标记会替换为当前语言路径;默认语言会省略语言段。中文首页的指南链接现在会打开对应的中文页面。
24
+
25
+ ## 改进文章标签和搜索
26
+
27
+ 文章底部会以清楚可见的链接显示标签,并可打开对应的标签页。搜索脚本只在搜索页面加载,标签使用原生链接,无需 JavaScript。
28
+
29
+ ## 重绘图标并简化隐私说明
30
+
31
+ 重绘了设置和插头 SVG 图标。隐私政策以日常用语说明选择保存在访客设备上,不再显示内部存储键名称。
@@ -24,7 +24,8 @@
24
24
  "searchResultCount": "Matching articles: {count}.",
25
25
  "markdownTaskComplete": "Task complete",
26
26
  "markdownTaskIncomplete": "Task incomplete",
27
- "postContents": "On this page",
27
+ "postContents": "Contents",
28
+ "closeContents": "Close contents",
28
29
  "feed": "Atom feed",
29
30
  "languageName": "English",
30
31
  "mainNavigationLabel": "Main navigation",
@@ -36,22 +37,30 @@
36
37
  "latestPosts": "Latest posts",
37
38
  "postAuthor": "By {author}",
38
39
  "privacySettings": "Privacy settings",
39
- "privacyNotice": "Optional services",
40
- "privacyIntro": "Choose which optional services may load. Nothing is enabled until you save or accept your choices.",
41
- "acceptOptional": "Accept all",
40
+ "privacyNotice": "Privacy choices",
41
+ "privacyIntro": "Optional services stay off until you choose.",
42
+ "acceptOptional": "Allow all",
42
43
  "rejectOptional": "Reject optional",
43
44
  "savePreferences": "Save choices",
44
45
  "optionalServices": "Optional services",
45
- "noIntegrations": "No optional services are configured.",
46
+ "noIntegrations": "No optional services are active.",
46
47
  "privacyPolicy": "Privacy policy",
47
- "privacyController": "Site operator",
48
+ "privacyController": "Operator",
49
+ "privacyContact": "Contact",
48
50
  "servicePurpose": "Purpose",
51
+ "serviceDataCategories": "Data used",
52
+ "serviceRecipient": "Recipient",
49
53
  "serviceRetention": "Retention",
54
+ "servicePrivacyDetails": "Privacy information",
55
+ "servicePrivacyLink": "Open policy",
56
+ "reviewDetails": "Details",
57
+ "essentialStorage": "Choice saved on this device for up to {days} days.",
50
58
  "pluginTracking": "Tracking",
51
59
  "pluginStatistics": "Statistics",
52
60
  "pluginAdvertising": "Advertising",
53
61
  "pluginCaptcha": "Human verification",
54
62
  "consentReload": "Your choice was saved. Reloading to apply the updated settings.",
55
63
  "agentSummary": "Project guides and reference pages for the EdgePress website builder.",
56
- "closePrivacy": "Close settings"
64
+ "closePrivacy": "Close settings",
65
+ "consentStoredOnDevice": "This device"
57
66
  }
@@ -25,6 +25,7 @@
25
25
  "markdownTaskComplete": "任务已完成",
26
26
  "markdownTaskIncomplete": "任务未完成",
27
27
  "postContents": "文章目录",
28
+ "closeContents": "关闭目录",
28
29
  "feed": "Atom 订阅",
29
30
  "languageName": "简体中文",
30
31
  "mainNavigationLabel": "主导航",
@@ -36,22 +37,30 @@
36
37
  "latestPosts": "最新文章",
37
38
  "postAuthor": "作者:{author}",
38
39
  "privacySettings": "隐私设置",
39
- "privacyNotice": "可选服务",
40
- "privacyIntro": "请选择允许加载的可选服务。保存或接受之前,不会启用任何服务。",
41
- "acceptOptional": "全部接受",
40
+ "privacyNotice": "隐私选择",
41
+ "privacyIntro": "可选服务仅在你选择后启用。",
42
+ "acceptOptional": "全部允许",
42
43
  "rejectOptional": "拒绝可选服务",
43
44
  "savePreferences": "保存选择",
44
45
  "optionalServices": "可选服务",
45
- "noIntegrations": "尚未配置可选服务。",
46
+ "noIntegrations": "当前没有启用可选服务。",
46
47
  "privacyPolicy": "隐私政策",
47
- "privacyController": "网站运营者",
48
+ "privacyController": "运营者",
49
+ "privacyContact": "联系邮箱",
48
50
  "servicePurpose": "用途",
51
+ "serviceDataCategories": "涉及的数据",
52
+ "serviceRecipient": "接收方",
49
53
  "serviceRetention": "保留期限",
54
+ "servicePrivacyDetails": "隐私说明",
55
+ "servicePrivacyLink": "查看政策",
56
+ "reviewDetails": "详情",
57
+ "essentialStorage": "选择保存在此设备,最长 {days} 天。",
50
58
  "pluginTracking": "跟踪",
51
59
  "pluginStatistics": "统计",
52
60
  "pluginAdvertising": "广告",
53
61
  "pluginCaptcha": "人机验证",
54
62
  "consentReload": "选择已保存,正在重新载入以应用设置。",
55
63
  "agentSummary": "EdgePress 网站构建器的项目指南与参考文档。",
56
- "closePrivacy": "关闭设置"
64
+ "closePrivacy": "关闭设置",
65
+ "consentStoredOnDevice": "此设备"
57
66
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edgepress",
3
- "version": "2026.9.6",
3
+ "version": "2026.9.10",
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,8 +17,7 @@
17
17
  "edgepress.config.mjs",
18
18
  "project-compatibility.json",
19
19
  "wrangler.jsonc",
20
- "README.md",
21
- "CHANGELOG.txt"
20
+ "README.md"
22
21
  ],
23
22
  "repository": {
24
23
  "type": "git",