Releases: FengByX/Pawchive
Releases · FengByX/Pawchive
Release list
Pawchive v1.6.8
Bug Fixes
搜索多选功能
- 修复长按选中后屏蔽按钮不显示、无法取消选择的问题
- 选中追踪从 position 改为 creator key(service|id),列表更新不丢失选中态
- 新增 onSelectionChanged 回调,Action Bar 计数/按钮状态实时刷新
搜索空提示层叠加
- 修复搜索有结果时仍显示"暂无相关创作者"图层的问题
- ViewModel 层:有结果时显式清空 emptyHintResId
- Fragment 层:有结果时强制隐藏空提示层(防御性兜底)
搜索结果为空的误导
- 创作者缓存加载失败时不再静默显示"暂无",改为提示"加载失败,请下拉刷新重试"
画中画/分屏恢复
- 修复从画中画恢复全屏后底部 Tab 栏在二级页面错误重现的问题
- onResume 中根据返回栈状态恢复底部导航可见性
Pawchive v1.6.7
Bug Fixes
- 创作者收藏重新进入显示暂无收藏(适配 savedInstanceState + Tab 状态恢复)
- 进入创作者收藏后仍需手动下拉刷新(新增 onResume 触发数据加载)
- 搜索创作者返回空结果(缓存未就绪时 query 丢失 + 无重试机制)
New Features
- 搜索页创作者多选屏蔽(长按进入多选模式,支持全选/批量屏蔽,Material3 确认对话框)
v1.6.6
变更内容
Bug 修复
- 修复重启应用后深色模式失效(将 applyAppearance 提前到 Application.onCreate)
- 修复视频播放器切后台再回前台后无法恢复播放的问题
- 修复下载成功后 OutputStream 未关闭导致的文件描述符泄漏
- 修复 VideoPlayerManager 释放后仍保留 PlayerView 和 listener 引用
- 修复下载任务不可取消(suspendCoroutine 改为 suspendCancellableCoroutine)
- 修复视频下载入队时可能访问已销毁 View 导致的崩溃
- 修复下载取消时无法正确停止 okdownload 任务
- 修复视频刚打开时进度条显示 100%、时长显示 00:00 的问题
- 修复视频播放器切后台再回前台后无法恢复播放的问题
- 修复下载成功后 OutputStream 未关闭导致的文件描述符泄漏
- 修复 VideoPlayerManager 释放后仍保留 PlayerView 和 listener 引用
- 修复下载任务不可取消(suspendCoroutine 改为 suspendCancellableCoroutine)
- 修复视频下载入队时可能访问已销毁 View 导致的崩溃
- 修复下载取消时无法正确停止 okdownload 任务
- 修复视频刚打开时进度条显示 100%、时长显示 00:00 的问题
改进
- 下载中心现在通过 OkDownloadManager 正确取消运行中的任务
- 切换视频时进度条正确重置
- 视频元数据延迟就绪时也能更新时长显示
v1.6.4
v1.6.4 主要变更
🚀 下载引擎重构
- 移除 WorkManager 依赖,改用协程直接执行下载
- 集成 lingochamp/okdownload 1.0.7 作为下载引擎
- 支持断点续传、OkHttp Cloudflare 凭据注入
- 彻底解决 WorkManager 初始化/Hilt 注入导致的下载卡死问题
✨ Skeleton 骨架屏
- 首页/帖子详情/搜索/创作者主页/收藏页全部替换为 shimmer 脉冲骨架屏
- 仅首次加载显示,下拉刷新不显示
- 200ms 淡入淡出过渡动画
🔧 帖子详情页修复
- 修复 URL 拼接错误
- 优先使用 img.pawchive.pw 域名加载图片
- 增加安全回退机制
📦 下载可靠性
- selfHealPending 增加 30 秒保护期避免竞态
- 增加 10 秒冷却期避免频繁触发
🗑️ 清理
- 移除 WorkManager 相关代码和依赖
- 新增 okdownload ProGuard keep 规则
v1.6.3
修复内容
- 修复下载任务卡在等待中:应用重启标记中断记录为失败,selfHeal 同步 WorkManager 终态,hasActiveWork 超时防护
- 修复图片下载通知误显示「正在下载视频」:按 IMAGE/VIDEO/ATTACHMENT 类型区分通知文案
- 修复 release 构建下载任务无法启动(本版重点修复):
- 重写 Hilt ProGuard 规则,精确保留
**_AssistedFactory、@HiltWorker构造函数、@AssistedInject构造函数、@AssistedFactory接口,防止 HiltWorkerFactory 反射创建 Worker 时因类被 R8 移除而立刻 FAILED DownloadWorker.doWork改为最外层runCatching:参数缺失/setForeground/ensureClearance/historyManager等任何早期异常都会把错误信息直接写回下载记录,不再依赖selfHealPending兜底写模糊的 "Download worker failed to start"Log.e(TAG, ...)记录完整堆栈,后续反馈可一眼定位具体失败点
- 重写 Hilt ProGuard 规则,精确保留
- 三语 strings 资源同步更新(中/英/日)
Release APK 体积:14.07 MB
v1.6.2
Pawchive v1.5.9
v1.5.9 更新内容:
- 修复深色模式下收藏/设置/下载界面白屏
- 修复下载视频一直等待中的问题(自动重排卡住的任务)
- 启动界面可配置(默认进入收藏页),收藏页默认显示收藏作者
- 首页同一创作者的作品只显示最新一条(设置可开关)
- 首页新增批量屏蔽功能:长按帖子进入多选,可一键屏蔽多个创作者
- 文案支持中/英/日三语
Pawchive v1.5.8
v1.5.8 修复内容
登录失效修复(P0)
- SessionManager:将 lastLoginAt(最近登录时间戳)持久化到 EncryptedSharedPreferences,冷启动恢复会话后 60 秒宽限期仍然生效,避免登录已失效误判
- AuthRepository:初始化时从 SessionManager.getLoginAt() 恢复 lastLoginAt;switchAccount() 切换账号后也设置登录时间戳
- AppError.from() / ApiCallHandler.runCatchingApi():公开接口(首页/搜索/帖子详情等)偶发 401 不再映射为 SESSION_EXPIRED,改为 Server(401) 显示通用错误文案,避免误导用户以为登录失效
帖子详情页链接显示修复
- SafeHtmlHelper.flattenBlockLinks():新增预处理,扁平包裹块级元素的
<a>标签(如<h3>文件名.mp4</h3>),确保 URLSpan 正确覆盖文本,链接可见可点击 - SafeLinkSpan:改为继承 URLSpan 而非 ClickableSpan,使 PostDetailFragment 的外链确认对话框拦截链路恢复工作
- PostDetailFragment:在 setText() 之前完成所有 span 替换,并使用 BufferType.SPANNABLE 指定 buffer 类型,避免 TextView 默认 BUFFER_NORMAL 丢弃 span 信息
- 新增 Robolectric 单元测试覆盖真实 Patreon 嵌入链接场景
收藏页面空白修复
- AccountFavoritesFragment:首次进入时手动调用 ViewModel.setTab(currentTab),不再完全依赖 TabLayout 的 onTabSelected 回调(该回调对默认选中的 Tab 0 不触发);onTabReselected 也会刷新数据
APK
- 文件:Pawchive-v1.5.8.apk
- 大小:9.8 MB
- 构建:Release(R8 混淆 + 资源压缩)
Pawchive v1.5.6
Pawchive v1.5.6
🔐 修复登录失效循环(Login Expiry Loop)
- 根因:WebView 过盾时捕获的 Cloudflare cookie 中混入了 Flask 匿名
sessioncookie,被原样注入 API 请求,与真实登录 session 形成重复 cookie(session=<匿名>; session=<真实>),服务端取到匿名会话 → 401 → 误判"登录已失效"并清除真实会话 → 登录后立即被踢出、无限循环 - 修复:
- 捕获/持久化/恢复 Cloudflare 凭据时一律剔除
session=段,真实会话只由登录流程提供 - 请求合并 cookie 时二次过滤,杜绝任何路径的 session 泄漏
- 登录后 60 秒宽限期内单个 401 不再立即清除会话(防误判循环,可自愈)
- 捕获/持久化/恢复 Cloudflare 凭据时一律剔除
- 兼容性:旧版本已污染的本机凭据会在升级后自动清洗,无需重新安装或清除数据
安装包:
Pawchive-v1.5.6.apk(versionCode 56)
Pawchive v1.5.5
Pawchive v1.5.5
🔄 加载与过盾方式回退(v1.4.9 方案)
- 加载方式回退:内容请求改为直接发出,不再在请求前挂起等待 Cloudflare 过盾挑战(原来最多白等 5-15 秒转圈)
- 过盾方式回退:遇到 403 时由网络层自动强制过盾并重试一次,过盾失败快速返回错误,不会出现双重超时等待
- 保留增强:应用启动/回到前台时后台预热过盾(preheat),内容请求直接发出时大概率已带有效凭据 → 秒开
- 创作者名预取同步改为直接请求(403 自动重试)
安装包:
Pawchive-v1.5.5.apk(versionCode 55)