Releases: shlinkio/shlink
v2.7.0
Added
-
#1044 Added ability to set names on API keys, which helps to identify them when the list grows.
-
#819 Visits are now always located in real time, even when not using swoole.
The only side effect is that a GeoLite2 db file is now installed when the docker image starts or during shlink installation or update.
Also, when using swoole, the file is now updated after tracking a visit, which means it will not apply until the next one.
-
#1059 Added ability to optionally display author API key and its name when listing short URLs from the command line.
-
#1066 Added support to import short URLs and their visits from another Shlink instance using its API.
-
#898 Improved tracking granularity, allowing to disable visits tracking completely, or just parts of it.
In order to achieve it, Shlink now supports 4 new tracking-related options, that can be customized via env vars for docker, or via installer:
disable_tracking
: If true, visits will not be tracked at all.disable_ip_tracking
: If true, visits will be tracked, but neither the IP address, nor the location will be resolved.disable_referrer_tracking
: If true, the referrer will not be tracked.disable_ua_tracking
: If true, the user agent will not be tracked.
-
#955 Added new option to set short URLs as crawlable, making them be listed in the robots.txt as Allowed.
-
#900 Shlink now tries to detect if the visit is coming from a potential bot or crawler, and allows to exclude those visits from visits lists if desired.
Changed
- #1036 Updated to
happyr/doctrine-specification
2.0. - #1039 Updated to
endroid/qr-code
4.0. - #1008 Ensured all logs are sent to the filesystem while running API tests, which helps debugging the reason for tests to fail.
Deprecated
- Nothing
Removed
- Nothing
Fixed
v2.6.2
v2.6.1
Added
- Nothing
Changed
- #1026 Removed non-inclusive terms from source code.
Deprecated
- Nothing
Removed
- Nothing
Fixed
v2.6.0
Added
-
#856 Added PHP 8.0 support.
-
#941 Added support to provide a title for every short URL.
The title can also be automatically resolved from the long URL, when no title was explicitly provided, but this option needs to be opted in.
-
#913 Added support to import short URLs from a standard CSV file.
The file requires the
Long URL
andShort code
columns, and it also accepts the optionaltitle
,domain
andtags
columns. -
#1000 Added support to provide a
margin
query param when generating some URL's QR code. -
#675 Added ability to track visits to the base URL, invalid short URLs or any other "not found" URL, as known as orphan visits.
This behavior is enabled by default, but you can opt out via env vars or config options.
This new orphan visits can be consumed in these ways:
- The
https://shlink.io/new-orphan-visit
mercure topic, which gets notified when an orphan visit occurs. - The
GET /visits/orphan
REST endpoint, which behaves like the short URL visits and tags visits endpoints, but returns only orphan visits.
- The
Changed
-
#977 Migrated from
laminas/laminas-paginator
topagerfanta/core
to handle pagination. -
#986 Updated official docker image to use PHP 8.
-
#1010 Increased timeout for database commands to 10 minutes.
-
#874 Changed how dist files are generated. Now there will be two for every supported PHP version, with and without support for swoole.
The dist files will have been built under the same PHP version they are meant to be run under, ensuring resolved dependencies are the proper ones.
Deprecated
-
#959 Deprecated all command flags using camelCase format (like
--expirationDate
), adding kebab-case replacements for all of them (like--expiration-date
).All the existing camelCase flags will continue working for now, but will be removed in Shlink 3.0.0
-
#862 Deprecated the endpoint to edit tags for a short URL (
PUT /short-urls/{shortCode}/tags
).The short URL edition endpoint (
PATCH /short-urls/{shortCode}
) now supports setting the tags too. Use it instead.
Removed
- Nothing
Fixed
- #988 Fixed serving zero-byte static files in apache and apache-compatible web servers.
- #990 Fixed short URLs not properly composed in REST API endpoints when both custom domain and custom base path are used.
- #1002 Fixed weird behavior in which GeoLite2 metadata's
buildEpoch
is parsed as string instead of int. - #851 Fixed error when trying to schedule swoole tasks in ARM architectures (like raspberry).
v2.5.2
Added
- #965 Added docs section for Architectural Decision Records, including the one for API key roles.
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #979 Added missing
itemsPerPage
query param to swagger docs for short RULs list. - #980 Fixed value used for
Access-Control-Allow-Origin
, that could not work as expected when including an IP address. - #947 Fixed incorrect value returned in
Access-Control-Allow-Methods
header, which always contained all methods.
v2.5.1
v2.5.0
Added
-
#795 and #882 Added new roles system to API keys.
API keys can have any combinations of these two roles now, allowing to limit their interactions:
- Can interact only with short URLs created with that API key.
- Can interact only with short URLs for a specific domain.
-
#833 Added support to connect through unix socket when using an external MySQL, MariaDB or Postgres database.
It can be provided during the installation, or as the
DB_UNIX_SOCKET
env var for the docker image. -
#869 Added support for Mercure Hub 0.10.
-
#896 Added support for unicode characters in custom slugs.
-
#930 Added new
bin/set-option
script that allows changing individual configuration options on existing shlink instances. -
#877 Improved API tests on CORS, and "refined" middleware handling it.
Changed
- #912 Changed error templates to be plain html files, removing the dependency on
league/plates
package. - #875 Updated to
mezzio/mezzio-swoole
v3.1. - #952 Simplified in-project docs, by keeping only the basics and linking to the websites docs for anything else.
Deprecated
- #917 Deprecated
/{shortCode}/qr-code/{size}
URL, in favor of providing the size in the query instead,/{shortCode}/qr-code?size={size}
. - #924 Deprecated mechanism to provide config options to the docker image through volumes. Use the env vars instead as a direct replacement.
Removed
- Nothing
Fixed
- Nothing
v2.5.0-alpha.2
API key roles
v2.5.0-alpha.1
Experimental DB sockets support
v2.4.2
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #904 Explicitly added missing "Domains" and "Integrations" tags to swagger docs.
- #901 Ensured domains which are not in use on any short URL are not returned on the list of domains.
- #899 Avoided filesystem errors produced while downloading geolite DB files on several shlink instances that share the same filesystem.
- #827 Fixed swoole config getting loaded in config cache if a console command is run before any web execution, when swoole extension is enabled, making subsequent non-swoole web requests fail.