交流群 有bug 或者建议可以加入 1004372141 主要优化听书体验
好用的话,点个 star,谢谢啦
阅读C 功能排期 https://docs.qq.com/doc/DVkxsQVpqWk1tV05S
阅读C 不做功能 https://docs.qq.com/doc/DVkFjc0tWWW1VSnZB
阅读C Bug排期 https://docs.qq.com/doc/DVmtiSHZza1VPZWdG
交流群 有bug 或者建议可以加入 1101873338 主要优化听书体验
好用的话,点个 star,谢谢啦
阅读C 功能排期 https://docs.qq.com/doc/DVkxsQVpqWk1tV05S
阅读C 不做功能 https://docs.qq.com/doc/DVkFjc0tWWW1VSnZB
阅读C Bug排期 https://docs.qq.com/doc/DVmtiSHZza1VPZWdG
因为做了有声书和普通小说的界面融合,所以有声书源也可以用userhtml添加评论按钮之类的。 考虑到大量书源还是老标准,所以支持同一书名、同一作者的书,从普通小说带评论的版本把评论提取出来,添加到有声小说对应的段落里。
建议书源给每一段都加上评论泡,即使回复为零,因为本阅读C支持回复为零的评论泡自动收纳到长按文本悬浮窗中的评论按钮,可以实现任意段落,主动发评论。。不加也行,不加我也适配了。无泡段落也走 TextActionMenu 已有的段评按钮,入口处把泡的信息解析/合成出来,接入现有链路。
看书评,回/发书评章评段评,无评论段落主动评论,书评标记-神评,有声书源评论支持
听书AI音色,升级音色(成熟大叔 多角色),真人音色
发现页,书架同步
看群聊信息 发群聊信息
关注信息,收评论点赞回帖,回评论点赞回帖
- 公开版(包名
io.legado.app.c)正式 APK 使用仓库根目录signing/debug.keystore签名,不使用 SDK 自带的 debug 签名;官方证书 SHA-256 为70:CB:88:CA:1F:73:79:E4:7D:8F:42:57:A0:A8:B6:07:BF:BC:FA:53:0C:78:D6:08:2F:2D:D9:B5:CD:E3:89:5C,可用apksigner verify --print-certs核对。 signing/只存于自有仓库,不进入公开仓库源码(发布时剥离);外部从公开仓库编译公开版时自动回退 SDK debug 签名,可正常编译安装,但签名与官方版本不同,不能与官方版本互相覆盖安装。- 自用版(包名
io.legado.app.dev)沿用 SDK 自带 debug 签名。
备份与恢复
- 备份打包清单只含实际落盘文件,空表不再导致整次备份失败;备份加密失败即中止,不再写出半加密包。
- 恢复 DB 段整体事务化,任一步失败整库回滚,杜绝半恢复态;损坏的备份条目直接报错中止,不再静默跳过。
- 恢复书籍按身份(书名+作者+媒体类型)收敛,两台设备选了不同书源的同一本书不再出现重复条目;配图按最终落库重映射,跨源配图丢弃。
阅读进度同步
- 云端进度拉取区分“云端无文件”与“拉取失败”,网络抖动不再用本地旧进度反向覆盖云端新进度。
- 下载成功但内容损坏的进度文件不再被当成无进度;数字字段严格校验,错误类型不再被静默归零。
- 阅读进度仅在上传成功后推进同步水位;“拉取/覆盖云端进度”菜单项改常驻,不再时有时无。
日夜切换
- 日夜间切换整体修复,夜间覆盖与后续界面解析始终同步;阅读页跟随系统日夜翻转就地刷新,不再重建。
朗读
- 朗读跟随四点修复:确认切换后短路防双击拽页、翻页动画中不跟随、跟随进度落库、滚动模式不重置页偏移。
- 朗读服务启动改为串行准备并在主线程确认令牌,关闭旧请求压掉新请求状态的竞态;书源音频速度非法输入改为提示不再崩溃服务进程。
- 朗读悬浮窗非法位置改为清除陈旧避让区并重算,不再崩溃或残留避让。
评论
- 评论楼中楼兜底强展:结构定位加文本兜底两段式展开,防重入标记,连续无新展开即收口。
- 阅读刷新真正提交评论下载任务,不再只打待刷新标记等自动下载顺带消费。
换源
- 换源对话框点击当前书源行改为 toast 提示,不再静默无反应;书源已被删除时提示并返回,不再无反应。
- 批量换源书籍与目录原子保存,补删旧记录,不再残留重复书;同址更新不再触发级联清空章节。
主题与设置
- 日夜同名主题按名称加夜间标志双键匹配,不再互相覆盖丢配色。
- 偏好行文字明暗按卡片实际绘制表面判定,中灰主题不再白字配浅卡。
其它
- 本地书 Mobi 描述符统一关闭,解析失败不再滞留文件句柄;文本目录并发补锁;截图迟到回调回收位图;同书址刷目录改走更新,保留章节与快捷入口;删除 4 处已证伪的死代码与零引用字符串。
评论数据分页抓取与下载控制
- 评论下载接入分页抓取并拆分各阶段独立控制:数据接口支持 idea_comment 段评及楼中楼分页,章评、书评自动选择网页快照,可选强制数据接口或网页快照,执行失败不自动切换引擎。
- 新增评论下载设置:评论数据、楼中楼、离线资源、网页快照页面、快照重处理五路并发配额,评论/回复每页请求数量、网页稳定检测间隔与确认轮数、各阶段超时、请求失败重试次数与退避方式(固定/线性/指数)均可调。
- 新增下载要求开关:头像、评论图片、样式表、字体失败即标记部分快照,可关闭;支持复用接口内嵌完整回复与已缓存公共资源。
- 书源新增评论数据协议声明(snapshotProtocol:留空自动识别,idea_comment 支持段评及楼中楼)。
评论缓存管理
- 状态异常的评论章节显示失败重试按钮,可单独重试。
评论缓存管理优化
- 缓存管理加载复用正文清单并建立评论轻量索引,修复评论加载中进度条引用与缺少状态评论快照无法展示的问题。
- 缺失状态的评论章节进入普通重试链路;移除评论资源总量门槛并正确传递缓存取消;修复评论状态弹窗销毁后协程访问失效视图。
- 自播媒体缓存占用存储时允许删除,不再要求完整章节计数;离线评论快照弹窗直接展开,避免发送栏被折叠裁切。
TXT 与 ZIP 导出重构
- 统一 TXT 与 ZIP 完整导出及事务保存,重构为尽力导出:单条失败不阻断其它已缓存内容,TXT 末尾或 ZIP 内置「导出报告.log」记录计划/导出/未导出数量与失败原因,导出结束显式报告。
AI 对话与 Agent
- 关闭 Agent 时保留普通 AI 对话;修复普通 AI 对话系统提示词断裂与内联思考块正则崩溃。
- 出厂默认添加 local-core 第二供应商,无默认模型的老机器自动补齐。
AI 思考过程实时横条
- AI 回复期间思考过程以实时横条展示:流式跟尾冒字加扫光,可展开查看,结束后永久保留。
AI 创作接入 Local Dream 本地画图(新功能)
- 新增内置本地画图供应商 Local Dream:连接本机画图后端,无需鉴权,模型由后端启动时选定,支持 SSE 流式响应解析。
- 纯文生图请求自动省略图片字段;参数补全支持重绘幅度、画面比例与 OpenCL 加速开关。
- 用量总计卡首行改为英文格式:
N-Turn N-Step | LLM-x Tool-x。
Agent 数据治理
- 按版本门销毁旧 Agent 数据,移除单行大小限制。
可热更新 JS Agent(新功能)
- 落地全插件式 Agent 核心:完整工具调用与上下文管理,支持 MCP 与 Skill,内置 MCP Server 对外开放,插件可热更新。
- 统一 MCP、陪读记忆、运行诊断与迁移备份;插件快照不可变、运行状态原子更新。
- 支持记忆系统、联网工具、书架整理、全文搜索等 19 个内置 MCP 工具。
AI 聊天体验重构
- 阅读页问 AI 悬浮窗与大界面统一为同一套会话,支持全屏跳转;悬浮窗对齐大界面的模型显示、更多菜单、空态、输入状态与历史操作。
- 新增提示词注入与工具调用折叠卡;上下文注入卡只显示真实存在项并全文呈现。
- 每轮回复下方新增可折叠用量统计与会话总计卡;口径修正:轮为会话轮数、步为模型请求次数,只在总计卡显示;输出速度按请求总时长计算,修复静默思考导致的虚高。
- 上下文治理:历史硬保留预算默认 10K 可配置,默认仅注入核心工具、工具目录按需加载,超长工具结果留头尾剪枝,工具模型名改为可读 ID。
- AI 对话菜单新增导出对话:info、协议消息与运行事件全量原始 JSON 经分享面板存取,全事件保留并流式写入,不再丢弃数据。
- 阅读页问 AI:选中正文改为预填输入框,等待手动发送。
修复
- 修复关于页更新日志、空历史开局、全屏 AI 新对话、Agent 迁移悬空选择等多处崩溃。
AI 创作配置可靠性
- 升级后 AI 创作配置按版本整体重置回出厂,仅保留 API 密钥、名称、地址与模型选择;启动硬自检全部 JSON 配置,损坏自动回出厂并弹窗汇总。
- 内置供应商出厂新增参数自动补进存量配置,老参数不动。
- 供应商新增多模态开关(默认关闭):无多模态能力时图片自动转文字占位,有图标记规则进提示词库按节路由追加。
创作卡片编辑器升级
- 创作卡片改用 Vditor 即时渲染编辑器;提示词页新增插图入口与发送图片分辨率设置。
- 插图弹窗支持选版式与总高度,多图按宫格表格排框;排版备注每图四宫格各写各的。
- 生图/生视频链路打通图片输入,出厂请求模板补图片输入位置,生图补随机种子、视频补请求编号;生成媒体三处菜单加「插入」。
- 分镜、选角、设想各走独立请求体模板,缺位明确报错;图片/视频请求模板显示名统一改为「请求体」。
工作流
- 插图与缓存管理新增「查看工作流」:只读全屏脱敏 JSON;MD 查看统一 WebView 预览,卡片支持保存 MD 连图。
- 工作流补记 LLM 返回,文本窗口脱敏,查看语言修正为 source.js 修复高亮崩溃。
管理交互
- 供应商管理改短按设当前、长按编辑,删除收进编辑页;模型与 MCP 管理同规则,MCP 合并为单一管理入口。
AI创作
- 存量参数值升级时全量消毒重置默认值,读取时失效值回落默认不再崩溃。
- 新进入创作界面时清空提示词页下框最终提示词。
- 修复预览页返回跳到不存在的 page2 导致空白异常,改为回提示词页。
- 插入媒体备注预填内嵌工作流 JSON 完整原文,不再只提取 prompt。
修复
- 文本选择菜单按内容宽度收缩并居中,不再占满整窗。
聚合主页(新功能)
- 新增聚合主页:移植自主页聚合版,UI 按本项目设计语言重新实现;主页改为模块化卡片(榜单排行、书源发现等),支持在模块管理中配置。
- 聚合主页新增切换布局与源模块详情页两 Tab 结构,对标聚合原版交互。
- 模块管理完善:模块支持可编辑布局配置与拖拽排序;书源发现页「选择分页 / 选择分类」两个入口保持纯按钮,不再回显选中态。
外观主题与套件
- 主题导入支持上游外观套件包:识别
appearance_kit.json并分发可导入组件。 - 外观套件配置层继续落地:顶栏与封面集合配置接入,套件导入即全组件生效。
- 兼容上游外观主题扩展字段:面板背景图、扩展表面色与弹窗透明度接入统一内核。
- 主题管理支持删除应用中的主题:删除时该模式外观恢复默认并清理主题包。
评论快照
- 楼中楼默认收起:查看端统一重置抓取时的穷尽强展态,点击 toggle 再展开。
修复
- 正文长按菜单:修复弹窗高度多出空行,编辑入口改为行尾图标按钮。
纸模糊背景(新功能)
- 新增「纸模糊背景」开关(默认开启):弹窗与菜单的模糊背景只取纸面(页面背景与 EPUB 页面背景),文字、图片、书签标签、气泡等一切纸上内容均不参与模糊;模糊采集改为离屏渲染无文字版本(隐藏全部 TextView、阅读页自绘路径跳过文字,只保留背景与图片),按模糊采样率只缩一次再模糊放大,关闭时维持原 PixelCopy 路径。
- 弹窗叠弹窗:玻璃表面登记独立窗口根视图(弱引用),上层表面离屏采集时按显示顺序叠画下层弹窗窗口本体(各自隐藏文字、跳过请求方自身窗口),下层弹窗面板随宿主内容一起参与模糊;叠画时剥离下层玻璃面 tint 与模糊底图,消除叠层弹窗透明度逐层变实心与光晕。
- 重构模糊采集层级,杜绝浮层自采集;修复模糊层在窗口挂载前登记导致的崩溃;修复页内朗读小面板被采集进模糊背景形成深色团块的问题;纸模糊下层只合成玻璃表面。
发现页
- 长按源名弹出完整分类弹窗(继承上游特性)。
- 修复大分类误判:纯符号装饰分隔条目不再当成大分类标题;纯符号与超长标题的异常大分类改为「分类N」分组收纳子类,不再丢弃。
- 发现页布局默认值改为三宫格(未配置时默认三列网格)。
段评与评论快照
- 段评支持任意段落:无泡段落接入选区菜单段评按钮,走既有链路打开评论页,零评论段可直接发评;选区菜单与收纳泡路径统一回填真实段落原文,修复零评论段评论引用卡错文。
- 评论快照补全:穷尽展开楼中楼并兜底强展,新增章评 / 书评 tab 补充快照(每章、每本各一份),快照查看端离线切换章评 / 书评 tab 与楼中楼收展,开关关闭时剥离回复层。
- 新增缓存评论楼中楼开关:快照默认包含回复层,关闭后段评 / 章评 / 书评快照均不含楼中楼。
- 评论快照增量下载:重复下载已缓存章节时增量补充新增评论并合入原快照,不翻页重抓历史、不整页覆盖、不删除已缓存评论;合并或抓取失败一律保留原快照。
离线评论(新功能)
- 新增离线评论模式:阅读菜单新增「离线评论」开关,快照 / 在线评论弹窗自动拦截记录段评章评,「发送离线评论」无头回填回放走书源原通道,支持导出与清除(二次确认)。
- 快照接管表情点击(读取快照保留的文本码插入输入框并联动字数计数),点击发送立即提示开始条数。
图标与默认背景
- 切换图标新增「图标8」并更换默认启动图标;修复自适应前景自引用 mipmap 导致桌面图标加载无限递归的缺陷,修复切换图标弹窗在中文环境数组越界崩溃。
- 日间 / 夜间分别内置新默认壁纸并安装到各自偏好,旧默认背景路径自动迁移后删除。
其他
- 关于页整合日志设置项:新增保存崩溃日志,迁入普通日志模块并调整命名。
- 移除开局三个弹窗机制(隐私协议 / 版本日志 / 设置本地密码)。
- 正文长按条:「添加书签」改为「书签」并缩减按钮宽度,编辑入口改为普通菜单按钮。
修复
- 修复按住不松手来回滑翻页被下拉书签手势误抢导致卡死:改为按事件步长判定方向,横向主导即重置下拉纵向锚点,真下拉行为不变。
- 修复仿真翻页来回拉动时卡在中间:新按下中断回拉动画时无条件重绘,不再停留在中断瞬间的半卷页帧。
高亮规则(新功能)
- 新增高亮规则:按正则命中的正文文字在排版层自动应用显示效果。效果体系与书签一致(单/双/波浪下划线、高亮、文字变色、删除线,可组合、逐效果独立设色),仅作显示、不影响书签;作用范围与替换规则一致(scope / excludeScope 书名或书籍 URL,全局生效);多规则命中效果叠加,按排序先到先得。数据库升级至 113(新增
highlight_rules表)。 - 预置阅读 NG 默认对白规则(对白-波浪线启用、对白-高亮停用)与阅读 Max 内置 11 条规则(书名号高亮、括号标注、标题强调、心理活动、旁白说明、重点强调、诗词引用、省略停顿、数字金额、英文单词、时间日期),版本门控一次性导入,默认全部关闭,不覆盖用户自建规则。
- TXT-ZIP 导出 / 导入支持高亮规则外挂数据:按该书 scope 命中的启用规则写入压缩包,导入时同步还原规则,显示效果在排版时重新计算。
- 修复新建高亮规则对话框闪退自关导致「+」无反应;预置数据补齐于
DefaultData,与既有默认规则互不重复导入。
正文长按条搜索
- 正文长按条新增「搜索」动作:内嵌 WebView 搜索面板,支持自定义搜索引擎管理与多语种搜索。
修复
- 修复背景图路径失效导致书籍详情页崩溃:三个背景读取口收敛到统一解析入口,文件不存在一律视为无背景,不再抛异常。
- 修复有声书返回阅读页时朗读目标章越界导致的崩溃:失败降级为保持当前章并打日志暴露,不再主动抛
IllegalStateException。
恢复内置四款 NG 厂商 TTS 引擎
- 导入 NextEdge / MiMo / StepAudio / Mossland 脚本资产并注册进默认内置脚本,两个模板示例保持不内置;V2 朗读引擎默认内置收敛为仅 MultiTTS 转发器,删除脚本选项与内置发音人示例模板资产。
朗读引擎选择界面
- 恢复原版斜角飘带标签:SYS/HTTP/V2 徽标回归右上角 45° 飘带(红底白字),修复曾按主题色染色导致浅色主题白底白字不可读的问题;编辑/删除按钮整体左移避开飘带红条。
AI 创作视频
- 视频供应商默认内置只保留智谱(默认模型 cogvideox-flash);图片/视频添加供应商描述统一改为内置免费供应商。
- 创作视频改用内置播放器播放:查看器内嵌 ExoPlayer 视频页与正文视频一致,预览界面与缓存管理创作页点开视频不再走图片查看器/系统播放器。
AI 创作
- 卡片详情多选确认改为「添加」:选中卡片加入组合素材对应分区,添加后组合素材页即时刷新。
- AI 绘画生成数量持久化:经会话参数记忆恢复上次值。
TTS 引擎 V2(对齐 NG 引擎体系)
- 分八步落地:引擎数据模型与能力注册表、引擎/发音人双表存储(DB 110→112)、脚本合成客户端(HTTP/WS/SSE、本机转发器、流式音频)、TTS 引擎管理界面(列表/启停/选为当前引擎/导入冲突处理/导出/删除/恢复经典选择)、朗读管线接入 V2 引擎与热刷新路由。
- 选角绑定泛化为(引擎, 音色):AI 角色弹窗两段式先选引擎再选音色,旁白/对白池与全局兜底接入引擎维度;V2 脚本引擎接入 AI 分角色朗读按段路由合成。
朗读引擎选择与路由
- 朗读引擎选择统一收敛到经典对话框:脚本引擎并入 ttsEngine 单选,废除 V2 活动引擎全局覆盖。
- 朗读引擎选择页长按系统默认跳转系统 TTS 设置界面。
AI 创作配置体系重构(图片/视频双体系)
- 图片/视频拆成两套对称独立配置体系:供应商变量定义(含 style)+ 路由,提示词库改为名字+纯文本全局结构;补齐视频真实出片链路(提交/轮询/mp4 落盘/首帧预览/保存相册),视频支持按填写数量分批并发生成。
- 新增图片/视频供应商管理(内置硅基流动与智谱,测试连接真实请求),供应商与模型管理移至 AI 设置分类顶部;彻底重构供应商路由、提示词模板与最终提示词链路。
- 预览页返回改为体系内逐页回退(预览→提示词→素材组合→模式页);AI 创作悬浮窗应用内所有非预览界面常驻:各界面自动挂载,预览页前台隐藏、退出恢复,叉叉关闭后下次生成重新出现;悬浮窗状态只跟最新任务。
- 连线组改为组制显示:连线组命名 A组/B组 并随成员加入保持稳定,长按已连线分区可把组外成员并入该组。
- 高级 AI 设置统一控制创作分组显示;AI 超时默认值调整(生成超时 120→300 秒,思考打断默认不打断)。
- 修复:AI 角色弹窗 MaterialButton 主题校验崩溃、占位符正则初始化崩溃、流式思考打断异常竞态、AI 创作设置假复用开关误导。
AI 分角色
- AI 选角新增拆分超长章节:默认开,章节字数上限默认 5000 字,超限章节按段落边界拆成多次请求;自动选音按当前引擎门控,不支持多角色的引擎明示报错。
- 修复 AI 选角引擎选择对话框直接显示引擎配置全字段转储的问题。
朗读
- 拖动朗读进度条等效回原进度:seek 命令携带显式传送标记,显示侧复用「回原进度」原语对齐(段落/时间形态,含回退与暂停态)。
- 修复冷启动首句引擎 NPE 后同会话 QUEUE_ADD 重试投递黑洞导致永久无声:异常时恢复为销毁重建 TTS 客户端重试当前段。
TXT-ZIP 导出与日志
- TXT-ZIP 导出支持附带 TTS 音频缓存,回导按清单重算缓存 key 落位。
- 日志模块显式化:删除通用兜底模块,新增备份/视频/应用模块与未分类垃圾桶,全部日志强制归属可勾选模块;关于页保存日志按钮改为导出勾选模块过滤后的普通日志 TXT(落备份目录,替换原 logs.zip 打包)。
AI 分角色朗读
- 数据层:Room v110 新增正式角色、临时角色、角色音色绑定三表与迁移;分镜结果按书落盘缓存,支持按书自动化开关。
- 选角核心:移植分镜归因 Helper 与选角 Coordinator——AI 按分镜把正文归因到角色,严格校验 + 二分重试,落选角色收编为临时角色并自动选音。
- UI:朗读弹窗新增「AI 角色」入口,两页总弹窗(设置 + 角色管理)与角色编辑 / 批量分析 / 分镜缓存弹窗;AI 设置新增分角色分组。
AI 创作生图
- 生图链路:图片 API 配置与请求模板渲染、生成任务持有器(先批量后逐张 + 重试)、独立缓存表(v109 迁移)。
- 第三页生图入口与预览页(2/4 宫格、翻页、放大、长按保存);生成任务悬浮窗(椭圆造型、点开回预览、叉叉转后台)。
- 缓存管理新增创作项:三列宫格展示生成图片,长按多选、全选切换、上传、保存/删除。
- AI 设置创作分组新增图片 API 地址 / Key / 模型 / 请求模板 / 重试次数;内置默认供应商 opencode-zen 与模型 big-pickle。
- 架构调整:变量定义升为中枢(分组 / 类型 / 路由),请求模板轻量化为识别与内容仓库,参数全部点名引用,路由不命中直接报错不兜底。
正文长按条编辑
- 正文长按菜单新增编辑入口与配置弹窗,长按条支持勾选与拖动排序;默认不再包含词典与问AI。
- 新增暂存动作:选中文本一键存为 AI 创作选中文本卡片并挂入当前会话,不进入创作界面、不触发销毁;选中文本分区作用域默认改为一次性,支持暂存累积多张。
AI 创作一次性素材生命周期
- 「一次性」作用域落实为真正的一次性:关闭 AI 创作界面(叉叉、返回、系统返回键)即销毁临时分区全部一次性卡片并从当前会话摘除,无需手动点清空;应用启动时兜底清理上次进程遗留的临时分区卡片。
TTS 缓存收尾
- 在线(HTTP)引擎批量缓存支持单元级多线程合成(默认 8 线程可配,与朗读同源请求 / 校验),产物后缀按引擎诚实区分 mp3/wav。
- 修复在线引擎多线程合成提交丢失;speak 直播模式 QUEUE_FLUSH 空队列 NPE(MultiTTS)退化为 QUEUE_ADD 重试并去重 toast。
默认值调整
- 页首按段默认改为关闭;TTS-Wav 模式默认改为关闭。
AI 生图链路增强
- 生图默认接入智谱 CogView(cogview-3-flash),未配置不再报错;生图请求三级回退:批量 n 请求 → 直接并发(每批 3 路)→ 串行带重试兜底,部分返回不再误判为整体失败。
- 后台生图改为多任务并行:新请求不阻塞也不打断老任务,展示与提示以最新任务为准;预览新增一宫格并设为默认。
- AI 创作变量定义对齐智谱官方参数(图片 size 七档/quality/水印,视频 CogVideoX 输出模式/AI音效/分辨率/帧率/时长);AI 设置图片 API Key 下新增获取智谱 API Key 入口;删除内置 AI 供应商默认伪装请求头。
AI 创作连线与素材
- 连线改为分区级:长按分区名发起连线、点击另一分区名完成,素材按分区组合并输出,卡片不再参与连线。
- 素材库长按进入选择模式,底部弹出全选/删除栏,删除即同步摘除会话引用。
- 第一页参数记忆:变量与模式写入即持久化,重开界面或重启应用均恢复上次值,清空才重置。
修复
- 跨页复制:翻页前本页选区文本先入累计缓冲,复制时拼接已翻过页与当前页选区,不再丢失之前页内容。
- 正文长按菜单悬浮条宽度固定按窗口宽度计算,不再随菜单项变化反复改尺寸导致按钮跨行跳动。
AI 分角色收尾
- 新增复用当前 AI 模型开关(默认开启,隐藏独立分镜供应商/模型项,模型解析对齐 AI 创作和章节净化)。
- 修复收编链并加固分镜 Helper:别名链接生产落地、性别改判仅限 explicit 证据、同章生成互斥防双花 AI 调用、guest 不收编、消费合并角色 ID 归误建角色。
- 分镜缓存与角色管理收尾:清空缓存按书生效、缓存列表按 bookUrl 过滤、转正并入已有角色别名、删除正式角色解除临时角色链接。
TTS 缓存(新功能)
- 新增 TTS 音频缓存:契约层扩展 CachePhase.TTS(TEXT+TTS 合法组合),TtsCacheStore 数据仓库与共享参数解析,章节缓存删除挂接 delChapterCache。
- TtsCacheManager 合成执行器 + TtsWorkerAdapter/TtsCacheService 接入统一调度,通知投影「缓存TTS音频」。
- 朗读面板新增缓存按钮(紧邻主菜单),沉浸页本地 TTS 复用下载按钮,0 章分组折叠选章弹窗。
- 朗读设置新增缓存设置入口与命中维度勾选弹窗(语音、音色默认勾选);缓存包默认剪除 tts_cache,新增「包内 TTS 缓存」开关。
- 实时缓存:当前段三态解决(命中直播 / 在途等待 / 缺失即派发)+ 其后 N 段任务列表预取,开关依赖 TTS-Wav 模式,预取段数可配。
- 实时缓存单段合成超时看门狗(默认 30s,防引擎挂死永久阻塞),超时秒数加入缓存设置弹窗;新增独立日志模块 TTS_CACHE([TTS缓存] 前缀)。
TTS-Wav 模式
- 系统 TTS 先合成 wav 再自播,句长精确可知,跨页翻页跟随真实音频进度。
修复
- 修复朗读面板动画在 IO 线程启动导致的
Animators may only be run on Looper threads崩溃。
朗读架构收束:两个原语 + 跟随规则 + 派生脱节
- 朗读系统重构为「双击换段 / 回原进度」两个原语加一条纯函数跟随规则:显示永不被朗读事件拽向后退,"该跳才跳、回退不拽页"由单一单调性规则全覆盖;显示与朗读脱节改为派生事实现算,不再存储跟随状态。
- 朗读位置发布带 generation 防乱序,修复位置确认与页面跟随竞态、跨页段跳页直写显示进度等一批问题。
- 朗读红字高亮改为绘制期投影(
TextLine.isReadAloud),删除存储式高亮与补偿字段,修复跨页高亮残留、脱钩态高亮重绘、双击跨页段无红字等问题。
按页朗读拆分为两个独立开关
- 原「按页朗读」拆分为「强制追页」(翻页翻译成读新页第一段,视角永远在朗读页)与「页间分段」(跨页的段从页边界裂成两个朗读单元,边界绝对准);页首按段开关迁至朗读设置并明确命名。
预测换页
- 系统 TTS 引擎在页间分段关闭时按实测语速估算过界时刻,提前发布朗读位置实现预测翻页;语速改用上一句实测总时长滚动校准,修复预测永远被 onDone 抢先取消的问题。
- HTTP 引擎在流式无时长时用实测步长兜底被动预测,并补过界日志。
朗读起点与跟随修正
- 双击跨页段落恢复回到真正段首(复用全章段首解析,与页首按段同源);从本页读跨页段维持本页起点不回退。
- 朗读起点回退时开启跟随地板,补读到位前显示不跟随;用户主动上一章/下一章解除页面脱钩,视角跟随到目标章。
- 双击段落/从本页读恢复页面跟随,修复脱钩态读完当前页尾后不再自动翻页。
日志系统
- 普通日志按模块过滤:其他设置新增模块勾选弹窗,日志条目记录归属模块;删除「记录调试日志」开关,模块勾选即调试日志记录入口,默认全部关闭。
- 按架构链路布置朗读诊断日志,统一
[朗读]前缀并归朗读模块,覆盖操作层、位置发布、跟随决策、引擎与状态事件。
朗读起点与高亮修正
- 「页首按段」开关迁至朗读设置并明确命名,与按页朗读解耦:按页朗读翻页同样按此定位起点。
- 按页朗读开启时隐藏原进度/从本页读面板;从本页读跨页段维持本页起点,不回退到上一段。
- 朗读高亮按全局段落号标记,改主线程更新。
书架快捷键
- 新增轻量书快捷键与映射快捷键:支持在书架标记快捷书并放入合集条目,桌面快捷方式直达书籍。
- 新增书快捷键删除重置选项。
界面与截图
- 更新 README 截图并统一尺寸,截图表格固定列宽为等分,解决三列显示不齐。
音频 TXT-ZIP 导出
- 导出 TXT-ZIP 时按章节打包已具备的音频媒体,导入后本地直接可播,不再依赖原书源在线拉流。
- 导出不再隐式发起缺失音频媒体的下载,只打包已就绪(可播放)的音频章节,缺媒体章节明确跳过;导出进度显式化,SAF 归档成功保留发布结果。
- 音频归档章节产物与正文/字幕侧车、插图侧车对齐,替换导出包按章节配对,不再盲目整包替换。
离线缓存与媒体路由统一
- 缓存管理页与沉浸听书页的章节下载统一路由到媒体任务,不再落入正文缓存;导入的媒体不混入缓存,旧版正文缓存残留清除。
- 有声音频的媒体与字幕正文同生命周期管理,媒体产物契约化约束(含离线状态判定与共享提交入口接受批量章节索引)。
- 阅读页菜单中的「离线缓存」入口移除,统一收敛到缓存管理页。
评论缓存修正
- 阅读或书架刷新时自动下载评论的开关默认改为关闭(已有记录不受影响,可在评论缓存设置中重新开启)。
- 评论刷新下载收敛统一入口;有声书缓存页评论控件对齐、操作按钮精简。
- 修复导入评论快照资源的恢复与抓取/回收引用问题;孤儿回收 GC 基准 epoch 钉在排队时刻,堵死排队-执行间 ABA 误删窗口。
评论缓存设置与快照管理
- 阅读设置新增完整的「评论缓存」配置层级:「缓存评论」总开关(默认开),其下依次为「缓存评论头像」(默认开)与「压缩头像」(默认开,最大 2 KB)、「缓存评论图片」(默认开)与「压缩评论图片」(默认开,最大 50 KB)、「评论资源下载并发数」(默认 8,范围 1~32);上级开关关闭时下级选项自动隐藏。
- 评论快照资源库化:评论头像、图片不再以 Base64 塞进快照 JSON,改为独立资源库落盘——按最终内容哈希命名去重,相同图片全局å�
10000
ª存一份;快照内图片引用统一改走
review-resource://离线协议,断网也能完整渲染缓存评论,磁盘占用显著下降。 - 缓存管理页新增「评论快照」入口:按章节展示「成功 / 总数 / 失败」,失败章节可单独「重试」,也可一键「全部重试失败项」,只重试真正失败的章节;未开启评论缓存时给出明确提示。
- 评论缓存结束后台自动回收不再被任何快照引用的孤儿图片资源,缓存不会无限膨胀。
评论抓取执行器重构
- 评论快照抓取改为有界并发流水线:URL 解析单独限时,不再拖住整条抓取;页面加载 / 展开等低内存阶段全局最多 2 条并行;重内存阶段(HTML 收集 + 资源压缩写盘)固定并发 1 并独立计时,个别章节卡死不再拖垮整批任务。
- 通知进度绑定会话:正文与评论分别以本次目标章数为分母,主进度条只反映当前展示章节内部进度;多章节并发时进度按实际完成量原子聚合,不再互相覆盖、丢失更新。
听书播放页评论泡
- 新增「评论气泡反色」开关(默认开):书源评论按钮原图多为固定灰色系描边图标,在深色沉浸背景上几乎同色不可见,反色绘制后保持高对比;只作用于绘制,不动共享位图缓存。
下载 / 缓存架构收尾
- 后台缓存任务全部收敛到单一任务所有者
CacheCoordinator:正文、评论、媒体缓存统一经协调器提交 / 暂停 / 恢复 / 取消;业务状态统一归CacheTaskStore(唯一状态源),执行器只通过带 generation 的 lease 回报进度与结果。 - 完成架构验收与编译修复:正常执行完但全部失败的任务以「已完成 + 失败」收尾,不再伪装成成功;移除旧任务所有权与第二通知源,架构标准沉淀到
docs/重构下载架构.md。
书架融合(文字书评论 → 有声书字幕)
- 书架多选新增「融合」:任意选中一本文字书 + 一本有声书即可启动,不再要求书名 / 作者一致;融合把文字书的段落评论入口按字幕时间对应迁移到有声书对应段落。
- 融合结果存为独立 overlay,显示时动态合并、不覆盖原始字幕;单个有声书确认存在融合时启用「取消融合」;已融合的书重新融合时整本 reconcile、卷号保护、同位置幂等。
- 评论泡渲染到字幕行内、与段落文字同行;评论泡图片统一迁移为
data-legado属性形态,usehtml 块内评论图一并转换。 - 融合诊断:一次融合在 AppLog 只落一条多行日志(章节配对 + 每章匹配成败 + 统计),明确区分「本章无评论」与「有评论但 0 匹配」。
- 书籍改为按 bookUrl 区分,同名同作者的书不再互相覆盖。
评论缓存
- 批量缓存改为两阶段:先缓存正文、正文排版完成后自动进入评论阶段;评论抓取走独立前台服务,正文阶段不再被评论任务卡死,评论失败也不影响正文。
- 新增「评论打开方式」三模式:网络优先 / 快照优先 / 仅使用快照(默认网络优先);「仅使用快照」强制拦截所有网络请求,断网也能看缓存评论。
- 评论抓取提速:单章内按按钮并行抓取、去掉按钮间 800ms 强制等待、加载失败与资源超时快速跳过。
- 兼容书源 showBrowser 链路:抓取携带 preloadJs 并注入 JS bridge,showBrowser 带回的 HTML 直接作为初始页面;ajax 错误文本不再存为成功快照。
- 评论有效性判定改为结构判定,去除关键词黑名单——真实评论页含「登录 / 失败」等词不再被误杀成整章失败。
- 评论日志:每章一条可诊断详细日志(失败原因分类),列表只显示摘要、点击展开全文。
- TXT-ZIP 导出 / 导入支持评论:评论泡随正文进导出包,已缓存的评论快照一并打包;未缓存章节不再写 null 占位,导入时跳过占位章、按章节匹配恢复快照(不再按索引盲绑)。
- 快照主键改为章节 URL;章节删除连带清理快照;WebView 唯一释放;刷新评论时同步更新缓存快照。
缓存通知与离线缓存
- 缓存通知统一精细化:正文 / 评论 / 评论快照进度合一显示(如「正文 10/20 · 评论 8/20 · 评论快照 35/35」),进度条以本次目标章数为分母,并发抓取按实际完成量原子聚合。
- 缓存通知新增「暂停」「停止」操作;下载失败保留结果通知;正文缓存通知带进度条。
- 离线缓存页显示正文 / 评论双进度;有声书书名后加喇叭标记;保留章节范围弹窗。
- 正文 / 评论 / 媒体后台缓存任务开始收敛到单一任务所有者
CacheCoordinator(次日完成整体验收)。 - 预下载默认改为 0:小说与漫画的预下载章数兜底值由 10 改为 0。
修复
- 导入书源对话框不再被毛玻璃模糊藏起。
- 书源解析统一化,修复媒体通知标题为 null 的问题。
- 毛玻璃截图超时兜底,入口可直接进入阅读页。
- 沉浸听书页评论泡图片本地渲染,行内评论不再影响正文居中。
- 修复书源单引号 JSON 评论按钮漏判导致 0 可迁移。
听书页字体设置
- 显示设置下新增字体设置:正文字号(32~90px,步进 2,默认 50)与朗读行放大倍率(100%~180%,步进 5,默认 120%)双滑条实时预览,就地重排全部文字行。
- 字体设置性能优化:就地重排合并到每帧一次、字号倍率一次性读取、缩进测量去重;修复切章时旧字体重排回调失效的问题。
- 文字区顶部下移 7dp(竖屏),并新增上下文字亮度渐变效果(横屏只加渐变、不下移)。
书架返回球
- 书架拖动书籍时屏幕下方出现的"返回球"内新增两行蓝色提示「放回 / 主页」,明确拖动释放即可把书放回书架主页(合集页同样生效)。
沉浸听书页评论按钮链路
- 评论按钮结构化渲染:正文段落拆分为文本 / 评论节点,沉浸页复用源图与公共点击入口。
- 评论按钮交互修正:统一触摸分流命中气泡、按行坐标绘制原图、仅含评论的段落启用评论交互;命中测试与绘制共用同一套图片几何;评论气泡手势成对持有(按下即持有、落在同一气泡才触发)。
听书页章节名
- 章节名以朗读 chapterIndex 为准,目录取标题、正文未就绪不再退回书名;显示与正文一致(同走标题替换规则)。
- 听书播放页显示设置新增"顶部标题模式"与"下方章节名显示"开关(默认:顶部章节名、下方关闭)。
书源音频与字幕映射
- 音频正文与字幕映射显式化:乱序时间戳 LRC 绑定不再失败;usehtml 渲染行标记为非音频正文结构并送入显示。
- 书源音频绑定失败时回退纯字幕模式:保留字幕文本与时间高亮,异常书源不退化成字幕全空。
朗读页脚小面板(阅读页朗读交互)
- 朗读小悬浮窗支持收进页脚中央:新增"小悬浮窗停留时长"设置(默认 10 秒),"暂停 / 继续播放"和"原进度 / 从本页听"小悬浮窗连续无操作后自动收起,操作收进页底中央;"小悬浮窗放在页脚内"开关改为默认开启,开启时小悬浮窗在页脚内水平、垂直居中,关闭时贴在页脚上沿外侧。
- 页脚朗读动作直接生效:"原进度 / 从本页听"拆成两个入口直接显示在页脚中央,点击立即执行,不再先展开小悬浮窗;"暂停 / 继续播放"同样直接生效。
- 新增"隐藏当页小悬浮窗"、"隐藏跨页小悬浮窗"开关(默认关):开启后不显示临时小悬浮窗,操作直接以页脚中央入口呈现。
- 缩小朗读小悬浮窗并支持覆盖页底;默认在页脚显示朗读小面板。
朗读悬浮窗与菜单层级
- 统一朗读悬浮窗窗口宿主与切换状态:悬浮窗可覆盖朗读菜单、按菜单顶边避让,统一阅读菜单上下区域的朗读悬浮避让;朗读主悬浮窗与阅读页小面板互斥,避免出现两套重复控制。
- 收敛朗读浮层可见性发布时序到统一入口,补充菜单销毁时的悬浮避让清理;修复悬浮窗宿主 token 首帧时序崩溃、朗读面板首帧测量崩溃、朗读菜单
doOnLayout引用缺失等问题。
朗读封面旋转
- 新增"旋转朗读封面"开关(默认开)与"封面旋转一圈用时"设置(默认 10 秒):播放时朗读悬浮窗与听书页封面同步旋转,并统一两处封面的播放旋转状态。
墨水屏与主题模式
- 统一主题模式切换入口:自动 / 日间 / 夜间 / 墨水屏模式的切换统一走单一入口,界面设置与阅读器不再各自更新不同的主题状态源,避免切换后主题不一致。
- 墨水屏模式下弹窗表面统一不透明:墨水屏弹窗面板改走统一应用表面并叠加墨水屏边框背景,弹窗透明度设置在墨水屏模式下不再生效,画面对比更稳定;修复墨水屏状态下 Alert 弹窗透明背景的问题。
听书页
- 统一听书页文本渲染与点句跳转:移除第三方歌词视图依赖,恢复听书文本字号与居中样式,统一 TTS 当前段样式。
- 修复听书页空会话与朗读未运行状态下的播放按钮;修复听书页 Activity 启动任务标志。
- 新增"朗读跟随延迟"(默认 3000ms)与"朗读进度轮询间隔"(默认 500ms)设置。
- 修复听书正文居中偏移:展示前去掉段落首尾空白,避免正文整体偏移。
- 听书正文首行缩进按段落行数控制:正文段落实际占满 3 行及以上才加首行缩进,标题与短段落不缩进,窗口宽度变化时重新计算。
通知与订阅
- 新增通知权限统一申请(朗读控制与下载进度需要通知权限);修复音频缓存通知的章节进度显示,暂停时也展示当前章节进度。
- 修复默认订阅源升级竞态;新增"在设置中显示订阅页面"开关(默认开)与设置页"进入订阅页面"入口。
其他
- 收拢 AI 日志、应用日志、崩溃日志对话框的公共逻辑到
BaseLogDialogFragment。 - 修复 Markdown 图片拖动误触发文本选择。
- 移除"我的"页面的退出应用入口。
- 清理根目录一次性构建脚本与日志,删除失效的融合计划遗留文档与未引用的 static 目录。
有声小说与普通小说融合
- 统一阅读入口:有声书从书籍详情、目录和其他阅读入口进入时,默认进入普通阅读页,不再因为
book.isAudio被强制分流到另一套阅读页面;原有书源音频能力保留为朗读引擎的一种来源。 - 保留身份,统一体验:音频书与文本书在数据层明确区分,避免同名书互相覆盖;书架和列表用音频标记告诉用户当前打开的究竟是哪一种书,同时不替书源校验或改写来源身份。
- 统一内容模型:书源提供的字幕或正文先适配为普通阅读页可排版的章节、段落和分页内容,阅读页继续负责排版、翻页、滚动和阅读位置;音频书不是被伪装成文本书,而是在同一个
ReadBook阅读模型里增加了可映射的音频会话。 - 统一朗读引擎:系统 TTS、HTTP TTS 与书源音频平级接入
ReadAloud/BaseReadAloudService,由当前引擎决定进度语义——TTS 使用章节段落进度,书源音频使用真实时间进度;切换引擎时立即切换控制面板、进度条和语速控件,不再等待下一次播放回调。 - 接通文字与音频映射:增加字幕/正文映射和排版后段落定位,支持双击、点击段落和“指哪读哪”,可以从文本位置跳到对应音频,也可以从音频进度回到正文位置;映射失败会明确记录和提示,不用静默回退掩盖数据不一致。
- 听书页改为同一会话的另一种视图:全屏听书页同时兼容书源音频、系统 TTS 和 HTTP TTS。TTS 在听书页也能滚动段落、点击定位和继续朗读,返回阅读页时恢复当前章节、阅读位置以及播放/暂停状态。
朗读悬浮窗与阅读页交互
- 朗读菜单打开后,完整悬浮窗与菜单并存;点击菜单外部收起后,悬浮窗变为阅读页底部的“暂停播放 / 继续播放”控制块。
- 阅读页翻页后,底部控制块切换为“原进度 / 从本页听”,让用户明确选择回到朗读位置还是从当前页开始;重新打开朗读菜单时恢复完整悬浮窗和完整控制面板。
- 朗读菜单的播放控制行增加直接进入听书页的入口;进入听书页会隐藏阅读页悬浮控件,避免同一会话出现两套重复控制。
- 听书页更多菜单增加离线缓存和朗读引擎入口;离线缓存通知使用一个当前章节下载进度条,同时显示全书章节进度,例如
10/66 章。
音频书源与朗读细节
- 新有声书默认语速调整为
1.6,已有用户自定义语速不被覆盖;书源音频和 TTS 的语速控件随引擎切换即时更新。 - 修复书源音频字幕、正文和排版段落数量不一致导致的播放失败,统一映射到排版后的段落位置。
- 朗读设置页统一控制行高度和间距,移除多余的
10dp留白,使进度、计时、语速和底部操作区对齐。 - 增加关闭书源底部消息、关闭全部底部消息的设置,朗读九宫格菜单中的相关入口改为进入朗读设置,而不是误入主设置。
- 恢复换源页和播放模式的上游布局,精简朗读引擎菜单动作;音频书封面、书架列表和列表布局的音频标记统一到封面右上角附近。
目录与其他界面修复
- 统一内容规则菜单的表面和操作入口,目录增加反向显示能力;菜单、弹窗和目录操作继续沿用同一套表面与底部操作区规则。
- 删除已经失效的融合计划规则,保留当前实际采用的统一引擎、统一阅读入口和统一会话设计。
UI 结论
- 这次融合不是把有声书简单塞进文本阅读页,而是把“书籍身份”“阅读内容”“朗读引擎”“进度单位”“悬浮控制”和“全屏听书”拆开后重新组合:来源身份仍然准确,用户入口和操作体验却只有一套。
- 最终 UI 已经形成统一的阅读信息层级、底部控制和透明表面风格,整体非常接近番茄阅读的成熟布局。直白一点说:番茄在阅读和听书 UI 上值得薅的那部分,基本已经被我们薅秃了,而且还补上了本地书、在线书和有声书共用一套会话的能力。
本日变更已完成代码层落地;正式 APK 编译和模拟器回归按统一交付流程随后执行。
AI 章节净化(去广告 / 去噪音 / 查错字)
- 新增 AI 章节净化:调用 AI 批量清理章节正文,支持「去广告 / 去噪音 / 查错字」三种净化类型,独立开关,默认全部开启。
- 打开书自动净化未处理的章节,处理进度与结果实时提示;净化失败的章节可单独重新处理。
- 章节处理记录:每章记录处理状态、正文指纹与已覆盖的净化类型(数据库升级至 103);清除缓存、更新目录或移除书架会删除对应记录并重新判定。
- 手动编辑或反转内容后的章节,无条件标记为已处理——自动净化不再重算该章,也不会把它写进替换规则;之后新开启某净化类型时该章会按类型重新判定。
- 按净化类型限定预处理范围,章节预处理不再默认剥离空格与符号。
AI 供应商与模型
- 新增 AI 设置页集中管理供应商、模型与请求模板;章节净化默认复用全局供应商与模型,也可单独指定。
- 支持 AI 请求模板结构化编辑、占位符校验与连通性测试(测通后正确识别思考内容)。
- 新增「高级设置」显示开关(默认关),开启后可调整 API 脱敏、超时等高级项。
- API 脱敏默认开启:AI 请求与日志中的 API Key 自动打码,避免明文泄露。
AI 日志
- 新增 AI 详细日志:实时状态、请求与响应明细,支持查看、清空与一键导出。
- AI 报错统一为中文提示,并按错误类型给出第一句分类,更易定位问题。
- 修复日志弹窗清空、复制与数量刷新卡顿。
修复
- 修复章节净化重复触发、结构化请求超时、输入顺序错乱与流式超时。
- 修复净化实时状态提示的显示与生命周期。
- 修复请求模板保存校验过严(放开占位符校验)。
- AI 思考打断默认值调整为五秒,支持自定义打断重试次数。
- 统一 AI 设置分组与流程说明文案,整理设置按钮分组。
默认主题与透明度
- 内置 Pre 默认炫彩背景,日间主题与夜间主题首次使用时均自动应用;用户仍可在主题管理中替换。
- 全局界面透明度统一为
0%完全不透明、100%完全透明,数值、显示和实际渲染保持一致;主题、书架、顶部分类条、底部导航等界面同步生效。 - 弹窗透明度、弹窗模糊度改为统一的百分比控制;弹窗模糊度不再显示多余的“标准模糊度”说明。
- 新增独立的“书架封面透明度”:只控制书架中的普通书封面和合集封面拼图,不再被全局界面透明度误关联;加入合集/分组弹窗内的预览按弹窗透明度显示。
统一弹窗与菜单
- 继续统一 Dialog、底部面板、PopupWindow 与阅读页浮层的玻璃表面:模糊只作用于实际面板范围,不再压暗或模糊整页背景;背景准备完成后才显示面板,避免首帧闪白、范围错位和重开残影。
- 所有广义弹窗移除独立顶栏,标题需要保留时作为内容首行;书签、日志、帮助、替换、阅读设置等弹窗同步使用统一样式。
- 修复编辑内容页底部“保存 / 重置 / 全部复制”操作区的位置,按钮不再跑入正文编辑区域。
阅读与书架交互
- 阅读主菜单在局部模糊完成后以
200ms淡入,关闭时以200ms淡出;上下两块面板保持同一节奏。 - 主页面及同类“更多”菜单打开时沿用原有模糊准备,关闭时统一以
100ms淡出;点菜单项、返回键和点外部关闭均生效。
整页书签(页面书签)
- 新增下拉添加 / 删除整页书签(翻页模式):在页面顶部从屏幕往下拉,页面跟手下移,右上角从页顶"长"出一枚拟真小标签(可见高度=下拉距离 1:1,长满 64dp 后标签固定、页面继续下滑);松手超过阈值即添加 / 删除,回弹期间标签保持满尺寸留在右上角。删除模式回弹期间标签消失。
- 新增"下拉添加整页书签"开关(默认开)与"整页书签颜色"设置(全局生效);标签绘制始终先于正文裁剪,常驻 / 下拉标签都能完整显示。
- 新增"整页书签尖角样式"设置:尖角朝下、尖角朝上(底部凹口)两种,默认保持尖角朝下;翻页模式、滚动模式与下拉动效同步生效。
- 整页书签按页首文字匹配(公共前缀占比 ≥ 80%)显示,文字变更后依然能对上。
- 书签表新增
isPageBookmark字段,DB 升级至 99。 - 整页书签与普通书签彻底分开:阅读页单击不劫持、不弹备注气泡、不弹编辑;目录书签列表 / 网格带"整页"标记,只展示位置与页面文字,不展示备注与样式效果;多选批量编辑不受限。
跨页复制
- 选中文本后把手指移到最右下角并停留片刻(500ms),自动翻到下一页并把选区延续到新页页首继续选择;持续停在角落会持续跨页,可跨章。触发区域为右下角物理正方形,边长=屏幕长边 1/8(竖屏约纵向 1/8 × 横向 1/4,横屏自动反转)。
- 新增"跨页复制"开关(默认开)。
选区手柄与颜色
- 新增"选区手柄样式":圆球加杆 / 仅圆球 / 无手柄三选,默认球+杆;无手柄时不可拖动调整选区。
- 新增"选区颜色"(选中文字背景色,支持透明度)、"选区手柄颜色"(球+杆整体上色,支持透明度)。
- 修复选区手柄"球/杆乱飞":手柄锚点从"图右/左边缘"改为"球杆中线",拖动映射改为"手指按在球上→杆尖跟随",球始终跟手、杆尖对准选区边界,反向拖动与跨页复制不受影响。
选区放大镜
- 新增"选区放大镜"开关(默认开):拖动选区手柄时,放大镜镜头跟随手指放大附近文字(自研 View 替代系统 Magnifier,支持自定义样式)。
书签交互
- 选中文本弹窗里的书签 / 段落书签恒定为"添加"(去掉命中旧书签即变编辑)。
- 目录书签页打开时自动定位:优先把当前页面内第一条书签顶到列表首位,当前页没有则退到当前章节第一条,章节也没有才取章节距离最近的一条;列表 / 网格均生效。
- 单击普通书签除切换备注气泡外,额外弹出临时"编辑当前标签"悬浮窗(重叠命中规则:文本更短优先、相同创建更晚优先;点其他区域消失,约 1 秒无操作自动关闭)。
- 备注气泡新增"边框"与"箭头"两组设置:各自可设置是否显示、颜色、透明度(默认边框显示、透明度 80%)。
EPUB
- 修复经典模式下原生 EPUB 布局生成空页时页面空白:回退到同一章节的 HTML 内容排版,兼容本应用导出的缺失封面资源 EPUB。
阅读
- 点击区域新增"强制打开主菜单"动作:听书 / 自动翻页 / 全文搜索时也能直接打开阅读主菜单。
修复
- 修复多个设置项默认值前后端不一致(界面显示开关与实际行为相反):
- 朗读时音量键翻页:默认改为关闭(原界面显示关、实际仍翻页)。
- 启动时检查更新:默认改为开启(原界面显示开、实际不检查)。
- 封面设置页"显示作者"开关可用性判断对齐默认值。
- 朗读跟随系统语速:默认改为关闭;隐藏悬浮窗默认改为开启;朗读默认语速由 5 调整为 30。
界面透明与局部模糊
- 新增全局界面透明度、弹窗透明度和弹窗模糊度设置;主题页面、书架分类条、底部导航、列表浮层与常用设置界面统一使用透明玻璃风格。
- 弹窗、菜单和阅读页浮层改为只模糊自身真实可见区域:取消系统整页压暗与全窗口模糊,背景截图、圆角裁剪、着色和描边统一处理。
- 修复普通弹窗、底部面板、右上角更多、书架更多、阅读主菜单、漫画菜单、搜索菜单等浮层的模糊范围、坐标和首次显示时机,避免先出现实色面板再替换背景。
- 书签弹窗、目录底部操作条、缓存管理页、合集选择与分组选择面板补齐透明与局部模糊效果。
弹窗与书架细节
- 统一移除弹窗独立顶部栏,保留内容标题和标准底部操作区,避免空白头部占位。
- 书架合集卡片补齐封面拼图、圆角、阴影与名称显示;合集管理和选择面板同步统一视觉样式。
App 自动更新
- 新增更新设置:每次启动自动检查(默认开启)、接收 Pre 版本推送(默认关闭)、下载加速源(默认 ghfast.top,可选直连 / ghproxy / gh-proxy / 自定义地址)。
- 新增"立即检查更新"按钮;切换"每次启动检测"开关即时触发一次检查。
- 检查 GitHub Release 新版本:按 versionCode 取最高版本(从 APK 文件名解析,不再被 tag 里的日期数字误判),弹出更新说明,下载完成自动唤起系统安装。
导出与导入
- 导出 TXT 拆分出独立选项"导出 TXT (zip)":本地 TXT 正文原样打包(不加书名头/缩进、不改写章节),图片/视频/音频与书签、替换规则作为外挂数据写入压缩包,重新导入可完整还原且不章节错乱;原"导出 TXT"保持原样行为。
- TXT(zip) 导出新增"导出书签"选项:书签随
bookmarks.json进压缩包,导入时同步还原。 - TXT(zip) 导出新增"替换净化"外挂:开启后把当前书生效的替换规则写入
replace_rules.json(正文保持原文),导入时同步还原规则并自动打开该书的净化开关。 - EPUB 导出修复:配图媒体原文件此前导出为 0 字节(LazyResource 文件名传错),修复后图片/视频/音频完整打包;新增书签侧车(
legado_bookmarks.json),导入时还原书签与配图。 - PDF 导出新增书签:压缩包内含
bookmarks.json,导入时同步还原。 - 压缩包导入失败时给出明确错误提示;默认导出图片改为开启。
- 修复压缩包导入:VIEW 打开 zip 走统一导入流程(解压保存到书籍目录 + 还原配图/媒体/书签)。
书架
- 书架"全部"分组支持在分组管理中关闭,关闭后真正不再显示;仅当用户未关闭且其他分组都为空时才兜底显示,避免空白。
修复
- 修复配图还原位置:全书插图按段落指纹匹配,不再依赖章节索引;段间锚点未匹配时不再堆到章末。
- 修复压缩包导入失败:书籍保存目录未设置时兜底保存到应用外部目录,不再抛 NoBooksDirException。
备份与恢复
- 备份新增阅读记录头像目录,恢复后自动把头像配置里的绝对路径修正到当前应用目录,从 R 版换到 C 版恢复也能显示自定义头像。
- 自定义封面备份增强:书架和分组里指向本地图片的自定义封面,备份时会一并并入封面目录,恢复后按文件名自动映射路径;恢复时找不到对应封面文件时保留原路径,不再清空。
书架
- 书架条目布局补充注释:封面压暗、灰色渐变、水波纹等明暗变化效果当初是为了避免书架刷新/滚动时封面一闪一闪而删除,后续不要加回。
配图(图片 / 视频 / 音频)
- 长按菜单入口正式改名"插入":对话框内提示"选择图片、视频或者音频",可插入图片、视频或音频。
- 插入位置改为任意文本选区:只选一段 → 插在该段之后;跨多段(如 1/2/3 段)→ 仍插在第一段与第二段之间。
- 配图扩展为图片、视频、音频三类媒体:选择器放开为
*/*,可一次多选图片/视频/音频,保存前拦截非媒体文件并提示。 - 插入时按“文件名扩展名 → MIME → 文件头”三级识别媒体类型,并修复保存时无点号扩展名被默认当成 jpg 的根因,视频/音频不再被误存成图片。
- 新增独立音频块:阅读页内联播放,支持播放/暂停、进度条点击与拖动 seek(触摸优先级最高),翻页继续播放、退出阅读页停止,多个音频实例的播放/暂停状态同步刷新。
- 新增“配图音频播放时音量键调音量”开关(阅读设置):内嵌音频块播放时音量键不再翻页,改为调节音量。
- 新增视频全屏播放:多视频可左右滑动、滑走即停止;单个视频禁止滑动并自动横屏;视频自动抽帧作为封面并显示时长。
- 配图目录页:图片显示缩略图,视频显示抽帧+时长,音频显示音符图标+时长;顶部改为小按钮行,新增多选/全选,多选模式点击勾选,长按支持保存 / 保存所有 / 删除所选。
- 全屏查看体验:图片单击返回阅读页,全屏黑色背景,修复缩放卡顿与手势冲突。
- 配图布局改为单图 / 双图 / 一行三张 / 一行四张,并新增两行两列四宫格;阅读排版与 PDF 导出同步支持。
- TXT / EPUB / PDF 导出均支持媒体再导入:TXT 用压缩包导出并在导入时还原,EPUB 嵌入配图标记与侧车清单、导入自动重写图片源,PDF 用压缩包+归一化坐标导出、再导入裁切还原并恢复阅读页热区;配图备份恢复同步覆盖。
- 修复配图设置对话框崩溃、文本菜单配图项闪现(按选区状态重建、弹窗原地更新、重新弹出前清理残留)等问题。
书签
- 新增单下划线、双下划线、波浪下划线、高亮、文字变色、删除线六种正文显示样式,效果改为位掩码多选组合,可同时勾选多种,旧数据自动迁移。
- 每种样式可独立设置颜色;编辑对话框不再单独设置颜色,批量颜色入口保留在目录多选。
- 新增段落书签(纯文本段落扩展,上限 1000 字)。
- 阅读页新增备注气泡:自动寻找空白区、虚线箭头、相对位置跟随;气泡宽度完全按内容自适应。
- 新增“显示书签备注气泡”开关:关闭后气泡默认隐藏,点击书签正文仍可单独显示;新增“点击无效果书签显示备注”开关,无样式书签点击不再被劫持。
- 备注气泡背景透明度(默认 80%,对所有气泡统一生效)与气泡颜色(自动取背景主色或自定义)可在阅读设置中调节。
- 禁止书签区间嵌套与交叉:选中文字命中书签时,按重叠更多 / 更短 / 更晚优先级直接进入编辑。
- 目录书签页支持列表 / 网格二列 / 网格三列切换,新增多选全选与批量操作(删除 / 导出 / 备注 / 效果 / 颜色)。
- 书签支持 JSON 导入;MD 导出会标注样式与颜色无法导入。
- 滚动模式性能优化:复用绘制 Paint/Path、缓存气泡布局与尺寸、偏好读取改字段缓存。
- 修复阅读页书签样式不渲染(打标移到行位置计算之后)、高亮覆盖文字(改为文字下层背景绘制)、文字变色覆盖其它效果等问题。
阅读体验
- 点击区域默认配置:中间竖排上中下三块全部默认设为菜单(TC / BC 由翻页改为菜单)。
- 阅读页系统栏处理对齐 SUN-MAX 版:内容延伸到手势区、去掉导航栏额外 12dp、导航栏恢复透明。
- 崩溃日志弹窗同步支持一键复制,复制按钮文案统一改为两个字。
书架
- 新增书架合集功能:合集以封面拼贴展示,可进入合集管理书籍,支持嵌套子合集。
- 新增书架长按操作栏:长按书籍或合集进入选择模式,可加入合集、删除、拖动排序。
- 主界面右上角新增全选按钮(选择模式显示):未选满时点击全选,选满时再点一下全部取消,全选后显示计数,如“全选(13,2)”。
- 合集内的全选按钮与合集标题对齐,操作逻辑与主界面一致。
- 多选拖拽时,其余书籍瞬间收束堆叠到起始书下方,收束完成后保持堆叠不散开。
- 合集封面:书籍不足 4 本时,空位保持空白占位,不放大已有封面。
阅读与听书
- 编辑内容:本地 TXT 打开完整文件,几 MB 大文本采用分块懒加载,编辑流畅;保存后重新做目录匹配。
- 编辑内容自动定位到当前阅读位置:在哪个页面打开,就跳到对应位置。
- 听书“需要后台权限保持服务”的通知弹窗整个应用只弹一次,不再反复打扰。
设置与文件打开
- 新增“打开文件自动加入书架”开关(工具与关于 → 其它设置):可选“是 / 否 / 每次选择”;选“否”直接阅读不加入书架,选“每次选择”会先询问是否加入书架,确认后再选择保存位置。
细节体验
- 长按进入选择模式时短促震动一次;抬起后再次按下并拖动(第二次长按)时也震动一次。
- 日志弹窗新增一键复制按钮。
修复
- 修复听书时手动翻页后,选中文字点“从本段开始朗读”,红色朗读焦点不跟随到最新段落的问题。
- 应用改为可与阅读 R 共存的独立包:包名
io.legado.app.c,中文应用名阅读 C。 - 跑通 Android 编译路径,当前 APK 输出到
app/build/outputs/apk/app/c/legado_app_3.26.062204_10490.apk。 - 修复异步听书时,阅读页面停留在其它章节会导致听书续读跳章的问题。
- 修复书架选择“全部”时不显示小说,必须切到“小说”分类才显示的问题。
- 去除非必要的自动说明弹窗,保留手动入口可查看帮助。
- 去除退出听书页面时询问“是否后台继续阅读”的弹窗,默认后台继续阅读。
- 文本选择菜单里的“朗读”改为从选中文本所在段落开始连续朗读。
- 听书进行中支持双击正文段落,从该段落开始朗读。
- 在阅读设置的“点击区域设置”下面新增“朗读双击判定时间”,默认 200ms,可在 120ms 到 600ms 之间调整;时间越短单击响应越快,双击要求越高。
A 仓库同步调查范围:Rimchars/legado 从共同起点 archive-v3-3.26.0509(e786392e,2026-05-09)扫描到 rim/main 的 aa5cda3a(2026-08-07)。本版本不是整体合并 A 仓库最新代码,只是从这段范围里选择性吸收低风险修复。
-
A 仓库的大型 AI、世界书、多角色朗读、BGM、云中继、Compose 大重构和数据库大迁移暂不吸收。
-
从 A 仓库吸收通用输入流读取修复,避免用
available()误判文件长度,并新增带上限的读取逻辑。 -
从 A 仓库吸收 data-url 图片大小限制,避免超大 base64 图片导致内存暴涨。
-
从 A 仓库吸收缓存计量修复,内存缓存按字符串、字节数组、Bitmap、集合等真实类型估算大小。
-
从 A 仓库吸收路径穿越防护修复,压缩包解压和 JS 文件访问改为严格判断同目录或子目录。
-
从 A 仓库吸收 EPUB/MOBI 封面采样解码修复,避免超大封面直接全尺寸解码导致 OOM。
-
从 A 仓库吸收 UMD 解析修复:截断读取报错、zlib 解压防卡死、输入流解析后关闭、限制不可信 UMD 内容分配。
本版本实际吸收的 A 仓库提交:
908883536:fix(io): add bounded stream reads15befdf1b:fix(data-url): limit decoded image payloads8f8861521:fix(cache): size memory cache entries by type76d468ea2:fix(security): harden path containment checks6112e52df:fix(image): sample decode user images6440d9c59:fix(umd): reject truncated stream readsec81a20a8:fix(umd): fail stalled zlib decompression42db1f27c:fix(umd): close source stream after parsingeed38599d:fix(umd): bound untrusted parser allocations
已看过但本版本未吸收:
cdc39b11b:阅读图片尺寸查询超时修复,值得后续单独做,但会动阅读排版核心。105e8c4e:丢弃已脱离页面的渲染任务,依赖 A 仓库后续渲染代际机制,C 当前不能硬套。