# Changelog ## 0.3.0 — 2026-10-27 ### Added - **Office 转换超时自动重试**:转换请求超时(服务返回 504 或报文里带「超时/timeout」)时页面自己再试一次, 进度面板会显示「自动重试(第 2/2 次)」,不用用户手点重试。 - **docx 精排失败自动回退快速预览**:`LibreOffice 精排` 超时/失败时不再给一张错误页,而是直接渲染客户端的 mammoth 快速预览,并在工具条上用红字说明回退原因(内容优先,版式其次)。 - **失败态可操作**:非 docx(.doc/.ppt/.pptx)失败时给出空状态页,带「重试」与「下载到本机」两个出口。 - **点击文件块一定打得开**:地址在交给右侧栏之前先 `planFileOpen` 决策—— 工作区内 → 归一化后的 `session` 地址(文档标签直接渲染);工作区外 / 绝对路径 / 目录 → 新标签打开本地文件管理页 `/-/files?path=…`(它本来就能读任何位置)。同时把反斜杠路径统一成正斜杠,`C:\a\b.md` 这类写法不再打不开。 ### Fixed - **Host 不再吞掉转换错误**:`/-/files/api/office` 之前把所有异常都变成 `500 {"error":"内部错误"}`, 页面无法判断是超时还是真失败(因此也从不重试)。现在超时返回 **504 + 转换器的原文**,其它失败返回 **502 + `Office 转换失败:…`**。 ## 0.2.0 — 2026-10-21 ### Added - **聊天里带 `..` 的文件链接现在能点了。** 点击消息里的相对路径链接时,前端会把它拼成 `dsh-resource://file/session//<原样相对路径>`;右侧栏用 glob `dsh-resource://file/**` 判断谁来打开这个地址,而 picomatch 的 `**` 不匹配 `..` 段, 于是没有任何标签类型认领 → `sidebarRight: no registered tab type claims "..."`。 本版本在 client 半边包住 `sidebarRight.openResource` / `openResourceIn`,开之前先归一化: 仍在工作区内就变成工作区相对路径(链接直接打开目标文件),走出工作区就变成绝对路径 (依旧可被认领,预览会正常提示读不到,而不是让标签注册表抛错)。 插件停用/重载时通过 `ctx.effect` 自动还原原方法。 ### Changed - `test/client-smoke.mjs` 从 15 项扩到 31 项:新增 `..` 归一化、越界转绝对、query 后缀保留、 `absolute/` scope 折叠、外部地址不动、包装后调用参数、options 透传、dispose 还原等。 ## 0.1.0 — 2026-10-20 首个版本:整盘浏览、下载(Range)、目录/多选流式 ZIP、拖拽上传、复制/移动、文本在线编辑 (mtime+size 冲突检测 + 原子写)、新建/重命名/删除(默认进回收目录)、docx 客户端快预览 + LibreOffice 精排、xlsx 交互表格与「编辑单元格 → 另存为副本」。