<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Advanced on OINK</title>
    <link>https://oink.pgsty.com/categories/advanced/</link>
    <description>Recent content in Advanced on OINK</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Fri, 14 Aug 2026 21:56:46 +0800</lastBuildDate>
    
    
      <atom:link href="https://oink.pgsty.com/categories/advanced/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Keyboard navigation</title>
        <link>https://oink.pgsty.com/docs/advanced/keyboard/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/advanced/keyboard/</guid>
        <description>&lt;p&gt;OINK ships single-key keyboard navigation on docs, blog, and Swagger pages. It&#xA;is on by default, every binding yields to anything you are typing into, and a&#xA;site or a single page can switch it off. The design treats the current page as&#xA;the implicit sidebar cursor, reuses the rendered table of contents for section&#xA;jumps, and delegates every action to an existing theme mechanism rather than&#xA;building a parallel navigation state.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Search and Command Palette</title>
        <link>https://oink.pgsty.com/docs/advanced/search/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/advanced/search/</guid>
        <description>&lt;p&gt;OINK defaults to and recommends &lt;strong&gt;local search&lt;/strong&gt;: Hugo generates a separate&#xA;index per language, and Lunr plus the CJK fallback are served from same-origin&#xA;assets. A site builds and searches without a public crawler, an external&#xA;account, a CDN, or a network connection.&lt;/p&gt;&#xA;&lt;p&gt;Google Custom Search and Algolia DocSearch remain as compatible integrations and&#xA;are off by default. &lt;strong&gt;Only one search implementation can be active at a time.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;enable-local-search&#34;&gt;Enable local search&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#enable-local-search&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--titled&#34; id=&#34;td-code-b4131cfe-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;yaml&#34; data-line-count=&#34;5&#34; role=&#34;group&#34; aria-labelledby=&#34;td-code-b4131cfe-fence-0-title&#34;&gt;&#xA;  &lt;div class=&#34;td-code__header&#34;&gt;&#xA;    &lt;span class=&#34;td-code__filename&#34; id=&#34;td-code-b4131cfe-fence-0-title&#34; title=&#34;hugo.yaml&#34;&gt;hugo.yaml&lt;/span&gt;&lt;div class=&#34;td-code__utilities&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;YAML&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b4131cfe-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;offlineSearch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;offlineSearchIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;summary&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# summary | content&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;offlineSearchSummaryLength&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;120&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;offlineSearchMaxResults&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;12&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-fields&#34;&gt;&#xA;  &lt;dl class=&#34;td-fields__list&#34;&gt;&#xA;    &lt;div class=&#34;td-field&#34;&gt;&#xA;      &lt;dt class=&#34;td-field__term&#34;&gt;&#xA;        &lt;code class=&#34;td-field__name&#34;&gt;offlineSearch&lt;/code&gt;&#xA;        &lt;span class=&#34;visually-hidden&#34;&gt;, &lt;/span&gt;&lt;span class=&#34;td-field__type&#34;&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;visually-hidden&#34;&gt;, &lt;/span&gt;&lt;span class=&#34;td-field__required&#34;&gt;required&lt;/span&gt;&#xA;        &lt;span class=&#34;visually-hidden&#34;&gt;, &lt;/span&gt;&lt;span class=&#34;td-field__default&#34;&gt;default: &lt;code&gt;false&lt;/code&gt;&lt;/span&gt;&#xA;      &lt;/dt&gt;&#xA;      &lt;dd class=&#34;td-field__description&#34;&gt;&lt;p&gt;Enables the local index and the Command Palette. Do not also configure&#xA;&lt;code&gt;gcs_engine_id&lt;/code&gt; or &lt;code&gt;params.search.algolia&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Print support</title>
        <link>https://oink.pgsty.com/docs/advanced/print/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/advanced/print/</guid>
        <description>&lt;p&gt;Individual documentation pages print well from most browsers as the layouts have&#xA;been styled to omit navigational chrome from the printed output. Printing one&#xA;page is therefore the browser&amp;rsquo;s own &lt;code&gt;Cmd/Ctrl+P&lt;/code&gt;; OINK offers no page-level&#xA;print action of its own.&lt;/p&gt;&#xA;&lt;p&gt;On some sites, it can be useful to enable a &amp;ldquo;print entire section&amp;rdquo; feature (as&#xA;seen in this user guide). Selecting this option renders the entire current&#xA;top-level section (such as Advanced for this page) with all of its child pages&#xA;and sections in a format suited to printing, complete with a table of contents&#xA;for the section.&lt;/p&gt;</description>
      </item>
    <item>
        <title>AI-agent support</title>
        <link>https://oink.pgsty.com/docs/advanced/agent-support/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/advanced/agent-support/</guid>
        <description>&lt;div class=&#34;td-alert td-alert--md alert alert-note&#34; role=&#34;alert&#34;&gt;&lt;div class=&#34;td-alert-heading alert-heading&#34; role=&#34;heading&#34; aria-level=&#34;4&#34;&gt;Early evaluation&lt;/div&gt;&#xA;  &lt;div class=&#34;td-alert-body&#34;&gt;&#xA;    &lt;p&gt;Features described in this page are &lt;a href=&#34;https://github.com/google/docsy/blob/main/CHANGELOG.md&#34;&gt;experimental&lt;/a&gt;, and are useful for early&#xA;adoption and evaluation. Output details and validation coverage may change in&#xA;future releases. To track the phased evolution of the agent-support feature,&#xA;see &lt;a href=&#34;https://github.com/google/docsy/issues/2614&#34;&gt;Improve support for AI-agent doc consumption #2614&lt;/a&gt;.&lt;/p&gt;&#xA;    &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;features&#34;&gt;Features&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#features&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;When your site opts in, these are the user-facing and machine-readable behaviors&#xA;Oink enables:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://oink.pgsty.com/docs/advanced/agent-support/#markdown-output&#34;&gt;Markdown output format&lt;/a&gt;&lt;/strong&gt; support. Your project&amp;rsquo;s&#xA;&lt;code&gt;outputs&lt;/code&gt; configuration controls which page kinds publish Markdown.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Discovery&lt;/strong&gt;: page HTML headers include &lt;code&gt;rel=&amp;quot;alternate&amp;quot;&lt;/code&gt; links to the&#xA;Markdown version of the page.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Copy Markdown / View markdown&lt;/strong&gt;: page actions can copy or open the Markdown&#xA;version of the page when that output exists. Copy is the primary half of the&#xA;split button in the breadcrumb row; the rest live in its menu.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Open in ChatGPT / Claude&lt;/strong&gt;: file-backed page actions can hand the current&#xA;browser URL to either assistant when&#xA;&lt;code&gt;params.ui.page_context_menu.assistant_links&lt;/code&gt; is explicitly enabled. Oink&#xA;builds the prompt only when the reader activates the link, preserving the&#xA;deployed host, query string, and fragment. The full URL then leaves the site;&#xA;avoid secrets in URLs and disclose the third-party boundary. The page body is&#xA;not uploaded.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;View edit history&lt;/strong&gt;: opens the current source file&amp;rsquo;s commit history when&#xA;&lt;code&gt;github_repo&lt;/code&gt; and its repository path are available.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://oink.pgsty.com/docs/advanced/agent-support/#llms-txt&#34;&gt;&lt;code&gt;llms.txt&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;: site-root file listing.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The remainder of this page explains how to enable each feature, and discusses&#xA;&lt;a href=&#34;https://oink.pgsty.com/docs/advanced/agent-support/#validation-and-metrics&#34;&gt;validation and metrics&lt;/a&gt; supported with examples.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Comments with giscus</title>
        <link>https://oink.pgsty.com/docs/advanced/comments/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/advanced/comments/</guid>
        <description>&lt;p&gt;OINK supports &lt;a href=&#34;https://giscus.app/&#34;&gt;giscus&lt;/a&gt; through a &lt;a href=&#34;https://imfing.github.io/hextra/docs/advanced/comments/&#34;&gt;Hextra-compatible comments configuration&lt;/a&gt;&#xA;under &lt;code&gt;params.comments&lt;/code&gt;. giscus gives each content page a comment thread backed&#xA;by &lt;a href=&#34;https://docs.github.com/en/discussions&#34;&gt;GitHub Discussions&lt;/a&gt; and lets readers comment through GitHub OAuth.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-giscus-works&#34;&gt;How giscus works&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#how-giscus-works&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;When a page loads, giscus searches the configured repository for a Discussion&#xA;that matches the page. If it does not find one, the giscus bot creates it when a&#xA;reader submits the first comment or reaction. Maintainers moderate comments in&#xA;GitHub Discussions.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Analytics, user feedback, and SEO</title>
        <link>https://oink.pgsty.com/docs/advanced/analytics/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/advanced/analytics/</guid>
        <description>&lt;p&gt;OINK does not contact analytics, form, comment, or advertising services by&#xA;default. These integrations are site decisions: enable them explicitly, document&#xA;the data boundary, and provide any consent or policy required by the site&amp;rsquo;s&#xA;users and jurisdiction.&lt;/p&gt;&#xA;&lt;h2 id=&#34;adding-analytics&#34;&gt;Adding analytics&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#adding-analytics&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Hugo provides embedded templates for analytics services. When a site configures&#xA;Google Analytics, browser usage information such as page views and custom events&#xA;is sent to Google. This is incompatible with a fully air-gapped runtime and may&#xA;be incompatible with a strict same-origin Content Security Policy.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Advanced</title>
        <link>https://oink.pgsty.com/docs/advanced/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/docs/advanced/</guid>
        <description>&lt;p&gt;This chapter covers &lt;strong&gt;optional capabilities&lt;/strong&gt;. Each one is enabled explicitly —&#xA;the theme supplies the implementation but does not set site policy on your&#xA;behalf.&lt;/p&gt;&#xA;&lt;h2 id=&#34;in-this-chapter&#34;&gt;In this chapter&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#in-this-chapter&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://oink.pgsty.com/docs/advanced/keyboard/&#34;&gt;Keyboard navigation&lt;/a&gt;: the complete single-key map, focus rules,&#xA;and per-page opt-out&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://oink.pgsty.com/docs/advanced/search/&#34;&gt;Search and Command Palette&lt;/a&gt;: the local index, ranking, &lt;code&gt;Cmd/Ctrl-K&lt;/code&gt;,&#xA;&lt;code&gt;/&lt;/code&gt; full search, and &lt;code&gt;\&lt;/code&gt; command mode&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://oink.pgsty.com/docs/advanced/print/&#34;&gt;Print output&lt;/a&gt;: whole-section print views&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://oink.pgsty.com/docs/advanced/agent-support/&#34;&gt;AI and agent support&lt;/a&gt;: Markdown output, &lt;code&gt;llms.txt&lt;/code&gt;, page&#xA;actions&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://oink.pgsty.com/docs/advanced/comments/&#34;&gt;Comments&lt;/a&gt;: giscus integration&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://oink.pgsty.com/docs/advanced/analytics/&#34;&gt;Analytics&lt;/a&gt;: Google Analytics and other providers&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;opt-in-by-default&#34;&gt;Defaults follow the risk boundary&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#opt-in-by-default&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Local, non-networked keyboard navigation is on by default. Capabilities that&#xA;change site policy or may hand data to another service remain opt-in:&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
