Release/v1.0.0 #1

Merged
jianghaifeng merged 128 commits from release/v1.0.0 into main 2026-10-19 13:42:16 +00:00
128 Commits
Author SHA1 Message Date
Zhou Weidong 35364c949a chore(release): 合并 develop 到 release/v1.0.0 2026-10-19 21:39:21 +08:00
Zhou Weidong 814b2c0b7b chore(config): 默认服务地址改为公网 39.162.50.99:8081 2026-10-19 21:12:16 +08:00
Zhou Weidong 3d0e0804ca fix(app): 修复视频播放明文HTTP与双网络访问切换 2026-10-19 18:37:38 +08:00
Zhou Weidong 190e4f9c67 merge: 恢复开发默认服务器地址 2026-10-19 18:31:58 +08:00
Zhou Weidong d75b69621f chore(config): 恢复开发默认服务器地址 2026-10-19 18:31:23 +08:00
Zhou Weidong 75438c204d merge: 更新开发默认服务器地址 2026-10-19 18:27:51 +08:00
Zhou Weidong cb2fa920ea chore(config): 更新开发默认服务器地址 2026-10-19 18:27:17 +08:00
Zhou Weidong 53b77263ca merge: 更新开发默认服务器地址 2026-10-19 18:20:12 +08:00
Zhou Weidong 501446b3a6 chore(config): 更新开发默认服务器地址 2026-10-19 18:19:36 +08:00
Zhou Weidong 75dacf22ab merge: 增加瀑布流与下拉刷新 2026-10-19 18:11:05 +08:00
Zhou Weidong d271c43feb feat(discover): 增加瀑布流与下拉刷新 2026-10-19 18:10:30 +08:00
Zhou Weidong cabc0e72f5 merge: 点击页面取消搜索焦点 2026-10-19 18:04:38 +08:00
Zhou Weidong 884687d10a fix(discover): 点击页面取消搜索焦点 2026-10-19 18:04:00 +08:00
Zhou Weidong bbae8cf4ed merge: 封面完整显示并移除图上标题 2026-10-19 18:02:20 +08:00
Zhou Weidong 4c2384fea9 fix(discover): 封面完整显示并移除图上标题 2026-10-19 18:01:37 +08:00
Zhou Weidong 149b51b2c1 merge: 固定发现页顶栏 2026-10-19 17:55:26 +08:00
Zhou Weidong 16175803ed fix(discover): 固定发现页顶栏 2026-10-19 17:54:44 +08:00
Zhou Weidong 1eaab2a150 merge: 调整 rail 倍速弹窗与进度时间 2026-10-19 17:44:40 +08:00
Zhou Weidong 4d7173d035 fix(player): 调整 rail 倍速弹窗与进度时间 2026-10-19 17:44:06 +08:00
Zhou Weidong 87628e7d10 merge: 倍速改为底部弹窗选择 2026-10-19 17:32:52 +08:00
Zhou Weidong 3a7e0bc4b7 feat(player): 倍速改为底部弹窗选择 2026-10-19 17:32:17 +08:00
Zhou Weidong 5ca5846a26 merge: 共享清屏状态并左贴集数 2026-10-19 17:29:39 +08:00
Zhou Weidong 5b7a8bd775 fix(player): 共享清屏状态并左贴集数 2026-10-19 17:29:01 +08:00
Zhou Weidong 99a57ec502 merge: 中心按钮仅暂停时显示 2026-10-19 17:20:56 +08:00
Zhou Weidong 71e317f4ab fix(player): 中心按钮仅暂停时显示 2026-10-19 17:20:19 +08:00
Zhou Weidong b1747afbe8 merge: 保持清屏并常驻中心按钮 2026-10-19 17:14:40 +08:00
Zhou Weidong 0d977da75b fix(player): 保持清屏并常驻中心按钮 2026-10-19 17:14:03 +08:00
Zhou Weidong bc5feebf39 merge: 修正清屏态点击与滑动复位 2026-10-19 17:06:32 +08:00
Zhou Weidong aea130be11 fix(player): 修正清屏态点击与滑动复位 2026-10-19 17:05:52 +08:00
Zhou Weidong a2de5e8eb7 merge: 增加退出清屏浮动按钮 2026-10-19 16:53:57 +08:00
Zhou Weidong e2e809e2d5 fix(player): 增加退出清屏浮动按钮 2026-10-19 16:53:23 +08:00
Zhou Weidong 3fcfd68660 merge: 仅在暂停时显示播放按钮 2026-10-19 16:51:20 +08:00
Zhou Weidong 0eabb0a763 fix(player): 仅在暂停时显示播放按钮 2026-10-19 16:50:44 +08:00
Zhou Weidong 60ec19f08d merge: 改为显式清屏交互 2026-10-19 16:44:31 +08:00
Zhou Weidong f613033088 fix(player): 改为显式清屏交互 2026-10-19 16:43:50 +08:00
Zhou Weidong f4e1a5424e merge: 修正详情选集等宽网格 2026-10-19 16:33:20 +08:00
Zhou Weidong fbfb9769a0 fix(detail): 选集改为等宽懒加载网格 2026-10-19 16:32:09 +08:00
Zhou Weidong cbbd4c80e4 merge: 修正六屏顶栏与内容间距 2026-10-19 16:26:01 +08:00
Zhou Weidong 2fd92cdbea fix(ui): 修正六屏顶栏与内容间距 2026-10-19 16:25:25 +08:00
Zhou Weidong e03ea76505 merge: 统一暂停按钮并自动隐藏控制层 2026-10-19 16:16:53 +08:00
Zhou Weidong 03e34b3b57 fix(player): 统一暂停按钮并自动隐藏控制层 2026-10-19 16:16:14 +08:00
Zhou Weidong 568f051b7a merge: 修复详情暂停重复按钮 2026-10-19 16:07:42 +08:00
Zhou Weidong f0c53542ef fix(player): 移除详情暂停重复按钮 2026-10-19 16:07:06 +08:00
Zhou Weidong c82502559b merge: 清理 K26 旧 UI 与死代码 2026-10-19 15:59:03 +08:00
Zhou Weidong 5422581f8b refactor(ui): 清理 K26 旧 UI 与死代码 2026-10-19 15:58:22 +08:00
Zhou Weidong a5398daab3 merge: K26 客户端六屏按预览校正 2026-10-19 15:51:04 +08:00
Zhou Weidong 8767b5644b test(ui): 更新三 Tab 预览断言 2026-10-19 15:50:24 +08:00
Zhou Weidong fecc5b0d27 feat(ui): 新增登录入口与我的页预览 2026-10-19 15:50:15 +08:00
Zhou Weidong 21d457fd98 feat(ui): 校正首页发现详情播放器预览 2026-10-19 15:50:11 +08:00
Zhou Weidong 87db548591 feat(theme): 校正 K26 预览色板与导航 2026-10-19 15:50:07 +08:00
Zhou Weidong eefabb6898 merge: 修复播放器全屏进入方式 2026-10-19 15:24:40 +08:00
Zhou Weidong 1c94b727fb fix(player): 恢复详情与选集全屏播放 2026-10-19 15:24:06 +08:00
Zhou Weidong 04fddce1d1 merge: K25 客户端详情页与播放器 2026-10-19 15:17:18 +08:00
Zhou Weidong 689063a694 feat(player): 新增卡片式播放器 2026-10-19 15:16:40 +08:00
Zhou Weidong ec163f905d feat(detail): 重做详情页视觉结构 2026-10-19 15:16:36 +08:00
Zhou Weidong 4553606ec2 merge: K24 客户端 UI 对齐设计稿 2026-10-19 15:02:44 +08:00
Zhou Weidong e8c1859e70 feat(ui): 重做三 Tab 首页与发现页 2026-10-19 15:01:45 +08:00
Zhou Weidong eae1c533ce feat(theme): 接入 Obsidian Flare 设计系统 2026-10-19 15:01:41 +08:00
Zhou Weidong b1c69e22af feat(auth): 合并 K21 登录页优化 2026-10-19 10:34:37 +08:00
Zhou Weidong 8a96f341c8 feat(auth): 优化登录页布局与字段反馈 2026-10-19 10:33:33 +08:00
Zhou Weidong e44fbdf6f2 style(ui): 合并 K20 客户端视觉统一 2026-10-19 10:23:38 +08:00
Zhou Weidong 5f1df401dc fix(ui): 保留空态既有字号口径 2026-10-19 10:23:24 +08:00
Zhou Weidong c5bfd006fa style(ui): 统一页面字号间距与状态样式 2026-10-19 10:21:28 +08:00
Zhou Weidong df5fbe5b08 feat(ui): 增加视觉 token 与统一导航 2026-10-19 10:16:12 +08:00
Zhou Weidong 42ce1d1d84 fix(account): 合并网络异常文案修复 2026-10-19 10:00:48 +08:00
Zhou Weidong 27ab7cebfb fix(account): 本地化网络异常文案 2026-10-19 09:59:45 +08:00
Zhou Weidong 9b3ab9d5de feat(account): 合并 K19 账号中心 2026-10-19 09:55:37 +08:00
Zhou Weidong 7151bc9d8b style(account): 保持账号入口首屏可用 2026-10-19 09:54:10 +08:00
Zhou Weidong 6fce24d9ec refactor(account): 收敛账号页组件结构 2026-10-19 09:51:23 +08:00
Zhou Weidong da095115d4 feat(account): 增加账号中心页面与入口 2026-10-19 09:50:23 +08:00
Zhou Weidong c68f02449f feat(account): 增加账号中心页面逻辑 2026-10-19 09:48:07 +08:00
Zhou Weidong ef7f4ce3b6 feat(account): 同步资料保存后的登录态 2026-10-19 09:47:28 +08:00
Zhou Weidong 44f6feb249 feat(account): 接入个人中心接口模型 2026-10-19 09:47:06 +08:00
Zhou Weidong 7d68699523 fix(config): 合并开发默认服务器地址 2026-10-19 09:34:54 +08:00
Zhou Weidong 60043d1e41 fix(config): 更新开发默认服务器地址 2026-10-19 09:34:44 +08:00
Zhou Weidong 9df36bc358 feat(ui): 合并品牌启动页与选集交互 2026-10-19 09:28:27 +08:00
Zhou Weidong c1cb7d1c11 feat(ui): 更新品牌启动页与选集交互 2026-10-19 09:28:16 +08:00
Zhou Weidong 4778ce2c75 merge: 合并 K15 首页服务器设置修复 2026-10-17 23:13:07 +08:00
Zhou Weidong c4694c6f18 fix(flutter): 增加首页服务器设置并更新真机默认地址 2026-10-17 23:12:47 +08:00
Zhou Weidong 9fe62d13cb merge: 合并 K14 文档接口统计修正 2026-10-17 23:03:52 +08:00
Zhou Weidong 213c86e93c docs(client): 修正已接接口数量说明 2026-10-17 23:03:43 +08:00
Zhou Weidong 27e5286b10 merge: 合并 K14 客户端文档 2026-10-17 23:02:47 +08:00
Zhou Weidong 5a28845b5e docs(client): 重写 README 并补充任务与文件说明 2026-10-17 23:02:28 +08:00
Zhou Weidong f95325d581 merge: 合并 K13 开发服务器地址设置 2026-10-17 22:54:25 +08:00
Zhou Weidong 907562a874 feat(flutter): 增加 debug 运行时服务器地址设置 2026-10-17 22:54:07 +08:00
Zhou Weidong b76228905c merge: 合并 K12 首页与空态视觉修订 2026-10-17 22:44:40 +08:00
Zhou Weidong 2dd4627bdc feat(flutter): 精简首页标题并重做空态视觉 2026-10-17 22:44:21 +08:00
Zhou Weidong b5a8656ff0 merge: 合并 K11 首页三列网格 2026-10-17 22:34:38 +08:00
Zhou Weidong f0db631fa2 feat(flutter): 首页网格改为三列并首位显示全部 2026-10-17 22:34:14 +08:00
Zhou Weidong 0466b4b425 merge: 合并 K10 统一空态组件 2026-10-17 17:44:58 +08:00
Zhou Weidong 6d08330388 feat(flutter): 统一空列表占位组件 2026-10-17 17:44:44 +08:00
Zhou Weidong 19babb8f4a merge: 合并 iOS shared_preferences 编译修复 2026-10-17 17:30:50 +08:00
Zhou Weidong 2c30f83ab3 chore(ios): 固定 shared_preferences_foundation 2.5.6 2026-10-17 17:30:33 +08:00
Zhou Weidong a4415c872d chore(deps): 同步依赖锁文件 2026-10-17 17:27:07 +08:00
Zhou Weidong 2c381be5e8 merge: 合并 K9 首页全部剧目网格 2026-10-17 17:24:58 +08:00
Zhou Weidong cf03178cc5 feat(flutter): 首页改为两列全部剧目网格 2026-10-17 17:24:45 +08:00
Zhou Weidong 99f64ab870 merge: 合并 K8 登录页视觉重设计 2026-10-17 17:15:09 +08:00
Zhou Weidong 45c3c645ff feat(flutter): 重设计登录页视觉 2026-10-17 17:14:56 +08:00
Zhou Weidong 6cc5bfc3be merge: 合并首页轮播与观看历史真机修复 2026-10-17 17:00:20 +08:00
Zhou Weidong 5058853af3 fix(flutter): 注册目录仓库并修正首页轮播数据源 2026-10-17 17:00:07 +08:00
Zhou Weidong 3e8703b840 merge: 合并 K7 轮播与站内通知 2026-10-17 16:50:38 +08:00
Zhou Weidong b870956665 feat(flutter): 增加轮播自动播放与站内通知 2026-10-17 16:50:25 +08:00
Zhou Weidong b7b1c50427 merge: 合并 K6 导航与观看历史缺陷修复 2026-10-17 16:41:35 +08:00
Zhou Weidong 732483465c fix(flutter): 修复导航白线与观看记录错误透传 2026-10-17 16:41:24 +08:00
Zhou Weidong ac706a42a5 merge: 合并 K6 iOS SPM 构建修复 2026-10-17 16:32:22 +08:00
Zhou Weidong cc037a2956 fix(ios): 刷新 Flutter SPM 包后再准备框架 2026-10-17 16:32:11 +08:00
Zhou Weidong 0cedaab795 merge: 合并 K6 登录导航与震动反馈 2026-10-17 16:16:07 +08:00
Zhou Weidong 8a481d5c62 feat(flutter): 增加关键操作震动反馈 2026-10-17 16:15:46 +08:00
Zhou Weidong e609e3ad8d feat(flutter): 优化登录页与底部导航 2026-10-17 16:11:01 +08:00
Zhou Weidong e52d81881c merge: 合并 K5 克莱因蓝主题与印尼语适配 2026-10-17 15:58:29 +08:00
Zhou Weidong 10d448c8ba feat(flutter): 应用克莱因蓝主题与印尼语适配 2026-10-17 15:58:17 +08:00
Zhou Weidong e1147cfcba merge: 合并 K3 举报错误透传修复 2026-10-17 15:29:27 +08:00
Zhou Weidong 1488ee8f85 fix(flutter): 透传举报本人评论错误 2026-10-17 15:29:18 +08:00
Zhou Weidong 9db6935308 merge: 合并 K3 客户端互动能力 2026-10-17 15:26:51 +08:00
Zhou Weidong d361034226 feat(flutter): 接入互动评论点赞举报 2026-10-17 15:26:42 +08:00
Zhou Weidong 45f5f25640 merge: 合并 K2 客户端分类记录收藏与下载授权 2026-10-17 14:49:36 +08:00
Zhou Weidong cc4d7c5a9d feat(flutter): 接入分类记录收藏与下载授权 2026-10-17 14:49:16 +08:00
jianghaifeng 00280ca0da merge: 同步 main 的作者标识提交到 develop
main 的 eaf8fb4 机械性地给全仓加了 // Author 头,develop 侧包名已改 fruitshorts、
并删除了 demo_media/home_feed_category/home_feed_sections 三个文件,故按 develop 口径解决冲突:
保留 fruitshorts 包名与删除结果,补回 Author 头。
2026-10-17 13:48:31 +08:00
Vicky 84a1f58a0a test(client): 新增设备侧集成测试(真机跑通后端可达性)
红线第 10 条(设备验证必须设备侧取证)配套:integration_test/app_backend_test.dart
在手机进程里真实请求 /app/home/feed 与 /app/dramas/{id},并用真 App 断言首页剧目列表能渲染。
把 API_BASE_URL 打进设备日志,便于区分地址不对与设备连不上。

