Skip to content

Releases

Readnest v1.4.0

Choose a tag to compare

@kjlintong kjlintong released this 02 Nov 09:19

Readnest v1.4.0

重要变更:截图 / 拍照导入改为纯多模态大模型通道

  • 移除了端侧 OCR(Google ML Kit)依赖,使项目完全开源合规,为 F-Droid 上架铺路。
  • 截图 / 拍照导入现在仅通过你自填的多模态大模型识别书名(BYOK,需一次性授权上传图片)。
  • 设置页「截图识别」下仅保留「图像增强预处理」开关;移除了「识别方式」与「用大模型整理识别结果」两项设置。

其它

  • 版本 1.4.0(build 5005)。

下载

  • Readnest-v1.4.0-release.apk:通用版(含全部 CPU 架构),体积较大。
  • Readnest-v1.4.0-arm64-v8a-release.apk:仅 arm64 设备(绝大多数现代手机),体积更小,推荐安装。

Readnest v1.3.2

Choose a tag to compare

@kjlintong kjlintong released this 02 Nov 03:58

Readnest v1.3.2

为国内应用商店上架准备的版本。

新增

首次启动隐私同意弹窗

  • 首次启动会弹窗说明个人信息处理规则,需明确选择「同意并继续」或「不同意」
  • 弹窗内含政策全文链接,不使用「好的 / 我知道了」这类含糊措辞
  • 同意前不读取设置、不联网、不写备份
  • 支持简体中文、English、Deutsch、Français、Español

修复

  • 修复应用内「应用介绍」入口指向的页面为 404(/readnest/ → /readnest.html)
  • 修复隐私政策页导航中的死链

产物

  • Readnest-v1.3.2-release.apk —— 通用包(提审用这个)
  • Readnest-v1.3.2-arm64-release.apk —— arm64 分包
  • Readnest-v1.3.2-release.aab —— 应用包

Readnest 是本地优先的阅读管理工具:书架、统计、AI 阅读报告、阅读计划与笔记。
没有账号、没有云端、没有广告。开源(MIT)。

Readnest v1.3.1

Choose a tag to compare

@kjlintong kjlintong released this 30 Oct 07:30

Readnest v1.3.1

新增:每周自动备份用户数据

设置 → 数据 下新增「自动备份」开关,周期可自选:每天 / 每 3 天 / 每周 / 每 2 周 / 每月(默认每周)。

  • 备份文件写入本机 Download/Readnest/backups/,走系统媒体库,无需存储权限。
  • 该目录卸载 App 后仍保留——重装后到 设置 → 数据 → 恢复 选中文件,即可整库还原。
  • 设置页提供「立即备份」按钮,并显示最近一次备份时间。
  • 只保留最近 4 份,更早的自动覆盖,文件不会越攒越多,无需手动清理。

修复

  • 修正自动备份的落盘目录:此前实际写到 Download/backups/,现为文档所述的 Download/Readnest/backups/。
  • 修正旧版本可能遗留的备份文件堆积:清理不再依赖 App 内部记录,即使卸载重装也能正确识别并覆盖最旧的备份。
  • 自动清理 v1.3.0 遗留的旧格式备份文件。

说明

  • 自动备份文件保存在你本机可见的 Download 目录,由你自行管理,不会上传到任何服务器。
  • 需要提醒:这份备份与数据同在设备上。设备本身丢失或损坏时,备份会一起失去——重要数据仍建议另行导出到电脑或云端。

Readnest v1.3.0

Choose a tag to compare

@kjlintong kjlintong released this 30 Oct 07:07

Readnest v1.3.0

新增

  • 每周自动备份用户数据:设置 → 数据 下新增「自动备份」开关,周期可在 每天 / 每 3 天 / 每周 / 每 2 周 / 每月 之间调整,默认每周一次。
  • 备份文件写入本机 Download/Readnest/backups/(走系统媒体库,无需存储权限,且卸载 App 后仍保留)。重装后可在 设置 → 数据 → 恢复 选中该文件一键还原整库。
  • 设置页新增「立即备份」按钮,可手动触发一次备份,并显示最近一次备份时间。

说明

  • 自动备份文件保存在你本机可见的 Download 目录,由你自行管理、不会上传到任何服务器。
  • 注意:当设备本身丢失或损坏时,这份备份同在设备上,仍会一起丢失;重要数据仍建议另行导出到电脑或云端。

