Skip to content

Commit ea5fbc6

Browse files
chaxusclaude
andcommitted
docs: make the v9 regression campaign the top priority and start the changelog
User testing with real-world documents found v9 stability below v7 (a real 35-slide PPTX raises the fatal document-error dialog while editing) -- and both recent escapes share one blind spot: every E2E fixture is a hand-built minimal file, so real-document complexity has zero coverage. Direction zero freezes the v9 release announcement behind a real-corpus regression matrix (three editors x open/render/edit/save/export, with asc_onError and Common.UI.warning treated as hard failures) and makes test-case solidification a standing convention: no fix or feature is done without an accompanying case, preferring real-complexity corpus files. CHANGELOG.md is established as the single user-facing record, honest about the known PPTX issue. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 07a7a6c commit ea5fbc6

3 files changed

Lines changed: 117 additions & 5 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Changelog
2+
3+
User-facing changes to the document editor ([edit.chaxus.com](https://edit.chaxus.com/)).
4+
Format loosely follows [Keep a Changelog](https://keepachangelog.com/); this
5+
file is the single source for the site changelog page and GitHub release
6+
notes. Entries describe what users experience, not internal refactors.
7+
8+
## [Unreleased]
9+
10+
### Known issues
11+
12+
- Editing complex real-world PPTX decks can raise "An error occurred during
13+
the work with the document" (under investigation; a full regression
14+
campaign against real-world documents is running and gates the next
15+
release announcement).
16+
17+
### Changed
18+
19+
- The editor engine was upgraded to an OnlyOffice 9.3-based build: new
20+
rendering engine and font pipeline, sharp toolbar icons on 2k/4k displays,
21+
fonts loaded on demand instead of up front.
22+
23+
### Added
24+
25+
- PDF files now open in a dedicated PDF viewer/editor.
26+
- Legacy Word 97 binary `.doc` files now open correctly.
27+
- Read-only mode can be toggled at runtime (embed API `document:set-readonly`
28+
works in both directions without reloading the document).
29+
- Comments work in the Word editor, including add/update/delete lifecycle
30+
callbacks for integrators.
31+
- Editor errors now surface as a visible notification with the error code
32+
instead of failing silently.
33+
- CSV files in legacy encodings (GBK/GB18030, e.g. Chinese "ANSI" exports
34+
from Excel) are detected and decoded correctly instead of showing mojibake.
35+
36+
### Fixed
37+
38+
- Saving a document that contains an inserted image no longer freezes the
39+
page; the image bytes are correctly included in the saved file.
40+
- Excel: right-aligned text no longer disappears after editing another cell.
41+
- Excel: the caret now moves visibly while editing inside a cell.
42+
- Word: the caret renders exactly at the insertion point (no more offset
43+
caret on some documents).
44+
- Save-as-PDF produces a complete document instead of empty output.
45+
- Multi-sheet workbooks opened via the embed API save back with all sheets
46+
intact.
47+
48+
## [0.0.5] - 2026-07-12
49+
50+
Last release of the previous (v7) engine line. See the
51+
[GitHub release](https://github.com/ranuts/document/releases/tag/v0.0.5).

‎CLAUDE.md‎

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -241,9 +241,14 @@ E2E 在 CI 中依赖 `lint` job 成功后才运行(`needs: lint`)。
241241
`public/embed-demo.html`、404 等)必须使用 ranui 组件/设计 token
242242
(`--ran-*`)与 ranuts 工具,不允许手写游离于设计体系外的样式。
243243
demo 页也是产品门面,风格必须与主站一致。
244-
3. **循环依赖处理**:`onlyoffice-editor.ts` 与 `converter.ts` 之间通过回调注入(`setConverterCallbacks`)解耦;`ui.ts` 与 `document.ts` 之间通过 `setUICallbacks` 解耦
245-
4. **编辑器操作队列**:`createEditorInstance` 内部有 `editorOperationQueue`,防止并发创建/销毁编辑器
246-
5. **.claude/ 目录**:已加入 `.gitignore`,不提交本地 Claude Code 配置
244+
3. **用例固化制度(2026-08-15 起)**:每个缺陷修复与新功能必须附带
245+
对应的自动化用例(E2E 优先),否则不算完成;回归类用例优先使用
246+
真实复杂度语料而非手拼最小文档——合成文档全绿曾两次掩盖真实文档
247+
的致命问题(插图保存假死、真实 PPTX 编辑报错)。CHANGELOG.md 随
248+
用户可感知的改动同步更新。
249+
4. **循环依赖处理**:`onlyoffice-editor.ts` 与 `converter.ts` 之间通过回调注入(`setConverterCallbacks`)解耦;`ui.ts` 与 `document.ts` 之间通过 `setUICallbacks` 解耦
250+
5. **编辑器操作队列**:`createEditorInstance` 内部有 `editorOperationQueue`,防止并发创建/销毁编辑器
251+
6. **.claude/ 目录**:已加入 `.gitignore`,不提交本地 Claude Code 配置
247252

248253
---
249254

@@ -404,7 +409,12 @@ v7 代码分支(OO_VARIANT、页面级 x2t 打开转换、empty_bin 模板、v
404409
`getDocumentType`)与文件选择 accept;保存与其他格式共用 file-stream 通道。
405410
- **错误提示**:编辑器 `onError` 会用 ranui message 弹 toast(含错误码与
406411
描述;-85 附"内容与扩展名不一致"提示),别再只留 console.error。
407-
- **待办**:无(截至 2026-08-15)。
412+
- **待办(最高优先级,2026-08-15 用户实测判定)**:v9 全面回归战役。
413+
真实文档实测稳定性不如 v7(P0 现场:真实 35 页 PPTX 编辑标题弹
414+
"An error occurred during the work with the document" 致命错误框)。
415+
现有 E2E 全是手拼最小文档,真实文档复杂度零覆盖——战役方案与用例
416+
固化制度见 docs/superpowers/plans/2026-08-15-next-phase-roadmap.md
417+
方向零。v9 release 公告冻结至战役通过。
408418

409419
---
410420

‎docs/superpowers/plans/2026-08-15-next-phase-roadmap.md‎

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,51 @@
44
前置状态:v9 已转正并即将替换 main 部署(main 备份为 backup 分支);
55
CLAUDE.md 代码侧待办已清零;E2E 17 条全绿。
66

7+
## 方向零:v9 全面回归战役(最高优先级,压倒其余全部方向)
8+
9+
**背景(2026-08-15 用户实测判定)**:v9 上线后用真实文档实测,稳定性与
10+
可用性**不如 v7**。已确认的 P0 现场:一份真实的 35 页 PPTX
11+
(含主题、图片、代码截图)在编辑幻灯片标题时弹出
12+
"An error occurred during the work with the document. Use the
13+
'Download as' option to save the file backup copy to a drive."
14+
(OnlyOffice 的文档致命错误对话框)。同日刚修掉的"插图保存假死"
15+
也属于同类——**合成最小文档全绿,真实文档踩雷**。
16+
17+
**根因反思(决定战役设计)**:现有 18 条 E2E 的 fixture 全部是页内手拼
18+
的最小 OOXML/最小 PDF——它们证明管线通,但真实文档的复杂度
19+
(主题、母版、动画、嵌图、大文件、多字体、修订痕迹)一点都没覆盖。
20+
两次教训同构:只验 embed-demo 漏掉主站路径;只验合成文档漏掉真实
21+
文档。**测试语料必须真实化**。
22+
23+
### 战役内容
24+
25+
1. **建立真实文档语料库**(前置,需要决策):
26+
- 来源:自制"复杂度全开"文档(每种格式一份:多页/主题/嵌图/表格/
27+
动画/公式/修订/中英混排)、用户可提供的实际踩雷文件(如那份
28+
EMP PPTX,仅本地测试不入库)、公开可再分发的样例。
29+
- **仓库约束决策**:现行"不放二进制 fixture"规则与真实语料冲突。
30+
建议:`test/fixtures/corpus/` 允许小体积(<2MB/个)自制真实文档
31+
入库;大文件与版权不明文件走本地目录 + CI 缓存,不入库。
32+
2. **系统化测试矩阵**:三编辑器 × {打开、渲染无错、编辑(文字/图片/
33+
格式)、保存往返、导出 PDF} × 语料库全量。判定不只看"不崩":
34+
拦截编辑器内 `asc_onError` 与 `Common.UI.warning`(正是本次 PPT
35+
弹窗的通道)作为硬失败信号,console error 白名单化。
36+
3. **P0 缺陷清单驱动**:战役第一目标是复现并修复 PPTX 编辑致命错误
37+
(需要那份 PPT 或等复杂度替代品);每修一个,固化一条 E2E。
38+
4. **用例固化为制度**(用户要求):
39+
- 战役产出的每个缺陷修复**必须**带一条真实语料回归用例;
40+
- 语料库测试作为独立 E2E project(`test/e2e/corpus-*.spec.ts`),
41+
进 CI(体量大可设 nightly / 手动触发档);
42+
- 制度写入 CLAUDE.md:新功能/新修复没有对应用例不算完成。
43+
5. **发布门槛**:v9 的对外 release 公告(方向七 3)冻结,直到战役
44+
通过——"稳定性达到或超过 v7"由语料矩阵全绿定义。
45+
46+
### 与 v7 的关系
47+
48+
backup/main-pre-v9 保留完整 v7。若战役发现 v9 有结构性不可修问题,
49+
回滚路径存在;但当前证据(图片保存已修、根因均为"无服务器适配缺口"
50+
而非引擎本体)支持"逐个补适配层"优先于回滚。
51+
752
## 现状诊断(2026-08-15 页面盘点结论)
853

954
存量 24 页落地矩阵(12 en + 12 zh-CN)的 SEO 工程质量很高:TDK、
@@ -224,7 +269,13 @@ llms.txt 形成互补)。结构化数据用 FAQPage / HowTo,并入 sitemap
224269
版本号语义由用户定)。它同时是方向二 3「外链发布事件」的弹药——发稿
225270
时有一个正经的 release notes 页可以指向,比空口说"升级了"有力得多。
226271

227-
## 建议执行顺序(2026-08-15 更新:加入方向六、七,第 1 项已完成)
272+
## 建议执行顺序(2026-08-15 三修:方向零插入为最高优先级)
273+
274+
**方向零(全面回归战役)压倒下表所有事项**;表内条目在战役期间仅在
275+
等待复现/等待用户提供语料的空档穿插推进。CHANGELOG.md 已建立
276+
(方向七 3 前半完成),但 v9 release 公告冻结至战役通过。
277+
278+
## 原执行顺序(2026-08-15 更新:加入方向六、七,第 1 项已完成)
228279

229280
| 序 | 事项 | 体量 | 状态 |
230281
| --- | ------------------------------------------------ | --------- | ------------------ |

0 commit comments

Comments
 (0)