Zhou Weidong
|
bea08110c9
|
feat(reward): 新增客户端奖励中心
|
2026-11-13 13:43:38 +08:00 |
|
Zhou Weidong
|
5f278a3510
|
feat: 开屏后直接展示首页骨架
|
2026-10-22 23:11:03 +08:00 |
|
Zhou Weidong
|
9aa797504b
|
feat: 统一首页与推荐搜索入口
|
2026-10-22 22:48:21 +08:00 |
|
Zhou Weidong
|
9953c955e3
|
feat: 补充我的页内容区块
|
2026-10-22 21:44:03 +08:00 |
|
Zhou Weidong
|
91e869d589
|
feat(nav): 底部导航改为首页推荐追剧我的
|
2026-10-22 16:21:05 +08:00 |
|
Zhou Weidong
|
d227ac69fb
|
fix(home): 修复 feed 更新触发的 build 期 setState
|
2026-10-21 19:45:38 +08:00 |
|
Zhou Weidong
|
959edc0a32
|
feat(flutter): 重构四 Tab 与浏览页
|
2026-10-20 09:49:42 +08:00 |
|
Zhou Weidong
|
35338cbfc8
|
feat(app): 剧场页九宫格与极简我的页
|
2026-10-20 05:28:51 +08:00 |
|
Zhou Weidong
|
5422581f8b
|
refactor(ui): 清理 K26 旧 UI 与死代码
|
2026-10-19 15:58:22 +08:00 |
|
Zhou Weidong
|
e8c1859e70
|
feat(ui): 重做三 Tab 首页与发现页
|
2026-10-19 15:01:45 +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
|
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 |
|