ce50bd2c24e87fabc3616bed9c4b37c15a2b5c0c
W43 的静默规则只在「补发真的成功一次」时把 queuedResendFailures 清零。若一段坏网络的 队列以回滚或被收编收场(一次都没成功发出去),这一格就永远挂着 ⇒ 之后连接恢复、再断 一次、用户又发消息时,那句解释再也说不出口。那不是减少噪音,是把解释永久关掉(主人 2026-10-06 裁决:哪个体验好用哪个)。 改成按事故复位:一个「事故」= 队列从空到非空、再回到空,结束就复位,不管它是怎么结束 的——发出去了、回滚了(内容退回输入栏)、还是被收编了(气泡换成权威消息)。清零点因此 有两个:补发成功一次(原样保留),以及队列排空(既有钩子 forgetQueuedNoticeIfDrained, 回滚那条路也走这里,它是队列清空的唯一两个入口之一)。 这样不会在长期断网时刷屏:阈值仍是 3;「一批从空到非空只说一次」仍由 queuedNoticeTold 管着;纯网络故障下消息会堆积在队列里 ⇒ 队列不清空 ⇒ 不算新事故、计数不复位 ⇒ 不会每条 消息都弹一次横幅。而事故一旦结束,下一次断线又能重新解释。 判据提为纯函数 queuedResendFailuresAfterDelivery(VM 与测试共用,跟 queuedSendNoticeAllowed 同一个写法),单测钉住:队列排空即复位(哪怕这一批一条都没成功 发出去)、队列还有货则计数保留、补发成功照旧清零、一个事故里失败 0/1/2 次仍允许告知而 到阈值静默、下一个事故重新告知。静默不动队列:那条既有用例(判定那一刻队列仍在、下一步 仍是发这条)一字未改。 只动告知判据与它的记账。队列与出队逻辑、sendRouteFor / 三档路由 / W38 分享落地 / W45 直接试 REST / W46 的 CyreneRoute 日志全部未碰。 验证:gradlew.bat clean assembleDebug 与 gradlew.bat testDebugUnitTest, failure / error 均为 0。
Releases
5
Alpha_v0.1.0_4
Latest