rocky
d6b614b8be
refactor(concurrency): isolate ProviderConfig to the main actor and drop unneeded @unchecked Sendable
...
- ProviderConfig is now @MainActor instead of @unchecked Sendable; AppL10n reads the persisted UI language key directly so off-main string lookups stay valid.
- EnglishLearningStore serializes its read-modify-write with a type-wide lock (several instances share one defaults key).
- URLSession-only transports, GatewayGrantKeychainStore and Keychain conform to Sendable without @unchecked. UserDefaults/DeviceCheck wrappers keep @unchecked because those SDK types are not Sendable.
2026-10-20 23:00:12 +02:00
..
2026-09-01 11:28:07 -07:00
2026-08-26 14:40:06 +08:00
2026-10-20 20:06:36 +02:00
2026-08-22 16:33:18 +08:00
2026-08-22 16:33:18 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 22:59:58 +08:00
2026-08-20 11:43:21 +08:00
2026-09-18 17:31:29 -07:00
2026-09-18 17:31:29 -07:00
2026-09-18 17:31:29 -07:00
2026-09-27 19:25:53 +08:00
2026-08-23 20:26:34 +08:00
2026-08-25 13:42:00 +08:00
2026-09-18 17:31:29 -07:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-29 11:51:25 +08:00
2026-08-29 11:51:25 +08:00
2026-08-23 14:02:33 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-22 16:33:18 +08:00
2026-08-22 16:33:18 +08:00
2026-08-22 16:33:18 +08:00
2026-08-22 16:33:18 +08:00
2026-08-22 16:33:18 +08:00
2026-08-22 16:33:18 +08:00
2026-08-21 21:13:13 +08:00
2026-09-18 17:31:29 -07:00
2026-08-22 16:33:18 +08:00
2026-09-18 17:31:29 -07:00
2026-08-22 16:33:18 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-09-25 12:14:29 +08:00
2026-09-25 12:14:29 +08:00
2026-09-18 17:31:29 -07:00
2026-09-01 12:34:23 -07:00
2026-08-27 18:01:46 +08:00
2026-09-18 17:31:29 -07:00
2026-09-18 17:31:29 -07:00
2026-10-20 20:05:08 +02:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-09-18 17:31:29 -07:00
2026-08-20 11:43:21 +08:00
2026-08-22 16:33:18 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-07-07 17:56:01 +08:00
2026-09-18 17:31:29 -07:00
2026-08-20 11:43:21 +08:00
2026-08-22 16:33:18 +08:00
2026-08-20 11:43:21 +08:00
2026-09-18 17:31:29 -07:00
2026-09-18 17:31:29 -07:00
2026-08-20 11:43:21 +08:00
2026-08-25 13:42:00 +08:00
2026-08-20 11:43:21 +08:00
2026-09-01 11:28:07 -07:00
2026-08-20 11:43:21 +08:00
2026-09-18 17:31:29 -07:00
2026-08-29 11:51:25 +08:00
2026-09-18 17:31:29 -07:00
2026-08-22 16:33:18 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-25 13:42:00 +08:00
2026-10-20 20:06:36 +02:00
2026-10-20 20:39:49 +02:00
2026-08-29 11:51:25 +08:00
2026-09-18 17:31:29 -07:00
2026-10-20 20:06:36 +02:00
2026-09-25 12:14:29 +08:00
2026-09-18 17:31:29 -07:00
2026-08-20 11:43:21 +08:00
2026-08-22 16:33:18 +08:00
2026-08-22 16:33:18 +08:00
2026-08-22 16:33:18 +08:00
2026-08-22 16:33:18 +08:00
2026-10-20 23:00:12 +02:00
2026-10-20 23:00:12 +02:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-09-01 11:28:07 -07:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-25 13:42:00 +08:00
2026-08-20 11:43:21 +08:00
2026-10-20 20:05:35 +02:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-09-18 17:31:29 -07:00
2026-10-20 20:05:35 +02:00
2026-09-18 17:31:29 -07:00
2026-09-20 23:10:03 +00:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-23 14:02:33 +08:00
2026-08-20 11:43:21 +08:00
2026-10-20 20:06:36 +02:00
2026-10-20 20:06:36 +02:00
2026-09-18 17:31:29 -07:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-22 16:33:18 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-10-20 20:05:08 +02:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-20 11:43:21 +08:00
2026-08-23 14:02:33 +08:00