Filip131311
d01793dba4
feat(tools): push-notification — simulated APNS push to the iOS simulator
...
New iOS-simulator-only tool that delivers a push via `xcrun simctl push`,
streaming the payload over stdin (no temp files). Accepts either
title/body/subtitle/badge/sound convenience fields (built into a proper APNS
envelope) or a raw `payload` object for full control (silent pushes, custom
data keys).
- Pre-validates what simctl rejects cryptically: missing `aps` key, >4096
bytes, payload+convenience-field conflicts — mapped to HTTP 400 via
InvalidToolInputError with a granular IOS_PUSH_PAYLOAD_INVALID code.
- get_app_container install probe turns a missing app into an actionable
error (definitive-false only; inconclusive probes fall through so simctl
reports the real cause, e.g. the boot-device hint on a shutdown sim).
- stdin 'error' listener guards the EPIPE race when simctl exits before
reading the payload — without it a failed push could crash the tool-server.
- Registered in setup-registry with a through-the-registry unit test (guards
against the implemented-but-unregistered class of bug), added to the MCP
auto-screenshot list (2 s delay for the banner animation).
- New argent-push-notifications skill + rules routing entry documenting the
permission prerequisite and the push → await banner → tap workflow;
cross-referenced from the settings-permissions notifications row.
Live-verified on an iOS 26.5 simulator (banner render, badge, tap-to-open
via the notification path, silent push, all error paths) both from the
workspace build and from the npm-packed artifact.
2026-07-29 12:48:26 +02:00
..
2026-07-12 13:42:23 +02:00
2026-07-01 14:59:37 +02:00
2026-07-03 16:19:28 +02:00
2026-07-07 10:05:42 +02:00
2026-07-27 18:25:27 +02:00
2026-07-23 18:32:44 +02:00
2026-07-20 16:21:56 +02:00
2026-06-25 13:29:10 +02:00
2026-06-25 21:48:16 +02:00
2026-07-13 17:15:01 +02:00
2026-07-15 07:55:31 +02:00
2026-07-27 18:25:27 +02:00
2026-07-01 14:59:37 +02:00
2026-05-11 11:39:10 +02:00
2026-05-27 16:24:31 +02:00
2026-07-22 13:53:32 +02:00
2026-05-12 14:21:09 +02:00
2026-06-22 20:31:45 +02:00
2026-07-22 13:53:32 +02:00
2026-06-03 17:14:35 +02:00
2026-05-12 14:21:09 +02:00
2026-07-01 14:59:37 +02:00
2026-07-03 16:19:23 +02:00
2026-07-10 12:51:24 +02:00
2026-07-07 16:29:22 +02:00
2026-07-01 14:59:37 +02:00
2026-06-16 15:46:41 +02:00
2026-05-27 16:24:31 +02:00
2026-07-13 17:15:01 +02:00
2026-07-15 08:07:03 +02:00
2026-07-22 16:56:54 +02:00
2026-05-27 16:24:07 +02:00
2026-06-03 22:23:29 +02:00
2026-05-27 16:24:07 +02:00
2026-06-22 20:31:45 +02:00
2026-07-08 17:22:31 +02:00
2026-07-13 17:15:01 +02:00
2026-07-13 17:15:01 +02:00
2026-07-10 12:51:24 +02:00
2026-05-11 11:39:10 +02:00
2026-06-15 14:32:06 +02:00
2026-07-22 13:53:32 +02:00
2026-06-15 11:03:23 +02:00
2026-06-17 12:20:55 +02:00
2026-06-15 15:31:51 +02:00
2026-06-15 11:03:23 +02:00
2026-06-15 11:03:23 +02:00
2026-06-15 11:03:23 +02:00
2026-06-15 11:03:23 +02:00
2026-06-15 11:03:23 +02:00
2026-06-17 12:20:55 +02:00
2026-06-17 12:20:55 +02:00
2026-07-02 16:42:10 +02:00
2026-07-13 17:15:01 +02:00
2026-06-15 11:03:23 +02:00
2026-06-15 11:03:23 +02:00
2026-06-15 11:03:23 +02:00
2026-06-17 12:20:55 +02:00
2026-06-15 15:57:45 +02:00
2026-06-15 14:32:06 +02:00
2026-06-25 21:16:03 +02:00
2026-07-22 13:53:32 +02:00
2026-07-06 17:12:20 +02:00
2026-07-03 16:19:16 +02:00
2026-05-11 11:39:10 +02:00
2026-07-13 17:15:01 +02:00
2026-04-28 15:32:39 +02:00
2026-05-27 11:46:12 +02:00
2026-07-13 17:15:01 +02:00
2026-05-26 10:07:04 +02:00
2026-05-11 11:39:10 +02:00
2026-07-10 12:51:05 +02:00
2026-07-01 14:59:37 +02:00
2026-06-22 20:31:45 +02:00
2026-07-22 13:53:32 +02:00
2026-07-07 13:36:27 +02:00
2026-07-10 11:52:28 +02:00
2026-07-03 16:56:15 +02:00
2026-07-10 12:29:48 +02:00
2026-06-25 13:29:10 +02:00
2026-06-19 18:22:34 +02:00
2026-04-28 15:15:03 +02:00
2026-07-23 07:44:26 +02:00
2026-07-24 13:18:23 +02:00
2026-07-10 12:29:48 +02:00
2026-07-22 13:53:32 +02:00
2026-06-03 17:44:15 +02:00
2026-07-23 21:14:37 +02:00
2026-07-13 17:15:01 +02:00
2026-07-07 16:29:22 +02:00
2026-06-01 17:15:12 +02:00
2026-07-10 12:29:48 +02:00
2026-06-17 12:20:55 +02:00
2026-07-07 16:29:22 +02:00
2026-07-12 13:42:23 +02:00
2026-07-13 17:15:01 +02:00
2026-07-20 19:26:33 +02:00
2026-07-10 12:51:24 +02:00
2026-07-10 12:51:24 +02:00
2026-07-14 08:31:50 +02:00
2026-07-15 13:42:55 +02:00
2026-07-10 12:51:05 +02:00
2026-07-22 13:53:32 +02:00
2026-07-01 19:57:56 +02:00
2026-07-13 16:56:49 +02:00
2026-07-01 19:57:56 +02:00
2026-06-25 13:29:10 +02:00
2026-07-01 11:02:33 +02:00
2026-07-20 17:05:16 +02:00
2026-06-24 11:22:57 +02:00
2026-07-13 17:15:01 +02:00
2026-07-13 17:15:01 +02:00
2026-07-23 21:14:37 +02:00
2026-04-07 17:36:56 +02:00
2026-04-16 00:16:10 +02:00
2026-07-21 10:28:14 +02:00
2026-07-10 12:51:05 +02:00
2026-07-12 13:42:23 +02:00
2026-07-03 16:45:29 +02:00
2026-07-03 16:45:29 +02:00
2026-07-03 16:45:29 +02:00
2026-07-03 16:45:29 +02:00
2026-07-12 13:42:23 +02:00
2026-06-16 14:58:22 +02:00
2026-06-01 15:04:25 +02:00
2026-07-21 16:56:31 +02:00
2026-07-01 19:57:56 +02:00
2026-07-01 19:57:56 +02:00
2026-07-01 19:57:56 +02:00
2026-07-13 16:56:49 +02:00
2026-07-01 19:57:56 +02:00
2026-06-24 11:22:57 +02:00
2026-07-07 13:36:27 +02:00
2026-07-22 16:56:54 +02:00
2026-07-12 13:42:23 +02:00
2026-07-12 13:42:23 +02:00
2026-07-29 12:48:26 +02:00
2026-07-03 16:19:31 +02:00
2026-07-02 17:37:30 +02:00
2026-07-01 14:59:37 +02:00
2026-07-23 22:32:51 +02:00
2026-07-02 12:40:19 +02:00
2026-06-03 22:28:20 +02:00
2026-06-01 15:04:25 +02:00
2026-07-01 14:59:37 +02:00
2026-07-27 10:07:49 +02:00
2026-07-01 14:59:37 +02:00
2026-07-01 14:59:37 +02:00
2026-07-13 22:45:06 +02:00
2026-07-22 08:47:52 +02:00
2026-06-24 21:00:54 +02:00
2026-07-03 14:39:07 +02:00
2026-06-17 12:20:55 +02:00
2026-07-13 22:16:33 +02:00
2026-07-13 17:15:01 +02:00
2026-07-22 13:53:32 +02:00
2026-07-01 14:59:37 +02:00
2026-06-24 14:03:57 +02:00
2026-06-01 15:04:25 +02:00
2026-07-07 16:29:22 +02:00
2026-07-01 14:59:37 +02:00
2026-07-01 14:59:37 +02:00
2026-05-12 14:21:09 +02:00
2026-07-03 16:19:16 +02:00
2026-07-08 12:24:19 +02:00
2026-06-01 18:29:16 +02:00
2026-06-17 15:22:04 +02:00
2026-07-13 16:56:49 +02:00
2026-07-03 16:19:29 +02:00
2026-07-03 16:19:29 +02:00
2026-07-03 16:19:29 +02:00
2026-07-01 11:02:33 +02:00
2026-06-22 20:31:45 +02:00
2026-06-22 20:31:45 +02:00
2026-07-01 11:02:33 +02:00
2026-06-22 20:31:45 +02:00
2026-06-22 20:31:45 +02:00
2026-06-22 20:31:45 +02:00
2026-06-22 20:31:45 +02:00
2026-06-22 20:31:45 +02:00
2026-06-22 20:31:45 +02:00
2026-06-22 20:31:45 +02:00
2026-06-22 20:31:45 +02:00
2026-07-20 17:05:16 +02:00
2026-06-22 20:31:45 +02:00
2026-06-22 20:31:45 +02:00
2026-06-22 20:31:45 +02:00
2026-07-07 10:05:42 +02:00
2026-06-26 16:40:27 +02:00
2026-07-23 21:14:37 +02:00
2026-05-11 11:39:10 +02:00
2026-06-25 13:29:10 +02:00