Skip to main content

Module changelog

Module changelog 

Source
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 缓存):

  1. changelog_body 剥去 preamble(# Changelog 标题 + Keep a Changelog 说明)
  2. parse_changelog 逐行扫描,按 ## (版本)和 ### (分类)切分
  3. 每个分类组的条目经 render_markdown_enhanced 渲染为 HTML 片段 (保留 **bold** / `code` / [link] 等内联格式 + sanitizer 清理)

分类色标映射遵循全站 Catppuccin 双强调色约束(accent 绿 / accent-2 teal), 不引入第三色——通过字号、字重、透明度区分层级。

Structs§

ChangeGroup
单个分类组(如 “Added” 下所有条目的渲染 HTML)。
ChangelogData
完整的 changelog 结构化数据。
RawVersion 🔒
解析过程中的临时版本结构(收集原始 Markdown 文本,稍后统一渲染)。
VersionEntry
单个版本条目。

Enums§

ChangeCategory
变更分类。对应 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 片段。