# dsh-agent-teams-fish v0.3.2

[0.3.1](v0.3.1.md) 的**徽标修复版**：厂商商标 SVG 在「纯包内素材」路径下被当成 PNG 供给，浏览器解码失败后静默回落，看起来就像「SVG 根本没进包」。

## 修的是什么

[0.3.1](v0.3.1.md) 把 108 张厂商素材（其中 9 个是 `brand-<vendor>.svg`）放进了包内，但宿主端的资产路由对**包内**文件写死了媒体类型：

```ts
data = await readFile(join(artDir, candidate))
contentType = 'image/png'        // 包内也有 SVG，这一行是错的
```

于是 `brand-qwen.svg` 的响应是 `content-type: image/png` + SVG 字节 → 浏览器解码失败 → 徽标 `onError` 回落活动状态图。**配了 `artworkDir` 的机器踩不到**：自定义目录分支用扩展名表推断 MIME，从 0.1.x 起就是对的 —— 所以只有「没有自定义目录、纯吃包内素材」的机器看得见这个症状。

## 本版改动

- **`packagedArtworkContentType()`**（`src/artwork-source.ts`）：按扩展名给出媒体类型，与自定义目录共用同一张 `CUSTOM_EXTENSIONS` 表，两条路径不再各写一套。
- **`resolveArtwork()`**（`src/index.ts`）：把资产解析从 HTTP 处理器里抽出来并导出 —— 降级链、媒体类型、缓存策略都能在没有 web server 的情况下断言。
- **门禁新增两条**：包内每一张素材的媒体类型必须与自身扩展名一致；每个厂商商标必须以 svg document 送达。已在 0.3.1 的代码上做过**变异验证**：把 MIME 改回 `image/png`，这两条立刻失败并点名 9 个 `brand-*.svg`，所以同类事故不会再静默通过。
- **单测新增**：`packagedArtworkContentType` 的扩展名映射（含 `.webp` 与 `.png` 商标回退）。

## 升级

```bash
pnpm update dsh-agent-teams-fish
```

装完重启 DSH。若撞上 pnpm 的供应链静置期（新发布 24h 内），升法见 [v0.3.1](v0.3.1.md) 里的说明 —— 重建 lock 后 `pnpm install --config.minimumReleaseAge=0`。