跳转到主要内容

OINK 1.0.0:稳定契约、Starter 与正式发布

OINK 1.0.0 将现有知识发布契约定为稳定表面,并汇总 0.8.0 之后的全部主题修改: Print 与 Book 正确性、固定的 Go 1.27 与 Hugo 0.165.0 发布工具链、正式支持的 Starter,以及进入更广泛 Hugo 生态所需的公开元数据与展示素材。

OINK 1.0.0 是稳定性里程碑,不是临发布前重置 API。它把整个 0.x 周期形成的组件、 配置、内容、输出与维护者契约提升为第一个主版本。本说明汇总 v0.8.0..v1.0.0 范围内的全部主题修改;0.8.0 已经交付的 Agent 输出与反向链接是比较基线,不会再 冒充 1.0 新功能重复计算。

已经使用 0.8.0、0.8.1 或 0.8.2 的站点不需要迁移内容或配置。把模块固定到新版本, 执行 warning 即失败的严格构建,再像任何主题升级一样检查真实渲染即可。

概览

  • 当前创作、外壳、Landing、Book、Release、Print、Markdown 与 Agent 输出契约, 现在共同构成 OINK 1.0 的稳定表面。
  • 单页 Print 保留普通页面的标题与脚注 ID;只有多页分区 Print 与整书 Print 才为 页面局部目标增加命名空间。
  • 长标题换行时,Book 侧栏编号仍保持为不可压缩、不可拆分的原子单元。
  • 主题 CI、文档站与 OINK Starter 使用 Go 1.27 和 Hugo Extended 0.165.0;公开 声明的 Hugo 兼容下限仍为 Extended 0.160.1。
  • OINK Starter 成为进入框架的正式起点,提供中性的 Docs、Blog、Book 内容,以及 严格的 GitHub Pages 与 Cloudflare Pages workflow。
  • README、主题元数据、案例链接、徽章与优化后的 3:2 Hugo Themes 展示图,现在 描述和呈现的是代码真正交付的同一个产品。

1.0 稳定了什么

主版本号约束的是契约,不是宣称界面从此停止演进。OINK 仍可在 1.x 增加组件与可选 输出;1.0 的含义是普通站点不必在每个次版本重新学习或改写当前基础。

表面 1.0 契约
内容 原生 Markdown 仍是源文件;组件对非交互输出保持明确的静态降级
配置 params.ui.* 管理主题策略,页面覆盖去掉该前缀,非法作者输入告警并使用安全回退
外壳 Docs、Blog、Book、Swagger/Redoc 与 Landing 各自保留清晰、成文的职责
输出 HTML、RSS、Print、Markdown、LLMS、LLMSFULL、NAVJSON 与 BookManifest 保持明确的选择启用与降级边界
运行时 第三方资源继续本地化,能力代码只在实际渲染内容需要时加载
维护 实现、归属检查器、双语契约、发布状态、消费站固定版本与部署继续作为独立证据

规范性的中英文记录位于设计与开发;其状态现在统一为 released-v1.0.0。带日期的研究与活跃提案仍是证据或未来工作,不会暗中算作 已经交付的 1.0 能力。

0.8.0 之后的全部修改

完整源码比较见 v0.8.0...v1.0.0。 其中是一组刻意收敛的稳定化改动:

范围 修改 用户可见结果
Book 侧栏 固定编号单元,并为编译后 CSS 增加回归断言 长标题换行时不会再压缩、裁切或拆开章节编号
Print 锚点 区分单页 Print 与分区 / 整书聚合,再刷新输出 golden 普通页面有效的 fragment 在该页 Print 中继续有效;聚合文档的 ID 仍不会冲突
主题 CI 用一个固定的 Extended 0.165.0 工具链替代历史 Hugo 矩阵,并为模块模式明确固定 Go 1.27 发布证据与当前上游工具链一致,0.160.1 Hugo 下限则继续单独成文
公开 README 围绕 OINK Starter 重写第一条上手路径,补齐能力、兼容性、生产案例、文档入口与 Docsy 边界 访客无需反向拆解回归站就能评估项目
Hugo Themes 素材 换成优化过的 3:2 Landing 截图 图库得到不带浏览器边框、大小分别为 166,526 与 68,488 字节的 PNG
主题元数据 扩展描述、标签与特性,统一 OINK 字标,记录 Docsy 原始主题身份 目录中的归属与可发现性符合仓库真实范围
模块 directive 0.8.2 临时适配旧版 Go 1.26 上游构建器;1.0 随更新后的上游流程回到 Go 1.27 只改变模块准入;OINK 仍无 Go 源码,directive 不改变渲染结果

这个范围没有组件改名、配置键移除、默认值翻转或内容语法迁移。

页面局部 ID 与聚合文档 ID 解决的是两类问题。普通页面与它自己的 Print 表示是同一 份文档的两种视图,因此作者明确编写或 Goldmark 生成的标题、脚注 ID 应保持一致。 分区 Print 与整书 Print 会组合多个源页面,两个章节可能都带 #overviewfn:1, 所以这些目标必须增加源页面命名空间。

输出 标题与脚注 ID
普通 HTML 页面 作者明确编写或 Goldmark 生成的页面局部 ID
单页 Print 与普通 HTML 相同的页面局部 ID
多页分区 Print 增加源页面命名空间
整书 Print 增加源页面命名空间

Book 图、表、公式、示例,以及改写后的跨页链接继续沿用现有显式目标规则。修复只是把 命名空间限制到真正聚合多份文档的两种输出。

正式支持的第一公里

OINK Starter 现在属于正式支持的发布表面,而不是非正式演示。它从小而中性的项目站 开始:三种语言 profile、Docs、Blog、Book、本地资源与两条 warning 即失败的部署 workflow。它刻意排除了 OINK 自身的分析账号、评论、品牌、文档全集、浏览器套件与 维护者 fixture。

Starter 教程按由浅入深的顺序推进:先建立未修改基线, 再设置身份、选择语言、替换首页数据、改写内容与导航、增加品牌、启用完整集成、执行 严格构建,最后才部署。已有 Hugo 站点仍可以采用更小的 从零接入模块路径

工具链与兼容性

Hugo 官方主题更新流程在本次发布当天升级到 Go 1.27 与 Hugo 0.165.0。OINK 1.0 跟随这条当前发布基线:

依赖 OINK 1.0 策略
Hugo Extended 0.160.1 或更新版本;发布、站点与浏览器验证固定 0.165.0
Go 解析 Hugo Module 时需要 1.27 或更新版本
Node.js 消费站构建与运行均不需要

短暂存在的 0.8.2 只降低了模块的 go directive,让当时固定 Go 1.26、使用本地 工具链选择的官方更新器可以准入主题。上游转到 1.27 后,继续保留这一例外已无法描述 真实发布环境。OINK 本身仍由模板、样式、资产与检查器组成,不包含 Go 源码。使用离线 归档或 Git submodule 时不需要 Go 解析模块。

升级

hugo mod get github.com/pgsty/[email protected]
hugo mod tidy
hugo --cleanDestinationDir --gc --minify --environment production \
  --printPathWarnings --panicOnWarning

提交 go.modgo.sum,再检查有代表性的 Docs、Blog、Book、Print、语言、深浅色 与窄屏路由。本地构建成功、公开标签、可解析的模块校验和、消费站固定版本、部署与线上 渲染仍是彼此独立的发布状态。

仓库级完整流水账继续记录在 CHANGELOG.md