Skip to content

Releases: FengByX/Pawchive

Pawchive v1.6.8

Choose a tag to compare

@FengByX FengByX released this 05 Sep 02:50

Bug Fixes

搜索多选功能

  • 修复长按选中后屏蔽按钮不显示、无法取消选择的问题
    • 选中追踪从 position 改为 creator key(service|id),列表更新不丢失选中态
    • 新增 onSelectionChanged 回调,Action Bar 计数/按钮状态实时刷新

搜索空提示层叠加

  • 修复搜索有结果时仍显示"暂无相关创作者"图层的问题
    • ViewModel 层:有结果时显式清空 emptyHintResId
    • Fragment 层:有结果时强制隐藏空提示层(防御性兜底)

搜索结果为空的误导

  • 创作者缓存加载失败时不再静默显示"暂无",改为提示"加载失败,请下拉刷新重试"

画中画/分屏恢复

  • 修复从画中画恢复全屏后底部 Tab 栏在二级页面错误重现的问题
    • onResume 中根据返回栈状态恢复底部导航可见性

Pawchive v1.6.7

Choose a tag to compare

@FengByX FengByX released this 31 Aug 04:35

Bug Fixes

  • 创作者收藏重新进入显示暂无收藏(适配 savedInstanceState + Tab 状态恢复)
  • 进入创作者收藏后仍需手动下拉刷新(新增 onResume 触发数据加载)
  • 搜索创作者返回空结果(缓存未就绪时 query 丢失 + 无重试机制)

New Features

  • 搜索页创作者多选屏蔽(长按进入多选模式,支持全选/批量屏蔽,Material3 确认对话框)

v1.6.6

Choose a tag to compare

@FengByX FengByX released this 22 Aug 03:28

变更内容

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

Choose a tag to compare

@FengByX FengByX released this 19 Aug 13:51

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

Choose a tag to compare

@FengByX FengByX released this 15 Aug 06:43

修复内容

  • 修复下载任务卡在等待中:应用重启标记中断记录为失败,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, ...) 记录完整堆栈,后续反馈可一眼定位具体失败点
  • 三语 strings 资源同步更新(中/英/日)

Release APK 体积:14.07 MB

v1.6.2

Choose a tag to compare

@FengByX FengByX released this 12 Aug 02:17

修复了一些已知问题。

Pawchive v1.5.9

Choose a tag to compare

@FengByX FengByX released this 10 Aug 03:59

v1.5.9 更新内容:

  • 修复深色模式下收藏/设置/下载界面白屏
  • 修复下载视频一直等待中的问题(自动重排卡住的任务)
  • 启动界面可配置(默认进入收藏页),收藏页默认显示收藏作者
  • 首页同一创作者的作品只显示最新一条(设置可开关)
  • 首页新增批量屏蔽功能:长按帖子进入多选,可一键屏蔽多个创作者
  • 文案支持中/英/日三语

Pawchive v1.5.8

Choose a tag to compare

@FengByX FengByX released this 08 Aug 06:03

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

Choose a tag to compare

@FengByX FengByX released this 07 Aug 10:45

Pawchive v1.5.6

🔐 修复登录失效循环(Login Expiry Loop)

  • 根因:WebView 过盾时捕获的 Cloudflare cookie 中混入了 Flask 匿名 session cookie,被原样注入 API 请求,与真实登录 session 形成重复 cookie(session=<匿名>; session=<真实>),服务端取到匿名会话 → 401 → 误判"登录已失效"并清除真实会话 → 登录后立即被踢出、无限循环
  • 修复
    • 捕获/持久化/恢复 Cloudflare 凭据时一律剔除 session= 段,真实会话只由登录流程提供
    • 请求合并 cookie 时二次过滤,杜绝任何路径的 session 泄漏
    • 登录后 60 秒宽限期内单个 401 不再立即清除会话(防误判循环,可自愈)
  • 兼容性:旧版本已污染的本机凭据会在升级后自动清洗,无需重新安装或清除数据

安装包:Pawchive-v1.5.6.apk(versionCode 56)

Pawchive v1.5.5

Choose a tag to compare

@FengByX FengByX released this 06 Aug 02:47

Pawchive v1.5.5

🔄 加载与过盾方式回退(v1.4.9 方案)

  • 加载方式回退:内容请求改为直接发出,不再在请求前挂起等待 Cloudflare 过盾挑战(原来最多白等 5-15 秒转圈)
  • 过盾方式回退:遇到 403 时由网络层自动强制过盾并重试一次,过盾失败快速返回错误,不会出现双重超时等待
  • 保留增强:应用启动/回到前台时后台预热过盾(preheat),内容请求直接发出时大概率已带有效凭据 → 秒开
  • 创作者名预取同步改为直接请求(403 自动重试)

安装包:Pawchive-v1.5.5.apk(versionCode 55)