Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 0 additions & 72 deletions docs/client_onboarding_plan.md

This file was deleted.

34 changes: 25 additions & 9 deletions docs/office_plugin_typography_refactor.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

日期:2026-09-12

状态:第 1—6B 步实现完成;下一步为 6C 编辑器交互收尾。第 4 步剩余 Office OLE 实机检查按用户确认并入第 8 步安装包发布验收(2026-09-23 更新)。
状态:第 1—6C 步实现完成;下一步为第 7 步预设与用户配置。第 4 步剩余 Office OLE 实机检查按用户确认并入第 8 步安装包发布验收(2026-09-25 更新)。

适用范围:Word / PowerPoint Office 插件;客户端共享 MathJax 运行时升级与导出边界

Expand Down Expand Up @@ -260,7 +260,7 @@ Word 与 PowerPoint 使用共享预设仓库;各自保存选中的默认预设
| 5. 源码编辑与同步(已完成) | 共享 CodeMirror 编辑器、颜色主题、括号 / 环境辅助、文档修订与统一撤销、中文输入保护;不改设置存储,见第 11.8 节 | 复杂源码加载与提交、显式可视化回写、撤销重做、组合输入及过期同步回归通过;真实输入法及 Office 宿主交互留作安装包验收 |
| 6A. 编辑器布局与磁贴库(已完成) | 共享布局、底部两行分类磁贴、统一搜索和模板插入,实施记录见第 11.11 节 | 两宿主的选区包裹、占位符跳转、独立撤销及锁定回归通过;真实宿主交互随第 8 步验收 |
| 6B. 字体设置与最终预览(已完成) | 接入统一三类字体、数字 / 中文字号、颜色面板;编辑 / 最终预览切换采用同一草稿样式与渲染请求;OMML 使用参考预览 | 预览、提交采用同一源码与样式修订;取消和过期结果处理正确;无第二份字体或字号列表 |
| 6C. 编辑器交互收尾 | 完成键盘、焦点、窗口尺寸、明暗主题与输入法交互检查 | 磁贴滚动不干扰其他区域;布局无关键控件遮挡;输入法组合期间操作安全;Office 内实测项随第 8 步安装验收 |
| 6C. 编辑器交互收尾(已完成) | 完成键盘、焦点、窗口尺寸、明暗主题与输入法交互检查 | 磁贴滚动不干扰其他区域;布局无关键控件遮挡;输入法组合期间操作安全;Office 内实测项随第 8 步安装验收 |
| 7. 预设与用户配置 | 在已稳定的样式契约上实现共享预设仓库、保存 / 加载 / 导入导出、默认值与宿主选项隔离;同步修正安装清理 | 文件原子保存,多宿主写入不互相覆盖;加载与应用的边界正确;预设被删除后公式仍能独立重绘;连续覆盖升级保留用户配置 |
| 8. 发布回归与收尾 | 按第 12 节完整验收,验证实际 Word / PPT 文档和安装升级、x86 / x64,检查资源体积与离线运行;更新当前行为文档 | 构建与必要测试通过;发布包无旧协议或旧运行时分支、无临时验证文件;未通过的验收项明确列出,不记为完成 |

Expand Down Expand Up @@ -420,15 +420,15 @@ LaTeX 源码区域:CodeMirror 与诊断

6A、6B、6C 分别完成实现、差异审查和对应行为验证,再进入下一项。随后实施第 7 步预设与用户配置,最后统一构建安装包并验收。

### 11.10 新对话接续说明(2026-09-23 更新)
### 11.10 新对话接续说明(2026-09-25 更新)

