Repository navigation
Releases
墨读 0.6.13 · Windows / Android / Linux x64 / Linux arm64 / macOS Intel / macOS Silicon / 鸿蒙 / 鸿蒙自签 / iOS
同一份 ui/,一套代码跑遍各端。版本 0.6.13(Android versionCode 613)。
| 平台 | 文件 | 怎么用 |
|---|---|---|
| Windows x64 | MoRead-windows-0.6.13.zip |
解压,双击 墨读.exe。免安装、不写注册表,数据跟着程序走 |
| Android 7+ | MoRead-android-0.6.13.apk |
直接安装(与桌面共用同一套阅读与书源逻辑) |
| Linux x64 | MoRead-linux-x64-0.6.13.tar.gz |
tar xzf … 后跑 ./moread,或 ./install.sh 装桌面图标 |
| Linux arm64 | MoRead-linux-arm64-0.6.13.tar.gz |
同上,树莓派 / ARM 小主机 |
| macOS Intel | MoRead-mac-x64-0.6.13.zip |
解压得到 MoRead.app。未签名:首次打开要右键 → 打开,或 xattr -dr com.apple.quarantine MoRead.app |
| macOS Apple Silicon | MoRead-mac-arm64-0.6.13.zip |
同上 |
| 鸿蒙 NEXT | MoRead-harmony-0.6.13.hap |
未签名,用 DevEco「自动签名」或自己的证书签 |
| 鸿蒙(自签) | MoRead-harmony-0.6.13-signed.hap |
SDK 自带 OpenHarmony 测试 CA 签的,开发板 / 模拟器可 hdc install |
| iOS 15+ | MoRead-0.6.13-unsigned.ipa |
未签名,Sideloadly / AltStore 填自己 Apple ID 重签(免费账号 7 天到期) |
| 网页 / iPad PWA | — | https://routinemiku.github.io/MoRead-Windows/ |
说明
- 只有 Windows、Android 是每期实测的;Linux / macOS / 鸿蒙 / iOS 未做真机验证(手上没这些设备)。编译、签名、包结构都验过,实机反馈欢迎开 issue。
- Linux 包内
moread的可执行位已写成 0755(Windows 打 tar 会按 NTFS ACL 写成 0666,脚本里重算了 tar 头校验和);macOS 包保留了 framework 的 14 条符号链接(先解压再压缩会把Versions/Current变成 1 字节文件)。 - 鸿蒙零售机只认华为签发证书,唯一免费路径是 DevEco 自动签名(绑自己账号 + 设备 UDID)。
- iOS 的 ipa 由 GitHub Actions 的 macOS runner 编译(
.github/workflows/ios-ipa.yml),未签名,需要自己重签。
墨读 0.6.12 · Windows / Android / Linux x64 / Linux arm64 / macOS Intel / macOS Silicon / 鸿蒙 / 鸿蒙自签 / iOS
墨读 0.6.12
扩展可以装了
扩展菜单去掉了顶部那行说明,末尾多了一张虚线卡 添加扩展:
- 点进去是一整页教程:扩展格式、三步流程、面板能用的宿主接口,还有「填入示例」一键跑起来
- 三种导入方式:把
.json/.html拖进窗口、粘贴内容点「导入」、点「选文件」(手机上打开系统文件选择器) - 导入成功后扩展菜单立刻多一张卡,点开就是面板;「已安装」里可以打开、移除,同名再导会问一次覆盖
- 面板跑在 sandbox iframe 里,通过
postMessage和墨读说话:toast/context/search/openBook/shelf - 扩展存在
data.json里,备份、换设备、导出恢复一起带走;分发给别人就是那一个 JSON 文件
一个最小扩展:
{
"name": "阅读小助手",
"desc": "显示当前在读的书",
"version": "1.0.0",
"author": "你的名字",
"icon": "star",
"html": "<div id=ctx>读取中…</div><script>parent.postMessage({moread:'context'},'*');addEventListener('message',e=>{if(e.data.moread==='context')document.getElementById('ctx').textContent=JSON.stringify(e.data.data.book)})<\/script>"
}其他
- 安卓端补上了 WebView 的文件选择回调,网页里的「选文件」按钮不再点了没反应
- 扩展面板在竖屏下「管理」和返回键同一行,不再多占一层
- 已停在扩展子页时再点侧栏「扩展」,直接回菜单(和返回键一致)
九平台资产:Windows / Linux x64 + arm64 / macOS Intel + ARM / APK / 鸿蒙 hap(含签名)/ iOS ipa。
同一份 ui/,一套代码跑遍各端。版本 0.6.12(Android versionCode 612)。
| 平台 | 文件 | 怎么用 |
|---|---|---|
| Windows x64 | MoRead-windows-0.6.12.zip |
解压,双击 墨读.exe。免安装、不写注册表,数据跟着程序走 |
| Android 7+ | MoRead-android-0.6.12.apk |
直接安装(与桌面共用同一套阅读与书源逻辑) |
| Linux x64 | MoRead-linux-x64-0.6.12.tar.gz |
tar xzf … 后跑 ./moread,或 ./install.sh 装桌面图标 |
| Linux arm64 | MoRead-linux-arm64-0.6.12.tar.gz |
同上,树莓派 / ARM 小主机 |
| macOS Intel | MoRead-mac-x64-0.6.12.zip |
解压得到 MoRead.app。未签名:首次打开要右键 → 打开,或 xattr -dr com.apple.quarantine MoRead.app |
| macOS Apple Silicon | MoRead-mac-arm64-0.6.12.zip |
同上 |
| 鸿蒙 NEXT | MoRead-harmony-0.6.12.hap |
未签名,用 DevEco「自动签名」或自己的证书签 |
| 鸿蒙(自签) | MoRead-harmony-0.6.12-signed.hap |
SDK 自带 OpenHarmony 测试 CA 签的,开发板 / 模拟器可 hdc install |
| iOS 15+ | MoRead-0.6.12-unsigned.ipa |
未签名,Sideloadly / AltStore 填自己 Apple ID 重签(免费账号 7 天到期) |
| 网页 / iPad PWA | — | https://routinemiku.github.io/MoRead-Windows/ |
说明
- 只有 Windows、Android 是每期实测的;Linux / macOS / 鸿蒙 / iOS 未做真机验证(手上没这些设备)。编译、签名、包结构都验过,实机反馈欢迎开 issue。
- Linux 包内
moread的可执行位已写成 0755(Windows 打 tar 会按 NTFS ACL 写成 0666,脚本里重算了 tar 头校验和);macOS 包保留了 framework 的 14 条符号链接(先解压再压缩会把Versions/Current变成 1 字节文件)。 - 鸿蒙零售机只认华为签发证书,唯一免费路径是 DevEco 自动签名(绑自己账号 + 设备 UDID)。
- iOS 的 ipa 由 GitHub Actions 的 macOS runner 编译(
.github/workflows/ios-ipa.yml),未签名,需要自己重签。
墨读 0.6.11 · Windows / Android / Linux x64 / Linux arm64 / macOS Intel / macOS Silicon / 鸿蒙 / 鸿蒙自签 / iOS
这版改了什么
设置页拆成两级:先选模块,再看那一组开关
设置项一路上加到二十多条,一页铺到底:手机上要往下划十几屏才找得到「关于」,找「朗读」的语速要在一屏开关里翻。
现在和「扩展」一样分两级:
- 进设置先是一屏模块卡片:阅读 / 朗读 / 书架 / 搜索与网络 / 数据与备份 / 云端同步 / 系统 / 关于
- 每张卡右边挂着当前状态,不用点进去也能看出现在是什么样:
22px · 1.7 行距、自动下一章、最近阅读、6 并发 · 搜 6 源、本机目录、已配置、× 直接退出、v0.6.11 - 点进哪张就只看那一组,左上角「← 设置」退回菜单;手机返回键同样先回菜单再回书架
- 改动照旧即时生效,没有「保存」按钮
顺手把原来全挤在「系统」里的东西分到了各自的模块:
| 以前都在「系统」里 | 现在 |
|---|---|
| 书架排序、封面大小 | 书架 |
| 搜索并发数、每次搜索的书源数、换源时搜索的书源数 | 搜索与网络 |
| 数据目录、缓存占用 | 数据与备份(和导出 / 恢复合成一页) |
| 关闭窗口最小化到托盘 | 系统 |
| 阅读时自动预取下一章 | 阅读 |
窄屏不至于挤成一行麻花:一张卡片里要放「名字 + 说明 + 状态 + 箭头」四样,手机上放不下时先舍状态,保证说明完整显示;桌面宽屏是三列,文字各自一行,不会被截成「搜索与网…」。
从备份文件恢复(双击 zip / 用墨读打开)现在直接落到「数据与备份」那一页,不用再在菜单里找一遍。
同一份 ui/,一套代码跑遍各端。版本 0.6.11(Android versionCode 611)。
| 平台 | 文件 | 怎么用 |
|---|---|---|
| Windows x64 | MoRead-windows-0.6.11.zip |
解压,双击 墨读.exe。免安装、不写注册表,数据跟着程序走 |
| Android 7+ | MoRead-android-0.6.11.apk |
直接安装(与桌面共用同一套阅读与书源逻辑) |
| Linux x64 | MoRead-linux-x64-0.6.11.tar.gz |
tar xzf … 后跑 ./moread,或 ./install.sh 装桌面图标 |
| Linux arm64 | MoRead-linux-arm64-0.6.11.tar.gz |
同上,树莓派 / ARM 小主机 |
| macOS Intel | MoRead-mac-x64-0.6.11.zip |
解压得到 MoRead.app。未签名:首次打开要右键 → 打开,或 xattr -dr com.apple.quarantine MoRead.app |
| macOS Apple Silicon | MoRead-mac-arm64-0.6.11.zip |
同上 |
| 鸿蒙 NEXT | MoRead-harmony-0.6.11.hap |
未签名,用 DevEco「自动签名」或自己的证书签 |
| 鸿蒙(自签) | MoRead-harmony-0.6.11-signed.hap |
SDK 自带 OpenHarmony 测试 CA 签的,开发板 / 模拟器可 hdc install |
| iOS 15+ | MoRead-0.6.11-unsigned.ipa |
未签名,Sideloadly / AltStore 填自己 Apple ID 重签(免费账号 7 天到期) |
| 网页 / iPad PWA | — | https://routinemiku.github.io/MoRead-Windows/ |
说明
- 只有 Windows、Android 是每期实测的;Linux / macOS / 鸿蒙 / iOS 未做真机验证(手上没这些设备)。编译、签名、包结构都验过,实机反馈欢迎开 issue。
- Linux 包内
moread的可执行位已写成 0755(Windows 打 tar 会按 NTFS ACL 写成 0666,脚本里重算了 tar 头校验和);macOS 包保留了 framework 的 14 条符号链接(先解压再压缩会把Versions/Current变成 1 字节文件)。 - 鸿蒙零售机只认华为签发证书,唯一免费路径是 DevEco 自动签名(绑自己账号 + 设备 UDID)。
- iOS 的 ipa 由 GitHub Actions 的 macOS runner 编译(
.github/workflows/ios-ipa.yml),未签名,需要自己重签。
墨读 0.6.10 · Windows / Android / Linux x64 / Linux arm64 / macOS Intel / macOS Silicon / 鸿蒙 / 鸿蒙自签 / iOS
这版改了什么
手机图标改成和电脑版一模一样
以前安卓装完在桌面上是「一本白书」,电脑版却是「深墨底 + 书 + 墨读字标」,同一个应用看着像两个东西。
- 自适应图标的背景层现在就是电脑版那层深墨渐变,前景层是「书 + 墨读」字标,缩到 0.75 落在 108dp 的安全区里 —— 系统裁成圆形、方形、水滴形都不会切到字
- 顺手补了 API<26 用的五档 mipmap PNG 和圆形图标(
roundIcon)。这两样以前是缺的,老设备上根本没有图标可显示 - 网页版 PWA、鸿蒙、iOS 的图标本来就是同一枚,这次一起重出了一遍
继续阅读卡片:左右上下齐平
书架顶部那张深色卡片,以前封面是垂直居中的,右边「继续阅读」和下面两个按钮跟封面对不上,按钮像悬在半空。
- 现在左边封面和右边文字块同高:上面「继续阅读」贴着封面顶边,下面按钮贴着封面底边,两侧上下齐平
- 封面宽度按接近真实书封的 1:1.6 定,靠高度撑开,不是把书封拉长
- 竖屏上两个按钮不再换行(以前换行后卡片被撑高,按钮还会被裁掉一半)
目录:分清「正文」和「卷首附录」
出版社做的 epub 里,封面页、书名页、版权页、目录页在 spine 里和正文章节长得一模一样;前言、序、作者引言、附录、后记、致谢也在里面。以前这些全被算成章,一本 40 章的书能显示成 47 章,目录序号也跟着错位 —— 看着是第 3 章,点进去是版权页后面那章。
现在:
- 纯图片页(封面、书名页)在解析阶段就跳过,不再进目录
- 前言 / 序 / 作者引言 / 导言 / 附录 / 后记 / 致谢 / 参考文献 / 作者简介 / 完本感言 归到「卷首 · 附录」一组,单独排在目录前面,不计入章节数
- 正文章节按 1..N 连续编号,点哪条读哪章;内部索引(
data-ci)仍是原始下标,所以进度、书签、跳转都不会串 - 目录顶部写清楚:
共 40 章 · 另有卷首附录 7 篇;书架和阅读页头部的「共 N 章」也换成正文数 - 解析缓存升到 v3,老书重新打开一次就按新规则重排(本地 epub 会重新解析一遍)
关于墨读里加了抖音码
设置 → 关于墨读,公众号二维码下面多了一行抖音码:
- 扫码直接在抖音里找到我(抖音号
RoutineMiku) - 整行可以点,点一下复制主页链接,粘到抖音里也能打开
- 提问题时带上版本号和平台最快 —— 关于页顶部就写着
v0.6.10 · Windows / Android / 网页版
同一份 ui/,一套代码跑遍各端。版本 0.6.10(Android versionCode 610)。
| 平台 | 文件 | 怎么用 |
|---|---|---|
| Windows x64 | MoRead-windows-0.6.10.zip |
解压,双击 墨读.exe。免安装、不写注册表,数据跟着程序走 |
| Android 7+ | MoRead-android-0.6.10.apk |
直接安装(与桌面共用同一套阅读与书源逻辑) |
| Linux x64 | MoRead-linux-x64-0.6.10.tar.gz |
tar xzf … 后跑 ./moread,或 ./install.sh 装桌面图标 |
| Linux arm64 | MoRead-linux-arm64-0.6.10.tar.gz |
同上,树莓派 / ARM 小主机 |
| macOS Intel | MoRead-mac-x64-0.6.10.zip |
解压得到 MoRead.app。未签名:首次打开要右键 → 打开,或 xattr -dr com.apple.quarantine MoRead.app |
| macOS Apple Silicon | MoRead-mac-arm64-0.6.10.zip |
同上 |
| 鸿蒙 NEXT | MoRead-harmony-0.6.10.hap |
未签名,用 DevEco「自动签名」或自己的证书签 |
| 鸿蒙(自签) | MoRead-harmony-0.6.10-signed.hap |
SDK 自带 OpenHarmony 测试 CA 签的,开发板 / 模拟器可 hdc install |
| iOS 15+ | MoRead-0.6.10-unsigned.ipa |
未签名,Sideloadly / AltStore 填自己 Apple ID 重签(免费账号 7 天到期) |
| 网页 / iPad PWA | — | https://routinemiku.github.io/MoRead-Windows/ |
说明
- 只有 Windows、Android 是每期实测的;Linux / macOS / 鸿蒙 / iOS 未做真机验证(手上没这些设备)。编译、签名、包结构都验过,实机反馈欢迎开 issue。
- Linux 包内
moread的可执行位已写成 0755(Windows 打 tar 会按 NTFS ACL 写成 0666,脚本里重算了 tar 头校验和);macOS 包保留了 framework 的 14 条符号链接(先解压再压缩会把Versions/Current变成 1 字节文件)。 - 鸿蒙零售机只认华为签发证书,唯一免费路径是 DevEco 自动签名(绑自己账号 + 设备 UDID)。
- iOS 的 ipa 由 GitHub Actions 的 macOS runner 编译(
.github/workflows/ios-ipa.yml),未签名,需要自己重签。
墨读 0.6.9 · Windows / Android / Linux x64 / Linux arm64 / macOS Intel / macOS Silicon / 鸿蒙 / 鸿蒙自签 / iOS
这版改了什么
菜单精简成三个入口:书架 / 扩展 / 设置
以前侧栏挂了一排按钮(书架、书源、网页、书签、历史、统计、设置),手机竖屏底下那一条挤得看不清。现在只留三个,书源 / 阅读历史 / 阅读统计都收进「扩展」:
- 点「扩展」是三个卡片,卡片上直接带数量(书源 β · 2815 个、历史 · 45 条、统计 · 今天读了多少),一眼知道点进去看什么
- 点进去就是原来那套完整功能,左上角「← 扩展」退回菜单;安卓返回键同样是先回扩展菜单、再回书架
- 以后新功能(订阅、字典、自定义主题……)都往这里挂一张卡,不用再往侧栏挤
书签搬进阅读器,和目录共用同一个抽屉
书签不再单独占一个菜单项,改成阅读器目录抽屉里的两个页签:目录 / 书签。
- 书签按书归属,只显示当前这本书的,记的是「第几章 + 当时读到百分之几」,点一下就跳回去
- 同一章可以放多条 —— 长章读到几个有意思的地方各记一条,以前只能一个章节一个书签
- 页签上带条数;和已有书签位置几乎重合(1.5% 以内)时才会提示「这个位置已经有书签了」,其余随便加
- 添加后的提示也跟着改:「已添加书签 · 在目录面板的「书签」里看」
搜索合并:一个输入框,选「书源」还是「网页」
原来的「网页」是单独一个视图、带地址栏和前进后退的内嵌浏览器,和书架的搜书是两套东西。现在合成一个:
- 书架搜索框左边多了个下拉:书源 / 网页。选书源跑本地书源,选网页搜整个互联网小说站
- 两种模式共用输入框,搜索方式跟着存档记住,下次打开还是上次选的
- 网页模式下多一个引擎下拉(必应 / 百度 / 搜狗 / 360),站点内前进后退保留在结果页
- 搜索结果按「书」归并、站点标签换站、嗅探目录这些能力一个没少
修好 EPUB 里的 SVG 图片(calibre 转的书)
calibre 转换出来的 epub 里,插图常常不是普通 <img>,而是这么一层壳:
<svg viewBox="0 0 600 800"><image xlink:href="cover.jpeg"/></svg>以前直接把它当 <img src="data:image/svg+xml;base64,..."> 内嵌,而 svg 图片里不允许读外部文件,于是 cover.jpeg 加载不到 —— 正文里就是一块空白。
现在解析时先把 <svg> 块里的 <image> 引用抽出来,把图片重新内联成 data URL 再写回 svg;图在包里找不到就整块丢掉,不留空白框。纯矢量的 <svg> 折线图(有些技术书用它画图表)也能正常显示。
同一条链路上还补了 .avif 支持。
同一份 ui/,一套代码跑遍各端。版本 0.6.9(Android versionCode 609)。
| 平台 | 文件 | 怎么用 |
|---|---|---|
| Windows x64 | MoRead-windows-0.6.9.zip |
解压,双击 墨读.exe。免安装、不写注册表,数据跟着程序走 |
| Android 7+ | MoRead-android-0.6.9.apk |
直接安装(与桌面共用同一套阅读与书源逻辑) |
| Linux x64 | MoRead-linux-x64-0.6.9.tar.gz |
tar xzf … 后跑 ./moread,或 ./install.sh 装桌面图标 |
| Linux arm64 | MoRead-linux-arm64-0.6.9.tar.gz |
同上,树莓派 / ARM 小主机 |
| macOS Intel | MoRead-mac-x64-0.6.9.zip |
解压得到 MoRead.app。未签名:首次打开要右键 → 打开,或 xattr -dr com.apple.quarantine MoRead.app |
| macOS Apple Silicon | MoRead-mac-arm64-0.6.9.zip |
同上 |
| 鸿蒙 NEXT | MoRead-harmony-0.6.9.hap |
未签名,用 DevEco「自动签名」或自己的证书签 |
| 鸿蒙(自签) | MoRead-harmony-0.6.9-signed.hap |
SDK 自带 OpenHarmony 测试 CA 签的,开发板 / 模拟器可 hdc install |
| iOS 15+ | MoRead-0.6.9-unsigned.ipa |
未签名,Sideloadly / AltStore 填自己 Apple ID 重签(免费账号 7 天到期) |
| 网页 / iPad PWA | — | https://routinemiku.github.io/MoRead-Windows/ |
说明
- 只有 Windows、Android 是每期实测的;Linux / macOS / 鸿蒙 / iOS 未做真机验证(手上没这些设备)。编译、签名、包结构都验过,实机反馈欢迎开 issue。
- Linux 包内
moread的可执行位已写成 0755(Windows 打 tar 会按 NTFS ACL 写成 0666,脚本里重算了 tar 头校验和);macOS 包保留了 framework 的 14 条符号链接(先解压再压缩会把Versions/Current变成 1 字节文件)。 - 鸿蒙零售机只认华为签发证书,唯一免费路径是 DevEco 自动签名(绑自己账号 + 设备 UDID)。
- iOS 的 ipa 由 GitHub Actions 的 macOS runner 编译(
.github/workflows/ios-ipa.yml),未签名,需要自己重签。
墨读 0.6.8 · Windows / Android / Linux x64 / Linux arm64 / macOS Intel / macOS Silicon / 鸿蒙 / 鸿蒙自签 / iOS
这一版修了什么(0.6.8)
「目录正常、正文却是一屏 {"code":1,"data":{"content":"9qfnc..."}} 密文」
根因是引擎把 JS 正文规则里的 result 传成了空字符串:
@js:yuluNovelContent(java, source, result, baseUrl)里第一行就JSON.parse(result),
拿到''直接抛Unexpected end of JSON input,规则静默失败,回退成「整页文本」——
于是接口返回的加密 JSON 被当成正文显示出来。- 现在把原始响应体同时作为
html和result交给规则。雨鹿这类 AES 协议的源恢复正常
(第 312 章 122 段,开头就是「此时天色已经暗了下来。」)。 - 另外加了一道兜底:正文如果仍是 JSON 信封,先把
data.content当 base64 试着还原明文;
解不出就明确提示「这个源的正文是加密接口(返回 JSON 密文)」,不再显示密文。
换源卡顿 / 切换不丝滑
- 书源自带的
header之前完全没生效(代码只读了headers复数对象)。Legado 里
header是单数字段、还可以是@js:脚本,靠 Referer / 签名头才给数据的站因此一律
返回空列表 —— 换源搜不到书、正文抓不到都有这个原因。现在统一解析并缓存 60 秒。 - 脚本书源(带
jsLib)执行规则走同步请求,一次把主线程钉住 0.8~1.6 秒。现在和普通源
分开排队:普通源并发 10,脚本书源默认不搜,面板底部放一个「还有 N 个脚本书源没试 / 试一下」,
想试才跑。 - 搜索失败也进缓存(10 分钟):两千多个源里死源占多数,第二次打开换源不用陪它们再等超时。
- 换源点下去先收面板,改为顶部小字「正在切到 xxx…」;目录加 10 分钟缓存,换回上次用过的源几乎瞬时。
实测(48 个源、588 章那本书):
| 指标 | 修复前 | 修复后 |
|---|---|---|
| 换源期间主线程最长阻塞 | 1693ms | 82ms |
| 一轮换源总耗时 | 16.2s | 9.9s |
| 章节正文 | JSON 密文 | 122 段正常正文 |
Linux / macOS 运行时包补齐
- 前几版只重出了 Windows / Android / 鸿蒙 / iOS,Linux 与 macOS 的包一直是 0.6.3 的旧代码。
这一版四个包全部重出(同一份src/+ui/,Electron 45.1.0):
MoRead-linux-x64、MoRead-linux-arm64、MoRead-mac-x64、MoRead-mac-arm64。 - 包内校验:
resources/app/package.json为 0.6.8,ui/engine.js的 md5 与本机源码一致;
Linux 的moread/install.sh权限位 0755;macOS 的 framework 14 条符号链接原样保留。 - 顺手修了 README 下载表的一个老 bug:平台名里带连字符(
linux-x64、mac-arm64)的行
从来匹配不上更新规则,所以这四行的链接一直停在 0.6.3 —— 与「有没有出包」无关。
同一份 ui/,一套代码跑遍各端。版本 0.6.8(Android versionCode 608)。
| 平台 | 文件 | 怎么用 |
|---|---|---|
| Windows x64 | MoRead-windows-0.6.8.zip |
解压,双击 墨读.exe。免安装、不写注册表,数据跟着程序走 |
| Android 7+ | MoRead-android-0.6.8.apk |
直接安装(与桌面共用同一套阅读与书源逻辑) |
| Linux x64 | MoRead-linux-x64-0.6.8.tar.gz |
tar xzf … 后跑 ./moread,或 ./install.sh 装桌面图标 |
| Linux arm64 | MoRead-linux-arm64-0.6.8.tar.gz |
同上,树莓派 / ARM 小主机 |
| macOS Intel | MoRead-mac-x64-0.6.8.zip |
解压得到 MoRead.app。未签名:首次打开要右键 → 打开,或 xattr -dr com.apple.quarantine MoRead.app |
| macOS Apple Silicon | MoRead-mac-arm64-0.6.8.zip |
同上 |
| 鸿蒙 NEXT | MoRead-harmony-0.6.8.hap |
未签名,用 DevEco「自动签名」或自己的证书签 |
| 鸿蒙(自签) | MoRead-harmony-0.6.8-signed.hap |
SDK 自带 OpenHarmony 测试 CA 签的,开发板 / 模拟器可 hdc install |
| iOS 15+ | MoRead-0.6.8-unsigned.ipa |
未签名,Sideloadly / AltStore 填自己 Apple ID 重签(免费账号 7 天到期) |
| 网页 / iPad PWA | — | https://routinemiku.github.io/MoRead-Windows/ |
说明
- 只有 Windows、Android 是每期实测的;Linux / macOS / 鸿蒙 / iOS 未做真机验证(手上没这些设备)。编译、签名、包结构都验过,实机反馈欢迎开 issue。
- Linux 包内
moread的可执行位已写成 0755(Windows 打 tar 会按 NTFS ACL 写成 0666,脚本里重算了 tar 头校验和);macOS 包保留了 framework 的 14 条符号链接(先解压再压缩会把Versions/Current变成 1 字节文件)。 - 鸿蒙零售机只认华为签发证书,唯一免费路径是 DevEco 自动签名(绑自己账号 + 设备 UDID)。
- iOS 的 ipa 由 GitHub Actions 的 macOS runner 编译(
.github/workflows/ios-ipa.yml),未签名,需要自己重签。
墨读 0.6.7 · Windows / Android / 鸿蒙 / 鸿蒙自签 / iOS
这一版做了什么(0.6.7)
网页搜书跟书源搜书对齐了
- 搜索结果按「书」归并:同一本在多个站的结果合成一张卡,卡上是书名 + 作者 + 站点标签,点标签换站,卡上直接「预览 / 加入书架」;原始结果(百科、知乎、视频、电商)折叠在下方。
- 书名清洗:
剑来 (烽火戏诸侯)最新章节全本在线阅读-纵横中文网官方正版→剑来 / 烽火戏诸侯。 - 目录可信度三重校验:不会再被纵横的「粉丝榜」当成目录。
- 正文改取「够长且最深」的一层,导航条不再混进正文;章节页 id 带章节号(
#chapter_36898237)时规则也能跨章复用。
加载与响应
- 预览两阶段渲染:先用手上的目录画第一屏(约 0.8s 出画面),后台补全后再重画并标注耗时。
- 目录不全时并行跟「目录链接 / 立即阅读 / 猜路径」补全,20s 总死线(慢站以前单页 15s × 3 轮,能卡 40s)。
- 网络层:keep-alive 连接复用、
insecureHTTPParser(七猫响应头有裸空格,Node 默认解析器直接拒收)、ECONNRESET 自动重试。 - 渲染层 LRU 文本缓存(GET、90s、24MB),重读章节 5~12ms。
其他
- 验证码 / 人机校验页现在会明确提示,不再把 73 个字的「请完成验证码校验」当正文显示。
- 导入原版「阅读」备份时补齐
tocUrl/total/bookType/readConfig等字段,字段含义见docs/legado-backup-fields.md。 - 修了「书架显示第 59 章、点进去变成第 660 章」:备份里的
bookUrl是下载页,真目录在tocUrl。
同一份 ui/,一套代码跑遍各端。版本 0.6.7(Android versionCode 607)。
| 平台 | 文件 | 怎么用 |
|---|---|---|
| Windows x64 | MoRead-windows-0.6.7.zip |
解压,双击 墨读.exe。免安装、不写注册表,数据跟着程序走 |
| Android 7+ | MoRead-android-0.6.7.apk |
直接安装(与桌面共用同一套阅读与书源逻辑) |
| 鸿蒙 NEXT | MoRead-harmony-0.6.7.hap |
未签名,用 DevEco「自动签名」或自己的证书签 |
| 鸿蒙(自签) | MoRead-harmony-0.6.7-signed.hap |
SDK 自带 OpenHarmony 测试 CA 签的,开发板 / 模拟器可 hdc install |
| iOS 15+ | MoRead-0.6.7-unsigned.ipa |
未签名,Sideloadly / AltStore 填自己 Apple ID 重签(免费账号 7 天到期) |
| 网页 / iPad PWA | — | https://routinemiku.github.io/MoRead-Windows/ |
说明
- 只有 Windows、Android 是每期实测的;Linux / macOS / 鸿蒙 / iOS 未做真机验证(手上没这些设备)。编译、签名、包结构都验过,实机反馈欢迎开 issue。
- Linux 包内
moread的可执行位已写成 0755(Windows 打 tar 会按 NTFS ACL 写成 0666,脚本里重算了 tar 头校验和);macOS 包保留了 framework 的 14 条符号链接(先解压再压缩会把Versions/Current变成 1 字节文件)。 - 鸿蒙零售机只认华为签发证书,唯一免费路径是 DevEco 自动签名(绑自己账号 + 设备 UDID)。
- iOS 的 ipa 由 GitHub Actions 的 macOS runner 编译(
.github/workflows/ios-ipa.yml),未签名,需要自己重签。
墨读 0.6.3 · Windows / Linux / macOS / Android / 鸿蒙 / iOS
同一份 ui/,七个平台。版本 0.6.3(Android versionCode 603)。
| 平台 | 文件 | 怎么用 |
|---|---|---|
| Windows x64 | MoRead-windows-0.6.3.zip |
解压,双击 墨读.exe。免安装、不写注册表,数据跟着程序走 |
| Android 7+ | MoRead-android-0.6.3.apk |
直接安装(与桌面共用同一套阅读与书源逻辑) |
| Linux x64 | MoRead-linux-x64-0.6.3.tar.gz |
tar xzf … 后跑 ./moread,或 ./install.sh 装桌面图标 |
| Linux arm64 | MoRead-linux-arm64-0.6.3.tar.gz |
同上,树莓派 / ARM 小主机 |
| macOS Intel | MoRead-mac-x64-0.6.3.zip |
解压得到 MoRead.app。未签名:首次打开要右键 → 打开,或 xattr -dr com.apple.quarantine MoRead.app |
| macOS Apple Silicon | MoRead-mac-arm64-0.6.3.zip |
同上 |
| 鸿蒙 NEXT | MoRead-harmony-0.6.3.hap |
未签名,用 DevEco「自动签名」或自己的证书签 |
| 鸿蒙(自签) | MoRead-harmony-0.6.3-signed.hap |
SDK 自带 OpenHarmony 测试 CA 签的,开发板 / 模拟器可 hdc install |
| iOS 15+ | MoRead-0.6.3-unsigned.ipa |
未签名,Sideloadly 填自己 Apple ID 重签(免费账号 7 天) |
| 网页 / iPad PWA | — | https://routinemiku.github.io/MoRead-Windows/ |
iOS 另有单独说明:见 v0.6.3-ios。
说明
- Linux / macOS / 鸿蒙 / iOS 未做真机验证(手上只有 Windows 和安卓设备)。编译、签名、包结构都验过,实机反馈欢迎开 issue。
- Linux 包内
moread的可执行位已写成 0755(Windows 打 tar 会按 NTFS ACL 写成 0666,脚本里重算了 tar 头校验和);macOS 包保留了 framework 的 14 条符号链接(先解压再压缩会把Versions/Current变成 1 字节文件)。 - 鸿蒙零售机只认华为签发证书,唯一免费路径是 DevEco 自动签名(绑自己账号 + 设备 UDID)。
墨读 0.6.1(安卓)
一屏多看六行,行距终于能调了
上一版把书打开以后,正文只占屏幕上方三分之二,底下空一大片;段落之间又散得像两首诗。
这次把排版从头捋了一遍,顺手把 logo 和「关于」补齐。
1. 为什么会空
.page 的底部内边距一直写着 96px(桌面 110px)。这个值当初是给「底栏压在正文上」
准备的,可实际底栏是 flex 里独立的一行,根本没盖住正文——等于每屏白扔两行半。
沉浸模式下底栏还会滑走,那 96px 更是纯浪费。
- 竖屏
96px → 28px,沉浸模式→ 18px,桌面/横屏110px → 44px; - 分页模式的上下留白也从
30/38收到20/26,同样多放一行。
2. 行距与段距
原来只有一个「行距」滑杆,默认 2.0;段落间距还是从行距算出来的
(行距 > 1.9 就给 1.05em),所以行距一调、段距跟着乱跳,也压不紧。
- 默认行距
2.0 → 1.7(接近纸书); - 段距独立成一个设置项
paraGapEm,默认0.5em,滑杆 0~1.5em; - 老存档一次性迁移:只校正仍然是旧默认值(2.0)的,自己调过的一律不动;
- 阅读器底栏新增 Aa 排版面板:字号 / 行距 / 段距 / 字体 / 翻页方式 / 主题,
拖动即时生效(90ms 防抖重排),底栏原先挤着的「滚动」「宋体」两个按钮收进面板。
393px 实测(同一本书、同字号 19px):
| 行距 | 段距 | 一屏行数 | |
|---|---|---|---|
| 改之前 | 2.0(38px) | 1.05em(20px) | 17 行 |
| 改之后 | 1.7(32px) | 0.5em(9.5px) | 23 行 |
3. 全套 logo 重做
旧图标是一枚通用的「蓝色圆角 + 白书」,看不出是这个应用。新标识是矢量画的:
深墨蓝底、摊开的书页、底部「墨读」字标加一道朱红短线。
- 新增
build/gen-logo.js:同一份 SVG 一次产出icon.ico(16/24/32/48/64/128/256 七帧)、
icon.png、logo.png、Web 的 180/192/512、托盘tray.png、安卓自适应图标前景层; - 96px 以下自动切换成「无字标」版本(字缩到 32px 只会糊成一团);
pack.js现在用 rcedit 把图标和版本信息写进 exe——以前资源管理器里显示的还是 Electron 的默认图标;- 安卓自适应图标的底色也换成同款墨蓝,前景书页留足 66dp 安全区。
4. 关于我们
设置页 →「关于墨读 → 查看」,或在阅读器里随手翻到:
- 应用标识、版本号与当前平台;
- GitHub:RoutineMiku/MoRead-Windows(点了直接用系统浏览器打开);
- 公众号二维码,微信扫码关注;
- 底部
powered by routinemiku。
二维码按原图放进 ui/gzh-qr.jpg,三端(网页 / 安卓 / 桌面)各带一份,离线也能显示。
版本
0.6.0 → 0.6.1(versionCode 601),网页 / 安卓 / Windows 同一条版本线。
墨读 0.6.0(安卓)
这次把「高级书源」真正跑起来了,顺手修掉三处误触与错位
上一版导入备份后很多书能用,但有一本《我在美国搞内战》点进去永远是「目录为空 / 请重试 / 换源找不到资源」。
用户说得很明确:这份备份他在 Legado 里读得好好的,导入墨读就不行。查下来不是备份的问题,是引擎缺了一整层能力。
1. 引擎:从「能跑表达式」升级到「能跑 JavaScript 书源」
那本书用的雨鹿小说书源,是 Legado 里最难的一类:
- 书源自带 39KB 的
jsLib,规则里只写一句@js:yuluNovelContent(java, source, result, baseUrl); - 这段 JS 内部用
java.ajax/java.connect自己发请求,用 MD5 拼签名,用 AES/CBC 解密正文; - 目录走
ruleBookInfo.init先解密详情页,再把解密结果当 HTML 喂给 CSS 选择器; - 还会
source.get/put记住域名和正则缓存。
之前的引擎只把这些当成「不认识的字段」丢掉了。这次补齐:
jsLib执行:把整段库new Function('java','source','scope','Packages', lib + ';return function(expr){...}')
编成闭包并按源缓存,同一本书翻 500 章也只编译一次。java对象:ajax/connect/get/post、md5Encode/digestHex、base64Encode/Decode、
hexEncodeToString/strToBytes/bytesToStr、createSymmetricCrypto、encodeURI、log。- 加密算法自己写:MD5、SHA-256、AES-128/192/256-CBC 全部手写(不引第三方包,安卓 WebView 里也能跑)。
AES 第一版往返是乱码,两个 bug:S 盒生成公式写成了x ^= x<<1 ...(那不是求逆),
以及最后一轮多做了一次 MixColumns。改成 GF(2⁸) 乘法逆元 + 仿射变换、循环写成for (r = 1; r < nr; r++),
用标准零向量66e94bd4ef8a2c3b884cfa59ca342b2e校准通过。 - 同步 HTTP:书源 JS 是按同步写的(
var r = java.ajax(url)),而浏览器的同步 XHR 不允许跨域。
网页端改走网关/fetch(window.__moreadHttpSync),书源自定义请求头用base64url(JSON)放进h参数透传;
桌面/安卓端仍走原生桥或同源同步 XHR。 Packages垫片:java.io.ByteArrayOutputStream、java.util.ArrayList、java.lang.String。- 另外修了
normalizeSource会把jsLib/header/ruleBookInfo.init丢掉的问题——
字段一丢,再强的引擎也救不回来。
真机结果:目录 582 章,正文 120 段正常显示。
2. 「继续阅读」其实一直在从第 1 章打开
书架点「继续阅读」调 openReader(bookId) 时不带章节号,函数里 ci == null 就取了 0,
本地进度完全没用上——一本读到 53% 的书,每次进去都回到开头。
改成 ci == null 时回落 progressOf(b.id).ci,并 clamp 到有效范围。
同一本书实测:进度 0% → 53%,打开耗时 30826ms → 1197ms(第二次命中章节缓存)。
顺带的加载提速:
- 打开书籍先渲染书名 / 章节名占位,正文到了再替换,不再白屏等抓取;
- 章节缓存写入不再阻塞渲染(先给用户看,再落盘);
- 正文请求超时 30s → 20s,失败更快给出「重试 / 换源」;
- 预取下一章 → 预取两章(读到末尾不用等);
- 网关加 keep-alive 连接复用:一次打开要连打 3~5 个请求,省掉重复 TLS 握手。
3. 三处误触与错位
| 问题 | 原因 | 改法 |
|---|---|---|
| 书架「从头开始」按钮显示不全 | hero 卡片 overflow:hidden 裁掉了 flex 换行后的第二行 |
.hero-actions 允许 flex-wrap,竖屏 hero 改 align-items:flex-start 并收窄封面 |
| 「从头开始」一点就跳走 | 没有确认步骤 | 新增 confirmAsk() Promise 弹窗,文案说明「原进度不会删除,随时能在目录跳回去」 |
| 阅读器底栏元素重叠、多出横向滚动条 | .rb-row2 固定单行 + overflow 裁切,393px 下「A− 16 A+ / 翻页 / 黑●○○○ / ⚙」挤在一起 |
行容器 flex-wrap:wrap + row-gap,分组 flex:0 0 auto,中间 spacer 吃掉剩余宽度 |
393px 真机度量(DOM 实测,不是肉眼):
[hero] 按钮 inside:true, inside:true
[confirm] open:true,点「取消」后 reader 未打开
[bottombar] rowH:95, scrollW:345 = clientW:345, overflowX:false, overlaps:[]
版本
0.5.0 → 0.6.0(versionCode 600),网页 / 安卓 / Windows 同一条版本线,
node build/version.js --bump patch 一处命令同步四处。