Windows and Linux build environments; check clean on both (E-01)

MuPDF builds with MSBuild on Windows (/MT, OpenSSL from vcpkg);
Git for Windows' MinGit stands in for the source build there. CEF
loads from where libcef lives and sets its API version first on
every platform. File identity on Windows compares volume and index.
The checkout and reference/ keep LF on Windows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-10 03:53:56 -04:00
1 parent d59159cea2
commit 68b5af76e0
40 files changed
+380 -82

No files matched your search

+26
View File
@@ -2,6 +2,12 @@
`docs/BugList.md` 的 93 条,按清单次序逐条处理:先核对当前代码,已由先前改动修好的写明出处,其余修好、审查、提交、推送后勾上。
## 0.1.3(用户 2026-10-10 定:修完全部缺陷与 K-01,Windows、Linux 与 macOS 同等可用,零错误零警告;Omarchy 上主题随 Omarchy;三端确认后经 Gitea 运行器发布 0.1.3)
次序:先 E-01(审查要能编译),再按下列清单次序逐条审查未审的修复与 K-01,最后三端与发布。
- [x] E-01 Windows 与 Linux(WSL)的构建环境:工具链、MuPDF、CEF、ElyMark 页面、tessdata、Git,`cargo check --workspace --all-targets` 两端通过(LibreOffice 随 L-01、W-01) — R1 CEF 未设 API 版本、macOS 编译回归、日志测试不触发错误、Windows 硬链接不认作同一文件、WSL 无 Git;R2 注释超长;R3 PASS
## 0.1.2 先做(用户 2026-10-09 定:先修致命与高,加自动更新,发布 0.1.2;其余随后按清单次序)
次序:S-03、P-01、X-01、D-01、D-02、P-02、P-03、P-04、M-01、X-02、X-03、K-01(Linux、Windows,本机不能运行)、UPD-1、REL-1、REL-2。K-01 不进 0.1.2:只影响 Linux 与 Windows 的 worker,本机不能运行验证,0.1.2 只发 macOS;留在下面的清单里,未勾。T-05 已改一半(审查查出缩放后尺寸不重测),暂放,补丁存在草稿区。
@@ -107,3 +113,23 @@
- [x] UPD-2 复核 UPD-1 第五轮的两处修复:启动检查(含 Gitea 查询)失败写日志;失败记录先于重开,以替身 open 断言 — R1 PASS
- [x] REL-1 dmg 里有指向“应用程序”的快捷方式,可直接拖入安装(用户 2026-10-09 报) — release.sh 在 dmg 里放“应用程序”替身,随 UPD-1 审查
- [x] REL-2 修完上列各条后打包、发布 0.1.2,官网指向新发布页 — v0.1.2 发在 git.zacharyzhang.com(六个 dmg、两个源码包、六份更新清单;release-macos.sh 通过;经 API 取清单与 dmg 散列核对一致),官网显示 0.1.2
## 0.1.3 三端与发布
- [ ] L-01 Linux 的 LibreOffice:钉住的源码加全部补丁在 Linux 构建,LOK 探测通过
- [ ] L-02 Linux 全工作区零警告构建,`cargo test --workspace` 通过(引擎齐全,无 SKIP)
- [ ] N-01 打印:Windows、Linux 交系统打印(与 macOS 同一份 PDF、纸张与取消规则),不再禁用
- [ ] N-02 ElyShow 媒体:Windows 以 Media Foundation、Linux 以 GStreamer 实现 `media::Player`(载入、可播、失败原因、帧、循环与播完)
- [ ] N-03 自动更新的安装与重开:Windows 安装程序、Linux AppImage,照 macOS 的退出后替换、失败记录与重开
- [ ] N-04 签名验证的证书信任:Windows 系统信任库、Linux 系统 CA,禁网,不核吊销
- [ ] N-05 ElyTree 与系统:停止 Git(Windows 结束进程树)、打开终端、在文件管理器中显示,Windows、Linux
- [ ] N-06 应用之间:Windows、Linux 的同级应用查找与启动、系统默认程序打开、单实例与诊断的崩溃报告位置
- [ ] L-03 Linux 真窗口:六个应用开样本、编辑、保存、打印禁用说明、设置、更新检查
- [ ] O-01 Omarchy:外观为“系统”时随 Omarchy 主题,切换主题即刻跟随(Omarchy 虚拟机里实测)
- [ ] L-04 Linux 打包:六个 AppImage,带引擎、许可与桌面项;更新清单含 linux-x86_64
- [ ] W-01 Windows 的 LibreOffice:同一源码与补丁在 Windows 构建,LOK 探测通过
- [ ] W-02 Windows 全工作区零警告构建,`cargo test --workspace` 通过(引擎齐全,无 SKIP)
- [ ] W-03 Windows 真窗口:六个应用开样本、编辑、保存、设置、更新检查
- [ ] W-04 Windows 打包:六个安装程序,带引擎、许可、文件类型;更新清单含 windows-x86_64
- [ ] CI-01 Gitea 工作流:打标签即在 macOS、Windows、Linux 运行器上构建、测试、打包并上传到发布
- [ ] REL-3 版本号 0.1.3,打标签触发运行器,三端产物与清单上传,官网指向新发布
+11
View File
@@ -0,0 +1,11 @@
FAIL
- crates/ely-web-content/src/engine.rs:66 — Windows/Linux 的 `load()` 漏掉 `api_hash(CEF_API_VERSION_LAST, 0)`,版本初始化只留在 macOS 分支。新进程中 CEF API 版本仍为 -1,后续需要版本化接口的调用会退出,ElyMark 的页面无法正常启动。两端直接载入本机 CEF 后调用 `cef_command_line_create()` 均以码 1 退出;同一探针先调用 `cef_api_hash(15400, 0)` 后成功返回。修法:各平台、主进程及子进程都在首次使用 CEF 前初始化并核对 API 版本,增加覆盖原生启动路径的测试。
- crates/ely-web-content/src/engine.rs:42 — 删除 `OnceLock` 的导入后,类型声明虽改成全限定名,初始化仍用 `OnceLock::new()`。macOS 编译该模块时报 E0433,导致原有 ElyMark 构建回归;提取该声明与改后的导入交给 rustc 已重现。修法:初始化也使用全限定名,或在 macOS 下恢复导入。
- crates/ely-platform/src/diagnostics/tests.rs:54 — 用目录代替循环符号链接,不能触发此处被测的错误:`log_part()` 只读取 metadata,目录的 metadata 成功,因而返回 `Ok(Some(...))`。Windows 与 WSL 运行 `cargo test -p ely-platform --lib diagnostics::tests::an_unreadable_log_is_an_error_not_nothing -- --exact` 均在第 55 行失败。修法:构造真正使 metadata 失败的跨平台场景,或明确要求拒绝非普通文件并补齐对应实现;保留对错误传播的有效断言。
- crates/ely-files/src/save/tests.rs:466 — 新增 Windows 硬链接场景实际不通过:`same_file()` 仅在 Unix 比较文件身份,Windows 只比规范路径,故把同一文件的硬链接认成新文件,绕过外部修改冲突检查。原生运行 `cargo test -p ely-platform -p ely-files --lib`,此测试在第 467 行失败,92 条通过、1 条失败。修法:在 Windows 按卷与文件标识比较文件身份,让该场景返回 `SaveError::Conflict`,不能靠撤掉硬链接断言过关。
- tasks/BUGS.md:9 — WSL 的 Git 尚未就位,不满足 E-01 的环境验收条件。`~/Documents/Github/ElyOffice/engines/git` 整个目录不存在,`engines/git/bin/git --version` 报不存在;未设置 `ELY_GIT`,也无 ElyTree Git 设置。系统虽有 Git/LFS,应用默认的 `git::locate()` 不使用它们,`Git::find()` 因默认路径缺失而拒绝运行。修法:在 WSL 完成 `scripts/build-git.sh` 与 `scripts/fetch-git-lfs.sh`,验证应用默认找到的 Git 及其 LFS 都能运行。
+3
View File
@@ -0,0 +1,3 @@
FAIL
- crates/ely-web-content/src/engine.rs:44 — 新增注释含 13 个单词,超过 agents.md 规定的十词上限。Windows 执行 `python tests/scripts/comments.py`、WSL 执行 `python3 tests/scripts/comments.py` 均在此行报错并以码 1 退出。修法:将该注释缩至十词以内,再运行两端的注释规则检查。
+1
View File
@@ -0,0 +1 @@
PASS