# OINK 1.3.0 — Expo 图片相册

> Expo 为 OINK 带来基于页面资源的图片相册、三种布局和原图查看器，并修复导航、对话框与焦点行为。

---

LLMS 索引： [llms.txt](/zh/llms.txt)

---

OINK 1.3.0 新增 **Expo**，与 Docs、Blog、Book 并列。一册相册就是一个 Hugo 叶子页面包：`index.md` 和同目录的图片。资源元数据提供标题、图注、署名、顺序和稳定图片链接，无需为每张图片单独创建网页或 YAML 文件。

OINK 1.3.0 以 Hugo Extended **0.166.0** 作为最低版本，以及开发、CI 与发布测试的
统一基线。模块声明 Go **1.27.0**。

## 主要变化 {#at-a-glance}

- Expo 相册共用 OINK 侧栏、导航和外观控件。
- 展墙、卡片、无缝三种布局，保留布局和图片大小偏好。
- 原图查看器提供适合窗口、有限扩展、缩放、拖动与稳定位置链接。
- GIF 播放和暂停控件，遵守减少动态效果的系统设置。
- 显式导航作用域、基于内容身份的当前路径，以及更可靠的模态焦点。
- 可靠的 Landing 代码控件与 RSS，以及正文完整的聚合打印输出。
- 支持模块、vendor 与传统主题站点的消费站升级工具。

## 创建相册 {#create-an-album}

```text
content/photos/
├── _index.md
└── field-notes/
    ├── index.md
    └── images/
        ├── fern.jpg
        └── river.gif
```

在分区入口设置 `type: expo` 和 `cascade: {type: expo}`。图片会自动出现；需要标题、图注、署名、固定顺序或显式 ID 时，再补充 Hugo `resources` 元数据。预览与原图可以保存在同一个页面包中。

阅读 [Expo 创作指南](/zh/docs/write/expo/)，或打开[示例相册](/zh/expo/)。正文里的小型图片网格继续使用 [Gallery 组件](/zh/docs/components/gallery/)。

## 查看与导航 {#view-and-navigate}

查看器以原始尺寸打开图片，并限制在视口内。适合窗口、扩展、缩放和拖动支持观察细节。左右方向键或 Q/E 切换图片，K/J 缩放，R 复位，F 切换扩展。触屏支持轻扫和双击。关闭后，焦点回到原图片；打开另一界面时，焦点移交给新界面。

Expo 在 Print、Markdown、LLMSFULL 和 RSS 中保留图片与元数据。JavaScript 不可用时，图片链接仍能打开原图。

## 阅读与交互修复 {#repairs}

显式 Docs、Book 导航按内容身份选择分支，支持自定义 URL 和嵌套根，不再影响以首页为根的导航或其他外壳。未缓存侧栏能正确标记当前页，并展开其内容祖先。

Draw.io 使用原生模态窗口，提供本地化关闭按钮、遮罩关闭、监听器清理和焦点恢复。进入跨域编辑器后，仍有可通过键盘到达的外层关闭入口。编辑按钮进入 Safari 的 Tab 顺序。已关闭的外观面板不会在协调关闭时夺取焦点。

Book 页内标题按所属导航行缩进。宽屏大纲在有限范围内伸展，调整窗口时立即跟随，同时保留折叠动画。

本版本还修复了通用属性公式、缺失引用与空标签页回退、Expo 元数据与切图预览、
键盘焦点和配置 Schema。具体行为见双语 Design 契约。

## Landing 与打印修复 {#landing-and-print}

Landing Markdown 代码块使用独立 ID 和共享正文样式。即使页面包含重复区块，
复制与展开控件也只操作对应代码块。配置的 RSS 输出会生成完整订阅文档。
默认 404 页面不会因根级 cascade 继承阅读类型而显示无效的侧栏抽屉入口。

聚合打印将编码后的标题链接保留在各自章节内，覆盖 Tabs 中生成的标题。
生成的标签页 ID 按章节隔离，相对链接按原页面解析，发布目录包含完整版本正文，
并加载所收录子页面需要的数学样式。宽表格在浏览器打印预览中支持键盘滚动，
在纸张输出中展开。

手写 HTML ID 默认保持全局含义。如果某个元素的 ID 与本地链接应在聚合打印中
加上章节前缀，为该元素添加布尔属性 `data-td-print-local`。普通页面与单页打印
继续保留原有锚点。

## 升级 {#upgrade}

已有 Docs、Blog、Book 内容无需批量迁移。Expo 通过 `type: expo` 显式启用。提供四套读者风格的站点继续使用 `params.ui.preset: paper` 和显式 `[paper, slate, ink, terminal]` 菜单。

将 Hugo 与 workflow 固定版本更新到 Extended **0.166.0**，然后选定精确的发布版本。
检查公开模块时，关闭本地替换与两种工作区：

```sh
env -u HUGO_MODULE_REPLACEMENTS GOWORK=off HUGO_MODULE_WORKSPACE=off \
  hugo mod get github.com/pgsty/oink@v1.3.0
env -u HUGO_MODULE_REPLACEMENTS GOWORK=off HUGO_MODULE_WORKSPACE=off \
  hugo --environment production --minify --panicOnWarning
```

实际使用的 vendor 快照与传统 `themes/oink` 副本需要单独更新；修改 `go.mod`
不会更新它们。保留站点自己的内容与模板覆盖，再检查导航、读者菜单、打印和自定义
首页。具体步骤见[升级指南](/zh/docs/admin/upgrade/#preparing-1-3)。

## 验收 {#validation}

本次发布工作在 `~/www` 与 `~/pgsty` 下的 36 个维护站点上检查了开发与生产配置。
已审阅源码通过严格构建、生成 HTML 的链接与 ID 检查、浏览器交互，以及文档站
回归套件。最后的打印修复在 Chromium、Firefox 和 WebKit 中另有定向测试。
历史第三方静态 HTML 与 OINK 输出单独记录。这些检查证明受测源码的行为；
各消费站的部署仍需单独验收。
