Skip to content

OINK 1.5.1 — Duo View repairs and publishing correctness

Stabilize Duo View, correct RSS and Print output, and harden navigation, validation, search, and accessibility after the 1.5.0 review.

OINK 1.5.1 is a maintenance release following 1.5.0. It publishes the review repairs accumulated after the bilingual reader shipped: the reader is now called Duo View, its loading and sync states are clearer, and static output keeps its format boundaries. The release also tightens navigation identity, safe fallbacks, search ranking, accessibility, and localization across the theme. Existing params.ui.compare and compare_translations settings remain valid, and no content migration is required.

Duo View

The two-pane translation reader now uses the name Duo View in English and the corresponding localized name in all 32 interface catalogs. The page entry, Command Palette action, title, keyboard help, and status messages use the same terminology; the params.ui.compare setting and compare_translations action ID do not change. With keyboard navigation enabled, B toggles the reader from the page and from either pane.

The reader treats an iframe’s initial about:blank load as pending, then shows a localized Retry action and a direct link when a document is still blank after 15 seconds. A pane becomes readable after its article is parsed, so slow images do not discard an otherwise usable page. Fragment links reveal hidden tab panels, and the reader remeasures after OINK tab changes. Blog archive pages after the first and translations that publish no HTML are no longer offered as targets.

Sync Scroll is now a labelled switch. Its orange note distinguishes a partial heading match from overall-progress synchronization and appears only when the headings actually differ. Continuous trackpad scrolling keeps the follower in step, while discrete jumps still ease when motion is allowed. The last target language, sync setting, visible pane, and both reading positions survive reload and history restoration. Escape closes the reader from a closed language menu and restores the focus that opened it.

Publishing and output correctness

RSS rendering keeps its page summaries in RSS format state, sorts entries before applying the feed limit, omits undated pubDate values, and emits static component HTML without browser controls or raw Markdown. Blog archive pagination and prev/next links apply only to HTML, so Print produces one complete aggregate instead of repeating the archive for every page.

Nested shortcode and Markdown components now namespace generated IDs with their full ancestry, while shared URL rules reject unsafe Landing links. Navigation JSON and section indexes remain stable across language and deployment prefixes; version links no longer repeat the current deployment directory. Markdown, LLMS, Print, RSS, forced-colors navigation, RTL typography, and print links keep their static and accessibility contracts.

Authoring and validation

Ordinary builds remain usable for positional shortcode arguments, invalid Book numbers, missing manual-link references, and malformed Landing records. Each case warns and uses its documented safe fallback. Search now ranks a repeated term in its strongest field above a passing mention in that same field, while respecting field tiers; technical identifiers such as top_k keep their useful ranking. Page descriptions are read through .Description, avoiding the deprecated .Params.description path in newer Hugo releases.

The release was checked with the fixed Hugo Extended 0.168.0 and Go 1.27.3 toolchain: 49 theme checks, 67 documentation checks, and 519 browser checks passed, including the eight-language comparison coverage and the reproduced RSS, Print, and stalled-pane regressions.

Upgrade

Pin the published module at v1.5.1 and keep Hugo’s built-in LibSass compiler:

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

Commit the resulting go.mod and go.sum. Existing Duo View configuration continues to work. Review the upgrade guide when upgrading a site that uses a vendored theme copy or a Git submodule. Keep the upstream LibSass deprecation warning visible, and do not enable --panicOnWarning or HUGO_PANICONWARNING.