Readnest v1.2.1

Choose a tag to compare

@kjlintong kjlintong released this 29 Oct 11:53

Readnest v1.2.1 — 4 个 bug 修复

纯 bug 修复版本(版本名 1.2.1,build 5001):

  • 阅读计划:读完「读完一本书」型计划时,进度自动置 100%、状态改为「已读完」,并补全完成时间等字段,统计「今年读完」不再漏算。
  • 书籍:阅读平台(source)现在可在书籍表单里手动选择(之前无法编辑)。
  • 统计页:「分类分布 Top 8」柱状图改为左右并排布局,修复 y 轴刻度被图例压扁、数字堆叠乱码的问题。
  • 阅读档案:导出按钮按区块区分——「阅读偏好分布」只导出偏好、「性格标签」只导出标签(原先两个按钮都导出完整卡片)。

下载:

  • Readnest-v1.2.1-release.apk:通用安装包,适配所有设备。
  • Readnest-v1.2.1-arm64-release.apk:仅 arm64 设备的小体积包(推荐多数手机)。
  • Readnest-v1.2.1-release.aab:Google Play 上架用。

Readnest v1.2.0

Choose a tag to compare

@kjlintong kjlintong released this 27 Oct 08:47

Readnest v1.2.0

「发现」全面改版

  • 联网模式纳入本地书架:书单 = 你已有的(标「已在书架」,不可重复入库)+ 建议再读的新书
  • 书单顶部新增总体介绍(模型撰写的选书指南),支持分组标题(如「零基础入门」)
  • 每条推荐带作者 + 一句话介绍 + 建议阅读顺序
  • 联网加载显示阶段性进度(翻书架 → 找书写介绍 → 补封面)
  • 联网不可用时置灰并说明缺什么,附「去设置」直达入口

性能

  • 修复打开/退出「发现」页的卡顿:模糊滤镜按强度缓存复用(此前每次路由切换全屏重算高斯模糊)+ 封面按显示尺寸解码(解码量降到约 1/20)
  • 公开书目补全改并发;Google Books 国内不可达时 10 分钟熔断,单源超时 6 秒

其他

  • APK 提供 arm64 分包(41MB,约为通用包的 1/3)
  • 界面与文案覆盖英/中/德/法/西五语

安装:大多数手机下载 arm64 分包即可;不确定或安装失败时用通用包。Google Play 用户请用 AAB 由商店分发。

Readnest v1.0.1

Choose a tag to compare

@kjlintong kjlintong released this 12 Oct 09:30

本次更新

「今天读了」入口搬到阅读计划里

原来在书籍详情页上的「今天读了」按钮去掉了,改成在「阅读计划」的每日计划里配一份目标书单,然后在计划卡片上逐本勾选今天读了哪几本。

  • 每日型计划支持配置目标书单:多选,可搜索(按书名或作者实时过滤),已选显示成可删除的 chip。
  • 计划卡片上直接逐本勾选。勾选即记一次阅读——刷新这本书的「上次阅读」时间并写一条阅读日志。
  • 取消勾选只清掉计划里的记录,不会回退这本书的阅读时间(你确实读过)。
  • 计划选书由原来的下拉菜单换成可搜索抽屉,书多时不用一个个翻。

自动搁置改成两个条件同时成立

一本书要被自动搁置,需要同时满足:60 天没有阅读记录,并且 60 天阅读进度没有变化。任一条件新鲜就把书留住。这样就不会误杀那些「每天在翻页、但从没点过按钮」的书。

其他

  • 修复新建安装时阅读计划保存失败的问题。
  • 五语言界面文案补充。

安装

下载下方的 Readnest-v1.0.1-release.apk(约 110 MB)直接安装。

MIT 开源,源码见 reading-tracker。

v1.0.0 (22) — 修复首启闪退(release 包被静默压缩)

Choose a tag to compare

@kjlintong kjlintong released this 09 Oct 01:00

修复:首次打开闪退(release 包被静默压缩导致)

这是优先级最高的一条修复——上一个版本的安装包(build 21)在冷启动时会崩溃。

症状

打开应用直接闪退,第二次打开才正常。曾以为是需要重开一次的小毛病,
实际是 release 包存在致命缺陷,每一个新装用户都会遇到。

