Shlink Versions Save

The definitive self-hosted URL shortener

v3.7.0

5 months ago

Changed

  • #1799 RoadRunner/openswoole jobs are not run anymore for tasks that are actually disabled.

    For example, if you did not enable RabbitMQ real-time updates, instead of triggering a job that ends immediately, the job will not even be enqueued.

  • #1835 Docker image is now built only when a release is tagged, and new tags are included, for minor and major versions.

  • #1055 Update OAS definition to v3.1.

  • #1885 Update to chronos 3.0.

  • #1896 Requests to health endpoint are no longer logged.

  • #1877 Print a warning when manually running visit:download-db command and a GeoLite2 license was not provided.

Added

  • #1798 Experimental support to send visits to an external Matomo instance.

  • #1780 Add new NO_ORPHAN_VISITS API key role.

    Keys with this role will always get 0 when fetching orphan visits.

    When trying to delete orphan visits the result will also be 0 and no visits will actually get deleted.

  • #1879 Cache namespace can now be customized via config option or CACHE_NAMESPACE env var.

    This is important if you are running multiple Shlink instance on the same server, or they share the same Redis instance (even more so if they are on different versions).

  • #1905 Add support for PHP 8.3.

  • #1927 Allow redis credentials be URL-decoded before passing them to connection.

  • #1834 Add support for redis encrypted connections using SSL/TLS.

    Encryption should work out of the box if servers schema is set tp tls or rediss, including support for self-signed certificates.

    This has been tested with AWS ElasticCache using in-transit encryption, and with Digital Ocean Redis database.

  • #1906 Add support for RabbitMQ encrypted connections using SSL/TLS.

    In order to enable SLL, you need to pass RABBITMQ_USE_SSL=true or the corresponding config option.

    Connections using self-signed certificates should work out of the box.

    This has been tested with AWS RabbitMQ using in-transit encryption, and with CloudAMQP.

Removed

  • #1790 Drop support for PHP 8.1.

Fixed

  • #1819 Fix incorrect timeout when running DB commands during Shlink start-up.
  • #1901 Do not allow short URLs with custom slugs containing URL-reserved characters, as they will not work at all afterward.
  • #1900 Fix short URL visits deletion when multi-segment slugs are enabled.

Deprecated

  • #1783 Deprecated support for openswoole. RoadRunner is the best replacement, with the same capabilities, but much easier and convenient to install and manage.

v3.7.0-beta.1

5 months ago

v3.6.4

7 months ago

Changed

  • #1866 The INITIAL_API_KEY env var is now only relevant for the official docker image.

    Going forward, new non-docker Shlink installations provisioned with env vars that also wish to provide an initial API key, should do it by using the vendor/bin/shlink-installer init --initial-api-key=%SOME_KEY% command, instead of using INITIAL_API_KEY.

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1819 Fix incorrect timeout when running DB commands during Shlink start-up.
  • #1870 Make sure shared locks include the cache prefix when using Redis.
  • #1866 Fix error when starting docker image with INITIAL_API_KEY env var.

Deprecated

  • Nothing

v3.6.3

11 months ago

Changed

  • Nothing

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1817 Fix Shlink trying to create SQLite database tables even if they already exist.

Deprecated

  • Nothing

v3.6.2

11 months ago

Changed

  • Nothing

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1808 Fix rr binary downloading during Shlink update.

Deprecated

  • Nothing

v3.6.1

11 months ago

Changed

  • Nothing

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1413 Fix error when creating initial DB in Postgres in a cluster where a default postgres db does not exist or the credentials do not grant permissions to connect.
  • #1803 Fix default RoadRunner port when not using docker image.

Deprecated

  • Nothing

v3.6.0

11 months ago

Changed

  • #1755 Update to roadrunner 2023

  • #1745 Roadrunner is now the default docker runtime.

    There are now three different docker images published:

    • Versions without suffix (like 3.6.0) will contain the default runtime, whichever it is.
    • Versions with -roadrunner suffix (like 3.6.0-roadrunner) will always use roadrunner as the runtime, even if default one changes in the future.
    • Versions with -openswoole suffix (like 3.6.0-openswoole) will always use openswoole as the runtime, even if default one changes in the future.

Added

  • #1148 Add support to delete short URL visits.

    This can be done via DELETE /short-urls/{shortCode}/visits REST endpoint or via short-url:visits-delete console command.

    The CLI command includes a warning and requires the user to confirm before proceeding.

  • #1681 Add support to delete orphan visits.

    This can be done via DELETE /visits/orphan REST endpoint or via visit:orphan-delete console command.

    The CLI command includes a warning and requires the user to confirm before proceeding.

  • #1753 Add a new vendor/bin/shlink-installer init command that can be used to automate Shlink installations.

    This command can create the initial database, update it, create proxies, clean cache, download initial GeoLite db files, etc

    The official docker image also uses it on its entry point script.

  • #1656 Add support for openswoole 22

  • #1784 Add new docker tag where the container runs as a non-root user.

  • #953 Add locks that prevent errors on duplicated keys when creating short URLs in parallel that depend on the same new tag or domain.

Removed

  • Nothing

Fixed

  • #1760 Fix domain not being set to null when importing short URLs with default domain.
  • #953 Fix duplicated key errors and short URL creation failing when creating short URLs in parallel that depend on the same new tag or domain.
  • #1741 Fix randomly using 100% CPU in task workers when trying to download GeoLite DB files.
  • Fix Shlink trying to connect to RabbitMQ even if configuration set to not connect.

Deprecated

  • Deprecated ENABLE_PERIODIC_VISIT_LOCATE env var. Use an external mechanism to automate visit locations.

v3.5.4

1 year ago

Changed

  • Nothing

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1742 Fix URLs using schemas which do not contain //, like mailto:, to no longer be considered valid.

  • #1743 Fix Error when trying to create short URLs from CLI on an openswoole context.

    Unfortunately the reason are real-time updates do not work with openswoole when outside an openswoole request, so the feature has been disabled for that context.

Deprecated

  • Nothing

v3.5.3

1 year ago

Changed

  • Nothing

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1715 Fix short URL creation/edition allowing long URLs without schema. Now a validation error is thrown.
  • #1537 Fix incorrect list of tags being returned for some author-only API keys.
  • #1738 Fix memory leak when importing short URLs with many visits.

Deprecated

  • Nothing

v3.5.2

1 year ago

Changed

  • #1696 Migrated to PHPUnit 10.

Added

  • Nothing

Removed

  • Nothing

Fixed

  • #1698 Fixed error 500 in robots.txt.
  • #1688 Fixed huge performance degradation on /tags/stats endpoint.
  • #1693 Fixed Shlink thinking database already exists if it finds foreign tables.

Deprecated

  • Nothing