# OINK 1.4.0 — Easier reading, better search

> Expand selected tables, render and read diagrams locally, search across languages, and browse posts in a gallery.

---

LLMS index: [llms.txt](/llms.txt)

---

OINK 1.4.0 makes technical pages easier to read. Large tables can open in a
roomier view, Mermaid and PlantUML share one diagram viewer, and local search
handles mixed Chinese and English queries more usefully. Blog galleries and
smaller component refinements round out the release.

**v1\.4\.0 · 2026-10-26**
- [View release](https://github.com/pgsty/oink/releases/tag/v1.4.0)
- [Source · tar\.gz](https://github.com/pgsty/oink/archive/refs/tags/v1.4.0.tar.gz)
- [Source · zip](https://github.com/pgsty/oink/archive/refs/tags/v1.4.0.zip)
- [pgsty\/oink](https://github.com/pgsty/oink)

## Tables: expand only where needed {#tables}

Most tables work well inside an article. For the few that need more room, add
`.expand` below the table. A small action appears in its upper-right corner on
mouse hover or keyboard focus; it remains visible on touch screens. Clicking it
opens the table in a dialog at a readable text size. Escape or Close returns to
the same place in the article.

`.wide` selects the technical-table layout: identifiers stay intact and long
descriptions have bounded widths. The two classes are independent and can be
combined. Goldmark accepts multiple classes in the same attribute block:

```markdown
| Extension | Version | Purpose |
| --- | --- | --- |
| pgvector | 0.8.1 | Vector similarity search |
{.wide .expand}
```

The same source renders below as a live table. Its corner control is the actual
`.expand` reader, and the long-table sizing comes from `.wide`:

| Extension | Version | Purpose |
| --- | --- | --- |
| `pgvector` | `0.8.1` | Vector similarity search |
| `pg_stat_statements` | `1.11` | Statement statistics |
{.wide .expand caption="Example extension packages"}

Existing `.td-table--wide` markup still works. Ordinary tables need no new
controls. The reader preserves links, selection and the original table; Print
and static outputs retain the complete content. Table captions now have proper
padding, align with column labels and leave room for the corner action.
See [Tables](/docs/components/table/).

## Diagrams: one viewer, local rendering {#diagrams}

Mermaid and local PlantUML now share zoom, pan, fit, source viewing, source copy
and SVG download. Keyboard and touch controls work in the same viewer. Large
rendering engines load only when a diagram approaches the screen, and diagrams
hidden in Tabs or disclosures wait until they become visible.

PlantUML can render entirely in the browser using assets bundled with OINK.
Enable `params.plantuml: true` without a server endpoint; there is no Java,
Graphviz, npm installation or rendering service to maintain. An explicitly
configured endpoint keeps server rendering. Includes, external libraries and
some PlantUML features remain unsupported by the local engine; see the
[PlantUML limits](/docs/components/plantuml/#limits).

Failed rendering leaves readable source. Browser printing uses the rendered
figure when available and source when it is not; dedicated static outputs
retain their source fallback. Resizing, narrow columns and theme changes keep
diagrams usable. Markmap gains a fit control, and Infographic diagrams retain
an independent surface for their authored theme. See
[Mermaid](/docs/components/mermaid/) and [PlantUML](/docs/components/plantuml/).

## Search: better queries and useful destinations {#search}

Local search now understands separated Chinese terms, mixed Chinese and English,
and technical identifiers such as `shared_buffers` or `pg_basebackup`. It
prefers pages matching all query terms and clearly labels partial matches when
no page covers everything.

Results show relevant section context and link to the actual heading anchor.
Each page appears once. In the command palette, choose the whole site or the
current content section using a compact scope control. Keyboard commands and
Chinese input-method composition keep working. No search service, account or
new configuration is required. See [Local search](/docs/customize/search/).

## Blog: browse by cover image {#blog-gallery}

Set `blog_index: gallery` to add the fourth blog view alongside list, cards and
table. The gallery offers wall, seamless and masonry layouts plus a size
slider. Reader preferences are remembered independently from Expo albums.

Covers still lead to articles, in the same date order and pagination. Titles
remain available to keyboard and touch users, missing covers have placeholders,
and a simple grid remains usable without JavaScript. See
[Blog layouts](/docs/write/blog/).

## Components: quieter, more consistent details {#components}

Cards, disclosures, Tabs, code controls, tables, Fields, badges, steps and
navigation rows now share more consistent spacing, borders and state feedback.
Copy feedback has reserved space, button labels stay still when pressed, and
touch controls are easier to reach. Paper headings lose their decorative tails.

Three optional forms help with compact content:

- `{.cards .td-cards-list}` or `cards variant="list"` creates a divided resource list.
- `{.steps .td-steps-compact}` or `steps variant="compact"` presents a short procedure.
- `{class="td-code-command"}` turns a one-line code fence into a command strip.

Unsuitable command blocks keep their regular presentation with a warning;
content is never discarded. Paper remains the default, Slate remains available,
and Ink and Terminal remain opt-in experimental styles. See the
[component comparison](/docs/components/presentation/).

## Other reading fixes {#fixes}

- Fragment links reveal the necessary nested Tabs before navigating to their target.
- Equations and page controls stay inside narrow reading columns.
- Copy fallback works inside an open dialog.
- Wide diagrams, fitted views and print output retain readable content after resizing.
- New table-reader controls have labels in all 32 interface catalogs.

## Upgrade {#upgrade}

Use **Hugo Extended 0.168.0** and **Go 1.27.3**. Go 1.27.3 is also the module
minimum. Theme styles continue to compile with Hugo's built-in LibSass; ordinary
sites need no external Sass compiler or Node.js installation.

```sh
hugo mod get github.com/pgsty/oink@v1.4.0
hugo mod tidy
hugo --environment production --minify --printPathWarnings
```

Commit the updated `go.mod` and `go.sum`. Refresh vendored or copied theme files
separately. Keep Hugo's LibSass deprecation warning visible and review other
diagnostics; do not enable `--panicOnWarning` or `HUGO_PANICONWARNING`.

Existing content requires no general migration. The notable configuration
change is PlantUML: an enabled renderer with no endpoint now uses local mode.
Set `params.plantuml: false` to disable it completely. Maintained sites keep
Paper as the default with `preset_menu: [paper, slate, ink, terminal]`.
The [upgrade guide](/docs/admin/upgrade/) covers validation and rollback.

---

Backlinks:

- [Releases](/blog/release/)
- [Docs](/docs/)
- [Introduction](/docs/about/)
- [Contributing](/docs/about/contributing/)
- [Upgrade](/docs/admin/upgrade/)
