Skip to content

GitMate 1.15.0

Latest

Choose a tag to compare

@alanhaskey alanhaskey released this 04 Nov 02:04

图片和 PDF 现在可以直接在面板里看。

之前为什么看不到

图片和 PDF 没有补丁可读 —— git 只报告 binary —— 所以点开这类文件原来只有一句 binary file; contents omitted,等于没有内容。

现在

点开这类文件时,面板直接读出工作区里的当前文件来显示:

支持 png jpg jpeg gif webp avif bmp ico svg pdf
显示方式 图片用 <img>(SVG 也走 <img>,脚本不会执行),PDF 用 <embed>
变更行 照旧在预览下方显示,两者不冲突
上限 单文件 6 MB(base64 之后更大,不该把一个 40 MB 的截图塞进面板)

只看工作区那一份。 已提交的那份要经 shell 取回,二进制会被当文本损坏——所以只暂存、或已删除的文件会明说没有可预览的内容,而不是显示坏图。

blob: URL 在替换和卸载时都会 revoke —— 一个 object URL 会一直持有整个文件。

写测试时抓到一个真 bug

仓库内的绝对路径被误判为越界。

git rev-parse 报的是解析后的根(/private/var/…),而拼出来的路径是 /var/… —— /var 是指向 /private/var 的符号链接,于是词法比较判定"逃出仓库",一个完全合法的路径被拒。

现在两边都先 realpath 再比较。这个 bug 只在符号链接系统上出现(macOS 的 /var、/tmp 都是),光看代码不会发现。

验证

node test/smoke.mjs     # 647 项断言

新增 13 项:PNG 的 MIME 与字节往返一致(不是"返回了什么",是"解回来还是原文件")、PDF/SVG 类型、文本被拒、越界被拒、缺失文件与目录的处理、6 MB 上限(含体积提示)、面板路由可达,以及渲染层断言预览标题确实出现在屏幕上。