<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OINK</title><link>https://pgsty.github.io/oink.pgsty.com/docs/oink/</link><description>Recent content on OINK</description><generator>Hugo</generator><language>en-US</language><atom:link href="https://pgsty.github.io/oink.pgsty.com/docs/oink/index.xml" rel="self" type="application/rss+xml"/><item><title>Getting started</title><link>https://pgsty.github.io/oink.pgsty.com/docs/oink/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/docs/oink/getting-started/</guid><description>&lt;p&gt;Oink is published as the Hugo Module &lt;code&gt;github.com/pgsty/oink&lt;/code&gt;. A consuming site
builds with Hugo Extended alone; Node.js, npm, PostCSS, and CDN-hosted browser
packages are not part of the build contract.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Install Git, Go, and Hugo Extended &lt;code&gt;0.160.1&lt;/code&gt; or newer. The project site
currently validates with &lt;code&gt;0.164.0&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git --version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Hugo version output must include &lt;code&gt;extended&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="add-the-module"&gt;Add the module&lt;a class="td-heading-self-link" href="#add-the-module" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;From your Hugo site root, initialize a module if the site does not already have
one, then pin an Oink release:&lt;/p&gt;</description></item><item><title>Architecture</title><link>https://pgsty.github.io/oink.pgsty.com/docs/oink/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/docs/oink/architecture/</guid><description>&lt;p&gt;Oink is a direct Hugo theme, not an application server or a runtime wrapper
around Docsy. Hugo resolves content, configuration, layouts, and assets at build
time, then emits a static site for any ordinary file host.&lt;/p&gt;
&lt;h2 id="system-boundary"&gt;System boundary&lt;a class="td-heading-self-link" href="#system-boundary" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre class="mermaid"&gt;flowchart LR
 C[Site content] --&amp;gt; H[Hugo Extended]
 G[Hugo configuration] --&amp;gt; H
 T[Oink Hugo Module] --&amp;gt; H
 V[Committed third-party assets] --&amp;gt; T
 H --&amp;gt; P[Static public directory]
 P --&amp;gt; B[Browser]&lt;/pre&gt;
&lt;p&gt;The consumer boundary starts with a site plus the resolved theme module and ends
with Hugo&amp;rsquo;s static output. No JavaScript package manager, CSS postprocessor
executable, or remote asset download is required in that path.&lt;/p&gt;</description></item><item><title>Local-first operation</title><link>https://pgsty.github.io/oink.pgsty.com/docs/oink/local-first/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/docs/oink/local-first/</guid><description>&lt;p&gt;OINK&amp;rsquo;s local-first rule is simple: a feature owned by the theme must not
silently depend on a public CDN, a build-time download, or an unconfigured
public service. A complete distribution can be built and its core pages browsed
inside a network-isolated environment.&lt;/p&gt;
&lt;h2 id="what-local-first-covers"&gt;What local-first covers&lt;a class="td-heading-self-link" href="#what-local-first-covers" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The theme serves these dependencies from the generated site:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Capability&lt;/th&gt;
					&lt;th&gt;Local delivery&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Shell and responsive UI&lt;/td&gt;
					&lt;td&gt;Bootstrap and OINK CSS/JavaScript&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Icons and fonts&lt;/td&gt;
					&lt;td&gt;Font Awesome, Open Sans, Chakra Petch, IBM Plex Mono&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Search&lt;/td&gt;
					&lt;td&gt;Lunr plus a CJK substring fallback and per-language indexes&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Diagrams and formulae&lt;/td&gt;
					&lt;td&gt;Mermaid, KaTeX, and Markmap&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;API documentation&lt;/td&gt;
					&lt;td&gt;Swagger UI and Redoc&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Rich content&lt;/td&gt;
					&lt;td&gt;Asciinema, ECharts, Infographic, and carousel runtime&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Assets are committed under &lt;code&gt;assets/&lt;/code&gt; or &lt;code&gt;static/&lt;/code&gt;. Hugo publishes them under the