- **当前工作目录:** 使用 `codex/office-typography` 对应的 Office 隔离 worktree;用 `git worktree list` 核实。主工作树保留 `main`,客户端在独立 worktree 开发。命令、依赖与路径以当前 worktree 根目录解析,不把修改写回主目录或客户端。
- **下一项唯一实施起点:6C。** 6A / 6B 已完成,见第 11.11 / 11.12 节。先阅读第 11.2、11.8、11.9 节及仓库指令,再检查工作树。6C 完成交互收尾后才进入第 7 步预设,不展示尚未接通的空入口。
- **当前工作目录:** 用户已合并 6B 到主线,并指定在主仓库目录的 `codex/office-typography` 分支继续;启动时用 `git status` 和 `git worktree list` 核实,不继续写入旧 Office worktree。命令与依赖路径相对当前仓库根目录解析,工具链通过 PATH / 标准环境配置发现。
- **下一项唯一实施起点:第 7 步。** 6A / 6B / 6C 记录见第 11.11—11.13 节。6C 已获用户授权提交推送;后续工作先检查分支与工作树,保留现有实现。预设与用户配置按第 11.2 节单独推进,不提前把配置存储混入编辑交互。
- 用户选择 `34516e96e`(6A 与路径修复)为回退基线,6B 从该基线重新推进,不恢复后续废弃实现。本轮获授权提交推送 6B;后续提交仍遵循用户指令。禁止死逻辑、死函数、旧版本兼容分支和墓碑测试。
- 共享编辑器入口为 `office_plugin/src/LaTeXSnipper.OfficePlugin.Editor/EditorAssets`,构建源码与浏览器测试位于 `tools/office-editor`;两宿主页面位于各自的 `EditorAssets`。CodeMirror bundle 由构建生成,不手工编辑产物。
- 当前验证记录:22 项 Node、17 项 Edge 页面交互、net48 / net9.0 各 37 项排版契约测试通过;真实 WebView2 渲染通过 61 组 SVG / EMF 与 122 个 PNG 输出检查;托管解决方案零警告、零错误。继续修改按实际范围复验;操作说明见 `tools/office-editor/README.md`。
- 当前验证记录:6C 的 22 项 Node 与 23 项 Edge 页面交互通过,托管解决方案零警告、零错误。6B 的 .NET 排版与真实 WebView2 渲染证据见第 11.12 节,本轮未修改渲染器,也未重跑该矩阵。继续修改按实际范围复验;操作说明见 `tools/office-editor/README.md`。
- **不要重新启动临时 COM 注册清理 / 修改来阻塞开发。** 用户已确认 Office OLE 激活、重编辑及双向转换留待最终安装包,由用户安装实测;未通过的检查仍标为待验收。
- 工具链:Node 通过 `PATH` 查找;项目 Python 使用相对仓库根目录的 `tools/deps/python311/python.exe`;Visual Studio 工具链通过安装发现或显式配置定位。实际可用性在需要时检查。
- 工具链:Node 通过 `PATH` 查找;Python 使用开发者自行选择的环境;Visual Studio 工具链通过安装发现或显式配置定位。实际可用性在需要时检查。

### 11.11 第 6A 步实施记录(2026-09-20)

Expand Down Expand Up @@ -465,6 +465,22 @@ LaTeX 源码区域:CodeMirror 与诊断

**接续 6C:** 重点复验字体面板和预览切换前后的键盘与焦点、模板目标 / 选区、尺寸和主题、滚轮 / 触控板及输入法事件。保留当前草稿 / 修订规则,不增加另一套渲染、字体或持久化配置。真实 Windows 输入法、Office WebView2 与 OLE 激活 / 重编辑 / 双向转换仍由第 8 步安装包验收,不记为已通过。

### 11.13 第 6C 步实施记录(2026-09-25)

- 预览往返保留此前编辑目标与可视化选区;若在预览期间改动源码,则回到当前源码选区,不恢复过期可视化位置。新会话清理前一目标并聚焦源码。
- 修复 MathLive 延迟焦点回调覆盖源码 / 工具栏焦点的问题:按实际鼠标、键盘进入意图及最近焦点所有者交接焦点;显式恢复可视化编辑通过原生元素焦点进入,不依赖定时重试。插入目标与当前工具栏焦点保持独立。
- MathLive 支持 `Escape → Tab` / `Escape → Shift-Tab` 离开编辑器,通常的 Tab 占位符跳转保留;增加可访问说明。全局快捷键尊重已处理事件、组合输入及 IME 的 229 键码,避免截获源码编辑器的操作。
- 字号组合输入与源码 / MathLive 组合输入共同阻止提交、预览切换、撤销和磁贴插入;未提交的中文字号不触发最终预览。字体面板在外部点击或键盘焦点离开时关闭,Escape 返回入口;小窗口限制面板高度并允许滚动。
- 分隔线在短窗口中按可用空间限制两块编辑区域,ARIA 范围同步更新;紧凑布局减少可视化编辑区内边距与最小高度。磁贴保留像素 / 行 / 页滚轮处理,横向滚动与 Ctrl 滚轮继续交给浏览器。

