Releases: shlinkio/shlink
v2.4.1
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
v2.4.0
Added
-
#829 Added support for QR codes in SVG format, by passing
?format=svg
to the QR code URL. -
#820 Added new option to force enabling or disabling URL validation on a per-URL basis.
Currently, there's a global config that tells if long URLs should be validated (by ensuring they are publicly accessible and return a 2xx status). However, this is either always applied or never applied.
Now, it is possible to enforce validation or enforce disabling validation when a new short URL is created or edited:
- On the
POST /short-url
andPATCH /short-url/{shortCode}
endpoints, you can now passvalidateUrl: true/false
in order to enforce enabling or disabling validation, ignoring the global config. If the value is not provided, the global config is still normally applied. - On the
short-url:generate
CLI command, you can pass--validate-url
or--no-validate-url
flags, in order to enforce enabling or disabling validation. If none of them is provided, the global config is still normally applied.
- On the
-
#838 Added new endpoint and CLI command to list existing domains.
It returns both default domain and specific domains that were used for some short URLs.
- REST endpoint:
GET /rest/v2/domains
- CLI Command:
domain:list
- REST endpoint:
-
#832 Added support to customize the port in which the docker image listens by using the
PORT
env var or theport
config option. -
#860 Added support to import links from bit.ly.
Run the command
short-urls:import bitly
and introduce requested information in order to import all your links.Other sources will be supported in future releases.
Changed
- #836 Added support for the
<field>-<dir>
notation while determining how to order the short URLs list, as in?orderBy=shortCode-DESC
. This effectively deprecates the array notation (?orderBy[shortCode]=DESC
), that will be removed in Shlink 3.0.0 - #782 Added code coverage to API tests.
- #858 Updated to latest infection version. Updated docker images to PHP 7.4.11 and swoole 4.5.5
- #887 Started tracking the API key used to create short URLs, in order to allow restrictions in future releases.
Deprecated
- #883 Deprecated
POST /tags
endpoint andtag:create
command, as tags are created automatically while creating short URLs.
Removed
- Nothing
Fixed
v2.3.0
Added
-
#746 Allowed to configure the kind of redirect you want to use for your short URLs. You can either set:
302
redirects: Default behavior. Visitors always hit the server.301
redirects: Better for SEO. Visitors hit the server the first time and then cache the redirect.
When selecting 301 redirects, you can also configure the time redirects are cached, to mitigate deviations in stats.
-
#734 Added support to redirect to deeplinks and other links with schemas different from
http
andhttps
. -
#709 Added multi-architecture builds for the docker image.
-
#707 Added
--all
flag toshort-urls:list
command, which will print all existing URLs in one go, with no pagination.It has one limitation, though. Because of the way the CLI tooling works, all rows in the table must be loaded in memory. If the amount of URLs is too high, the command may fail due to too much memory usage.
Changed
- #508 Added mutation checks to database tests.
- #790 Updated to doctrine/migrations v3.
- #798 Updated to guzzlehttp/guzzle v7.
- #822 Updated docker image to use PHP 7.4.9 with Alpine 3.12 and swoole 4.5.2.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- Nothing
v2.2.2
v2.2.1
v2.2.0
Added
-
#712 Added support to integrate Shlink with a mercure hub server.
Thanks to that, Shlink will be able to publish events that can be consumed in real time.
For now, two topics (events) are published, when new visits occur. Both include a payload with the visit and the shortUrl:
- A visit occurs on any short URL:
https://shlink.io/new-visit
. - A visit occurs on short URLs with a specific short code:
https://shlink.io/new-visit/{shortCode}
.
The updates are only published when serving Shlink with swoole.
Also, Shlink exposes a new endpoint
GET /rest/v2/mercure-info
, which returns the public URL of the mercure hub, and a valid JWT that can be used to subscribe to updates. - A visit occurs on any short URL:
-
#673 Added new
[GET /visits]
rest endpoint which returns basic visits stats. -
#674 Added new
[GET /tags/{tag}/visits]
rest endpoint which returns visits by tag.It works in the same way as the
[GET /short-urls/{shortCode}/visits]
one, returning the same response payload, and supporting the same query params, but the response is the list of visits in all short URLs which have provided tag. -
#672 Enhanced
[GET /tags]
rest endpoint so that it is possible to get basic stats info for every tag.Now, if the
withStats=true
query param is provided, the response payload will include a newstats
property which is a list with the amount of short URLs and visits for every tag.Also, the
tag:list
CLI command has been changed and it always behaves like this. -
#640 Allowed to optionally disable visitors' IP address anonymization. This will make Shlink no longer be GDPR-compliant, but it's OK if you only plan to share your URLs in countries without this regulation.
Changed
- #692 Drastically improved performance when loading visits. Specially noticeable when loading big result sets.
- #657 Updated how DB tests are run in travis by using docker containers which allow all engines to be covered.
- #751 Updated PHP and swoole versions used in docker image, and removed mssql-tools, as they are not needed.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #729 Fixed weird error when fetching multiple visits result sets concurrently using mariadb or mysql.
- #735 Fixed error when cleaning metadata cache during installation when APCu is enabled.
- #677 Fixed
/health
endpoint returning503
fail responses when the database connection has expired. - #732 Fixed wrong client IP in access logs when serving app with swoole behind load balancer.
v2.1.4
v2.2.0-alpha.1
Added
-
#712 Added support to integrate Shlink with a mercure hub server.
Thanks to that, Shlink will be able to publish events that can be consumed in real time.
For now, two topics (events) are published, when new visits occur. Both include a payload with the visit and the shortUrl:
- A visit occurs on any short URL:
https://shlink.io/new-visit
. - A visit occurs on short URLs with a specific short code:
https://shlink.io/new-visit/{shortCode}
.
The updates are only published when serving Shlink with swoole.
Also, Shlink exposes a new endpoint
GET /rest/v2/mercure-info
, which returns the public URL of the mercure hub, and a valid JWT that can be used to subsribe to updates. - A visit occurs on any short URL:
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
v2.1.3
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #712 Fixed app set-up not clearing entities metadata cache.
- #711 Fixed
HEAD
requests returning a duplicatedContent-Length
header. - #716 Fixed Twitter not properly displaying preview for final long URL.
- #717 Fixed DB connection expiring on task workers when using swoole.
- #705 Fixed how the short URL domain is inferred when generating QR codes, making sure the configured domain is respected even if the request is performed using a different one, and only when a custom domain is used, then that one is used instead.