site&amp;rsquo;s &lt;code&gt;baseURL&lt;/code&gt;, including subpath deployments.&lt;/p&gt;</description></item><item><title>Content components</title><link>https://pgsty.github.io/oink.pgsty.com/docs/oink/components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/docs/oink/components/</guid><description>&lt;p&gt;OINK promotes the content components that proved reusable across PGSTY sites
into the theme. Each component has a stable authoring API, unique instance IDs,
local assets, and a defined safety boundary. Site-specific data widgets remain
outside the theme.&lt;/p&gt;
&lt;h2 id="loading-model"&gt;Loading model&lt;a class="td-heading-self-link" href="#loading-model" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Interactive shortcodes mark the features used by a page. OINK then adds each
required stylesheet or runtime once, even if the page has several component
instances. A plain page does not download component code it never uses.&lt;/p&gt;</description></item><item><title>Configuration</title><link>https://pgsty.github.io/oink.pgsty.com/docs/oink/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/docs/oink/configuration/</guid><description>&lt;p&gt;OINK follows a &amp;ldquo;native first&amp;rdquo; configuration model. Site identity, languages,
menus, outputs, taxonomies, markup, and modules stay in their Hugo-defined
locations. Existing Docsy parameters remain where their semantics are useful.
OINK adds only focused choices for behavior that cannot be inferred.&lt;/p&gt;
&lt;h2 id="configuration-rules"&gt;Configuration rules&lt;a class="td-heading-self-link" href="#configuration-rules" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Prefer Hugo configuration over a theme-specific duplicate.&lt;/li&gt;
&lt;li&gt;Prefer an established Docsy parameter over an OINK synonym.&lt;/li&gt;
&lt;li&gt;Put brand, content, repository, and UI choices in their semantic locations.&lt;/li&gt;
&lt;li&gt;Keep internal vendor paths and template composition out of the public API.&lt;/li&gt;
&lt;li&gt;Fail early for invalid values or a missing required endpoint.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There is no &lt;code&gt;oink.enabled&lt;/code&gt; flag and no &lt;code&gt;params.oink.*&lt;/code&gt; tree. Adding either would
create a second theme mode and make every fix, test, and document ambiguous.&lt;/p&gt;</description></item><item><title>Deployment</title><link>https://pgsty.github.io/oink.pgsty.com/docs/oink/deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/docs/oink/deployment/</guid><description>&lt;p&gt;OINK deployment has two separate stages: Hugo builds a complete &lt;code&gt;public/&lt;/code&gt;
directory, then a static host publishes that directory. Keep build verification
and hosted verification distinct so a successful local command is not mistaken
for a completed production release.&lt;/p&gt;
&lt;h2 id="production-build"&gt;Production build&lt;a class="td-heading-self-link" href="#production-build" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Run the pinned Hugo Extended version from the site root:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo --gc --minify --cleanDestinationDir
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;--gc&lt;/code&gt; removes unused cached resources, &lt;code&gt;--minify&lt;/code&gt; produces production assets,
and &lt;code&gt;--cleanDestinationDir&lt;/code&gt; removes files left by an earlier build. Review the
command before using the last option when &lt;code&gt;publishDir&lt;/code&gt; points anywhere other
than the site&amp;rsquo;s dedicated output directory.&lt;/p&gt;</description></item><item><title>Migrating an existing site</title><link>https://pgsty.github.io/oink.pgsty.com/docs/oink/migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/docs/oink/migration/</guid><description>&lt;p&gt;OINK is intended to replace copied common shells, runtimes, and shortcodes
without forcing a bulk rewrite of ordinary content. A safe migration removes
overrides by dependency, keeps product-specific behavior in the site, and
validates a temporary copy before changing production.&lt;/p&gt;
&lt;h2 id="migration-principles"&gt;Migration principles&lt;a class="td-heading-self-link" href="#migration-principles" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Pin the target implementation; do not migrate production to an unversioned
branch.&lt;/li&gt;
&lt;li&gt;Inventory overrides before deleting them.&lt;/li&gt;
&lt;li&gt;Remove common theme copies, not the site&amp;rsquo;s business logic.&lt;/li&gt;
&lt;li&gt;Preserve content URLs, front matter, and shortcode behavior where the OINK API
is compatible.&lt;/li&gt;
&lt;li&gt;Make unsafe or online exceptions explicit and temporary.&lt;/li&gt;
&lt;li&gt;Test build output, browser behavior, and hosted behavior as separate layers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pin-the-target"&gt;Pin the target&lt;a class="td-heading-self-link" href="#pin-the-target" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pin a published tag in &lt;code&gt;go.mod&lt;/code&gt; or use the complete versioned archive. During
pre-release evaluation, a Hugo Module site can use an ignored Go workspace to
resolve a local checkout without editing the committed module version:&lt;/p&gt;</description></item><item><title>Release process</title><link>https://pgsty.github.io/oink.pgsty.com/docs/oink/release/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/docs/oink/release/</guid><description>&lt;p&gt;Oink treats implementation, validation, publication, and deployment as different
states. A green local build is useful evidence, but it is not a public tag, a
downloadable module, or a deployed documentation update.&lt;/p&gt;
&lt;h2 id="release-states"&gt;Release states&lt;a class="td-heading-self-link" href="#release-states" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;State&lt;/th&gt;
					&lt;th&gt;Required evidence&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Source complete&lt;/td&gt;
					&lt;td&gt;Scope, docs, changelog, attribution, and review are complete&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Validated&lt;/td&gt;
					&lt;td&gt;Theme-module and project-site checks pass&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Published&lt;/td&gt;
					&lt;td&gt;An immutable root tag exists in &lt;code&gt;pgsty/oink&lt;/code&gt; and resolves through Go&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Documented&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;pgsty/oink.pgsty.com&lt;/code&gt; pins and documents that tag&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Deployed&lt;/td&gt;
					&lt;td&gt;The hosted documentation and target consumers pass verification&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Report the exact state and evidence; do not call a local build a release.&lt;/p&gt;</description></item></channel></rss>