Ilia Denisov
a692024b4e
feat(profile): advertise per-variant dictionary versions for offline preload
...
The Profile now carries dict_versions (game variant -> current dictionary
version), populated from the dictionary registry at the profileResponse
choke point, so an installed PWA can preload the matching dawg per enabled
variant off the existing cold-start profile request instead of adding a
round-trip for a rare feature.
Wire path: FBS DictVersion table + Profile.dict_versions (additive,
backward-compatible trailing field) -> backend dto/registry -> gateway
ProfileResp + FBS encoder -> client codec decode into a per-variant map on
model.Profile. Empty in a degenerate no-dictionary deployment; the mock
serves v1.3.0 for all three variants. Codec decode covered by a
bite-tested round-trip unit test.
2026-07-06 10:39:29 +02:00
..
2026-07-06 02:16:50 +02:00
2026-07-06 09:44:05 +02:00
2026-07-06 09:24:55 +02:00
2026-07-06 10:39:29 +02:00
2026-07-06 01:54:20 +02:00
2026-06-10 16:56:03 +02:00
2026-06-10 16:56:03 +02:00
2026-07-01 22:58:40 +02:00
2026-07-05 22:13:21 +02:00
2026-07-05 15:36:35 +02:00
2026-07-05 15:36:35 +02:00
2026-07-05 15:36:35 +02:00
2026-07-05 15:36:35 +02:00
2026-07-05 15:36:35 +02:00
2026-06-14 21:55:59 +02:00
2026-06-14 21:55:59 +02:00
2026-06-11 18:50:10 +02:00
2026-06-11 18:50:10 +02:00
2026-06-03 13:33:03 +02:00
2026-06-03 13:20:56 +02:00
2026-06-15 12:23:10 +02:00
2026-06-15 12:23:10 +02:00
2026-06-14 20:18:58 +02:00
2026-06-14 20:18:58 +02:00
2026-06-15 18:14:19 +02:00
2026-06-15 18:14:19 +02:00
2026-06-03 17:33:47 +02:00
2026-07-05 22:13:21 +02:00
2026-06-24 11:39:29 +02:00
2026-06-24 11:39:29 +02:00
2026-06-30 21:48:56 +02:00
2026-06-30 21:48:56 +02:00
2026-07-06 10:39:29 +02:00
2026-07-06 10:39:29 +02:00
2026-06-10 16:56:03 +02:00
2026-06-29 22:58:43 +02:00
2026-06-29 22:58:43 +02:00
2026-06-07 22:25:29 +02:00
2026-06-10 16:56:03 +02:00
2026-06-15 13:25:36 +02:00
2026-06-15 13:25:36 +02:00
2026-06-19 16:50:48 +02:00
2026-06-14 17:53:03 +02:00
2026-06-19 16:50:48 +02:00
2026-06-14 11:22:47 +02:00
2026-07-02 16:20:35 +02:00
2026-07-02 21:58:07 +00:00
2026-07-06 09:24:55 +02:00
2026-07-05 13:58:39 +02:00
2026-06-30 23:00:19 +02:00
2026-06-17 22:17:27 +00:00
2026-06-17 22:17:27 +00:00
2026-07-02 16:20:35 +02:00
2026-07-02 16:20:35 +02:00
2026-06-16 19:09:24 +02:00
2026-07-02 00:10:02 +02:00
2026-07-02 00:10:02 +02:00
2026-06-22 16:16:33 +02:00
2026-06-22 16:16:33 +02:00
2026-07-02 00:09:52 +02:00
2026-07-02 00:09:52 +02:00
2026-06-19 16:50:48 +02:00
2026-06-16 22:51:18 +02:00
2026-06-20 21:28:31 +02:00
2026-06-20 21:28:31 +02:00
2026-07-01 23:31:49 +02:00
2026-07-03 22:46:55 +02:00
2026-07-03 22:40:49 +02:00
2026-07-03 22:40:49 +02:00
2026-07-06 10:39:29 +02:00
2026-06-24 12:36:52 +02:00
2026-06-24 12:36:52 +02:00
2026-07-06 09:44:05 +02:00
2026-07-06 09:44:05 +02:00
2026-07-06 09:44:05 +02:00
2026-06-19 12:12:53 +02:00
2026-06-19 12:12:53 +02:00
2026-06-19 16:50:48 +02:00
2026-06-14 17:53:03 +02:00
2026-06-10 16:56:03 +02:00
2026-07-01 22:58:40 +02:00
2026-06-16 12:28:04 +02:00
2026-06-16 12:28:04 +02:00
2026-07-05 21:11:41 +02:00
2026-07-05 21:11:41 +02:00
2026-07-05 21:11:41 +02:00
2026-06-19 16:50:48 +02:00
2026-06-13 10:29:56 +02:00
2026-06-09 07:42:47 +02:00
2026-07-02 21:58:07 +00:00
2026-06-11 23:40:40 +02:00
2026-07-03 04:30:16 +02:00
2026-06-11 23:40:40 +02:00
2026-06-30 21:48:56 +02:00
2026-07-02 21:58:07 +00:00
2026-07-02 21:58:07 +00:00
2026-06-21 10:42:31 +02:00
2026-06-21 10:42:31 +02:00
2026-06-17 22:17:27 +00:00
2026-06-17 22:17:27 +00:00
2026-06-11 14:13:54 +02:00
2026-06-11 14:13:54 +02:00
2026-06-24 12:36:52 +02:00
2026-07-03 13:18:37 +02:00
2026-06-06 10:23:42 +02:00
2026-07-05 22:13:21 +02:00
2026-06-19 16:50:48 +02:00
2026-06-19 16:50:48 +02:00
2026-06-22 11:52:00 +02:00
2026-06-22 11:52:00 +02:00
2026-07-02 00:09:52 +02:00
2026-07-03 13:18:37 +02:00
2026-07-03 17:59:33 +02:00