Files
Velix-MPV-Core/memory/2026-08-30.md

11 KiB
Raw Permalink Blame History

[PROJECT:Velix VUI1] 沉浸式视觉重构完成 结论: 首页完成全屏 Hero、内容氛围色、4 级材质和 HDS 沉浸浮动导航;详情、来源 Sheet、播放器及手机/平板/深色回归均通过,Core 未修改。 文件变更: ../Velix/entry/src/main/ets/{domain/home,pages,ui}, ../Velix/DOCS/PHASE8_UI.md, ../Velix/design-qa.md, memory/* 教训: API 24 可用 HDS 导航沉浸材质,但通用 uiMaterial 需 API 26;平板模拟器需单独启动以避免与手机 HDC 端口冲突。 标签: #vui1 #harmonyos #hds #immersive #responsive #emulator

[PROJECT:Velix VUI1] 首页顶部控件固定 结论: 来源胶囊、搜索和个人入口已与 Scroll 解耦,上滑时与底部导航一样固定浮在内容之上。 文件变更: ../Velix/entry/src/main/ets/pages/HomePage.ets, memory/projects.md, memory/2026-08-30.md 标签: #vui1 #fixed-overlay #home #emulator

[PROJECT:Velix VUI1] Full-Bleed Immersive Home 结论: 首页以 Hero 的 backdrop、transition 与 ambient browsing surface 连续构成;语义环境色控制内容面和悬浮材质,Pura 90 Pro Max 初始态及滚动回归通过。 文件变更: ../Velix/entry/src/main/ets/{domain/home,pages,ui}, ../Velix/design-qa.md, memory/projects.md, memory/2026-08-30.md 标签: #vui1 #full-bleed #ambient-palette #hds #emulator

[PROJECT:Velix VUI1] 底栏图标实心化 结论: HDS 底栏保留沉浸光感,Tab 前景保持实心,选中图标继续按当前影片环境色取色。 文件变更: ../Velix/entry/src/main/ets/ui/components/FloatingNavigation.ets, ../Velix/design-qa.md, memory/projects.md, memory/2026-08-30.md 标签: #vui1 #bottom-navigation #hds #emulator

[PROJECT:Velix VUI1] Scene Continuity 结论: 背景改为覆盖 Hero 与首个 Section 的单一长尾 Scene,Backdrop 与环境色在正文后方逐步衰减,轮播同步更新背景。 文件变更: ../Velix/entry/src/main/ets/{pages,ui,domain/home}, ../Velix/design-qa.md, memory/projects.md, memory/2026-08-30.md 标签: #vui1 #scene-continuity #ambient #emulator

[PROJECT:Velix VUI1] Hero Motion Handoff 结论: 原生 Swiper 保持拖拽/速度吸附;Hero visual 底部用纵向场景渐隐交接固定 Background,只有分页 settle 后才以 420ms 固定位置过渡背景 A→B。 文件变更: ../Velix/entry/src/main/ets/pages/HomePage.ets, ../Velix/entry/src/main/ets/ui/components/HeroSection.ets 教训: loop Swiper 的 animation-end 可能返回回收页索引,需优先使用 animation-start target,并在回弹时清理 pager 状态;背景切换不能放在逐帧拖动回调。 标签: #swiper #motion-handoff #ambient

[PROJECT:Velix VUI1] VUI3 位移渐衰 结论: Hero visual 采用 160–220vp smoothstep 分段反向位移与 Alpha 交接,固定背景只在 Swiper settle 后固定位置换图;静止态保持原有 full-page scene。 文件变更: ../Velix/entry/src/main/ets/pages/HomePage.ets, ../Velix/entry/src/main/ets/ui/components/HeroSection.ets, ../Velix/entry/src/main/ets/ui/components/RemoteImage.ets 教训: 静止态由 FixedBackgroundScene 承担当前画面,滑动时才显示独立 Hero artwork bands;HDC 远程 shell 后台执行手势再延时 snapshot 可抓到真实中帧。 标签: #vui3 #hero-paging #handoff

[PROJECT:Velix VUI1] TMDB Live Data Foundation 结论: 首页生产路径已移除 Mock fallback,接入 TmdbRepository/DiscoveryProvider/API client;认证支持 API key/Bearer,首页、详情、TV season 与搜索均走统一 DTO Mapper 和 CDN resolver,凭据缺失明确报错。 文件变更: ../Velix/entry/src/main/ets/domain/home/{HomeModels,HomeRepository,DiscoveryProvider,TmdbRepository,TmdbDiscoveryProvider,tmdb/*}, ../Velix/entry/src/main/ets/pages/{HomePage,MediaDetailPage}.ets, ../Velix/scripts/build-velix-app.sh, ../Velix/TMDB.md 教训: rawfile 是本地构建注入点,tmdb.local.properties 与生成的 rawfile 必须忽略;没有真实凭据时只能验证未配置/401 错误态,不能声称 TMDB live feed 已通过。 标签: #tmdb #data-layer #cache #search

[PROJECT:Velix VUI1] TMDB Edge Fixes 结论: 详情请求等待凭据初始化,Hero 显式过滤 person;补齐 imdbId/tvdbId 映射,详情主操作改为“查找可播放资源”,演员列表支持展开查看全部。 文件变更: ../Velix/entry/src/main/ets/domain/home/{HomeModels,HomeRepository,TmdbDiscoveryProvider,tmdb/TmdbMapper}.ets, ../Velix/entry/src/main/ets/pages/MediaDetailPage.ets 标签: #tmdb #detail #edge-cases

[PROJECT:Velix VUI1] TMDB Search Pagination 结论: 搜索 UI 增加真实 TMDB total_pages/total_results 状态与“加载更多”,继续沿用 380ms 防抖和旧查询结果隔离。 文件变更: ../Velix/entry/src/main/ets/pages/HomePage.ets 标签: #tmdb #search #pagination

[PROJECT:Velix VUI1] TMDB Detail Completeness 结论: 详情模型补齐 first/last air date 与 tvdbId,推荐为空时回退 similar,Specials 可作为首个可见季;详情失败显示重试态,最终应用提交 42c23e5。 文件变更: ../Velix/entry/src/main/ets/domain/home/{HomeModels,tmdb/TmdbMapper}.ets, ../Velix/entry/src/main/ets/pages/MediaDetailPage.ets 教训: 详情页请求必须等待 Repository 初始化,否则合法凭据也可能被未配置竞态抢先返回。 标签: #tmdb #detail #tv #error-state

[PROJECT:Velix VUI1] TMDB Live Emulator Verification 结论: 用户提供的 Bearer Token 仅写入主 App 被 .gitignore 忽略的本地配置;模拟器实测首页 6 个 Hero、7 个分区共 130 项,电影详情、TV 详情/首季与第 2 季、搜索与加载更多均返回真实 TMDB 数据。 文件变更: ../Velix/entry/src/main/ets/domain/home/TmdbDiscoveryProvider.ets, ../Velix/entry/src/main/ets/pages/MediaDetailPage.ets, ../Velix/tmdb.local.properties(忽略) 教训: TV 详情响应通常只含季元数据,进入详情后需按当前季补发 /tv/{id}/season/{n};日志只记录 endpoint、状态、延迟和映射数量,不记录凭据。 标签: #tmdb #live #emulator #tv #search

[PROJECT:Velix VUI1] 详情页沉浸控件修正与签名请求 结论: 详情页仅移除底部导航,保留剧照/海报;详情 Hero 使用 TMDB logo 艺术图并将顶部按钮下移到安全区;CSR 已生成,私钥/口令留在本地忽略目录。 文件变更: ../Velix/entry/src/main/ets/pages/MediaDetailPage.ets, ../Velix/entry/src/main/ets/domain/home/{HomeModels,TmdbDiscoveryProvider,tmdb/TmdbMapper,TmdbImageResolver}.ets, ../Velix/entry/src/main/ets/ui/components/RemoteImage.ets, ../Velix/certs/velix-signing.csr 教训: 详情底部导航与内容图集是两套独立结构,验收时需区分;CSR 可提交但 p12/口令必须忽略。 标签: #vui1 #detail #hds #csr

[PROJECT:Velix VUI1] CSR 格式修正 结论: 原 RSA/SHA384 CSR 被 Huawei 拒绝,已改用 P-256 EC 与 SHA256withECDSA 重新生成,并验证 PKCS#10 自签名。 文件变更: ../Velix/certs/velix-signing.csr, ../Velix/certs/velix-signing.p12(忽略), ../Velix/certs/velix-signing.pass(忽略) 教训: HarmonyOS CSR 应通过 DevEco 兼容流程生成;上传前检查曲线、签名算法和完整 PEM 头尾。 标签: #csr #harmonyos #signing

[PROJECT:Velix VUI1] HTTP 视频与 Release 打包验证 结论: emulator 已通过公开 HTTP MP4 http://vjs.zencdn.net/v/oceans.mp4 播放测试(首帧约 954ms、时长 46.6s);111.cer 已导入匹配 p12,Release HAP 构建成功但正式签名仍需对应 AGC .p7b Profile。 文件变更: ../Velix/certs/111.cer(本地), ../Velix/entry/build/default/outputs/default/entry-default-unsigned.hap(构建产物) 教训: HarmonyOS signingConfigs 的 profile 字段必填,只有 .cer 不能生成可发布签名包;不能伪造或用证书链替代 .p7b。 标签: #http #playback #release #signing

[PROJECT:Velix Alpha] Emby foundation 结论: 主 App 提交 540aee5 补齐 Emby 首页库数据、剧集季集、/Search/Hints 搜索、ProviderIds 资源匹配、DirectPlay PlaybackInfo 与播放器 Session 上报接线;debug HAP 构建并在 127.0.0.1:5555 安装启动通过。 文件变更: ../Velix/entry/src/main/ets/domain/{emby,home,playback}, ../Velix/entry/src/main/ets/pages/PlayerPage.ets, ../Velix/DOCS/ALPHA_STATUS.md 教训: 用户提供的 Emby 服务器为 4.8.11.0,认证稳定返回 HTTP 401;在有效账号和签名 Profile 到位前不能声称真实库/DirectPlay/Session 或正式 Alpha 通过。 标签: #alpha #emby #direct-play #playback-session #emulator

[PROJECT:Velix VUI1] Emby API inventory blocked 结论: 当前工作区、用户目录和 Git 历史均未找到 embyapi.json,按要求未猜测接口或创建不完整清单。 文件变更: 无 教训: Emby 阶段必须先提供项目指定的 embyapi.json,不能用网上 Emby/Jellyfin 文档替代。 标签: #emby #api-inventory #blocked

[PROJECT:Velix VUI1] Emby API inventory complete 结论: 已完整读取项目根 embyapi.json,覆盖 356 paths/447 operations;生成五份 Emby 文档并加入最小 API/认证/DTO 骨架,App 提交 2d3c255、ff28ae1,debug HAP 构建通过。 文件变更: ../docs/emby/{EMBY_API_INVENTORY,EMBY_PHASE8_ENDPOINTS,MEDIA_SOURCE_MODEL,DIRECT_PLAY_FLOW,EMBY_API_RISKS}.md, ../Velix/entry/src/main/ets/domain/emby/* 教训: 该 spec 版本为 4.1.1.0,且 ticks 描述写作 “1 tick = 10000 ms”;4.9.x 真机验证前必须经统一 EmbyTimeConverter 校准,不能按经验猜换算。 标签: #emby #api-inventory #phase8 #direct-play #harmonyos

[PROJECT:Velix Phase8.1] Emby 连接基础链路 结论: 主 App 完成多服务器添加表单、URL 规范化、稳定 DeviceId、Asset 安全 Token 存储、统一 X-Emby-Authorization、运行时探针和脱敏验证报告;debug HAP 已构建并在 Pura 90 Pro Max 模拟器启动,真实 Emby 4.9.x 尚未提供地址/账号。 文件变更: ../Velix/entry/src/main/ets/domain/emby/*, ../Velix/entry/src/main/ets/domain/home/HomeRepository.ets, ../Velix/entry/src/main/ets/pages/HomePage.ets, ../Velix/entry/src/main/ets/ui/components/SourceSheet.ets, ../Velix/entry/src/main/module.json5, ../docs/emby/EMBY_RUNTIME_VALIDATION.md 教训: OpenHarmony API 24 SDK 中 STORE_PERSISTENT_DATA 的 permission definition 为 provisionEnable=false;不能用明文 Preferences 兜底,必须在目标签名/真机确认 Asset 持久化能力;未拿到真实 Emby 时不能声称 4.9.x 或 PlaybackInfo 运行时通过。 标签: #emby #phase8.1 #secure-storage #runtime-probe #emulator

[PROJECT:Velix Phase8.1] Emby 真实连接复核 结论: 模拟器表单与主机 curl 使用同一地址/认证头复核;公共信息通过并识别为 SaturDay.Lite 4.8.11.0,AuthenticateByName 返回 HTTP 401“无效用户名或密码”,未保存密码/token。 文件变更: ../Velix/entry/src/main/ets/domain/emby/EmbyApiClient.ets, ../docs/emby/EMBY_RUNTIME_VALIDATION.md 教训: 401 需区分服务器认证拒绝与客户端请求错误;先用无敏感输出的公共信息和认证复核确认,不能把 4.8.11.0 当作用户要求的 4.9.x。 标签: #emby #runtime #http401 #security