Skip to content

feat(reader): v0.7.0 阅读舒适度与公式/查找/编辑闭环 - #6

Merged
ijaa merged 2 commits into
mainfrom
feat/v0.7-reader-comfort
Jul 22, 2026
Merged

feat(reader): v0.7.0 阅读舒适度与公式/查找/编辑闭环#6
ijaa merged 2 commits into
mainfrom
feat/v0.7-reader-comfort

Conversation

@ijaa

@ijaa ijaa commented Jul 22, 2026

Copy link
Copy Markdown
Owner

变更概览

v0.7.0 合并版本,聚焦阅读舒适度、技术文档完整度与编辑-阅读闭环。

新功能

  • 字号/栏宽缩放⌘+/⌘-/⌘0 调字号(85%–200%),⌥+/⌥- 调栏宽(600–1100px),偏好持久化。PDF 打印用 @media print 固定字号与 max-width,屏幕缩放不影响输出。
  • 文内查找⌘F 打开、⌘G/⇧⌘G 上下一个、esc 关闭。纯 JS TreeWalker 高亮,不碰桥接,打印中退化为普通文本。
  • KaTeX 数学公式markdown-it-texmath + katex 离线打进同一 IIFE(行内 $...$ / 块级 $$...$$),随包仅 woff2 字体;build 阶段剥离 katex.min.css 的 woff/ttf src 避免 404。
  • GB18030 编码探测FileService.decode 增加 gb18030 分支,旧中文文档不再乱码。
  • 冷启动恢复上次打开文件:复用 openFile 单文件入口,失效路径清空,不在 reopen 恢复。
  • 在编辑器中打开默认 TextEdit:读时检测富文本标记后弹轻提示,建议在 TextEdit 用「格式→制作纯文本」清理。

自检与门禁

  • 新增无头子命令 --encoding-selftest <path> <expected>--rich-text-selftest <path> <0|1>
  • ci-selftest.sh 增加编码/富文本 fixture 循环,主 fixture 加公式子样。
  • 新增 fixtures:ascii.mdgb18030.utf8.src(CI 内 iconv 转 GB18030)、rich-text-marker.md
  • 版本号 0.7.0 / build 15(Info.plist 唯一真源)。

体积

  • reader/dist/app.js:2844 KB → 3123 KB(+279 KB)。
  • 新增 22 个 woff2 字体约 254 KB + katex.min.css 22 KB。
  • 预期 .app 约 4.5 MB,远低于 20 MB 门禁。

硬约束保持

  • 单一 classic IIFE,无 ESM/动态 import。
  • 仅 PDF 导出,不引入 createPDF/DOM 测量/注入打印样式/降级。
  • 单文件语义 / latestDoc 重试不变。
  • 版本号唯一真源 Info.plist。

验证

  • CI reader job:npm ci + test + build
  • CI mac-app job:Universal 编译 + Bundle/IIFE/图标门禁
  • --selftest / --pdf-selftest(含公式 fixture,≥2 页)
  • --encoding-selftest(gb18030 / utf-8)
  • --rich-text-selftest(1 / 0)
  • app 体积 < 20 MB

kk added 2 commits July 22, 2026 14:06
- 字号/栏宽缩放:⌘+/⌘-/⌘0 调字号,⌥+/⌥- 调栏宽,偏好持久化;
  PDF 打印用 @media print 固定字号与 max-width,不受屏幕缩放影响。
- 文内查找 ⌘F:纯 JS TreeWalker 高亮,⌘G/⇧⌘G 上下一个、esc 关闭。
- KaTeX 数学公式:markdown-it-texmath + katex 离线打进同一 IIFE,
  仅随包 woff2 字体;build 阶段剥离 katex.min.css 的 woff/ttf src。
- GB18030 编码探测:FileService.decode 增加 gb18030 分支,旧中文文档不再乱码。
- 冷启动恢复上次打开文件:lastOpenedPath 失效即清空,不在 reopen 恢复。
- 在编辑器中打开默认使用自带 TextEdit;读时检测富文本标记后弹轻提示,
  建议在 TextEdit 用「格式→制作纯文本」清理。
- 新增 --encoding-selftest / --rich-text-selftest 无头自检子命令,
  ci-selftest 补编码/富文本 fixture 循环与公式 fixture。
- 版本号 0.7.0 / build 15。
String.Encoding.gb18030 便捷常量在 swift-corelibs-foundation 上不存在
(CI 编译报 "type 'String.Encoding' has no member 'gb18030'")。改用
CFStringConvertEncodingToNSStringEncoding(CFStringEncodings.GB_18030_2000)
拿到 NSStringEncoding rawValue 去构造。
@ijaa
ijaa merged commit e856bf2 into main Jul 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants