Skip to content

Commit 8a7a51b

Browse files
authored
Merge pull request #1045 from shlinkio/develop
Release 4.0.0
2 parents f5e92c6 + b12bb6c commit 8a7a51b

File tree

460 files changed

+7868
-27959
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

460 files changed

+7868
-27959
lines changed

Diff for: .eslintrc

+1-7
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,5 @@
66
"parserOptions": {
77
"project": "./tsconfig.json"
88
},
9-
"ignorePatterns": ["src/service*.ts"],
10-
"rules": {
11-
"jsx-a11y/control-has-associated-label": "off",
12-
"jsx-a11y/label-has-associated-control": "off",
13-
"jsx-a11y/click-events-have-key-events": "off",
14-
"jsx-a11y/no-static-element-interactions": "off"
15-
}
9+
"ignorePatterns": ["src/service*.ts"]
1610
}

Diff for: .github/DISCUSSION_TEMPLATE/q-a.yml

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
title: 'Q&A'
2+
body:
3+
- type: input
4+
validations:
5+
required: true
6+
attributes:
7+
label: shlink-web-client version
8+
placeholder: x.y.z
9+
- type: dropdown
10+
validations:
11+
required: true
12+
attributes:
13+
label: How do you use shlink-web-client
14+
options:
15+
- https://app.shlink.io
16+
- Docker image
17+
- Self-hosted
18+
- Other (explain in summary)
19+
- type: textarea
20+
validations:
21+
required: true
22+
attributes:
23+
label: Summary
24+
value: '<!-- Describe your issue, question or request here. -->'

Diff for: .github/FUNDING.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
github: ['acelaya']
2-
custom: ['https://acel.me/donate']
2+
custom: ['https://slnk.to/donate']

Diff for: .github/ISSUE_TEMPLATE/Bug.md

-36
This file was deleted.

Diff for: .github/ISSUE_TEMPLATE/Bug.yml

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: 'Bug'
2+
description: Something on shlink is broken or not working as documented?
3+
labels: ['bug']
4+
body:
5+
- type: input
6+
validations:
7+
required: true
8+
attributes:
9+
label: shlink-web-client version
10+
placeholder: x.y.z
11+
- type: dropdown
12+
validations:
13+
required: true
14+
attributes:
15+
label: How do you use shlink-web-client
16+
options:
17+
- https://app.shlink.io
18+
- Docker image
19+
- Self-hosted
20+
- Other (explain in summary)
21+
- type: textarea
22+
validations:
23+
required: true
24+
attributes:
25+
label: Current behavior
26+
value: '<!-- How is it actually behaving (and it should not)? -->'
27+
- type: textarea
28+
validations:
29+
required: true
30+
attributes:
31+
label: Expected behavior
32+
value: '<!-- How did you expect it to behave? -->'
33+
- type: textarea
34+
validations:
35+
required: true
36+
attributes:
37+
label: How to reproduce
38+
value: '<!-- Provide steps to reproduce the bug. -->'

Diff for: .github/ISSUE_TEMPLATE/Feature_Request.md

-19
This file was deleted.

Diff for: .github/ISSUE_TEMPLATE/Feature_Request.yml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Feature request
2+
description: Do you find shlink-web-client is missing some important feature that would make it more useful?
3+
labels: ['feature']
4+
body:
5+
- type: textarea
6+
validations:
7+
required: true
8+
attributes:
9+
label: Summary
10+
value: '<!-- Describe the new feature you would like to request. -->'
11+
- type: textarea
12+
validations:
13+
required: true
14+
attributes:
15+
label: Use case
16+
value: '<!-- Explain why do you think this feature would be useful, and what problems would it help to solve. -->'

Diff for: .github/ISSUE_TEMPLATE/Question_Support.md

-24
This file was deleted.

Diff for: .github/ISSUE_TEMPLATE/config.yml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: true
2+
contact_links:
3+
- name: Question - Support
4+
about: Do you need help setting up or using shlink-web-client?
5+
url: https://github.com/shlinkio/shlink-web-client/discussions/new?category=q-a

Diff for: .github/dependabot.yml

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: npm
4+
directory: '/'
5+
schedule:
6+
interval: weekly
7+
day: saturday
8+
time: '09:00'
9+
timezone: 'Europe/Madrid'
10+
open-pull-requests-limit: 10
11+
groups:
12+
fontawesome:
13+
patterns:
14+
- '@fortawesome/*'
15+
shlink:
16+
patterns:
17+
- '@shlinkio/*'
18+
types:
19+
patterns:
20+
- '@types/*'
21+
testing:
22+
patterns:
23+
- '@testing-library/*'
24+
vite:
25+
patterns:
26+
- 'vite'
27+
- '@vitejs/*'
28+
vitest:
29+
patterns:
30+
- 'vitest'
31+
- '@vitest/*'
32+
ignore:
33+
# Bootstrap can introduce visual breaking changes on styles
34+
# Ignore it, since the plan is to remove it anyway
35+
- dependency-name: 'bootstrap'
36+
- package-ecosystem: docker
37+
directory: '/'
38+
schedule:
39+
interval: weekly
40+
day: saturday
41+
time: '09:00'
42+
timezone: 'Europe/Madrid'

