- [Language Switch Concurrency Queue, Optimistic State Update & Dialect Normalization] (PR #3620, Fixes #3619, Thanks to @cubelikeplayDaniel):
- Coalesced Trailing Persistence Queue: Implemented
executeSaveQueuewith a queued waiters pattern inuseConfigStoreto coalesce rapid intermediate writes, safely trailing the latest configuration to disk and waking pending callers, eliminating disk write races and dirty overwrites. (Thanks to @cubelikeplayDaniel) - Zustand Synchronous Optimistic UI Update: Synchronously updated memory state in
saveConfigbefore asynchronous disk I/O, eliminating closure staleness; consolidatedupdateLanguageto unify text layout direction (dir),i18n.changeLanguage, and serialized persistence into a single atomic flow. (Thanks to @cubelikeplayDaniel) - Decouple Language Sync Effect Deadlock: Removed bidirectional dependency on
i18n.languageinApp.tsx'suseEffect, preserving unidirectional config-to-i18n synchronization and preventing sudden language rollback or deadlocks during rapid clicking. (Thanks to @cubelikeplayDaniel) - Generalized BCP 47 Dialect Normalization & Navbar Alignment: Added
normalizeLanguageCodeto reliably handle BCP 47 variants (e.g.en-US,ja-JP,ms), correctly mappingzh-HK/zh-Hantto Traditional Chinese (zh-TW); resolved navbar indicator desyncs wherezh-CNincorrectly displayedENbadge; aligned Settings page options for Spanish and Malay. (Thanks to @cubelikeplayDaniel)
- Coalesced Trailing Persistence Queue: Implemented
- [语言切换并发写竞态隔离、内存乐观更新与方言规范化匹配] (PR #3620, Fixes #3619, Thanks to @cubelikeplayDaniel):
- 串行尾随批处理队列锁 (Coalesced Trailing Persistence Queue): 在
useConfigStore中引入executeSaveQueue批处理等待者模式,并发高频触发时自动合并中间冗余写入,待前序落盘完成后统一尾随持久化最新配置并精确唤醒等待队列,彻底杜绝并发写冲突、脏数据覆盖及虚假报错。 (Thanks to @cubelikeplayDaniel) - Zustand 内存态同步乐观更新 (Optimistic UI): 在
saveConfig第一步立即同步更新 store 内存态配置,彻底消灭渲染时差与闭包陈旧值;统一收敛updateLanguage一体化调度物理排版方向(dir)、i18n 变更与有序持久化。 (Thanks to @cubelikeplayDaniel) - 解耦启动同步依赖死锁: 移除
App.tsx中useEffect对i18n.language的反向双向依赖,仅保留单向配置灌入,消灭高频连续操作时因状态时差导致的语言瞬时反向回滚与死锁。 (Thanks to @cubelikeplayDaniel) - 泛化规范化方言映射与导航栏对齐: 引入
normalizeLanguageCode泛化支持标准 BCP 47 编码别名提取(如en-US、ja-JP、ms),精准映射zh-HK/zh-Hant为繁体中文,修复zh-CN状态下右上角图标回退显示EN及单选指示圆点丢失问题;设置页补齐西班牙语与马来语选项。 (Thanks to @cubelikeplayDaniel)
- 串行尾随批处理队列锁 (Coalesced Trailing Persistence Queue): 在
What's Changed
- fix(i18n): 解决右上角语言连续快速切换导致并发写竞态、状态回滚与死锁 (Fixes #3619) by @cubelikeplayDaniel in #3620
Full Changelog: v4.9.7-beta.2...v4.9.7-beta.3