Files
JKVideo/CHANGELOG.md
Developer 3f82646496 init
2026-03-26 12:15:40 +08:00

6.9 KiB
Raw Permalink Blame History

Changelog

所有重要更新都记录在此文件中。 格式参考 Keep a Changelog


[1.0.15] - 2026-03-26

新增

  • UP主主页:视频详情页点击 UP 主名称可进入创作者主页(/creator/[mid]),展示头像、简介、粉丝数、投稿数及视频列表(分页加载)
  • 缓存管理:设置页新增「存储」区块,实时显示缓存大小,支持一键清除 expo-image 磁盘/内存缓存及通用缓存目录

优化

  • 性能:封面图全面改用 expo-image(内存/磁盘两级缓存,recyclingKey 复用 UI 树节点FlatList 开启 removeClippedSubviewsbuvid3 改为懒初始化,首屏加载快约 30ms
  • 搜索体验搜索结果列表高亮命中词HTML 标签过滤);空态增加图标+文案;防抖 300ms 减少无效请求
  • 深色模式:修补设置页遗漏的硬编码颜色,外观/流量切换按钮、退出登录按钮全部跟随主题
  • 登录安全SESSDATA 迁移至 expo-secure-store 加密存储Web 降级 AsyncStorage

修复

  • 登录后头像不更新:将 getUserInfo() 移入 authStore.login(),延迟 1s 后台执行,避免触发新会话并发风控,登录完成后头像立即刷新
  • getFollowedLiveRooms 登录后返回空login() 内同步调用 getUserInfo 导致 FollowedLiveStrip 并发请求被平台风控拦截;改为 setTimeout(1000) 非阻塞后台拉取修复
  • getUploaderVideos 无数据/x/space/wbi/arc/search 需要 WBI 签名,补全 getWbiKeys() + signWbi() 调用
  • getFollowedLiveRooms 字段兼容:新增 code !== 0 校验及 list ?? rooms ?? [] 兼容不同 API 版本返回结构

[1.0.13] - 2026-03-25

修复

  • 小窗 PanResponder 闭包过期useRef(PanResponder.create(...)) 捕获初始 roomId=0 / bvid="",导致点击小窗跳转到错误页面;改用 storeRef 模式保持最新值
  • 直播小窗进入详情无限 loadinguseLiveDetail 使用 cancelled 闭包标志effect cleanup 后 fetch 被静默丢弃;改用 latestRoomId ref 比对替代 cancelled 模式
  • 进入播放器页面小窗不关闭:视频/直播详情页进入时通过 useLayoutEffect + getState().clearLive() 同步清除小窗,避免双播和资源竞争
  • BigVideoCard 与直播小窗冲突:首页 BigVideoCard 自动播放与直播小窗竞争解码器资源;小窗活跃时跳过 Video 渲染,仅显示封面图
  • 退出全屏视频暂停互斥渲染后竖屏播放器重新挂载react-native-video seek 后不自动恢复播放;onLoad 中强制 paused 状态切换触发播放

优化

  • 视频播放器单实例:竖屏/全屏互斥渲染({!fullscreen && ...} / {fullscreen && ...}),不再同时挂载两个 Video 解码器,减半 GPU/内存占用
  • onProgress 节流progressUpdateInterval 从 250ms 调为 500ms回调内增加 450ms 节流和 seeking 跳过,减少重渲染
  • 移除调试日志:清理 NativeVideoPlayer 中遗留的 console.log
  • 下载页 UI 优化:下载管理页交互和暗黑主题适配

[1.0.12] - 2026-03-25

新增

  • UP主信息:视频详情页博主名称下方展示粉丝数和视频数(getUploaderStat/x/web-interface/card
  • 视频相关推荐:详情页推荐列表改为基于当前视频(getVideoRelated/x/web-interface/archive/related),不再与首页 feed 共用

修复

  • 直播全屏退出暂停:全屏改用 position:absolute 覆盖Video 组件始终在同一棵 React 树中,不再因 Modal 切换导致重建暂停;退出全屏时直播自动暂停
  • 直播画质选中changeQuality 强制用请求的 qn 覆盖服务端协商值,画质面板高亮与用户选择一致
  • 直播画质过滤:过滤 qn > 10000 的选项(杜比/4K最高仅展示原画
  • 推荐视频导航:点击推荐列表改用 router.replace,避免详情页无限堆叠

优化

  • 直播画质面板:改为居中 Modal 弹出框
  • 视频详情 Tab:按钮向左靠齐,移除均分宽度
  • 评论排序按钮:统一为实心背景风格(#f0f0f0#00AEEC),与直播分区 Tab 一致
  • 设置页按钮:外观/流量选项按钮统一为实心背景风格

[1.0.11] - 2026-03-24

新增

  • 暗黑模式:全局主题系统(utils/theme.ts),支持亮色 / 暗色一键切换,覆盖所有页面和组件
  • 节流模式:设置页新增流量节省开关,开启后使用低画质封面、首页视频不自动播放、视频默认 360p 画质
  • 本地二维码生成:登录二维码改用 react-native-qrcode-svg 本地渲染,移除对 api.qrserver.com 的外部依赖,提升可靠性

修复

  • SeasonSection 背景色:合集组件背景色与父容器不一致,现跟随主题色 (theme.card) 正确显示
  • 推荐列表 Loading 状态:空列表加载中未显示 spinnerListEmptyComponent 条件逻辑反转)
  • 合集滚动定位偏移getItemLayout offset 计算未计入卡片间距(gap: 10),导致 scrollToIndex 定位不准
  • 推荐视频卡片双边框:相邻推荐视频卡片之间出现双分割线

[1.0.0] — 2026-03-20

首个正式版本

视频播放

  • DASH 完整播放DASH 接口 → buildDashMpdUri() 生成本地 MPD → ExoPlayer 原生解码
  • 支持多清晰度切换360P / 480P / 720P / 1080P / 1080P+ / 4K
  • BigVideoCard 首页内联 DASH 静音自动播放,支持水平手势快进、进度条/缓冲条
  • 全局迷你播放器MiniPlayer切换页面后底部浮层续播
  • WebView 降级方案NativeVideoPlayer兼容 Expo Go 环境

直播

  • 直播 Tab 顶部显示关注主播在线状态
  • 双列直播卡片网格 + 横向分区筛选
  • 热门列表中穿插直播推荐卡片
  • LivePlayer 支持 HLS 多画质切换
  • 直播弹幕 WebSocket 实时接收,舰长标记 + 礼物计数

弹幕系统

  • 视频弹幕XML 全量拉取 + 时间轴同步 drip 渲染
  • DanmakuOverlay 飘屏覆盖层5 车道滚动)
  • DanmakuList 支持实时直播模式(保留最近 500 条)

搜索 & 内容

  • 视频关键词搜索 + 分页加载
  • 视频详情:简介 / 评论 / 弹幕 三 Tab
  • 推荐视频流(无限滚动)
  • 评论列表(热评 / 最新排序切换)

账号 & 设置

  • 扫码登录(二维码 + 2s 轮询 + SESSDATA 自动提取)
  • 登录态持久化AsyncStorage
  • 封面图清晰度设置(高清 / 普通,节省流量)

下载 & 分享

  • 多清晰度视频后台下载
  • 下载管理页(播放、删除已下载视频)
  • 局域网 HTTP 服务器,生成 QR 码分享,同 Wi-Fi 设备扫码直接播放

跨平台

  • Android、iOS、Web 三端支持
  • Expo Go 扫码快速运行UI 预览模式)
  • Dev Build 完整功能DASH 原生播放)