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.
-
#1360 Added ability for server IDs to be generated based on the server name and URL, instead of generating a random UUID.
This can improve sharing a predefined set of servers cia servers.json, env vars, or simply export and import your servers in some other device, and then be able to share server URLs which continue working.
All existing servers will keep their generated IDs in existing devices for backwards compatibility, but newly created servers will use the new approach.
- Nothing
- Nothing
- Nothing
- Nothing
- Nothing
- Update to
@shlinkio/shlink-frontend-kit
0.6.0 - Update to
@shlinkio/shlink-web-component
0.10.1
- Nothing
- Nothing
- shlink-web-component#475 Fix incorrect amount of dots being displayed in line charts when the difference in days/weeks/months is rounded up.
- Nothing
- Nothing
- Nothing
- Nothing
- #1325 Get dependency on
uuid
package back, ascrypto.randomUUID()
can only be used in secure contexts. - shlink-web-component#461 Ensure
shortUrlsList.confirmDeletion
setting istrue
in any case, except when explicitly set tofalse
. - shlink-web-component#237 Set darker color for previous period in charts, when light theme is enabled.
- shlink-web-component#246 Fix selected date range not reflected in visits comparison date range selector, when selecting it in the line chart via drag'n'drop.
- shlink-web-component#411 Add support for
ip-address
redirect conditions when Shlink server is >=4.2 - shlink-web-component#196 Allow active date range to be changed by selecting a range in visits and visits-comparison line charts.
- shlink-web-component#307 Add new setting to disable short URL deletions confirmation.
- shlink-web-component#435 Allow toggling between displaying raw user agent and parsed browser/OS in visits table.
- shlink-web-component#197 Allow line charts to be expanded to the full size of the viewport, both in individual visits views, and when comparing visits.
- shlink-web-component#382 Initialize QR code modal with all params unset, so that they fall back to the server defaults. Additionally, allow them to be unset if desired.
- Use
ShlinkWebSettings
from@shlinkio/shlink-web-component
to replace local settings UI. - Update to
@shlinkio/eslint-config-js-coding-standard
3.0, and migrate to ESLint flat config. - Remove dependency on
uuid
package, and usecrypto.randomUUID()
instead.
- Nothing
- Nothing
- Nothing
- Nothing
- Use new reusable workflow to publish docker image
- Nothing
- Nothing
- shlink-web-component#244 Display
visitedUrl
in visits table if the visit object has it, regardless of it being an orphan visit or not. - shlink-web-component#327 Ensure orphan visits type is sent to the server, to enable server-side filtering when consumed Shlink supports it.
- shlink-web-component#293 Allow ordering redirect rules via drag'n'drop.
- Update JS coding standard
- #1132 Add warning message in "validate URLs" setting, indicating it is ignored when consuming Shlink >=4.0.0.
- Nothing
- Nothing
- shlink-web-component#294 Make sure "validate URL" control is not displayed in short URL creation/edition, when consuming Shlink >=4.0.0.
- #1130 Fix importing servers in Firefox for Android when the CSV file contains spaces.
- #1133 Fix Shlink versions alignment in server error pages.
-
#1079 Add support Shlink 4.0.0.
-
shlink-web-component#271 Add support for redirect rules when consuming Shlink 4.0.0.
Now, if the server supports it, there will be a new item for every short URL dropdown, which will take you to a page where it will be possible to edit that short URL's redirect rules.
- shlink-web-component#249 Replace
react-datepicker
with nativeinput[type="date"]
andinput[type="datetime-local"]
elements. - Update dependencies.
- Nothing
- shlink-web-component#276 Drop support for Shlink older than 3.3.0
- #1084 Fix broken server dropdown menu when auto-connect is enabled.
- Nothing
- #821 Update app gif from README.md
- Nothing
- Nothing
- #1046 Fix running docker image when server env vars are provided.
-
shlink-web-component #7 Allow comparing visits for multiple short URLs, tags or domains.
When in the tags, domains or short URLs tables, you can now pick up to 5 items to compare their visits. Once selected, you are taken to a section displaying a comparative line chart, which supports all regular visits filtering capabilities.
-
shlink-web-component #9 Allow comparing visits with the previous period.
-
shlink-web-component #12 and #13 Add new "Visits options" section for arbitrary visit stats options. Add section to delete short URL and orphan visits there.
This section is only visible if short URL visits deletion or orphan visits deletion are supported by connected Shlink server.
-
shlink-web-component #10 Improve general accessibility: Add accessibility tests, fix accessibility issues and enable accessibility linting rules.
- #338 Extract
@shlinkio/shlink-web-component
and@shlinkio/shlink-frontend-kit
as external libs. - #978 Use system preferred theme as default theme.
- Use API client from
@shlinkio/shlink-js-sdk
to consume Shlink servers. - #902 Docker image is no longer running as root. As a side effect, exposed port is
8080
, not80
anymore. - shlink-web-component #117 Migrate charts from Chart.JS to Recharts.
- Nothing
- Drop support for Shlink older than v3.0.0
- #910 Fix warnings related with missing
act
in tests and refs inAppUpdateBanner
.
- Nothing
- #781 Migrate tests from jest to vitest.
- #843 Build docker image only for new tags, making sure it always includes an actual version number.
- Nothing
- Nothing
- Nothing
- Nothing
- Nothing
- Nothing
- Nothing
- #826 Fix generated short URLs CSV so that it can be used to import on Shlink.
- #807 Add support for device-specific long-URLs when creating or editing short URLs.
- #808 Respect settings on excluding bots in the overview section, for visits cards.
- #809 Respect settings on excluding bots in the tags list.
- #798 Remove stryker and mutation testing.
- #800 Use
/tags/stats
endpoint to load tags stats, when the server supports it. - Update to Vite 4.2
- Update to TypeScript 5
- Update to coding standard v2.1.0
- Decouple tests from RTK internals.
- Nothing
- Nothing
- #799 Fix fallback visits not taking into account configuration regarding excluding bots.
- Nothing
- Nothing
- Nothing
- Nothing
- #787 Fixed wrong base path set in vite config when homepage is set as empty string.
-
#750 Added new icon indicators telling if a short URL can be normally visited, it received the max amount of visits, is still not enabled, etc.
-
#764 Added support to exclude visits from visits on short URLs list when consuming Shlink 3.4.0.
This feature also comes with a new setting to disable visits from bots by default, both on short URLs lists and visits sections.
-
#760 Added support to exclude short URLs which have reached the maximum amount of visits, or are valid until a date in the past.
- #753 Migrated from react-scripts/webpack to vite.
- #770 Updated to latest dependencies.
- #741 Improved
visitsAsyncThunk
, making it wrap pending/fulfilled/rejected actions, as well as custom ones, in a type-safe way.
- Nothing
- #736 Removed cards mode in tags. Only table mode is supported now.
- #774 Dropped support for Shlink older than 2.8.0.
- #715 Fixed connection still failing on miss-configured servers, after editing their params to set proper values.
- Nothing
- Nothing
- Nothing
- Nothing
- #766 Fixed visits query being lost when switching between sub-sections.
- #765 Added missing
"Content-Type": "application/json"
to requests with payload, making older Shlink versions fail.
- Nothing
- Nothing
- Nothing
- Nothing
- #756 Fixed all visits interval not working unless switching to a different interval first.
- #757 Fixed visits fallback interval not working until the visits view has been loaded at least twice.
- #708 Added support for API v3.
- #717 Allowed to select time in 10 minute intervals when configuring "enabled since" and "enabled until" on short URLs.
- #748 Improved visits section to add filters to the query string, allowing to navigate to a specific state or bookmarking filters.
- #713 Updated dependencies.
- #620 Migrated all reducers to redux toolkit.
- #721 Migrated from axios to fetch.
- Nothing
- Nothing
- #590 Fixed position of the datepicker triangle.
- #729 Fixed wrong stats displayed in tags after renaming.
- #737 Fixed incorrect contrast in warning messages when using dark theme.
- #726 Fixed delete server and delete short URL modals getting removed from the DOM before finishing close transition.
- #749 Fixed broken short URLs table when some short URL has a too long custom slug.
- #703 Added support to publish docker image in GHCR.
- Nothing
- Nothing
- Nothing
- #709 Fixed visits not being displayed after a large loading has finished.
- #671 Added proper color-scheme in root element based on selected theme.
- #688 Finalized migration from enzyme to react-testing-library.
- Nothing
- Nothing
- #695 Fixed some warnings in tests.
- #693 Fixed tags, servers and domains search to make it case-insensitive.
- #694 Fixed editing and loading visits on short URLs with multi-segment slugs.
- Nothing
- #648 Migrated some scripts to ESM and updated to chalk 5.
- Nothing
- Nothing
- #653 Fixed rendering values greater than 1000 in charts, when the browser has certain locales configured.
-
#622 Added support to load domain visits when consuming Shlink 3.1.0 or newer.
-
#582 Improved filtering short URLs by tag.
Now, a new full tags selector component is available, which allows selecting any of the existing tags and also composes a toggle to filter by "any" tag or "all" tags.
- #616 Updated to React 18.
- #595 Updated to react-chartjs-2 v4.1.0.
- #594 Updated to a new coding standard.
- #627 Updated to Jest 28.
- #603 Migrated to new and maintained dependencies to parse CSV<->JSON.
- #610 Migrated to a maintained coding style for CSS.
- #619 Introduced react testing library, to progressively replace enzyme.
- Nothing
- #623 Dropped support for Shlink older than 2.6.0.
- Nothing
- #558 Added dark text for tags where the generated background is too light, improving its legibility.
- #570 Added new section to load non-orphan visits all together when consuming Shlink 3.0.0.
- #556 Added support to filter short URLs list by "all" tags when consuming Shlink 3.0.0.
- #549 Allowed to export the list of short URLs as CSV.
- #543 Redesigned settings section.
- #567 Improved Shlink 3.0.0 compatibility by checking the
INVALID_SHORT_URL_DELETION
error code when deleting short URLs. - #448 Updated to bootstrap v5.
- #524 Updated to react-router v6.
- #576 Updated to fontawesome v6.
- #579 Replaced react-color with react-colorful.
- #564 Updated most of the dependencies.
- Nothing
- Nothing
- #589 Fixed alignment of shlink versions footer, by basing the logic on the presence of the sidebar instead of selected server.
- Nothing
- Nothing
- Nothing
- Nothing
- #555 Fixed vertical alignment in welcome screen logo.
- #554 Fixed behavior in overview page, where items in the list of short URLs were stripped out when creating new ones, even if the amount of short URLs was still not yet big enough.
- #557 Fixed new tags added to new short URLs, not appearing on tags autosuggest.
-
#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, displaying 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.
- #534 Updated axios.
- #538 Switched to the
<field>-<dir>
notation inorderBy
param for short URLs list, in preparation for Shlink v3.0.0
- Nothing
- Nothing
- Nothing
- Nothing
- Nothing
- Nothing
- Nothing
- #530 Fixed crash on domains page when default domain has an explicitly set port.
- #525 Added docs section for Architectural Decision Records, including the one for servers "auto-connect".
- Nothing
- Nothing
- Nothing
- #520 Fixed landing page scroll on mobile devices and improved its design.
- #526 Ensured exported servers do not include the
autoConnect
prop.
- #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.
- Moved ci workflow to external repo and reused
- Nothing
- Nothing
- #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.
- Nothing
- Nothing
- Nothing
- Nothing
- #503 Fixed short URLs title not being resettable after creation.
- Nothing
- Nothing
- Nothing
- Nothing
- #497 Fixed crash in domains section when one of the domains have more than one dot.
-
#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.
- #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.
- Nothing
- #491 Dropped support for Shlink older than v2.4.0.
- Nothing
- Nothing
- Nothing
- Nothing
- Nothing
- #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).
-
#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.
- #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
.
- Nothing
- Nothing
- #438 Fixed horizontal scrolling in short URLs list on mobile devices when the long URL didn't have words to break.
- Nothing
- #428 Updated to StrykerJS 5.
- Nothing
- Nothing
- #371 Recovered PWA functionality.
- Nothing
- Nothing
- Nothing
- Nothing
- #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.
-
#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.
- #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.
- Nothing
- Nothing
- #335 Fixed linting errors.
- Nothing
- Nothing
- Nothing
- Nothing
- #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.
-
#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.
- #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.
- Nothing
- #344 Dropped support for Shlink v1.
- Nothing
- Nothing
- #325 and #294 Updated all dependencies, including React 17, Typescript 4, react-datepicker 3 and Stryker 4.
- Nothing
- Nothing
- #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.
- Nothing
- #292 Improved a bit how caching works by removing the service worker and adding proper HTTP caching config on nginx inside docker image.
- Nothing
- Nothing
- #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.
-
#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.
- #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.
- Nothing
- Nothing
- #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.
- Nothing
- #254 Reduced duplication on code to handle mercure topics binding.
- Nothing
- Nothing
- #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.
-
#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.
- #218 Added back button to sections not displayed in left menu.
- #255 Improved how servers and settings are persisted in the local storage.
- Nothing
- Nothing
- #262 Fixed charts displaying decimal numbers, when visits are absolute and that makes no sense.
-
#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.
- #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.
- Nothing
- Nothing
- #243 Fixed loading state and resetting on short URL creation form.
- #239 Fixed how user agents are parsed, reducing false results.
- Nothing
- #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.
- Nothing
- Nothing
- #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.
- #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
).
- Nothing
- Nothing
- Nothing
- #170 Fixed apple icon referencing to incorrect file names.
- Nothing
- Nothing
- Nothing
- Nothing
- #167 Fixed
/servers.json
path not being ignored when returning something other than an array.
- Nothing
- Nothing
- Nothing
- Nothing
- #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).
- #144 Added domain input to create domain page.
- #140 Updated project dependencies.
- Nothing
- Nothing
- Nothing
- Nothing
- #142 Updated to newer versions of base docker images for dev and production.
- Nothing
- Nothing
- #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
.
- #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.
- #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%.
- Nothing
- Nothing
- Nothing
- Nothing
- Nothing
- Nothing
- Nothing
- #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.
- Nothing
- Nothing
- Nothing
- Nothing
- #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.
- Nothing
- #106 Reduced size of docker image by using a multi-stage build Dockerfile.
- #95 Tested docker image build during travis executions.
- Nothing
- Nothing
- #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.
- #54 Added stats by city graphic in visits page.
- #55 Added map in visits page locating cities from which visits have occurred.
- #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.
- Nothing
- #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.
- Nothing
- Nothing
- #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.
- Nothing
- Nothing
- #77 Sortable graphs ordering is now case insensitive.
- #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.
- #50 Improved tests and increased code coverage.
- Nothing
- Nothing
- #66 Fixed tooltips in graphs with too small bars not being displayed.
- #57 Automated release generation in travis build.
- Nothing
- Nothing
- Nothing
- #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.
- #47 Added support to delete short URLs (requires shlink v1.12.0 or greater).
- #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.
- Nothing
- Nothing
- #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.
- Nothing
- Nothing
- Nothing
- Nothing
- #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.
-
#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.
- #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.
- Nothing
- Nothing
- Nothing
- #12 Improved code coverage
- #20 Added servers list in welcome page, as well as added link to create one when none exist.
- #11 Improved app icons fro progressive web apps.
- Nothing
- Nothing
- #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.
- #15 Added a
Dockerfile
that can be used to generate a distributable docker image
- Nothing
- Nothing
- Nothing
- Nothing