# Changelog 本项目(MoRealm 墨境)的变更记录。 格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循 [SemVer](https://semver.org/lang/zh-CN/) 子集。 每次发版前:把 `[Unreleased]` 中的内容挪到下方新版本号 section(标题为 `## [X.Y.Z] - YYYY-MM-DD`),然后 `git tag vX.Y.Z && git push --tags` 触发 `release.yml` 自动发布到 GitHub Releases。release.yml 会从本文件抽取对应 section 作为 release notes,section 缺失会构建失败。 ## [Unreleased] ## [1.5] - 2026-05-25 **重大更新**:精品 EPUB 排版引擎 + 翻页体验全面重做。 ### Notice - **仿真翻页(贝塞尔卷边)暂不支持 EPUB** — 阅读 EPUB 时请把翻页模式改为 平移 / 覆盖 / 滚动 / 无动画 任一项;TXT 仍可正常使用仿真翻页。 ### Added - **【重大更新】EPUB 精品排版引擎** — 精品 EPUB 的样式现在能正确渲染:圆角彩色文字框、段落背景色、边框、对话气泡描边光晕、行内小图、表格排版、标题大字号 + 间距、段落缩进对齐,视觉效果优化 - **EPUB 自带字体** — 书里内嵌的字体现在能自动识别并应用到对应段落,不再全书统一用系统字体 - **EPUB 整屏封面** — 包成整屏的封面写法现在能正确识别并撑满整屏;普通封面仍按原比例居中 - **阅读器搜索方向过滤** — 阅读设置新增「搜索方向」三档:全文 / 前向(只看当前页之前)/ 后向(只看之后),想跳回前面读过的某段时不用从未来章节的命中里翻找 - **「我的」页插画卡** — 阅读统计卡换成日夜各一张氛围插画背景(米黄日落 / 月夜书桌),统计数字叠在插画上 - **搜索页胶囊式输入框** — 放大镜 + 输入框 + 搜索按钮收进一个圆角胶囊,视觉更聚焦 ### Changed - **翻页引擎重做** — 覆盖 / 平移 / 无动画三种翻页模式底层重写,根治了滚动模式下跨章闪烁、空气墙、InfoBar 闪烁三大顽疾 ### Fixed - **滚动阅读真无缝** — 滚动模式下跨章自然切换,正文不再闪烁、不再跳一下 - **拖动进度条所见所得** — 滚动模式下拖动底部进度条时阅读区实时跟随到对应位置;之前只显示章节开头、松手后才跳 - **平移翻页向左滑跟手** — 之前左滑回前一页时左侧露黑底要等完全滑完上一页才出现,现在拖动过程中前一页就跟手露出 - **EPUB 封面按图片原比例显示** — 之前部分 EPUB 封面被压扁只占屏幕约 1/3,现在按真实长宽比撑到阅读宽度 - **横向翻页模式 EPUB 章节背景图显示** — 之前覆盖 / 平移 / 无动画下看不到章节级背景图,现在跟滚动模式表现一致 - **WebDAV 书架支持嵌套文件夹** — 之前子文件夹里的书看不见,现在递归扫描最多 6 层 - **竖排版可设阅读背景图** — 之前选了背景图切到竖排版不生效,现在正常显示 - **下划线全线型加粗 + 贴近文字** — 线粗跟字号成比例、Y 锚到字符底沿不再受行距影响;4 种线型在所有翻页模式下表现一致 - **老用户升级后新增的菜单项能看见** — 老版本保存过菜单配置的用户,升级后新增项不再被补成「隐藏」 - **搜索历史 chip 的删除按钮位置修正** — chip 高度自适应,文字垂直居中 - **书源规则编辑支持多行** — 所有规则字段允许多行输入和粘贴 - **书源 JSON 导入支持原始换行** — Legado 等格式书源 JSON 里带原始换行的规则不再报语法错误 ## [1.4] - 2026-05-17 ### Notice - **关于 Edge TTS(微软语音)** — Edge TTS 走微软官方接口,可能因网络环境 / 微软侧风控波动 / 频率限制等原因偶尔不可用。遇到 TTS 报错或无声音:稍候重试 / 换网络(4G ↔ WiFi)/ 或在阅读器 TTS 面板切到系统 TTS 引擎。 ### Added - **滚动阅读模式新引擎(默认启用)** — 固定 prev/cur/next 三章常驻 + 像素级滚动,从根上消除老滚动引擎的跨章跳章 bug(向上翻页连续跳几章 / 章序错乱)。功能与老引擎对齐:长按选词 + handle 拖动 / 8 项选区菜单 / 高亮 + 字色 + 下划线 / 字号 + 行距 + 段距 + 字体 + 字重实时生效 / 顶底状态栏 / 背景图 / TTS 段跟随 / 续读 + 书签跳转 / 章顶三角标记 / tap 已存高亮弹删除分享菜单。如遇到滚动模式有问题可在 设置 → 阅读 → 实验性功能 关掉退回老引擎。 ### Added - **azw3 / Kindle 电子书完整支持** — 个别现代 azw3 现在能正常打开,章节目录、正文、封面都对了 - **竖排版多了「章标在左」选项** — 设置 → 阅读 → 竖排版,可在「横排」「竖排(章标在右)」「竖排(章标在左)」三种间切换 - **空章节给清晰提示** — 遇到分隔页、版权页等没有正文的章节,显示「本章暂无内容」,不再大片空白 - **打开坏文件直接给错误页** — 0 字节占位文件 / DRM 加密的 Kindle 书会显示「文件损坏 / 不支持加密」,不再让 app 崩 - **导入坏文件直接拦** — `.epub` 后缀但内容是 0 字节 / 不是 ZIP 的文件在入库前被拒绝,避免书架占位卡死 ### Changed - **大文件夹导入显著加速** — 上千本书的导入从「数分钟」缩到「半分钟以内」,先秒进书架占位,后台慢慢补封面 / 元数据 - **漫画 / 小说自动识别更准** — 带几张插图的个别轻小说不再被误判为漫画 - **快速连点同一本书不再叠开多个** — 连点 5 次只进一次阅读器,按一次返回就回主页 - **关于页面格式描述清理** ### Fixed - **跨章节后音量键 / 顶栏按钮翻页失灵** — 章节切换后短时间内按音量键、按顶栏「上一页 / 下一页」按钮没反应,必须等几秒或退出重进。现在跨章瞬间就能按 - **仿真翻页(贝塞尔卷边)模式音量键能用了** — 之前在仿真翻页下按音量键完全没反应(只能手指点屏幕翻),现在音量键也能触发卷边翻页动画 - **仿真翻页狂按不再错位** — 之前在仿真翻页下快速连按音量键,动画期间多按的几次会偷偷改了内部页码导致下一次按键"按了没反应",现在动画期间多按的指令直接忽略,等动画结束再按就正常 - **EPUB 封面经常取错** — 个别精品书之前拿到版权页扫描 / 制作水印页当封面,现在按 EPUB3 标准识别真封面 - **滑动卡顿 + 莫名崩溃** — 内存吃紧时主动收缩图片缓存,配合更大的内存配额,漫画 / 大文件 EPUB 翻页明显流畅 - **EPUB 翻页黑屏(部分多级目录精品书籍)** — 跨章到「制作说明 / 内容介绍 / 人物志」等占位章时直接跳过阅读器渲染,导致中央区域既没图也没法点。改成空章生成一页带标题的占位,可以正常翻页穿过这些章节 - **EPUB 段落假空行** — 用 NBSP 等不可见字符填的"空段"之前被当有效内容渲染成空行,现在统一识别为空白跳过 - **大型精品 EPUB 解析(部分 69MB / 70+ 高清插图 量级)**: - 嵌套目录的父子层级保留:「人物志」类章节下的子节点不再平铺,按缩进显示父子关系 - 大图自动压缩入缓存,避免几十张高清插图同时解码引发的卡顿 / 内存爆 - 解码失败兜底,不让单张坏图把整章拖崩 - **PDF 自带目录识别** — 多级精品 PDF 之前一律按"每 N 页一节"硬切失去结构,现在优先用 PDF 自带 outline,层级缩进展示 - **阅读器亮度设置不再丢失** — 之前手动调亮度后退出重进会回到「跟随系统」,现在记得住 - **楷体 / 仿宋字体可视觉区分** — 阅读器字体面板加「未内置字体文件,当前为近似 fallback」提示,引导用户到「字体管理」导入真正的 ttf ## [1.3] - 2026-05-13 阅读体验 + 书源稳定性修复版本。 ### Added - 阅读器底部工具栏可自定义:长按进入编辑模式,拖动改位置,加号添加 / 减号隐藏 - 主题编辑器加「首页背景图」字段,每个自定义主题可以绑一张 - 轻量漫画模式:MOBI / AZW3 等图片书自动识别并切到漫画阅读器 - 划词下划线高亮:4 种线型(直线 / 虚线 / 点划线 / 波浪线)+ 5 色可选 ### Fixed - MOBI 格式解析问题 - 滚动模式上下滚动自动跳章 - 换源大多数返回空目录 - 校验书源过程中删源会闪退 - 校验完成可以勾选删除无效书源 - Legado 主题导入颜色异常(洋红 / 透明) - Legado「阅读样式配置」也能导入了:自动识别 + 拆为日 / 夜两个主题 + 导入提示 - 跟随系统主题打开开关后不立即生效 - 阅读设置「左侧轻按」改完不生效 - 阅读器工具栏加号被遮挡 + 颜色容易被误以为不可点击 ## [1.2] - 2026-05-10 UI 全面重设计版本 ✨ 聚焦视觉重构、阅读体验细节、若干长期 bug 修复。 继 1.1 稳态优化后,1.2 把首屏书架、tab 栏、日志、进度条、搜索结果几大视觉重灾区 全部按 Material 3 Expressive 重做了一遍,体感"焕然一新"。 DB schema 不变(兼容 1.1 数据库直接覆盖升级)。 ### Added - **竖排版 Phase 1** 排版引擎层加入 `Axis` 抽象 + `vertical/` 渲染目录骨架;EpubParser 已保留 `` 振假名标签 + `readingDirection` 偏好(实际 UI 入口在后续版本接通) - **首页书架"我的书架"标题行** 在「继续阅读」卡片下方,左标题右双按钮(排序 + 切换视图),与 顶栏 greeting 形成清晰视觉分隔 - **顶栏副文本显示今日阅读时长** 「今日已阅读 X 小时 Y 分钟」替代原"享受阅读时光",从 ReadStatsRepository 取当天数据 - **搜索结果来源标签 chip 化** 文本源 primary 容器、非文本源 error 容器;与 SourceTag 视觉系统统一 ### Changed - **进度条全新设计** 阅读器底部进度条填充段从「嵌入式」(左圆角右直角)改为「独立胶囊」(两端都圆角)+ 横向渐变(亮紫 → primary),凸出立体光感 - **Tab 栏(PillNavigationBar)全新设计** - 半透明胶囊 surface alpha 0.62 → 0.88 + 顶部细高光 + 软阴影 + spring 滑动 dot 指示器 - 选中 icon glow 软色 radial brush 圆 + 弹性按压(spring scale 0.92 ↔ 1.0) - 性能:state 读下沉到 placement / render 阶段,避免 60fps 重组;brush 用 drawWithCache 缓存;动画期间 0 次 GC - **日志屏 UI 全新设计** - 每条日志第一行重排:`[Level chip 底色加粗] + Tag(SemiBold) + Spacer + Time(Mono 右对齐)`,扫日志视觉重点前移 - WARN 及以上的 message 文本染 level color,INFO/DEBUG 保持 onSurface - 删「详细日志记录」开关行(无用) - **阅读控制栏重排** 进度条上、按钮下;按钮容器 32dp → 44dp(接近 Material3 标准触摸目标 48dp);章节标题与进度去除分隔符「·」避免误判同级 - **顶栏 / overflow 按钮整理** 排序按钮从顶栏移到「我的书架」标题行;overflow 内的「切换视图」也移到标题行;同一动作单一入口 ### Fixed - **滚动模式当前页号自动更新** SCROLL 模式底部 InfoBar 的 `page / progress / page_progress` 三个 slot 之前硬编码 `pageIndex=0, pageCount=0` 全 fallback 到 chapter_progress;现在从 LazyScrollSection 首段 charPos 反查 `TextChapter.getPageIndexByCharIndex(charPos)`,跟随滚动 60fps 实时更新 - **音量键翻页未生效修复**(commit `6c4087c`) - **仿真翻页快翻"走三步退一步"**(commit `9bd4a56` "fix(reader): 仿真快翻 base race") - **个别书源闪退修复**(多个 commit;含 P0 书源补齐 + AnalyzeRule WebJs 模式接通 BackstageWebView) - **首装时主题跟随系统暗色态**(commit `d071ccc`) - **拖动滑块时菜单栏自己消失** `onSeekFullBook` 内 `hideControls`(commit `ecf1312`) - **拖动滑块改 conflate + 单 worker 串行避免章预览风暴**(commit `d7f4c10`) - **注/批 SVG 超大字 + 拖动期间 sliderValue/thumb 分裂**(commit `3091cd8`) ### Performance - PillNavigationBar dot offset / scale 从顶层 `by` 委托改为 lambda 内读 State,每次动画 invalidation 只触发 placement/render 阶段,跳过 composition + measure + layout - PillNavigationBar dot glow / icon glow 的 Brush 用 `drawWithCache` 缓存到 size 变化前,60fps 期间 0 次 GC ## [1.1] - 2026-05-07 稳态优化版本 🌿 对照 1.0 正式版,集中处理一批阅读体验、滑块手感与稳定性短板。 ### Added - **正文支持目录链接跳转** 章节内引用其它章节的链接可直接点开 - **书架视图模式持久化** 列表 / 网格切换持久化到 DataStore,重启 App 保留上次选择 - **关于页"贡献者"入口** 基于 `assets/contributors.json` 列出社区贡献成员,含维度标签 / 加入时间 / 链接,配合根目录 `CONTRIBUTING.md` 入榜规则 ### Changed - 「一键还原」从「轻还原」扩展为完整出厂:覆盖颜色 / 字体 / 字号 / 行距 / 段距 / 边距 / 翻页方式 / 翻页动画 / 屏幕方向 / 划词可选 / 繁简模式 / 状态栏 / 章节名 / 时间电量 / 屏幕亮度 / 音量键 / 耳机键 / 4 个 tap zone / 6 个 header & footer slot / 标题对齐 / 阅读区背景图 / 选区菜单顺序;5 个内置预设(preset_paper 等)一并刷回出厂参数 - 书名按数字自然排序,「第2章 / 第10章 / 第11章」不再被字典序排成「第10章 / 第11章 / 第2章」 - 「收纳」菜单语义调整,更贴近用户对该入口功能的直觉 ### Fixed - 拖底部进度条松手 thumb 不再先弹回再恢复 — seek preview 延迟到 ViewModel 真值流到目标值后再清 - 上下 / 左右 / 段距 slider 松手「弹回再回来」消失 — preview 改为等 StateFlow emit 到目标值再清空 - SCROLL 模式同章 reload 走轻路径 — 拖底部进度条到当前章不同位置不再清窗口重 fetch - SCROLL 模式间距实时 — 上下 / 左右 / 段距 slider 实时反映到正文(ChapterWindowSource.relayoutAll 用最新 layoutInputs 重排所有已加载章节) - 阅读器顶栏 top bar 间距过大问题修复 - 连点繁→简→繁 章内位置不再累计回退(anchor 锁 + 2s 清) - 并发繁简切换造成「切完又变回去」修复(Mutex 串行化) - 繁简转换异常不再静默吞错(s2t / t2s 失败时打 warn 日志) - 全文搜索闪退 / 书内搜索修复 - 部分书源乱码修复 - Legado 数据移植闪退修复 ## [1.0.0] - 2026-05-04 首个正式版。基于 Jetpack Compose + Material 3 重写自定义阅读渲染层(Canvas 录制缓存 + 仿真 / 滚动 / 滑动 / 覆盖四种翻页),对齐 Legado 书源生态,附带成熟的 TTS / WebDav / 批注体系。 ### Added - **本地书** TXT / EPUB / UMD(含 EPUB 章节预缓存、首章预热、缓存失效策略) - **网络书源** 兼容 Legado JSON 书源;五种解析模式:JSoup/CSS、XPath、JSONPath、JS、Regex - **TTS 朗读** 系统 TTS / Edge TTS / HTTP TTS 三引擎;自定义朗读规则、章节切换通知栏 MediaStyle 控制、章节预渲染队列 - **主题与排版** 自定义字体、行距、段距、背景图、日 / 夜模式独立设置;五套预置阅读样式 - **批注** 高亮 / 书签 / 笔记;段级 mini-menu 反查 - **WebDav 同步** 进度 + 阅读统计 + 可选完整数据 - **后台书架刷新** 进入书架自动 upToc 检查新章节,"N 新"角标 - **书源一键检测** 4 步检测单例,错误持久化到 BookSource.errorMsg - **检查更新按钮** 「我的 → 关于 → 检查更新」拉 GitHub Releases API - **CD 自动发版流程** `git tag v*` 触发 `.github/workflows/release.yml` 自动校验 tag、抽取 release notes、跑测试、签名打包、附 APK - `CHANGELOG.md` + `docs/release-setup.md` 发版手册 ### Changed - `.github/workflows/ci.yml` LICENSE 检查改为「GPL-3.0 或 Commercial License 声明」,匹配双许可证模型 - 进度持久化迁移到 StateFlow snapshot 流(`combine + distinctUntilChanged + debounce(300ms)`),翻一页的 saveProgress 调用从 5 次合并到 1 次,连带 WebDav 上传频率同步降低 3-5 倍 - AnalyzeByJSonPath 把 `Missing property in path` 与 `No results for path` 同等降级为 debug,减少日志噪音 ### Fixed - 仿真翻页 `0%→2%→0%` scroll 反弹 — 经 debounce 自然吞掉 - 单一坏书源 JS 规则失败把 worker 钉死 7+ 秒 — `(bookSourceUrl, scriptHash)` 连续失败 ≥ 5 次 + 30s 内直接短路熔断 - PageTurnFlicker 分页流式产页时同 key 连发 19 行 SKIPPED 日志 — 1s 节流 + 累计被压制次数 ## [1.0.0-alpha1] - 2026-05-03 ### Added - 首个 alpha 版本(基线)。功能集合见项目 README。