Skip to content

Releases: shlinkio/shlink

v3.2.0

05 Aug 17:11
3266a0f
Compare
Choose a tag to compare

Changed

  • #1452 Updated to monolog 3

  • #1485 Changed payload published in RabbitMQ for all visits events, in order to conform with the Async API spec.

    Since this is a breaking change, also provided a new RABBITMQ_LEGACY_VISITS_PUBLISHING=true env var that can be provided in order to keep the old payload.

    This env var is considered deprecated and will be removed in Shlink 4, when the legacy format will no longer be supported.

Added

  • #854 Added support for multi-segment custom slugs.

    The feature is disabled by default, but you can optionally opt in. If you do, you will be able to create short URLs with multiple segments in the custom slug, like https://example.com/foo/bar/baz.

  • #1280 Added missing visit-related commands.

    Now you can run tag:visits, domain:visits, visit:orphan or visit:non-orphan to get the corresponding list of visits from the command line.

  • #962 Added new real-time update for new short URLs.

    You can now subscribe to the https://shlink.io/new-short-url topic on any of the supported async updates technologies in order to get notified when a short URL is created.

  • #1367 Added support to publish real-time updates in redis pub/sub.

    The publishing will happen in the same redis instance/cluster configured for caching.

Removed

  • #1280 Dropped support for PHP 8.0

Fixed

  • #1471 Fixed error when running visit:locate command with any extra parameter (like --retry).

Deprecated

  • Nothing

v3.1.2

04 Jun 09:47
3d43bdb
Compare
Choose a tag to compare

Changed

  • Nothing

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1448 Fixed HTML entities not being properly parsed when auto-resolving page titles.
  • #1458 Fixed 500 error when filtering short URLs by ALL tags and search term.

Deprecated

  • Nothing

v3.1.1

09 May 06:25
aacb5c3
Compare
Choose a tag to compare

Changed

  • #1444 Updated docker image to openswoole 4.11.1, in an attempt to fix error.

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1439 Fixed crash when trying to auto-resolve titles for URLs which serve large binary files.

Deprecated

  • Nothing

v3.1.0

23 Apr 09:58
68e0aa1
Compare
Choose a tag to compare

Changed

  • #1359 Hidden database commands.
  • #1385 Prevented a big error message from being logged when using Shlink without mercure.
  • #1398 Increased required mutation score for unit tests to 85%.
  • #1419 Input dates are now parsed to Shlink's configured timezone or default timezone before using them for database queries.
  • #1428 Updated native dependencies in docker image and base image to PHP v8.1.5.

Added

  • #1294 Allowed to provide a specific domain when importing URLs from YOURLS.

  • #1416 Added support to import URLs from Kutt.it.

  • #1418 Added support to customize the timezone used by Shlink, falling back to the default one set in PHP config.

    The timezone can be set via the TIMEZONE env var, or using the installer tool.

  • #1309 Improved URL importing, ensuring individual errors do not make the whole process fail, and instead, failing URLs are skipped.

  • #1162 Added new endpoint to get visits by domain.

    The endpoint is GET /domains/{domain}/visits, and it has the same capabilities as any other visits endpoint, allowing pagination and filtering.

Removed

  • Nothing

Fixed

  • #1397 Fixed db:create command always reporting the schema exists if the db:migrate command has been run before by mistake.
  • #1402 Fixed the base path getting appended with the default domain by mistake, causing multiple side effects in several places.

Deprecated

  • #1340 Deprecated webhooks. New events will only be added to other real-time updates approaches, and webhooks will be completely removed in Shlink 4.0.0.

v3.0.3

19 Feb 18:48
e1ebbaa
Compare
Choose a tag to compare

Changed

  • #1382 Updated docker image to PHP 8.1.3.

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1377 Fixed installer always setting delete threshold with value 1.
  • #1379 Ensured API keys cannot be created with a domain-only role linked to default domain.

Deprecated

  • Nothing

v3.0.2

10 Feb 20:52
4110c70
Compare
Choose a tag to compare

Changed

  • Nothing

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1373 Fixed incorrect config import when updating from Shlink 2.x using SQLite.
  • #1369 Fixed slow regexps in .htaccess file.

Deprecated

  • Nothing

v3.0.1

04 Feb 16:58
Compare
Choose a tag to compare

Changed

  • Nothing

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1363 Fixed titles being resolved no matter what when validateUrl is not set or is explicitly set to true.
  • #1352 Updated to stable pdo_sqlsrv in docker image.

Deprecated

  • Nothing

v3.0.0

28 Jan 15:40
a9d0472
Compare
Choose a tag to compare

Added

  • #767 Added full support to use emojis everywhere, whether it is custom slugs, titles, referrers, etc.

  • #1274 Added support to filter short URLs lists by all provided tags.

    The GET /short-urls endpoint now accepts a tagsMode=all param which will make only short URLs matching all the tags in the tags[] query param, to be returned.

    The short-urls:list command now accepts a -i/--including-all-tags flag which behaves the same.

  • #1273 Added support for pagination in tags lists, allowing to improve performance by loading subsets of tags.

    For backwards compatibility, lists continue returning all items by default, but the GET /tags endpoint now supports page and itemsPerPage query params, to make sure only a subset of the tags is returned.

    This is supported both when invoking the endpoint with and without withStats=true query param.

    Additionally, the endpoint also supports filtering by searchTerm query param. When provided, only tags matching it will be returned.

  • #1063 Added new endpoint that allows fetching all existing non-orphan visits, in case you need a global view of all visits received by your Shlink instance.

    This can be achieved using the GET /visits/non-orphan endpoint.

Changed

  • #1277 Reduced docker image size to 45% of the original size.
  • #1268 Updated dependencies, including symfony/console 6 and mezzio/mezzio-swoole 4.
  • #1283 Changed behavior of DELETE_SHORT_URL_THRESHOLD env var, disabling the feature if a value was not provided.
  • #1300 Changed default ordering for short URLs list, returning always from newest to oldest.
  • #1299 Updated to the latest base docker images, based in PHP 8.1.1, and bumped openswoole to v4.9.1.
  • #1282 Env vars now have precedence over installer options.
  • #1328 Refactored ShortUrlsRepository to use DTOs in methods with too many arguments.

Deprecated

  • #1315 Deprecated GET /tags?withStats=true endpoint. Use GET /tags/stats instead.

Removed

  • #1275 Removed everything that was deprecated in Shlink 2.x.

    See UPGRADE doc in order to get details on how to migrate to this version.

  • #1347 Dropped support for regular swoole in favor of openswoole.

    Since openswoole support was introduced in the previous release version, Shlink will still consider the swoole extension as openswoole, as at the moment, functionality hasn't deviated too much, and will simplify migrating to Shlink 3.0.0

    However, there's no longer active testing with regular swoole, and it is considered no longer supported. If some incompatibility arises, the only supported solution will be to migrate to openswoole.

Fixed

  • Nothing

v2.10.3

23 Jan 17:38
356b33c
Compare
Choose a tag to compare

Changed

  • Nothing

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1349 Fixed memory leak in cache implementation.

Deprecated

  • Nothing

v2.10.2

07 Jan 20:57
470c62d
Compare
Choose a tag to compare

Changed

  • Nothing

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1293 Fixed error when trying to create/import short URLs with a too long title.
  • #1306 Ensured remote IP address is not logged when using swoole/openswoole.
  • #1308 Fixed memory leak when using redis due to the amount of non-expiring keys created by doctrine. Now they have a 24h expiration by default.

Deprecated

  • Nothing