Commit Graph

102 Commits

Author SHA1 Message Date
Developer
9347c8752d 1 2026-03-11 20:53:18 +08:00
Developer
4e8beae209 fix: add unmount cancellation guard, simplify keyExtractor, update spec 2026-03-11 14:48:19 +08:00
Developer
287a608e97 refactor: memoize renderItem, document viewability ref pattern, remove redundant assertion 2026-03-11 14:42:47 +08:00
Developer
8885f83b8a feat: refactor homepage FlatList for big-card layout with viewport autoplay 2026-03-11 14:38:31 +08:00
Developer
3f9e79496a refactor: deduplicate inline styles and document fetch effect dependency in BigVideoCard 2026-03-11 14:36:07 +08:00
Developer
d09c1d7346 fix: BigVideoCard stale closure, visibility guard, mediaContainer positioning 2026-03-11 14:32:40 +08:00
Developer
dfa8fc6dc8 fix: remove unused useRouter import from BigVideoCard 2026-03-11 14:28:34 +08:00
Developer
f10e8b92d0 feat: add BigVideoCard with muted autoplay at qn=16 2026-03-11 14:26:27 +08:00
Developer
190f6a58bd feat: add videoRows utility for big-card list layout 2026-03-11 14:20:20 +08:00
Developer
e608dcc09a docs: finalize chunk 3 plan (import ordering, dependency note) 2026-03-11 14:15:06 +08:00
Developer
992c7a3a6a docs: fix chunk 3 plan issues (unused import, step ordering, styles.row) 2026-03-11 14:13:25 +08:00
Developer
bc514c4a15 docs: add big video card implementation plan 2026-03-11 14:11:25 +08:00
Developer
56b0456b17 docs: add big video card design spec 2026-03-11 14:03:12 +08:00
Developer
71ffbf3585 fix: simulate landscape via CSS transform when expo-screen-orientation unavailable 2026-03-11 10:30:59 +08:00
Developer
a2d401da40 fix: fullscreen player fills modal instead of using portrait 16:9 dimensions 2026-03-11 10:26:52 +08:00
Developer
4d7f943618 fix: use correct danmaku XML endpoint (comment.bilibili.com/{cid}.xml) 2026-03-11 10:23:47 +08:00
Developer
ea184842e4 fix: player height collapse and danmaku empty state 2026-03-11 10:20:13 +08:00
Developer
497dd33a35 fix: lazy-require expo-screen-orientation for Expo Go compatibility 2026-03-11 10:13:54 +08:00
Developer
64ce3031a6 feat: merge danmaku-fullscreen - resolve NativeVideoPlayer conflict
Combines master's shotTimestamps/pvdata thumbnail improvements and
TouchableWithoutFeedback tap layer with feature/danmaku-fullscreen's
DanmakuItem import, DanmakuOverlay render, showDanmaku state,
onTimeUpdate/initialTime/danmakus/isFullscreen props, danmaku toggle
button, and useWindowDimensions for rotation-aware dimensions.
2026-03-11 10:07:22 +08:00
Developer
880e2696da 1 2026-03-11 10:03:46 +08:00
Developer
72a8fdfdc0 fix: address code review issues in danmaku components 2026-03-11 10:01:50 +08:00
Developer
a9b5b364a2 feat: integrate danmaku fetching and list in video detail page 2026-03-10 22:53:35 +08:00
Developer
6871d061fc feat: add orientation lock and dual-instance fullscreen to VideoPlayer 2026-03-10 22:52:05 +08:00
Developer
85ceec8b58 feat: add danmaku overlay + time tracking to NativeVideoPlayer 2026-03-10 22:50:48 +08:00
Developer
d1b66541d2 feat: add DanmakuOverlay component 2026-03-10 22:48:09 +08:00
Developer
44b4910135 feat: add DanmakuList component 2026-03-10 22:47:11 +08:00
Developer
d2e259e9f4 feat: add getDanmaku API function 2026-03-10 22:46:29 +08:00
Developer
bfeae44bf9 feat: add danmaku XML parser and color util 2026-03-10 22:44:24 +08:00
Developer
8572f30e16 feat: add DanmakuItem type 2026-03-10 22:43:16 +08:00
Developer
e5568b6b6b chore: install expo-screen-orientation, set orientation to default 2026-03-10 22:42:29 +08:00
Developer
3ec6433e14 chore: add .worktrees to .gitignore 2026-03-10 22:38:58 +08:00
Developer
ee213347c7 feat: unified player controls with heatmap progress + thumbnail preview
- VideoPlayer: 移除 onProgress/seekTo props,新增 bvid/cid 向下透传
- [bvid].tsx: 删除 HeatProgressBar 及 currentTime/duration/seekCmd state
- HeatProgressBar.tsx: 删除(逻辑已合并进 NativeVideoPlayer)
- 计划文档已保存到 docs/superpowers/plans/
2026-03-10 21:48:23 +08:00
Developer
6023ec55ae feat: rewrite NativeVideoPlayer with unified custom controls overlay 2026-03-10 21:46:19 +08:00
Developer
1efeba2d9e docs: add player UI redesign spec 2026-03-10 21:40:02 +08:00
Developer
836b2ceb28 fix: 末行单卡片居中 + 卡片高度不一致
- columnWrapperStyle justifyContent 改为 flex-start,末行单卡片靠左
- title 固定 height: 32px(2行 × lineHeight 16),
  使每张卡片 info 区高度相同,消除高度不一致
