Add apnotic gem for APNs mobile push delivery

Add apnotic gem for APNs mobile push delivery

What does this MR do and why?

A big part of the vision for the GitLab mobile app is that it will become a kind of "Command Center" for GitLab Duo workflows. That means, whenever Duo does something in GitLab, users should be able to quickly and easily see the status/result of that from wherever they are in that moment. The necessary foundation to enable that is that notifications can be sent to the GitLab mobile app.

This MR is 1 of 4 that sets up that foundation. The current scope is on push notifications delivered to the iOS version of the mobile app for any new To-Dos that get created.

You can see a short overview here:

This MR adds the apnotic gem (plus its net-http2 / http-2 dependencies) — a connection-pooled, HTTP/2, token-authenticated client for the Apple Push Notification service.

This is part 1 of 4 in the mobile push notifications stack, split out so the new-dependency approval can proceed in parallel with the rest:

  1. → this MR: apnotic gem
  2. Device push subscription registry (table + model) — !248022 (merged)
  3. Registration REST API (/user/push_subscriptions) — !248023 (merged)
  4. To-do dispatch worker + APNs delivery — !248026 (merged)

The gem is unused until part 4 lands; nothing references it in this MR.

Dependency review notes

  • License: MIT.
  • Used for outbound HTTPS/2 connections to api.push.apple.com / api.sandbox.push.apple.com only, authenticated with a .p8 signing key (JWT provider-token auth, no certificates).
  • Maintained, no native extensions, no runtime monkey-patching.

MR acceptance checklist

  • Gemfile, Gemfile.lock, Gemfile.checksum, Gemfile.next.lock, Gemfile.next.checksum all consistent (bundle check passes).

🤖 Generated with Claude Code

Edited by Marcel van Remmerden

Merge request reports

Loading