Skip to content

OINK v0.3.0

Choose a tag to compare

@Vonng Vonng released this 12 Aug 15:10
· 200 commits to main since this release

Breaking changes

  • Remove jQuery. The theme no longer loads jQuery on any page. It was
    previously fetched render-blocking in <head> for every request, and the
    third-party inventory listed it as part of the UI foundation, so a consuming
    site's own scripts may have relied on the global $. Sites that do must now
    bundle jQuery themselves through project JavaScript. No theme feature
    requires it.
  • Remove static/js/tabpane-persist.js. assets/js/code-tabs.js took over
    the legacy persistence contract, keeping the td-tp-persist storage key and
    data attribute, so authored tab content is unaffected. Sites that referenced
    the published file path directly must drop that reference.
  • Apply body and heading typography roles directly to content. Sites that
    previously restyled raw body or heading selectors should move to the
    corresponding --td-*-font-family role or the established Sass variable.

Added

  • Add one-level Hugo Menu dropdowns on desktop and matching mobile accordions,
    preserving independent parent navigation, keyboard operation, active paths,
    external-link safety, and flat-menu compatibility.
  • Add all, groups, and none sidebar icon-density policies. The absent
    compatibility default remains all; the starter example opts into
    groups.
  • Add local-search keywords, positive boost multipliers, canonical exclusion,
    root/section/type grouping metadata, deterministic breadcrumbs and icons,
    language-separated size budgets, and identical boost behavior in Lunr and
    CJK substring ranking.
  • Upgrade the existing local-search dialog to a Command Palette with empty,
    text, and > command modes, plus quick links, grouped page results,
    context-aware actions, localized safe site commands, choice actions, and a
    shared page-action registry.
  • Add / as a command-first Palette shortcut outside editable controls. It
    opens with the > prefix, preserves the existing Cmd/Ctrl-K entry point,
    and returns focus to the pre-shortcut element when closed.
  • Complete the shared page-action set with Open in ChatGPT, Open in Claude, and
    View edit history. Assistant prompts resolve the current browser URL at
    activation time, including its deployed host, query string, and fragment;
    repository history uses the same source path as Edit this page. The outbound
    assistant actions are disabled by default and require
    params.ui.page_context_menu.assistant_links: true.
  • Add a bilingual PRD 4 migration reference and machine-checked root/subpath
    starter fixtures.
  • Run the browser runtime tests in CI. tests/js/ covers the shell, Command
    Palette, search engine, action registry, and surface coordination; until now
    no workflow executed it, so the only automated check on that code was that
    Hugo could bundle it.
  • Add validated badge, kbd, fields, and filetree content primitives
    with semantic HTML, responsive presentation, and dedicated print and Markdown
    fallbacks. A standalone public icon shortcode remains deferred; components
    may use a private, allowlisted icon registry for their own decoration.
  • Add opt-in native-dialog Image Zoom plus the shared gallery primitive,
    with page-level overrides, lazy media metadata, keyboard and focus handling,
    and page-store-driven runtime loading.
  • Add validated technical and system typography presets plus public
    --td-*-font-family roles for UI, body, headings, code, display text,
    metadata, and print output. Existing Docsy and Bootstrap Sass font variables
    seed the new roles, and the system preset does not request OINK brand fonts.
  • Add a typography-token boundary check and representative docs, blog, and
    print fixtures to the minimal example site.
  • Add enhanced fenced code surfaces with filenames, language labels, copy,
    wrapping, long-block collapse, and deterministic transcript-command copying;
    add code-group for synchronized, deep-linkable alternatives while retaining
    legacy tabpane persistence.

Changed

  • Rename the reader-facing Copy Markdown and View Markdown actions to Copy text
    and View source. Their stable action IDs and Markdown-output requirements do
    not change.
  • Route landing, shell, navigation, footer, content-card, search, print, and
    Asciinema font choices through semantic typography roles while preserving the
    default technical appearance.
  • Give code stacks explicit Sarasa and Noto CJK monospace fallbacks instead of
    relying on the browser's generic monospace fallback.
  • Keep off-site navigation out of llms.txt. Menu entries whose host differs
    from the site's own are navigation chrome rather than content, and listing
    them diluted an index meant for agents. Page-backed and same-host entries are
    unchanged.

Fixed

  • Link the llms.txt a site actually publishes. The Markdown output advertised
    the index unconditionally, so a site enabling the markdown output format
    without LLMS emitted a dangling link on every Markdown page. Each language
    now links its own index instead of pointing every translation at the default
    language's file.
  • Localize the archived-version banner and the giscus noscript block, which
    were hardcoded English on every site. This also closes an unclosed <p> the
    banner emitted whenever url_latest_version was unset.
  • Strip single-quoted and bare data-zoom-src attributes from print and
    Markdown output; only double-quoted values were removed before.
  • Percent-encode the query that search.js places in the search URL. A query
    containing & was previously truncated at that character.
  • Wait for the Asciinema terminal font before fitting terminal output, avoiding
    incorrect geometry when the custom font finishes loading after the player.
  • Resolve product roots by content type when docs and blog share a type, and
    keep configured internal command URLs under the active deployment subpath.

Performance

  • Read the recorded tdOutputFormat page-store value instead of re-deriving the
    active output format, and cache the shell configuration and search dialog per
    language. On a 576-page build this cut shell/config.html from 151.9ms to
    22.1ms, chrome-enabled.html from 141.9ms to 49.6ms, and removed 3930 calls
    to outputformat.html, which is retained as a deprecated shim for consumer
    sites. Generated output is byte-identical.
  • Case-fold search fields once when the engine is created rather than on every
    keystroke. A CJK query previously re-allocated a lowercase copy of the whole
    corpus per character typed; on an 800-document corpus this is 3.44ms to
    0.34ms per keystroke.
  • Drop jQuery and the superseded offline-search.js runtime, which the Command
    Palette replaced. On the measured project-site snapshot this removed about
    88 KB from a typical documentation page's combined CSS and JavaScript; exact
    totals vary as later candidate assets change.

Removed

  • Remove assets/js/offline-search.js. The Command Palette replaced it and the
    runtime-isolation checks already asserted that it must not be bundled.