Expand description
更新日志(内嵌 CHANGELOG.md 渲染)的 Dioxus server function。 更新日志接口。
CHANGELOG.md 在编译期经 include_str! 内嵌进二进制(scratch 运行时镜像
只有 binary + public/ + uploads/,磁盘上没有该文件;与 migrations、
highlight.css 的内嵌原则一致)。
与旧实现(整篇 Markdown → HTML blob → dangerous_inner_html)不同,本模块
将 Keep a Changelog 格式的 Markdown 解析为结构化数据(版本 → 分类 → 条目),
供前端按版本卡片 + 分类色标 badge 渲染时间线视图。
解析流程(纯函数,进程生命周期内只执行一次,LazyLock 缓存):
changelog_body剥去 preamble(# Changelog标题 + Keep a Changelog 说明)parse_changelog逐行扫描,按##(版本)和###(分类)切分- 每个分类组的条目经
render_markdown_enhanced渲染为 HTML 片段 (保留**bold**/`code`/[link]等内联格式 + sanitizer 清理)
分类色标映射遵循全站 Catppuccin 双强调色约束(accent 绿 / accent-2 teal), 不引入第三色——通过字号、字重、透明度区分层级。
Structs§
- Change
Group - 单个分类组(如 “Added” 下所有条目的渲染 HTML)。
- Changelog
Data - 完整的 changelog 结构化数据。
- RawVersion 🔒
- 解析过程中的临时版本结构(收集原始 Markdown 文本,稍后统一渲染)。
- Version
Entry - 单个版本条目。
Enums§
- Change
Category - 变更分类。对应 Keep a Changelog 的标准分类 + 本项目扩展的 Internal。
Constants§
- CHANGELOG_
MD 🔒 - CHANGELOG.md 原文,编译期内嵌。
Statics§
- CHANGELOG_
PARSED 🔒 - 解析结果,进程生命周期内只计算一次。
Functions§
- changelog_
body 🔒 - 剥去 CHANGELOG.md 开头的
# Changelog标题与 Keep a Changelog 说明段, 从第一个##版本段起返回;不符合预期格式时回退全文。 - flush_
category 🔒 - 将
current_cat中的累积内容存入当前版本的 categories 列表。 - flush_
version 🔒 - 将
current版本存入raw_versions列表。 - get_
changelog - 获取结构化的更新日志数据。
- parse_
changelog 🔒 - 将 CHANGELOG.md 全文解析为结构化
ChangelogData。 - parse_
version_ 🔒header - 解析版本头行。
- render_
section 🔒 - 将一段原始 Markdown 渲染为 sanitizer 清理后的 HTML 片段。