fix(app-iced): 删掉空操作串行门 + 钉住档位贯穿产品启动路径 + 退场起点接当前进度

复审 r2 的三条:
1) 删掉 motion::serialize() 那把串行门:PUMP/LAST_FRAME 都是 thread_local,libtest 每用例
   一线程 ⇒ 它改变不了任何结果(ULL_MOTION=off 下握门照样红)。留一个不起作用的同步原语
   比没有更坏。subscription.rs 与 motion_sync.rs 的 idle_app 恢复原签名。
2) 真实根因是「喂给 configure 的值」:idle_app 先钉 STANDARD,随后 on_boot →
   configure_motion(app/update.rs:276)→ boot_env::motion_scale(..) 再定一次档,把钉住覆盖掉。
   改成 BYPASS_PROBE(bool) → FORCED_SCALE(Cell<Option<MotionScale>>):configure 里钉住优先,
   于是三条定档路径(configure_for_test / on_boot / boot_env 的 env·后端 tier)都穿不过去。
   两条用例钉住它(纯合成 + 真 Message::Boot),删掉「钉住优先」两处都红。
3) P2-2:Modal::Closing 记住起手进度 from,progress = from*(1-eased) —— 进场途中被关掉时
   从当前进度接着缩,不再先跳到 1.0(反向硬跳)。新用例
   closing_during_the_entrance_does_not_jump_to_fully_open,把 from 改回 1.0 即红。
This commit is contained in:
AskaEth committed 2026-11-12 10:50:03 +08:00
1 parent c21c6df51b
commit 787cb16189
4 files changed
+122 -44

No files matched your search

@@ -291,7 +291,9 @@ impl Pump {
Modal::Opening { start_ms } if now - start_ms >= self.leg_ms(spec.enter.duration) => {
self.modal = Modal::Open
}
Modal::Closing { start_ms } if now - start_ms >= self.leg_ms(spec.exit.duration) => {
Modal::Closing { start_ms, .. }
if now - start_ms >= self.leg_ms(spec.exit.duration) =>
{
self.modal = Modal::Hidden;
self.close_pending = true;
}