Diff for: .github/workflows/ci.yml

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,5 @@ jobs:
1111
ci:
1212
uses: shlinkio/github-actions/.github/workflows/web-app-ci.yml@main
1313
with:
14-
node-version: 20.2
14+
node-version: 20.7
1515
publish-coverage: true
16-
force-install: true

Diff for: .github/workflows/deploy-preview.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55

66
jobs:
77
deploy:
8-
runs-on: ubuntu-20.04
8+
runs-on: ubuntu-22.04
99
continue-on-error: true
1010
steps:
1111
- name: Checkout code
@@ -16,11 +16,11 @@ jobs:
1616
- name: Use node.js
1717
uses: actions/setup-node@v3
1818
with:
19-
node-version: 20.2
19+
node-version: 20.7
2020
- name: Build
2121
run: |
22-
npm ci --force && \
23-
node ./scripts/set-homepage.js /shlink-web-client/${GITHUB_HEAD_REF#refs/heads/} && \
22+
npm ci && \
23+
node ./scripts/set-homepage.cjs /shlink-web-client/${GITHUB_HEAD_REF#refs/heads/} && \
2424
npm run build
2525
- name: Deploy preview
2626
uses: shlinkio/[email protected]

Diff for: .github/workflows/publish-release.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ on:
77

88
jobs:
99
build:
10-
runs-on: ubuntu-20.04
10+
runs-on: ubuntu-22.04
1111
steps:
1212
- name: Checkout code
1313
uses: actions/checkout@v3
1414
- name: Use node.js
1515
uses: actions/setup-node@v3
1616
with:
17-
node-version: 20.2
17+
node-version: 20.7
1818
- name: Generate release assets
19-
run: npm ci --force && VERSION=${GITHUB_REF#refs/tags/v} npm run build:dist
19+
run: npm ci && VERSION=${GITHUB_REF#refs/tags/v} npm run build:dist
2020
- name: Publish release with assets
2121
uses: docker://antonyurchenko/git-release:latest
2222
env:

Diff for: CHANGELOG.md

+30
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,36 @@ All notable changes to this project will be documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org).
66

7+
## [4.0.0] - 2024-01-29
8+
### Added
9+
* [shlink-web-component #7](https://github.com/shlinkio/shlink-web-component/issues/7) Allow comparing visits for multiple short URLs, tags or domains.
10+
11+
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.
12+
13+
* [shlink-web-component #9](https://github.com/shlinkio/shlink-web-component/issues/9) Allow comparing visits with the previous period.
14+
* [shlink-web-component #12](https://github.com/shlinkio/shlink-web-component/issues/12) and [#13](https://github.com/shlinkio/shlink-web-component/issues/13) Add new "Visits options" section for arbitrary visit stats options. Add section to delete short URL and orphan visits there.
15+
16+
This section is only visible if short URL visits deletion or orphan visits deletion are supported by connected Shlink server.
17+
18+
* [shlink-web-component #10](https://github.com/shlinkio/shlink-web-component/issues/10) Improve general accessibility: Add accessibility tests, fix accessibility issues and enable accessibility linting rules.
19+
20+
### Changed
21+
* [#338](https://github.com/shlinkio/shlink-web-client/issues/338) Extract `@shlinkio/shlink-web-component` and `@shlinkio/shlink-frontend-kit` as external libs.
22+
* [#978](https://github.com/shlinkio/shlink-web-client/issues/978) Use system preferred theme as default theme.
23+
* Use API client from `@shlinkio/shlink-js-sdk` to consume Shlink servers.
24+
* [#902](https://github.com/shlinkio/shlink-web-client/pull/902) Docker image is no longer running as root. As a side effect, exposed port is `8080`, not `80` anymore.
25+
* [shlink-web-component #117](https://github.com/shlinkio/shlink-web-component/issues/117) Migrate charts from Chart.JS to Recharts.
26+
27+
### Deprecated
28+
* *Nothing*
29+
30+
### Removed
31+
* Drop support for Shlink older than v3.0.0
32+
33+
### Fixed
34+
* [#910](https://github.com/shlinkio/shlink-web-client/issues/910) Fix warnings related with missing `act` in tests and refs in `AppUpdateBanner`.
35+
36+
737
## [3.10.2] - 2023-07-09
838
### Added
939
* *Nothing*

Diff for: CONTRIBUTING.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ You will also see how to ensure the code fulfills the expected code checks, and
66

77
## System dependencies
88

9-
The project can be run inside a docker container through provided docker-compose configuration.
9+
The project can be run inside a docker container through provided `docker compose` configuration.
1010

1111
Because of this, the only actual dependencies are [docker](https://docs.docker.com/get-docker/) and [docker-compose](https://docs.docker.com/compose/install/).
1212

@@ -17,7 +17,7 @@ The first thing you need to do is fork the repository, and clone it in your loca
1717
Then you will have to follow these steps:
1818

1919
* Copy the file `docker-compose.override.yml.dist` by also removing the `dist` extension.
20-
* Start-up the project by running `docker-compose up`.
20+
* Start-up the project by running `docker compose up`.
2121

2222
Once this is finished, you will have the project exposed in port `3000` (http://localhost:3000).
2323

Diff for: Dockerfile

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1-
FROM node:20.2-alpine as node
1+
FROM node:21.6-alpine as node
22
COPY . /shlink-web-client
33
ARG VERSION="latest"
44
ENV VERSION ${VERSION}
5-
RUN cd /shlink-web-client && npm ci --force && npm run build
5+
RUN cd /shlink-web-client && npm ci && npm run build
66

7-
FROM nginx:1.23-alpine
7+
FROM nginxinc/nginx-unprivileged:1.25-alpine
8+
ARG UID=101
89
LABEL maintainer="Alejandro Celaya <[email protected]>"
10+
USER root
911
RUN rm -r /usr/share/nginx/html && rm /etc/nginx/conf.d/default.conf
12+
USER $UID
1013
COPY config/docker/nginx.conf /etc/nginx/conf.d/default.conf
1114
COPY scripts/docker/servers_from_env.sh /docker-entrypoint.d/30-shlink-servers-json.sh
1215
COPY --from=node /shlink-web-client/build /usr/share/nginx/html

Diff for: README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[![GitHub release](https://img.shields.io/github/release/shlinkio/shlink-web-client.svg?style=flat-square)](https://github.com/shlinkio/shlink-web-client/releases/latest)
66
[![Docker pulls](https://img.shields.io/docker/pulls/shlinkio/shlink-web-client.svg?logo=docker&style=flat-square)](https://hub.docker.com/r/shlinkio/shlink-web-client/)
77
[![GitHub license](https://img.shields.io/github/license/shlinkio/shlink-web-client.svg?style=flat-square)](https://github.com/shlinkio/shlink-web-client/blob/main/LICENSE)
8-
[![Twitter](https://img.shields.io/badge/follow-shlinkio-blue.svg?style=flat-square&logo=twitter&color=blue)](https://twitter.com/shlinkio)
8+
[![Twitter](https://img.shields.io/badge/follow-shlinkio-blue.svg?style=flat-square&logo=x&color=black)](https://twitter.com/shlinkio)
99
[![Mastodon](https://img.shields.io/mastodon/follow/109329425426175098?color=%236364ff&domain=https%3A%2F%2Ffosstodon.org&label=follow&logo=mastodon&logoColor=white&style=flat-square)](https://fosstodon.org/@shlinkio)
1010
[![Paypal Donate](https://img.shields.io/badge/Donate-paypal-blue.svg?style=flat-square&logo=paypal&colorA=cccccc)](https://slnk.to/donate)
1111

@@ -69,7 +69,7 @@ Those servers can be exported and imported in other browsers, but if for some re
6969
7070
If you are using the shlink-web-client docker image, you can mount the `servers.json` file in a volume inside `/usr/share/nginx/html`, which is the app's document root inside the container.
7171

72-
docker run --name shlink-web-client -p 8000:80 -v ${PWD}/servers.json:/usr/share/nginx/html/servers.json shlinkio/shlink-web-client
72+
docker run --name shlink-web-client -p 8000:8080 -v ${PWD}/servers.json:/usr/share/nginx/html/servers.json shlinkio/shlink-web-client
7373

7474
Alternatively, you can mount a `conf.d` directory, which in turn contains the `servers.json` file, in a volume inside `/usr/share/nginx/html`. *(since shlink-web-client 3.2.0)*.
7575

Diff for: config/docker/nginx.conf

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
server {
2-
listen 80 default_server;
2+
listen 8080 default_server;
33
charset utf-8;
44
root /usr/share/nginx/html;
55
index index.html;

0 commit comments

Comments
 (0)