38 KiB
CHANGELOG
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[3.5.0] - 2022-01-01
Added
-
#407 Improved how visits (short URLs, tags and orphan) are loaded, to avoid ending up in a page with "There are no visits matching current filter".
Now, the app will try to load visits for the configured default interval, and in parallel, it will load the latest visit.
If the resulting list for that interval is empty, it will try to infer the closest interval with visits, based on the latest visit's date, and reload visits for that interval.
-
#547 Improved domains page, to tell which of the domains are not properly configured.
Now, when this section is loaded, it tries to call the
GET /rest/health
endpoint for each one of the domains, and displays a warning icon on each one that failed.The warning includes a link to the documentation, explaining what are the steps to get it fixed.
-
#506 Improved how servers are handled, dispaying a warning when creating or importing servers that already exist.
-
#535 Allowed editing default domain redirects when consuming Shlink 2.10 or newer.
-
#531 Added custom slug field to the basic creation form in the Overview page.
-
#537 Allowed to customize the ordering for every list in the app that supports it, being currently tags and short URLs.
-
#542 Added ordering for short URLs to the query, so that it is consistent with the rest of the filtering params.
Changed
- #534 Updated axios.
- #538 Switched to the
<field>-<dir>
notation inorderBy
param for short URLs list, in preparation for Shlink v3.0.0
Deprecated
- Nothing
Removed
- Nothing
Fixed
- Nothing
[3.4.2] - 2021-12-07
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #530 Fixed crash on domains page when default domain has an explicitly set port.
[3.4.1] - 2021-11-20
Added
- #525 Added docs section for Architectural Decision Records, including the one for servers "auto-connect".
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #520 Fixed landing page scroll on mobile devices and improved its design.
- #526 Ensured exported servers do not include the
autoConnect
prop.
[3.4.0] - 2021-11-11
Added
- #496 Allowed to select "all visits" as the default interval for visits.
- #500 Allowed to set the
forwardQuery
flag when creating/editing short URLs on a Shlink v2.9.0 server. - #508 Added new servers management section.
- #490 Now a server can be marked as auto-connect, skipping home screen when that happens.
- #492 Improved tags table, by supporting sorting by column and making the header sticky.
- #515 Allowed to sort tags even when using the cards display mode.
- #518 Improved short URLs list filtering by moving selected tags, search text and dates to the query string, allowing to navigate back and forth or even bookmark filters.
Changed
- Moved ci workflow to external repo and reused
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #252 Fixed visits coming from mercure being added in real time, even when selected date interval does not match tha visit's date.
- #48 Fixed error when selected page gets out of range after filtering short URLs list by text, tags or dates. Now the page is reset to 1 in any of those cases.
[3.3.2] - 2021-10-17
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #503 Fixed short URLs title not being resettable after creation.
[3.3.1] - 2021-09-27
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #497 Fixed crash in domains section when one of the domains have more than one dot.
[3.3.0] - 2021-09-25
Added
-
#465 Added new page to manage domains and their redirects, when consuming Shlink 2.8 or higher.
-
#460 Added dynamic title on hover for tags with a very long title.
-
#462 Now it is possible to paste multiple comma-separated tags in the tags selector, making all of them to be added as individual tags.
-
#463 The strategy to determine which tags to suggest in the TagsSelector during short URL creation, can now be configured:
startsWith
: Suggests tags that start with the input. This is the default behavior for keep it as it was so far.includes
: Suggests tags that contain the input.
-
#464 Added support to download QR codes. This feature requires an unreleased version of Shlink, so it comes disabled, and will get enabled as soon as Shlink v2.9 is released.
-
#469 Added support
errorCorrection
in QR codes, when consuming Shlink 2.8 or higher. -
#459 Added new list mode to display tags.
The mode is optional, and you can toggle between the classic cards mode or the new list mode whenever you want.
You can also configure the default mode from settings.
Changed
- #408 Updated to Chart.js 3.5
- #486 Refactored components used to render visits charts, making them easier to maintain and understand.
- #409 Increased required code coverage and added hard threshold check.
Deprecated
- Nothing
Removed
- #491 Dropped support for Shlink older than v2.4.0.
Fixed
- Nothing
[3.2.1] - 2021-09-12
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #478 Fixed tags including special chars not being properly URL encoded before using them as query params.
- #480 Fixed servers import on Chromium-based browsers when using windows.
- #482 Fixed end date not being set to the end of the day when filtering visits using a "smart filter" (last 7 days, last 30 days, etc).
[3.2.0] - 2021-07-12
Added
-
#433 Added support to provide a default server to connect to via env vars:
SHLINK_SERVER_URL
: The URL of the Shlink server to configure by default.SHLINK_SERVER_API_KEY
: The API key of the Shlink server.SHLINK_SERVER_NAME
: A name you want to give to this server. Defaults to Shlink if not provided.
-
#432 Added support to provide the
servers.json
file inside aconf.d
folder. -
#440 Added hint of what visits come potentially from a bot, in the visits table, when consuming Shlink >=2.7.
-
#431 Added support to filter out visits from potential bots in visits sections, when consuming Shlink >=2.7.
-
#430 Added support to set new and existing short URLs as crawlable, when consuming Shlink >=2.7.
-
#450 Improved landing page design.
-
#449 Improved PWA update banner, allowing to restart the app directly from it without having to close the tab.
Changed
- #442 Visits filtering now goes through the corresponding reducer.
- #337 Replaced moment.js with date-fns.
- #360 Changed component used to generate a tags selector, switching from
react-tagsinput
, which is no longer maintained, toreact-tag-autocomplete
.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #438 Fixed horizontal scrolling in short URLs list on mobile devices when the long URL didn't have words to break.
[3.1.2] - 2021-06-06
Added
- Nothing
Changed
- #428 Updated to StrykerJS 5.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #371 Recovered PWA functionality.
[3.1.1] - 2021-05-08
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #413 Fixed edit short URL form reflecting outdated info after navigating back from other section.
- #412 Ensured new visits coming from mercure hub are prepended and not appended, to keep proper sorting.
- #417 Fixed link spanning out of QR code modal.
- #411 Added missing feedback when editing a short URL to know if everything went right.
[3.1.0] - 2021-03-29
Added
-
#379 and #384 Improved QR code modal, including controls to customize size, format and margin, as well as a button to copy the link to the clipboard.
-
#385 Added setting to determine if "validate URL" should be enabled or disabled by default.
-
#386 Added new card in overview section to display amount of orphan visits when using Shlink 2.6.0 or higher.
-
#177 Added dark theme.
-
#387 and #395 Added a section to see orphan visits stats, when consuming Shlink >=2.6.0.
-
#383 Added title to short URLs list, displayed when consuming Shlink >=2.6.0.
-
#368 Added new settings to define the default interval for visits pages.
-
#349 Added support to export visits to CSV.
-
#397 New section to edit all data for short URLs, including title when using Shlink v2.6 or newer.
This new section replaces the old modals to edit short URL meta, short URL tags and the long URL. Everything is now together in the same section.
Changed
- #382 Ensured short URL tags are edited through the
PATCH /short-urls/{shortCode}
endpoint when using Shlink 2.6.0 or higher. - #398 Improved performance when loading short URL details by avoiding API calls if the short URL is already present in local state.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #335 Fixed linting errors.
[3.0.1] - 2020-12-30
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #364 Fixed all dropdowns so that they are consistently styled.
- #366 Fixed text in visits menu jumping to next line in some tablet resolutions.
- #367 Removed conflicting overflow in visits table for mobile devices.
- #365 Fixed weird rendering of short URLs list in tablets.
- #372 Fixed importing servers in Android devices.
[3.0.0] - 2020-12-22
Added
-
#340 Added new "overview" page, showing basic information of the active server.
As a side effect, it also introduces improvements in the "create short URL" page, grouping components by context and explaining what they are for.
-
#309 Added new domain selector component in create URL form which allows selecting from previously used domains or set a new one.
-
#315 Now you can tell if you want to validate the long URL when using Shlink >=2.4.
-
#285 Improved visits section:
- Charts are now grouped in tabs, so that only one part of the components is rendered at a time.
- Amount of highlighted visits is now displayed.
- Date filtering can be now selected through relative times (last 7 days, last 30 days, etc) or absolute dates using date pickers.
- Only the visits for last 30 days are loaded by default. You can change that at any moment if required.
-
#355 Improved home page, fixing also its scrolling behavior for mobile devices.
Changed
- #267 Added some subtle but important improvements on UI/UX.
- #352 Moved from Scrutinizer to Codecov as the code coverage backend.
- #217 Improved how messages are displayed, by centralizing it in the
Message
andResult
components. - #219 Improved error messages when something fails while interacting with Shlink's API.
Deprecated
- Nothing
Removed
- #344 Dropped support for Shlink v1.
Fixed
- Nothing
[2.6.2] - 2020-11-14
Added
- Nothing
Changed
- #325 and #294 Updated all dependencies, including React 17, Typescript 4, react-datepicker 3 and Stryker 4.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #334 Fixed color-picker making the app crash when closing the modal without closing the color-picker, and then trying to open the modal again.
- #333 Fixed visits getting accumulated every time the visits page is opened.
[2.6.1] - 2020-10-31
Added
- Nothing
Changed
- #292 Improved a bit how caching works by removing the service worker and adding proper HTTP caching config on nginx inside docker image.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #316 Fixed manifest.json file not getting downloaded after passing credentials when the app is protected with basic auth.
- #311 Fixed datepicker showing below other components.
- #306 Fixed multi-arch docker builds by replacing node-sass with dart-sass.
- #328 Fixed toggle switches getting broken in mobile resolutions.
[2.6.0] - 2020-09-20
Added
-
#289 Client and server version constraints are now links to the corresponding project release notes.
-
#293 Shlink versions are now always displayed in footer, hiding the server version when there's no connected server.
-
#250 Added support to group real time updates in fixed intervals.
The settings page now allows to provide the interval in which the UI should get updated, making that happen at once, with all the updates that have happened during that interval.
By default updates are immediately applied if real-time updates are enabled, to keep the behavior as it was.
-
#277 Added highlighting capabilities to the visits line chart.
Changed
- #150 The list of short URLs is now ordered by the creation date, showing newest results first.
- #248 Numbers displayed application-wide are now prettified.
- #40 Migrated project to TypeScript.
- #297 Moved docker image building to github actions.
- #305 Split travis build so that every step is run in a parallel job.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #295 Fixed custom slug field not being disabled when selecting a short code length.
- #301 Fixed tags visits loading not being cancelled when leaving visits page.
[2.5.1] - 2020-06-06
Added
- Nothing
Changed
- #254 Reduced duplication on code to handle mercure topics binding.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #276 Fixed default grouping used for visits line chart, making it be dynamic depending on how old the short URL is.
- #280 Fixed shlink-web-client version not being properly passed when building stable tags of the docker image.
- #269 Fixed doughnut chart legends getting to big and hiding charts on mobile devices.
[2.5.0] - 2020-05-31
Added
-
#148 Added support for real-time updates when consuming a Shlink version that is integrated with a mercure hub server.
The integration is transparent. When a server is opened, shlink-web-client will try to get the mercure info from it.
- If it works, it will setup the necessary
EventSource
s, dispatching redux actions when an event is pushed, which will in turn update the UI. - If it fails, it will assume it is either not configured or not supported by the Shlink version.
- If it works, it will setup the necessary
-
#265 Updated tags section to allow displaying number of short URLs using every tag and number of visits for all short URLs using the tag.
This will work only when using Shlink v2.2.0 or above. For previous versions, the tags page will continue behaving the same.
-
#261 Added new page to show visit stats by tag.
This new page will return a "not found" error when the server is lower than v2.2.0, as older versions do not support fetching stats by tag.
-
#253 Created new settings page that will be used to define customizations in the app.
-
#149 and #198 Added new line chart to visits and tags stats which displays amount of visits during selected time period, grouped by month, week, day or hour.
Changed
- #218 Added back button to sections not displayed in left menu.
- #255 Improved how servers and settings are persisted in the local storage.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #262 Fixed charts displaying decimal numbers, when visits are absolute and that makes no sense.
[2.4.0] - 2020-04-10
Added
-
#199 Added table to visits page which displays the information in a paginated, sortable and filterable list.
It also supports selecting multiple visits in the table which makes the corresponding data to be highlighted in the visits charts.
-
#241 Added support to select charts bars in order to highlight related stats in other charts.
It also selects the visits in the new table, and you can even combine a selection in the chart and in the table.
-
#213 The versions of both shlink-web-client and currently consumed Shlink server are now displayed in the footer.
-
#221 Improved how servers are handled, displaying meaningful errors when a not-found or a not-reachable server is tried to be loaded.
-
#226 Created servers can now be edited.
-
#234 Allowed short code length to be edited on any new short URL when using Shlink 2.1 or higher.
-
#235 Allowed editing the long URL for any existing short URL when suing Shlink 2.1 or higher.
Changed
- #205 Replaced
jest-each
package by jet's nativetest.each
function. - #209 Replaced
Unknown
byDirect
for visits from undetermined referrers. - #212 Moved copy-to-clipboard next to short URL.
- #208 Short URLs list paginator is now progressive.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #243 Fixed loading state and resetting on short URL creation form.
- #239 Fixed how user agents are parsed, reducing false results.
[2.3.1] - 2020-02-08
Added
- Nothing
Changed
- #191 Created
ForServerVersion
helper component which dynamically renders children if current server conditions are met. - #189 Simplified short url tags and short url deletion components and reducers, by removing redundant actions.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #193 Fixed
maxVisits
being set to 0 when trying to reset it from having a value tonull
. - #196 Included apache
.htaccess
file which takes care of falling back to index.html when reloading the page on a client-side handled route. - #179 Ensured domain is provided to Shlink server when editing, deleting or fetching short URLs which do not belong to default domain.
- #202 Fixed domain not passed when dispatching actions that affect a single short URL (edit tags, edit meta and delete), which cased the list not to be properly updated.
[2.3.0] - 2020-01-19
Added
- #174 Added complete support for Shlink v2.x together with currently supported Shlink versions.
- #164 Added max visits control on those URLs which have
maxVisits
. - #178 Short URLs list can now be filtered by date range.
- #46 Allowed short URL's metadata to be edited (
maxVisits
,validSince
andvalidUntil
).
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #170 Fixed apple icon referencing to incorrect file names.
[2.2.2] - 2019-10-21
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #167 Fixed
/servers.json
path not being ignored when returning something other than an array.
[2.2.1] - 2019-10-18
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #165 Fixed error thrown when opening "create" page while using a Shlink version which does not return a valid SemVer version (like
latest
docker image, or any development instance).
[2.2.0] - 2019-10-05
Added
- #144 Added domain input to create domain page.
Changed
- #140 Updated project dependencies.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- Nothing
[2.1.1] - 2019-09-22
Added
- Nothing
Changed
- #142 Updated to newer versions of base docker images for dev and production.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #151 Fixed "order by" indicator (caret) still indicate ASC on column header when no order is specified.
- #157 Fixed pagination control on graphs expanding too much when lots of pages need to be rendered.
- #155 Fixed client-side paths resolve to 404 when served from nginx in docker image instead of falling back to
index.html
.
[2.1.0] - 2019-05-19
Added
- #101 Added checkbox to short URL creation form that allows to determine the value of the
findIfExists
flag introduced in Shlink v1.16.0. - #105 Added support to pre-configure servers. See how to pre-configure servers to get more details on how to do it.
Changed
- #125 Refactored reducers to replace
switch
statements byhandleActions
from redux-actions. - #116 Removed sinon in favor of jest mocks.
- #72 Increased code coverage up to 80%.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- Nothing
[2.0.3] - 2019-03-16
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #120 Fixed crash when visits page is loaded and there are no visits with known cities.
- #113 Ensured visits loading is cancelled when the visits page is unmounted. Requests on flight will still finish.
- #118 Fixed chart crashing when trying to render lots of bars by adding pagination.
[2.0.2] - 2019-03-04
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #103 Fixed visits page getting freezed when loading large amounts of visits.
- #111 Fixed crash when trying to load a map modal with only one location.
- #115 Created
ErrorHandler
component which will prevent crashes in app to make it unusable.
[2.0.1] - 2019-03-03
Added
- Nothing
Changed
- #106 Reduced size of docker image by using a multi-stage build Dockerfile.
- #95 Tested docker image build during travis executions.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #104 Fixed blank page being showed when not-found paths are loaded.
- #94 Fixed initial zoom and center on maps.
- #93 Prevented side menu to be swipeable while a modal window is displayed.
[2.0.0] - 2019-01-13
Added
- #54 Added stats by city graphic in visits page.
- #55 Added map in visits page locating cities from which visits have occurred.
Changed
- #87 and #89 Updated all dependencies to latest major versions.
- #96 Updated visits page to load visits in multiple paginated requests of
5000
visits when used shlink server supports it. This will prevent shlink to hang when trying to load big amounts of visits. - #71 Improved tests and increased code coverage.
Deprecated
- Nothing
Removed
- #59 Dropped support for old browsers. Internet explorer and dead browsers are no longer supported.
- #97 Dropped support for authentication via
Authorization
header with Bearer type and JWT, which will make this version no longer work with shlink earlier than v1.13.0.
Fixed
- Nothing
[1.2.1] - 2018-12-21
Added
- Nothing
Changed
- #80 Deeply refactored app to do true dependency injection with an IoC container.
- #79 Updated to nginx 1.15.7 as the base docker image.
- #75 Prevented duplicated
yarn build
in travis when a tag exists.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #77 Sortable graphs ordering is now case insensitive.
[1.2.0] - 2018-11-01
Added
- #65 Added sorting to both countries and referrers stats graphs.
- #14 Documented how to build the project so that it can be served from a subpath.
Changed
- #50 Improved tests and increased code coverage.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #66 Fixed tooltips in graphs with too small bars not being displayed.
[1.1.1] - 2018-10-20
Added
- #57 Automated release generation in travis build.
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #63 Improved how bar charts are rendered in stats page, making them try to calculate a bigger height for big data sets.
- #56 Ensured
ColorGenerator
matches keys in a case insensitive way. - #53 Fixed missing margin between date fields in visits page for mobile devices.
[1.1.0] - 2018-09-16
Added
- #47 Added support to delete short URLs (requires shlink v1.12.0 or greater).
Changed
- #35 Visits component split into two, which makes the header not to be refreshed when filtering by date, and also the visits global counter now reflects the actual number of visits which fulfill current filter.
- #36 Tags selector now autocompletes existing tag names, to prevent typos and ease reusing existing tags.
- #39 Defined
propTypes
as static properties in class components.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #49 Ensured filtering parameters are reseted when list component is unmounted so that params are not mixed when coming back.
- #45 Ensured graphs x-axis start at
0
and don't use decimals. - #51 When editing short URL tags, the value returned form server is used when refreshing the list, which is normalized.
[1.0.1] - 2018-09-02
Added
- Nothing
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #42 Fixed selected tags lost when navigating between pages in short URLs list.
- #43 Fixed "List short URLs" menu item only selected when in first page.
[1.0.0] - 2018-08-26
Added
-
#4 Now it is possible to export and import servers.
- Export all servers in a CSV file.
- Import the CSV in a different device.
-
#3 Added tags management.
- List existing tags, and filter the list.
- Change their name and color.
- Jump to URLs list filtering by one tag.
-
#5 Tags for existing URLs can be edited now.
-
#24 Improved left menu in mobile devices, which is now a swipeable sidebar instead of a stacked top bar.
-
#22 Improved code coverage.
-
#28 Added integration with Scrutinizer.
Changed
- #33 Changed to adidas coding style for Javascript.
- #32 Changed to adidas coding style for stylesheets.
- #26 The tags input now displays tags using their actual color.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- Nothing
[0.2.0] - 2018-08-12
Added
- #12 Improved code coverage
- #20 Added servers list in welcome page, as well as added link to create one when none exist.
Changed
- #11 Improved app icons fro progressive web apps.
Deprecated
- Nothing
Removed
- Nothing
Fixed
- #19 Added workaround in tags input so that it is possible to add tags on Android devices.
- #17 Fixed short URLs list not being sortable in mobile resolutions.
- #13 Improved visits page on mobile resolutions.
[0.1.1] - 2018-08-06
Added
- #15 Added a
Dockerfile
that can be used to generate a distributable docker image
Changed
- Nothing
Deprecated
- Nothing
Removed
- Nothing
Fixed
- Nothing