# v1.6.9 · 失败可查：诊断日志与生图面板切换修复

本版解决两个来自 [#38](https://github.com/dickpy/dsh-imagegen/issues/38) 的问题：生成失败后**没有任何地方可以查看原因**，以及**在对话里打开插件后切不回生图面板**。

## 主要更新

- **新增「诊断日志」面板**：记录每一次上游请求的**实际调用地址**、HTTP 状态、网络错误码（`ECONNREFUSED` / `ENOTFOUND` / `CERT_*` 等）、耗时、请求体积与**上游返回的原始响应**。入口在生图工作台右上角「生成任务」托盘里，支持一键**复制全部**，便于直接粘贴到 issue。
  - 记录仅保存在本机内存（最多 200 条），重启即清空，不写入磁盘。
  - **密钥全程脱敏**：API Key 只记录"是否发送"，不记录内容；`Bearer` 令牌、查询串密钥、内联 base64 图片都会在写入前替换为占位符，复制出来的内容可以安全公开。
- **失败原因直接显示在任务列表**：此前任务失败只显示「失败」两个字。现在失败任务会在列表内展开完整错误信息，不再需要另开面板。
- **错误信息补全定位所需字段**：无法连接上游时会带上**实际请求地址与网络错误码**；上游返回非 2xx 时会带上**HTTP 状态与请求地址**。多数"请求根本没到网关"的情况，看一眼地址就能确认（例如 `api_url` 少写 `/v1`，或误开了「完整 URL」）。
- **修复生图面板被插件页挡住**（[#38](https://github.com/dickpy/dsh-imagegen/issues/38) 评论）：DSH 的插件市场页与对话共用同一个 `main` 插槽，此前从对话切到生图时，插件页不会被隐藏，两个面板同时占用中栏，表现为「点了生图但没切过去」。现已让该插槽内的非对话内容正确让位。
- **补齐覆盖范围**：新增诊断能力的单元与路由测试，并把面板切换场景加入 jsdom 回归测试（旧用例只覆盖了一个现实中不存在的 DOM 形状，因此没能发现该问题）。

## 兼容性

- 不新增运行时依赖，现有渠道、历史记录、素材库、模板和画布数据无需迁移。
- 诊断日志为新增功能，默认记录、无需开启；不产生任何后台请求。
- 更新后重新加载页面或重启 DSH 即可生效。

## 安装

```bash
dsh plugin --profile web add @dickpy/dsh-imagegen@1.6.9
```

从本页的 tgz 附件安装：

```bash
dsh plugin --profile web add <下载路径>/dickpy-dsh-imagegen-1.6.9.tgz
```

## 验证

- 类型检查、构建及全部 79 项冒烟测试通过。
- 新增 `B4b`（失败可解释：拒绝连接记录最终 URL / 网络错误码 / 请求体积，非 2xx 记录状态与上游原文，密钥不落库）、`C3b`（诊断路由读写与脱敏往返）两条专项测试。
- 新增 `E1` 面板切换回归断言，并以**反向对照**确认：移除修复后该断言会失败，加上后通过。
- 已在本机 DSH Desktop 实例中确认宿主加载、诊断路由响应与面板可用。
