# 更新日志 / Changelog

以下条目描述各版本当时的行为，不代表全部适用于当前版本。当前使用说明见中英文 README 和用户指南。

Entries describe behavior at each release, not necessarily current behavior. Consult the READMEs and user guides for current usage.

## 1.6.1 — 2026-11-02

### 中文

- 兼容 DSH `0.2.1-rc.5`：在可选会话依赖范围中显式接受该版本，修复安装时的 peer 依赖解析冲突，保留此前支持范围（#64）。
- 增加 `0.2.1-rc.5` 官方后端锁定夹具，并加入 Ubuntu、macOS、Windows 原生集成矩阵；保留 `0.1.7-rc.2` 和 `0.2.1-rc.2` 回归覆盖。

### English

- Support DSH `0.2.1-rc.5` by explicitly accepting it in the optional session peer range, fixing installation dependency-resolution conflicts while preserving earlier support (#64).
- Add a pinned `0.2.1-rc.5` official backend fixture to the Ubuntu, macOS and Windows native-integration matrix, retaining coverage for `0.1.7-rc.2` and `0.2.1-rc.2`.

## 1.6.0 — 2026-10-22

### 中文

- 兼容只有旧待删除标记、没有回收记录的会话：读取回收站时补齐待重试入口，不自动删除，也不撤销已提交的永久删除意图。
- 修复旧回收记录恢复时将同一工作区的路径别名误判为 ID 冲突的问题；只有真实路径相同才允许恢复，不同或无法验证的路径仍拒绝。
- 收拢归档管理入口：停止新增移入回收站，移除「空间与策略」。停止自动到期清理与启动快照清扫，保留旧回收记录、快照和策略文件；旧客户端的新增回收及策略请求返回 410。
- 有旧回收记录时保留恢复、导出保护快照及确认永久删除；空回收站隐藏，读取异常时保留错误入口。未完成删除必须明确重试。保护快照 ZIP 包含会话与图片，单条上限 64 MiB，不能通过普通会话备份导入器导入。
- 统一已归档、未归档和来源与分支的搜索、筛选、工作区折叠及操作布局；未归档只提供归档操作。已归档和未归档默认按官方首页的「最近更新」逻辑排序，支持未分组和定时任务筛选。
- 全文搜索按筛选后的候选分批执行，展示进度并支持停止、重试；不再只展示前 100 个匹配。点击摘要定位命中消息，自动展开包含工具或推理内容的折叠轮次。
- 修复永久删除归档时官方侧栏短暂重新显示会话的问题：确认文件删除后通知客户端移除，在归档状态下清理工作区成员关系，失败保留可重试任务。单条预览只读取所选聊天，待删除会话不再参与预览或标题读取。
- 关于页提供手动残留会话检查、失败重试、预览、备份及确认删除；进入页面不自动扫描。新增定时、页面恢复和联网后的更新检查，失败 15 分钟后重试。
- 更新弹窗提供当前宿主对应的命令、安装信息复制和本地开发版保护；宿主允许时安装已展示的精确版本，完成后明确提示重启，不自动重启 DSH。
- 同步中英文 README、用户指南、架构文档及八张界面截图。
- 已知宿主限制：DSH 0.2.1-rc.2 在首次配置未完成时，归档当前会话可能触发引导并关闭设置弹窗。已向官方反馈 [#10596](https://github.com/deepseek-ai/deepseek-harness/discussions/10596)，本版不包含宿主修复。

### English

- Keep legacy pending-only deletions visible for explicit retry by recording them when the Recycle Bin is read, without automatically deleting data or reversing committed deletion intent.
- Fix legacy recovery rejecting aliases of the same workspace directory as ID conflicts. Allow differing path strings only when both resolve to the same directory; retain rejection for different or unverifiable paths.
- Simplify archive management: retire new Recycle Bin moves and Storage & Policy navigation. Disable automatic expiry and startup snapshot sweeping while retaining legacy records, snapshots and saved policies. Stale recycle/policy mutation requests return 410.
- Keep recovery, protection-snapshot export and confirmed permanent deletion for legacy records. Hide an empty bin and retain its error view when the catalog cannot be read. Incomplete deletions require explicit retry. Protection-snapshot ZIPs include session data and images, are limited to 64 MiB per record, and cannot be imported by the ordinary conversation-backup importer.
- Align search, filters, workspace folding and actions across Archived, Unarchived and Origin & Branches. Unarchived offers archive actions only. The two chat lists default to the official home page's Recently updated ordering and support Ungrouped and Scheduled tasks filters.
- Search all filtered candidates in batches with progress, stop and retry controls instead of showing only the first 100 matches. Open matching messages from result snippets and expand folded turns containing tool or reasoning matches.
- Prevent permanently deleted archived chats from briefly reappearing in the official sidebar: notify clients after file removal, detach workspace membership while still archived, and retain retryable tasks on cleanup failure. Preview only the selected chat and exclude pending deletions before preview or title reads.
- Add manual residual-chat checks, retry, preview, backup and confirmed deletion to About; opening the page never starts a scan. Check for updates periodically, after visibility/network recovery, and retry failures after 15 minutes.
- Provide host-specific update commands, copyable installation information and local-checkout protection. Where supported by the official plugin manager, install the exact reviewed version and report restart requirements without restarting DSH automatically.
- Update both READMEs, user guides, architecture documents and all eight interface screenshots.
- Known Host limitation: in DSH 0.2.1-rc.2, archiving the current chat while initial setup is incomplete can trigger onboarding and close Settings. Reported upstream in [#10596](https://github.com/deepseek-ai/deepseek-harness/discussions/10596); this release does not include a Host fix.

## 1.5.3 — 2026-10-21

### 中文

- 兼容 DSH `0.2.1-rc.2`：在可选会话依赖范围中显式接受已验证版本，避免安装时的 peer 依赖冲突（#60）；保留此前支持范围。
- 增加新版官方 Host 的锁定测试夹具，适配 JSONL 后端由构造器改为插件 `apply()` 的初始化方式。CI 在 Ubuntu、macOS、Windows 上分别运行新旧两套 Host 的八项原生集成检查，覆盖备份恢复、删除、失败回滚及分叉标题。

### English

- Support DSH `0.2.1-rc.2` by explicitly admitting the verified version in the optional session peer range, avoiding installation conflicts (#60) while preserving earlier support.
- Add a pinned official Host fixture and adapt native test setup to the JSONL backend's plugin `apply()` entry point. CI runs all eight native integration cases against both Host versions on Ubuntu, macOS, and Windows, covering backup/restore, deletion, rollback failures, and forked-session titles.

## 1.5.2 — 2026-10-13

### 中文

- 修复新版 Host 使用两参数 `cachedSnapshot(meta, keys)` 时，导入后标题同步误报 `cache-read-failed` 的问题；保留旧版三参数接口适配。
- 新版 Host 已支持分叉会话的冷列表标题读取，不再返回过时的 `seeded-cold-list-unsupported` 警告；旧版 Host 仍保留该限制提示。
- 增加官方投影缓存、标题投影和 JSON 存储的集成回归，覆盖普通与分叉会话的标题、事件水位和继承边界。强制原生集成门禁增至八项。

### English

- Fix imported-title synchronization reporting `cache-read-failed` on newer Hosts using `cachedSnapshot(meta, keys)`, while retaining the older three-argument interface.
- Stop reporting the obsolete `seeded-cold-list-unsupported` warning on newer Hosts that support cold listing titles for forked sessions; retain the limitation warning on older Hosts.
- Add integration coverage using the official projection cache, title projection, and JSON storage for ordinary and forked sessions, including titles, event watermarks, and inherited boundaries. Increase the mandatory native integration gate to eight cases.

## 1.5.1 — 2026-10-08

- 残留会话整合为顶部最后一张统计卡片，进入空间与策略自动检查，点击「查看明细」后管理明细；离开取消请求，迟到结果不覆盖新检查。目录及恢复快照异常归入对应卡片提示；空间统计加载或失败不再隐藏独立的残留检查入口。
- Move residual chats into the final summary card and scan automatically on entry to Storage & Retention. View details opens the management dialog; cancelled late responses cannot replace newer results. Show measurement and recovery-snapshot issues in their respective cards. Keep residual access available while storage statistics load or fail.

- 全部八张市场功能截图更新至最新界面，移除预览页顶部的英文及本地会话管理说明，并展示最新选择操作。
- Refresh all eight marketplace screenshots from the latest UI, remove the extra preview header, and show the current selected actions.

- 顶部更多新增「全部移入回收站」，确认并处理所有工作区的已归档聊天，筛选不会缩小范围。
- Add header More → Move all to Recycle Bin, confirming the complete archive scope across workspaces regardless of filters.

- 已归档新增选择模式，支持当前结果全选、半选、隐藏已选项计数及取消清空。直接提供取消归档和永久删除；更多提供导出选中和移入回收站。选择模式行内保留预览，操作先确认精确选中范围。
- Add Archived selection mode with filtered Select all, indeterminate state, hidden-selection counts, and Cancel. Expose Unarchive and Delete permanently; More contains Export selected and Move to Recycle Bin. Rows retain Preview and actions confirm the exact selected scope.

## 1.5.0 — 2026-10-08

### 中文

- 永久删除、清空回收站及重启重试一并清理子代理后代，保留独立分叉；删除目标持久化，活动代理先停止，失败可重试（#57）。
- 新增「未归档」视图，复用已归档的工作区分组排版；搜索在顶部，筛选行右侧提供刷新图标。会话行提供只读预览图标，支持单条归档、工作区全部归档及全局全部归档，归档均先确认；搜索和筛选不缩小批量范围。
- 修复弹窗、对话预览顶栏、菜单及成功提示的背景穿透，使用随明暗主题变化的不透明宿主层。
- 修复下载中断后的导出流释放，以及部分删除后的回收站和侧栏刷新。
- 在「空间与策略」新增按需残留会话检查：仅处理明确缺父的子代理，提供完整 ID、搜索多选、只读预览、备份及确认删除。超限先询问，删除与重启重试只处理选中项（#58）。

### English

- Cascade permanent deletion and recovery through subagent descendants while preserving forks and independent recycle records. Persist targets before removal and quiesce live agents (#57).
- Add Unarchived using Archived’s workspace-group layout, with search above filters and a refresh icon at the right. Offer read-only chat previews and confirmed individual, workspace-wide, and global archiving; search and filters do not narrow bulk scope.
- Fix transparent dialog, preview-header, menu, and success-toast backgrounds with opaque Host surfaces that follow light and dark themes.
- Release interrupted export streams and refresh the sidebar and recycle list after partial deletion.
- Add an on-demand residual check in Storage & Retention for subagents with confirmed missing parents: full IDs, search, selection, read-only previews, backups and confirmed deletion. Ask before excluding oversized backups; delete and retry only selected records (#58).

## 1.4.6 — 2026-10-02

### 中文

- 修复会话库同时保留旧版 v3 与当前 v4 日志时，任意旧会话会使所有永久删除、清空回收站及自动回收清理报 `session-location-unavailable` 的问题（#55）。Host 的 `locate()` 返回当前代写入路径，不能据此要求该文件已经存在。
- 删除安全检查以真实会话独占目录为范围，兼容实际存在的规范代际日志及尚未生成日志的空目录；清单中的已不存在目录不再阻塞删除和中断任务重试。继续拒绝符号链接／junction、非文件日志、目录重叠、不属于会话的路径及不可读清单。
- 新增混合日志、空／缺失目录和删除安全回归，以及使用官方后端验证单条永久删除、归档直接删除、清空回收站的集成用例。原生 CI 门禁增加到六项；另在隔离目录验证官方 `0.2.0-rc.2` 后端，并在可选 peer 范围中显式加入这个已验证版本。

### English

- Fix `session-location-unavailable` blocking every permanent deletion, Empty Recycle Bin, and automatic recycle purge when the inventory contains a historical v3 log beside current v4 logs (#55). The Host's `locate()` names the current append target, which may not exist yet.
- Use the actual exclusive session directory as the deletion scope, accepting canonical stored generations and unmaterialized empty directories. Absent inventory directories no longer block deletion or interrupted-purge retries. Keep refusing links/junctions, non-file logs, overlapping directories, non-session-scoped paths, and unreadable inventory.
- Add mixed-generation, empty/missing-directory, and safety regressions plus an official-backend integration for individual purge, direct archive deletion, and Empty Recycle Bin. The mandatory native CI gate now runs six cases. Also verify the official `0.2.0-rc.2` backend in an isolated fixture and explicitly admit that tested version in the optional peer range.

## 1.4.5 — 2026-09-27

### 中文

- 使用隔离的虚构示例数据重拍八张插件界面截图，替换仍显示 1.3.1 旧界面及已移除快照入口的图片；中英文 README 与插件市场截图清单使用相同文件和顺序。
- 同步中英文 README、用户指南及架构文档的版本说明，突出当前 `0.1.7-rc.2` Host fixture 与 v4 会话格式验证。本版不改动运行时代码、数据格式或 Host 兼容范围。

### English

- Replace all eight 1.3.1 screenshots, which showed retired snapshot UI, with captures of the current plugin using isolated synthetic example data. Both READMEs and the marketplace screenshot list reference the same files in the same order.
- Update version notes in both READMEs, user guides, and architecture documents to describe the current `0.1.7-rc.2` Host fixture and v4 session-format verification. Runtime code, data format, and Host compatibility range are unchanged.

## 1.4.4 — 2026-09-27

### 中文

- 运行时代码无变化，本次发布只更新包元数据中的已验证 Host 版本。可选 peer 范围原本就通过 `>=0.1.2-alpha.1 <0.2.0-0` 覆盖 0.1.7，现在额外显式列出已验证的 `0.1.7-rc.2`。
- 发布验证的 Host fixture 从 `0.1.5-rc.2`（会话格式 v3）升级到 `0.1.7-rc.2`（v4），CI 因此在 Ubuntu、macOS 和 Windows 上真正执行 v4 路径。1.4.3 的缺陷此前无法被 CI 复现，正是因为旧 fixture 的会话格式是 v3。
- 已安装 1.4.3 或更高版本并运行在 DSH `0.1.7-rc.2` 上的用户，本版没有需要采取的动作。

### English

- No runtime code changes. This release only updates the verified Host version in the package metadata. The optional peer range already admitted 0.1.7 through `>=0.1.2-alpha.1 <0.2.0-0`; it now also lists the verified `0.1.7-rc.2` explicitly.
- The release-verification Host fixture moves from `0.1.5-rc.2` (session format v3) to `0.1.7-rc.2` (v4), so CI now exercises the v4 path on Ubuntu, macOS, and Windows. The 1.4.3 defect could not be reproduced by CI before this change precisely because the old fixture's session format was v3.
- Users already on 1.4.3 or later running DSH `0.1.7-rc.2` have no action to take for this release.

## 1.4.3 — 2026-09-26

### 中文

- 修复在 DSH `0.1.7-rc.2` 等新版 Host 上删除归档会话失败的问题。该版本把会话格式提升为 v4，磁盘上的 `header.version` 因此变为 `4`；插件的持久化兼容层只接受 v2 和 v3，在读取列表时就拒绝，删除随即以 `persistence-response-invalid` 中止。现在兼容层接受 v4。
- v4 相对 v3 只是版本号递增，header 字段形状不变，因此接受 v4 时其余校验（必需字段类型、`cwd` 必须为绝对路径、`createdAt`/`delegationDepth` 的取值范围、未知扩展字段保留等）全部保持原样。
- 新增 v4 header 的读取用例，覆盖列表与检查两条路径；该用例在放宽前失败，可阻止回归。
- 删除归档依赖读取列表，因此此缺陷同时影响删除、批量删除、预览与搜索等所有走持久化兼容层的入口。

### English

- Fix deleting archived chats on DSH `0.1.7-rc.2` and later Hosts. Those versions raise the session format to v4, so the on-disk `header.version` is now `4`; the plugin's persistence compatibility layer accepted only v2 and v3, rejected the header during list, and the deletion aborted with `persistence-response-invalid`. The compatibility layer now accepts v4.
- v4 differs from v3 by the version number alone and keeps the same header field shape. Accepting v4 therefore leaves every other check intact: required field types, `cwd` having to be absolute, the `createdAt` and `delegationDepth` ranges, and preserving unknown extension fields.
- Add a v4 header read test covering both list and inspect; it failed before the relaxation, so it guards against regression.
- Deletion reads the list first, so the defect also affected every entry point that goes through the compatibility layer, including bulk deletion, preview, and search.

## 1.4.2 — 2026-09-22

### 中文

- 修复在 DSH `0.1.6-alpha.2` 等新版 Host 上启动即崩溃的问题。导出改用 `fflate`，移除 `zip-stream` 及其 `readable-stream@4` 依赖链：该链会请求带斜杠的内置模块名（`process/`），新版 Host 的模块解析层去掉斜杠后对内建模块调用 `createRequire().resolve.paths()`，得到 `null` 并逐项迭代，从而抛出异常并中止整个 Host 启动。此问题与聊天内容无关，插件在被加载时即触发。
- 导出的 ZIP 改为同步分片压缩：每个条目按 256 KiB 分片推送，分片之间让出事件循环，避免单次压缩长时间占用主线程；分片大小固定，同一导出计划仍产生字节一致的归档。
- 新增依赖树回归测试，阻止该依赖链被重新引入；新增下载中途取消的测试，确认中止会销毁流并以调用方错误拒绝完成，不再可能把已取消的导出报告为成功。

### English

- Fix the startup crash on DSH `0.1.6-alpha.2` and later Hosts. Export now uses `fflate`, removing `zip-stream` and its `readable-stream@4` chain: that chain requests a builtin module name with a trailing slash (`process/`), and the newer Host's resolution layer strips the slash, calls `createRequire().resolve.paths()` on a builtin, receives `null`, iterates it, and throws — aborting the whole Host boot. The failure is independent of chat content and fires as soon as the plugin loads.
- ZIP export now compresses synchronously in 256 KiB slices, yielding to the event loop between slices so a single compression never monopolizes the main thread. The slice size is fixed, so one export plan still produces a byte-identical archive.
- Add a dependency-tree regression test that blocks that chain from returning, and a mid-download cancellation test proving that abort destroys the stream and rejects completion with the caller's error instead of reporting a cancelled export as successful.

## 1.4.1 — 2026-09-21

### 中文

- 修复恢复成功提示一直停留的问题：成功提示在 4 秒后收起，悬停或键盘聚焦时暂停计时，切换标签即清除；改善「查看已归档」按钮的明暗主题悬停对比度。
- 来源范围与回收站自动清理说明改为提示图标，支持鼠标、键盘与触屏；永久删除确认保留完整说明。仅确认有新版时在「关于」标签显示红点。

- 英文界面、设置入口与当前文档统一为 Archive Management，对应中文「归档管理」；包名和数据位置不变。
- 核对中英文 README、用户指南、架构与支持说明，补齐市场安装步骤，明确分叉 ZIP v2 能力及已发布 1.4.0 的英文菜单名称差异。当前 README 不再展示旧名称横幅或已退役流程的历史截图目录。
- 修正客户端类型说明中「删除会进入回收站」的旧描述：只有工作区菜单能移入回收站，删除需确认且不可恢复。

### English

- Fix persistent restore-success notices: dismiss after four seconds, pause on hover or keyboard focus, and clear on tab changes. Improve View Archived button hover contrast in light and dark themes.
- Move relationship-scope and automatic-cleanup explanations into mouse-, keyboard-, and touch-accessible help controls, keeping full permanent-deletion confirmations. Show an About-tab red dot only for a confirmed available update.

- Align the English UI, settings entry, and current documentation on Archive Management, matching 归档管理. The package identifier and data location are unchanged.
- Audit both READMEs, user guides, architecture, and support notes; add marketplace installation steps, clarify fork ZIP v2 support, and distinguish the English menu label in published 1.4.0. Remove the old-name banner and historical screenshot catalog from current READMEs.
- Correct the client declaration's outdated claim that Delete moves chats to the Recycle Bin: only workspace actions recycle chats; deletion requires confirmation and is irreversible.

## 1.4.0 — 2026-09-21

### 中文

- 中文入口、页面标题和说明统一更名为「归档管理」，英文名称及安装包名保持不变。「关于」去掉重复的插件标题，直接展示简短介绍，保留当前版本、作者、许可证、链接与更新检查。
- 回收站原件缺失时仅允许显式独占的旧版写入器重建普通会话；普通 create/append、所有 seeded 边界不明或无法保留的快照均在写入前拒绝。清空回收站在首次清理前完整校验目标和重复 ID。安装包的可选 Host peer 范围明确接受已验证的 `0.1.5-rc.2`。

- 工作区菜单调整为全部取消归档、全部移入回收站、全部导出，再以分隔线隔开全部删除。「关于」明确显示动态读取的当前版本；区分本地信息与远程更新检查失败，增加本地信息重新读取入口，不伪造版本号。

- 修复新版 Host 的「导出 → 永久删除 → 导入」失败：接入官方 create/append/flush/close 句柄，恢复原 ID、标题、事件、工作区及标签备注，兼容既有 v1 备份。新版 ZIP v2 保存分叉继承边界，支持父会话缺失时恢复；旧 writer 不会展平分叉。导入重检回收记录和待删除任务冲突，失败释放写入占用；归属不明的落盘残留保留并报告回滚未完成。新增官方存储组件临时目录闭环及失败注入测试；不包含附件文件本体。

- 回收站顶部直接并列显示纯文字的「全部恢复」与「清空回收站」，移除仅含一项的更多菜单，保留等高布局及清空确认。聊天行保留预览图标，将恢复／删除改为与归档行一致的紧凑文字按钮。主按钮改为黑底白字，Tab 选中使用黑色文字与下划线，随深色主题反转；禁用态淡化，危险操作保留红色。
- 工作区／全局恢复分别确认范围、数量及已归档去向，跳过待删除项；结果显示实际成功和失败数量，提供「查看已归档」。
- 新增末尾「关于」页及标题版本号，提供作者、许可证、指南、反馈和市场入口。后台受限查询公开 npm 版本，自动检查缓存 12 小时，手动检查短限流；失败不误报最新版、不干扰归档，不发送聊天或备份内容。发现新版时「去更新」仅打开市场，不安装或重启。
- 已归档顶部简化为「批量归档」和「更多」，更多菜单提供导入备份、全部导出、全部取消归档及分隔线后的全部删除。工作区导出、取消归档、移入回收站及删除均确认完整工作区名称和归档数量；全局操作确认所有工作区归档数量，排除回收站，筛选不缩小范围。
- 归档删除入口统一使用「删除／全部删除」，确认弹窗简洁说明目标聊天、工作区或全局范围及不可恢复的后果。
- 修复原生 `React.memo` Markdown 组件识别。完整加载且已结束的轮次默认折叠中间过程，嵌套显示思考、上下文来源与工具参数／结果，最终回复单独展示；不完整或缺少边界的日志保持事件顺序。过程在 AI 左侧，真实用户消息在右侧，保持只读无输入框，不编造用量或耗时。新版投影需重新加载 DSH 后端，仅刷新浏览器不够。
- 恢复会话或开启新请求系列时，按已有日志展示当轮生效的系统提示词；保留更新、清空及替换边界，不从缺失信息推测提示词。回收站删除确认同步展示聊天名称或工作区范围、数量及不可撤销说明。
- 修复现代 Host 上分叉正文预览／搜索和移入回收站：使用完整只读接口，保护记录 v2 保存继承历史的精确分界并兼容旧 v1。恢复现存原件不改写日志；原件缺失时拒绝旧写入器展平分叉。读取失败不再一律误报 `snapshot-source-missing`。
- 各 Tab 保留等高的顶部操作区，避免按钮出现／消失导致页面跳动；顶部按钮统一紧凑尺寸，窄窗口在标题下方保留等高操作行。侧栏档案图标沿用宿主尺寸并加深线条，工作区标题、文件夹及右侧数量／菜单垂直居中。
- 顶部中文标签改为「已归档」；归档工作区标题完整换行展示，文件夹图标放大并保持常规线条，与聊天数量统一使用柔和的辅助文字色和正常字重；以文件夹开合样式替代独立箭头，保留点击标题折叠及键盘操作。
- 单条归档聊天的「删除」改为文字按钮，放在「取消归档」右侧，两者采用更紧凑的字号和内边距，并继续要求删除确认。
- 只读预览为系统提示词、思考和注入上下文增加默认收起的标题与图标，优先使用宿主折叠组件；无宿主组件时保留悬停／聚焦切换箭头及键盘展开。系统提示词正文限高滚动，注入上下文不再误呈现为用户气泡，焦点循环跳过折叠内容。
- 「来源与分支」改为按工作区折叠的紧凑关系列表：记住工作区折叠、默认收起后代、标题旁展开分支、详情按需显示时间与 ID；限制深层缩进并保留跨工作区来源。搜索临时展开命中路径，全部展开／折叠覆盖当前筛选结果。
- 修复新版 Host 分叉会话在归档列表中显示“未命名会话”：标题独立只读提取。
- 归档直接永久删除复用持久化删除任务，先清理关联快照，再删除会话；原件已删除但后续清理失败时，仍能在重启后继续完成。
- 归档永久删除拒绝已在回收站中的会话；失败待重试项及时从普通归档列表移除，并保留错误提示。
- 保留工作区导出和仅通过工作区移入回收站的界面操作。
- 清空回收站绑定确认时的精确回收记录实例；新增记录不扩大范围，已变更或结果不确定的目标保留以安全失败或重试。取消归档明确区分缺少工作目录与缺少工作区，前者保留已归档副本。
- 导出在返回下载流前仅读取每个来源一次，并执行与导入共用的完整格式、语义和大小验证。导入严格校验 ZIP 中央目录、CRC 和 UTF-8，拒绝截断、加密、ZIP64 和多磁盘归档。浏览器在五分钟／320 MiB 响应字节上限内缓冲完整 ZIP 后发起下载；这不是峰值堆内存或已保存到磁盘的承诺。
- 按当前实现重整中英文 README、用户指南、架构说明和包简介，明确操作范围、恢复路径、旧快照启动清理与自动保留策略的区别，以及 Host 和分叉限制；将 v1.3.1 截图标为历史素材，尚未重新拍摄。
- 将中英文用户指南和更新日志纳入 npm 包，便于随包查阅使用说明和版本边界。

### English

- Rename the Chinese navigation, page heading, and guidance to 归档管理, keeping the English name and package identifier unchanged. About now opens directly with a short introduction instead of repeating the plugin title, retaining version, author, license, links, and update checks.
- Rebuild a missing Recycle Bin original only through an explicitly exclusive legacy writer for ordinary sessions; refuse plain create/append and every seeded snapshot whose boundary cannot be preserved before writing. Empty Recycle Bin now validates the complete target list and duplicate IDs before its first purge. The installed package's optional Host peer range explicitly admits the verified `0.1.5-rc.2` Host.

- Reorder workspace actions to Unarchive all, Move all to Recycle Bin, Export all, a separator, and Delete all. About explicitly labels the dynamically loaded current version, distinguishes local metadata failures from online update failures, and offers local metadata reload without inventing a version.

- Fix modern-Host export → permanent delete → import through official create/append/flush/close handles, preserving IDs, titles, events, workspaces, and tags/notes with existing v1-backup support. New ZIP v2 preserves fork boundaries and restores without a parent; legacy writers cannot flatten forks. Recheck recycle/pending-deletion conflicts, release write ownership on failure, and retain uncertain artifacts with an incomplete-rollback error. Add isolated official-backend round-trip and fault-injection tests. Attachment bytes remain excluded.

- Show text-only Restore all and Empty Recycle Bin directly in the header, removing the one-item More menu while preserving fixed header geometry and empty confirmation. Keep row preview icons and use compact Restore/Delete text buttons matching archive rows. Use black/white primary buttons and black selected-tab text/underlines, inverted in dark mode; mute disabled states and retain red destructive actions.
- Workspace/global restoration separately confirms scope, counts, and the Archived destination, skips pending deletions, and reports actual successes/failures with View Archived navigation.
- Add a final About tab and running-version heading, with author, license, guides, feedback, and marketplace links. Bounded public npm checks use a 12-hour automatic cache and short manual cooldown; failures neither claim current status nor block archives. No chat/backup content is sent; Get update only opens the market, without installation or restart.
- Simplify the Archived header to Bulk archive and More. More contains Import backup, Export all, Unarchive all, and Delete all after a separator. Workspace export, unarchive, recycle, and deletion confirm the full workspace name and archive count. Global actions confirm all workspaces' archived chats, excluding trash; filters do not narrow scope.
- Use Delete/Delete all for archive deletion entry points, with concise confirmations naming the chat, workspace, or global scope and explaining the irreversible effect.
- Recognize native React.memo Markdown components. Fully loaded, closed turns initially fold intermediate work with nested reasoning, context provenance, and tool arguments/results; final responses remain outside. Partial or boundaryless logs retain event order. Keep assistant process content left, real user messages right, and preview read-only without a composer or invented usage/timing. Reload the DSH backend for the new projection; browser refresh alone is insufficient.
- Show the recorded effective system prompt when a session resumes or starts a new request series, respecting updates, clears, and replacement boundaries without inventing missing instructions. Recycle Bin deletion confirmations also name the chat or workspace scope, count, and irreversible consequence.
- Fix modern-Host fork content preview/search and Recycle Bin moves through complete read-only inspection. Version 2 protection records preserve exact inherited boundaries while readers retain v1 support. Restore intact originals without rewriting logs; refuse lossy legacy restoration when a fork original is missing. Stop misreporting all read failures as `snapshot-source-missing`.
- Reserve a consistent header action area across tabs to prevent layout jumps. Use compact header buttons and an equal-height action row below the title on narrow layouts, retain Host navigation-icon dimensions with stronger archive strokes, and vertically center workspace titles/folders with their counts and menus.
- Clarify the Chinese Archived tab label. Show full, wrapping workspace titles with enlarged regular-stroke folder icons, using the same subdued secondary text color and normal weight as chat counts. Use open/closed folders instead of separate chevrons while retaining heading-click and keyboard toggling.
- Place a text Delete button after Unarchive on archived chat rows and make both buttons more compact, retaining required deletion confirmation.
- Give system prompts, reasoning, and injected context default-closed preview headings and icons, preferring Host disclosures. The fallback retains hover/focus chevrons and keyboard toggling. Bound prompt bodies with scrolling, keep injected context out of user bubbles, and exclude collapsed content from the preview focus loop.
- Rework Origins & Branches as compact workspace-grouped disclosures: remember workspace folds, initially fold descendants, expand branches beside titles, and disclose timestamps/IDs on demand. Cap deep indentation while retaining cross-workspace source context. Search temporarily reveals matches; expand/collapse all covers current filtered results.
- Read fork titles separately on modern Hosts.
- Use durable deletion tasks for direct archive purge: remove related snapshots first and finish partial cleanup after restart even when the original log is gone.
- Reject archive purge for chats already in the Recycle Bin. Remove pending deletion tasks from actionable archive rows while retaining failure messages.
- Preserve workspace export and workspace-only Recycle Bin moves in the UI.
- Bind Empty Recycle Bin to the exact recycle-record incarnations captured at confirmation. New records cannot expand scope, while changed or uncertain targets are retained for safe failure or retry. Unarchive now distinguishes a missing working directory from a missing workspace; the former preserves the archived copy.
- Read each export source once and apply the importer's complete format, semantic, and size validation before returning a download stream. Import strictly reconciles ZIP central directories, CRCs, and UTF-8 and rejects truncation, encryption, ZIP64, and multi-disk archives. The browser buffers the complete ZIP within a five-minute/320 MiB response-byte limit before initiating download; this is neither a peak-heap bound nor proof of a file saved to disk.
- Reorganize both READMEs, user guides, architecture documents, and the package description around current behavior: action scope, recovery, startup snapshot cleanup versus opt-in retention, and Host/fork limitations. Label v1.3.1 screenshots as historical; they have not been recaptured.
- Include both user guides and the changelog in the npm package so usage instructions and release boundaries ship with it.

## 1.3.3 — 移除历史兼容层并清理遗留快照 / Remove History compatibility and clean legacy snapshots

> 说明更正：此前“不更改运行时行为”的描述不准确。以下补充该版本已有的接口移除和启动清理行为，不表示本次文档整理新增这些行为。
>
> Correction: the former “No runtime behaviour changes” statement was inaccurate. The following records route removal and startup cleanup already present in this release, not new behavior introduced by this documentation update.

### 中文

- 调整保护快照术语；该版本文档中遗留的旧快照保留与恢复说明由 1.4.0 文档整理纠正。
- 删除已退役的 `lib/history.js`、`lib/history-restore.js`、`lib/legacy-recycle.js` 及其对应测试文件；相关兼容路由已在 1.3.0 中作为迁移层保留，现全部移除。
- 回收站不再展示未被回收记录引用的旧快照，也不再提供将其恢复为新归档副本的流程；`legacy-recycle.json` 不再作为活动迁移状态使用。
- 启动恢复后重新读取回收目录，保留被引用的保护快照，自动清理其他有效或降级快照及其插件附件副本。此行为独立于默认关闭的回收站自动清理，不删除来源聊天本身。
- 升级前应使用旧版恢复并导出仍需要的旧快照内容，或离线备份完整插件数据目录；不能继续承诺“升级保留全部旧快照”。

### English

- Adjusted protection-snapshot terminology. Stale preservation/recovery claims remaining in those documents are corrected by the 1.4.0 documentation revision.
- Removed retired `lib/history.js`, `lib/history-restore.js`, `lib/legacy-recycle.js` and their test files; the compatibility routes they backed were retained as a migration layer in 1.3.0 and are now fully removed.
- The Recycle Bin no longer projects unreferenced old snapshots or restores them as new archived copies; `legacy-recycle.json` is no longer active migration state.
- After startup recovery, reread the recycle catalog, retain referenced protection snapshots, and automatically remove other valid or degraded snapshots and their plugin-owned attachment copies. This is independent of default-off automatic Recycle Bin cleanup and does not delete source chats.
- Before upgrading, recover/export needed old snapshot content with an older supporting release or make an offline backup of the entire plugin-data directory. Preserving every old snapshot across upgrades is no longer promised.

## 1.3.2 — DSH 0.1.5 兼容验证 / DSH 0.1.5 compatibility verification

### 中文

- 将开发验证依赖更新到 `@deepseek-ai/dsh-session@0.1.5-rc.2`，并继续保留对旧版 DSH `>=0.1.0-rc.7` 的运行兼容范围。
- 验证插件在 DeepSeek Harness `0.1.5-rc.2` 下可正常加载；本版不直接删除 Host 的 `session_projcache` 文件，因为宿主尚未提供安全的按会话 eviction API。
- 增加兼容性测试，完整测试套件通过。

### English

- Update the development verification dependency to `@deepseek-ai/dsh-session@0.1.5-rc.2` while retaining the existing runtime compatibility range for DSH `>=0.1.0-rc.7`.
- Verify that the plugin loads on DeepSeek Harness `0.1.5-rc.2`; this release does not unlink Host `session_projcache` files because the Host still exposes no safe per-session eviction API.
- Add a compatibility assertion and keep the full test suite green.

## 1.3.1 — 更新插件市场截图 / Refresh plugin-market screenshots

### 中文

- 重新拍摄全部 8 个插件市场演示场景，使图片与 1.3 系列的当前界面和操作一致。
- 新增工作区归档选择器、统一回收站工作区菜单和自动清理确认等关键界面展示。
- 同步更新中英文 README 的截图顺序、替代文字和图注。本补丁不改变运行时行为。

### English

- Recaptured all eight plugin-market demo scenes so the images match the current 1.3 interface and actions.
- Added coverage for the workspace archive chooser, unified Recycle Bin workspace menu, and automatic-cleanup confirmation.
- Synchronized screenshot order, alt text, and captions in both READMEs. This patch does not change runtime behavior.

## 1.3.0 — 统一回收站与精简操作 / Unified Recycle Bin and simpler actions

### 中文

本次大更新把旧快照、普通回收会话和保护快照统一到一个回收站，并简化归档与回收站的操作层级。**升级不会删除已有聊天或快照。**

- **旧快照直接进入回收站**：移除“空间与策略”中的独立旧版数据入口。升级后，已有快照自动显示为回收站条目，无需再次迁移或整理；可读取快照支持只读预览和恢复，降级快照只支持永久删除。
- **恢复不会覆盖来源**：恢复旧快照会创建新的归档副本并清理对应迁移条目，不修改来源聊天。普通回收会话仍优先恢复原会话；缺少原件时才从已验证保护快照恢复。
- **自动清理明确选择后才启用**：回收站自动清理默认关闭，可选 7 天、30 天、90 天或 1–3650 天自定义期限。升级会把用户旧版保存的回收天数按“不启用”处理，绝不会因为更新而开始自动永久删除。首次开启或缩短期限会列出已到期内容并要求确认。
- **自动删除时机**：DSH 运行时约每分钟检查一次，关闭期间暂停，并在下次启动恢复完成后补检。每条到期内容在永久删除前都会重新核对策略与回收状态；失败项保留记录并重试。
- **操作层级简化**：归档页和回收站不再提供多选、行复选框或批量工具栏。单条内容使用行内操作，整个工作区使用三点菜单，跨工作区内容使用标题行右上角操作。
- **工作区归档选择器**：只展示至少有一条可归档会话的工作区，支持单选、多选和全选；“全选”首次点击勾选全部，再次点击全部取消。任何选择都通过右下角“确定”进入一次汇总确认，准备期间变为空的工作区会自动跳过，不再显示“没有可归档会话”的额外弹窗。多个工作区会按顺序执行并汇总结果，单个工作区失败不会中断后续工作区。
- **归档操作重新排序**：单条操作依次为预览、编辑标签备注、永久删除和取消归档，编辑统一为图标，取消单条导出和行内更多菜单。工作区菜单依次为“全部导出”“全部取消归档”“全部永久删除”“全部移至回收站”；标题行右上角提供“全部删除”。
- **回收站操作**：单条预览、恢复和永久删除均使用带名称提示的图标按钮。工作区三点菜单提供“全部恢复”和“全部永久删除”；无法恢复的降级快照会被“全部恢复”跳过。标题行右上角提供“清空回收站”。
- **删除范围写清楚**：“全部删除”永久删除所有工作区中的归档聊天及其插件元数据和关联快照，但不影响已在回收站中的内容；“清空回收站”永久删除所有工作区的回收会话和保护快照。
- **归档列表重新排版**：搜索框独占首行；类型与排序合并到“全部聊天”，并与项目、标签筛选同排。工作区使用统一边框和行分隔；备注单行省略，仅在确实截断时悬停或聚焦显示完整内容；时间不再重复显示“创建于”前缀。归档和回收站的文字操作按钮统一为与“全部删除”相同的圆角规格。
- **本地迁移状态**：新增 `legacy-recycle.json` 记录旧快照的回收迁移状态；`retention.json` 升级为 version 2。所有插件数据仍保存在本机。

兼容性：`POST /history/capture` 继续返回 `410 history-capture-retired`。现有 History 清单、预览、恢复和删除路由继续作为迁移及兼容层；浏览器不再显示独立 History 页面。Issue #34 所需的 Host 投影缓存删除生命周期接口仍未公开，因此本版未直接操作 Host 的 `session_projcache` 文件。

### English

This major update combines older snapshots, regular recycled chats, and protection snapshots in one Recycle Bin, while simplifying archive and recycle actions. **Upgrading does not delete existing chats or snapshots.**

- **Existing snapshots move into the Recycle Bin:** the separate Legacy data entry is removed from Storage & Retention. Existing snapshots appear automatically as Recycle Bin items after upgrade. Readable snapshots support read-only preview and recovery; degraded snapshots support permanent deletion only.
- **Recovery never overwrites the source:** restoring an older snapshot creates a new archived copy and cleans up its migration item without changing the source chat. Regular recycled chats still restore the original first and use a verified protection snapshot only when the original is missing.
- **Automatic cleanup requires explicit opt-in:** it is disabled by default and supports 7, 30, 90, or 1–3650 custom days. An older saved Recycle Bin duration is treated as disabled after upgrade, so updating alone can never start permanent deletion. Enabling or shortening the period lists already-expired items and requires confirmation.
- **Automatic deletion timing:** DSH checks about once a minute while running, pauses while closed, and catches up after startup recovery. Every expired item is revalidated against the current policy and recycle state before permanent deletion; failures retain their records for retry.
- **Simpler action levels:** Archived and Recycle Bin no longer expose multi-select, row checkboxes, or batch toolbars. Use row actions for one item, the three-dot workspace menu for a workspace, and the upper-right title action across workspaces.
- **Workspace archive chooser:** only workspaces with at least one eligible chat are listed. Single selection, multi-selection, and Select all are supported; the first Select all click checks every workspace and the second clears them. Every selection proceeds through the bottom-right Confirm button into one aggregate confirmation. Workspaces that become empty during preparation are skipped without opening the old no-eligible-chats dialog. Selected workspaces run in order with one aggregated result, and one failed workspace does not stop later workspaces.
- **Reordered archive actions:** row actions are preview, edit tags and note, permanent delete, and Unarchive. Editing uses an icon, while single-chat export and the row More menu are removed. Workspace menus list Export all, Unarchive all, Delete all permanently, and Move all to Recycle Bin. Delete all sits at the upper right of the title row.
- **Recycle Bin actions:** preview, restore, and permanent delete use named icon buttons. Workspace menus provide Restore all and Delete all permanently; Restore all skips degraded or otherwise unrestorable snapshots. Empty Recycle Bin sits at the upper right of the title row.
- **Clear deletion scope:** Delete all permanently removes archived chats across every workspace together with plugin metadata and related snapshots, while leaving existing Recycle Bin items untouched. Empty Recycle Bin permanently deletes every recycled chat and protection snapshot across all workspaces.
- **Archive layout:** search owns the top row. Type and sorting move into All chats beside project and tag filters. Workspace rows share one border with separators. Notes stay on one ellipsized line and show the full popup only when actually truncated; timestamps omit the redundant Created prefix. Archived and Recycle Bin text actions now share the same corner radius as Delete all.
- **Local migration state:** `legacy-recycle.json` records older-snapshot recycle migration state, and `retention.json` moves to schema version 2. All plugin data remains local.

Compatibility: `POST /history/capture` continues to return `410 history-capture-retired`. Existing History inventory, preview, restore, and delete routes remain as migration and compatibility APIs; the browser no longer shows a standalone History page. The Host projection-cache deletion lifecycle required by Issue #34 is still unavailable, so this release does not manipulate Host `session_projcache` files directly.

## 1.2.0 — 简化历史版本与回收站 / Simplify History and Recycle Bin

### 中文

本次更新取消独立的历史版本功能，将日常使用简化为归档管理、回收站恢复与主动导出备份。**升级不会删除已有聊天或快照。**

- **主导航调整为四项**：归档、回收站、空间与策略、来源与分支。独立“历史版本”标签移除。
- **归档不再创建历史快照**：普通归档和工作区批量归档只改变归档状态，不再持续保存多个版本。归档成功提示仍支持查看与撤销。
- **回收站继续负责可撤销删除**：移入回收站时仍保存恢复所需的保护数据，可从回收站恢复。确认永久删除会删除对应聊天及关联快照。长期保存请主动导出 ZIP 备份。
- **已有数据保留**：旧快照可在“空间与策略 → 旧版数据”中预览、恢复为新的归档副本后导出，或经确认后删除。恢复不会覆盖原聊天；正在保护回收站恢复的快照不会出现在可清理的旧版数据列表中。回收站恢复后留下的非活动保护快照也可在此管理。
- **保留策略简化**：移除历史版本数量、快照保存天数、快照容量配额三个设置。旧策略文件仍兼容读取，但这些旧规则不再产生快照删除建议。仅保留回收站天数设置；保存策略不会删除数据，必须预览并确认后才执行清理。
- **可靠性与界面**：空间统计加载失败时，旧版数据仍可独立访问；恢复或删除旧数据后立即更新空间统计，并保留未保存的策略草稿。优化窄屏统计布局，同步更新中英文文档及八张产品截图。

兼容性提示：旧的 `POST /history/capture` 接口现返回 `410 history-capture-retired`。已有快照的读取、恢复与删除接口保留，服务于旧数据迁移。依赖历史捕获的自定义客户端应停止调用该接口。

验证：236 项自动化测试通过；独立代码审查通过；桌面、390px 窄屏、空间统计失败场景和本地 DSH 运行验证通过。

### English

This release retires the standalone History feature and simplifies everyday use around archive management, Recycle Bin recovery, and explicit ZIP backups. **Upgrading does not delete existing chats or snapshots.**

- Navigation now contains four views: Archived, Recycle Bin, Storage & Retention, and Origins & Branches.
- Normal and workspace bulk archiving no longer capture historical versions. Archive success still offers View and Undo.
- Moving a chat to the Recycle Bin still preserves recovery data. Restore it from the Recycle Bin; confirmed permanent deletion removes the chat and its associated snapshots. Export ZIP backups for long-term preservation.
- Existing snapshots remain available under **Storage & Retention → Legacy data** for preview, recovery as a new archived copy for export, or confirmed deletion. Recovery never overwrites the original. Active Recycle Bin protection snapshots are excluded from the legacy cleanup list; inactive protection snapshots retained after recovery can be managed there.
- History count, snapshot age, and snapshot quota controls are retired. Old policy files remain readable, but those rules no longer propose snapshot deletion. Only Recycle Bin age remains; saving a policy does not delete data, and cleanup requires preview and confirmation.
- Legacy data remains accessible when storage statistics fail. Recovery and deletion refresh storage totals without losing unsaved policy edits. Narrow-screen storage cards, bilingual documentation, and all eight product screenshots are updated.

Compatibility: `POST /history/capture` now returns `410 history-capture-retired`. Existing snapshot read, recovery, and deletion endpoints remain for migration. Custom clients must stop requesting historical captures.

Validation: 236 automated tests, independent code review, desktop and 390px browser checks, storage-error recovery access, and local DSH runtime verification passed.
