v4.0.0
Changed
- #1935 Replace dependency on abandoned
php-middleware/request-id
with userland simple middleware. - #1988 Remove dependency on
league\uri
package. - #1909 Update docker image to PHP 8.3.
- #1786 Run API tests with RoadRunner by default.
- #2008 Update to Doctrine ORM 3.0.
- #2010 Update to Symfony 7.0 components.
- #2016 Simplify and improve how code coverage is generated in API and CLI tests.
- #1674 Database columns persisting long URLs have now
TEXT
type, which allows for much longer values.
Added
-
#1914 Add new dynamic redirects engine based on rules. Rules are conditions checked against the visitor's request, and when matching, they can result in a redirect to a different long URL.
Rules can be based on things like the presence of specific params, headers, locations, etc. This version ships with three initial rule condition types: device, query param and language.
-
#1902 Add dynamic redirects based on query parameters.
This is implemented on top of the new rule-based redirects.
-
#1915 Add dynamic redirects based on accept language.
This is implemented on top of the new rule-based redirects.
-
#1868 Add support for docker compose secrets to the docker image.
-
#1979 Allow orphan visits lists to be filtered by type.
This is supported both by the
GET /visits/orphan
API endpoint viatype=...
query param, and by thevisit:orphan
CLI command, via--type
flag. -
#1904 Allow to customize QR codes foreground color, background color and logo.
-
#1884 Allow a path prefix to be provided during short URL creation.
This can be useful to let Shlink generate partially random URLs, but with a known prefix.
Path prefixes are validated and filtered taking multi-segment slugs into consideration, which means slashes are replaced with dashes as long as multi-segment slugs are disabled.
Removed
- #1908 Remove support for openswoole (and swoole).
Fixed
- #2000 Fix short URL creation/edition getting stuck when trying to resolve the title of a long URL which never returns a response.
Deprecated
- Nothing