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