**已执行验证:**

- 22 项 Node 行为测试通过。23 项 Edge 页面交互通过:完整 22 项通过后,新增焦点测试及受影响的 IME / 小窗口测试定向通过。覆盖 Word / PPT、预览往返选区、源码更新、新会话、输入法事件、键盘退出与进入、延迟焦点保护及轮滚隔离。
- 1180×780 / 980×680 / 640×480 既有明暗测试通过,新增 640×400 短窗口;已查看截图,并修正可视化公式裁切。真实触控板仅保留原生横向事件路径,未冒充物理设备实测。
- 托管解决方案构建零警告、零错误,两个宿主各 16 个共享编辑资源与源码哈希一致;CodeMirror 构建源码未改动,未手改 bundle。

**后续边界:** 用户已授权提交推送本轮全部改动;下一项为第 7 步预设与用户配置。真实 Windows 输入法、Office WebView2、物理触控板及 Office OLE 激活 / 重编辑 / 转换仍留待第 8 步安装包验收,浏览器组合事件测试不能代替这些检查。

## 12. 验收矩阵

### 12.1 公式与字体
Expand Down Expand Up @@ -502,7 +518,7 @@ LaTeX 源码区域:CodeMirror 与诊断
- 对新配置契约执行连续覆盖升级,确认用户默认值与预设保留;验证安装清理不触及用户配置目录。
- 发行包只包含最终选定的一代 MathJax;检查新增包只包含必要编辑器与字体资源,记录体积及冷启动 / 连续预览耗时。沿用已验证的裁剪运行资源,不重新引入完整组合包。

验证使用现有 .NET / 原生测试和真实 Office E2E 入口。Python 辅助脚本一律通过 `.\tools\deps\python311\python.exe` 运行。第一阶段已执行的验证见运行时维护说明;本节中的字体重构验收仍待第二阶段完成。
验证使用现有 .NET / 原生测试和真实 Office E2E 入口。Python 辅助脚本使用开发者自行选择的环境运行。第一阶段已执行的验证见运行时维护说明;本节中的字体重构验收仍待第二阶段完成。


## 13. 客户端与插件统一升级、保留导出职责
Expand Down Expand Up @@ -550,4 +566,4 @@ Pandoc 的所有格式统一进入文件保存流程,包括 HTML 独立页(`

`mhchem` 在升级前的客户端与插件中已经启用;4.1.3 的化学字体扩展是保留既有化学公式能力的配套资源,不是仅为编辑器新增的一项功能。

插件重构已完成共享字体渲染、宿主与 schema 3 接入、源码编辑与同步以及 6A 编辑器布局 / 磁贴库、6B 字体设置 / 最终预览。下一步实施 6C 交互收尾,再实施独立预设;Office 内 OLE 实机检查、正式安装及跨平台矩阵随最终安装包验收完成。
插件重构已完成共享字体渲染、宿主与 schema 3 接入、源码编辑与同步以及 6A 编辑器布局 / 磁贴库、6B 字体设置 / 最终预览。6C 交互收尾也已完成,下一步实施独立预设;Office 内 OLE 实机检查、正式安装及跨平台矩阵随最终安装包验收完成。
2 changes: 1 addition & 1 deletion docs/user_data_storage.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ can explicitly override the model root.
| Screenshot CLI capture files | System temp files with `latexsnipper_cap_` / `latexsnipper_bg_` prefixes | Deleted immediately after use |
| MathCraft worker input image | System temp PNG | Deleted after each request |
| Automation API jobs | Memory only | Images released after execution; completed results expire by TTL/retention cap and all state is released on exit |
| Settings environment terminal scripts | System temp launcher files/directories | Short-lived helper launchers; currently best-effort OS temp cleanup |
| Settings environment terminal launchers and session state | System temp directory: `LaTeXSnipper/environment-terminal/` | Launchers are overwritten and retained; session records are cleared on normal POSIX exit or when detected as stale. Remaining files persist until external temp cleanup. |

## Directory Creation Summary

Expand Down
Loading