2026-03-10 21:14:24 +08:00
Developer
621fbebc08 fix: 下拉刷新 spinner 被顶部导航栏遮挡
改用 RefreshControl 并设置 progressViewOffset = insets.top + NAV_H,
将刷新指示器下移到导航栏以下,使其可见。
2026-03-10 21:10:01 +08:00
Developer
9ceb3b0d94 fix: 加载更多完成后页面抖动/导航栏弹出
ListFooterComponent 在 loading 结束时从 ActivityIndicator 变为 null,
content 高度骤降触发虚假 scroll event,diffClamp 误判为上滑把导航栏顶出。
改为 footer 保持固定高度 48px,仅切换 spinner 的显隐,消除高度变化。
2026-03-10 21:07:40 +08:00
Developer
f2b4c404c3 fix: filter out ad/live/invalid cards from recommend feed
推荐流中混入广告、直播等特殊条目,缺少 pic/duration/bvid 字段,
导致页面出现空白卡片。过滤掉不满足条件的条目。
2026-03-10 20:50:44 +08:00
Developer
4d71f39ee9 fix: proxy B站图片 CDN 解决 web 端防盗链图片不显示问题
- dev-proxy.js 新增 /bilibili-img 路由,代理 *.hdslb.com 并注入正确 Referer
- utils/imageUrl.ts 新增 proxyImageUrl(),web 端将图片 URL 转为本地代理地址
- VideoCard / CommentItem / MiniPlayer / [bvid] 对所有 B站图片应用 proxyImageUrl
2026-03-10 20:47:14 +08:00
Developer
4c72ff3cdd 视频清晰度 2026-03-10 20:21:22 +08:00
Developer
03d7d3c5c3 fix: quality switch not updating video playback
- Use qn-specific MPD filename (bili_dash_{qn}.mpd) so each quality
  produces a distinct URI that triggers react-native-video to reload
- Add key={resolvedUrl} on <Video> to force remount on source change
2026-03-10 20:18:47 +08:00
Developer
35371cebff fix: switch DASH delivery from data: URI to local MPD file via expo-file-system
data: URI scheme for DASH manifests is unreliable in ExoPlayer.
Write MPD XML to FileSystem.cacheDirectory/bili_dash.mpd and pass
file:// URI to react-native-video instead. URL resolution is now
async via useEffect+state in NativeVideoPlayer.
2026-03-10 20:16:01 +08:00
Developer
911eeb9052 fix: use snake_case field names matching Bilibili DASH API response
B站 API 实际返回 segment_base.initialization / index_range
而非 segmentBase.Initialization / indexRange,修正类型定义和 MPD 生成逻辑。
segment_base 设为可选,缺失时不生成 SegmentBase 元素(ExoPlayer fallback)。
2026-03-10 20:09:50 +08:00
Developer
5bb6a3cd68 feat: unlock 1080P+ on Android via DASH streaming
- getPlayUrl uses fnval=16 (DASH) on Android, keeping fnval=0/html5 for iOS/web
- New utils/dash.ts builds a valid DASH MPD from Bilibili's segmentBase ranges
  and returns it as a data: URI for ExoPlayer consumption
- NativeVideoPlayer selects DASH path (type='mpd') or durl fallback automatically
- Extend PlayUrlResponse types with DashVideoItem/DashAudioItem/DashSegmentBase
2026-03-10 20:04:48 +08:00
Developer
4dbb3cb3d6 1 2026-03-10 19:22:38 +08:00
Developer
cf20b016ff 1 2026-03-10 19:04:18 +08:00
Developer
18eebfb0d2 1 2026-03-10 17:25:18 +08:00
Developer
c9c62d3e48 1 2026-03-06 14:52:28 +08:00
Developer
9b7e728c9d 1 2026-03-06 12:58:41 +08:00
Developer
b09c3731f9 chore: add dev server config and update tsconfig
- Add .claude/launch.json for Expo Dev Server (port 8081)
- Update tsconfig.json with expo-router typedRoutes include paths
2026-03-05 18:09:44 +08:00