根因

release 构建实际处于开启代码压缩的状态,尽管构建脚本里从未写过
minifyEnabled true。R8 把 Gson 的 TypeToken 改名,连同匿名子类的
泛型签名一起吃掉,于是 flutter_local_notifications 在收到
「重启 / 覆盖安装」广播、解析已排期通知时抛出:

IllegalStateException: TypeToken must be created with a type argument:
new TypeToken<...>() {}; When using code shrinkers (ProGuard, R8, ...) make
sure that generic signatures are preserved.
    at FlutterLocalNotificationsPlugin.loadScheduledNotifications
    at ScheduledNotificationBootReceiver.onReceive

该调用发生在 Android 组件入口(BroadcastReceiver),不是 Dart 异常,
因此直接升级为 FATAL EXCEPTION 并 SIG:9 杀掉整个进程——
Flutter 的第一帧都还没画出来。
之所以「第二次打开就好」,是因为触发它的广播是一次性的。

修复

  • build.gradle 中显式钉住 minifyEnabled false,不再依赖工具链默认值
  • proguard-rules.pro 补齐 Gson 泛型签名的 keep 规则
    (即使当前未开启压缩,这组规则也必须留着,防止将来重新踩坑)

验证

真机连环冷启动零崩溃,并取得关键日志:

Displayed  io.github.ltong9463.readnest/.MainActivity: +159ms
Fully drawn io.github.ltong9463.readnest/.MainActivity: +159ms

修复前这两行根本不存在(进程在之前就已被杀)。


同时修掉的另外三处崩溃隐患

  • 数据库迁移重复加列:旧版本(库版本 ≤ 3)直接升级到最新时,
    _onUpgrade 会对同一列 ALTER 两次,SQLite 抛 duplicate column name,
    整段迁移连同版本号一起回滚,结果是覆盖安装后再也打不开应用,
    且版本号没写上、重装也没用。改为先查 PRAGMA table_info 再决定是否加列。
    已补 3 条回归测试,并反向验证过:改回旧写法这条测试确实会变红。
  • 从相册返回后崩溃:选封面时相册是全屏 Activity,旋转屏幕或切后台被回收后
    页面已销毁,await 回来直接 setState 会抛 “setState() called after dispose”。
  • 导入入口缺生命周期保护:add_book_sheet 是六条导入路径的公共入口,
    入口处的 setState 没有检查挂载状态,已统一在入口补上守卫。

其它

  • README 里「AI 报告不发送书名」的说法与实际行为不符,已改为与隐私政策一致
    (确实会发送周期内的书名、作者、分类、状态、评分;笔记正文与划线内容从不发送)。

测试:589 例全部通过(上一版 586 例 + 3 条新增迁移回归测试)。

Readnest v0.9.0

Choose a tag to compare

@kjlintong kjlintong released this 03 Oct 01:50

Readnest v0.9.0 —— 发布候选。本地优先的个人阅读管理 App,数据只存在手机本地 SQLite。

本次变更

  • 全新正式图标:书架 + 书本的写实风格,已适配 Android 全密度 / iOS 全尺寸 / Play 商店 512px
  • 阅读计划周期化:每日型计划打完卡次日自动回到待完成(新增 lastDoneOn,DB v5);完成按钮上提到卡片面上;修复「给了通知权限仍提示无权限」的误判
  • 统计页瘦身:移除 app 无法监控的「阅读时长 / 阅读天数 / 日均阅读」;「月度读完」改为「月度在读」;新增图表显示设置,七张图可自选显隐
  • 阅读档案:画像 / 气泡 / 性格标签都能分享出图,并新增保存到相册
  • 中英切换:修掉顶层懒初始化导致的「中文界面显示英文」(画像规则 / LLM 预设 / 统计区间三处)
  • 记录栏:阅读计划上移到顶部,笔记在下
  • 阅历:去掉每月底部莫名的「添加到书架」框

校验

  • flutter analyze:无问题
  • flutter test:426 项全部通过
  • i18n:中英各 763 键,零漂移
  • 商店素材:42 张截图(iPhone 6.9″ / iPad 13″ / Play 三档 × 中英)

安装后首次启动会灌入 38 本示例书;可在设置里清空后导入自己的书单。