All notable changes to this project will be documented in this file, in reverse chronological order by release.
+## 1.7.1 - 2018-02-26
+
+### Added
+
+- Nothing.
+
+### Changed
+
+- [#293](https://github.com/zendframework/zend-diactoros/pull/293) updates
+ `Uri::getHost()` to cast the value via `strtolower()` before returning it.
+ While this represents a change, it is fixing a bug in our implementation:
+ the PSR-7 specification for the method, which follows IETF RFC 3986 section
+ 3.2.2, requires that the host name be normalized to lowercase.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- Nothing.
+
+### Fixed
+
+- [#290](https://github.com/zendframework/zend-diactoros/pull/290) fixes
+ `Stream::getSize()` such that it checks that the result of `fstat` was
+ succesful before attempting to return its `size` member; in the case of an
+ error, it now returns `null`.
+
+## 1.7.0 - 2018-01-04
+
+### Added
+
+- [#285](https://github.com/zendframework/zend-diactoros/pull/285) adds a new
+ custom response type, `Zend\Diactoros\Response\XmlResponse`, for generating
+ responses representing XML. Usage is the same as with the `HtmlResponse` or
+ `TextResponse`; the response generated will have a `Content-Type:
+ application/xml` header by default.
+
+- [#280](https://github.com/zendframework/zend-diactoros/pull/280) adds the
+ response status code/phrase pairing "103 Early Hints" to the
+ `Response::$phrases` property. This is a new status proposed via
+ [RFC 8297](https://datatracker.ietf.org/doc/rfc8297/).
+
+- [#279](https://github.com/zendframework/zend-diactoros/pull/279) adds explicit
+ support for PHP 7.2; previously, we'd allowed build failures, though none
+ occured; we now require PHP 7.2 builds to pass.
+
+### Changed
+
+- Nothing.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- Nothing.
+
+### Fixed
+
+- Nothing.
+
+## 1.6.1 - 2017-10-12
+
+### Added
+
+- Nothing.
+
+### Changed
+
+- [#273](https://github.com/zendframework/zend-diactoros/pull/273) updates each
+ of the SAPI emitter implementations to emit the status line after emitting
+ other headers; this is done to ensure that the status line is not overridden
+ by PHP.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- Nothing.
+
+### Fixed
+
+- [#273](https://github.com/zendframework/zend-diactoros/pull/273) modifies how
+ the `SapiEmitterTrait` calls `header()` to ensure that a response code is
+ _always_ passed as the third argument; this is done to prevent PHP from
+ silently overriding it.
+
+## 1.6.0 - 2017-09-13
+
+### Added
+
+- Nothing.
+
+### Changed
+
+- [#270](https://github.com/zendframework/zend-diactoros/pull/270) changes the
+ behavior of `Zend\Diactoros\Server`: it no longer creates an output buffer.
+
+- [#270](https://github.com/zendframework/zend-diactoros/pull/270) changes the
+ behavior of the two SAPI emitters in two backwards-incompatible ways:
+
+ - They no longer auto-inject a `Content-Length` header. If you need this
+ functionality, zendframework/zend-expressive-helpers 4.1+ provides it via
+ `Zend\Expressive\Helper\ContentLengthMiddleware`.
+
+ - They no longer flush the output buffer. Instead, if headers have been sent,
+ or the output buffer exists and has a non-zero length, the emitters raise an
+ exception, as mixed PSR-7/output buffer content creates a blocking issue.
+ If you are emitting content via `echo`, `print`, `var_dump`, etc., or not
+ catching PHP errors or exceptions, you will need to either fix your
+ application to always work with a PSR-7 response, or provide your own
+ emitters that allow mixed output mechanisms.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- Nothing.
+
+### Fixed
+
+- Nothing.
+
+## 1.5.0 - 2017-08-22
+
+### Added
+
+- [#205](https://github.com/zendframework/zend-diactoros/pull/205) adds support
+ for PHP 7.2.
+
+- [#250](https://github.com/zendframework/zend-diactoros/pull/250) adds a new
+ API to `JsonResponse` to avoid the need for decoding the response body in
+ order to make changes to the underlying content. New methods include:
+ - `getPayload()`: retrieve the unencoded payload.
+ - `withPayload($data)`: create a new instance with the given data.
+ - `getEncodingOptions()`: retrieve the flags to use when encoding the payload
+ to JSON.
+ - `withEncodingOptions(int $encodingOptions)`: create a new instance that uses
+ the provided flags when encoding the payload to JSON.
+
+### Changed
+
+- [#249](https://github.com/zendframework/zend-diactoros/pull/249) changes the
+ behavior of the various `Uri::with*()` methods slightly: if the value
+ represents no change, these methods will return the same instance instead of a
+ new one.
+
+- [#248](https://github.com/zendframework/zend-diactoros/pull/248) changes the
+ behavior of `Uri::getUserInfo()` slightly: it now (correctly) returns the
+ percent-encoded values for the user and/or password, per RFC 3986 Section
+ 3.2.1. `withUserInfo()` will percent-encode values, using a mechanism that
+ prevents double-encoding.
+
+- [#243](https://github.com/zendframework/zend-diactoros/pull/243) changes the
+ exception messages thrown by `UploadedFile::getStream()` and `moveTo()` when
+ an upload error exists to include details about the upload error.
+
+- [#233](https://github.com/zendframework/zend-diactoros/pull/233) adds a new
+ argument to `SapiStreamEmitter::emit`, `$maxBufferLevel` **between** the
+ `$response` and `$maxBufferLength` arguments. This was done because the
+ `Server::listen()` method passes only the response and `$maxBufferLevel` to
+ emitters; previously, this often meant that streams were being chunked 2 bytes
+ at a time versus the expected default of 8kb.
+
+ If you were calling the `SapiStreamEmitter::emit()` method manually
+ previously, you will need to update your code.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- [#205](https://github.com/zendframework/zend-diactoros/pull/205) and
+ [#243](https://github.com/zendframework/zend-diactoros/pull/243) **remove
+ support for PHP versions prior to 5.6 as well as HHVM**.
+
+### Fixed
+
+- [#248](https://github.com/zendframework/zend-diactoros/pull/248) fixes how the
+ `Uri` class provides user-info within the URI authority; the value is now
+ correctly percent-encoded , per RFC 3986 Section 3.2.1.
+
+## 1.4.1 - 2017-08-17
+
+### Added
+
+- Nothing.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- [#260](https://github.com/zendframework/zend-diactoros/pull/260) removes
+ support for HHVM, as tests have failed against it for some time.
+
+### Fixed
+
+- [#247](https://github.com/zendframework/zend-diactoros/pull/247) fixes the
+ `Stream` and `RelativeStream` `__toString()` method implementations to check
+ if the stream `isSeekable()` before attempting to `rewind()` it, ensuring that
+ the method does not raise exceptions (PHP does not allow exceptions in that
+ method). In particular, this fixes an issue when using AWS S3 streams.
+
+- [#252](https://github.com/zendframework/zend-diactoros/pull/252) provides a
+ fix to the `SapiEmitterTrait` to ensure that any `Set-Cookie` headers in the
+ response instance do not override those set by PHP when a session is created
+ and/or regenerated.
+
+- [#257](https://github.com/zendframework/zend-diactoros/pull/257) provides a
+ fix for the `PhpInputStream::read()` method to ensure string content that
+ evaluates as empty (including `0`) is still cached.
+
+- [#258](https://github.com/zendframework/zend-diactoros/pull/258) updates the
+ `Uri::filterPath()` method to allow parens within a URI path, per [RFC 3986
+ section 3.3](https://tools.ietf.org/html/rfc3986#section-3.3) (parens are
+ within the character set "sub-delims").
+
## 1.4.0 - 2017-04-06
### Added