xarmian
d76f06d199
feat(server): push device registration and notification settings API (TASK-3938) ( #2269 )
...
* feat(store): push device register/delete, SessionInfo.ID, one-tx session rotation (TASK-3938)
RegisterPushDevice is one transaction: delete rows on either unique key,
evict the oldest at the 20-device cap, insert. RotateUserSessions mints the
replacement, rebinds the caller's own devices, deletes the other sessions,
and fails closed to revoke-all.
Claude-Session: https://claude.ai/code/session_019KLyQQPbv9eCe1d6PT2wHP
* feat(server): push device and notification-settings routes, push_available (TASK-3938)
Session-only PUT/DELETE /me/push-devices/{connection_id}, GET/PUT
/me/notification-settings, push_available on /auth/session,
PAD_PUSH_GATEWAY_URL, and all credential-change rotations through
RotateUserSessions. docs/api.md updated.
Claude-Session: https://claude.ai/code/session_019KLyQQPbv9eCe1d6PT2wHP
* test(server): classify GET /me/notification-settings in the compress census (TASK-3938)
Claude-Session: https://claude.ai/code/session_019KLyQQPbv9eCe1d6PT2wHP
* fix(server): the pinned-token refusal on notification settings takes BUG-3982's shape (TASK-3938 r1)
* fix(server): notification settings leave the pinned-token refusal to the BUG-3982 gate (TASK-3938 r1)
* test(store): concurrent registers at 19 devices hold the push-device cap (TASK-3938)
Claude-Session: https://claude.ai/code/session_019KLyQQPbv9eCe1d6PT2wHP
* test(store): make the concurrent-register cap test able to fail on Postgres (TASK-3938)
Reuse sessions across rounds and widen the count-to-insert window with a
test-owned slow insert trigger, so removing the user-row lock overshoots
the cap on every run.
Claude-Session: https://claude.ai/code/session_019KLyQQPbv9eCe1d6PT2wHP
* docs(server): a workspace-pinned token on /me/push-devices gets the BUG-3982 refusal, not session_required (TASK-3938 r1)
* fix(server): push_available goes to a signed-in caller only (TASK-3938 r2)
2026-10-21 06:49:54 -04:00
..
2026-10-20 19:06:53 -04:00
2026-10-20 19:06:53 -04:00
2026-10-05 04:50:02 -04:00
2026-09-23 22:50:47 -04:00
2026-10-21 03:31:18 -04:00
2026-09-26 09:47:46 -04:00
2026-09-26 09:47:46 -04:00
2026-09-23 21:52:27 -04:00
2026-09-06 16:59:31 -04:00
2026-09-30 02:20:23 -04:00
2026-09-23 09:05:05 -04:00
2026-09-30 06:50:13 -04:00
2026-09-06 16:59:31 -04:00
2026-10-14 13:00:57 -04:00
2026-09-06 16:59:31 -04:00
2026-10-11 06:20:09 -04:00
2026-09-06 16:59:31 -04:00
2026-10-09 22:31:16 -04:00
2026-09-06 16:59:31 -04:00
2026-10-21 02:43:37 -04:00
2026-10-14 10:09:13 -04:00
2026-10-06 01:33:24 -04:00
2026-10-05 00:02:49 -04:00
2026-10-05 09:16:24 -04:00
2026-10-13 22:34:03 -04:00
2026-10-05 02:29:48 -04:00
2026-10-05 06:09:12 -04:00
2026-10-04 07:19:07 -04:00
2026-10-04 16:16:29 -04:00
2026-10-05 07:01:22 -04:00
2026-10-04 21:36:33 -04:00
2026-10-05 09:16:24 -04:00
2026-10-05 02:29:48 -04:00
2026-10-20 10:29:59 -04:00
2026-09-25 05:13:05 -04:00
2026-09-25 05:13:05 -04:00
2026-09-06 16:59:31 -04:00
2026-10-03 05:18:30 -04:00
2026-09-06 16:59:31 -04:00
2026-10-14 00:25:14 -04:00
2026-09-06 16:59:31 -04:00
2026-09-16 15:36:49 -04:00
2026-09-22 21:47:27 -04:00
2026-10-02 13:15:31 -04:00
2026-10-12 15:12:36 -04:00
2026-10-15 10:24:24 -04:00
2026-09-13 18:34:16 -04:00
2026-10-02 11:18:07 -04:00
2026-10-03 09:19:10 -04:00
2026-04-28 12:26:39 -04:00
2026-05-18 00:03:20 -04:00
2026-10-10 23:11:23 -04:00
2026-09-06 16:59:31 -04:00
2026-10-06 21:23:38 -04:00
2026-09-25 04:25:42 -04:00
2026-09-25 06:02:57 -04:00
2026-09-25 06:02:57 -04:00
2026-09-25 07:10:26 -04:00
2026-09-26 10:52:41 -04:00
2026-09-25 05:13:05 -04:00
2026-09-25 16:24:50 -04:00
2026-09-22 08:08:15 -04:00
2026-10-15 21:24:48 -04:00
2026-09-21 22:02:48 -04:00
2026-09-21 22:50:56 -04:00
2026-09-22 00:42:02 -04:00
2026-09-22 04:15:14 -04:00
2026-10-09 10:42:55 -04:00
2026-09-23 20:24:40 -04:00
2026-09-25 14:22:09 -04:00
2026-09-27 05:40:55 -04:00
2026-09-27 05:40:55 -04:00
2026-10-08 18:21:18 -04:00
2026-09-30 09:10:41 -04:00
2026-10-01 23:56:37 -04:00
2026-10-02 11:18:07 -04:00
2026-10-05 18:38:46 -04:00
2026-10-15 08:23:56 -04:00
2026-10-02 17:01:54 -04:00
2026-10-02 23:32:54 -04:00
2026-10-02 17:51:55 -04:00
2026-10-03 09:48:19 -04:00
2026-10-03 13:58:22 -04:00
2026-10-05 07:01:22 -04:00
2026-10-05 07:01:22 -04:00
2026-10-04 13:19:45 -04:00
2026-10-05 12:44:17 -04:00
2026-10-05 21:18:56 -04:00
2026-10-06 07:59:20 -04:00
2026-10-05 22:54:52 -04:00
2026-10-06 09:59:38 -04:00
2026-10-06 18:31:29 -04:00
2026-10-11 19:31:59 -04:00
2026-10-11 00:02:50 -04:00
2026-10-11 16:25:01 -04:00
2026-10-12 16:03:18 -04:00
2026-10-17 19:32:06 -04:00
2026-10-13 11:16:07 -04:00
2026-10-13 16:54:44 -04:00
2026-10-14 08:05:34 -04:00
2026-10-14 08:53:26 -04:00
2026-10-13 16:43:10 -04:00
2026-10-13 15:05:11 -04:00
2026-10-14 11:08:56 -04:00
2026-10-14 10:21:01 -04:00
2026-10-14 08:16:14 -04:00
2026-10-13 22:34:03 -04:00
2026-10-13 10:15:42 -04:00
2026-10-14 03:32:30 -04:00
2026-10-13 19:46:53 -04:00
2026-10-14 01:07:58 -04:00
2026-10-14 01:07:58 -04:00
2026-10-13 21:32:47 -04:00
2026-10-14 08:05:34 -04:00
2026-10-13 23:30:26 -04:00
2026-10-13 19:46:53 -04:00
2026-10-14 22:53:53 -04:00
2026-10-13 15:05:17 -04:00
2026-10-15 21:24:48 -04:00
2026-10-16 21:14:10 -04:00
2026-10-16 11:08:12 -04:00
2026-10-14 17:49:17 -04:00
2026-10-14 18:46:59 -04:00
2026-10-14 19:48:28 -04:00
2026-10-15 03:51:15 -04:00
2026-10-15 17:23:24 -04:00
2026-10-16 21:14:10 -04:00
2026-10-15 07:20:42 -04:00
2026-10-15 11:24:31 -04:00
2026-10-15 08:23:56 -04:00
2026-10-15 12:22:37 -04:00
2026-10-15 10:24:24 -04:00
2026-10-15 10:24:24 -04:00
2026-10-17 11:32:56 -04:00
2026-10-20 12:58:18 -04:00
2026-10-20 18:11:13 -04:00
2026-10-14 18:46:59 -04:00
2026-10-07 06:40:06 -04:00
2026-10-07 06:40:06 -04:00
2026-09-06 16:59:31 -04:00
2026-10-18 12:12:51 -04:00
2026-10-09 05:04:19 -04:00
2026-09-06 23:36:58 -04:00
2026-10-08 03:59:26 -04:00
2026-10-08 03:59:26 -04:00
2026-09-06 16:59:31 -04:00
2026-09-13 16:01:12 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 16:59:31 -04:00
2026-10-09 21:47:50 -04:00
2026-10-20 18:11:13 -04:00
2026-10-19 23:27:16 -04:00
2026-10-19 23:27:16 -04:00
2026-09-30 06:50:13 -04:00
2026-09-30 00:41:20 -04:00
2026-10-21 03:31:18 -04:00
2026-09-06 16:59:31 -04:00
2026-10-13 22:34:03 -04:00
2026-09-27 05:40:55 -04:00
2026-10-10 11:54:42 -04:00
2026-10-11 22:17:03 -04:00
2026-10-11 22:17:03 -04:00
2026-09-06 16:59:31 -04:00
2026-10-04 19:22:21 -04:00
2026-10-19 04:08:03 -04:00
2026-10-19 13:05:05 -04:00
2026-09-21 20:46:41 -04:00
2026-10-19 13:05:05 -04:00
2026-09-28 22:07:36 -04:00
2026-09-28 19:32:50 -04:00
2026-09-28 22:07:36 -04:00
2026-10-04 07:19:07 -04:00
2026-10-05 22:54:52 -04:00
2026-10-14 03:32:30 -04:00
2026-09-06 16:59:31 -04:00
2026-08-27 22:45:27 -04:00
2026-09-06 16:59:31 -04:00
2026-10-15 10:24:24 -04:00
2026-10-06 01:04:29 -04:00
2026-04-13 09:14:04 -04:00
2026-09-06 16:59:31 -04:00
2026-10-05 11:27:18 -04:00
2026-09-06 16:59:31 -04:00
2026-10-14 17:49:17 -04:00
2026-09-06 16:59:31 -04:00
2026-09-26 09:47:46 -04:00
2026-09-06 16:59:31 -04:00
2026-10-05 14:44:50 -04:00
2026-09-14 01:45:30 -04:00
2026-09-07 08:27:58 -04:00
2026-10-14 00:25:14 -04:00
2026-10-05 21:18:56 -04:00
2026-10-19 23:27:16 -04:00
2026-10-13 15:44:44 -04:00
2026-10-21 03:31:18 -04:00
2026-10-15 07:20:42 -04:00
2026-10-04 15:14:27 -04:00
2026-10-13 15:44:44 -04:00
2026-09-26 00:15:15 -04:00
2026-09-26 00:15:15 -04:00
2026-10-08 08:29:44 -04:00
2026-10-02 11:18:07 -04:00
2026-09-06 16:59:31 -04:00
2026-10-17 19:32:06 -04:00
2026-10-16 06:13:11 -04:00
2026-10-11 16:44:56 -04:00
2026-09-24 09:16:17 -04:00
2026-09-29 10:14:38 -04:00
2026-10-15 11:24:31 -04:00
2026-09-06 23:36:58 -04:00
2026-10-05 19:45:01 -04:00
2026-10-10 17:26:08 -04:00
2026-10-14 19:48:28 -04:00
2026-09-06 16:59:31 -04:00
2026-10-14 03:34:15 -04:00
2026-10-12 09:24:33 -04:00
2026-10-12 09:24:33 -04:00
2026-09-06 16:59:31 -04:00
2026-08-12 15:50:41 -04:00
2026-10-11 09:28:08 -04:00
2026-10-09 02:04:52 -04:00
2026-09-06 16:59:31 -04:00
2026-10-14 05:35:34 -04:00
2026-09-06 16:59:31 -04:00
2026-07-31 17:28:05 +00:00
2026-10-14 03:34:15 -04:00
2026-09-06 16:59:31 -04:00
2026-10-09 09:38:42 -04:00
2026-10-09 09:38:42 -04:00
2026-09-06 16:59:31 -04:00
2026-09-29 10:14:38 -04:00
2026-10-03 05:18:30 -04:00
2026-10-13 16:54:44 -04:00
2026-08-14 22:39:39 -04:00
2026-09-23 07:46:45 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 16:59:31 -04:00
2026-08-31 12:59:14 -04:00
2026-09-06 16:59:31 -04:00
2026-10-05 12:44:17 -04:00
2026-09-24 08:13:59 -04:00
2026-09-06 23:36:58 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 23:36:58 -04:00
2026-10-21 03:31:18 -04:00
2026-10-15 21:24:48 -04:00
2026-09-29 10:14:38 -04:00
2026-09-29 10:14:38 -04:00
2026-10-15 21:24:48 -04:00
2026-07-30 20:15:00 +00:00
2026-09-06 12:02:20 -04:00
2026-09-30 11:03:07 -04:00
2026-10-01 20:49:44 -04:00
2026-10-13 21:32:47 -04:00
2026-09-06 16:59:31 -04:00
2026-10-10 18:32:29 -04:00
2026-09-29 12:46:03 -04:00
2026-10-04 19:22:21 -04:00
2026-10-19 07:02:00 -04:00
2026-10-21 03:31:18 -04:00
2026-09-24 09:16:17 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 16:59:31 -04:00
2026-07-07 16:32:20 -04:00
2026-09-06 16:59:31 -04:00
2026-10-16 21:14:10 -04:00
2026-10-20 15:23:54 -04:00
2026-10-20 15:23:54 -04:00
2026-10-19 07:02:00 -04:00
2026-10-19 07:02:00 -04:00
2026-09-06 16:59:31 -04:00
2026-10-20 19:06:53 -04:00
2026-10-20 19:06:53 -04:00
2026-10-21 03:31:18 -04:00
2026-10-21 03:31:18 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 16:59:31 -04:00
2026-09-24 08:13:59 -04:00
2026-10-15 07:20:42 -04:00
2026-09-06 16:59:31 -04:00
2026-10-21 03:31:18 -04:00
2026-09-01 14:29:07 +00:00
2026-10-04 07:19:07 -04:00
2026-10-03 16:02:18 -04:00
2026-10-19 10:25:43 -04:00
2026-10-19 10:25:43 -04:00
2026-09-26 01:09:03 -04:00
2026-10-20 19:06:53 -04:00
2026-10-20 19:06:53 -04:00
2026-09-24 08:13:59 -04:00
2026-09-24 08:13:59 -04:00
2026-09-24 08:13:59 -04:00
2026-09-26 00:15:21 -04:00
2026-09-26 00:15:21 -04:00
2026-09-16 15:36:49 -04:00
2026-09-06 16:59:31 -04:00
2026-10-04 19:22:21 -04:00
2026-10-02 23:32:42 -04:00
2026-10-02 23:32:42 -04:00
2026-09-06 16:59:31 -04:00
2026-10-02 22:41:29 -04:00
2026-10-14 02:02:41 -04:00
2026-09-29 19:29:17 -04:00
2026-10-04 19:22:21 -04:00
2026-10-02 18:34:56 -04:00
2026-10-13 22:34:03 -04:00
2026-09-06 16:59:31 -04:00
2026-10-03 19:41:18 -04:00
2026-10-03 09:19:10 -04:00
2026-09-06 12:02:20 -04:00
2026-09-30 10:02:41 -04:00
2026-10-09 22:31:16 -04:00
2026-10-09 22:31:16 -04:00
2026-10-09 21:47:50 -04:00
2026-10-11 09:28:08 -04:00
2026-10-11 06:20:09 -04:00
2026-10-11 22:17:03 -04:00
2026-09-29 10:14:38 -04:00
2026-09-22 07:34:33 -04:00
2026-08-25 22:40:58 -04:00
2026-09-07 17:32:36 -04:00
2026-09-07 17:32:36 -04:00
2026-10-21 06:49:54 -04:00
2026-10-21 06:49:54 -04:00
2026-10-05 11:27:18 -04:00
2026-10-18 12:12:51 -04:00
2026-09-11 00:57:47 -04:00
2026-09-11 00:57:47 -04:00
2026-09-13 16:01:12 -04:00
2026-09-11 00:57:47 -04:00
2026-09-15 00:50:12 -04:00
2026-09-13 16:01:12 -04:00
2026-09-13 16:01:12 -04:00
2026-09-14 11:49:35 -04:00
2026-09-24 01:01:52 -04:00
2026-09-23 22:50:47 -04:00
2026-09-13 16:01:12 -04:00
2026-09-13 16:01:12 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 23:36:58 -04:00
2026-10-21 03:31:18 -04:00
2026-09-06 16:59:31 -04:00
2026-05-29 15:00:34 -04:00
2026-09-23 18:21:38 -04:00
2026-10-09 08:14:55 -04:00
2026-10-09 08:14:55 -04:00
2026-10-09 22:31:16 -04:00
2026-09-17 11:02:02 -04:00
2026-09-06 16:59:31 -04:00
2026-10-11 19:48:40 -04:00
2026-10-02 17:01:54 -04:00
2026-10-21 06:49:54 -04:00
2026-10-02 18:34:56 -04:00
2026-09-24 01:39:03 -04:00
2026-04-28 12:26:39 -04:00
2026-09-15 00:50:12 -04:00
2026-09-06 16:59:31 -04:00
2026-10-05 04:50:02 -04:00
2026-10-21 06:49:54 -04:00
2026-09-06 16:59:31 -04:00
2026-10-11 19:31:59 -04:00
2026-09-25 07:10:26 -04:00
2026-10-03 09:19:10 -04:00
2026-10-10 03:04:20 -04:00
2026-10-10 18:32:29 -04:00
2026-10-09 21:21:19 -04:00
2026-10-03 12:15:04 -04:00
2026-10-02 20:39:53 -04:00
2026-10-04 21:36:33 -04:00
2026-10-03 18:09:33 -04:00
2026-10-03 18:09:33 -04:00
2026-10-03 20:36:50 -04:00
2026-10-03 19:41:18 -04:00
2026-10-05 19:45:01 -04:00
2026-10-05 02:29:48 -04:00
2026-10-04 11:59:42 -04:00
2026-10-04 16:16:29 -04:00
2026-10-04 19:22:21 -04:00
2026-10-04 19:22:21 -04:00
2026-10-13 22:34:03 -04:00
2026-10-04 09:51:29 -04:00
2026-10-05 11:27:18 -04:00
2026-10-04 20:35:13 -04:00
2026-10-05 09:16:24 -04:00
2026-10-05 00:02:49 -04:00
2026-10-05 14:44:50 -04:00
2026-10-05 09:16:24 -04:00
2026-10-05 02:29:48 -04:00
2026-10-09 21:29:40 -04:00
2026-10-09 21:29:40 -04:00
2026-10-10 11:54:42 -04:00
2026-10-10 17:26:08 -04:00
2026-10-11 00:17:53 -04:00
2026-10-11 00:07:56 -04:00
2026-10-11 11:33:30 -04:00
2026-10-11 18:39:37 -04:00
2026-10-19 10:25:43 -04:00
2026-10-19 10:25:43 -04:00
2026-10-12 15:12:36 -04:00
2026-10-19 23:27:16 -04:00
2026-10-19 19:58:46 -04:00
2026-04-28 12:26:39 -04:00
2026-10-21 06:49:54 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 16:59:31 -04:00
2026-09-24 01:39:03 -04:00
2026-09-05 20:43:43 -04:00
2026-10-06 22:23:29 -04:00
2026-09-24 13:12:32 -04:00
2026-10-14 23:51:01 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 16:59:31 -04:00
2026-10-18 23:25:22 -04:00
2026-09-06 16:59:31 -04:00
2026-10-18 23:25:22 -04:00
2026-09-08 14:51:21 -04:00
2026-10-19 10:25:43 -04:00
2026-10-13 16:43:16 -04:00
2026-10-14 22:53:53 -04:00
2026-10-15 12:22:37 -04:00
2026-05-16 10:15:59 -04:00
2026-08-12 15:50:41 -04:00
2026-08-12 15:50:41 -04:00
2026-10-05 14:44:50 -04:00
2026-09-06 16:59:31 -04:00
2026-10-05 14:44:50 -04:00
2026-10-14 12:24:27 -04:00
2026-10-14 12:24:27 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 16:59:31 -04:00
2026-10-21 02:43:37 -04:00
2026-10-14 00:25:14 -04:00
2026-10-14 00:25:14 -04:00
2026-10-08 22:22:06 -04:00
2026-10-16 21:14:10 -04:00
2026-09-06 16:59:31 -04:00
2026-10-17 19:32:06 -04:00
2026-10-20 19:06:53 -04:00
2026-10-11 11:33:30 -04:00
2026-09-28 18:33:09 -04:00
2026-09-28 18:33:09 -04:00
2026-09-28 18:33:09 -04:00
2026-09-28 20:55:28 -04:00
2026-09-06 16:59:31 -04:00
2026-09-06 16:59:31 -04:00
2026-10-15 21:24:48 -04:00
2026-10-13 23:30:26 -04:00
2026-09-21 22:02:48 -04:00
2026-10-09 10:42:55 -04:00
2026-10-11 00:17:53 -04:00
2026-09-06 16:59:31 -04:00
2026-10-09 15:03:53 -04:00