OINK 1.0.0 — Stable contracts, a supported starter, and a complete public release
OINK 1.0.0 is a stability milestone, not a last-minute API reset. It promotes
the component, configuration, content, output, and maintainer contracts built
through the 0.x releases to the first major version. This note rolls up every
theme change in v0.8.0..v1.0.0; the 0.8.0 agent outputs and backlinks are the
starting baseline rather than being counted again as new 1.0 work.
An existing 0.8.0, 0.8.1, or 0.8.2 site needs no content or configuration migration. Pin the new module, run the warning-strict build, and review the rendered site as you would for any theme upgrade.
At a glance
- The current authoring, shell, landing, Book, release, Print, Markdown, and agent-output contracts are now the OINK 1.0 stable surface.
- Single-page Print preserves ordinary page heading and footnote IDs; only multi-page section and whole-Book aggregates namespace page-local targets.
- Book sidebar numbers remain atomic beside long, wrapping titles.
- Theme CI, the documentation site, and OINK Starter use Go 1.27 and Hugo Extended 0.165.0. The declared Hugo compatibility floor remains Extended 0.160.1.
- OINK Starter is the supported first route into the framework, with neutral Docs, Blog, and Book content and strict GitHub Pages and Cloudflare Pages workflows.
- The README, theme metadata, case-study links, badges, and optimized 3:2 Hugo Themes gallery images now describe and present the same product that the code ships.
What 1.0 makes stable
The version number covers contracts, not a promise that the interface will stop evolving. OINK can keep adding components and optional outputs in 1.x; the point of 1.0 is that an ordinary site should not have to relearn or rewrite the current foundations on every minor release.
| Surface | 1.0 contract |
|---|---|
| Content | Native Markdown remains the source; components preserve explicit static degradation for non-interactive outputs |
| Configuration | params.ui.* owns theme policy, page overrides drop the prefix, and invalid author input warns with a safe fallback |
| Shells | Docs, Blog, Book, Swagger/Redoc, and Landing keep distinct, documented responsibilities |
| Outputs | HTML, RSS, Print, Markdown, LLMS, LLMSFULL, NAVJSON, and BookManifest keep explicit opt-in and degradation boundaries |
| Runtime | Vendored assets stay local and capability code loads only where rendered content needs it |
| Maintenance | Implementation, owning checker, bilingual contract, release state, consumer pin, and deployment remain separate evidence |
The normative English and Chinese records live under
Design. Their status now reads released-v1.0.0; dated
research and active proposals remain evidence or future work, not hidden 1.0
features.
Everything changed after 0.8.0
The complete source comparison is
v0.8.0...v1.0.0.
It contains a deliberately small stabilization set:
| Area | Change | User-visible effect |
|---|---|---|
| Book sidebar | Fixed the number cell and added a compiled-CSS regression assertion | A long title wraps without compressing, clipping, or splitting its chapter number |
| Print anchors | Distinguished a page Print from section and Book aggregates, then refreshed the output golden | A fragment valid on an ordinary page remains valid on that page’s Print view; aggregate IDs remain collision-free |
| Theme CI | Replaced the historical Hugo matrix with one pinned Extended 0.165.0 toolchain and explicitly pinned Go 1.27 for module-mode coverage | Release evidence now matches the current upstream toolchain while the 0.160.1 Hugo floor stays documented separately |
| Public README | Rebuilt the first-run path around OINK Starter, capability and compatibility tables, production cases, docs links, and the Docsy boundary | A visitor can evaluate the project without reverse-engineering its regression site |
| Hugo Themes media | Replaced the old captures with optimized 3:2 landing-page images | The gallery receives the required aspect ratio at 166,526-byte and 68,488-byte PNG sizes without browser chrome |
| Theme metadata | Expanded the description, tags, and features; normalized the OINK wordmark; recorded Docsy as the original theme | Catalogue attribution and discovery now match the repository’s actual scope |
| Module directive | 0.8.2 temporarily admitted the module to the former Go 1.26 upstream builder; 1.0 follows the newly updated upstream workflow on Go 1.27 | This changes module admission only; OINK still contains no Go source and the rendered theme is unchanged by the directive |
There is no component rename, configuration-key removal, default flip, or content-syntax migration in this range.
Correct Print identities
Page-local IDs and aggregate-document IDs solve different problems. An
ordinary page and that page’s own Print representation are two views of the
same document, so their authored or Goldmark-generated heading and footnote
IDs should match. A section Print or whole-Book Print combines many source
pages, so two chapters may both contain #overview or fn:1; those targets
must gain a source-page namespace.
| Output | Heading and footnote IDs |
|---|---|
| Ordinary HTML page | Authored or Goldmark-generated page-local IDs |
| Single-page Print | The same page-local IDs as ordinary HTML |
| Multi-page section Print | Source-page namespace added |
| Whole-Book Print | Source-page namespace added |
Book figures, tables, equations, examples, and rewritten cross-page links keep their existing explicit target rules. The fix narrows namespacing to the two outputs that actually aggregate documents.
A supported first mile
OINK Starter is now part of the supported release surface rather than an informal demo. It starts as a small, neutral project site: three language profiles, Docs, Blog, Book, local assets, and two warning-strict deployment workflows. It deliberately excludes OINK’s own analytics account, comments, brand, documentation corpus, browser suite, and maintainer fixtures.
The Starter tutorial moves from shallow changes to deep ones: establish an unchanged baseline, set identity, choose languages, replace home data, rewrite content and navigation, add brand, enable complete integrations, run the strict build, and only then deploy. Existing Hugo sites can still take the smaller module-from-scratch path.
Toolchain and compatibility
The official Hugo Themes update workflow moved to Go 1.27 and Hugo 0.165.0 on the day of this release. OINK 1.0 follows that current publication baseline:
| Dependency | OINK 1.0 policy |
|---|---|
| Hugo | Extended 0.160.1 or newer; release, site, and browser validation pin 0.165.0 |
| Go | 1.27 or newer for Hugo Module resolution |
| Node.js | Not required to build or run a consumer site |
The short-lived 0.8.2 patch lowered only the module’s go directive so the
previous official updater, fixed on Go 1.26 with local toolchain selection,
could admit the theme. Once upstream moved to 1.27, keeping that exception no
longer described the release environment. OINK itself is still templates,
styles, assets, and checkers rather than Go source. An offline archive or Git
submodule installation does not ask Go to resolve the module.
Upgrade
Commit both go.mod and go.sum. Then inspect representative Docs, Blog,
Book, Print, language, light/dark, and narrow-screen routes. A successful local
build, the public tag, a resolved module checksum, a consumer pin, deployment,
and live rendering remain separate release states.
The repository-level ledger remains in CHANGELOG.md.
