79 Commits
Author SHA1 Message Date
beyond 21f347e588 优化页面转场、预测返回与首页沉浸取色
复用底栏并恢复首页轮播状态,减少页面返回时的重复计算。统一预测返回的跟手、完成及取消动效,保留左右手势方向。增强首页海报主色并衔接下方背景,修复裁剪、暖色和灰度取色,补充回归测试及性能测量脚本。

验证:assembleDebug、testDebugUnitTest(64项)及 git diff --check 通过。
2026-10-26 16:34:22 +08:00
beyond 4dd07f84e7 小调整 2026-09-12 14:15:36 +08:00
beyond 0dfb3788e8 首页优化 2026-09-07 17:13:05 +08:00
beyond dd1c62f0f0 小优化 2026-09-07 16:34:29 +08:00
beyond 391797d377 优化播放器功能,增加播放器设置 2026-09-06 23:26:49 +08:00
beyond e3e8120e8b 优化播放器界面 2026-09-06 19:47:26 +08:00
beyondandClaude Opus 5 29601803f5 修复: 进度条seek完成后同步currentPositionMs防止抖动
- 重置isSeeking前先将currentPositionMs同步到seek目标位置
- 防止轮询循环在player追上之前用旧位置覆盖显示

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 19:04:34 +08:00
beyondandClaude Opus 5 614538dc98 修复: LumaSeekBar重复modifier参数
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 19:01:06 +08:00
beyondandClaude Opus 5 84d4914d8a 播放器UI优化: 上移顶部、缩小胶囊、修复进度条抖动
- 顶部padding从LumaSpacing.md(16dp)减到LumaSpacing.xs(8dp)
- 胶囊框padding从16dp/2dp减到12dp/0dp,字体12sp→11sp
- 进度条抖动修复:seek完成后延迟300ms重置isSeeking
  防止轮询循环在player追上之前覆盖currentPositionMs
- 新增seekCompletedVersion计数器触发延迟重置

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 18:57:56 +08:00
beyondandClaude Opus 5 702e9810d0 播放器: 时间/网速/电量布局调整
- PlayerStatusBar拆分为PlayerTimeDisplay和PlayerNetworkInfo两个独立组件
- 时间显示在关闭按钮上方(左侧)
- 网速+电量显示在播放工具按钮上方(右侧)
- 减少间距从8dp到2dp

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 18:47:45 +08:00
beyondandClaude Opus 5 7c991c04be 修复: 剧集播放器logo使用series ID获取
- 剧集的logo在series级别,不是episode级别
- 构建logo URL时检测是否为剧集(seriesId != id)
- 剧集使用seriesId请求logo,电影使用自身id
- 确保电视剧和电影都能正确显示emby艺术文字

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 18:37:59 +08:00
beyondandClaude Opus 5 807445eafa 修复: 更新selectedItem以正确传递logo给播放器
- 获取series logo后同时更新item和selectedItem
- target = selectedItem ?: item,仅更新item不够
- 确保播放器的titleLogoUrl正确获取logo URL

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 18:31:46 +08:00
beyondandClaude Opus 5 d7726424d9 修复: 播放器series logo获取改为独立LaunchedEffect
- 将series logo获取拆分为独立的LaunchedEffect
- 先加载episode item,再异步获取series logo
- 避免在同一个LaunchedEffect中修改state导致重组问题

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 18:24:13 +08:00
beyondandClaude Opus 5 fdf14f7dd2 播放器: 剧集无logo时从剧集(series)获取logo
- PlayerDestination加载剧集后检查是否有logo
- 若剧集无logo,额外请求series item获取其logo tag
- 合并到剧集的imageTags中,确保播放器显示正确的艺术文字

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 18:21:13 +08:00
beyondandClaude Opus 5 ea6a751e72 播放器: 无logo时显示剧名而非集名
- VideoPlayerScreen新增seriesName参数
- 无logo图片时显示seriesName(剧名)而非title(集名)
- AppNavHost传递target.seriesName给播放器

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 18:15:24 +08:00
beyondandClaude Opus 5 0bb52f3ec8 播放器: BatteryIcon颜色统一到LumaColors + 清理空行
- BatteryIcon: 硬编码颜色→LumaColors.offline/ratingStar/online
- 清理sed替换产生的多余空行

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 18:09:56 +08:00
beyondandClaude Opus 5 34e2ef6bd7 播放器优化: 菜单状态合并、连播偏好持久化、间距统一
- 新增PlayerMenu枚举,替代5个独立boolean状态(showSubtitleMenu等)
- 菜单切换逻辑统一为activeMenu.toggle模式
- BackHandler简化为activeMenu != PlayerMenu.None
- 菜单onDismiss统一关闭activeMenu
- confirmBeforeContinuousPlayback持久化到SharedPreferences
- 顶部间距16.dp→LumaSpacing.md
- 清理sed替换产生的多余空行

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 18:02:00 +08:00
beyondandClaude Opus 5 ebd6963bf5 UI细节优化: 间距令牌、字体统一、LazyList key
- LumaComponents: LumaSettingRow/LumaPageTopBar 间距改用LumaSpacing令牌
- LumaComponents: LumaSettingRow标题fontSize改用LumaTypography.body
- HomeScreen: SectionTitle ExtraBold→Bold统一, MyMediaGrid LazyRow添加key
- VideoPlayerScreen: 播放器剧集列表LazyColumn添加key

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 17:36:32 +08:00
beyondandClaude Opus 5 85da03360d 回退搜索历史清除确认对话框
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 17:12:32 +08:00
beyondandClaude Opus 5 3a01b42aeb 功能补全: 错误重试、确认对话框、TMDB错误状态
- AppNavHost: 详情页加载失败显示LumaErrorState+重试按钮
- SearchScreen: 搜索历史清除添加GlassConfirmDialog确认对话框
- SearchAllScreen: 修复重试机制(添加retryToken触发重新搜索)
- VideoPlayerScreen: 播放错误添加重试按钮(re-prepare+play)
- RecordsScreen: 日历TMDB API失败显示错误状态而非静默空白

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 17:06:37 +08:00
beyondandClaude Opus 5 6e5c9fce95 全面安全加固 + UI一致性 + 功能修复 + 性能优化
安全修复:
- usesCleartextTraffic=false + network_security_config.xml (LAN例外)
- 备份规则排除数据库/SP/缓存 (backup_rules.xml, data_extraction_rules.xml)
- ProGuard Release移除 Log.d/Log.v
- EmbyRepository 日志脱敏 + API Key安全注释
- EmbyServer URL长度/主机名/端口验证

