Marc-André Bombeck
ab03bc96f1
feat(concurrency): guard layout and about-me writes against a concurrent overwrite
...
Extract the dashboard-layout optimistic-concurrency mechanism (issue #581 )
into a shared server helper (takeBaseToken plus guardedUserUpdate /
guardedRowUpdate) and a client helper (readUpdatedAtToken, withBaseToken,
isConflict). Retrofit the dashboard-widgets route onto the helper and apply the
same guard to the insights layout, medications layout, and coach about-me write
endpoints.
A request that omits the base token keeps the byte-identical unconditional
write, so older clients are unaffected. Document the contract in the OpenAPI
registry, including the dashboard-widgets path that was previously absent.
2026-07-24 16:26:58 +02:00
..
2026-07-22 04:14:15 +02:00
2026-07-24 09:29:20 +02:00
2026-07-20 00:40:20 +02:00
2026-07-18 03:52:32 +02:00
2026-07-18 10:27:55 +02:00
2026-07-22 04:14:15 +02:00
2026-07-09 13:42:14 +02:00
2026-07-19 12:28:05 +02:00
2026-07-22 04:14:15 +02:00
2026-06-28 18:29:33 +02:00
2026-06-28 03:20:49 +02:00
2026-07-19 13:55:37 +02:00
2026-07-20 00:40:20 +02:00
2026-06-16 22:25:50 +02:00
2026-07-05 21:28:09 +02:00
2026-07-19 05:50:57 +02:00
2026-07-07 12:32:43 +02:00
2026-07-14 20:19:23 +02:00
2026-06-15 01:22:43 +02:00
2026-07-19 06:02:27 +02:00
2026-07-18 09:25:29 +02:00
2026-07-18 09:24:28 +02:00
2026-07-16 09:55:35 +02:00
2026-07-10 21:23:00 +02:00
2026-07-10 21:23:00 +02:00
2026-07-18 03:52:32 +02:00
2026-06-27 16:29:58 +02:00
2026-06-28 03:20:49 +02:00
2026-07-22 04:14:15 +02:00
2026-07-18 03:52:32 +02:00
2026-07-14 20:19:23 +02:00
2026-07-24 16:26:58 +02:00
2026-07-18 09:24:28 +02:00
2026-07-22 04:14:15 +02:00
2026-07-18 03:52:32 +02:00
2026-06-28 03:20:49 +02:00
2026-07-05 21:28:09 +02:00
2026-07-19 13:55:37 +02:00
2026-07-05 21:28:09 +02:00
2026-07-09 13:02:02 +02:00
2026-06-19 22:20:31 +02:00
2026-05-16 03:17:00 +02:00
2026-07-18 03:52:32 +02:00
2026-06-28 15:13:23 +02:00
2026-07-18 10:27:55 +02:00
2026-07-14 20:19:23 +02:00
2026-07-05 21:28:09 +02:00
2026-07-18 03:52:32 +02:00
2026-07-14 20:19:23 +02:00
2026-06-19 22:20:31 +02:00
2026-07-05 21:28:09 +02:00
2026-06-19 22:20:31 +02:00
2026-06-11 02:19:27 +02:00
2026-06-27 13:02:41 +02:00
2026-07-02 00:00:37 +02:00
2026-07-16 04:59:27 +02:00
2026-07-19 06:02:27 +02:00
2026-07-19 06:02:27 +02:00
2026-06-28 15:13:23 +02:00
2026-07-22 04:14:15 +02:00
2026-07-18 03:52:32 +02:00
2026-06-04 18:20:38 +02:00
2026-07-18 03:52:32 +02:00
2026-07-18 10:27:55 +02:00
2026-07-14 20:19:23 +02:00
2026-07-24 13:56:22 +02:00
2026-07-22 04:14:15 +02:00