Skip to content

Commit d8d733b

Browse files
committed
Release v1.20.0
1 parent b4aa8a0 commit d8d733b

3 files changed

Lines changed: 84 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,41 @@
11
# Changelog
22

3+
## v1.20.0 (2026-06-23)
4+
5+
This release requires Elixir v1.15+.
6+
7+
### Enhancements
8+
9+
* [Plug.RequestId] Make request ID generation configurable
10+
* [Plug.Test] Support `:sign` and `:encrypt` options in `put_req_cookie/4`
11+
12+
### Bug fixes
13+
14+
* [Plug.Conn] Run `before_send` callbacks before `upgrade_adapter/3`
15+
* [Plug.Debugger] Raise if Elixir is compiled without source information
16+
* [Plug.RewriteOn] Rewrite the protocol to HTTPS when `x-forwarded-proto` is `wss`
17+
* [Plug.Static] Return 416 for invalid range requests
18+
* [Plug.Static] Fix `:raise_on_missing_only` raising on non-matching paths with colons
19+
20+
### Optimizations
21+
22+
* [Plug.Conn.Cookies] Optimize cookie parsing
23+
* [Plug.Conn.Cookies] Optimize cookie encoding
24+
* [Plug.Conn.Utils] Optimize `validate_utf8!/3`
25+
* [Plug.Conn.Utils] Optimize splitting by semicolons
26+
* [Plug.Router] Optimize host matching
27+
28+
## v1.19.3 (2026-06-23)
29+
30+
### Security
31+
32+
* [Plug.Conn.Query] Force a maximum depth when decoding queries (CVE-2026-54892)
33+
34+
### Bug fixes
35+
36+
* [Plug.Conn] Validate headers on `inform`
37+
* [Plug.Static] Enforce size on range requests
38+
339
## v1.19.2 (2026-05-14)
440

541
### Security
@@ -29,6 +65,17 @@ This release requires Elixir v1.14+ and it bumps the recommended :strong and :co
2965

3066
* [Plug.Conn.Adapter] Deprecate `:owner` field
3167

68+
## v1.18.3 (2026-06-23)
69+
70+
### Security
71+
72+
* [Plug.Conn.Query] Force a maximum depth when decoding queries (CVE-2026-54892)
73+
74+
### Bug fixes
75+
76+
* [Plug.Conn] Validate headers on `inform`
77+
* [Plug.Static] Enforce size on range requests
78+
3279
## v1.18.2 (2026-05-14)
3380

3481
### Security
@@ -50,6 +97,17 @@ This release requires Elixir v1.14+ and it bumps the recommended :strong and :co
5097
* [Plug.RequestID] Allow metadata key to be customizable
5198
* [Plug.Router] Allow match to dispatch to function plugs
5299

100+
## v1.17.2 (2026-06-23)
101+
102+
### Security
103+
104+
* [Plug.Conn.Query] Force a maximum depth when decoding queries (CVE-2026-54892)
105+
106+
### Bug fixes
107+
108+
* [Plug.Conn] Validate headers on `inform`
109+
* [Plug.Static] Enforce size on range requests
110+
53111
## v1.17.1 (2026-05-14)
54112

55113
### Security
@@ -72,6 +130,17 @@ This release requires Elixir v1.14+ and it bumps the recommended :strong and :co
72130
* [Plug.Conn] Deprecate `owner` field. Tracking responses is now part of adapters
73131
* [Plug.Test] Deprecate `use Plug.Test` in favor of imports
74132

133+
## v1.16.4 (2026-06-23)
134+
135+
### Security
136+
137+
* [Plug.Conn.Query] Force a maximum depth when decoding queries (CVE-2026-54892)
138+
139+
### Bug fixes
140+
141+
* [Plug.Conn] Validate headers on `inform`
142+
* [Plug.Static] Enforce size on range requests
143+
75144
## v1.16.3 (2026-05-14)
76145

77146
### Security
@@ -105,6 +174,17 @@ This release requires Elixir v1.14+ and it bumps the recommended :strong and :co
105174
* Parse media types with underscores in them
106175
* Do not crash on `max_age` set to nil (for consistency)
107176

177+
## v1.15.5 (2026-06-23)
178+
179+
### Security
180+
181+
* [Plug.Conn.Query] Force a maximum depth when decoding queries (CVE-2026-54892)
182+
183+
### Bug fixes
184+
185+
* [Plug.Conn] Validate headers on `inform`
186+
* [Plug.Static] Enforce size on range requests
187+
108188
## v1.15.4 (2026-05-14)
109189

110190
### Security

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
defmodule Plug.MixProject do
22
use Mix.Project
33

4-
@version "1.20.0-dev"
4+
@version "1.20.0"
55
@description "Compose web applications with functions"
66
@xref_exclude [Plug.Cowboy, :ssl]
77
@source_url "https://github.com/elixir-plug/plug"

mix.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
%{
2-
"earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"},
3-
"ex_doc": {:hex, :ex_doc, "0.39.2", "da5549bbce34c5fb0811f829f9f6b7a13d5607b222631d9e989447096f295c57", [:mix], [{:earmark_parser, "~> 1.4.44", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "62665526a88c207653dbcee2aac66c2c229d7c18a70ca4ffc7f74f9e01324daa"},
2+
"earmark_parser": {:hex, :earmark_parser, "1.4.45", "cba8369ab2a1342e419bc2760eec731b17be828941dcf494045d44766227e1d5", [:mix], [], "hexpm", "d3ec045bf122965db20c0bdb420e19ee1415843135327124918473feb4b328e8"},
3+
"ex_doc": {:hex, :ex_doc, "0.40.3", "4a972ffe64bc07dc605af487e98fc19b72a4185f55ca031b94c0552d6071c1d9", [:mix], [{:earmark_parser, "~> 1.4.44", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "2756e357742fecd9749b489b85d67c9ce99c465f2e75728d9e6dc8d704b973de"},
44
"makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"},
55
"makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"},
6-
"makeup_erlang": {:hex, :makeup_erlang, "1.0.2", "03e1804074b3aa64d5fad7aa64601ed0fb395337b982d9bcf04029d68d51b6a7", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "af33ff7ef368d5893e4a267933e7744e46ce3cf1f61e2dccf53a111ed3aa3727"},
6+
"makeup_erlang": {:hex, :makeup_erlang, "1.1.0", "835f7e60792e08824cda445639555d7bf1bbbddb1b60b306e33cb6f6db24dc74", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "1cd6780fb1dd1a03979abaed0fe82712b0625118fd5257d3ebbf73f960c73c3c"},
77
"mime": {:hex, :mime, "1.6.0", "dabde576a497cef4bbdd60aceee8160e02a6c89250d6c0b29e56c0dfb00db3d2", [:mix], [], "hexpm", "31a1a8613f8321143dde1dafc36006a17d28d02bdfecb9e95a880fa7aabd19a7"},
88
"nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"},
99
"plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"},

0 commit comments

Comments
 (0)