Repository navigation
Releases: sjshb57/TwitterArchiverApp
Release list
v1.3.0
[1.3.0] 更新日志:
-
新增管理端「仓库健康」页:组织下全部仓库的最近更新时间、体积、轮转超期判定,可按多种维度排序,支持查看私有仓库
-
新增全站搜索的紧凑结果条,直接显示账号、时间与命中上下文
-
新增繁体中文,并支持 Android 13+ 系统设置里的「按应用设定语言」
-
新增 CI 工作流:每次提交自动跑构建、单元测试、detekt 与 lint
优化改进
-
全站搜索性能大幅提升:查询串不含 ASCII 字母时跳过大小写折叠,60 万条推文上的实测耗时从 700 ms 降到 56 ms
-
日期字符串改用去重池,62 万条推文的显示日期只有约 3600 个不同取值,省下约 20 MB 内存
-
图片加载库 Coil 升级到 3.x,网络层与应用共用同一个 OkHttp 实例
-
网络栈整合:所有请求共享连接池与超时策略,视频下载改为可随页面退出取消
-
GitHub 接口错误改为可读的说明(令牌过期、配额耗尽、权限不足、工作流版本过旧等),替代原始状态码
-
全站索引分片与 meta 落盘改为原子写入,中途退出不会留下半截文件
-
分片下载完成后先校验内容哈希再落盘,断流的残件不会先报一次错再自愈
-
本地分片改为一次读取同时用于校验与解析,冷启动的磁盘读取量减半
-
单账号索引的离线读取改为流式解析,不再把整份 JSON 拼成字符串后再反序列化
-
离线索引的按月落盘改为整目录原子替换,中途退出不会留下新旧混杂的分片
-
仓库层改为全应用单例并加入请求去重,同一账号的并发请求只下载一次;内存缓存加上限,「清理缓存」现在同时清理磁盘与内存
-
账号时间线的日期树与跳转索引改到后台线程计算,大账号切换标签不再卡顿
-
主题改为启动前镜像写入,消除冷启动时的主题闪烁
-
全站时间线的月份下载与删除统一串行化,避免并发导致的内存与磁盘状态不一致
-
后台轮询统一收拢为跟随生命周期的组件,切到后台不再继续消耗接口配额
-
最低系统版本提升到 Android 11,仅保留 arm64 架构
-
接入 detekt 静态检查,并新增 32 个单元测试覆盖排序、搜索、刷新等易回归的逻辑
问题修复
-
修复推文按时间戳字符串排序,导致老格式(Wed Sep 09 ... 2020)的推文整片排到错误位置。全站时间线、账号时间线、图片页与回复链均已修正
-
修复升序排列时,时间解析失败的推文会全部排到最前面
-
修复管理端上传大于 1 MB 的 Banner 必定失败
-
修复触发工作流时分支写死为 main,默认分支为 master 的仓库无法触发
-
修复全站时间线下拉刷新实际不生效
-
修复全站时间线下拉刷新后,日期面板、已下载月份标记与全站总数被清空且不再恢复
-
修复 GitHub Pages 返回 404 页面时,其 HTML 内容会被当作索引数据处理
-
修复设置页「清理缓存」只清磁盘不清内存,清理后仍在使用旧数据直到重启
-
修复繁体中文设备上应用名仍显示简体
-
修复阅读器页的刷新按钮实际仍在读取缓存
-
修复二级页面的图片预览浮层重复渲染
-
修复列表中出现重复 ID 导致的崩溃
-
修复管理端批准申请后的建档流程与手动建档不一致
-
修复 Banner 上传失败仍被标记为已完成
-
修复页面退出后仍继续执行的网络与磁盘操作
Full Changelog: v1.2.0...v1.3.0
v1.2.0
[1.2.0] 更新日志:
-
新增全站索引月度分片:服务端按月切分,客户端只在需要时下载对应月份,不再一次性拉取整个索引
-
新增全站时间线日期面板:副标题「按日期」进入,年 → 月 → 日三级浏览,可筛选某一天或整月
-
新增按月 / 按年下载历史推文,下载中显示实时百分比,已下载的长按可删除
-
新增全站时间线显示全站推文总数,与本地已下载的月份无关
-
新增双击顶部标题回到列表顶部(账号列表页与全站时间线页),与双击底栏 Tab 一致
-
新增索引加载失败时在页面上显示具体原因,点击可消除
-
管理端新增建档中断自动续做:仓库创建成功即写入记录,setup 未触发成功时下次进入本页自动补触发
-
管理端新增移除新建记录的二次确认与撤销条,连续移除时 3 秒内不重复打扰
-
管理端「所有存档」页新增状态自动刷新与刷新按钮
优化改进
-
全站时间线冷启动只加载分片清单与近期推文,历史内容改为按需下载
-
全站索引分片本地留存,冷启动直接读盘,断网也能翻阅已下载的月份
-
索引分片缓存独立于「清理缓存」,清缓存不再误删用户主动下载的历史月份
-
跨账号回复索引改为流式解析,不再把整份文件与 JSON 树同时留在内存
-
移除网络请求的总时长限制,改由 socket 超时兜底,大文件在慢速网络下不再被误判超时
-
管理端建档改为轮询工作流就绪状态,替代固定等待 6 秒
-
管理端触发工作流失败时给出可操作的说明,替代原始接口报错
-
管理端「所有存档」列表按状态分组排序:未知 → 出错 → 运行中 → 已完成 → 无状态
-
管理端完整性检测结果调整顺序为 头像 → Banner → 置顶推文
-
账号筛选统一显示为「已筛选 N 人」
-
进入存档详情页时的自动加载失败不再弹出提示
-
移除未使用的 navigation-compose 依赖
问题修复
-
修复推文日期解析只认 ISO 格式,导致周二、周四的老格式推文日期显示为空、排序错乱
-
修复删除已下载月份后,推文仍留在时间线上
-
修复「删除指定推文」功能完全不可用(工作流未声明目标仓库参数,且检出的不是目标仓库)
-
修复「仅重建索引」在旧版工作流的仓库上失败时只显示原始接口报错
-
修复建档过程中切换到后台,仓库已创建但应用内不留任何记录
-
修复「所有存档」页的运行状态永不刷新,一旦标记为运行中就不再变化
-
修复索引加载失败的提示浮在页面最上方
-
修复合并索引分片时在主线程排序
Full Changelog: v1.1.0...v1.2.0
v1.1.0
[1.1.0] 更新日志:
- 新增离线阅读:本地按月缓存推文索引,配合清单哈希比对与 HTTP Range 增量更新,断网可继续翻阅已浏览过的账号
- 新增全站时间线离线兜底,断网时回读本地副本
- 新增推文正文链接识别,可点击跳转(显示简短形式,点击打开完整地址)
- 新增视频封面(取第 1 秒画面),点击进入全屏播放
- 新增个人推文页下拉刷新
- 新增 Reader 页顶栏刷新按钮
- 新增设置页「清理缓存」,显示离线索引与图片缓存占用
- 管理端新增「修复账号头像」,用主头像补齐缺失的头像文件
- 管理端完整性检测新增「头像缺失」一项,可就地一键修复
- 管理端补齐 home 工作流入口:生成索引清单、推送清晰头像(试运行 / 实际执行)
- 管理端置顶推文 ID 支持直接粘贴推文链接,自动提取数字 ID
- 管理端新建存档增加实时重名检测,输入已存在的账号名时高亮提示并禁用建档
优化改进
- 受限申请 token 改从
local.properties读取,不再写入版本库 - 审批存档申请不再自动发送评论,直接关闭 Issue
- 推文正文统一优先采用
body_text,保留原推换行 - 编辑资料 / 编辑 yml 页改用
Scaffold,修复键盘弹起时顶栏被推入状态栏 - 搜索框清除按钮改用矢量图标,移除圆形底色并修正居中
- 离线时图片加载失败自动收起占位,不再留下大片空白
- 移除未使用的
POST_NOTIFICATIONS权限 - 清理死代码与冗余注释
问题修复
- 修复推文日期按 UTC 显示,与卡片内的本地时间对不上(约四分之一的推文受影响)
- 修复一个仓库对应多个账号时,资料缓存、离线索引与头像检测互相串数据
- 修复个人页视频完全不显示、全站时间线视频显示为空白块
- 修复完整性检测在并发遍历时可能崩溃
- 修复导入书签文件格式不正确时崩溃
- 修复保存 GIF 图片时崩溃
- 修复视频退到后台后仍继续播放
- 修复下载视频无超时设置,服务器无响应时卡死
- 修复挂载 VPN 时网络恢复后图片不会重新加载
- 修复大账号每次加载重复构建未被使用的日期树
Full Changelog: 1.0.0...1.1.0
v1.0.0
推文存档 v1.0.0
翻阅存档
- 列表 — 所有收录的账号,一屏看完
- 全站 — 把所有人的推文汇成一条时间线,想只看某几个人就筛一下
- 关注 — 把某个账号设成主页,打开应用直接进他的时间线
- 日期 — 按年、月、日折叠展开,想看哪天点哪天
- 图片 — 单独看一个账号的所有图片,可以存到相册
推文本身
推文是原生画出来的,不是塞了个网页进来。所以图片、视频、引用的原推、下面的回复,都按它本来的样子排布,滑动也跟手。
时间显示精确到秒,按你手机所在的时区。
分享的时候可以选四种链接:推特原链接、推文编号、存档定位链接、短码。
找东西
搜正文、搜账号名都可以。也支持直接粘贴网页版分享出来的定位短码,一贴就跳到那条推文。
收藏
看到想留下的推文点个收藏。回到书签页点一下,会弹出一张卡片,就是那条推文完整的样子——不用跳页,不打断你正在看的东西。
收藏可以导出成文件备份,换手机导进来就行。
其他
- 浅色 / 深色 / 跟随系统
- 可以设置打开应用先进哪一页
- 想留档某个账号,应用里直接就能提交申请
说明
应用只读取存档内容,不会上传或修改任何东西。
所有内容都来自互联网档案馆的历史快照,版权归原作者所有。如果你是某个存档账号的本人,希望移除相应内容,可以在仓库提 Issue。
愿世间再无痛苦,唯爱永不独行