Releases: shlinkio/shlink
v1.20.1
Added
- #519 Documented how to customize web workers and task workers for the docker image.
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #512 Fixed query params not being properly forwarded from short URL to long one.
- #540 Fixed errors thrown when creating short URLs if the original URL has an internationalized domain name and URL validation is enabled.
- #528 Ensured
db:create
anddb:migrate
commands do not silently fail when run as part ofinstall
orupdate
. - #518 Fixed service which updates Geolite db file to use a local lock instead of a shared one, since every shlink instance holds its own db instance.
v1.20.0
Added
-
#491 Added improved short code generation logic.
Now, short codes are truly random, which removes the guessability factor existing in previous versions.
Generated short codes have 5 characters, and shlink makes sure they keep unique, while making it backwards-compatible.
-
#418 and #419 Added support to redirect any 404 error to a custom URL.
It was already possible to configure this but only for invalid short URLs. Shlink now also support configuring redirects for the base URL and any other kind of "not found" error.
The three URLs can be different, and it is already possible to pass them to the docker image via configuration or env vars.
The installer also asks for these two new configuration options.
-
#497 Officially added support for MariaDB.
Changed
- #458 Updated coding styles to use shlinkio/php-coding-standard v2.0.0.
Deprecated
- Nothing
Removed
-
- Nothing
Fixed
- #507 Fixed error with too long original URLs by increasing size to the maximum value (2048) based on the standard.
- #502 Fixed error when providing the port as part of the domain on short URLs.
- #509 Fixed error when trying to generate a QR code for a short URL which uses a custom domain.
- #522 Highly mitigated errors thrown when lots of short URLs are created concurrently including new and existing tags.
v1.19.0
Added
-
#482 Added support to serve shlink under a sub path.
The
router.base_path
config option can be defined now to set the base path from which shlink is served.return [ 'router' => [ 'base_path' => '/foo/bar', ], ];
This option will also be available on shlink-installer 1.3.0, so the installer will ask for it. It can also be provided for the docker image as the
BASE_PATH
env var. -
#479 Added preliminary support for multiple domains.
Endpoints and commands which create short URLs support providing the
domain
now (via query param or CLI flag). If not provided, the short URLs will still be "attached" to the default domain.Custom slugs can be created on multiple domains, allowing to share links like
https://doma.in/my-compaign
andhttps://example.com/my-campaign
, under the same shlink instance.When resolving a short URL to redirect end users, the following rules are applied:
- If the domain used for the request plus the short code/slug are found, the user is redirected to that long URL and the visit is tracked.
- If the domain is not known but the short code/slug is defined for default domain, the user is redirected there and the visit is tracked.
- In any other case, no redirection happens and no visit is tracked (if a fall back redirection is configured for not-found URLs, it will still happen).
Changed
- #486 Updated to shlink-installer v2, which supports asking for base path in which shlink is served.
Deprecated
- Nothing
Removed
- #435 Removed translations for error pages. All error pages are in english now.
Fixed
- Nothing
v1.19.0-beta.1
Beta release with multidomain support
v1.18.1
Added
- Nothing
Changed
- #450 Added PHP 7.4 to the build matrix, as an allowed-to-fail env.
- #441 and #443 Split some logic into independent modules.
- #451 Updated to infection 0.13.
- #467 Moved docker image config to main Shlink repo.
Deprecated
- #428 Deprecated preview-generation feature. It will keep working but it will be removed in Shlink v2.0.0
Removed
- #468 Removed APCu extension from docker image.
Fixed
- #449 Fixed error when trying to save too big referrers on PostgreSQL.
v1.18.0
Added
-
#411 Added new
meta
property on theShortUrl
REST API model.These endpoints are affected and include the new property when suitable:
GET /short-urls
- List short URLs.GET /short-urls/shorten
- Create a short URL (for integrations).GET /short-urls/{shortCode}
- Get one short URL.POST /short-urls
- Create short URL.
The property includes the values
validSince
,validUntil
andmaxVisits
in a single object. All of them are nullable.{ "validSince": "2016-01-01T00:00:00+02:00", "validUntil": null, "maxVisits": 100 }
-
#285 Visit location resolution is now done asynchronously but in real time thanks to swoole task management.
Now, when a short URL is visited, a task is enqueued to locate it. The user is immediately redirected to the long URL, and in the background, the visit is located, making stats to be available a couple of seconds after the visit without the requirement of cronjobs being run constantly.
Sadly, this feature is not enabled when serving shlink via apache/nginx, where you should still rely on cronjobs.
-
#384 Improved how remote IP addresses are detected.
This new set of headers is now also inspected looking for the IP address:
- CF-Connecting-IP
- True-Client-IP
- X-Real-IP
-
#440 Created
db:create
command, which improves how the shlink database is created, with these benefits:- It sets up a lock which prevents the command to be run concurrently.
- It checks of the database does not exist, and creates it in that case.
- It checks if the database tables already exist, exiting gracefully in that case.
-
#442 Created
db:migrate
command, which improves doctrine's migrations command by generating a lock, preventing it to be run concurrently.
Changed
- #430 Updated to shlinkio/php-coding-standard 1.2.2
- #305 Implemented changes which will allow Shlink to be truly clusterizable.
- #262 Increased mutation score to 75%.
Deprecated
- Nothing
Removed
- Nothing
Fixed
v1.17.0
Added
-
#377 Updated
visit:locate
command (formerlyvisit:process
) to automatically update the GeoLite2 database if it is too old or it does not exist.This simplifies processing visits in a container-based infrastructure, since a fresh container is capable of getting an updated version of the file by itself.
It also removes the need of asynchronously and programmatically updating the file, which deprecates the
visit:update-db
command. -
#373 Added support for a simplified config. Specially useful to use with the docker container.
Changed
- #56 Simplified supported cache, requiring APCu always.
Deprecated
- #406 Deprecated
PUT /short-urls/{shortCode}
REST endpoint in favor ofPATCH /short-urls/{shortCode}
.
Removed
Fixed
- Nothing
v1.16.3
Added
- Nothing
Changed
- #153 Updated to doctrine/migrations version 2.0.0
- #376 Allowed
visit:update-db
command to not return an error exit code even if download fails, by passing the-i
flag. - #341 Improved database tests so that they are executed against all supported database engines.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #382 Fixed existing short URLs not properly checked when providing the
findIfExists
flag.