## expressjs/express — v5.0.0-beta.1…v5.0.0-beta.3

_174+ commits._

### Features
- **Allow passing non-strings to res.location with new encoding handling checks fixes #5554 #5555** (a003cfa)
- **Add note on how to update docs for new release (#5541)** (567c9c6)
- **examples: add missing html label associations** (8880dda)
- **Add "root" option to res.download** (0def9bb)
- **Support proper 205 responses using res.send** (87279c0)

### Fixes
- **Improved fix for open redirect allow list bypass** (da4d763)
- **tests: fix handling multiple callbacks** (2a89eb5)
- **Fix routing requests without method** (74beeac)
- **Fix regression routing a large stack in a single route** (7ec5dd2)
- **Fix hanging on large stack of sync routes** (631ada0)
- **Fix handling very large stacks of sync middleware** (708ac4c)
- **tests: fix typo in description** (1b2e097)
- **Fix behavior of null/undefined as "maxAge" in res.cookie** (5855339)
- **tests: fix position of res.sendfile(path, options) test** (cf9f662)
- **tests: fix callback in res.download test** (8da8f79)
- **tests: fix up app.locals tests** (7df0c84)
- **tests: fix req.acceptsLanguage tests** (d8ed591)
- **tests: fix req.acceptsEncodings tests** (8ee3420)

### Backend
- **v5.0.0-beta.3** (cd7d79f)
- **Merge branch '5.0' into 5.x** (5e2345e)
- **Merge tag '4.19.2' into 5.0** (6415f70)
- **4.19.2** (04bc627)
- **5.0.0-beta.2** (7091ec1)
- **Merge tag '4.19.1' into 5.x** (60fb1d2)
- **Merge tag '4.19.0' into 5.x** (e9f9aae)
- **4.19.1** (4f0f6cc)
- **fixed un-edited version in history.md for 4.19.0** (a1fa90f)
- **4.19.0** (084e365)
- **Prevent open redirect allow list bypass due to encodeurl** (0867302)
- **deps: cookie@0.6.0** (69a4cf2)
- **4.18.3** (1b51eda)
- **examples: improve view count in cookie-sessions** (0e3ab6e)
- **examples: remove multipart example** (3abea7f)
- **tests: use random port in listen test** (2a00da2)
- **lint: remove unused function arguments in Route tests** (3531987)
- **tests: wait for server close in app.listen()** (8c24fa8)
- **deps: body-parser@1.20.2** (1e42a98)
- **lint: remove unused parameters in examples** (3c1d605)
- **lint: remove unused parameter from internal function** (a1efd9d)
- **lint: remove unused function arguments in tests** (c6ee8d6)
- **4.18.2** (8368dc1)
- **deps: qs@6.11.0** (24b3dc5)
- **deps: body-parser@1.20.1** (689d175)
- **examples: remove unused function arguments in params** (2c47827)
- **tests: verify all handlers called in stack tests** (97f0a51)
- **4.18.1** (d854c43)
- **bench: remove unused parameter** (75e0c7a)
- **4.18.0** (547fdd4)
- **bench: print latency and vary connections** (0b330ef)
- **tests: mark stack overflow as long running** (fd8e45c)
- **deps: cookie@0.5.0** (92c5ce5)
- **examples: use http-errors to create errors** (b91c7ff)
- **deps: on-finished@2.4.1** (2e2d78c)
- **deps: statuses@2.0.1** (980d881)
- **deps: qs@6.10.3** (1df7576)
- **deps: body-parser@1.20.0** (32c558d)
- **Use http-errors for res.format error** (a107702)
- **deps: depd@2.0.0** (1cc8169)
- **Invoke default with same arguments as types in res.format** (9482b82)
- **examples: use updated res.download in example** (10b9b50)
- **Allow options without filename in res.download** (03dc367)
- **deps: finalhandler@1.2.0** (f739b16)
- **deps: serve-static@1.15.0** (c924206)
- **deps: send@0.18.0** (dd69eed)
- **Deprecate string and non-integer arguments to res.status** (4847d0e)
- **Ignore Object.prototype values in settings through app.set/app.get** (c17fe05)
- **lint: remove unnecessary continue statement in loop** (947b6b7)
- **examples: fixup html** (2a7417d)
- **lint: remove deprecated String.prototype.substr** (490f1a1)
- **tests: expand res.sendFile options tests** (291993d)
- **tests: remove duplicate utils** (18f782b)
- **tests: remove usage of should** (bc5ca05)
- **tests: update res.append to verify separate header lines** (9967ffb)
- **Merge tag '4.17.3'** (318fd4b)
- **4.17.3** (3d7fce5)
- **deps: qs@6.9.7** (6381bc6)
- **deps: body-parser@1.19.2** (a007863)
- **Revert "build: use minimatch@3.0.4 for Node.js < 4"** (e98f584)
- **tests: use strict mode** (a659137)

### Docs
- **docs: loosen TC activity rules** (4ee853e)
- **docs: nominating @wesleytodd to be project captian** (414854b)
- **docs: update release date** (06c6b88)
- **docs: add documentation for benchmarks** (e720c5a)
- **docs: add project captains to contribution** (59aae76)
- **docs: update TC governance rules** (c4fe7de)
- **docs: fix typos in history** (5ad9541)
- **docs: add missing JSDoc param for parseExtendedQueryString** (506fbd6)
- **docs: fix typos in JSDoc comments** (6b4c4f5)
- **docs: update git clone to https protocol** (06b2b14)
- **docs: replace Freenode with Libera Chat** (61f4049)
- **docs: use Node.js name style** (33e8dc3)
- **docs: remove Node Security Project from security policy** (ecaf67c)
- **docs: fix typo in casing of HTTP** (99175c3)
- **docs: fix incomplete JSDoc comment** (bf4c3ee)
- **docs: add install size badge** (e8594c3)
- **docs: consolidate contributing in readme** (07aa91f)
- **docs: switch badges to badgen** (4ed35b4)
- **docs: update link to github actions ci** (ea66a9b)
- **docs: fix typo in private api jsdoc** (d0e166c)

### Chore
- **build: disable test for 4.x which is failing in v5** (416ba02)
- **build: fix build due to inconsistent supertest behavior in older versions** (11f2b1d)
- **build: pin Node 21.x to minor** (b625132)
- **build: pin Node 21.x to minor** (e3eca80)
- **build: support Node.js 21.6.2** (23b44b3)
- **build: support Node.js 21.x in appveyor** (b9fea12)
- **build: support Node.js 21.x** (c259c34)
- **build: support Node.js 20.x in appveyor** (fdeb1d3)
- **build: support Node.js 20.x** (734b281)
- **build: Node.js@18.19** (59af63a)
- **build: actions/checkout@v4** (a229207)
- **build: Node.js@19.9** (02d1c39)
- **build: Node.js@18.17** (8d8bfaa)
- **build: eslint@8.47.0** (13df1de)
- **build: Node.js@16.20** (24e4a25)
- **build: use nyc@14.1.1 for Node.js < 10** (91b6fb8)
- **build: Node.js@18.15** (f540c3b)
- **build: eslint@8.36.0** (b8b2eff)
- **build: ejs@3.1.9** (f4e48bc)
- **build: fix code coverage aggregate upload** (0debedf)
- **build: support Node.js 19.x** (9bc1742)
- **build: eslint@8.34.0** (8a76f39)
- **build: mocha@10.2.0** (60b7c67)
- **build: use $GITHUB_OUTPUT for environment list** (b9f7a97)
- **build: Node.js@18.14** (546969d)
- **build: Node.js@16.19** (f05b5d0)
- **build: actions/checkout@v3** (442fd46)
- **build: Node.js@18.12** (723b677)
- **build: Node.js@16.18** (29e117e)
- **build: Node.js@18.10** (bb7907b)
- **build: supertest@6.3.0** (f56ce73)
- **build: eslint@8.24.0** (340be0f)
- **build: supertest@6.2.4** (644f646)
- **build: Node.js@14.20** (ecd7572)
- **build: Node.js@18.7** (97131bc)
- **build: Node.js@16.17** (8d98e86)
- **build: Node.js@18.1** (ab2c70b)
- **build: ejs@3.1.8** (745a63f)
- **build: mocha@10.0.0** (a2dfc56)
- **build: Node.js@16.15** (b02a95c)
- **build: ejs@3.1.7** (e2482b7)
- **build: supertest@6.2.3** (2df96e3)
- **build: mocha@9.2.2** (a38fae1)
- **build: support Node.js 18.x** (158a170)
- **build: use 64-bit Node.js in AppVeyor** (29ea1b2)
- **build: support Node.js 17.x** (11a209e)
- **build: use supertest@3.4.2 for Node.js 6.x** (04da4aa)
- **build: support Node.js 16.x** (8bf0720)
- **build: support Node.js 15.x** (eb4c930)
- **build: mocha@9.2.1** (446046f)
- **build: update example dependencies** (f906371)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/expressjs/express?utm_source=github-action)._