Repository navigation
fix(windows): 修复翻译缺失、AI 沙箱、ZIP 导出等 8 个 Windows 专属 bug - #1
Merged
Merged
Conversation
检查发现 Windows 便携包存在多个 Linux 上没有的功能缺陷, 全部修复: - 打包: 加 MSYS2_ARG_CONV_EXCL 排除 --prefix=/usr 的参数路径转换, locale 不再被装进错误嵌套路径而静默丢弃 (v4.9.1 及之前的 Windows 包均为纯英文界面); 硬性校验 filecollector.mo 与捆绑的 zip.exe (含 msys-2.0.dll) 存在于 ZIP 内 - ai_controller: normalize_path/rel_path 归一分隔符为 /, 修复 AI 助手 文件工具在 Windows 上全部误判 "Access denied: path outside work directory" (反斜杠路径与 allowed + / 前缀永不匹配) - zip_exporter: compute_relative_path 改用 GIO get_relative_path, 修复工作目录内文件全部落入 _external/; 无工作目录时剥盘符冒号, 修复 dest 指回源文件导致复制自身失败 - window/context_menus: 6 处 has_prefix(wd + "/") 字符串手术归一分隔符, 修复文件树懒加载失效、工作目录内文件被误标外部文件、复制路径退化 - glob_helper: 归一分隔符, 修复 AI list_files 的 ** 模式永不命中 - git_service: 注入 -c core.quotePath=false, 中文文件名不再被八进制 转义成 "\346\226\207..." 而被解析端静默漏掉 - 新增 win32_console_shim: GUI 子系统 exe 在 cmd/PowerShell 下附加父 控制台并切 UTF-8 码页, CLI 输出可见; 管道环境 (Git Bash/CI) 零影响 - cli: --select-file/--load 相对路径在 cwd 找不到时按 --work-dir 兜底 解析, 与 README 完整工作流示例的文档语义一致 - docs/building/windows.md: 记录 MSYS2 路径转换陷阱与新增卡关
视觉转换 (默认, 保图表/公式/表格) 与可选文本抽取 (离线/免凭据) 双管线: - Windows 主包捆绑 poppler: pdftoppm (PDF→页图→VLM, 视觉转换链路恢复) 与 pdftotext (文本抽取模式用), 含 poppler-data CMap (中文 PDF 必需); 运行时 POPPLER_DATADIR 指向包内 share/poppler - soffice 探测链: 转换器包约定布局 tools/LibreOffice/program/soffice.exe → 官方安装路径 → PATH; 探测失败抛带指引的错误而非裸 warning - 新增 OfficeTextExtractor: 纯 Vala 最小 ZIP 读取器 (STORED/DEFLATE, ZIP64/加密明确报错) + OOXML/ODF 文本抽取; PDF 经 pdftotext, 抽空 (扫描版) 自动回退视觉/OCR; 抽取分支置于凭据检查之前, 未配置 AI 的用户在文本模式下也能处理 Office/PDF - PreprocessCache 条目增加 flow 标记 (vlm/text), 两种模式产物互不命中, 旧缓存视为 vlm 向后兼容 - ConfigManager.binary_process_mode 设置 + 偏好对话框 "处理方式" 下拉 - 失败原因全链路透出: ItemData.preprocess_error 字段, task_completed 信号追加 error_message, 队列行/预览占位/重试 tooltip 显示原因 - CI 新增 converter-package job: 官方 LibreOffice MSI 经 msiexec /a 解包为 tools/LibreOffice/... 布局的独立转换器包, 随 Release 发布 (msiexec /a 参数经 cmd 复合字符串绕过 MSYS2 路径改写) - 测试: test_office_text_extractor (内存 ZIP fixture, STORED/DEFLATE/ 排序/实体解码/EOCD 注释/ZIP64/加密/垃圾数据) - i18n: POTFILES + zh_CN.po 手工补录 (本机无 msgmerge, 重新生成 .pot 时逐条核对); README/USAGE 双语 + windows.md 转换器包章节
Sam-Fic
force-pushed
the
fix/windows-portable-compat
branch
from
November 9, 2026 21:19
e939f1f to
f23991e
Compare
- ZlibDecompressor 构造参数在 0.56 vapi 中复用 ZlibCompressorFormat 枚举 (无独立的 ZlibDecompressorFormat 绑定) - 0.56 vapi 无 GLib.BytesBuilder: inflate 结果与测试 ZIP fixture 改为分块收集 + Memory.copy 拼接 - 0.56 vapi 的 StringBuilder 属性是 len 而非 length - Gee.ArrayList<string> 的 foreach 用 owned 变量接收 (0.56 迭代器 get() 为 owned, unowned 接收报错) - ZipReader.get 更名 find, 避免遮蔽 GLib.Object.get 的警告 - Converter.convert 0.56 签名带 ConverterFlags 参数
binary_converter 含 Gdk.Pixbuf (图片转换), 被测试闭包拉入后 test_office_text_extractor 因未链 gtk4 编译失败。resolve_bundled_tool 与 new_poppler_launcher 无 GDK 依赖, 移到 Platform; 测试只链 office_text_extractor + platform
zlib 在输入耗尽后需要显式 FLUSH 才输出终止流, 单次 convert 返回 非 FINISHED 导致 error() 直接 abort 测试进程
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
项目在 Linux 上开发, 现转 Windows 使用。对 v4.9.1 Windows 便携包做了完整检查:
修复清单
MSYS2_ARG_CONV_EXCL+ locale/zip.exe 硬性校验normalize_path/rel_path归一分隔符**模式永不命中 (前导\剥不掉)-c core.quotePath=false--work-dir+ 相对路径 --select-file 不符 README 语义验证状态
bash -n通过MSYS2_ARG_CONV_EXCL行为本机 Git Bash 原生实验验证 (--prefix=/usr被转换 → 排除后保持字面)install-windows/a/_temp/msys64/usr/...)