mirror of
https://github.com/gethomepage/homepage.git
synced 2026-01-04 06:12:12 +08:00
Compare commits
30 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6fbe080b28 | ||
|
|
4047f8d6e8 | ||
|
|
59cd5564f8 | ||
|
|
5f19e4af91 | ||
|
|
5ea46881ee | ||
|
|
9545757bb9 | ||
|
|
95507aab54 | ||
|
|
564dfb7ce3 | ||
|
|
7b72442114 | ||
|
|
65370a7668 | ||
|
|
6e9339b14c | ||
|
|
241c786710 | ||
|
|
801ce479d8 | ||
|
|
16730ffec2 | ||
|
|
b35dd80e8c | ||
|
|
82b159bf14 | ||
|
|
6292a0709c | ||
|
|
42af93bef3 | ||
|
|
964991781c | ||
|
|
607a14083e | ||
|
|
133a0a6539 | ||
|
|
0d0f465e16 | ||
|
|
16c1b2da9b | ||
|
|
4761a56b3d | ||
|
|
9d40b67d49 | ||
|
|
97f4bcbdb0 | ||
|
|
ea1375e575 | ||
|
|
733a3140d1 | ||
|
|
b5ac617597 | ||
|
|
9b06212a92 |
@@ -56,12 +56,12 @@ COPY --link --chmod=755 docker-entrypoint.sh /usr/local/bin/
|
|||||||
|
|
||||||
RUN apk add --no-cache su-exec
|
RUN apk add --no-cache su-exec
|
||||||
|
|
||||||
ENV HOSTNAME=::
|
ENV HOSTNAME=0.0.0.0
|
||||||
ENV PORT=3000
|
ENV PORT=3000
|
||||||
EXPOSE $PORT
|
EXPOSE $PORT
|
||||||
|
|
||||||
HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \
|
HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \
|
||||||
CMD wget --no-verbose --tries=1 --spider --no-check-certificate http://localhost:$PORT/api/healthcheck || exit 1
|
CMD wget --no-verbose --tries=1 --spider --no-check-certificate http://127.0.0.1:$PORT/api/healthcheck || exit 1
|
||||||
|
|
||||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
CMD ["node", "server.js"]
|
CMD ["node", "server.js"]
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ services:
|
|||||||
image: ghcr.io/gethomepage/homepage:latest
|
image: ghcr.io/gethomepage/homepage:latest
|
||||||
container_name: homepage
|
container_name: homepage
|
||||||
environment:
|
environment:
|
||||||
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port
|
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
||||||
PUID: 1000 # optional, your user id
|
PUID: 1000 # optional, your user id
|
||||||
PGID: 1000 # optional, your group id
|
PGID: 1000 # optional, your group id
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -25,13 +25,13 @@ To configure Kubernetes gateway-api, ingress or ingressRoute service discovery,
|
|||||||
Example settings:
|
Example settings:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
ingress: true # enable ingress only
|
ingress: true # default, enable ingress only
|
||||||
```
|
```
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
ingress: true # enable ingress
|
ingress: true # default, enable ingress
|
||||||
traefik: true # enable traefik ingressRoute
|
traefik: true # enable traefik ingressRoute
|
||||||
gateway: true # enable gateway-api
|
gateway: true # enable gateway-api
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ services:
|
|||||||
- /path/to/config:/app/config # Make sure your local config directory exists
|
- /path/to/config:/app/config # Make sure your local config directory exists
|
||||||
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations
|
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations
|
||||||
environment:
|
environment:
|
||||||
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port
|
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
||||||
```
|
```
|
||||||
|
|
||||||
### Running as non-root
|
### Running as non-root
|
||||||
@@ -38,7 +38,7 @@ services:
|
|||||||
- /path/to/config:/app/config # Make sure your local config directory exists
|
- /path/to/config:/app/config # Make sure your local config directory exists
|
||||||
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods
|
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods
|
||||||
environment:
|
environment:
|
||||||
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port
|
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
||||||
PUID: $PUID
|
PUID: $PUID
|
||||||
PGID: $PGID
|
PGID: $PGID
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -29,4 +29,12 @@ You have a few options for deploying homepage, depending on your needs. We offer
|
|||||||
|
|
||||||
### `HOMEPAGE_ALLOWED_HOSTS`
|
### `HOMEPAGE_ALLOWED_HOSTS`
|
||||||
|
|
||||||
As of v1.0 there is one required environment variable when deploying via a public URL, <code>HOMEPAGE_ALLOWED_HOSTS</code>. This is a comma separated (no spaces) list of allowed hosts (sometimes with the port) that can access your homepage. See the [docker](docker.md) and [source](source.md) installation pages for examples.
|
As of v1.0 there is one required environment variable to access homepage via a URL other than `localhost`, <code>HOMEPAGE_ALLOWED_HOSTS</code>. The setting helps prevent certain kinds of attacks when retrieving data from the homepage API proxy.
|
||||||
|
|
||||||
|
The value is a comma-separated (no spaces) list of allowed hosts (sometimes with the port) that can host your homepage install. See the [docker](docker.md), [kubernetes](k8s.md) and [source](source.md) installation pages for more information about where / how to set the variable.
|
||||||
|
|
||||||
|
`localhost:3000` and `127.0.0.1:3000` are always included, but you can add a domain or IP address to this list to allow that host such as `HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,192.168.1.2:1234`, etc.
|
||||||
|
|
||||||
|
If you are seeing errors about host validation, check the homepage logs and ensure that the host exactly as output in the logs is in the `HOMEPAGE_ALLOWED_HOSTS` list.
|
||||||
|
|
||||||
|
This can be disabled by setting `HOMEPAGE_ALLOWED_HOSTS` to `*` but this is not recommended.
|
||||||
|
|||||||
@@ -3,85 +3,6 @@ title: Kubernetes Installation
|
|||||||
description: Install on Kubernetes
|
description: Install on Kubernetes
|
||||||
---
|
---
|
||||||
|
|
||||||
## Install with Helm
|
|
||||||
|
|
||||||
There is an [unofficial helm chart](https://github.com/jameswynn/helm-charts/tree/main/charts/homepage) that creates all the necessary manifests, including the service account and RBAC entities necessary for service discovery.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
helm repo add jameswynn https://jameswynn.github.io/helm-charts
|
|
||||||
helm install homepage jameswynn/homepage -f values.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
The helm chart allows for all the configurations to be inlined directly in your `values.yaml`:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
config:
|
|
||||||
bookmarks:
|
|
||||||
- Developer:
|
|
||||||
- Github:
|
|
||||||
- abbr: GH
|
|
||||||
href: https://github.com/
|
|
||||||
services:
|
|
||||||
- My First Group:
|
|
||||||
- My First Service:
|
|
||||||
href: http://localhost/
|
|
||||||
description: Homepage is awesome
|
|
||||||
|
|
||||||
- My Second Group:
|
|
||||||
- My Second Service:
|
|
||||||
href: http://localhost/
|
|
||||||
description: Homepage is the best
|
|
||||||
|
|
||||||
- My Third Group:
|
|
||||||
- My Third Service:
|
|
||||||
href: http://localhost/
|
|
||||||
description: Homepage is 😎
|
|
||||||
widgets:
|
|
||||||
# show the kubernetes widget, with the cluster summary and individual nodes
|
|
||||||
- kubernetes:
|
|
||||||
cluster:
|
|
||||||
show: true
|
|
||||||
cpu: true
|
|
||||||
memory: true
|
|
||||||
showLabel: true
|
|
||||||
label: "cluster"
|
|
||||||
nodes:
|
|
||||||
show: true
|
|
||||||
cpu: true
|
|
||||||
memory: true
|
|
||||||
showLabel: true
|
|
||||||
- search:
|
|
||||||
provider: duckduckgo
|
|
||||||
target: _blank
|
|
||||||
kubernetes:
|
|
||||||
mode: cluster
|
|
||||||
settings:
|
|
||||||
|
|
||||||
# The service account is necessary to allow discovery of other services
|
|
||||||
serviceAccount:
|
|
||||||
create: true
|
|
||||||
name: homepage
|
|
||||||
|
|
||||||
# This enables the service account to access the necessary resources
|
|
||||||
enableRbac: true
|
|
||||||
|
|
||||||
ingress:
|
|
||||||
main:
|
|
||||||
enabled: true
|
|
||||||
annotations:
|
|
||||||
# Example annotations to add Homepage to your Homepage!
|
|
||||||
gethomepage.dev/enabled: "true"
|
|
||||||
gethomepage.dev/name: "Homepage"
|
|
||||||
gethomepage.dev/description: "Dynamically Detected Homepage"
|
|
||||||
gethomepage.dev/group: "Dynamic"
|
|
||||||
gethomepage.dev/icon: "homepage.png"
|
|
||||||
hosts:
|
|
||||||
- host: homepage.example.com
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
```
|
|
||||||
|
|
||||||
## Install with Kubernetes Manifests
|
## Install with Kubernetes Manifests
|
||||||
|
|
||||||
If you don't want to use the unofficial Helm chart, you can also create your own Kubernetes manifest(s) and apply them with `kubectl apply -f filename.yaml`.
|
If you don't want to use the unofficial Helm chart, you can also create your own Kubernetes manifest(s) and apply them with `kubectl apply -f filename.yaml`.
|
||||||
@@ -302,6 +223,9 @@ spec:
|
|||||||
- name: homepage
|
- name: homepage
|
||||||
image: "ghcr.io/gethomepage/homepage:latest"
|
image: "ghcr.io/gethomepage/homepage:latest"
|
||||||
imagePullPolicy: Always
|
imagePullPolicy: Always
|
||||||
|
env:
|
||||||
|
- name: HOMEPAGE_ALLOWED_HOSTS
|
||||||
|
value: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
containerPort: 3000
|
containerPort: 3000
|
||||||
|
|||||||
@@ -25,3 +25,5 @@ HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev:1234 pnpm start
|
|||||||
```
|
```
|
||||||
|
|
||||||
When updating homepage versions you will need to re-build the static files i.e. repeat the process above.
|
When updating homepage versions you will need to re-build the static files i.e. repeat the process above.
|
||||||
|
|
||||||
|
See [HOMEPAGE_ALLOWED_HOSTS](index.md#homepage_allowed_hosts) for more information on this environment variable.
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ hide:
|
|||||||
- Check config/logs/homepage.log, on docker simply e.g. `docker logs homepage`. This may provide some insight into the reason for an error.
|
- Check config/logs/homepage.log, on docker simply e.g. `docker logs homepage`. This may provide some insight into the reason for an error.
|
||||||
- Check the browser error console, this can also sometimes provide useful information.
|
- Check the browser error console, this can also sometimes provide useful information.
|
||||||
- Consider setting the `ENV` variable `LOG_LEVEL` to `debug`.
|
- Consider setting the `ENV` variable `LOG_LEVEL` to `debug`.
|
||||||
|
- If certain widgets are failing when connecting to public APIs, consider [disabling IPv6](#disabling-ipv6).
|
||||||
|
|
||||||
## Service Widget Errors
|
## Service Widget Errors
|
||||||
|
|
||||||
@@ -66,3 +67,24 @@ All service widgets work essentially the same, that is, homepage makes a proxied
|
|||||||
## Missing custom icons
|
## Missing custom icons
|
||||||
|
|
||||||
If, after correctly adding and mapping your custom icons via the [Icons](../configs/services.md#icons) instructions, you are still unable to see your icons please try recreating your container.
|
If, after correctly adding and mapping your custom icons via the [Icons](../configs/services.md#icons) instructions, you are still unable to see your icons please try recreating your container.
|
||||||
|
|
||||||
|
## Disabling IPv6
|
||||||
|
|
||||||
|
If you are having issues with certain widgets that are unable to reach public APIs (e.g. weather), you may need to disable IPv6 on your host machine. This can be done by adding the following to your `docker-compose.yml` file (or for docker run, the equivalent flag):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
homepage:
|
||||||
|
...
|
||||||
|
sysctls:
|
||||||
|
- net.ipv6.conf.all.disable_ipv6=1
|
||||||
|
```
|
||||||
|
|
||||||
|
or disable IPv6 for the docker network:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
networks:
|
||||||
|
some_network:
|
||||||
|
driver: bridge
|
||||||
|
enable_ipv6: false
|
||||||
|
```
|
||||||
|
|||||||
@@ -20,4 +20,5 @@ widget:
|
|||||||
url: http://komga.host.or.ip:port
|
url: http://komga.host.or.ip:port
|
||||||
username: username
|
username: username
|
||||||
password: password
|
password: password
|
||||||
|
key: komgaapikey # optional
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -46,6 +46,10 @@ config:
|
|||||||
docker:
|
docker:
|
||||||
settings:
|
settings:
|
||||||
|
|
||||||
|
env:
|
||||||
|
- name: HOMEPAGE_ALLOWED_HOSTS
|
||||||
|
value: "homepage.k3d.localhost:8080"
|
||||||
|
|
||||||
serviceAccount:
|
serviceAccount:
|
||||||
create: true
|
create: true
|
||||||
name: homepage
|
name: homepage
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "homepage",
|
"name": "homepage",
|
||||||
"version": "1.0.2",
|
"version": "1.0.4",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"preinstall": "npx only-allow pnpm",
|
"preinstall": "npx only-allow pnpm",
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
"json-rpc-2.0": "^1.7.0",
|
"json-rpc-2.0": "^1.7.0",
|
||||||
"luxon": "^3.5.0",
|
"luxon": "^3.5.0",
|
||||||
"memory-cache": "^0.2.0",
|
"memory-cache": "^0.2.0",
|
||||||
"minecraftstatuspinger": "^1.2.1",
|
"minecraftstatuspinger": "^1.2.2",
|
||||||
"next": "^15.1.7",
|
"next": "^15.1.7",
|
||||||
"next-i18next": "^12.1.0",
|
"next-i18next": "^12.1.0",
|
||||||
"ping": "^0.4.4",
|
"ping": "^0.4.4",
|
||||||
|
|||||||
24
pnpm-lock.yaml
generated
24
pnpm-lock.yaml
generated
@@ -48,8 +48,8 @@ importers:
|
|||||||
specifier: ^0.2.0
|
specifier: ^0.2.0
|
||||||
version: 0.2.0
|
version: 0.2.0
|
||||||
minecraftstatuspinger:
|
minecraftstatuspinger:
|
||||||
specifier: ^1.2.1
|
specifier: ^1.2.2
|
||||||
version: 1.2.1
|
version: 1.2.2
|
||||||
next:
|
next:
|
||||||
specifier: ^15.1.7
|
specifier: ^15.1.7
|
||||||
version: 15.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
version: 15.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
@@ -101,10 +101,6 @@ importers:
|
|||||||
xml-js:
|
xml-js:
|
||||||
specifier: ^1.6.11
|
specifier: ^1.6.11
|
||||||
version: 1.6.11
|
version: 1.6.11
|
||||||
optionalDependencies:
|
|
||||||
osx-temperature-sensor:
|
|
||||||
specifier: ^1.0.8
|
|
||||||
version: 1.0.8
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@tailwindcss/forms':
|
'@tailwindcss/forms':
|
||||||
specifier: ^0.5.10
|
specifier: ^0.5.10
|
||||||
@@ -151,6 +147,10 @@ importers:
|
|||||||
typescript:
|
typescript:
|
||||||
specifier: ^5.7.3
|
specifier: ^5.7.3
|
||||||
version: 5.7.3
|
version: 5.7.3
|
||||||
|
optionalDependencies:
|
||||||
|
osx-temperature-sensor:
|
||||||
|
specifier: ^1.0.8
|
||||||
|
version: 1.0.8
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
@@ -1911,9 +1911,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
|
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
|
|
||||||
minecraftstatuspinger@1.2.1:
|
minecraftstatuspinger@1.2.2:
|
||||||
resolution: {integrity: sha512-Qo/3TzV0UeULbVyqMqS9sUPbNKGFK7U7as1xlS/xeXryQQEwitOz5SkVhVphY4fCTacl5a+E4VXiTq6TPKYDKw==}
|
resolution: {integrity: sha512-3PDWcifjw6cliGnGqw0+nJVWWPOcpLDyNLh4D84vCNzPD2h9REbN5Ne11I//CMkIu5xJiIuyGwI44gyRYYbpuw==}
|
||||||
engines: {node: '>=16.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
|
|
||||||
mini-svg-data-uri@1.4.4:
|
mini-svg-data-uri@1.4.4:
|
||||||
resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
|
resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
|
||||||
@@ -3918,7 +3918,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.2(eslint-plugin-import@2.31.0)(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2)):
|
eslint-module-utils@2.12.0(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.2)(eslint@9.21.0(jiti@2.4.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -3940,7 +3940,7 @@ snapshots:
|
|||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 9.21.0(jiti@2.4.2)
|
eslint: 9.21.0(jiti@2.4.2)
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.2(eslint-plugin-import@2.31.0)(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))
|
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.2)(eslint@9.21.0(jiti@2.4.2))
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
is-core-module: 2.16.1
|
is-core-module: 2.16.1
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
@@ -4652,7 +4652,7 @@ snapshots:
|
|||||||
|
|
||||||
mimic-response@4.0.0: {}
|
mimic-response@4.0.0: {}
|
||||||
|
|
||||||
minecraftstatuspinger@1.2.1: {}
|
minecraftstatuspinger@1.2.2: {}
|
||||||
|
|
||||||
mini-svg-data-uri@1.4.4: {}
|
mini-svg-data-uri@1.4.4: {}
|
||||||
|
|
||||||
|
|||||||
@@ -85,16 +85,16 @@
|
|||||||
"ping": {
|
"ping": {
|
||||||
"error": "Error",
|
"error": "Error",
|
||||||
"ping": "Ping",
|
"ping": "Ping",
|
||||||
"down": "Down",
|
"down": "Behera",
|
||||||
"up": "Up",
|
"up": "Gora",
|
||||||
"not_available": "Not Available"
|
"not_available": "Not Available"
|
||||||
},
|
},
|
||||||
"siteMonitor": {
|
"siteMonitor": {
|
||||||
"http_status": "HTTP status",
|
"http_status": "HTTP status",
|
||||||
"error": "Error",
|
"error": "Error",
|
||||||
"response": "Response",
|
"response": "Erantzuna",
|
||||||
"down": "Down",
|
"down": "Behera",
|
||||||
"up": "Up",
|
"up": "Gora",
|
||||||
"not_available": "Not Available"
|
"not_available": "Not Available"
|
||||||
},
|
},
|
||||||
"emby": {
|
"emby": {
|
||||||
@@ -102,8 +102,8 @@
|
|||||||
"transcoding": "Transcoding",
|
"transcoding": "Transcoding",
|
||||||
"bitrate": "Bit-tasa",
|
"bitrate": "Bit-tasa",
|
||||||
"no_active": "No Active Streams",
|
"no_active": "No Active Streams",
|
||||||
"movies": "Movies",
|
"movies": "Filmak",
|
||||||
"series": "Series",
|
"series": "Serieak",
|
||||||
"episodes": "Episodes",
|
"episodes": "Episodes",
|
||||||
"songs": "Abestiak"
|
"songs": "Abestiak"
|
||||||
},
|
},
|
||||||
@@ -115,39 +115,39 @@
|
|||||||
"unknown": "Ezezaguna"
|
"unknown": "Ezezaguna"
|
||||||
},
|
},
|
||||||
"evcc": {
|
"evcc": {
|
||||||
"pv_power": "Production",
|
"pv_power": "Produkzioak",
|
||||||
"battery_soc": "Battery",
|
"battery_soc": "Bateria",
|
||||||
"grid_power": "Grid",
|
"grid_power": "Sarea",
|
||||||
"home_power": "Consumption",
|
"home_power": "Kontsumoa",
|
||||||
"charge_power": "Charger",
|
"charge_power": "Kargagailua",
|
||||||
"kilowatt": "kW"
|
"kilowatt": "kW"
|
||||||
},
|
},
|
||||||
"flood": {
|
"flood": {
|
||||||
"download": "Download",
|
"download": "Jeitsierak",
|
||||||
"upload": "Upload",
|
"upload": "Kargatu",
|
||||||
"leech": "Leech",
|
"leech": "Leech",
|
||||||
"seed": "Seed"
|
"seed": "Seed"
|
||||||
},
|
},
|
||||||
"freshrss": {
|
"freshrss": {
|
||||||
"subscriptions": "Subscriptions",
|
"subscriptions": "Harpidetzak",
|
||||||
"unread": "Unread"
|
"unread": "Irakurri gabe"
|
||||||
},
|
},
|
||||||
"fritzbox": {
|
"fritzbox": {
|
||||||
"connectionStatus": "Status",
|
"connectionStatus": "Status",
|
||||||
"connectionStatusUnconfigured": "Unconfigured",
|
"connectionStatusUnconfigured": "Unconfigured",
|
||||||
"connectionStatusConnecting": "Connecting",
|
"connectionStatusConnecting": "Konektatzen",
|
||||||
"connectionStatusAuthenticating": "Authenticating",
|
"connectionStatusAuthenticating": "Authenticating",
|
||||||
"connectionStatusPendingDisconnect": "Pending Disconnect",
|
"connectionStatusPendingDisconnect": "Pending Disconnect",
|
||||||
"connectionStatusDisconnecting": "Disconnecting",
|
"connectionStatusDisconnecting": "Disconnecting",
|
||||||
"connectionStatusDisconnected": "Disconnected",
|
"connectionStatusDisconnected": "Deskonektatuta",
|
||||||
"connectionStatusConnected": "Connected",
|
"connectionStatusConnected": "Konektatuta",
|
||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"maxDown": "Max. Down",
|
"maxDown": "Max. Down",
|
||||||
"maxUp": "Max. Up",
|
"maxUp": "Max. Up",
|
||||||
"down": "Down",
|
"down": "Behera",
|
||||||
"up": "Up",
|
"up": "Gora",
|
||||||
"received": "Received",
|
"received": "Received",
|
||||||
"sent": "Sent",
|
"sent": "Bidalita",
|
||||||
"externalIPAddress": "Ext. IP",
|
"externalIPAddress": "Ext. IP",
|
||||||
"externalIPv6Address": "Ext. IPv6",
|
"externalIPv6Address": "Ext. IPv6",
|
||||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
||||||
@@ -189,7 +189,7 @@
|
|||||||
"plex": {
|
"plex": {
|
||||||
"streams": "Active Streams",
|
"streams": "Active Streams",
|
||||||
"albums": "Albums",
|
"albums": "Albums",
|
||||||
"movies": "Movies",
|
"movies": "Filmak",
|
||||||
"tv": "TV Shows"
|
"tv": "TV Shows"
|
||||||
},
|
},
|
||||||
"sabnzbd": {
|
"sabnzbd": {
|
||||||
@@ -199,18 +199,18 @@
|
|||||||
},
|
},
|
||||||
"rutorrent": {
|
"rutorrent": {
|
||||||
"active": "Active",
|
"active": "Active",
|
||||||
"upload": "Upload",
|
"upload": "Kargatu",
|
||||||
"download": "Download"
|
"download": "Jeitsierak"
|
||||||
},
|
},
|
||||||
"transmission": {
|
"transmission": {
|
||||||
"download": "Download",
|
"download": "Jeitsierak",
|
||||||
"upload": "Upload",
|
"upload": "Kargatu",
|
||||||
"leech": "Leech",
|
"leech": "Leech",
|
||||||
"seed": "Seed"
|
"seed": "Seed"
|
||||||
},
|
},
|
||||||
"qbittorrent": {
|
"qbittorrent": {
|
||||||
"download": "Download",
|
"download": "Jeitsierak",
|
||||||
"upload": "Upload",
|
"upload": "Kargatu",
|
||||||
"leech": "Leech",
|
"leech": "Leech",
|
||||||
"seed": "Seed"
|
"seed": "Seed"
|
||||||
},
|
},
|
||||||
@@ -223,8 +223,8 @@
|
|||||||
"invalid": "Invalid"
|
"invalid": "Invalid"
|
||||||
},
|
},
|
||||||
"deluge": {
|
"deluge": {
|
||||||
"download": "Download",
|
"download": "Jeitsierak",
|
||||||
"upload": "Upload",
|
"upload": "Kargatu",
|
||||||
"leech": "Leech",
|
"leech": "Leech",
|
||||||
"seed": "Seed"
|
"seed": "Seed"
|
||||||
},
|
},
|
||||||
@@ -233,15 +233,15 @@
|
|||||||
"cachemissbytes": "Cache Miss Bytes"
|
"cachemissbytes": "Cache Miss Bytes"
|
||||||
},
|
},
|
||||||
"downloadstation": {
|
"downloadstation": {
|
||||||
"download": "Download",
|
"download": "Jeitsierak",
|
||||||
"upload": "Upload",
|
"upload": "Kargatu",
|
||||||
"leech": "Leech",
|
"leech": "Leech",
|
||||||
"seed": "Seed"
|
"seed": "Seed"
|
||||||
},
|
},
|
||||||
"sonarr": {
|
"sonarr": {
|
||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"series": "Series",
|
"series": "Serieak",
|
||||||
"queue": "Queue",
|
"queue": "Queue",
|
||||||
"unknown": "Ezezaguna"
|
"unknown": "Ezezaguna"
|
||||||
},
|
},
|
||||||
@@ -249,7 +249,7 @@
|
|||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"missing": "Missing",
|
"missing": "Missing",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"movies": "Movies",
|
"movies": "Filmak",
|
||||||
"queue": "Queue",
|
"queue": "Queue",
|
||||||
"unknown": "Ezezaguna"
|
"unknown": "Ezezaguna"
|
||||||
},
|
},
|
||||||
@@ -285,7 +285,7 @@
|
|||||||
},
|
},
|
||||||
"netalertx": {
|
"netalertx": {
|
||||||
"total": "Guztira",
|
"total": "Guztira",
|
||||||
"connected": "Connected",
|
"connected": "Konektatuta",
|
||||||
"new_devices": "New Devices",
|
"new_devices": "New Devices",
|
||||||
"down_alerts": "Down Alerts"
|
"down_alerts": "Down Alerts"
|
||||||
},
|
},
|
||||||
@@ -302,8 +302,8 @@
|
|||||||
"latency": "Latency"
|
"latency": "Latency"
|
||||||
},
|
},
|
||||||
"speedtest": {
|
"speedtest": {
|
||||||
"upload": "Upload",
|
"upload": "Kargatu",
|
||||||
"download": "Download",
|
"download": "Jeitsierak",
|
||||||
"ping": "Ping"
|
"ping": "Ping"
|
||||||
},
|
},
|
||||||
"portainer": {
|
"portainer": {
|
||||||
@@ -315,7 +315,7 @@
|
|||||||
"download": "Downloaded",
|
"download": "Downloaded",
|
||||||
"nondownload": "Non-Downloaded",
|
"nondownload": "Non-Downloaded",
|
||||||
"read": "Read",
|
"read": "Read",
|
||||||
"unread": "Unread",
|
"unread": "Irakurri gabe",
|
||||||
"downloadedread": "Downloaded & Read",
|
"downloadedread": "Downloaded & Read",
|
||||||
"downloadedunread": "Downloaded & Unread",
|
"downloadedunread": "Downloaded & Unread",
|
||||||
"nondownloadedread": "Non-Downloaded & Read",
|
"nondownloadedread": "Non-Downloaded & Read",
|
||||||
@@ -405,7 +405,7 @@
|
|||||||
"medusa": {
|
"medusa": {
|
||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"series": "Series"
|
"series": "Serieak"
|
||||||
},
|
},
|
||||||
"minecraft": {
|
"minecraft": {
|
||||||
"players": "Jokalariak",
|
"players": "Jokalariak",
|
||||||
@@ -416,7 +416,7 @@
|
|||||||
},
|
},
|
||||||
"miniflux": {
|
"miniflux": {
|
||||||
"read": "Read",
|
"read": "Read",
|
||||||
"unread": "Unread"
|
"unread": "Irakurri gabe"
|
||||||
},
|
},
|
||||||
"authentik": {
|
"authentik": {
|
||||||
"users": "Users",
|
"users": "Users",
|
||||||
@@ -523,15 +523,15 @@
|
|||||||
"up_to_date": "Up to Date",
|
"up_to_date": "Up to Date",
|
||||||
"child_bridges": "Child Bridges",
|
"child_bridges": "Child Bridges",
|
||||||
"child_bridges_status": "{{ok}}/{{total}}",
|
"child_bridges_status": "{{ok}}/{{total}}",
|
||||||
"up": "Up",
|
"up": "Gora",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"down": "Down"
|
"down": "Behera"
|
||||||
},
|
},
|
||||||
"healthchecks": {
|
"healthchecks": {
|
||||||
"new": "New",
|
"new": "New",
|
||||||
"up": "Up",
|
"up": "Gora",
|
||||||
"grace": "In Grace Period",
|
"grace": "In Grace Period",
|
||||||
"down": "Down",
|
"down": "Behera",
|
||||||
"paused": "Paused",
|
"paused": "Paused",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
"last_ping": "Last Ping",
|
"last_ping": "Last Ping",
|
||||||
@@ -646,8 +646,8 @@
|
|||||||
"load": "Load Avg",
|
"load": "Load Avg",
|
||||||
"memory": "Mem Usage",
|
"memory": "Mem Usage",
|
||||||
"wanStatus": "WAN Status",
|
"wanStatus": "WAN Status",
|
||||||
"up": "Up",
|
"up": "Gora",
|
||||||
"down": "Down",
|
"down": "Behera",
|
||||||
"temp": "Temp",
|
"temp": "Temp",
|
||||||
"disk": "Disk Usage",
|
"disk": "Disk Usage",
|
||||||
"wanIP": "WAN IP"
|
"wanIP": "WAN IP"
|
||||||
@@ -660,7 +660,7 @@
|
|||||||
},
|
},
|
||||||
"immich": {
|
"immich": {
|
||||||
"users": "Users",
|
"users": "Users",
|
||||||
"photos": "Photos",
|
"photos": "Argazkiak",
|
||||||
"videos": "Videos",
|
"videos": "Videos",
|
||||||
"storage": "Storage"
|
"storage": "Storage"
|
||||||
},
|
},
|
||||||
@@ -672,14 +672,14 @@
|
|||||||
"m": "m"
|
"m": "m"
|
||||||
},
|
},
|
||||||
"atsumeru": {
|
"atsumeru": {
|
||||||
"series": "Series",
|
"series": "Serieak",
|
||||||
"archives": "Archives",
|
"archives": "Archives",
|
||||||
"chapters": "Chapters",
|
"chapters": "Chapters",
|
||||||
"categories": "Categories"
|
"categories": "Categories"
|
||||||
},
|
},
|
||||||
"komga": {
|
"komga": {
|
||||||
"libraries": "Libraries",
|
"libraries": "Libraries",
|
||||||
"series": "Series",
|
"series": "Serieak",
|
||||||
"books": "Books"
|
"books": "Books"
|
||||||
},
|
},
|
||||||
"diskstation": {
|
"diskstation": {
|
||||||
@@ -688,13 +688,13 @@
|
|||||||
"volumeAvailable": "Available"
|
"volumeAvailable": "Available"
|
||||||
},
|
},
|
||||||
"mylar": {
|
"mylar": {
|
||||||
"series": "Series",
|
"series": "Serieak",
|
||||||
"issues": "Issues",
|
"issues": "Arazoak",
|
||||||
"wanted": "Wanted"
|
"wanted": "Wanted"
|
||||||
},
|
},
|
||||||
"photoprism": {
|
"photoprism": {
|
||||||
"albums": "Albums",
|
"albums": "Albums",
|
||||||
"photos": "Photos",
|
"photos": "Argazkiak",
|
||||||
"videos": "Videos",
|
"videos": "Videos",
|
||||||
"people": "People"
|
"people": "People"
|
||||||
},
|
},
|
||||||
@@ -772,7 +772,7 @@
|
|||||||
"books": "Books",
|
"books": "Books",
|
||||||
"authors": "Authors",
|
"authors": "Authors",
|
||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"series": "Series"
|
"series": "Serieak"
|
||||||
},
|
},
|
||||||
"jdownloader": {
|
"jdownloader": {
|
||||||
"downloadCount": "Queue",
|
"downloadCount": "Queue",
|
||||||
@@ -781,7 +781,7 @@
|
|||||||
"downloadSpeed": "Speed"
|
"downloadSpeed": "Speed"
|
||||||
},
|
},
|
||||||
"kavita": {
|
"kavita": {
|
||||||
"seriesCount": "Series",
|
"seriesCount": "Serieak",
|
||||||
"totalFiles": "Files"
|
"totalFiles": "Files"
|
||||||
},
|
},
|
||||||
"azuredevops": {
|
"azuredevops": {
|
||||||
@@ -801,8 +801,8 @@
|
|||||||
"status": "Status",
|
"status": "Status",
|
||||||
"online": "Online",
|
"online": "Online",
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"name": "Name",
|
"name": "Izena",
|
||||||
"map": "Map",
|
"map": "Mapa",
|
||||||
"currentPlayers": "Current players",
|
"currentPlayers": "Current players",
|
||||||
"players": "Jokalariak",
|
"players": "Jokalariak",
|
||||||
"maxPlayers": "Max players",
|
"maxPlayers": "Max players",
|
||||||
@@ -819,10 +819,10 @@
|
|||||||
"recipes": "Recipes",
|
"recipes": "Recipes",
|
||||||
"users": "Users",
|
"users": "Users",
|
||||||
"categories": "Categories",
|
"categories": "Categories",
|
||||||
"tags": "Tags"
|
"tags": "Etiketak"
|
||||||
},
|
},
|
||||||
"openmediavault": {
|
"openmediavault": {
|
||||||
"downloading": "Downloading",
|
"downloading": "Deskargatzen",
|
||||||
"total": "Guztira",
|
"total": "Guztira",
|
||||||
"running": "Running",
|
"running": "Running",
|
||||||
"stopped": "Stopped",
|
"stopped": "Stopped",
|
||||||
@@ -832,8 +832,8 @@
|
|||||||
"openwrt": {
|
"openwrt": {
|
||||||
"uptime": "Uptime",
|
"uptime": "Uptime",
|
||||||
"cpuLoad": "CPU Load Avg (5m)",
|
"cpuLoad": "CPU Load Avg (5m)",
|
||||||
"up": "Up",
|
"up": "Gora",
|
||||||
"down": "Down",
|
"down": "Behera",
|
||||||
"bytesTx": "Transmitted",
|
"bytesTx": "Transmitted",
|
||||||
"bytesRx": "Received"
|
"bytesRx": "Received"
|
||||||
},
|
},
|
||||||
@@ -846,9 +846,9 @@
|
|||||||
"sitesDown": "Sites Down",
|
"sitesDown": "Sites Down",
|
||||||
"paused": "Paused",
|
"paused": "Paused",
|
||||||
"notyetchecked": "Not Yet Checked",
|
"notyetchecked": "Not Yet Checked",
|
||||||
"up": "Up",
|
"up": "Gora",
|
||||||
"seemsdown": "Seems Down",
|
"seemsdown": "Seems Down",
|
||||||
"down": "Down",
|
"down": "Behera",
|
||||||
"unknown": "Ezezaguna"
|
"unknown": "Ezezaguna"
|
||||||
},
|
},
|
||||||
"calendar": {
|
"calendar": {
|
||||||
@@ -856,7 +856,7 @@
|
|||||||
"physicalRelease": "Physical release",
|
"physicalRelease": "Physical release",
|
||||||
"digitalRelease": "Digital release",
|
"digitalRelease": "Digital release",
|
||||||
"noEventsToday": "No events for today!",
|
"noEventsToday": "No events for today!",
|
||||||
"noEventsFound": "No events found"
|
"noEventsFound": "Ez da gertaerarik aurkitu."
|
||||||
},
|
},
|
||||||
"romm": {
|
"romm": {
|
||||||
"platforms": "Platforms",
|
"platforms": "Platforms",
|
||||||
@@ -868,7 +868,7 @@
|
|||||||
},
|
},
|
||||||
"mailcow": {
|
"mailcow": {
|
||||||
"domains": "Domains",
|
"domains": "Domains",
|
||||||
"mailboxes": "Mailboxes",
|
"mailboxes": "Gutunontziak",
|
||||||
"mails": "Mails",
|
"mails": "Mails",
|
||||||
"storage": "Storage"
|
"storage": "Storage"
|
||||||
},
|
},
|
||||||
@@ -877,14 +877,14 @@
|
|||||||
"criticals": "Criticals"
|
"criticals": "Criticals"
|
||||||
},
|
},
|
||||||
"plantit": {
|
"plantit": {
|
||||||
"events": "Events",
|
"events": "Ekitaldiak",
|
||||||
"plants": "Plants",
|
"plants": "Landareak",
|
||||||
"photos": "Photos",
|
"photos": "Argazkiak",
|
||||||
"species": "Species"
|
"species": "Species"
|
||||||
},
|
},
|
||||||
"gitea": {
|
"gitea": {
|
||||||
"notifications": "Notifications",
|
"notifications": "Jakinarazpenak",
|
||||||
"issues": "Issues",
|
"issues": "Arazoak",
|
||||||
"pulls": "Pull Requests"
|
"pulls": "Pull Requests"
|
||||||
},
|
},
|
||||||
"stash": {
|
"stash": {
|
||||||
@@ -894,34 +894,34 @@
|
|||||||
"playDuration": "Time Watched",
|
"playDuration": "Time Watched",
|
||||||
"sceneSize": "Scenes Size",
|
"sceneSize": "Scenes Size",
|
||||||
"sceneDuration": "Scenes Duration",
|
"sceneDuration": "Scenes Duration",
|
||||||
"images": "Images",
|
"images": "Irudia",
|
||||||
"imageSize": "Images Size",
|
"imageSize": "Irudiaren tamaina",
|
||||||
"galleries": "Galleries",
|
"galleries": "Galleries",
|
||||||
"performers": "Performers",
|
"performers": "Performers",
|
||||||
"studios": "Studios",
|
"studios": "Studios",
|
||||||
"movies": "Movies",
|
"movies": "Filmak",
|
||||||
"tags": "Tags",
|
"tags": "Etiketak",
|
||||||
"oCount": "O Count"
|
"oCount": "O Count"
|
||||||
},
|
},
|
||||||
"tandoor": {
|
"tandoor": {
|
||||||
"users": "Users",
|
"users": "Users",
|
||||||
"recipes": "Recipes",
|
"recipes": "Recipes",
|
||||||
"keywords": "Keywords"
|
"keywords": "Hitz gakoak"
|
||||||
},
|
},
|
||||||
"homebox": {
|
"homebox": {
|
||||||
"items": "Items",
|
"items": "Elementuak",
|
||||||
"totalWithWarranty": "With Warranty",
|
"totalWithWarranty": "With Warranty",
|
||||||
"locations": "Locations",
|
"locations": "Locations",
|
||||||
"labels": "Labels",
|
"labels": "Etiketak",
|
||||||
"users": "Users",
|
"users": "Users",
|
||||||
"totalValue": "Total Value"
|
"totalValue": "Guztira"
|
||||||
},
|
},
|
||||||
"crowdsec": {
|
"crowdsec": {
|
||||||
"alerts": "Alerts",
|
"alerts": "Alerts",
|
||||||
"bans": "Bans"
|
"bans": "Bans"
|
||||||
},
|
},
|
||||||
"wgeasy": {
|
"wgeasy": {
|
||||||
"connected": "Connected",
|
"connected": "Konektatuta",
|
||||||
"enabled": "Enabled",
|
"enabled": "Enabled",
|
||||||
"disabled": "Disabled",
|
"disabled": "Disabled",
|
||||||
"total": "Guztira"
|
"total": "Guztira"
|
||||||
@@ -934,8 +934,8 @@
|
|||||||
},
|
},
|
||||||
"myspeed": {
|
"myspeed": {
|
||||||
"ping": "Ping",
|
"ping": "Ping",
|
||||||
"download": "Download",
|
"download": "Jeitsierak",
|
||||||
"upload": "Upload"
|
"upload": "Kargatu"
|
||||||
},
|
},
|
||||||
"stocks": {
|
"stocks": {
|
||||||
"stocks": "Stocks",
|
"stocks": "Stocks",
|
||||||
@@ -951,23 +951,23 @@
|
|||||||
},
|
},
|
||||||
"linkwarden": {
|
"linkwarden": {
|
||||||
"links": "Links",
|
"links": "Links",
|
||||||
"collections": "Collections",
|
"collections": "Bildumak",
|
||||||
"tags": "Tags"
|
"tags": "Etiketak"
|
||||||
},
|
},
|
||||||
"zabbix": {
|
"zabbix": {
|
||||||
"unclassified": "Not classified",
|
"unclassified": "Not classified",
|
||||||
"information": "Informazioa",
|
"information": "Informazioa",
|
||||||
"warning": "Warning",
|
"warning": "Abisua",
|
||||||
"average": "Average",
|
"average": "Batez besteko",
|
||||||
"high": "High",
|
"high": "Altua",
|
||||||
"disaster": "Disaster"
|
"disaster": "Disaster"
|
||||||
},
|
},
|
||||||
"lubelogger": {
|
"lubelogger": {
|
||||||
"vehicle": "Vehicle",
|
"vehicle": "Vehicle",
|
||||||
"vehicles": "Vehicles",
|
"vehicles": "Ibilgailuak",
|
||||||
"serviceRecords": "Service Records",
|
"serviceRecords": "Service Records",
|
||||||
"reminders": "Reminders",
|
"reminders": "Oroigarriak",
|
||||||
"nextReminder": "Next Reminder",
|
"nextReminder": "Hurrengo abisua",
|
||||||
"none": "None"
|
"none": "None"
|
||||||
},
|
},
|
||||||
"vikunja": {
|
"vikunja": {
|
||||||
@@ -977,7 +977,7 @@
|
|||||||
"tasksInProgress": "Tasks In Progress"
|
"tasksInProgress": "Tasks In Progress"
|
||||||
},
|
},
|
||||||
"headscale": {
|
"headscale": {
|
||||||
"name": "Name",
|
"name": "Izena",
|
||||||
"address": "Address",
|
"address": "Address",
|
||||||
"last_seen": "Last Seen",
|
"last_seen": "Last Seen",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
@@ -985,10 +985,10 @@
|
|||||||
"offline": "Offline"
|
"offline": "Offline"
|
||||||
},
|
},
|
||||||
"beszel": {
|
"beszel": {
|
||||||
"name": "Name",
|
"name": "Izena",
|
||||||
"systems": "Systems",
|
"systems": "Systems",
|
||||||
"up": "Up",
|
"up": "Gora",
|
||||||
"down": "Down",
|
"down": "Behera",
|
||||||
"paused": "Paused",
|
"paused": "Paused",
|
||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
@@ -999,23 +999,23 @@
|
|||||||
"network": "NET"
|
"network": "NET"
|
||||||
},
|
},
|
||||||
"argocd": {
|
"argocd": {
|
||||||
"apps": "Apps",
|
"apps": "Aplikazioak",
|
||||||
"synced": "Synced",
|
"synced": "Sinkronizatuta",
|
||||||
"outOfSync": "Out Of Sync",
|
"outOfSync": "Out Of Sync",
|
||||||
"healthy": "Osasuntsu",
|
"healthy": "Osasuntsu",
|
||||||
"degraded": "Degraded",
|
"degraded": "Degraded",
|
||||||
"progressing": "Progressing",
|
"progressing": "Progressing",
|
||||||
"missing": "Missing",
|
"missing": "Missing",
|
||||||
"suspended": "Suspended"
|
"suspended": "Etenda"
|
||||||
},
|
},
|
||||||
"spoolman": {
|
"spoolman": {
|
||||||
"loading": "Loading"
|
"loading": "Loading"
|
||||||
},
|
},
|
||||||
"gitlab": {
|
"gitlab": {
|
||||||
"groups": "Groups",
|
"groups": "Taldeak",
|
||||||
"issues": "Issues",
|
"issues": "Arazoak",
|
||||||
"merges": "Merge Requests",
|
"merges": "Merge Requests",
|
||||||
"projects": "Projects"
|
"projects": "Proiektuak"
|
||||||
},
|
},
|
||||||
"apcups": {
|
"apcups": {
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
@@ -1024,11 +1024,11 @@
|
|||||||
"timeleft": "Time Left"
|
"timeleft": "Time Left"
|
||||||
},
|
},
|
||||||
"hoarder": {
|
"hoarder": {
|
||||||
"bookmarks": "Bookmarks",
|
"bookmarks": "Laster-markak",
|
||||||
"favorites": "Favorites",
|
"favorites": "Gogokoak",
|
||||||
"archived": "Archived",
|
"archived": "Artxibatuta",
|
||||||
"highlights": "Highlights",
|
"highlights": "Highlights",
|
||||||
"lists": "Lists",
|
"lists": "Zerrendak",
|
||||||
"tags": "Tags"
|
"tags": "Etiketak"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export default function Item({ bookmark, iconOnly = false }) {
|
|||||||
className={classNames(
|
className={classNames(
|
||||||
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? "-" : ""}${settings.cardBlur}`,
|
settings.cardBlur !== undefined && `backdrop-blur${settings.cardBlur.length ? "-" : ""}${settings.cardBlur}`,
|
||||||
"text-left cursor-pointer transition-all rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10",
|
"text-left cursor-pointer transition-all rounded-md font-medium text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 hover:bg-theme-300/20 dark:bg-white/5 dark:hover:bg-white/10",
|
||||||
iconOnly ? "h-[60px] w-[60px] grid" : "block w-full h-8 mb-3",
|
iconOnly ? "h-[60px] w-[60px] grid" : "block w-full mb-3",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{iconOnly ? (
|
{iconOnly ? (
|
||||||
|
|||||||
@@ -4,11 +4,12 @@ export function middleware(req) {
|
|||||||
// Check the Host header, if HOMEPAGE_ALLOWED_HOSTS is set
|
// Check the Host header, if HOMEPAGE_ALLOWED_HOSTS is set
|
||||||
const host = req.headers.get("host");
|
const host = req.headers.get("host");
|
||||||
const port = process.env.PORT || 3000;
|
const port = process.env.PORT || 3000;
|
||||||
let allowedHosts = [`localhost:${port}`];
|
let allowedHosts = [`localhost:${port}`, `127.0.0.1:${port}`];
|
||||||
|
const allowAll = process.env.HOMEPAGE_ALLOWED_HOSTS === "*";
|
||||||
if (process.env.HOMEPAGE_ALLOWED_HOSTS) {
|
if (process.env.HOMEPAGE_ALLOWED_HOSTS) {
|
||||||
allowedHosts = allowedHosts.concat(process.env.HOMEPAGE_ALLOWED_HOSTS.split(","));
|
allowedHosts = allowedHosts.concat(process.env.HOMEPAGE_ALLOWED_HOSTS.split(","));
|
||||||
}
|
}
|
||||||
if (!host || !allowedHosts.includes(host)) {
|
if (!allowAll && (!host || !allowedHosts.includes(host))) {
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.error(
|
console.error(
|
||||||
`Host validation failed for: ${host}. Hint: Set the HOMEPAGE_ALLOWED_HOSTS environment variable to allow requests from this host / port.`,
|
`Host validation failed for: ${host}. Hint: Set the HOMEPAGE_ALLOWED_HOSTS environment variable to allow requests from this host / port.`,
|
||||||
|
|||||||
@@ -12,6 +12,55 @@ import { TabProvider } from "utils/contexts/tab";
|
|||||||
|
|
||||||
import nextI18nextConfig from "../../next-i18next.config";
|
import nextI18nextConfig from "../../next-i18next.config";
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
const tailwindSafelist = [
|
||||||
|
// TODO: remove pending https://github.com/tailwindlabs/tailwindcss/pull/17147
|
||||||
|
"backdrop-blur",
|
||||||
|
"backdrop-blur-sm",
|
||||||
|
"backdrop-blur-md",
|
||||||
|
"backdrop-blur-xl",
|
||||||
|
"backdrop-saturate-0",
|
||||||
|
"backdrop-saturate-50",
|
||||||
|
"backdrop-saturate-100",
|
||||||
|
"backdrop-saturate-150",
|
||||||
|
"backdrop-saturate-200",
|
||||||
|
"backdrop-brightness-0",
|
||||||
|
"backdrop-brightness-50",
|
||||||
|
"backdrop-brightness-75",
|
||||||
|
"backdrop-brightness-90",
|
||||||
|
"backdrop-brightness-95",
|
||||||
|
"backdrop-brightness-100",
|
||||||
|
"backdrop-brightness-105",
|
||||||
|
"backdrop-brightness-110",
|
||||||
|
"backdrop-brightness-125",
|
||||||
|
"backdrop-brightness-150",
|
||||||
|
"backdrop-brightness-200",
|
||||||
|
"grid-cols-1",
|
||||||
|
"md:grid-cols-1",
|
||||||
|
"md:grid-cols-2",
|
||||||
|
"lg:grid-cols-1",
|
||||||
|
"lg:grid-cols-2",
|
||||||
|
"lg:grid-cols-3",
|
||||||
|
"lg:grid-cols-4",
|
||||||
|
"lg:grid-cols-5",
|
||||||
|
"lg:grid-cols-6",
|
||||||
|
"lg:grid-cols-7",
|
||||||
|
"lg:grid-cols-8",
|
||||||
|
// for status
|
||||||
|
"bg-white",
|
||||||
|
"bg-black",
|
||||||
|
"dark:bg-white",
|
||||||
|
"bg-orange-400",
|
||||||
|
"dark:bg-orange-400",
|
||||||
|
// yep
|
||||||
|
"h-0 h-1 h-2 h-3 h-4 h-5 h-6 h-7 h-8 h-9 h-10 h-11 h-12 h-13 h-14 h-15 h-16 h-17 h-18 h-19 h-20 h-21 h-22 h-23 h-24 h-25 h-26 h-27 h-28 h-29 h-30 h-31 h-32 h-33 h-34 h-35 h-36 h-37 h-38 h-39 h-40 h-41 h-42 h-43 h-44 h-45 h-46 h-47 h-48 h-49 h-50 h-51 h-52 h-53 h-54 h-55 h-56 h-57 h-58 h-59 h-60 h-61 h-62 h-63 h-64 h-65 h-66 h-67 h-68 h-69 h-70 h-71 h-72 h-73 h-74 h-75 h-76 h-77 h-78 h-79 h-80 h-81 h-82 h-83 h-84 h-85 h-86 h-87 h-88 h-89 h-90 h-91 h-92 h-93 h-94 h-95 h-96",
|
||||||
|
"sm:h-0 sm:h-1 sm:h-2 sm:h-3 sm:h-4 sm:h-5 sm:h-6 sm:h-7 sm:h-8 sm:h-9 sm:h-10 sm:h-11 sm:h-12 sm:h-13 sm:h-14 sm:h-15 sm:h-16 sm:h-17 sm:h-18 sm:h-19 sm:h-20 sm:h-21 sm:h-22 sm:h-23 sm:h-24 sm:h-25 sm:h-26 sm:h-27 sm:h-28 sm:h-29 sm:h-30 sm:h-31 sm:h-32 sm:h-33 sm:h-34 sm:h-35 sm:h-36 sm:h-37 sm:h-38 sm:h-39 sm:h-40 sm:h-41 sm:h-42 sm:h-43 sm:h-44 sm:h-45 sm:h-46 sm:h-47 sm:h-48 sm:h-49 sm:h-50 sm:h-51 sm:h-52 sm:h-53 sm:h-54 sm:h-55 sm:h-56 sm:h-57 sm:h-58 sm:h-59 sm:h-60 sm:h-61 sm:h-62 sm:h-63 sm:h-64 sm:h-65 sm:h-66 sm:h-67 sm:h-68 sm:h-69 sm:h-70 sm:h-71 sm:h-72 sm:h-73 sm:h-74 sm:h-75 sm:h-76 sm:h-77 sm:h-78 sm:h-79 sm:h-80 sm:h-81 sm:h-82 sm:h-83 sm:h-84 sm:h-85 sm:h-86 sm:h-87 sm:h-88 sm:h-89 sm:h-90 sm:h-91 sm:h-92 sm:h-93 sm:h-94 sm:h-95 sm:h-96",
|
||||||
|
"md:h-0 md:h-1 md:h-2 md:h-3 md:h-4 md:h-5 md:h-6 md:h-7 md:h-8 md:h-9 md:h-10 md:h-11 md:h-12 md:h-13 md:h-14 md:h-15 md:h-16 md:h-17 md:h-18 md:h-19 md:h-20 md:h-21 md:h-22 md:h-23 md:h-24 md:h-25 md:h-26 md:h-27 md:h-28 md:h-29 md:h-30 md:h-31 md:h-32 md:h-33 md:h-34 md:h-35 md:h-36 md:h-37 md:h-38 md:h-39 md:h-40 md:h-41 md:h-42 md:h-43 md:h-44 md:h-45 md:h-46 md:h-47 md:h-48 md:h-49 md:h-50 md:h-51 md:h-52 md:h-53 md:h-54 md:h-55 md:h-56 md:h-57 md:h-58 md:h-59 md:h-60 md:h-61 md:h-62 md:h-63 md:h-64 md:h-65 md:h-66 md:h-67 md:h-68 md:h-69 md:h-70 md:h-71 md:h-72 md:h-73 md:h-74 md:h-75 md:h-76 md:h-77 md:h-78 md:h-79 md:h-80 md:h-81 md:h-82 md:h-83 md:h-84 md:h-85 md:h-86 md:h-87 md:h-88 md:h-89 md:h-90 md:h-91 md:h-92 md:h-93 md:h-94 md:h-95 md:h-96",
|
||||||
|
"lg:h-0 lg:h-1 lg:h-2 lg:h-3 lg:h-4 lg:h-5 lg:h-6 lg:h-7 lg:h-8 lg:h-9 lg:h-10 lg:h-11 lg:h-12 lg:h-13 lg:h-14 lg:h-15 lg:h-16 lg:h-17 lg:h-18 lg:h-19 lg:h-20 lg:h-21 lg:h-22 lg:h-23 lg:h-24 lg:h-25 lg:h-26 lg:h-27 lg:h-28 lg:h-29 lg:h-30 lg:h-31 lg:h-32 lg:h-33 lg:h-34 lg:h-35 lg:h-36 lg:h-37 lg:h-38 lg:h-39 lg:h-40 lg:h-41 lg:h-42 lg:h-43 lg:h-44 lg:h-45 lg:h-46 lg:h-47 lg:h-48 lg:h-49 lg:h-50 lg:h-51 lg:h-52 lg:h-53 lg:h-54 lg:h-55 lg:h-56 lg:h-57 lg:h-58 lg:h-59 lg:h-60 lg:h-61 lg:h-62 lg:h-63 lg:h-64 lg:h-65 lg:h-66 lg:h-67 lg:h-68 lg:h-69 lg:h-70 lg:h-71 lg:h-72 lg:h-73 lg:h-74 lg:h-75 lg:h-76 lg:h-77 lg:h-78 lg:h-79 lg:h-80 lg:h-81 lg:h-82 lg:h-83 lg:h-84 lg:h-85 lg:h-86 lg:h-87 lg:h-88 lg:h-89 lg:h-90 lg:h-91 lg:h-92 lg:h-93 lg:h-94 lg:h-95 lg:h-96",
|
||||||
|
"xl:h-0 xl:h-1 xl:h-2 xl:h-3 xl:h-4 xl:h-5 xl:h-6 xl:h-7 xl:h-8 xl:h-9 xl:h-10 xl:h-11 xl:h-12 xl:h-13 xl:h-14 xl:h-15 xl:h-16 xl:h-17 xl:h-18 xl:h-19 xl:h-20 xl:h-21 xl:h-22 xl:h-23 xl:h-24 xl:h-25 xl:h-26 xl:h-27 xl:h-28 xl:h-29 xl:h-30 xl:h-31 xl:h-32 xl:h-33 xl:h-34 xl:h-35 xl:h-36 xl:h-37 xl:h-38 xl:h-39 xl:h-40 xl:h-41 xl:h-42 xl:h-43 xl:h-44 xl:h-45 xl:h-46 xl:h-47 xl:h-48 xl:h-49 xl:h-50 xl:h-51 xl:h-52 xl:h-53 xl:h-54 xl:h-55 xl:h-56 xl:h-57 xl:h-58 xl:h-59 xl:h-60 xl:h-61 xl:h-62 xl:h-63 xl:h-64 xl:h-65 xl:h-66 xl:h-67 xl:h-68 xl:h-69 xl:h-70 xl:h-71 xl:h-72 xl:h-73 xl:h-74 xl:h-75 xl:h-76 xl:h-77 xl:h-78 xl:h-79 xl:h-80 xl:h-81 xl:h-82 xl:h-83 xl:h-84 xl:h-85 xl:h-86 xl:h-87 xl:h-88 xl:h-89 xl:h-90 xl:h-91 xl:h-92 xl:h-93 xl:h-94 xl:h-95 xl:h-96",
|
||||||
|
"2xl:h-0 2xl:h-1 2xl:h-2 2xl:h-3 2xl:h-4 2xl:h-5 2xl:h-6 2xl:h-7 2xl:h-8 2xl:h-9 2xl:h-10 2xl:h-11 2xl:h-12 2xl:h-13 2xl:h-14 2xl:h-15 2xl:h-16 2xl:h-17 2xl:h-18 2xl:h-19 2xl:h-20 2xl:h-21 2xl:h-22 2xl:h-23 2xl:h-24 2xl:h-25 2xl:h-26 2xl:h-27 2xl:h-28 2xl:h-29 2xl:h-30 2xl:h-31 2xl:h-32 2xl:h-33 2xl:h-34 2xl:h-35 2xl:h-36 2xl:h-37 2xl:h-38 2xl:h-39 2xl:h-40 2xl:h-41 2xl:h-42 2xl:h-43 2xl:h-44 2xl:h-45 2xl:h-46 2xl:h-47 2xl:h-48 2xl:h-49 2xl:h-50 2xl:h-51 2xl:h-52 2xl:h-53 2xl:h-54 2xl:h-55 2xl:h-56 2xl:h-57 2xl:h-58 2xl:h-59 2xl:h-60 2xl:h-61 2xl:h-62 2xl:h-63 2xl:h-64 2xl:h-65 2xl:h-66 2xl:h-67 2xl:h-68 2xl:h-69 2xl:h-70 2xl:h-71 2xl:h-72 2xl:h-73 2xl:h-74 2xl:h-75 2xl:h-76 2xl:h-77 2xl:h-78 2xl:h-79 2xl:h-80 2xl:h-81 2xl:h-82 2xl:h-83 2xl:h-84 2xl:h-85 2xl:h-86 2xl:h-87 2xl:h-88 2xl:h-89 2xl:h-90 2xl:h-91 2xl:h-92 2xl:h-93 2xl:h-94 2xl:h-95 2xl:h-96",
|
||||||
|
];
|
||||||
|
|
||||||
function MyApp({ Component, pageProps }) {
|
function MyApp({ Component, pageProps }) {
|
||||||
return (
|
return (
|
||||||
<SWRConfig
|
<SWRConfig
|
||||||
|
|||||||
@@ -71,8 +71,8 @@ export default async function handler(req, res) {
|
|||||||
let depMem = 0;
|
let depMem = 0;
|
||||||
let depCpu = 0;
|
let depCpu = 0;
|
||||||
const podMetrics = await metricsApi
|
const podMetrics = await metricsApi
|
||||||
.getPodMetrics(namespace, pod.metadata.name)
|
.getPodMetrics(namespace, pod.items)
|
||||||
.then((response) => response)
|
.then((response) => response.items)
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
// 404 generally means that the metrics have not been populated yet
|
// 404 generally means that the metrics have not been populated yet
|
||||||
if (err.statusCode !== 404) {
|
if (err.statusCode !== 404) {
|
||||||
@@ -81,9 +81,11 @@ export default async function handler(req, res) {
|
|||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
if (podMetrics) {
|
if (podMetrics) {
|
||||||
podMetrics.containers.forEach((container) => {
|
podMetrics.forEach((metrics) => {
|
||||||
depMem += parseMemory(container.usage.memory);
|
metrics.containers.forEach((container) => {
|
||||||
depCpu += parseCpu(container.usage.cpu);
|
depMem += parseMemory(container.usage.memory);
|
||||||
|
depCpu += parseCpu(container.usage.cpu);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { searchProviders } from "components/widgets/search/search";
|
import { searchProviders } from "components/widgets/search/search";
|
||||||
|
|
||||||
|
import { getSettings } from "utils/config/config";
|
||||||
import cachedFetch from "utils/proxy/cached-fetch";
|
import cachedFetch from "utils/proxy/cached-fetch";
|
||||||
import { widgetsFromConfig } from "utils/config/widget-helpers";
|
import { widgetsFromConfig } from "utils/config/widget-helpers";
|
||||||
|
|
||||||
@@ -12,8 +13,16 @@ export default async function handler(req, res) {
|
|||||||
const widgets = await widgetsFromConfig();
|
const widgets = await widgetsFromConfig();
|
||||||
const searchWidget = widgets.find((w) => w.type === "search");
|
const searchWidget = widgets.find((w) => w.type === "search");
|
||||||
|
|
||||||
provider.url = searchWidget.options.url;
|
if (searchWidget) {
|
||||||
provider.suggestionUrl = searchWidget.options.suggestionUrl;
|
provider.url = searchWidget.options.url;
|
||||||
|
provider.suggestionUrl = searchWidget.options.suggestionUrl;
|
||||||
|
} else {
|
||||||
|
const settings = getSettings();
|
||||||
|
if (settings.quicklaunch && settings.quicklaunch.provider === "custom") {
|
||||||
|
provider.url = settings.quicklaunch.url;
|
||||||
|
provider.suggestionUrl = settings.quicklaunch.suggestionUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!provider.suggestionUrl) {
|
if (!provider.suggestionUrl) {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ const kc = getKubeConfig();
|
|||||||
|
|
||||||
export default async function listIngress() {
|
export default async function listIngress() {
|
||||||
const networking = kc.makeApiClient(NetworkingV1Api);
|
const networking = kc.makeApiClient(NetworkingV1Api);
|
||||||
const { ingress } = getKubernetes();
|
const { ingress = true } = getKubernetes();
|
||||||
let ingressList = [];
|
let ingressList = [];
|
||||||
|
|
||||||
if (ingress) {
|
if (ingress) {
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ function generateStreamTitle(session, enableUser, showEpisodeNumber) {
|
|||||||
let streamTitle = "";
|
let streamTitle = "";
|
||||||
|
|
||||||
if (Type === "Episode" && showEpisodeNumber) {
|
if (Type === "Episode" && showEpisodeNumber) {
|
||||||
const seasonStr = `S${ParentIndexNumber.toString().padStart(2, "0")}`;
|
const seasonStr = ParentIndexNumber ? `S${ParentIndexNumber.toString().padStart(2, "0")}` : "";
|
||||||
const episodeStr = `E${IndexNumber.toString().padStart(2, "0")}`;
|
const episodeStr = IndexNumber ? `E${IndexNumber.toString().padStart(2, "0")}` : "";
|
||||||
streamTitle = `${SeriesName}: ${seasonStr} · ${episodeStr} - ${Name}`;
|
streamTitle = `${SeriesName}: ${seasonStr} · ${episodeStr} - ${Name}`;
|
||||||
} else {
|
} else {
|
||||||
streamTitle = `${Name}${SeriesName ? ` - ${SeriesName}` : ""}`;
|
streamTitle = `${Name}${SeriesName ? ` - ${SeriesName}` : ""}`;
|
||||||
|
|||||||
@@ -14,7 +14,11 @@ async function login(widget, service) {
|
|||||||
const endpoint = "Account/login";
|
const endpoint = "Account/login";
|
||||||
const api = widgets?.[widget.type]?.api;
|
const api = widgets?.[widget.type]?.api;
|
||||||
const loginUrl = new URL(formatApiCall(api, { endpoint, ...widget }));
|
const loginUrl = new URL(formatApiCall(api, { endpoint, ...widget }));
|
||||||
const loginBody = {};
|
const loginBody = {
|
||||||
|
username: "",
|
||||||
|
password: "",
|
||||||
|
apiKey: "",
|
||||||
|
};
|
||||||
if (widget.username && widget.password) {
|
if (widget.username && widget.password) {
|
||||||
loginBody.username = widget.username;
|
loginBody.username = widget.username;
|
||||||
loginBody.password = widget.password;
|
loginBody.password = widget.password;
|
||||||
|
|||||||
@@ -36,14 +36,14 @@ export default function Component({ service }) {
|
|||||||
<Block
|
<Block
|
||||||
label="speedtest.download"
|
label="speedtest.download"
|
||||||
value={t("common.bitrate", {
|
value={t("common.bitrate", {
|
||||||
value: speedtestData.data.download * 1000 * 1000,
|
value: widget.version === 2 ? speedtestData.data.download * 8 : speedtestData.data.download * 1000 * 1000,
|
||||||
decimals: bitratePrecision,
|
decimals: bitratePrecision,
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
<Block
|
<Block
|
||||||
label="speedtest.upload"
|
label="speedtest.upload"
|
||||||
value={t("common.bitrate", {
|
value={t("common.bitrate", {
|
||||||
value: speedtestData.data.upload * 1000 * 1000,
|
value: widget.version === 2 ? speedtestData.data.upload * 8 : speedtestData.data.upload * 1000 * 1000,
|
||||||
decimals: bitratePrecision,
|
decimals: bitratePrecision,
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -33,48 +33,4 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
plugins: [tailwindForms, tailwindScrollbars],
|
plugins: [tailwindForms, tailwindScrollbars],
|
||||||
// always include these in build as classes are dynamically constructed
|
|
||||||
safelist: [
|
|
||||||
"backdrop-blur",
|
|
||||||
"backdrop-blur-sm",
|
|
||||||
"backdrop-blur-md",
|
|
||||||
"backdrop-blur-xl",
|
|
||||||
"backdrop-saturate-0",
|
|
||||||
"backdrop-saturate-50",
|
|
||||||
"backdrop-saturate-100",
|
|
||||||
"backdrop-saturate-150",
|
|
||||||
"backdrop-saturate-200",
|
|
||||||
"backdrop-brightness-0",
|
|
||||||
"backdrop-brightness-50",
|
|
||||||
"backdrop-brightness-75",
|
|
||||||
"backdrop-brightness-90",
|
|
||||||
"backdrop-brightness-95",
|
|
||||||
"backdrop-brightness-100",
|
|
||||||
"backdrop-brightness-105",
|
|
||||||
"backdrop-brightness-110",
|
|
||||||
"backdrop-brightness-125",
|
|
||||||
"backdrop-brightness-150",
|
|
||||||
"backdrop-brightness-200",
|
|
||||||
"grid-cols-1",
|
|
||||||
"md:grid-cols-1",
|
|
||||||
"md:grid-cols-2",
|
|
||||||
"lg:grid-cols-1",
|
|
||||||
"lg:grid-cols-2",
|
|
||||||
"lg:grid-cols-3",
|
|
||||||
"lg:grid-cols-4",
|
|
||||||
"lg:grid-cols-5",
|
|
||||||
"lg:grid-cols-6",
|
|
||||||
"lg:grid-cols-7",
|
|
||||||
"lg:grid-cols-8",
|
|
||||||
// for status
|
|
||||||
"bg-white",
|
|
||||||
"bg-black",
|
|
||||||
"dark:bg-white",
|
|
||||||
"bg-orange-400",
|
|
||||||
"dark:bg-orange-400",
|
|
||||||
{
|
|
||||||
pattern: /h-([0-96])/,
|
|
||||||
variants: ["sm", "md", "lg", "xl", "2xl"],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user