UI一致性:
- LumaDesignSystem 新增16个颜色令牌 + LumaBorders + 2个排版令牌
- 6个屏幕文件硬编码颜色统一到LumaColors
- 排版统一 17sp→18sp, 30sp→32sp, 34sp→32sp

功能修复:
- 首页MyMediaGrid点击导航到库列表
- 搜索齿轮图标导航到设置
- FavoritesAllScreen/HomeLibraryAllScreen 添加下拉刷新
- RecordsScreen 13+硬编码中文→stringResource() + 修复count bug
- 新增16个日历字符串(中英文)

性能优化:
- TMDB数据类添加@Immutable注解
- HomeContentCache添加LRU驱逐策略(最多3个快照)
- VideoPlayerScreen内部轮询从250ms降至500ms

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 16:43:25 +08:00
beyond c95c8e38f7 小调整 2026-09-06 14:53:32 +08:00
beyond 65519942fe fix: 首页轮播从最新50个中随机选8个,每次打开app都不同 2026-09-06 14:13:36 +08:00
beyond 67b625101a fix: 首页轮播每次打开app都随机排序(latestItems保持10个) 2026-09-06 14:11:30 +08:00
beyond 72df0c7a6d fix: 首页轮播图下拉刷新时随机排序,增加获取数量到20
- 首次加载保持API排序(一致性),下拉刷新后shuffle增加多样性
- getLatestItems limit 10→20,让更多内容参与轮播选择
2026-09-06 14:08:18 +08:00
beyond f44bc036e8 fix: 第三轮优化 — @Immutable覆盖、rememberImageRequest辅助函数、LazyRow keys
- EmbyApiModels: 8个嵌套类型添加@Immutable(EmbyUserData/EmbyPerson/EmbyNamedReference/EmbyMediaStream/EmbyItemCounts/EmbyResourceStats/EmbyChapter/EmbyMediaSource)
- LumaComponents: 新增rememberImageRequest()辅助函数避免ImageRequest.Builder重复分配
- HomeScreen/HomeLibraryAllScreen/FavoritesAllScreen/SearchScreen/SearchAllScreen/RecordsScreen/LibraryScreen: 17处ImageRequest.Builder替换为rememberImageRequest()
- MediaDetailScreen: episodes/genres/qualities/streams LazyRow添加stable key
- LibraryScreen: servers LazyVerticalGrid添加stable key
2026-09-06 14:02:04 +08:00
beyond 0ca7cf39b7 fix: 第二轮性能优化 — 轮询合并、HTTP缓存、并行化、remember优化
- VideoPlayerScreen: 合并4个轮询循环为1个(wifi+battery+format+speed)
- VideoPlayerScreen: 移除seek bar重复progress写入
- EmbyRepository: 添加HTTP磁盘缓存(20MB) + retry interceptor
- EmbyRepository: searchItems .map{await()} → .awaitAll() 真并发
- EmbyRepository: getSeriesEpisodeCount season请求并行化
- TmdbRepository: 添加Semaphore(8)限制并发season请求
- TmdbRepository: 只获取最近5个season减少请求数
- ServerRepository: addServer/updateServer改为乐观更新
- ServerRepository: init()添加双重检查锁定线程安全
- MediaDetailScreen: 移除调试Log.d调用
- AppNavHost: onViewAll lambda添加remember
- SearchResultsCache: 单槽→LruCache(5)支持多搜索词缓存
- RecordsScreen: LaunchedEffect添加watchlistVersion key支持刷新
- RecordsScreen: filterCalendarEpisodes/groupBy添加remember
- RecordsScreen: 预计算watchByTmdbId Map替代O(n) find
- LumaDesignSystem: 添加isLowEndDevice检测禁用lens效果
- LiquidGlass: 低端设备跳过lens GPU pass
- HomeScreen/LibraryScreen/RecordsScreen: ImageRequest.Builder remember
2026-09-06 13:47:27 +08:00
beyond 3670466a65 fix: 第一轮性能优化 — R8启用、协程泄漏修复、@Immutable注解、状态提取、并行化
- Release build 启用 R8/ProGuard + 新建 proguard-rules.pro
- MediaDetailScreen: MainScope → rememberCoroutineScope
- AppNavHost: openDetail/openHome lambda 记忆化
- VideoPlayerScreen: 提取 PlayerStatusBar 独立 Composable
- LibraryScreen: nowMillis 下沉到 ServerStatusLine 内部
- 8个核心数据类添加 @Immutable 注解
- TmdbCalendar: coroutineScope+async 并行化 season 请求
- SearchScreen: derivedStateOf 正确观察 SnapshotStateList
- HomeScreen: MediaPoster/ContinueWatchingPoster ImageRequest remember
- MediaDetailScreen: cast/recommendations/resources LazyRow 添加 key
- RecordsScreen: LaunchedEffect key 用 hashCode 替代 joinToString
2026-09-06 13:30:56 +08:00
beyond b49fbdca46 优化资源数量显示 2026-09-06 12:34:42 +08:00
beyond 7a06ec9a56 MainApp.kt 10 个 Lambda remember + 双重检测合并
ServerRepository.kt	StateFlow.update + 并行检测 + 单次更新
EmbyRepository.kt	共享 OkHttp + 有界 Channel + TTL + 剧集缓存
TmdbRepository.kt	LruCache 替代 ConcurrentHashMap
LumaApplication.kt	新建 — Coil ImageLoader 缓存配置
AndroidManifest.xml	注册 LumaApplication
FavoriteRepository.kt	新增 isFavoritedAsync
IconLibrary.kt	移除双重 reload
LumaComponents.kt	LumaMediaCard 轻量 pointerInput
LiquidGlass.kt	SegmentedControl 去 BoxWithConstraints
HomeScreen.kt	episodeCounts 用 mutableStateMapOf
MainActivity.kt	保持主线程初始化(已验证安全)
2026-09-06 12:08:06 +08:00
beyond 0a260a47c6 优化首页和底部导航栏性能 2026-09-05 21:30:08 +08:00
beyond ff2724a302 小调整 2026-09-05 20:50:19 +08:00
beyond a0e06eeed7 小优化 2026-09-05 20:19:52 +08:00
beyond c88eb1868a 小优化 2026-09-05 20:12:09 +08:00
beyond 1946319d22 小调整 2026-09-05 19:43:52 +08:00
beyond 082c42e177 小优化 2026-09-05 18:34:21 +08:00
beyond 67c602a5ef 小优化 2026-09-03 15:22:46 +08:00
beyond e81f5485c6 首页和详情页增加下拉刷新 2026-08-31 23:38:23 +08:00
beyond b37cf69068 搜索界面小调整 2026-08-31 21:59:17 +08:00
beyond d6149d08a1 小调整 2026-08-31 21:24:28 +08:00
beyond ae5b82c6fe 优化剧集详情 2026-08-31 21:09:37 +08:00
beyond e076f17061 小优化 2026-08-31 20:51:37 +08:00
beyond 6cb94b7793 小优化 2026-08-31 15:54:09 +08:00
beyond 7f24697ece 1、完成收藏和追剧日历 2026-08-31 03:58:55 +08:00
beyond f1b5a96c2f 1、完善、优化搜索界面功能 2026-08-30 22:17:01 +08:00
beyond 7aad0982df 修改服务器中相关功能调整和优化 2026-08-30 17:13:57 +08:00
beyond e33dcf533c 服务器列表优化 2026-08-30 02:18:24 +08:00
beyond bbbebe38eb 1、首页性能优化 2026-08-29 21:14:46 +08:00
beyond eaf5e432ff 1、增加剧集详情页演员表,资源库信息,推荐,媒体信息,接入tmdb
2、优化剧集详情页性能,UI,和数据请求逻辑
2026-08-29 16:58:58 +08:00
beyond ca5ab982da feat: 完善播放器控制、媒体轨道与 Emby 状态上报
- 修复播放进度圆点与轨道位置偏移
- 优化字幕、剧集、音轨及播放工具弹层
- 完善剧集图片、集数、标题和选中状态展示
- 新增音轨选择、关闭及默认音轨自动恢复
- 新增章节跳转、跳过片头片尾和连播确认
- 支持从单集入口自动加载完整剧集列表
- 调整 Emby 每 10 秒及关键操作即时状态上报
- 补充章节识别、手势和播放上报单元测试
2026-08-29 03:34:15 +08:00