JianFeeeee
ab1c856ffe
跨端: 鸿蒙顶栏 —— 兜底改品牌名、一言只留句子、整批轮播(修"轮播不转")
用户三条裁定,逐条落地:
① 兜底文案「暂无待办」→「AgentMail」
触发条件只是"三个计数为零",而"暂无待办"读起来像"没事可做"——
是在**替用户下结论**,结论与事实不等价。品牌名不带判断。
② 一言**只显示句子,不显示出处**
原来 `quote + ' —— ' + source`。出处占近 1/3 宽度、把句子本身
挤到省略号;且 hitokoto 的出处格式杂(动漫角色/诗词/网名),
窄带上排起来脏。⇒ 与签名对齐:都是"当前状态的一句话"。
`topQuoteSource` 状态随之删除(只写不读的死字段)。
③ ★★ 修一个**不报错、不崩溃**的静默 bug:轮播根本不转
`this.topQuote = content.quotes[0].text` —— 注释还振振有词
「批次的意义是少请求,不是一次全显示」。那句话本身没错,
但**只取第一句** ⇒ 本地永远只有 1 句 ⇒
`startTopbarRotation` 里 `texts.length <= 1` 的守卫直接 `return`。
实测:连拍 6 张(18 秒)**全是同一句**。
★ 更坏的是它先前是**假象**:看着"在转",靠的是兜底占了轮播位
(一言 ↔ 暂无待办 交替)。等 ① 把兜底改成不占轮播位,真相立刻暴露。
⇒ 教训:**"看起来在工作"可能是另一个东西在工作**。
做 ① 时顺手连拍验证,才撞出这个真 bug。
修法:整批存进本地状态、本地在批内逐句轮。服务端一批给 10 句
(每次顺序还随机),这正好落实用户最初那句「app 本地缓存一部分」
——缓存的是**一批**,不是一个。
★ 顺带:兜底**不占轮播位**(它只做"唯一候选")
摘要要有真计数(unread/pending/contacts 至少一个 > 0)才占位。
实测四张连拍得到 `一言 → 兜底 → 兜底 → 一言`,
等于用户看到的内容里一半是废话。
实测凭据(2in1 模拟器 3120×2080)
· 连拍 7 张(21s):6 句不同一言,全不带出处
· 连拍 5 张(15s):4 句不同,无兜底占位
· 顶栏文案与三键垂直中心差 0.0px(上一提交已校准)
判据(harmony-2in1,共 23 条)
· 兜底必须存在(退回空串会让整块消失),且**不含判断词**
("暂无/没有/无"开头——正则断言,改回「暂无待办」即判红)
· 兜底不占轮播位:`summaryIsReal` 守卫 + `out.length === 0` 才 push(两半都钉)
· 一言存**整批**、逐句进候选、不许有单句形态 `topQuote`
· 出处不许出现在代码里
★ 判据自己踩的坑,记下来免得重犯:
一言那条我第一版写成反向正则 `/this\.topQuote \+ ' —+ ' \+ this\.topQuoteSource/`
—— **只匹配单引号**。变异时我把拼接写成双引号 `" —— "`,正则没命中
⇒ **假绿**。变异验证当场抓到。改成**正向断言**
`out.push(this.topQuote);`(必须原样推进、不许在此处拼接):
正向比反向窄,且不依赖引号风格。
全量:577/577 绿。
2026-09-25 19:09:48 +08:00
..
2026-09-15 11:17:23 +08:00
2026-09-25 19:09:48 +08:00
2026-09-08 19:16:35 +08:00
2026-09-24 13:13:46 +08:00
2026-09-15 12:25:25 +08:00
2026-09-15 11:38:34 +08:00
2026-09-08 19:16:35 +08:00
2026-09-08 19:16:35 +08:00
2026-09-08 19:16:35 +08:00
2026-09-08 19:16:35 +08:00