注意:真机执行由用户负责(用户 20:45 指令),本文件按原样交付、不再改动。
本项目 iOS 用 SPM,无 Podfile,不需要 pod install。
2026-10-16 18:05:58 +08:00
Vicky d7eff4ca59 feat(client): 对接详情/播放/进度续看/收藏(K1 看剧闭环)+ 三态 UI
后端接口从 6 个扩到 13 个,全部走真数据:

- 新增 api:playback_api(/app/episodes/{id}/play)、watch_api(/app/watch/*)、
  library_api(/app/favorites*);票据从 CatalogApi 搬到 PlaybackApi
- 新增 repository:PlaybackRepository(含票据 TTL 缓存,默认 10 分钟,时钟可注入)、
  FavoriteRepository、WatchHistoryRepository 换成服务端模型(每剧一条续看记录,删掉 demoProfileId)
- PlayerLogic:起播前取票(拿不到给三态 UI,失败可重试);accessType 驱动锁定文案,
  不在前端猜;签名地址原样交给播放器(只补 host,不动 path/query);
  进度上报节流 5s → 10s,切集/退出/切后台各补一次,播完带 finished
- 续看定位:服务端记录里的那一集才 seek(其它集从头播),续看位置进详情/播放页时读一次
- FavoriteController:收藏以服务端为准,乐观更新 + 失败回滚;退出登录清空
- UI 三态:详情页(加载/失败可重试/空剧集 + 续看进度条 + 收藏按钮)、
  播放页(票据加载中/失败可重试/后端判定不可播)、我的页(续看失败可重试、收藏三态、最近观看)
- l10n 新增 8 个键(en/zh/id 三份):网络/进度/收藏失败、锁定提示、续看文案等

测试:flutter test 188 全过(存量 27 个测试文件未跑红);新增票据过期重取、进度节流、
续看定位、收藏回滚、签名 query 原样保留、真实后端端到端联调(live_watch_flow)
2026-10-16 17:39:05 +08:00
Vicky 94ff9f1177 fix(client): 兼容后端 Long 字段字符串化(id 与计数)
后端 J1 起 Long/long 一律以字符串下发(含雪花 id 与 viewCount/expiresIn)。
客户端 id 方向本来就是 (json['id'] ?? '').toString(),不受影响;会被 as num? 打挂的
是 Long 计数,这里加统一兼容解析并替换 3 处:

- lib/core/data/models/json_numbers.dart(新增,接受数字或数字字符串)
- lib/core/data/models/auth_session.dart(expiresIn,后端 long)
- lib/core/data/models/drama.dart(viewCount,后端 Long ×2)
- test/core/json_id_parsing_test.dart(新增 8 条回归用例)

其余 as num?(durationSec/unlockCoin/number/totalEpisodes/freeEpisodes/code)对应后端
Integer/int,仍是数字,未改动;未碰任何业务逻辑与 UI。
2026-10-16 16:44:02 +08:00
Vicky 61454e36b1 feat(client): 改名为 FruitShorts 并新增 id-ID 印尼语文案(1-3 + 1-4 合并)
为什么:a) 应用对外名称要统一成 FruitShorts(产品名,nontonki 是原型代号);
b) 首发市场是印尼,界面必须有印尼语;c) 归档要求"新增 id-ID 与改名合并生成一次 l10n,别分两次"。

改名:
- pubspec name: nontonki → fruitshorts(Dart 包名),description 同步;28 个文件的 package: 导入前缀替换
- Android android:label、iOS CFBundleDisplayName/CFBundleName → FruitShorts
- 图标资源 assets/icon/nontonki.png → fruitshorts.png(含 pubspec 两处引用)
- README 同步(补印尼语说明,顺带修掉写错的模块名 reelshort-app-api → fruitshorts-app-api)

文案:
- 三份 arb 的 appName → FruitShorts、brandMark → FRUITSHORTS、shareFooter → FruitShorts(不留 demo 标记)
- 新增 lib/l10n/app_id.arb:174 个值键与 en/zh 完全一致,按印尼语习惯翻译(Coin→Koin、Episode→Episode)
- 一次性 flutter gen-l10n 生成 app_localizations_id.dart;id 自动进入 supportedLocales,默认 locale 未改
- 新增 test/config/l10n_id_test.dart:钉住 id 文案、supportedLocales 含 id、品牌文案无 demo 标记、占位符渲染

不动:applicationId / bundle id(lumadrama 遗留,等裁定)、目录名、业务逻辑与页面结构、语言选择页(仍只有 en/zh)

门禁:dart analyze lib test 零告警;flutter test 159 全过(基线 155 + 新增 4);残留扫描 0 命中;
三份 arb 键集一致(174/174/174);真机(iPhone iOS 26.6.1)构建安装启动成功,devicectl 列出显示名 FruitShorts
2026-10-16 10:16:59 +08:00
Vicky 0e5d550b50 test(client): 用例名统一为 should_<期望>_when_<条件>(155/155)
为什么:红线第 8 条门禁立即生效,要求 Flutter 测试命名合规;此前 155 条用例名是英文自然语言
或中文描述,合规数 0/155,属存量欠账,按"先补齐再上新功能"在本批处理。

- 25 个测试文件、155 条用例改名,按「文件 + 旧名」精确定位,每条断言命中恰好 1 次才替换
- 只改名字字面量:改动行 155 删 + 155 增,无一行不含字符串字面量(断言与用例体零改动)
- 门禁:dart analyze lib test = No issues found;flutter test = 155 全过
2026-10-16 09:41:14 +08:00
Vicky 1853e1845c refactor(client): 网络层由官方 http 换成 dio(对外行为不变)
为什么:权威文档(AGENTS.md / CODING_STANDARDS.md)强制网络层用 dio,差异清单 A 组第 1 题
用户裁定选 A;原来用官方 http 是在无文档状态下按口头要求选的。

- ApiClient 改用 dio + BaseOptions(validateStatus 恒真、8s 超时、ResponseType.bytes 自行 UTF-8 解码)
- 新增 AuthHeaderInterceptor(Authorization / X-Device-Id)与 EnvelopeInterceptor
  (解包 {code,message,data} + 错误码映射 + 401 判定)
- 401 → 刷新 → 重发一次在 ApiClient 里编排,刻意不放在拦截器内重发:dio 的排队拦截器
  在回调里再发请求会自锁
- 接口层(auth_api/catalog_api)签名、全部 controller/logic/page 未改动
- 测试:新增假 dio adapter 替代 MockClient,断言口径一条未改;用例名改为 should_<期望>_when_<条件>;
  新增 api_client_test(解包/错误映射/请求头/查询参数/跳过重试)与 live_auth_test(真实后端 POST 链路)
- pubspec:加 dio、移除已无引用的 http
- 实测:dart analyze lib test 零告警;flutter test 155 全过;真实联调(8081)GET/POST 链路均通
2026-10-16 09:30:46 +08:00
Vicky ae49b10407 chore(client): 归档发现页 widgets(原型阶段新增目录) 2026-10-15 17:53:54 +08:00
Vicky feecc349a0 chore(client): 归档原型阶段新增文件(配置、主题、模型与测试)
为什么:上一批归档只覆盖了「已跟踪文件的修改」,原型阶段新增的文件(app_config、theme、
home_feed/play_ticket 模型、catalog_api、测试目录等)还是未入库状态 —— 而已入库的代码会 import 它们,
留在工作区会导致 HEAD 处的代码编译不过。一并归档,让 HEAD 自洽。

纯归档,无行为改动。
2026-10-15 17:53:45 +08:00
Vicky e1b98df509 feat(client): C 端 1-2 账号链路(邮箱登录/注册 + 令牌与 401 + 匿名/登录分叉)
为什么:客户端此前完全没有账号概念(mine 页的"登录"只是本地 demo 开关),
而受限动作(收藏/评论)要对到具体账号。本批把账号链路接上,为后续互动、进度同步、下载打底。

- AuthApi + AuthController + AuthSessionStore:注册/登录/登出/刷新,令牌与设备号存 shared_preferences
  (用 SharedPreferencesAsync,与 engagement 仓库同一套 API)
- ApiClient:统一带 Authorization 与 X-Device-Id;401 自动刷新一次并重试,刷新失败清登录态走 onUnauthorized
- 登录/注册页(pages/auth,沿用 binding/logic/view 与现有视觉):邮箱格式、密码 8-64 位含字母数字本地先校验,
  错误提示走 l10n;登录/注册一键切换
- 匿名/登录分叉:首页、发现、详情保持匿名可看;收藏/点赞等受限动作走 ensureSignedIn() 弹底部提示引导登录
- mine 页展示真实账号(昵称 + uid),拿不到才回落到演示文案
- 测试:新增 auth 控制器(注册落盘/401 刷新重试/刷新失败清会话/登出)与登录页(校验/切换)用例;
  widget_test 改为预置本地会话(账号不再是本地开关);修掉 playback 用例对 host 大小写的环境依赖断言

门禁:flutter analyze 0 问题;flutter test 148 全过。
2026-10-15 17:53:35 +08:00
Vicky 77d5748dbb chore(client): 归档原型阶段未提交改动(binding/logic/view 分层与各页迭代)
为什么:客户端原型在 14d7bd3 之后又做了一轮(页面分层、发现页、分类滑动、播放器控件等),
一直留在工作区没入库。下一批账号链路要改其中的 app.dart / home_view / player_view / mine_view,
先归档这批既存改动,本批的实际 diff 才说得清边界。

只归档,不改行为:当前工作区 flutter analyze 0 问题、flutter test 148 全过。
2026-10-15 17:53:27 +08:00