11# Changelog
22
33# v1.5.1
4- * Fixed various typespecs.
4+
5+ - Added APNS InvalidPushType error ([ #172 ] ( https://github.com/codedge-llc/pigeon/pull/172 ) ).
6+ - Fixed various typespecs ([ #170 ] ( https://github.com/codedge-llc/pigeon/pull/170 ) ).
57
68## v1.5.0
7- * Bumped minimum Elixir version to 1.6
8- * Raise ` Pigeon.ConfigError ` when booting invalid config structs.
9+
10+ - Bumped minimum Elixir version to 1.6
11+ - Raise ` Pigeon.ConfigError ` when booting invalid config structs.
912 See below for validated keys and error types.
10- * ` APNS.JWTConfig ` now validates key p8 content before connecting.
11- * Relaxed ` gen_stage ` dependency to allow ` ~> 1.0 `
13+ - ` APNS.JWTConfig ` now validates key p8 content before connecting.
14+ - Relaxed ` gen_stage ` dependency to allow ` ~> 1.0 `
1215
1316Validated config keys:
17+
1418- ` ADM.Config ` - ` :client_id ` , ` :client_secret `
1519- ` APNS.Config ` - ` :cert ` , ` :key `
1620- ` APNS.JWTConfig ` - ` :team_id ` , ` :key ` , ` :key_identifier `
1721- ` FCM.Config ` - ` :key `
1822
1923Possible error values:
20- - ` {:error, {:invalid, value}} `
21- - ` {:error, {:nofile, value}} `
24+
25+ - ` {:error, {:invalid, value}} `
26+ - ` {:error, {:nofile, value}} `
2227
2328## v1.4.0
24- * ` apns-push-type ` header support for iOS 13. An additional ` :push_type ` key has been
29+
30+ - ` apns-push-type ` header support for iOS 13. An additional ` :push_type ` key has been
2531 added to the ` APNS.Notification ` struct.
2632
2733## v1.3.2
28- * Document workers configuration for run-time configuration of push workers.
29- * Modify run-time configuration of push workers so that multiple (or no)
34+
35+ - Document workers configuration for run-time configuration of push workers.
36+ - Modify run-time configuration of push workers so that multiple (or no)
3037 workers may be returned by the startup configuration.
3138
3239## v1.3.1
33- * Joken dependency bumped to 2.1
40+
41+ - Joken dependency bumped to 2.1
3442
3543## v1.3.0
36- * Support for FCM ` content_available ` , ` mutable_content ` , and ` condition ` keys
37- * Set ` priority ` of APNS notifications
38- * Joken dependency bumped to 2.0.1
44+
45+ - Support for FCM ` content_available ` , ` mutable_content ` , and ` condition ` keys
46+ - Set ` priority ` of APNS notifications
47+ - Joken dependency bumped to 2.0.1
3948
4049## v1.2.4
41- * Fixed ADM handling of connection timeouts
50+
51+ - Fixed ADM handling of connection timeouts
4252
4353## v1.2.3
44- * Fixed APNS, FCM and ADM error response parse crashes. Error responses not
54+
55+ - Fixed APNS, FCM and ADM error response parse crashes. Error responses not
4556 listed in the documentation are returned as ` :unknown_error `
4657
4758## v1.2.2
48- * Fixed APNS handling of notification ` expiration `
49- * Added APNS support for ` collapse_id `
59+
60+ - Fixed APNS handling of notification ` expiration `
61+ - Added APNS support for ` collapse_id `
5062
5163## v1.2.1
52- * FCM notifications can now handle ` time_to_live ` , ` collapse_key ` , ` restricted_package_name `
64+
65+ - FCM notifications can now handle ` time_to_live ` , ` collapse_key ` , ` restricted_package_name `
5366 and ` dry_run ` keys
5467
5568## v1.2.0
56- * Support for APNS JWT configuration
57- * Bump ` kadabra ` dependency to ` v0.4.2 `
69+
70+ - Support for APNS JWT configuration
71+ - Bump ` kadabra ` dependency to ` v0.4.2 `
5872
5973## v1.1.6
60- * Relax ` gen_stage ` dependency to ` ~> 0.12 `
61- * Bump ` kadabra ` dependency to ` v0.3.7 `
74+
75+ - Relax ` gen_stage ` dependency to ` ~> 0.12 `
76+ - Bump ` kadabra ` dependency to ` v0.3.7 `
6277
6378## v1.1.5
64- * Fix: relax ` httpoison ` dependency to allow ` 0.x ` or ` 1.0 `
79+
80+ - Fix: relax ` httpoison ` dependency to allow ` 0.x ` or ` 1.0 `
6581
6682## v1.1.4
67- * Fix: ` :on_response ` callbacks spawned as supervised task instead of running
83+
84+ - Fix: ` :on_response ` callbacks spawned as supervised task instead of running
6885 in the ` Worker ` process
69- * Fix: ADM token refresh failure returns updated notification instead of
86+ - Fix: ADM token refresh failure returns updated notification instead of
7087 error tuple
7188
7289## v1.1.3
73- * More robust FCM/APNS backpressure
74- * Bumped minimum Kadabra version to ` v0.3.6 `
90+
91+ - More robust FCM/APNS backpressure
92+ - Bumped minimum Kadabra version to ` v0.3.6 `
7593
7694## v1.1.2
77- * Auto-restart connections if max stream ID is reached
78- * FCM/APNS Workers now use GenStage to queue pending pushes
79- * Bumped minimum Kadabra version to ` v0.3.5 `
95+
96+ - Auto-restart connections if max stream ID is reached
97+ - FCM/APNS Workers now use GenStage to queue pending pushes
98+ - Bumped minimum Kadabra version to ` v0.3.5 `
8099
81100## v1.1.1
82- * Bumped minimum Kadabra version to ` v0.3.4 `
101+
102+ - Bumped minimum Kadabra version to ` v0.3.4 `
83103
84104## v1.1.0
85- * Minimum requirements now Elixir v1.4 and OTP 19.2 (Kadabra bumped
105+
106+ - Minimum requirements now Elixir v1.4 and OTP 19.2 (Kadabra bumped
86107 to ` v0.3.0 ` )
87- * Startup worker configs. Create a functions that return config
108+ - Startup worker configs. Create a functions that return config
88109 structs and specify them your ` config.exs ` with
89110
90111``` elixir
@@ -97,125 +118,150 @@ config :pigeon, workers: [
97118```
98119
99120** APNS**
100- * ` APNS.Config.config/1 ` renamed to ` APNS.Config.new/1 `
101- * ` APNS.push/2 ` tagged tuples done away with in favor of a ` :response ` key on
121+
122+ - ` APNS.Config.config/1 ` renamed to ` APNS.Config.new/1 `
123+ - ` APNS.push/2 ` tagged tuples done away with in favor of a ` :response ` key on
102124 the notification.
103- * Override push server endpoint with ` :uri ` option in ` APNS.Config.new/1 `
104- * ` :use_2197 ` renamed to ` :port `
105- * ` :uri ` config option for overriding push server endpoint
106- * ` :reconnect ` now false by default
125+ - Override push server endpoint with ` :uri ` option in ` APNS.Config.new/1 `
126+ - ` :use_2197 ` renamed to ` :port `
127+ - ` :uri ` config option for overriding push server endpoint
128+ - ` :reconnect ` now false by default
107129
108130** FCM**
109- * ` NotificationResponse ` done away with in favor of a ` :response ` key
131+
132+ - ` NotificationResponse ` done away with in favor of a ` :response ` key
110133 on ` Notification `
111- * Override push server endpoint with ` :uri ` and ` :port ` options
134+ - Override push server endpoint with ` :uri ` and ` :port ` options
112135 in ` FCM.Config.new/1 `
113- * ` :uri ` and ` :port ` config options for overriding push server endpoint
136+ - ` :uri ` and ` :port ` config options for overriding push server endpoint
114137
115138** ADM**
116- * ` ADM.Config.config/1 ` renamed to ` ADM.Config.new/1 `
117- * ` ADM.push/2 ` tagged tuples done away with in favor of a ` :response ` key on
139+
140+ - ` ADM.Config.config/1 ` renamed to ` ADM.Config.new/1 `
141+ - ` ADM.push/2 ` tagged tuples done away with in favor of a ` :response ` key on
118142 the notification.
119- * ` ADM.start_connection/1 ` and ` ADM.stop_connection/1 ` added
143+ - ` ADM.start_connection/1 ` and ` ADM.stop_connection/1 ` added
120144
121145## v1.0.4
122- * Fix: removed connection pinging from FCM.Worker (` :ping_period ` option
146+
147+ - Fix: removed connection pinging from FCM.Worker (` :ping_period ` option
123148 left in FCM config to not break API)
124149
125150## v1.0.3
126- * Fixed proper handling of large FCM push batches
151+
152+ - Fixed proper handling of large FCM push batches
127153
128154## v1.0.2
129- * Fixed FCM infinite ` GOAWAY session_timed_out ` loop
155+
156+ - Fixed FCM infinite ` GOAWAY session_timed_out ` loop
130157
131158## v1.0.1
132- * Configurable ` :ping_period ` for FCM connections
159+
160+ - Configurable ` :ping_period ` for FCM connections
133161
134162## v1.0.0
135- * GCM migrated to FCM API (http2)
136- * ` GCM ` modules renamed to ` FCM `
137- * Set priority of FCM notifications
138- * ` APNSWorker ` and ` ADMWorker ` renamed to ` APNS.Worker ` and ` ADM.Worker `
139- * Disable auto-reconnect for APNS workers with ` reconnect: false `
140- * Removed Chatterbox http2 client adapter
163+
164+ - GCM migrated to FCM API (http2)
165+ - ` GCM ` modules renamed to ` FCM `
166+ - Set priority of FCM notifications
167+ - ` APNSWorker ` and ` ADMWorker ` renamed to ` APNS.Worker ` and ` ADM.Worker `
168+ - Disable auto-reconnect for APNS workers with ` reconnect: false `
169+ - Removed Chatterbox http2 client adapter
141170
142171## v0.13.0
143- * Configurable ` :ping_period ` for APNS connections
172+
173+ - Configurable ` :ping_period ` for APNS connections
144174
145175## v0.12.1
146- * Various ` chatterbox ` client adapter fixes
176+
177+ - Various ` chatterbox ` client adapter fixes
147178
148179## V0.12.0
149- * Configurable ` Pigeon.Http2.Client ` . Currently supports ` kadabra `
180+
181+ - Configurable ` Pigeon.Http2.Client ` . Currently supports ` kadabra `
150182 and ` chatterbox `
151- * ` kadabra ` bumped to ` v0.2.0 `
183+ - ` kadabra ` bumped to ` v0.2.0 `
152184
153185## v0.11.0
154- * APNS workers can be started and referenced with pids and/or atom names
155- * Fix: Push ` :name ` option renamed to ` :to `
156- * Fix: GCM/ADM async pushes now use ` spawn/1 ` instead of ` Task.async/1 `
186+
187+ - APNS workers can be started and referenced with pids and/or atom names
188+ - Fix: Push ` :name ` option renamed to ` :to `
189+ - Fix: GCM/ADM async pushes now use ` spawn/1 ` instead of ` Task.async/1 `
157190
158191## v0.10.3
159- * Fix: cleaned up Elixir v1.4 warnings
192+
193+ - Fix: cleaned up Elixir v1.4 warnings
160194
161195## v0.10.2
162- * Fix: poison dependency version made optionally ` ~> 2.0 or ~> 3.0 `
196+
197+ - Fix: poison dependency version made optionally ` ~> 2.0 or ~> 3.0 `
163198
164199## v0.10.1
165- * Fix: kadabra not started
200+
201+ - Fix: kadabra not started
166202
167203## v0.10.0
168- * Migrated HTTP/2 client from ` chatterbox ` to ` kadabra `
169- * Support for ADM (Amazon Android) push
170- * APNS pushes are now synchronous by default. For async pushes use the
204+
205+ - Migrated HTTP/2 client from ` chatterbox ` to ` kadabra `
206+ - Support for ADM (Amazon Android) push
207+ - APNS pushes are now synchronous by default. For async pushes use the
171208 new ` on_response ` option. GCM and ADM will have it in the next major release.
172- * Bulk APNS pushing
173- * Handling of multiple APNS worker connections with different configs
174- * Re-implemented APNS socket pings to keep connections open
175- * ` :invalid_jSON ` corrected to ` :invalid_json `
209+ - Bulk APNS pushing
210+ - Handling of multiple APNS worker connections with different configs
211+ - Re-implemented APNS socket pings to keep connections open
212+ - ` :invalid_jSON ` corrected to ` :invalid_json `
176213
177214## v0.9.2
178- * Fixed GCM error response atom conversion
215+
216+ - Fixed GCM error response atom conversion
179217
180218## v0.9.1
181- * Fixed : eaddrinuse error when restarting Pigeon too quickly with
219+
220+ - Fixed : eaddrinuse error when restarting Pigeon too quickly with
182221 : apns_2197 enabled
183222
184223## v0.9.0
185- * APNS topic made optional
186- * APNS ` put_mutable_content ` helper function added
187- * GCM can be configured on a per-push basis
188- * Updated to use Macro.underscore
224+
225+ - APNS topic made optional
226+ - APNS ` put_mutable_content ` helper function added
227+ - GCM can be configured on a per-push basis
228+ - Updated to use Macro.underscore
189229
190230## v0.8.0
191- * Implemented Chatterbox as APNS HTTP2 client
192- * APNS server responses now caught asynchronously
193- * GCM support for ` notification ` and ` data ` payload keys
231+
232+ - Implemented Chatterbox as APNS HTTP2 client
233+ - APNS server responses now caught asynchronously
234+ - GCM support for ` notification ` and ` data ` payload keys
194235 (` Pigeon.GCM.Notification.new ` API changes)
195236
196237## v0.7.0
197- * APNS cert/key configs can now either be a file path, full-text string,
238+
239+ - APNS cert/key configs can now either be a file path, full-text string,
198240 or ` {:your_app, "path/to/file.pem"} ` (which looks in the ` /priv ` directory
199241 of your app)
200- * Fixed APNSWorker crash on ` :ssl.send/2 ` timeout
201- * Better error-handling for invalid APNS configs
242+ - Fixed APNSWorker crash on ` :ssl.send/2 ` timeout
243+ - Better error-handling for invalid APNS configs
202244
203245## v0.6.0
204- * ` Pigeon.APNS.Notification.new/3 ` returns ` %Pigeon.APNS.Notification{} ` struct
205- * Configure APNS to use SSL port 2197 with ` apns_2197: true ` in
246+
247+ - ` Pigeon.APNS.Notification.new/3 ` returns ` %Pigeon.APNS.Notification{} ` struct
248+ - Configure APNS to use SSL port 2197 with ` apns_2197: true ` in
206249 your ` config.exs `
207- * Error feedback symbols converted from ` CamelCase ` to ` snake_case `
208- * APNS expiration values supported with ` expiration ` key in
250+ - Error feedback symbols converted from ` CamelCase ` to ` snake_case `
251+ - APNS expiration values supported with ` expiration ` key in
209252 ` %Pigeon.APNS.Notification{} `
210253
211254## v0.5.2
212- * Fixed bug where APNSWorker would hang up if SSL connection failed. Now
255+
256+ - Fixed bug where APNSWorker would hang up if SSL connection failed. Now
213257 retries the connection twice more before gracefully shutting down.
214258
215259## v0.5.1
216- * GCM error responses return proper chunk of regstration IDs
260+
261+ - GCM error responses return proper chunk of regstration IDs
217262
218263## v0.5.0
219- * ` Pigeon.GCM.Notification.new/2 ` returns ` %Pigeon.GCM.Notification{} ` struct
220- * Multiple registration IDs allowed in ` Pigeon.GCM.push/2 `
221- * Remove ` :gcm_worker `
264+
265+ - ` Pigeon.GCM.Notification.new/2 ` returns ` %Pigeon.GCM.Notification{} ` struct
266+ - Multiple registration IDs allowed in ` Pigeon.GCM.push/2 `
267+ - Remove ` :gcm_worker `
0 commit comments